<SEC-DOCUMENT>0001437749-21-003413.txt : 20210219
<SEC-HEADER>0001437749-21-003413.hdr.sgml : 20210219
<ACCEPTANCE-DATETIME>20210219153807
ACCESSION NUMBER:		0001437749-21-003413
CONFORMED SUBMISSION TYPE:	10-K
PUBLIC DOCUMENT COUNT:		99
CONFORMED PERIOD OF REPORT:	20201231
FILED AS OF DATE:		20210219
DATE AS OF CHANGE:		20210219

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-K
		SEC ACT:		1934 Act
		SEC FILE NUMBER:	001-35435
		FILM NUMBER:		21655208

	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-K
<SEQUENCE>1
<FILENAME>prlb20201119_10k.htm
<DESCRIPTION>FORM 10-K
<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/2011-01-31" 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:nonnum="http://www.xbrl.org/dtr/type/non-numeric" 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/2018-01-31" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:num="http://www.xbrl.org/dtr/type/numeric" 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/2019-01-31" xmlns:prlb="http://www.protolabs.com/20201231" xmlns:currency="http://xbrl.sec.gov/currency/2020-01-31" xmlns:srt="http://fasb.org/srt/2020-01-31" xmlns:rr="http://xbrl.sec.gov/rr/2018-01-31" xmlns:us-gaap="http://fasb.org/us-gaap/2020-01-31" xmlns:sic="http://xbrl.sec.gov/sic/2020-01-31" xmlns:exch="http://xbrl.sec.gov/exch/2020-01-31" xmlns:country="http://xbrl.sec.gov/country/2020-01-31">
 <head>
  <title>prlb20191231_10k.htm</title>
  <!-- Generated by ThunderDome Portal - 2/19/2021 3:00:47 AM -->
  <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_2020-01-01_2020-12-31" name="dei:EntityCentralIndexKey" id="thunderdome-EntityCentralIndexKey">0001443669</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="dei:EntityRegistrantName" id="thunderdome-EntityRegistrantName">Proto Labs Inc</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="dei:AmendmentFlag" format="ixt:booleanfalse">false</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="dei:CurrentFiscalYearEndDate">--12-31</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="dei:DocumentFiscalPeriodFocus">FY</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="dei:DocumentFiscalYearFocus">2020</ix:nonNumeric>
<ix:nonFraction id="c68815719" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">1,781</ix:nonFraction>
<ix:nonFraction id="c68815720" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">952</ix:nonFraction>
<ix:nonFraction id="c68815721" 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="c68815722" contextRef="i_2019-12-31" unitRef="USDPerShare" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0" format="ixt:numdotdecimal" decimals="INF">0.001</ix:nonFraction>
<ix:nonFraction id="c68815723" 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="c68815724" contextRef="i_2019-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesAuthorized" scale="0" format="ixt:numdotdecimal" decimals="INF">10,000,000</ix:nonFraction>
<ix:nonFraction id="c68815725" contextRef="i_2020-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c68815727" contextRef="i_2020-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c68815726" contextRef="i_2019-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c68815728" contextRef="i_2019-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c68815729" 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="c68815730" contextRef="i_2019-12-31" unitRef="USDPerShare" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" format="ixt:numdotdecimal" decimals="INF">0.001</ix:nonFraction>
<ix:nonFraction id="c68815731" 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="c68815732" contextRef="i_2019-12-31" unitRef="Share" name="us-gaap:CommonStockSharesAuthorized" scale="0" format="ixt:numdotdecimal" decimals="INF">150,000,000</ix:nonFraction>
<ix:nonFraction id="c68815733" 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="c68815735" 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="c68815734" contextRef="i_2019-12-31" unitRef="Share" name="us-gaap:CommonStockSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="INF">26,786,459</ix:nonFraction>
<ix:nonFraction id="c68815736" contextRef="i_2019-12-31" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,786,459</ix:nonFraction>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_RangeAxis-MinimumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c68815405" format="ixt-sec:duryear">2</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember" name="prlb:MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" id="c68815524" format="ixt-sec:durmonth">3</ix:nonNumeric>
<ix:nonFraction id="c68815742" contextRef="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="USD" name="us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount" scale="6" format="ixt:numdotdecimal" decimals="-5">0.3</ix:nonFraction>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_PlanNameAxis-LongtermIncentivePlan2012Member" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" id="c68815550" format="ixt-sec:duryear">10</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-ESPPMember" name="prlb:EmployeeStockPurchasePlanOfferingPeriod" id="c68815556" format="ixt-sec:durmonth">6</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" id="c68815577" format="ixt-sec:duryear">10</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c68815578" format="ixt-sec:duryear">4</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c68815579" format="ixt-sec:duryear">5</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember_RangeAxis-MinimumMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c68815600" format="ixt-sec:duryear">4</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember_RangeAxis-MaximumMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c68815601" format="ixt-sec:duryear">5</ix:nonNumeric>
<ix:nonFraction id="c68815609" contextRef="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" scale="-2" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c68815611" format="ixt-sec:duryear">3</ix:nonNumeric>
<ix:nonNumeric contextRef="i_2020-12-31_LeaseContractualTermAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MinimumMember" name="us-gaap:LesseeOperatingLeaseTermOfContract" id="c68815624" format="ixt-sec:duryear">1</ix:nonNumeric>
<ix:nonNumeric contextRef="i_2020-12-31_LeaseContractualTermAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MaximumMember" name="us-gaap:LesseeOperatingLeaseTermOfContract" id="c68815625" format="ixt-sec:duryear">8</ix:nonNumeric>
<ix:nonNumeric contextRef="i_2020-12-31" name="us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1" id="c68815085" format="ixt-sec:duryear">2.5</ix:nonNumeric>
<ix:nonFraction id="c68815089" contextRef="i_2020-12-31" unitRef="Pure" name="us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent" scale="-2" format="ixt:numdotdecimal" decimals="3">0.5</ix:nonFraction>
<ix:nonFraction id="c68815090" contextRef="i_2019-12-31" unitRef="Pure" name="us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent" scale="-2" format="ixt:zerodash" decimals="0">-</ix:nonFraction>
<ix:nonFraction id="c68815754" contextRef="i_2020-12-31" unitRef="USD" name="prlb:DeferredTaxLiabilityCaresAct" scale="6" format="ixt:numdotdecimal" decimals="-5">2.9</ix:nonFraction>
<ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="prlb:OperatingLossCarryforwardsExpirationPeriod" id="c68815665" format="ixt-sec:duryear">10</ix:nonNumeric></ix:hidden>
<ix:references>
<link:schemaRef xlink:href="prlb-20201231.xsd" xlink:type="simple"></link:schemaRef></ix:references>
<ix:resources>
<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:unit id="USD"><xbrli:measure>iso4217:USD</xbrli:measure></xbrli:unit>
<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:unit id="Share"><xbrli:measure>xbrli:shares</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2021-02-10"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2021-02-10</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="NonApplicable"><xbrli:measure>thunderdome:item</xbrli:measure></xbrli:unit>
<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: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: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_2019-01-01_2019-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-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>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-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>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-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>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-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>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-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:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-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:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-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:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-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:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-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>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-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>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-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>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-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>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_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:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_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:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_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:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_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:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></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="d_2020-01-01_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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</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:unit id="Year"><xbrli:measure>utr:Y</xbrli:measure></xbrli:unit>
<xbrli:context id="d_2020-01-01_2020-12-31_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">prlb:OfficeFurnitureAndEquipmentMember</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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">prlb:OfficeFurnitureAndEquipmentMember</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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember></xbrli:segment></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="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandBuildingsAndImprovementsMember</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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandBuildingsAndImprovementsMember</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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201602Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-01-01</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></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="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_StatementGeographicalAxis-EuropeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></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="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_StatementGeographicalAxis-JP"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember></xbrli:segment></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="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_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>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_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>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_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>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_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>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_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>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_StatementGeographicalAxis-EuropeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementGeographicalAxis-EuropeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_StatementGeographicalAxis-EuropeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_StatementGeographicalAxis-JP"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementGeographicalAxis-JP"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_StatementGeographicalAxis-JP"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</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_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:context id="i_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></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="i_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></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="i_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></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="i_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></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_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-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>2019-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_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-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-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="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_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="Pure"><xbrli:measure>xbrli:pure</xbrli:measure></xbrli:unit>
<xbrli:context id="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">country:US</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="Month"><xbrli:measure>utr:M</xbrli:measure></xbrli:unit>
<xbrli:context id="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">country:US</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">country:US</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">us-gaap:ForeignPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember></xbrli:segment></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="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">us-gaap:ForeignPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">us-gaap:ForeignPlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_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>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_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:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:StockOptionsRestrictedStockAndOtherMember</xbrldi:explicitMember></xbrli:segment></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="d_2019-01-01_2019-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:StockOptionsRestrictedStockAndOtherMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:StockOptionsRestrictedStockAndOtherMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-CostOfSalesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember></xbrli:segment></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="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-CostOfSalesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-CostOfSalesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember></xbrli:segment></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="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember></xbrli:segment></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="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember></xbrli:segment></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="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_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>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_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>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_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>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeOneMember</xbrldi:explicitMember></xbrli:segment></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_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeOneMember</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-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeTwoMember</xbrldi:explicitMember></xbrli:segment></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_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeTwoMember</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-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeThreeMember</xbrldi:explicitMember></xbrli:segment></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_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeThreeMember</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-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeFourMember</xbrldi:explicitMember></xbrli:segment></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_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeFourMember</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_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>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-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>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-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:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-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>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-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:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</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="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-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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-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>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-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:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-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>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-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:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember_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:PerformanceSharesMember</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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember_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:PerformanceSharesMember</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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember_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:PerformanceSharesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember_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:PerformanceSharesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember_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:PerformanceSharesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember_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:PerformanceSharesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_LeaseContractualTermAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:LeaseContractualTermAxis">prlb:OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</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_LeaseContractualTermAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:LeaseContractualTermAxis">prlb:OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_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:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-12-31_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:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2017-12-31_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:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_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-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-12-31_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>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_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:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2017-12-22_2017-12-22"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2017-12-22</xbrli:startDate><xbrli:endDate>2017-12-22</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-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:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-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:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-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:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-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:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-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:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-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:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_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:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2019-01-01_2019-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:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-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:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember"><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:CorporateUnallocatedAndJapanSegmentMember</xbrldi:explicitMember></xbrli:segment></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="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember"><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:CorporateUnallocatedAndJapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember"><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:CorporateUnallocatedAndJapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></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_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-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>2018-12-31</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_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-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>2018-12-31</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_2019-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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-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>2018-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_SubsequentEventTypeAxis-SubsequentEventMember"><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="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</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_SubsequentEventTypeAxis-SubsequentEventMember"><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="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</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></ix:resources>
</ix:header></div>
  <div>
   &#xa0;
  </div>
  <div><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a></p>
<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
<p style="font-family: &quot;Times New Roman&quot;; font-size: 18pt; margin: 0pt 7.2pt; text-align: center;"><b>UNITED STATES</b></p>
<p style="font-family: &quot;Times New Roman&quot;; font-size: 18pt; margin: 0pt 7.2pt; text-align: center;"><b>SECURITIES AND EXCHANGE COMMISSION</b></p>
<p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Washington, D.C. 20549</b></p>
<p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>________________</b></p>
<p style="font-size: 3pt; margin: 0 7.2pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
<p style="margin: 0 7.2pt; text-align: center; font-size: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>FORM <ix:nonNumeric name="dei:DocumentType" contextRef="d_2020-01-01_2020-12-31">10-K</ix:nonNumeric></b></p>
<p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<table style="width: 100%; text-indent: 0px; font-size: 10pt;" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td style="vertical-align:top;width:8%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">(Mark One)</p> </td><td style="vertical-align:top;width:92%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> </td></tr>
<tr><td style="vertical-align:top;width:8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> </td><td style="vertical-align:top;width:92%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> </td></tr>
<tr><td style="vertical-align:top;width:8%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><ix:nonNumeric name="dei:DocumentAnnualReport" format="ixt-sec:boolballotbox" contextRef="d_2020-01-01_2020-12-31">&#x2611;</ix:nonNumeric></p> </td><td style="vertical-align:top;width:92%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>ANNUAL REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934</b></p> </td></tr>
<tr><td style="vertical-align:top;width:8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> </td><td style="vertical-align:top;width:92%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>For the fis</b><b>cal year ended <ix:nonNumeric name="dei:DocumentPeriodEndDate" format="ixt:datemonthdayyearen" contextRef="d_2020-01-01_2020-12-31">December 31, 2020</ix:nonNumeric></b></p> </td></tr>
</tbody></table>
<p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>or</b></p>
<table style="width: 100%; text-indent: 0px; font-size: 10pt;" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td style="vertical-align:top;width:8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> </td><td style="vertical-align:top;width:92%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> </td></tr>
<tr><td style="vertical-align:top;width:8%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><ix:nonNumeric name="dei:DocumentTransitionReport" format="ixt-sec:boolballotbox" contextRef="d_2020-01-01_2020-12-31">&#x2610;</ix:nonNumeric></p> </td><td style="vertical-align:top;width:92%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>TRANSITION REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934</b></p> </td></tr>
<tr><td style="vertical-align:top;width:8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> </td><td style="vertical-align:top;width:92%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><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></p> </td></tr>
</tbody></table>
<p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
<p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Commission File Number: <ix:nonNumeric name="dei:EntityFileNumber" contextRef="d_2020-01-01_2020-12-31">001-35435</ix:nonNumeric></b></p>
<p style="font-size: 3pt; margin: 0; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="margin: 0; text-align: center; font-size: 24pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Proto Labs, Inc.</b></p>
<p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">(Exact name of Registrant as specified in its charter)</p>
<p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<table style="width: 100%; text-indent: 0px; font-size: 10pt;" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><ix:nonNumeric name="dei:EntityIncorporationStateCountryCode" format="ixt-sec:stateprovnameen" contextRef="d_2020-01-01_2020-12-31">Minnesota</ix:nonNumeric></b></p> </td><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><ix:nonNumeric name="dei:EntityTaxIdentificationNumber" contextRef="d_2020-01-01_2020-12-31">41-1939628</ix:nonNumeric></b></p> </td></tr>
<tr><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">(State or other jurisdiction of</p> </td><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">(I.R.S. Employer</p> </td></tr>
<tr><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">incorporation or organization)</p> </td><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Identification No.)</p> </td></tr>
<tr><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> </td><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> </td></tr>
<tr><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><ix:nonNumeric name="dei:EntityAddressAddressLine1" contextRef="d_2020-01-01_2020-12-31">5540 Pioneer Creek Drive</ix:nonNumeric></b></p> </td><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> </td></tr>
<tr><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><ix:nonNumeric name="dei:EntityAddressCityOrTown" contextRef="d_2020-01-01_2020-12-31">Maple Plain</ix:nonNumeric>, <ix:nonNumeric name="dei:EntityAddressStateOrProvince" format="ixt-sec:stateprovnameen" contextRef="d_2020-01-01_2020-12-31">Minnesota</ix:nonNumeric></b></p> </td><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><ix:nonNumeric name="dei:EntityAddressPostalZipCode" contextRef="d_2020-01-01_2020-12-31">55359</ix:nonNumeric></b></p> </td></tr>
<tr><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">(Address of principal executive offices)</p> </td><td style="vertical-align:top;width:50%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">(Zip Code)</p> </td></tr>
</tbody></table>
<p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
<p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>(<ix:nonNumeric name="dei:CityAreaCode" contextRef="d_2020-01-01_2020-12-31">763</ix:nonNumeric>)&#xa0;<ix:nonNumeric name="dei:LocalPhoneNumber" contextRef="d_2020-01-01_2020-12-31">479-3680</ix:nonNumeric></b></p>
<p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">(Registrant&#x2019;s telephone number, including area code)</p>
<p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Securities registered pursuant to Section&#xa0;12(b)&#xa0;of the Act:</p>
<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
<table style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td style="vertical-align: top; width: 35%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Title of each class</p> </td><td style="vertical-align: top; width: 30%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Trading Symbol(s)</p> </td><td style="vertical-align: top; width: 35%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Name of each exchange on which registered</p> </td></tr>
<tr><td style="vertical-align: top; width: 35%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><ix:nonNumeric name="dei:Security12bTitle" contextRef="d_2020-01-01_2020-12-31">Common Stock, Par Value $0.001 Per Share</ix:nonNumeric></p> </td><td style="vertical-align: top; width: 30%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><ix:nonNumeric name="dei:TradingSymbol" contextRef="d_2020-01-01_2020-12-31">PRLB</ix:nonNumeric></p> </td><td style="vertical-align: top; width: 35%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><ix:nonNumeric name="dei:SecurityExchangeName" format="ixt-sec:exchnameen" contextRef="d_2020-01-01_2020-12-31">New York Stock Exchange</ix:nonNumeric></p> </td></tr>
</tbody></table>
<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
<p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Securities registered pursuant to Section 12(g)&#xa0;of the Act: <b>None</b></p>
<p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">____________________________________________</p>
<p style="font-size: 3pt; margin: 0 0 0 18pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Indicate by check mark if the Registrant is a well-known seasoned issuer, as defined in Rule&#xa0;405 of the Securities Act.&#xa0; <ix:nonNumeric name="dei:EntityWellKnownSeasonedIssuer" contextRef="d_2020-01-01_2020-12-31">Yes</ix:nonNumeric>&#xa0;&#x2612;&#xa0;&#xa0;No<b>&#xa0;</b>&#x2610;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Indicate by check mark if the Registrant is not required to file reports pursuant to Section&#xa0;13 or Section&#xa0;15(d)&#xa0;of the Act.&#xa0; Yes&#xa0;&#x2610;&#xa0;&#xa0;<ix:nonNumeric name="dei:EntityVoluntaryFilers" contextRef="d_2020-01-01_2020-12-31">No</ix:nonNumeric>&#xa0;&#x2612;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Indicate by check mark whether the Registrant (1)&#xa0;has filed all reports required to be filed by Section&#xa0;13 or 15(d)&#xa0;of the Securities Exchange Act of 1934 during the preceding 12 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 days.&#xa0; <ix:nonNumeric name="dei:EntityCurrentReportingStatus" contextRef="d_2020-01-01_2020-12-31">Yes</ix:nonNumeric>&#xa0;&#x2612;&#xa0;&#xa0;No&#xa0;&#x2610;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Indicate by check mark whether the Registrant has submitted electronically every Interactive Data File required to be submitted&#xa0;pursuant to Rule&#xa0;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; <ix:nonNumeric name="dei:EntityInteractiveDataCurrent" contextRef="d_2020-01-01_2020-12-31">Yes</ix:nonNumeric>&#xa0;&#xa0;&#x2612;&#xa0;&#xa0;No&#xa0;&#xa0;&#x2610;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
 <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
  &#xa0;
 </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%">
  <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
 </div>
</div>
<p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Indicate by check mark whether the Registrant is a large accelerated filer, an accelerated filer, a non-accelerated filer, smaller reporting company, or an emerging growth company. See the definitions of &#x201c;large accelerated filer,&#x201d; &#x201c;accelerated filer,&#x201d; &#x201c;smaller reporting company,&#x201d; and &#x201c;emerging growth company&#x201d; in Rule 12b-2 of the Exchange Act.</p>
<p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<table style="width: 100%; text-indent: 0px; font-size: 10pt;" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td style="vertical-align:top;width:44.5%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><ix:nonNumeric name="dei:EntityFilerCategory" format="ixt-sec:entityfilercategoryen" contextRef="d_2020-01-01_2020-12-31">Large accelerated filer</ix:nonNumeric>&#xa0;&#x2612;</p> </td><td style="vertical-align:top;width:55.5%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Accelerated filer&#xa0;&#x2610;</p> </td></tr>
<tr><td style="vertical-align:top;width:44.5%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> </td><td style="vertical-align:top;width:55.5%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> </td></tr>
<tr><td style="vertical-align:top;width:44.5%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Non-accelerated filer&#xa0;&#x2610;</p> </td><td style="vertical-align:top;width:55.5%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Smaller reporting company&#xa0;<ix:nonNumeric name="dei:EntitySmallBusiness" format="ixt-sec:boolballotbox" contextRef="d_2020-01-01_2020-12-31">&#x2610;</ix:nonNumeric></p> </td></tr>
<tr><td style="vertical-align:top;width:44.5%;">&#xa0;</td><td style="vertical-align:top;width:55.5%;">&#xa0;</td></tr>
<tr><td style="vertical-align:top;width:44.5%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> </td><td style="vertical-align:top;width:55.5%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Emerging growth company&#xa0;<ix:nonNumeric name="dei:EntityEmergingGrowthCompany" format="ixt-sec:boolballotbox" contextRef="d_2020-01-01_2020-12-31">&#x2610;</ix:nonNumeric></p> </td></tr>
</tbody></table>
<p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">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.&#xa0;&#xa0;&#x2610;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 18pt;">Indicate by check mark whether the Registrant has filed a report on and attestation to its management&#x2019;s assessment of the effectiveness of its internal control over financial reporting under Section 404(b) of the Sarbanes-Oxley Act (15 U.S.C. 7262(b)) by the registered public accounting firm that prepared or issued its audit report. &#x2610;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Indicate by check mark whether the Registrant is a shell company (as defined in Rule&#xa0;12b-2 of the Act).&#xa0; Yes&#xa0;<ix:nonNumeric name="dei:EntityShellCompany" format="ixt-sec:boolballotbox" contextRef="d_2020-01-01_2020-12-31">&#x2610;</ix:nonNumeric>&#xa0;&#xa0;No&#xa0;&#x2612;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">As of June 30, 2020 (the last business day of the Registrant&#x2019;s most recently completed second fiscal quarter), the aggregate market value of voting stock held by non-affiliates of the Registrant was approximately $<ix:nonFraction name="dei:EntityPublicFloat" scale="9" unitRef="USD" decimals="1" format="ixt:numdotdecimal" contextRef="i_2020-06-30">3.0</ix:nonFraction> billion.</p>
<p style="margin: 0 0 0 18pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="margin: 0px; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 18pt;">As of February 10, 2021, there were <ix:nonFraction name="dei:EntityCommonStockSharesOutstanding" scale="0" unitRef="Share" decimals="INF" format="ixt:numdotdecimal" contextRef="i_2021-02-10">27,604,879</ix:nonFraction> shares of the Registrant&#x2019;s common stock outstanding.</p>
<p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>DOCUMENTS INCORPORATED BY REFERENCE</b></p>
<p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#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;">Portions of the Registrant&#x2019;s definitive proxy statement relating to its 2021 annual meeting of shareholders are incorporated by reference into Part III of this Form 10-K where indicated. Such proxy statement will be filed with the U.S. Securities and Exchange Commission within 120 days after the end of the fiscal year to which this report relates.</p>
<div>
 &#xa0;
</div>
<p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
 <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
  2
 </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%">
  <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
 </div>
</div>
<p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p></div>
  <div>
   &#xa0;
  </div>
  <div>
   <p style="margin: 0 14.7pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="toc" title="toc" href="#"></a>Table of Contents</b></p>
   <p style="margin: 0 14.7pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;<b>&#xa0;</b></p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-size: 10pt;">
    <tbody>
     <tr>
      <td style="vertical-align:top;width:9.7%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><span style="text-decoration: underline; "><b>Page</b></span></p> </td>
     </tr>

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

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 1.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item1_business" style="-sec-extract:exhibit;">Business</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item1_business">5</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 1A.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item1a_riskfactors" style="-sec-extract:exhibit;">Risk Factors</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item1a_riskfactors">14</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 1B.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item1b_unresolvedstaffcomments" style="-sec-extract:exhibit;">Unresolved Staff Comments</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item1b_unresolvedstaffcomments">27</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 2.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item2_properties" style="-sec-extract:exhibit;">Properties</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item2_properties">27</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 3.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item3_legalproceedings" style="-sec-extract:exhibit;">Legal Proceedings</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item3_legalproceedings">28</a></p> </td>
     </tr>

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

     <tr>
      <td style="vertical-align:top;width:9.7%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;">&#xa0;</td>
     </tr>

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

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 5.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item5_marketforrestrantscommonequity" style="-sec-extract:exhibit;">Market for Registrant's Common Equity, Related Stockholder Matters and Issuer Purchases of Equity Securities</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item5_marketforrestrantscommonequity">29</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 6.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item6_selectedfinancialdata" style="-sec-extract:exhibit;">Selected Financial Data</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item6_selectedfinancialdata">31</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 7.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item7_mdaa" style="-sec-extract:exhibit;">Management's Discussion and Analysis of Financial Condition and Results of Operations</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item7_mdaa">33</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 7A.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item7a_quantitativeandqualatativedis" style="-sec-extract:exhibit;">Quantitative and Qualitative Disclosures About Market Risk</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item7a_quantitativeandqualatativedis">45</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 8.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item8_financialstatementsandsup" style="-sec-extract:exhibit;">Financial Statements and Supplementary Data</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item8_financialstatementsandsup">46</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 9.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item9_changesinanddisagreements" style="-sec-extract:exhibit;">Changes in and Disagreements with Accountants on Accounting and Financial Disclosure</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item9_changesinanddisagreements">78</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 9A.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item9a_controlsandprocedures" style="-sec-extract:exhibit;">Controls and Procedures</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item9a_controlsandprocedures">78</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 9B.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item9b_otherinfo" style="-sec-extract:exhibit;">Other Information</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item9b_otherinfo">78</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;">&#xa0;</td>
     </tr>

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

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 10.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item10_directorsexecofficers" style="-sec-extract:exhibit;">Directors, Executive Officers and Corporate Governance</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item10_directorsexecofficers">79</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 11.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item11_executivecompensation" style="-sec-extract:exhibit;">Executive Compensation</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item11_executivecompensation">79</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 12.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item12_securityownership" style="-sec-extract:exhibit;">Security Ownership of Certain Beneficial Owners and Management</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item12_securityownership">79</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 13.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item13_certianrelationships" style="-sec-extract:exhibit;">Certain Relationships and Related Transactions, and Director Independence</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item13_certianrelationships">79</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 14.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item14_principalaccoutantfees" style="-sec-extract:exhibit;">Principal Accountant Fees and Services</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item14_principalaccoutantfees">79</a></p> </td>
     </tr>

     <tr>
      <td style="vertical-align:top;width:9.7%;">&#xa0;</td>
      <td style="vertical-align:top;width:80.8%;">&#xa0;</td>
      <td style="vertical-align:top;width:5.4%;">&#xa0;</td>
     </tr>

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

     <tr>
      <td style="vertical-align:top;width:9.7%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Item 15.</p> </td>
      <td style="vertical-align:top;width:80.8%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#item15_exhibitsandfinancialstatementsch" style="-sec-extract:exhibit;">Exhibits and Financial Statement Schedules</a></p> </td>
      <td style="vertical-align:top;width:5.4%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a class="tocPGNUM" href="#item15_exhibitsandfinancialstatementsch">80</a></p> </td>
     </tr>

    </tbody>
   </table>
   <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
     3
    </div>
    <hr />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  </div>
  <div>
   &#xa0;
  </div>
  <p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Special Note Regarding Forward Looking Statements</b></p>
  <p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Statements contained in this Annual Report on Form 10-K 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 which may cause our results to be materially different than those expressed or implied in such statements. In particular, some of the risks associated with our business include:</p>
  <p style="margin: 0 22.2pt 0 23.3pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;">
   <tbody>
    <tr>
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#x2022;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">the duration, scope, severity and potential mutations of COVID-19;</td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">the level of competition in our industry and our ability to compete;</p> </td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to respond to changes in our industry;</p> </td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to effectively grow our business and manage our growth;</p> </td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to continue to sell to existing and new customers;</p> </td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to meet product developers&#x2019; and engineers&#x2019;&#xa0;needs and expectations regarding quick turnaround time, price and specifications for quality;</p> </td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">the adoption rate of e-commerce and 3D CAD software by product developers and engineers;</p> </td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to process a large volume of designs and identify significant opportunities in our business;</p> </td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to maintain and enhance our brand;</p> </td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to successfully identify, complete and integrate acquisitions or other strategic transactions;</p> </td>
    </tr>

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

    <tr style="font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#x2022;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">our ability to complete and successfully launch updates to our systems;</td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">the loss of key personnel or failure to attract and retain additional personnel;</p> </td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">system interruptions at our operating facilities;</p> </td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">possible unauthorized access to customers&#x2019; confidential information stored in our systems; and</p> </td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 9pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x2022;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">our ability to protect our intellectual property and not infringe on others&#x2019; intellectual property.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 22.2pt 0 23.3pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Certain of these factors and others are described in the discussion on risk factors that appear in Part I, Item 1A. &#x201c;Risk Factors&#x201d; of this Annual Report on Form 10-K and uncertainties are detailed in this and other reports and filings 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, except as required by law, we expressly disclaim any intent or obligation to update any forward-looking statements to reflect subsequent events or circumstances.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    4
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="part1" title="part1" href="#"></a>PART I</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <p style="margin: 0 7.2pt 0 16.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="item1_business" title="item1_business" href="#"></a>Item&#xa0;1. Business</b></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Overview</b></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Proto Labs, Inc. was incorporated in Minnesota in 1999. The terms &#x201c;Proto Labs,&#x201d; the &#x201c;Company,&#x201d; &#x201c;we,&#x201d; &#x201c;us,&#x201d; and &#x201c;our&#x201d; as used herein refer to the business and operations of Proto Labs, Inc. and its subsidiaries. We are the world&#x2019;s largest and fastest digital manufacturer&#xa0;of custom prototypes and on-demand production parts. Our mission is to help companies accelerate product development, reduce risk, and optimize supply chains by providing quality prototyping and on-demand manufacturing services at unprecedented speeds. Our automated quoting and manufacturing systems allow us to produce commercial-grade plastic, metal, and liquid silicone rubber parts within days. We manufacture prototype 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. 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. We have established our operations in the United States, Europe and Japan, which we believe are three of the largest geographic markets where these product developers and engineers are located. We believe our use of advanced technology enables us to offer significant advantages at competitive prices to many customers and is the primary reason we have become a leading supplier of custom parts.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We believe prototype and low volume custom parts manufacturing has historically been an underserved market due to the inefficiencies inherent in the quotation, equipment set-up and non-recurring engineering processes required to produce custom parts. Our customers typically order short run custom parts for a variety of reasons, including:</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 54pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">they need a prototype to confirm the form, fit and function of one or more components of a product under development;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 54pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">they need an initial supply of parts to support pilot production for testing of a product;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 54pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">they need an initial supply of parts to support production while their high-volume production mold is being prepared;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 54pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">they need to meet their customers' variable demand for custom parts in a competitive timeframe;</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 54pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">their product will only be released in a limited quantity; or</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 54pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">they need to support end-of-life production in a cost-effective manner.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In each of these instances, we believe our solution provides product developers, engineers, and supply chains with an exceptional combination of speed, quality, competitive pricing, ease of use and reliability that they typically cannot find among conventional custom parts manufacturers. Our technology enables us to ship parts as soon as the same day after receipt of a customer&#x2019;s design submission.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our primary manufacturing product lines currently include Injection Molding, CNC Machining, 3D Printing and Sheet Metal. We continually seek to expand the range of size 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.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We have experienced significant growth since our inception in 1999. We have grown our total revenue from $298.1 million in 2016 to $434.4 million in 2020. We have grown our net income from $42.7 million in 2016 to $50.9 million in 2020.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our increases in revenue and income from operations can be attributed to expanding our customer base, broadening our parts envelope, and launching new manufacturing technologies. We were founded in 1999 with plastic injection molding, and have expanded our product lines over the years by the introduction of:</p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;">
   <tbody>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">CNC machining in 2007;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">liquid silicon rubber (LSR) and lathe manufacturing processes that expanded the breadth and scope of our injection molding and CNC machining product lines in 2014;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">3D printing, including stereolithography (SL), selective laser sintering (SLS), and direct metal laser sintering (DMLS), through our acquisition of FineLine Prototyping, Inc. (FineLine) in 2014 and expanded through our acquisition of certain assets of Alphaform AG (Alphaform) in 2015;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">rapid overmolding technology in 2016 and insert molding technology in 2017, both of which expanded the breadth of our manufacturing capabilities in our Injection Molding product line;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">PolyJet and Multi Jet Fusion (MJF)&#xa0;in 2017, which expanded the processes&#xa0;with which we produce 3D printed parts;</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    5
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;">
   <tbody>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">injection molding commercial offerings tailored to on-demand manufacturing customers in 2017;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">sheet metal fabrication capability through our acquisition of RAPID Manufacturing Group, LLC (RAPID) in 2017;&#xa0;</p> </td>
    </tr>

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">expanded CNC machining capabilities for larger and more complex parts through our acquisition of RAPID in 2017;</p> </td>
    </tr>

    <tr style="font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;">&#x25cf;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">Carbon Digital Light Synthesis<sup style="vertical-align:top;line-height:120%;font-size:pt">(TM)</sup> (DLS) in 2019, which further expanded the processes with which we produce 3D printed parts; and</td>
    </tr>

    <tr style="font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;">&#x25cf;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">during 2018, 2019 and 2020, we have been working on enhancements to our e-commerce customer interface and back-end operations software. These enhancements launched in Europe in the fourth quarter of 2020 and in the United States in the first quarter of 2021. The enhancements are designed to add value for our customers and support the growth of the business in the future.</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Industry Overview</b></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Our Industry</b></i></p>
  <p style="margin: 0 22.2pt 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We serve product developers and engineers worldwide who bring new ideas to market in the form of products containing one or more custom parts. Many of these product developers and engineers use 3D CAD software to create digital models representing their custom part designs that are then used to create physical parts for concept modeling, prototyping, functional testing, market evaluation or production. Custom prototype parts play a critical role in the product development process, as they provide product developers and engineers with the ability to test and confirm their intended performance requirements and explore design alternatives.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Early in the product development process, 3D printing processes such as SL and PolyJet can be used to quickly produce an approximate physical representation of a part, but these representations may not meet product developers&#x2019; and engineers&#x2019; requirements for material properties. As an alternative, injection molding, CNC machining, sheet metal, and 3D printing processes such as SLS, DMLS, and MJF can be used to produce low volumes of high-quality custom parts in either metal or plastic. For follow-on functional testing, market evaluation and production runs, parts are typically manufactured using injection molding, CNC machining&#xa0;and sheet metal fabrication.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Our Solution</b></i></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We have developed proprietary software and advanced manufacturing processes that automate much of the skilled labor conventionally required in quoting, production engineering and manufacturing of custom parts. We believe our interactive web-based interface and highly automated processes address the desires of many product developers and engineers for a fast, efficient and cost-effective means to obtain custom parts, and are the primary reasons we have become a leading supplier of custom parts.</p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Key elements of our solution include:</p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Sophisticated Technology that Reduces Turnaround Time and Provides Consistency in Lead Time</i></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>&#xa0;</i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our digital model is centered on our web-based interface and proprietary software, which automate many of the manual and time-consuming processes typically required to obtain custom parts from conventional suppliers. Our platform automates many aspects of the entire process from design submission through manufacturability analysis and feedback, quotation, order submission, mold design, tool path generation, mold or part manufacture and digital inspection. To utilize our platform, a prospective customer uploads a 3D CAD file of their required part through our website. Often within minutes of design submission, our software analyzes the design, assesses the manufacturability of the design and our ability to make the part, and returns a firm price quotation with any recommendations for design modifications. Many of our customers find this analysis particularly helpful, as it diagnoses and prevents potential problems prior to manufacturing. We can also provide a flow analysis to identify design flaws that limit the ability to manufacture a quality part.</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 54pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our quoting system is highly interactive, enabling our prospective customers to change the material, finish, quantity or shipping schedule of orders, and to instantly receive an updated quotation. Once an order is received, our software automates much of the manual engineering and skilled labor that is normally required to manufacture parts. As a result, in many cases we are able to quote orders in minutes and ship parts as soon as the same day ordered.</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Scale to Process Large Numbers of Unique Part Designs</i></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>&#xa0;</i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our proprietary, highly scalable quoting technology addresses the manual processes conventionally involved in submitting a design, analyzing its manufacturability, making design revision recommendations and generating price quotations. This enables us to quickly analyze high volumes of 3D CAD part design submissions and provide feedback to our prospective product developer and engineer customers. In 2020&#xa0;alone, we generated quotations for over 1,000,000&#xa0;design submissions. Our proprietary manufacturing automation technology is also highly scalable, enabling us to process large numbers of unique designs and, combined with our manufacturing processes, efficiently and effectively manufacture high volumes of parts to meet the needs of product developers and engineers.</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    6
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Enhanced Customer Experience</i></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>&#xa0;</i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our web-based customer interface provides a straightforward means of submitting 3D CAD part designs. Our proprietary manufacturability analysis then quickly analyzes whether a part design falls within our manufacturing capabilities. In many cases, our software provides suggested design modifications to enhance manufacturability, which is presented to the product developer or engineer in an interactive quotation containing a color-coded 3D representation of the part. This allows product developers and engineers to quickly determine the manufacturability of their parts, understand the cost and when they can be shipped. Our interactive quotations provide instant visibility into the impact of changing an order&#x2019;s various parameters such as material, finish, quantity or shipping schedule. As a result, we provide product developers and engineers with an easy-to-use and consistent means to obtain custom parts.</p>
  <p style="margin: 0 14.7pt; text-align: center; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Attractive Custom Pricing</i></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>&#xa0;</i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Based on internal market research, we believe we generally have competitive pricing on custom orders. We believe this, combined with speed,&#xa0;is a direct result of our technology and the efficiency of our operations, both of which were designed specifically for lower volume runs of custom parts production. By limiting these costs, we can typically offer attractive pricing not normally possible in the low volume, high mix custom parts market, and as a result, we can typically offer product developers and engineers competitive prices on custom manufactured parts.&#xa0;</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Our Product Lines</b></i></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our Injection Molding, CNC Machining, 3D Printing and Sheet Metal product lines offer many product developers and engineers the ability to quickly and efficiently outsource their quick-turn custom parts manufacturing. See Item 7. &#x201c;Management&#x2019;s Discussion and Analysis of Financial Condition and Results of Operations&#x201d; for the historical revenue generated by each of Injection Molding, CNC Machining, 3D Printing and Sheet Metal.</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Injection Molding</b></i></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">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&#xa0;liquid silicone rubber injection-molded parts and&#xa0;over-molded and&#xa0;insert-molded&#xa0;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 Proto Labs&#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 service. This service utilizes our existing processes, but is designed to fulfill the needs of customers with on-going production needs.</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>CNC Machining</b></i></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">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. Quick-turn CNC machining works best for prototyping, form and fit testing, jigs and fixtures and functional components for end-use applications. We offer competitive pricing at higher quantities, in addition to First Article Inspection (FAI) reporting, material certifications and additional in-house and outsourced finishing options, like anodizing and chromate plating.</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>3D Printing</b></i></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our 3D Printing product line includes SL, SLS, DMLS, MJF, PolyJet and Carbon DLS processes, which offers 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: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    7
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Sheet Metal</b></i></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our Sheet Metal product line includes quick-turn and e-commerce-enabled custom sheet metal parts, providing 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 rapid prototyping sheet metal or end-use production parts and assemblies.</p>
  <p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Our Process</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div style="text-align: center;">
   <img alt="image02.jpg" src="image02.jpg" /></div>
  <p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: justify; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The process for Injection Molding begins when the product developer or engineer uploads one or more 3D CAD models representing the desired part geometry through our website. Our proprietary software uses complex algorithms to analyze the 3D CAD geometry, analyze its manufacturability and support the creation of an interactive, web-based quotation containing pricing and manufacturability information. A link to the quotation is then e-mailed to the product developer or engineer, who can access the quotation, change a variety of order parameters and instantly see the effect on price before finalizing the order. Our proprietary software supports the creation of the mold design and the tool paths required to manufacture the mold components, which are then routed to our CNC machining centers for execution. Once the mold is assembled, it is placed in one of our injection molding presses to create the required parts. Parts are shipped in as little as one business day from design submission. We ship our parts via small parcel common carriers on standard terms and conditions. Our other services have similar processes, but differ mainly due to the nature of the manufacturing processes on which each service is based.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    8
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0 7.2pt 0 25.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Our Growth Strategy</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The principal elements of our growth strategy are to:</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Expand the Customer Base</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We plan to expand our customer base to serve more product developers and engineers within the companies that have already used our product lines. Individual product developers and engineers typically make or influence the choice of vendor when sourcing custom parts. We believe a significant opportunity exists for us to leverage highly satisfied product developers and engineers to encourage others within the same organization to utilize our product lines. We have historically gained a significant number of new customers through word-of-mouth referrals from other product developers and engineers, and combine these referrals with the efforts of our marketing and sales force to identify and market our product lines to the colleagues of our existing customers.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We also plan to use our marketing and sales capabilities to continue to pursue product developers and engineers within companies who have not yet used our products. Our presence in geographic regions that have high populations of 3D CAD users provides us with a broad universe of potential new customer companies on which to focus our marketing and sales efforts.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We believe there may be opportunities to grow by identifying and expanding into select additional geographic markets. We currently operate in the United States, Europe and Japan, where we believe a substantial portion of the world&#x2019;s product developers and engineers are located. We entered the European market in 2005 and launched operations in Japan in 2009. For 2020, revenue earned in these markets represents approximately 20.4% of our total revenue. We believe opportunities exist to serve the needs of product developers and engineers in select new geographic regions and we will continue to evaluate such opportunities if and when they arise.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In 2020, we enhanced the functionality and ease of use of our Europe platform and expanded the capabilities of our customer-facing and back-end systems in order to further increase automation and meet the evolving needs of product developers and engineers worldwide. We believe product developers and engineers have come to expect advanced web-based tools and a fully integrated Internet platform from their vendors. We will continue to use the Internet to provide product developers and engineers with a standardized interface through which they can upload their 3D CAD models and obtain firm, interactive quotations quickly and efficiently. Similar enhancements were launched in the United States in the first quarter of 2021.</p>
  <p style="margin: 0 22.2pt 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Launch New Manufacturing Technology</b></i></p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We seek to identify additional manufacturing processes to which we can apply our digital technology and expertise to meet a greater range of product developers&#x2019; and engineers&#x2019; needs. Introducing new manufacturing processes can both attract new customers and provide us with a significant opportunity to cross-sell our existing product lines to our existing customer base. We regularly evaluate new manufacturing processes to offer product developers and engineers and introduce such new processes when we are confident that a sufficient market demand exists and that we can offer the same advantages our customers have come to expect from us.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We were founded with Injection Molding which represents 50.2% of our total revenue for the year ended December 31, 2020. Examples of new manufacturing services we have added include CNC Machining, 3D Printing and Sheet Metal. Our CNC Machining product line was first introduced in the United States and&#xa0;Europe in 2007, expanded to Japan in 2009,&#xa0;and further expanded in the United States through our acquisition of RAPID in November 2017. CNC Machining represents 30.3% of our total revenue for the year ended December 31, 2020. 3D printing technologies were introduced through our acquisition of FineLine in April 2014. We further expanded our 3D printing capabilities in October 2015 through our acquisition of Alphaform. Our 3D product line represents 14.4% of our total revenue for the year ended December 31, 2020. Our Sheet Metal product line was introduced through our acquisition of RAPID in November 2017 and represents 4.3% of total revenue for the year ended December 31, 2020.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We continue to expand our core product lines through product&#xa0;line extensions&#xa0;including liquid silicone rubber injection molding, lathe-turned parts, rapid overmolding, insert molding, PolyJet, MJF and Carbon DLS. We introduced liquid silicone rubber injection molding during 2014. In 2015, we introduced lathe-turned products to expand our CNC product line. In 2016, we expanded the breadth of our manufacturing capabilities by adding rapid overmolding technology. In 2017, we added insert molding to our Injection Molding product line and PolyJet and MJF to our 3D Printing product line. In addition, we launched on-demand manufacturing to address the needs of the low-volume, high-mix product segment. We also opened our first metrology lab in 2017 for enhanced inspection reporting on end-use production parts, including First Article Inspection Reports and digital inspection reports. In 2020, we added Carbon DLS to provide a cost-effective production solution for geometric complexities that cannot be molded or otherwise fabricated.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Enhance Customer Experience</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-family: Times New Roman; font-size: 10pt;">We serve nearly all our customers over the internet using our e-commerce, digital model. The majority of customers upload CAD files through our secure e-commerce platform to receive a quote, and ultimately, place an order. The order is then processed through our digital model that is connected by our systems. Having an industry leading customer experience is important to our overall growth strategy. In 2020, the Company was focused on Protolabs 2.0, an internal business systems project designed to evolve the way we engage and serve our customers. Through development of both our external customer-facing and internal back-end systems, Protolabs 2.0 will allow us to capitalize on market opportunities and better serve the long-term needs of our customers. We expect the long-term benefits of the project to be an improved customer experience, speed and scalability of the business, internal business insights and internal productivity. Protolabs 2.0 was successfully launched in Europe in the fourth quarter of 2020 and in the United States in the first quarter of 2021.</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    9
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Broaden the Parts Envelope</b></i></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We regularly analyze the universe of customer design submissions that we are currently unable to manufacture and focus a portion of our research and development efforts to expand the range of parts that we can produce. Since we first introduced our Injection Molding product line in 1999, we have steadily expanded the size and geometric complexity of the injection-molded parts we are able to manufacture, and we continue to extend the diversity of materials we are able to support. Similarly, since first introducing our CNC Machining product line in 2007, we have expanded the range of part sizes, design geometries and materials we can support. In 2017, we launched PolyJet and MJF, which expanded our 3D Printing processes to support a broader range of our customers' needs. Through our acquisition of RAPID in November 2017, we added quick-turn and e-commerce-enabled Sheet Metal services to our portfolio and expanded our CNC Machining capabilities to support larger and more complex projects. In 2020, we added Carbon DLS to our 3D Printing processes, introduced precision color matching on Injection Molding parts and launched production capabilities for metal 3D Printing. In 2020, we added the world's largest metal 3D printer to allow us to produce large-format metal parts. As we continue to expand the range of our existing process capabilities, we believe we will meet the needs of a broader set of product developers and engineers and consequently convert a higher number of quotation requests into orders.</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Marketing</b></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">As a customer centric organization, we continue to evolve our go-to-market strategy. Our&#xa0;global marketing effort generates prospects for our sales teams and seeks to strengthen our reputation as an industry leader in digital manufacturing services for custom prototyping and low-volume manufacturing. Since we are an agile, technology-based company, much of our marketing activities occur online. We use marketing automation software to enhance the productivity of our marketing and sales teams and continuously track the results of every campaign to ensure our return on investment.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We maintain top-of-mind brand awareness with product developers and engineers through regular publication of technical information including design guidelines and helpful tips, engineering white papers, educational webinars, quick videos, and a quarterly journal focused on important industry topics. We also provide complimentary physical design aids to designers and engineers &#x2014; as well as teachers and students &#x2014; that highlight technical aspects of injection molding to help create efficient, well-designed parts. We believe these educational materials are key aspects of our lead generation efforts.</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 54pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Marketing represents the face of Proto Labs, so it is our goal to actively and intelligently engage designers and engineers across multiple mediums &#x2014; whether print, online, social media or in person. By doing this, we gain new customers, drive sales and build brand equity.</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Sales and Customer Service</b></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We maintain an internal sales team trained in the basics of part design and the capabilities of our manufacturing product lines, as well as the key advantages of our processes over alternate methods of custom parts manufacturing. We organize our sales team into complementary roles: business development, account management and strategic account management, with the former focused on selling to new customer companies&#xa0;within targeted market segments&#xa0;and the latter two focused on expanding sales within existing customer companies.</p>
  <p style="margin: 0 7.2pt; text-align: center; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We believe our sales staff is adept at researching customer companies and networking to find additional product developers and engineers who may have a need for our products. We also have a team of customer service engineers who can support highly technical engineering discussions with product developers and engineers as required during the sales process. Our revenue is generated from a diverse customer base, with no single customer company representing more than 2% of our total revenue in 2020.</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Competition</b></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The market for custom parts manufacturing is fragmented, highly competitive and subject to rapid and significant technological change. Our potential competitors include:</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;">
   <tbody>
    <tr style="font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 27pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; vertical-align: top; font-family: Times New Roman; font-size: 10pt;">&#x25cf;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;"><i>Other custom parts manufacturers.</i> There are thousands of alternative manufacturing machine shops, injection molding suppliers, sheet metal fabricators, and 3D printing service bureaus and vendors worldwide. The size and scale of these businesses range from very small specialty shops to large, high-volume production manufacturers.</td>
    </tr>

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

    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 27pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;"><i>&#x25cf;</i></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;"><i>Captive in-house product manufacturing.</i> Many larger companies undertaking product development have established additive rapid prototyping (3D printing), CNC machining, injection molding or sheet metal&#xa0;capabilities internally to support prototyping or manufacturing requirements of their product developers and engineers.</p> </td>
    </tr>

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

    <tr style="font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 27pt; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td style="width: 18pt; font-family: Times New Roman; font-size: 10pt; vertical-align: top;">&#x25cf;</td>
     <td style="padding: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><i>Brokers. </i>There are an increasing number of digital brokers that provide product developers with a network of manufacturers, generally a subset of the other custom parts manufacturers described above, that can offer a diverse range of capabilities, capacity, competitive pricing and desired lead times to meet customer demand.</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 14.7pt 0 50.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We believe that the key competitive factors in our industry include:</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Quality: dimensional accuracy, surface finish, material properties, color and cleanliness;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Speed: turnaround time for quotations and parts;</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 2.25pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    10
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: Times New Roman;">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Reliability: greater than 97% on-time delivery with predictable lead times;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Service: overall customer experience, from web interface to post-sales support;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Capability: range of part sizes and dimensional complexities supported, variety of manufacturing processes offered, materials supported and post-processing provided;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Scale: ability to support thousands of part designs in parallel;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Capacity: ability to manage peaks in demand with very short lead times and no minimum order quantities; and</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x25cf;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Price: mold and part pricing, including total cost of ownership.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We believe that our digital end-to-end manufacturing capability positions us favorably and has enabled us to become a leader in our markets. We also believe that substantially all of our current direct competitors are relatively small in terms of size of operations, revenue, number of customers and volume of parts sold, and generally lack our technological capabilities. However, our industry is evolving rapidly and other companies, including potentially larger and more established companies with developed technological capabilities, may begin to focus on low volume, high mix custom parts manufacturing. These companies could more directly compete with us, along with our existing competitors, and could also launch new products and product lines that we do not offer that may quickly gain market acceptance. Any of the foregoing could adversely affect our ability to attract customers.</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><b>Corporate Responsibility and Sustainability Highlights</b></p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Our corporate responsibility and sustainability practices are built on a foundation of shared fundamental values of teamwork, trust and achievement, and help us to deliver strong financial results that create value for our Company and our shareholders in a way that respects our communities and the environments in which we operate. The Company's three core values are embodied in everything we do.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="font-family:'Times New Roman', Times, serif;margin-right:0pt;margin-top:0pt;text-align:left;margin-bottom:0pt;font-size:10pt;">&#x2022;</p> </td>
     <td> <p style="font-family:'Times New Roman', Times, serif;margin-right:0pt;margin-top:0pt;text-align:left;margin-bottom:0pt;font-size:10pt;">Teamwork &#x2013; We are dedicated to the idea that a diversity of minds is better than one. Through open communication, we strive to collaborate with and include all of our colleagues to maximize our creativity and to make our good ideas great. We respect each other&#x2019;s opinions. We help colleagues who are struggling to improve, so our success is everyone&#x2019;s success.</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="font-family:'Times New Roman', Times, serif;margin-right:0pt;margin-top:0pt;text-align:left;margin-bottom:0pt;font-size:10pt;">&#x2022;</p> </td>
     <td> <p style="font-family:'Times New Roman', Times, serif;margin-right:0pt;margin-top:0pt;text-align:left;margin-bottom:0pt;font-size:10pt;">Trust &#x2013; Our integrity is built on honest answers to our customers and colleagues. It is okay to make mistakes if we use them to learn. We navigate difficult situations with compassion. The success of our Company depends on the success of our people.</p> </td>
    </tr>

    <tr>
     <td style="width: 18pt;">&#xa0;</td>
     <td style="width: 27pt;">&#x2022;</td>
     <td>Achievement &#x2013; Speed and innovation are the cornerstones of our success. We are committed to being a solution for getting things done quickly and sustainably and a catalyst for great ideas for our shareholders, customers, the environment and each other. We are responsible for our performance, our results and our future.</td>
    </tr>

   </tbody>
  </table>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 9pt;"><i><b>Workforce Demographics</b></i></p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of December 31, 2020 we had 2,408 full-time employees, including 1,680 full-time employees in the United States, 649 full-time employees in Europe and 79 full-time employees in Japan.&#xa0; We also regularly use independent contractors and other temporary employees across the organization to augment our regular staff. We believe that our future success will depend in part on our continued ability to attract, hire and retain qualified, diverse and inclusive personnel.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">We are an equal opportunity employer, and we believe that a diverse workforce made up of people with different ideas, strengths, interests and cultural backgrounds drives employee and business success. Our workforce is composed of a diverse group of engineers, technicians and business professionals from around the world and every walk of life. In 2020, our attrition rate was 13.4%, 11.8% and 7.4% in the United States, Europe and Japan, respectively.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 9pt;"><i><b>Compensation</b></i></p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">We believe our success depends in large measure on our ability to attract, retain and motivate a broad range of employees to be successful in a dynamic and changing business environment, and that a competitive compensation program is essential to that effort. In determining employee compensation, our executive leadership team reviews and considers a number of factors, including individual and corporate performance, input from direct leaders, compensation market data from third party compensation surveys, our compensation philosophy and key principles, and the leadership&#x2019;s collective experience and knowledge. Annually, our executive leadership team reviews input from all leaders throughout our organization, including recommendations as to compensation levels that the leaders believe are commensurate with an individual&#x2019;s job performance, skills, experience, qualifications, criticality to our company and development/career opportunities. We also award long-term equity-based compensation to high performing individuals and managers who have the greatest impact on the creation of shareholder value in order to further align the interests of our employees and shareholders.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 9pt;"><i><b>Diversity, Equity and </b><b>Inclusion </b></i></p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">At Protolabs, diversity, equity and inclusion matters. We are committed to establishing a culture where we celebrate diversity, equity and inclusivity as a way of life. Our diversity and inclusion starts at the top with our board regularly reviewing this area. We have a Diversity, Equity and Inclusion (DEI) Leadership Council to promote honest conversations, influence best practices and educate our employees. Our DEI Leadership Council members are employee representatives chosen from various locations to work directly with our leadership team to drive change, including within our leadership team. As we continue to grow, we will purposefully work toward cultivating a safe and inclusive environment. We strive to build diverse teams throughout the organization and empower growth for generations to come. Uniqueness defines us as a company, from our custom products to our employees. Our pledge is to establish a global culture that invites, recognizes and embraces all contributions to make a stronger &#x201c;US&#x201d;.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#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;">
      11
     </div>
    </div>
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 9pt;"><i><b>Health, Safety and Wellness</b></i></p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">We strive to continuously improve our employees&#x2019; health, safety and wellness. Our &#x201c;I Am&#x201d; safety program teaches that safety is the responsibility of every individual in our organization. We believe this program is key to our excellent safety compliance record. We know that our employees are our most valuable assets, and their safety and health are among our top priorities.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">In addition to concentrating on employee safety in the workplace, we also focus on the overall wellbeing of our employees. We continue to invest in a variety of employee health and wellness programs, including gym membership discounts, on-site yoga classes at certain facilities, wellness newsletters and learning sessions, and various Employee Assistance Programs.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">In response to the COVID-19 pandemic, we are closely monitoring the situation and implementing additional safety measures to help ensure the well-being of our employees, customers, and suppliers; to minimize disruptions; and to provide for the safe and reliable supply of products to our customers. In accordance with the guidance provided by both the World Health Organization and the U.S. Centers for Disease Control and Prevention, the Company has implemented safe work practices, including social distancing and work-from-home guidelines. In addition, we increased our focus on employee mental health during the pandemic by providing employees with mental health resources and Employee Assistance Programs.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 9pt;"><i><b>Education</b></i></p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">We firmly believe that the education of our employees is critical to our success. Our employees have access to a robust learning management system that offers courses on topics ranging from compliance to leadership, and communication to job-specific skills. In 2020, we provided an average of 20 formal training hours per employee. We provide an Educational Assistance Program for employees which offers financial assistance for both professional and personal development to inspire employees to continuously enhance their skills and knowledge. In order to ensure our industry remains robust, we are committed to supporting Science, Technology, Engineering and Mathematics (STEM) programs in the metro areas of certain cities where we have facilities. We provide STEM grants through the Protolabs Foundation of up to $200,000 annually for eligible organizations. In addition, we partner with schools, colleges and universities to provide various outreach opportunities and sponsorships.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 9pt;"><i><b>Charitable Giving</b></i></p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">We pride ourselves in being a responsible corporate citizen through our Protolabs Foundation. We support a number of charitable causes with our Employee Matching, Cool Ideas, and Major Gifts Programs. The Foundation&#x2019;s efforts serve as a sustaining investment in the future of the communities where our employees live and work, and also a commitment to the future of the manufacturing industry. ProtoGivers, our employee led community involvement team, organizes a wide range of activities, including Red Cross blood drives, working for Habitat for Humanity projects, volunteering for Feed My Starving Children, and making financial contributions to charitable causes, many of which are matched through our Employee Giving Program. In addition to our financial support, our community outreach reflects an active effort to improve the quality of life in the regions where we have facilities.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 9pt;"><i><b>Environment</b></i></p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">We are committed to having a positive impact on the environment. We strive to maximize recycling in both our manufacturing and office facilities. In our manufacturing facilities, we recycle metal, plastic and water used throughout the manufacturing processes. In 2020, we added solar energy to our facility in Plymouth, MN, one of our larger manufacturing facilities.&#xa0; Finally, the Green Team, an employee-led organization, educates our employees on how they can positively impact the environment, both at work and at home.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Intellectual Property</b></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We regard our patents, trademarks, service marks, trade dress, trade secrets, copyrights, domain names and other intellectual property as valuable to our business and rely on patent, trademark and copyright law, trade secret protection and confidentiality and/or license agreements with our employees, customers, vendors and others to protect our proprietary rights. We register our patents, trademarks and service marks in the United States and other jurisdictions as we deem appropriate. As of December 31, 2020, we owned and had applications pending for patents relating to various aspects of our quoting and manufacturing processes as follows:</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 85%; text-indent: 0px; font-size: 10pt; margin-right: 7.5%; margin-left: 7.5%;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 64%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"><b>Jurisdiction</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="1" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><b>Issued Patents</b></td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="1" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><b>Applications Pending</b></td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 64%; font-size: 10pt">United States</td>
     <td style="font-size: 10pt">&#xa0;</td>
     <td colspan="1" style="text-align: center; font-size: 10pt">25</td>
     <td style="font-size: 10pt">&#xa0;</td>
     <td style="font-size: 10pt">&#xa0;</td>
     <td colspan="1" style="text-align: center; font-size: 10pt">14</td>
     <td style="font-size: 10pt">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 64%; font-size: 10pt">United Kingdom</td>
     <td style="font-size: 10pt">&#xa0;</td>
     <td colspan="1" style="text-align: center; font-size: 10pt">2</td>
     <td style="font-size: 10pt">&#xa0;</td>
     <td style="font-size: 10pt">&#xa0;</td>
     <td colspan="1" style="text-align: center; font-size: 10pt">0</td>
     <td style="font-size: 10pt">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 64%; font-size: 10pt">Germany</td>
     <td style="font-size: 10pt">&#xa0;</td>
     <td colspan="1" style="text-align: center; font-size: 10pt">0</td>
     <td style="font-size: 10pt">&#xa0;</td>
     <td style="font-size: 10pt">&#xa0;</td>
     <td colspan="1" style="text-align: center; font-size: 10pt">2</td>
     <td style="font-size: 10pt">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our patents have expiration dates ranging from 2022 to 2038. We also owned approximately 24 registered United States trademarks or service marks as of December 31, 2020, with corresponding registered protection in Europe and Japan for the most important of these marks such as PROTO LABS, PROTOMOLD, FIRSTCUT, PROTOQUOTE, FIRSTQUOTE, PROTOFLOW and FINELINE, corresponding approved protection in Canada for PROTO LABS, FIRSTCUT and FINELINE, and corresponding registered protection in Australia, Canada and Mexico for PROTOMOLD. There can be no assurance that the steps we take to protect our proprietary rights will be adequate or that third parties will not infringe or misappropriate such rights. We have been subject to claims and expect to be subject to legal proceedings and claims from time to time in the ordinary course of our business. In particular, we may face claims from third parties that we have infringed their patents, trademarks or other intellectual property rights. Such claims, even if not meritorious, could result in the expenditure of significant financial and managerial resources. Any unauthorized disclosure or use of our intellectual property could make it more expensive to do business and harm our operating results.</p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Available Information</b></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our principal executive offices are located at 5540 Pioneer Creek Drive, Maple Plain, Minnesota 55359 and our telephone number is (763)&#xa0;479-3680. Our website address is www.protolabs.com. Information on our website does not constitute part of this Annual Report on Form 10-K or any other report we file or furnish with the SEC. We provide free access to various reports that we file with or furnish to the SEC through our website as soon as reasonably practicable after they have been filed or furnished. These reports include, but are not limited to, our Annual Reports on Form&#xa0;10-K, Quarterly Reports on Form&#xa0;10-Q, Current Reports on Form&#xa0;8-K and any amendments to these reports. Our SEC reports can be accessed through the investor relations section of our website.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    12
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The SEC maintains a website that contains reports, proxy and information statements, and other information regarding issuers that file information electronically with the SEC. The SEC&#x2019;s website is www.sec.gov.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Executive Officers of the Registrant</b></p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Set forth below are the names of our current executive officers, their ages, titles, the year first appointed as an executive officer, and employment for the past five years:</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 22.5pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(204, 238, 255);">
     <td style="vertical-align:top;width:14.5%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Victoria M. Holt</p> </td>
     <td style="vertical-align:bottom;width:5.5%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">63</p> </td>
     <td style="vertical-align:bottom;width:80%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">President, Chief Executive Officer and Director</p> </td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255);">
     <td style="vertical-align:top;width:14.5%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Robert Bodor</p> </td>
     <td style="vertical-align:bottom;width:5.5%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">48</p> </td>
     <td style="vertical-align:bottom;width:80%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Vice President/General Manager&#xa0;&#x2013;&#xa0;Americas</p> </td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255);">
     <td style="vertical-align:top;width:14.5%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">John A. Way</p> </td>
     <td style="vertical-align:bottom;width:5.5%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">48</p> </td>
     <td style="vertical-align:bottom;width:80%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Chief Financial Officer and Executive Vice President of Development</p> </td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255);">
     <td style="vertical-align:top;width:14.5%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Arthur R. Baker III</p> </td>
     <td style="vertical-align:bottom;width:5.5%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">53</p> </td>
     <td style="vertical-align:bottom;width:80%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Chief Technology Officer</p> </td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255);">
     <td style="vertical-align:top;width:14.5%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Bjoern Klaas</p> </td>
     <td style="vertical-align:bottom;width:5.5%;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">51</p> </td>
     <td style="vertical-align:bottom;width:80%;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Vice President/General Manager and Managing Director &#x2013;&#xa0;Europe, Middle East and Africa</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Executive officers of the Company are elected at the discretion of the board of directors with no fixed terms. There are no family relationships between or among any of the executive officers or directors of the Company.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In December 2020, we announced Dr. Bodor will succeed Ms. Holt&#xa0;as the Company&#x2019;s President and Chief Executive Officer effective&#xa0;March 1, 2021. Ms. Holt&#xa0;is retiring after leading the company for the past seven years. Ms. Holt will remain CEO until March 1, 2021. Following the transition, Ms. Holt is expected to remain with the Company as a consultant for a period of time. Ms. Holt will also remain as a member of the Board through her current term, which expires at the Company's 2021 annual meeting.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Victoria M. Holt</b></i>. Ms. Holt has been our President and Chief Executive Officer since February 2014. Prior to joining Proto Labs, Ms. Holt served as President and Chief Executive Officer of Spartech Corporation, a leading producer of plastic sheet, compounds and packaging products, from September 2010 until Spartech was purchased by PolyOne Corporation in March 2013. Ms. Holt also is a member of the Board of Directors of Waste Management, Inc. and Piper Sandler Companies.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Robert Bodor</b></i>. Dr.&#xa0;Bodor has served as our Vice President/General Manager - Americas since January 2015. From July 2013 to January 2015, Dr. Bodor served as our Chief Technology Officer. From December 2012 to June 2013, Dr. Bodor served as our Director of Business Development. Prior to joining Proto Labs, from January 2011 to December 2012, Dr. Bodor held several roles at Honeywell, most recently leading SaaS business offerings for Honeywell&#x2019;s Life Safety Division.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>John A. Way</b></i>. Mr.&#xa0;Way has served as our Chief Financial Officer and Executive Vice President of Development since December 2014. From September 2012 to September 2014, Mr. Way served as Chief Financial Officer for portfolio companies of two Private Equity Firms. From October 2002 to September 2012, Mr.&#xa0;Way worked in senior financial positions at several divisions within UnitedHealth Group, including Chief Financial Officer of Optum-Care, Medicare Advantage and OptumHealth.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Arthur R. Baker III</b></i>. Dr. Baker has been our Chief Technology Officer since May 2016. Prior to joining Proto Labs, Dr. Baker served as Chief Technology Officer of PaR Systems, a robotics and specialty machine tool builder. From 2005 to 2014, Dr. Baker held multiple positions at MTS Systems, including General Manager of the Test Division, Chief Technology Officer, and Vice President of Engineering and Operations. MTS Systems was a leader in mechanical testing and simulation systems for automotive, aerospace, medical, civil-seismic and general research.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Bjoern Klaas</b></i>. Mr. Klaas has led our Company&#x2019;s business in Europe, Middle East and Africa as the Vice President and Managing Director since December 2017. Prior to joining Proto Labs, Mr. Klaas held key positions with global polymer supplier PolyOne from 2012 to 2017, most recently as its Vice President and General Manager for its ColorMatrix Group headquartered in the United States. From 2008 to 2012, Mr. Klaas worked at Colorant-Chromatics, a global leader for high temperature polymer formulations, as the General Manager for the global business.</p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    13
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="item1a_riskfactors" title="item1a_riskfactors" href="#"></a>Item&#xa0;1A. Risk Factors</b></p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The following are the significant factors that could materially adversely affect our business, financial condition, or operating results, as well as adversely affect the value of an investment in our common stock. The risks described below are not the only risks facing our Company. Risks and uncertainties not currently known to us or that we currently deem to be immaterial also may materially adversely affect our business, financial condition and operating results.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;"><b>Risks Relating to Our Business</b></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>We face significant competition and expect to face increasing competition in many aspects of our business, which could cause our operating results to suffer.</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The market for custom parts manufacturing is fragmented and highly competitive. We compete for customers with a wide variety of custom parts manufacturers and methods. Some of our current and potential competitors include captive in-house product lines, other custom parts manufacturers, brokers of custom parts and alternative manufacturing vendors such as those utilizing 3D printing processes. Moreover, some of our existing and potential competitors are researching, designing, developing and marketing other types of products and product lines. We also expect that future competition may arise from the development of allied or related techniques for custom parts manufacturing that are not encompassed by our patents, from the issuance of patents to other companies that may inhibit our ability to develop certain products and from improvements to existing technologies. Furthermore, our competitors may attempt to adopt and improve upon key aspects of our business model, such as development of technology that automates much of the manual labor conventionally required to quote and manufacture custom parts, implementation of interactive web-based and automated user interface and quoting systems and/or building scalable operating models specifically designed for efficient custom production. Third-party CAD software companies may develop software that mold-makers, injection molders and CNC machine shops could use to compete with our business model. Additive manufacturers may develop stronger, higher temperature resins or introduce other improvements that could more effectively compete with us on part quality. We may also, from time to time, establish alliances or relationships with other competitors or potential competitors. To the extent companies terminate such relationships and establish alliances and relationships with our competitors, our business could be harmed.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Existing and potential competitors may have substantially greater financial, technical, marketing and sales, manufacturing, distribution and other resources and name recognition than us, as well as experience and expertise in intellectual property rights and operating within certain international locations, any of which may enable them to compete effectively against us.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Though we plan to continue to expend resources to develop new technologies, processes and product lines, we cannot assure you that we will be able to maintain our current position or continue to compete successfully against current and future sources of competition. Our challenge in developing new products is finding product lines for which our automated quotation and manufacturing processes offer an attractive value proposition, and we may not be able to find any new product lines with potential economies of scale similar to our existing product lines. If we do not keep pace with technological change and introduce new technologies, processes and product lines, the demand for our products and product lines may decline and our operating results may suffer.</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>We may not timely and effectively scale and adapt our existing technology, processes and infrastructure to meet the needs of our business.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">A key element to our continued growth is the ability to quickly and efficiently quote an increasing number of product developer and engineer submissions across geographic regions and to manufacture the related parts. This will require us to timely and effectively scale and adapt our existing technology, processes and infrastructure to meet the needs of our business. With respect to our websites and quoting technology, it may become increasingly difficult to maintain and improve their performance, especially during periods of heavy usage and as our solutions become more complex and our user traffic increases across geographic regions. Similarly, our manufacturing automation technology may not enable us to process the large numbers of unique designs and efficiently manufacture the related parts in a timely fashion to meet the needs of product developers and engineers as our business continues to grow. Any failure in our ability to timely and effectively scale and adapt our existing technology, processes and infrastructure could negatively impact our ability to retain existing customers and attract new customers, damage our reputation and brand, result in lost revenue, and otherwise substantially harm our business and results of operations.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 0; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>We may experience difficulties implementing our new e-commerce system and updates to our back-end systems.</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 0; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; text-indent: 27pt; font-family: Times New Roman; font-size: 10pt;">We are engaged in implementing a new e-commerce system. The e-commerce system is designed to improve our customer experience which will allow us to capitalize on the market opportunity and properly serve the long-term needs of our customers. We are updating back-end systems with standard software packages augmented by internally developed software to ensure the scalability of our architecture moving forward. These activities have required, and will continue to require, the investment of significant personnel and financial resources. We may not be able to successfully implement the e-commerce system without experiencing delays, increased costs and other difficulties. If we are unable to successfully design and implement the new e-commerce system and supporting architecture as planned, our financial positions, results of operations and cash flows could be negatively impacted. Additionally, if we do not effectively implement the new e-commerce system as planned or the back-end systems do not operate as intended, our ability to process orders, manufacture and ship parts, send invoices and track payments, fulfill contractual obligations or otherwise operate our business could be adversely affected. While we have invested significant resources in planning, project management, and training, additional and significant implementation issues may arise.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    14
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Economic uncertainty arising from the recent COVID-19 pandemic has adversely affected our business and results of operations and could continue to do so in the future.</b></i></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">On March 11, 2020, the World Health Organization declared the outbreak of the novel coronavirus (COVID-19) a pandemic. The COVID-19 pandemic and associated counter-acting measures implemented by governments around the world, as well as increased business uncertainty, has adversely affected our business and results of operations and could continue to do so in the future. The Company is monitoring the global COVID-19 pandemic, including any variants of the COVID-19 virus and the timing, availability and efficacy of the COVID-19 vaccines available in the countries in which the Company operates. The Company has taken steps to mitigate the risks to our employees, customers, suppliers and other stakeholders. The Company has been deemed an essential business and all of our global manufacturing operations have remained open. The current business environment and quickly evolving market conditions require significant management judgment to interpret and quantify the actual and potential impact on our assumptions about future financial performance and operating cash flows. To the extent that changes in the current business environment continue to impact our ability to achieve levels of forecasted operating results and cash flows, if our stock price were to trade below book value per share for an extended period of time and/or should other events occur indicating the carrying value of our assets might be impaired, we may be required to recognize impairment losses on goodwill, intangible and tangible assets.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 0pt;">&#xa0;</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><i><b>Numerous factors may cause us not to maintain the revenue growth that we have historically experienced.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Although our revenue has grown over the past&#xa0;five years from $298.1 million for the year ended December&#xa0;31, 2016 to $434.4 million for the year ended December 31, 2020, we may not be able to maintain our historical rate of revenue growth. We believe that our continued revenue growth will depend on many factors, a number of which are out of our control, including among others, our ability to:</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">retain and further penetrate existing customer companies, as well as attract new customer companies;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">consistently execute on custom part orders in a manner that satisfies product developers&#x2019;&#xa0;and engineers&#x2019;&#xa0;needs and provides them with a superior experience;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">develop new technologies or manufacturing processes and broaden the range of parts we offer;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">successfully execute on our international strategy and expand into new geographic markets;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">capitalize on product developer and engineer expectations for access to comprehensive, user-friendly e-commerce capabilities 24 hours per day, 7 days per week;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">increase the strength and awareness of our brand across geographic regions;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">respond to changes in product developer and engineer needs, technology and our industry;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">react to challenges from existing and new competitors; and</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">respond to an economic recession which negatively impacts manufacturers' ability to innovate and bring new products to market.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We cannot assure you that we will be successful in addressing the factors above and continuing to grow our business and revenue.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    15
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 0pt;"><i><b>Interruptions to, or other problems with, our website and interactive user interface, information technology systems, manufacturing processes or other operations could damage our reputation and brand and substantially harm our business and results of operations.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The satisfactory performance, reliability, consistency, security and availability of our websites and interactive user interface, information technology systems, manufacturing processes and other operations are critical to our reputation and brand, and to our ability to effectively service product developers and engineers. Any interruptions or other problems that cause any of our websites, interactive user interface or information technology systems to malfunction or be unavailable, or negatively impact our manufacturing processes or other operations, may damage our reputation and brand, result in lost revenue, cause us to incur significant costs seeking to remedy the problem and otherwise substantially harm our business and results of operations.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">A number of factors or events could cause such interruptions or problems, including among others: human and software errors, design faults, challenges associated with upgrades, changes or new facets of our business, power loss, telecommunication failures, fire, flood, extreme weather, political instability, acts of terrorism, war, break-ins and security breaches, contract disputes, labor strikes and other workforce-related issues, capacity constraints due to an unusually large number of product developers and engineers accessing our websites or ordering parts at the same time, and other similar events. These risks are augmented by the fact that our customers come to us largely for our quick-turn manufacturing capabilities and that accessibility and turnaround speed are often of critical importance to these product developers and engineers. We are dependent upon our facilities through which we satisfy all of our production demands and in which we house all of the computer hardware necessary to operate our websites and systems as well as managerial, customer service, sales, marketing and other similar functions, and we have not identified alternatives to these facilities or established fully redundant systems in multiple locations. However, we have back-up computing systems for each of our United States, European and Japanese operations. In addition, we are dependent in part on third parties for the implementation and maintenance of certain aspects of our communications and production systems, and therefore preventing, identifying and rectifying problems with these aspects of our systems is to a large extent outside of our control.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Moreover, the business interruption insurance that we carry may not be sufficient to compensate us for the potentially significant losses, including the potential harm to the future growth of our business that may result from interruptions in our product lines as a result of system failures.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>We store confidential customer&#xa0;information in our systems&#xa0;that, if&#xa0;breached or otherwise subjected to unauthorized access, may harm our reputation or brand or expose us to liability.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our system stores, processes and transmits our customers&#x2019; confidential information, including the intellectual property in their part designs and other sensitive data. We rely on encryption, authentication and other technologies licensed from third parties, as well as administrative and physical safeguards, to secure such confidential information. Any compromise of our information security could damage our reputation and brand and expose us to a risk of loss, costly litigation and liability that would substantially harm our business and operating results. We may not have adequately assessed the internal and external risks posed to the security of our company&#x2019;s systems and information and may not have implemented adequate preventative safeguards or take adequate reactionary measures in the event of a security incident. In addition, most states have enacted laws requiring companies to notify individuals and often state authorities of data security breaches involving their personal data. These mandatory disclosures regarding a security breach often lead to widespread negative publicity, which may cause our existing and prospective customers to lose confidence in the effectiveness of our data security measures. Any security breach, whether successful or not, would harm our reputation and brand and could cause the loss of customers.</p>
  <p style="margin: 0 22.2pt 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Aspects of our business are subject to privacy, data use and data security regulations, which may impact the way we use data to target customers.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Privacy and security laws and regulations may limit the use and disclosure of certain information and require us to adopt certain cybersecurity and data handling practices that may affect our ability to effectively market our services to current, past or prospective customers. In many jurisdictions consumers must be notified in the event of a data security breach, and such notification requirements continue to increase in scope and cost. The changing privacy laws in the United States, Europe and elsewhere&#x2014;including the General Data Protection Regulation (GDPR) in the European Union, which became effective May 25, 2018, and the California Consumer Privacy Act of 2018, which was enacted on June 28, 2018 and became effective on January 1, 2020&#x2014;create new individual privacy rights and impose increased obligations, including disclosure obligations, on companies handling personal data. The impact of these continuously evolving laws and regulations could have a material adverse effect on the way we use data to digitally market and pursue our customers.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Political and economic uncertainty arising from the outcome of the United Kingdom&#x2019;s referendum on its membership in the European Union could adversely affect our business and results of operations.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">On June 23, 2016, the United Kingdom (UK) held a referendum in which voters approved a withdrawal from the European Union (EU), commonly referred to as &#x201c;Brexit.&#x201d; The UK's withdrawal became effective on January 31, 2020. A transition period was in effect through December 31, 2020 while the UK and EU negotiated rules that will apply to their future relationship. It is possible that the level of economic activity in this region will be adversely impacted and that there will be increased regulatory and legal complexities, including those relating to tax, trade, security and employees. In addition, Brexit could lead to economic uncertainty, including significant volatility in global stock markets and currency exchange rates, which may adversely impact our business. To mitigate the potential impact of Brexit on the import and export of goods to and from the UK, the Company is establishing business processes with shipping entities, including obtaining Authorized Economic Operator certification. In addition, the Company is increasing inventory in the UK and EU in an effort to maintain inventory required to meet customer demand in the event of disruption in shipments. It is possible that these changes could adversely affect our business and results of operations.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    16
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Global economic conditions may harm our ability to do business, increase our costs and negatively affect our stock price.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The prospects for economic growth in the United States and other countries remain uncertain and could worsen. Economic concerns and other issues such as reduced access to capital for businesses may cause product developers and engineers to further delay or reduce the product development projects that our business supports. Given the continued uncertainty concerning the global economy, we face risks that may arise from financial difficulties experienced by our suppliers, product developers, and engineers and other related risks to our business.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 14.7pt; text-align: left; text-indent: -9pt;">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>We operate a global business that exposes us to additional risks.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We have established our operations in the United States, Europe and Japan and are seeking to further expand our international operations. As of December 31, 2020, we had sold products into approximately 60 countries. In addition to English, our website is available in British English, French, German, Italian, Japanese and Spanish. Our international revenue accounted for approximately 20%, 22% and 21% of our total revenue in the years ended December 31, 2020, 2019 and 2018, respectively. The future growth and profitability of our international business is subject to a variety of risks and uncertainties. Many of the following factors have adversely affected our international operations and sales to customers located outside of the United States and may again in the future:</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">difficulties in staffing and managing foreign operations, particularly in new geographic locations;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">challenges in providing solutions across a significant distance, in different languages and among different cultures;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">rapid changes in government, economic and political policies and conditions, political or civil unrest or instability, terrorism or epidemics, and other similar outbreaks or events;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">economic uncertainty, including significant volatility in global stock markets and currency exchange rates, resulting from Brexit;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">fluctuations in foreign currency exchange rates;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">differences in product developer and engineer preferences and means of procuring parts;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">compliance with and changes in foreign laws and regulations, as well as U.S. laws affecting the activities of U.S. companies abroad, including those associated with export controls, tariffs and embargoes, other trade restrictions and antitrust and data privacy concerns;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">different, complex and changing laws governing intellectual property rights, sometimes affording companies lesser protection in certain areas;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">differing&#xa0;levels of use of the Internet or 3D CAD software;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">seasonal reductions in business activity in certain parts of the world, particularly during the summer months in Europe and holiday season;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">higher costs of doing business internationally;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">interruptions resulting from any events affecting raw material supply or manufacturing capabilities abroad;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">protectionist laws and business practices that favor local producers and service providers;</p> </td>
    </tr>

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

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

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

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

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">restrictions imposed by local labor practices and laws on our business and operations;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">workforce uncertainty in countries where labor unrest is more common than in the United States;</p> </td>
    </tr>

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

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

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">increased payment risk and higher levels of payment fraud.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 27pt;">Our business depends on product developers&#x2019; and engineers&#x2019; demand for our product lines, the general economic health of current and prospective customers, and companies&#x2019; desire or ability to make investments in new products. A deterioration of global, regional or local political, economic or social conditions could affect potential customers in ways that reduce demand for our product lines, disrupt our manufacturing and sales plans and efforts or otherwise negatively impact our business. Acts of terrorism, wars, public health issues and increased energy costs could disrupt commerce in ways that could impair our ability to get products to our customers and increase our manufacturing and delivery costs. We have not undertaken hedging transactions to cover our foreign currency exposure, and changes in foreign currency exchange rates may negatively impact reported revenue and expenses. In addition, our sales are often made on unsecured credit terms, and a deterioration of political, economic or social conditions in a given country or region could reduce or eliminate our ability to collect accounts receivable in that country or region. In any of these events, our results of operations could be materially and adversely affected.</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    17
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>If a natural or man-made disaster strikes any of our manufacturing facilities, we will be unable to manufacture our products for a substantial amount of time and our sales will decline.</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We manufacture all of our products in 12 manufacturing facilities, located in Maple Plain, Minnesota; Rosemount, Minnesota; Plymouth, Minnesota; Brooklyn Park, Minnesota; Cary, North Carolina; Nashua, New Hampshire (3 facilities); Telford, United Kingdom; Feldkirchen, Germany; Eschenlohe, Germany; and Zama, Kanagawa, Japan. These facilities and the manufacturing equipment we use would be costly to replace and could require substantial lead time to repair or replace. Our facilities may be harmed by natural or man-made disasters, including, without limitation, earthquakes, floods, tornadoes, fires, hurricanes, tsunamis and nuclear disasters.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In the event any of our facilities are affected by a disaster, we may:</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">be unable to meet the shipping deadlines of our customers;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">experience disruptions in our ability to process submissions and generate quotations, manufacture and ship parts, provide marketing and sales support and customer service, and otherwise operate our business, any of which could negatively impact our business;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">be forced to rely on third-party manufacturers;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">need to expend significant capital and other resources to address any damage caused by the disaster; and</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">lose customers and be unable to regain those customers.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Although we possess insurance for damage to our property and the disruption of our business from casualties, this insurance may not be sufficient to cover all of our potential losses and may not continue to be available to us on acceptable terms, or at all.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;"><i><b>Any acquisition, strategic relationship, joint venture or investment could disrupt our business and harm our operating results and financial condition.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our business and our customer base have been built primarily through organic growth. However, from time to time, we may selectively pursue acquisitions, strategic relationships, joint ventures or investments that we believe may allow us to complement our growth strategy, increase market share in our current markets or expand into other markets, or broaden our technology, intellectual property or product line capabilities. For example, in April 2014, we acquired FineLine to enable us to offer our customers 3D printing manufacturing processes; in October 2015, we acquired Alphaform to enable us to expand our 3D printing capabilities in Europe; in November 2017, we acquired RAPID to enable us to offer our customers Sheet Metal and expand our CNC Machining&#xa0;processes; and in 2021 we acquired 3D Hubs, Inc. to provide our customers with on-demand access to a global network of premium manufacturing partners. We cannot forecast the number, timing or size of any future acquisitions or other similar strategic transactions, or the effect that any such transactions might have on our operating or financial results. We have limited experience engaging in these types of transactions. Such transactions may be complex, time consuming and expensive, and may present numerous challenges and risks including:</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">an acquired company, asset or technology not furthering our business strategy as anticipated;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">difficulties entering and competing in new product or geographic markets and increased competition, including price competition;</p> </td>
    </tr>

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

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

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">challenges in working with strategic partners and resolving any related disagreements or disputes;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">high valuation for a company, asset or technology, or changes in the economic or market conditions or assumptions underlying our decision to make an acquisition;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">significant problems or liabilities associated with acquired businesses, assets or technologies, including increased intellectual property and employment related litigation exposure;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">acquisition of a significant amount of goodwill, which could result in future impairment charges that would reduce our earnings; and</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">requirements to record substantial charges and amortization expense related to certain purchased intangible assets, deferred stock compensation and other items, as well as other charges or expenses.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    18
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Any one of these challenges or risks could impair our ability to realize any benefit from our acquisitions, strategic relationships, joint ventures or investments after we have expended resources on them, as well as divert our management&#x2019;s attention. Any failure to successfully address these challenges or risks could disrupt our business and harm our operating results and financial condition. Moreover, any such transaction may not be viewed favorably by investors or stakeholders.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In addition, from time to time we may enter into negotiations for acquisitions, relationships, joint ventures or investments that are not ultimately consummated. These negotiations could result in significant diversion of management time, as well as substantial out-of-pocket costs.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 14.7pt; text-align: left; text-indent: -18pt;"><i><b>Our success depends on our ability to deliver products and product lines that meet the needs of product developers and engineers and to effectively respond to changes in our industry.</b></i></p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">We derive almost all of our revenue from the manufacture and sale to product developers and engineers of quick-turn low volumes of custom parts for prototyping, support of internal manufacturing and limited quantity product release. Our business has been, and, we believe, will continue to be, affected by changes in product developer and engineering requirements and preferences, rapid technological change, new product and product line introductions and the emergence of new standards and practices, any of which could render our technology, products and product lines less attractive, uneconomical or obsolete. To the extent that our customers&#x2019; need for quick-turn parts decreases significantly for any reason, it would likely have a material adverse effect on our business and operating results and harm our competitive position. In addition, CAD simulation and other technologies may reduce the demand for physical prototype parts. Therefore, we believe that to remain competitive, we must continually expend resources to enhance and improve our technology, product offerings and product lines.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In particular, we plan to increase our research and development efforts and to continue to focus a significant portion of those efforts to further develop our technology in areas such as our interactive user interface and manufacturing processes, potentially introduce new manufacturing processes within the research and development initiative we refer to as Protoworks, and broaden the range of parts that we are able to manufacture. We believe successful execution of this part of our business plan is critical for our ability to compete in our industry and grow our business, and there are no guarantees we will be able to do so in a timely fashion, or at all. Broadening the range of parts we offer is of particular importance since limitations in manufacturability are the primary reason we are not able to fulfill many quotation requests. There are no guarantees that the resources devoted to executing on this aspect of our business plan will improve our business and operating results or result in increased demand for our products and product lines. Failures in this area could adversely impact our operating results and harm our reputation and brand. Even if we are successful in executing in these areas, our industry is subject to rapid and significant technological change, and our competitors may develop new technologies, processes and product lines that are superior to ours. Our research and development costs were approximately $36.9&#xa0;million, $32.7 million and $28.7&#xa0;million for the years ended December 31, 2020, 2019 and 2018, respectively, and there is no guarantee that these costs will enable us to maintain or grow our revenue profitability. Refer to Item 7. &#x201c;Management&#x2019;s Discussion and Analysis of Financial Condition and Results of Operations&#x201d; in this Annual Report on Form 10-K for additional discussion related to research and development costs.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Any failure to properly meet the needs of product developers and engineers or respond to changes in our industry on a cost-effective and timely basis, or at all, would likely have a material adverse effect on our business and operating results and harm our competitive position.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Our failure to meet our customers' expectations regarding quick turnaround time would adversely affect our business and results of operations.</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We believe many product developers and engineers are facing increased pressure from global competitors to be first to market with their finished products, often resulting in a need for quick turnaround of custom parts. We believe our ability to quickly quote, manufacture and ship custom parts has been an important factor in our results to date. There are no guarantees we will be able to meet product developers&#x2019; and engineers&#x2019; increasing expectations regarding quick turnaround time, especially as we increase the scope of our operations. If we fail to meet our customers&#x2019; expectations regarding turnaround time in any given period, our business and results of operations will likely suffer.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Our failure to meet our customers&#x2019; price expectations would adversely affect our business and results of operations.</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Demand for our product lines is sensitive to price. We believe our competitive pricing has been an important factor in our results to date. Therefore, changes in our pricing strategies can have a significant impact on our business and ability to generate revenue. Many factors, including our production and personnel costs and our competitors&#x2019; pricing and marketing strategies, can significantly impact our pricing strategies. If we fail to meet our customers&#x2019; price expectations in any given period, demand for our products and product lines could be negatively impacted and our business and results of operations could suffer.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Our failure to meet our customers' quality specifications would adversely affect our business and results of operations.</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We believe many product developers and engineers have a need for specific quality of quick-turn, on-demand custom parts. We believe our ability to create parts with the specifications of the product developers and engineers is an important factor in our results to date. If we fail to meet our customers&#x2019; specifications in any given period, demand for our products and product lines could be negatively impacted and our business and results of operations could suffer.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    19
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>The strength of our brand is important to our business, and any failure to maintain and enhance our brand would hurt our ability to retain and expand our customer base as well as further penetrate existing customers.</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Since our products and product lines are sold primarily through our websites, the success of our business depends upon our ability to attract new and repeat customers to our websites in order to increase business and grow our revenue. Customer awareness and the perceived value of our brand will depend largely on the success of our marketing efforts, as well as our ability to consistently provide quality custom parts within the required timeframes and positive customer experiences, which we may not do successfully. A primary component of our business strategy is the continued promotion and strengthening of our brand, and we have incurred and plan to continue to incur substantial expense related to advertising and other marketing efforts directed toward enhancing our brand. We have initiated marketing efforts through social media, but this method of marketing may not be successful and subjects us to a greater risk of inconsistent messaging and bad publicity. We may choose to increase our branding expense materially, but we cannot be sure that this investment will be profitable. If we are unable to successfully maintain and enhance our brand, this could have a negative impact on our business and ability to generate revenue.</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Our business depends in part on our ability to process a large volume of new part designs from a diverse group of product developers and engineers and successfully identify significant opportunities for our business based on those submissions.</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We believe the volume of new part designs we process and the size and diversity of our customer base give us valuable insight into the needs of our prospective customers. We utilize this industry knowledge to determine where we should focus our development resources. If the number of new part designs we process or the size and diversity of our customer base decrease, our ability to successfully identify significant opportunities for our business and meet the needs of product developers and engineers could be negatively impacted. In addition, even if we do continue to process a large number of new part designs and work with a significant and diverse customer base, there are no guarantees that any industry knowledge we extract from those interactions will be successfully utilized to help us identify significant business opportunities or better understand the needs of product developers and engineers.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>The loss of one or more key members of our management team or personnel, or our failure to attract, integrate and retain additional personnel in the future, could harm our business and negatively affect our ability to successfully grow our business.</b></i></p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We are highly dependent upon the continued service and performance of the key members of our management team and other personnel. The loss of any of these individuals, each of whom is &#x201c;at will&#x201d; and may terminate his or her employment relationship with us at any time, could disrupt our operations and significantly delay or prevent the achievement of our business objectives. We believe that our future success will also depend in part on our continued ability to identify, hire, train and motivate qualified personnel. A possible shortage of qualified individuals in the regions where we operate might require us to pay increased compensation to attract and retain key employees, thereby increasing our costs. In addition, we face intense competition for qualified individuals from numerous companies, many of whom have substantially greater financial and other resources and name recognition than us. We may be unable to attract and retain suitably qualified individuals who are capable of meeting our growing operational, managerial and other requirements, or we may be required to pay increased compensation in order to do so. Our failure to attract, hire, integrate and retain qualified personnel could impair our ability to achieve our business objectives.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>If we fail to grow our business as anticipated, our net sales, gross margin and operating margin will be adversely affected.</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We are attempting to grow our business substantially. To this end, we have made and expect to continue to make significant investments in our business, including investments in our infrastructure, technology, and marketing and sales efforts. These investments include dedicated facilities expansion and increased staffing, both domestic and international. If our business does not generate the level of revenue required to support our investment, our net sales and profitability will be adversely affected.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>If we are unable to manage our growth and expand our operations successfully, our reputation and brand may be damaged, and our business and results of operations may be harmed.</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Over the past several years, we have experienced rapid growth. For example, we have grown from 1,549 full-time employees as of January&#xa0;1, 2016 to 2,408 full-time employees as of December 31, 2020. We have expanded internationally, including establishing manufacturing operations in Europe in 2005 and Japan in 2009. In 2014, we expanded our product lines with 3D Printing through our acquisition of FineLine. In 2015, we expanded our manufacturing operations and our 3D Printing product lines in Europe through our acquisition of Alphaform. In 2017, we expanded our product lines to include Sheet Metal through our acquisition of RAPID. We expect this growth to continue and the number of countries and facilities from which we operate to increase in the future. Our ability to effectively manage our anticipated growth and expansion of our operations will require us to do, among other things, the following:</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">enhance our operational, financial and management controls and infrastructure, human resource policies, and reporting systems and procedures, in particular as we continue to operate as a global organization;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">effectively scale our operations, including accurately predicting the need for floor space, equipment, and additional&#xa0;staffing;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">successfully identify, recruit, hire, train, develop, maintain, motivate and integrate additional employees; and</p> </td>
    </tr>

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

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

   </tbody>
  </table>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">These enhancements and improvements will require significant capital expenditures and allocation of valuable management and employee resources. Furthermore, our growth, combined with the geographical dispersion of our operations, has placed, and will continue to place, a strain on our operational, financial and management infrastructure. Our future financial performance and our ability to execute on our business plan will depend, in part, on our ability to effectively manage any future growth and expansion. There are no guarantees we will be able to do so in an efficient or timely manner, or at all. Our failure to effectively manage growth and expansion could have a material adverse effect on our business, results of operations, financial condition, prospects, and reputation and brand, including impairing our ability to perform to our customers&#x2019; expectations.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    20
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>If our present single or limited source suppliers become unavailable or inadequate, our customer relationships, results of operations and financial condition may be adversely affected.</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We acquire substantially all of the manufacturing equipment and certain of our materials that are critical to the ongoing operation and future growth of our business from several third parties. We do not have long-term supply contracts with any of our suppliers and operate on a purchase-order basis. While most manufacturing equipment and materials for our products are available from multiple suppliers, certain of those items are only available from single or limited sources. Should any of our present single or limited source suppliers for manufacturing equipment or materials become unavailable or inadequate, or impose terms unacceptable to us such as increased pricing terms, we could be required to spend a significant amount of time and expense to develop alternate sources of supply, and we may not be successful in doing so on terms acceptable to us, or at all. Natural disasters, such as hurricanes, may affect our supply of materials, particularly resins, from time to time, and we may purchase larger amounts of certain materials in anticipation of future shortages or increases in pricing. In addition, if we were unable to find a suitable supplier for a particular type of manufacturing equipment or material, we could be required to modify our existing business processes and offerings to accommodate the situation. As a result, the loss of a single or limited source supplier could adversely affect our relationship with our customers and our results of operations and financial condition.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>We may not be able to adequately protect or enforce our intellectual property rights, which could impair our competitive position.</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our success and future revenue growth will depend, in part, on our ability to protect our intellectual property. We rely primarily on patents, licenses, trademarks and trade secrets, as well as non-disclosure agreements and other methods, to protect our proprietary technologies and processes globally. Despite our efforts to protect our proprietary technologies and processes, it is possible that competitors or other unauthorized third parties may obtain, copy, use or disclose our technologies and processes. We cannot assure you that any of our existing or future patents will not be challenged, invalidated or circumvented. As such, any rights granted under these patents may not provide us with meaningful protection. We may not be able to obtain foreign patents corresponding to our United States patents. Even if foreign patents are granted, effective enforcement in foreign countries may not be available. If our patents and other intellectual property do not adequately protect our technology, our competitors may be able to offer product lines similar to ours. Our competitors may also be able to develop similar technology independently or design around our patents. Any of the foregoing events would lead to increased competition and lower revenue or gross margin, which would adversely affect our net income.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>We may be subject to infringement claims.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We may be subject to intellectual property infringement claims from individuals, vendors and other companies who have acquired or developed patents in the fields of injection molding, CNC machining,&#xa0;3D printing, sheet metal fabrication or part production for purposes of developing competing products or for the sole purpose of asserting claims against us. Any claims that our products or processes infringe the intellectual property rights of others, regardless of the merit or resolution of such claims, could cause us to incur significant costs in responding to, defending and resolving such claims, and may prohibit or otherwise impair our ability to commercialize new or existing products. If we are unable to effectively defend our processes, our market share, sales and profitability could be adversely impacted.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Our failure to expand our intellectual property portfolio could adversely affect the growth of our business and results of operations.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Expansion of our intellectual property portfolio is one of the available methods of growing our revenue and our profits. This involves a complex and costly set of activities with uncertain outcomes. Our ability to obtain patents and other intellectual property can be adversely affected by insufficient inventiveness of our employees, by changes in intellectual property laws, treaties, and regulations, and by judicial and administrative interpretations of those laws, treaties and regulations. Our ability to expand our intellectual property portfolio could also be adversely affected by the lack of valuable intellectual property for sale or license at affordable prices. There is no assurance that we will be able to obtain valuable intellectual property in the jurisdictions where we and our competitors operate or that we will be able to use or license that intellectual property.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    21
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>We may be subject to product liability claims, which could result in material expense, diversion of management time and attention and damage to our business and reputation and brand.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The prototype parts we manufacture and the parts we manufacture in low volumes may contain undetected defects or errors that are not discovered until after the products have been installed and used by customers. This could result in claims from customers or others, damage to our business and reputation and brand, or significant costs to correct the defect or error.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We attempt to include provisions in our agreements with customers that are designed to limit our exposure to potential liability for damages arising from defects or errors in our products. However, it is possible that these limitations may not be effective as a result of unfavorable judicial decisions or laws enacted in the future.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The sale and support of our products entails the risk of product liability claims. Any product liability claim brought against us, regardless of its merit, could result in material expense, diversion of management time and attention, damage to our business and reputation and brand, and cause us to fail to retain existing customers or to fail to attract new customers.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Government regulation of the Internet and e-commerce is evolving, and unfavorable changes or failure by us to comply with these regulations could substantially harm our business and results of operations.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We are subject to general business regulations and laws as well as regulations and laws specifically governing the Internet and e-commerce. Existing and future laws and regulations may impede the growth of the Internet or other online services. These regulations and laws may cover taxation, restrictions on imports and exports, customs, tariffs, user privacy, data protection, pricing, content, copyrights, distribution, electronic contracts and other communications, consumer protection, the provision of online payment services, broadband residential Internet access and the characteristics and quality of products and product lines. It is not clear how existing laws governing issues such as property use and ownership, sales and other taxes, fraud, libel and personal privacy apply to the Internet and e-commerce, especially where these laws were adopted prior to the advent of the Internet and do not contemplate or address the unique issues raised by the Internet or e-commerce. Those laws that do reference the Internet are being interpreted by the courts and their applicability and reach are therefore uncertain. The costs of compliance with these regulations may increase in the future as a result of changes in the regulations or the interpretation of them. Further, any failures on our part to comply with these regulations may subject us to significant liabilities. Those current and future laws and regulations or unfavorable resolution of these issues may substantially harm our business and results of operations.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Changes in, or interpretation of, tax rules and regulations may impact our effective tax rate and future profitability.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We are a multinational company based in the United States and subject to tax in multiple tax jurisdictions, both domestic and abroad. Our future effective tax rates could be adversely affected by changes in statutory tax rates or interpretation of tax rules, including those set forth in the Tax Cuts and Jobs Act&#xa0;enacted in 2017,&#xa0;and regulations in jurisdictions in which we do business, changes in the amount of revenue or earnings in the countries with varying statutory tax rates, or by changes in the valuation of deferred tax assets and liabilities.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In addition, we are subject to audits and examinations of previously filed income tax returns by the Internal Revenue Service, or IRS, and other domestic and foreign tax authorities. We regularly assess the potential impact of such examinations to determine the adequacy of our provision for income taxes and have reserved for potential adjustments that may result from the current examinations. We believe such estimates to be reasonable; however, there is no assurance that the final determination of any examination will not have an adverse effect on our operating results and financial position.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>We may require additional capital to support business growth, and this capital might not be available on acceptable terms, if at all.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We intend to continue to make investments to support our business growth and may require additional funds to respond to business challenges, including the need to complement our growth strategy, increase market share in our current markets or expand into other markets, or broaden our technology, intellectual property or product line capabilities. Accordingly, we may need to engage in equity or debt financings to secure additional funds. If we raise additional funds through future issuances of equity or convertible debt securities, our existing shareholders could suffer significant dilution, and any new equity securities we issue could have rights, preferences and privileges superior to those of holders of our common stock. Any debt financing we secure in the future could involve restrictive covenants relating to our capital raising activities and other financial and operational matters, which may make it more difficult for us to obtain additional capital and to pursue business opportunities, including potential acquisitions. We may not be able to obtain additional financing on terms favorable to us, if at all. If we are unable to obtain adequate financing or financing on terms satisfactory to us when we require it, our ability to continue to support our business growth and to respond to business challenges could be significantly impaired, and our business may be harmed.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    22
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Our operating results and financial condition may fluctuate on a quarterly and annual basis.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our operating results and financial condition may fluctuate from quarter to quarter and year to year, and are likely to continue to vary due to a number of factors, some of which are outside of our control. In addition, our actual or projected operating results may fail to match our past performance. These events could in turn cause the market price of our common stock to fluctuate. If our operating results do not meet the expectations of securities analysts or investors, who may derive their expectations by extrapolating data from recent historical operating results, the market price of our common stock will likely decline.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our operating results and financial condition may fluctuate due to a number of factors, including those listed below and those identified throughout this &#x201c;Risk Factors&#x201d; section:</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">the development of new competitive systems or processes by others;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">the entry of new competitors into our market, whether by established companies or by new companies;</p> </td>
    </tr>

   </tbody>
  </table>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr>
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;">&#xa0;</td>
     <td>&#xa0;</td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">changes in the size and complexity of our organization, including our international operations;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">levels of sales of our products and product lines&#xa0;to new and existing customers;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">the geographic distribution of our sales;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">changes in product developer and engineer preferences or needs;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">changes in the amount that we invest to develop, acquire or license new technologies and processes, which we anticipate will generally increase and may fluctuate in the future;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">delays between our expenditures to develop, acquire or license new technologies and processes, and the generation of sales related thereto;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">our ability to timely and effectively scale our business during periods of sequential quarterly or annual growth;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">limitations or delays in our ability to reduce our expenses during periods of declining sequential quarterly or annual revenue;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">changes in our pricing policies or those of our competitors, including our responses to price competition;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">changes in the amount we spend in our marketing and other efforts;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">unexpected increases in expenses as compared to our related accounting accruals or operating plan;</p> </td>
    </tr>

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

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

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">general economic and industry conditions that affect customer demand and product development trends;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">interruptions to or other problems with our website and interactive user interface, information technology systems, manufacturing processes or other operations;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">changes in accounting rules and tax and other laws; and</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">plant shutdowns due to health or weather conditions.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Due to all of the foregoing factors and the other risks discussed in this &#x201c;Risk Factors&#x201d; section, you should not rely on quarter-to-quarter or year-to-year comparisons of our operating results as an indicator of future performance.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    23
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Our business involves the use of hazardous materials, and we and our suppliers must comply with environmental laws and regulations, which can be expensive and restrict how we do business.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our business involves the controlled storage, use and disposal of hazardous materials. We and our suppliers are subject to federal, state and local as well as foreign laws and regulations governing the use, manufacture, storage, handling and disposal of these hazardous materials. Although we believe that the safety procedures utilized by us and our suppliers for handling and disposing of these materials comply with the standards prescribed by these laws and regulations, we cannot eliminate the risk of accidental contamination or injury from these materials. In the event of an accident, state, federal or foreign authorities may curtail the use of these materials and interrupt our business operations. We do not currently maintain hazardous materials insurance coverage. If we are subject to any liability as a result of activities involving hazardous materials, our business and financial condition may be adversely affected and our reputation and brand may be harmed.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>If we are unable to meet quality standards applicable to our manufacturing and quality processes for the parts we manufacture, our business, financial condition or operating results could be harmed.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt;">As a manufacturer of CNC-machined and injection-molded custom parts, we conform to certain international standards, including International Organization for Standardization, or ISO, 9001:2015 for our injection molding facilities and the AS9001D standard for our CNC-machined facilities in Minnesota. In North Carolina, we conform to the ISO 9001:2015 standard for our plastics manufacturing and the AS9100D standard for our metals manufacturing. In New Hampshire, we conform to the ISO 9001:2015 for our sheet metal custom parts and the AS9100D standards for our CNC-machined custom parts. We also conform to international standard ISO 9001:2015 at our manufacturing facilities in Feldkirchen, Germany and Eschenlohe, Germany. Additionally, we conform to international standard ISO 13485 at our manufacturing facility in Eschenlohe, Germany and&#xa0;international standard ISO 14001 at our manufacturing facility in Feldkirchen, Germany. Lastly, we conform to international standards ISO 9001, ISO 14001 and ISO 27001 at our facilities in Japan. If any system inspection reveals that we are not in compliance with applicable standards, registrars may take action against us, including issuing a corrective action request or discontinuing our certifications. If any of these actions were to occur, it could harm our reputation as well as our business, financial condition and operating results.</p>
  <p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>We are subject to payment-related risks.</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We accept payments using a variety of methods, including credit card, customer invoicing, physical bank check and payment upon delivery. As we offer new payment options to our customers, we may be subject to additional regulations, compliance requirements and fraud risk. For certain payment methods, including credit and debit cards, we pay interchange and other fees, which may increase over time and raise our operating costs and lower profitability. We rely on third parties to provide payment processing services, including the processing of credit cards, debit cards or electronic checks, and it could disrupt our business if these companies become unwilling or unable to provide these services to us. We are also subject to payment card association operating rules, certification requirements and rules governing electronic funds transfers, which could change or be reinterpreted to make it difficult or impossible for us to comply. If we fail to comply with these rules or requirements, we may be subject to fines and higher transaction fees and lose our ability to accept credit and debit card payments from our customers, process electronic funds transfers, or facilitate other types of online payments, and our business and operating results could be adversely affected.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    24
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Risks Relating to Ownership of Our Common Stock</b></p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Our stock price has been and may continue to be volatile.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In the year ended December 31, 2020, our common stock traded as high as $203.88&#xa0;and as low as $63.19. The market for our common stock may become less active, liquid or orderly, which could depress the trading price of our common stock. Some of the factors, many of which are outside of our control, that may cause the market price of our common stock to fluctuate include:</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">fluctuations in our financial condition and operating results;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">our ability to retain and attract customers and increase net sales;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">pricing pressures due to competition or otherwise and changes in gross margins;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">changes in general economic and market conditions, economic uncertainty and changes in product development activity levels;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">announcements by us or our competitors of technological innovations or new product or product lines&#xa0;offerings or significant acquisitions;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">timing, effectiveness, and costs of expansion and upgrades of our offerings, systems and infrastructure;</p> </td>
    </tr>

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

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

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">success in entry into new markets and expansion efforts;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">the public&#x2019;s response to press releases or other public announcements by us or third parties, including our filings with the Securities and Exchange Commission&#xa0;and announcements relating to litigation;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">the projections we may provide to the public, any changes in these projections or our failure to meet these projections;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">the issuance of new or updated research or reports by any securities or industry analysts who follow our common stock, changes in analysts&#x2019; financial estimates or ratings, and failure of securities analysts to initiate or maintain coverage of our common stock;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">changes in the market valuations of similar companies;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">significant lawsuits, including patent or shareholder litigation;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">changes in laws or regulations applicable to us;</p> </td>
    </tr>

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

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

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">the sustainability of an active trading market for our common stock;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">future sales of our common stock by us or our shareholders, including sales by our officers, directors and significant shareholders;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">share price and volume fluctuations attributable to inconsistent trading levels of our shares; and</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">other events or factors, including those resulting from war, acts of terrorism, natural disasters or responses to these events.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In addition, the stock markets have experienced extreme price and volume fluctuations that have affected and continue to affect the market prices of equity securities of many companies. In the past, shareholders have instituted securities class action litigation following periods of market volatility. If we were to become involved in securities litigation, we could incur substantial costs and our resources and the attention of management could be diverted from our business.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    25
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>If securities or industry analysts publish inaccurate or unfavorable research or reports about our business, our stock price and trading volume could decline.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The trading market for our common stock depends, in part, on the research and reports that securities or industry analysts publish about us or our business. We do not have any control over these analysts. If one or more of the analysts who covers us downgrades our common stock, changes their opinion of our shares or publishes inaccurate or unfavorable research about our business, our stock price would likely decline. If one or more of these analysts ceases coverage of us or fails to publish reports on us regularly, demand for our common stock could decrease and we could lose visibility in the financial markets, which could cause our stock price and trading volume to decline.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Our failure to maintain proper and effective internal controls over financial reporting and otherwise comply with Section&#xa0;404 of the Sarbanes-Oxley Act or prevent or detect misstatements in our financial statements in the future could harm our business and cause a decrease in our stock price.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Ensuring that we have internal financial and accounting controls and procedures adequate to produce accurate financial statements on a timely basis is a costly and time-consuming effort that needs to be re-evaluated frequently. The Sarbanes-Oxley Act requires, among other things, that we maintain effective internal control over financial reporting and disclosure controls and procedures. In particular, we are required to perform annual system and process evaluation and testing of our internal control over financial reporting to allow management and our independent registered public accounting firm to report on the effectiveness of our internal control over financial reporting, as required by Section 404 of the Sarbanes-Oxley Act. If we are not able to comply with the requirements of Section 404 in the future, or if we fail to prevent or detect misstatements in the financial statements we include in our reports filed with the SEC, our business could be harmed and the market price of our common stock could decline.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Anti-takeover provisions in our charter documents and Minnesota law might discourage or delay acquisition attempts for us that you might consider favorable.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our Third Amended and Restated Articles of Incorporation, as amended, and Amended and Restated By-Laws contain provisions that may make the acquisition of our company more difficult without the approval of our board of directors. These provisions:</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">permit our board of directors to issue up to 10,000,000 shares of preferred stock, with any rights, preferences and privileges as our board may designate, including the right to approve an acquisition or other change in our control;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">provide that the authorized number of directors may be changed by resolution of the board of directors;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">provide that all vacancies, including newly created directorships, may, except as otherwise required by law, be filled by the affirmative vote of a majority of directors then in office, even if less than a quorum;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">provide that shareholders seeking to present proposals before a meeting of shareholders or to nominate candidates for election as directors at a meeting of shareholders must provide notice in writing in a timely manner, and also specify requirements as to the form and content of a shareholder&#x2019;s notice; and</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">do not provide for cumulative voting rights.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We are subject to the provisions of Section&#xa0;302A.673 of the Minnesota Statutes, which regulates business combinations. Section&#xa0;302A.673 generally prohibits any business combination by an issuing public corporation, or any of its subsidiaries, with an interested shareholder, which means any shareholder that purchases 10% or more of the corporation&#x2019;s voting shares within four years following the date the person became an interested shareholder, unless the business combination is approved by a committee composed solely of one or more disinterested members of the corporation&#x2019;s board of directors before the date the person became an interested shareholder.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">These anti-takeover provisions could discourage, delay or prevent a transaction involving a change in control of our company, even if doing so would benefit our shareholders. These provisions could also discourage proxy contests and make it more difficult for you and other shareholders to elect directors of your choosing and to cause us to take other corporate actions you desire.</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>We do not expect to pay any cash dividends for the foreseeable future.</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We have never declared or paid any cash dividends on our common stock, and we do not anticipate that we will pay any such cash dividends for the foreseeable future. We anticipate that we will retain all of our future earnings for use in the business and for general corporate purposes. Any determination to pay dividends in the future will be at the discretion of our board of directors and will depend upon results of operations, financial condition, contractual restrictions, restrictions imposed by applicable law and other factors our board of directors deems relevant.</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    26
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="item1b_unresolvedstaffcomments" title="item1b_unresolvedstaffcomments" href="#"></a>Item&#xa0;1B. Unresolved Staff Comments</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">None.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="item2_properties" title="item2_properties" href="#"></a>Item&#xa0;2. Properties</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We believe that our facilities are well maintained and of sufficient capacity to support our current operations. We have facilities in the following regions:</p>
  <p style="margin: 0 22.2pt 0 26.6pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>United States</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our corporate headquarters are located in Maple Plain, Minnesota in a facility we own encompassing approximately 95,000 square feet of office space. We also own a nearby facility encompassing approximately 35,000 square feet of manufacturing space. We own a facility in Rosemount, Minnesota that encompasses approximately 130,000 square feet of manufacturing and office space. We also own a facility in Plymouth, Minnesota that encompasses approximately 170,000 square feet of manufacturing and office space. In 2018, we purchased a facility in Brooklyn Park, Minnesota that encompasses approximately 215,000 square feet of manufacturing and office space.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We own a facility in Cary, North Carolina that encompasses approximately 77,000 square feet of manufacturing and office space.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In 2017, we purchased RAPID and assumed the leases of three facilities in Nashua, New Hampshire. The three facilities we lease total approximately 146,000 square feet of manufacturing and office space. The leases expire at various times from 2022 to 2023.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Europe</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our European operations are headquartered in Telford, United Kingdom in a facility we own encompassing approximately 178,000 square feet of office and manufacturing space.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We also lease office space in the United Kingdom; Mosbach, Germany; Le Bourget du Lac, France; Novara, Italy and Nacka, Sweden, for sales, customer service and technical support staff. The leases expire at various times from 2021 to 2025. In October 2015, we purchased Alphaform, headquartered in Feldkirchen (Munich), Germany. As a result of the acquisition, we lease manufacturing and office facilities encompassing approximately 60,000 square feet in Feldkirchen, Germany and approximately 22,000 square feet in Eschenlohe, Germany. The leases expire at various times from 2021 to 2028.</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Japan</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our Japan operations are headquartered in Zama, Kanagawa, Japan (southwest of Tokyo) in a leased facility encompassing approximately 96,000 square feet of office and manufacturing space. The lease expires in April 2023.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    27
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="item3_legalproceedings" title="item3_legalproceedings" href="#"></a>Item&#xa0;3. Legal Proceedings</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">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 this Annual Report on Form 10-K, 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.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="item4_minesafetydis" title="item4_minesafetydis" href="#"></a>Item&#xa0;4. Mine Safety Disclosures</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Not applicable.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    28
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="part2" title="part2" href="#"></a>PART II</b></p>
  <p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="item5_marketforrestrantscommonequity" title="item5_marketforrestrantscommonequity" href="#"></a>Item&#xa0;5. Market for Registrant&#x2019;s Common Equity, Related Stockholder Matters and Issuer Purchases of Equity Securities</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our common stock has traded on the New York Stock Exchange (NYSE) under the symbol &#x201c;PRLB&#x201d; since February&#xa0;24, 2012. Prior to that date, there was no public market for our common stock.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">As of February 10, 2021, we had 34 holders of record of our common stock. The actual number of shareholders is greater than this number of record holders, and includes shareholders who are beneficial owners, but whose shares are held in street name by brokers and other nominees.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We have never declared or paid any cash dividends on our capital stock and we do not intend to pay cash dividends on our common stock for the foreseeable future. Any future determination related to our dividend policy will be made at the discretion of our board of directors and will depend on then-existing conditions, including our financial condition, operating results, contractual restrictions, capital requirements, business prospects and other factors our board of directors may deem relevant.</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    29
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Performance Graph</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The following graph shows a comparison from December 31, 2015 through December 31, 2020&#xa0;of the cumulative total return for our common stock, the S&amp;P 500 Index and the Russell 2000 Index. We have selected the Russell 2000 Index because the Russell 2000 Index measures the performance of the small market capitalization segment of U.S. equity instruments and we are a member company included in the Russell 2000 Index. Such returns are based on historical results and are not intended to suggest future performance. Data for the S&amp;P 500 Index and the Russell 2000 Index assume reinvestment of dividends.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><img alt="performancegraph.jpg" src="performancegraph.jpg" /></p>
  <p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; 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: 12%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Index</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">12/31/15</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">06/30/16</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">12/31/16</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">06/30/17</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">12/31/17</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">06/30/18</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">12/31/18</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">06/30/19</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">12/31/19</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">06/30/20</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">12/31/20</p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Proto Labs, Inc.</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.00</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">90.38</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">80.62</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">105.59</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">161.72</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">186.76</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">177.09</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">182.16</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">159.44</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">176.59</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">240.85</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">S&amp;P 500</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.00</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">102.69</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">109.54</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">118.57</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">130.81</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">133.00</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">122.65</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">143.93</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">158.07</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">151.68</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">183.77</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Russell 2000</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.00</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">101.41</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">119.48</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">124.60</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">135.18</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">144.65</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">118.72</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">137.92</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">146.89</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">126.89</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">173.86</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    30
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Unregistered Sales of Equity Securities and Issuer Purchases of Equity Securities</b></p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 22.5pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">On 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 timing and amount of any share repurchases will be determined by our management based on market conditions and other factors. The term of the program runs through December 31, 2023.&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The Company had no repurchases in the fourth quarter of 2020. During the year ended December 31, 2020, we repurchased 199,614 shares at an average price of $73.54 per share for an aggregate purchase price of $14.7 million. We have $35.2 million remaining under this authorization.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="item6_selectedfinancialdata" title="item6_selectedfinancialdata" href="#"></a>Item&#xa0;6. Selected Financial Data</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The following tables set forth selected consolidated financial data for the periods and at the dates indicated. The selected consolidated statements of comprehensive income data for the years ended December 31, 2020, 2019 and 2018 and selected consolidated balance sheets data as of December 31, 2020 and 2019 are derived from our audited consolidated financial statements included in Item 8. &#x201c;Financial Statements and Supplementary Data&#x201d; of this Annual Report on Form 10-K. The selected consolidated statements of comprehensive income data for the years ended December&#xa0;31, 2017 and 2016 and selected consolidated balance sheet data as of December 31, 2018, 2017 and 2016 are derived from our audited consolidated financial statements not included in this report.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    31
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;The historical results presented below are not necessarily indicative of the results to be expected for any future period. You should read this selected consolidated financial data in conjunction with Item 7. &#x201c;Management&#x2019;s Discussion and Analysis of Financial Condition and Results of Operations,&#x201d; and the consolidated financial statements and related notes appearing in Item 8. &#x201c;Financial Statements and Supplementary Data&#x201d; of this Annual Report on Form 10-K.</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 22.5pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 22.5pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="18" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 40%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">(in thousands, except share and per share amounts)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2020</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2019</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2017</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2016</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#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>
     <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-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Consolidated Statements of Comprehensive Income Data</b></p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">434,395</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">458,728</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">445,596</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">344,490</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">298,055</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Cost of revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">216,568</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">223,438</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">206,917</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">150,648</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">131,118</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Gross profit</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">217,827</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">235,290</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">238,679</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">193,842</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">166,937</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

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

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Marketing and sales</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">69,309</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">72,976</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">68,533</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">56,856</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">46,131</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Research and development</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">36,940</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">32,692</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">28,735</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">23,560</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">22,388</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">General and administrative</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">51,742</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">49,766</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">52,513</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">41,200</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">36,651</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 27pt; font-family: &quot;Times New Roman&quot;, Times, serif">Total operating expenses</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">157,991</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">155,434</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">149,781</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">121,616</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">105,170</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Income from operations</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">59,836</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">79,856</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">88,898</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">72,226</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">61,767</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Other income, net</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,109</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,337</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,757</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,209</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,454</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Income before income taxes</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">62,945</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">81,193</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">91,655</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">74,435</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">64,221</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Provision for income taxes</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">12,078</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">17,538</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">15,067</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">22,657</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">21,514</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Net income</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">50,867</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">63,655</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">76,588</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">51,778</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">42,707</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; 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>
     <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-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Net income per share(1)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Basic</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1.90</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">2.37</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">2.84</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1.94</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1.62</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Diluted</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1.89</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">2.35</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">2.81</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1.93</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1.61</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

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

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Basic</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,737,425</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,866,985</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,982,614</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,647,610</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,365,173</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Diluted</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,896,357</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,049,423</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,278,816</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,845,071</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,564,639</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Other comprehensive income (loss) (net of tax)</b></p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Foreign currency translation adjustments</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,598</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,474</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(3,258</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">5,519</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(5,541</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Comprehensive income</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">54,465</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">65,129</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">73,330</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">57,297</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">37,166</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</p>
  <hr />
  <table cellpadding="0" cellspacing="0" style="width: 95%; text-indent: 0px; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;">
   <tbody>
    <tr style="font-size: 10pt; vertical-align: top;">
     <td style="width: 1%; font-size: 10pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><sup style="vertical-align:top;line-height:120%;font-size:pt">(1) </sup></p> </td>
     <td style="width: 99%; font-size: 10pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">See Note 3 of notes to Consolidated Financial Statements for an explanation of the method used to calculate net income per basic and diluted share attributable to common shareholders and weighted average shares outstanding of the years ended December 31, 2020, 2019 and 2018 respectively.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Stock-based compensation expense included in the statements of comprehensive income data above is as follows:</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="18" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 40%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">(in thousands)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2020</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2019</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2017</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2016</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#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>
     <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-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Stock options and grants</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">13,327</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">9,591</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">10,113</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">7,954</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">6,177</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Employee stock purchase plan</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,346</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,190</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">815</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">604</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">598</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Total stock-based compensation expense</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">14,673</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,781</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,928</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">8,558</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">6,775</td>
     <td style="width: 1%; padding-bottom: 3px; 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>
     <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-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Cost of revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">2,451</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">2,056</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,543</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">970</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">691</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

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

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Marketing and sales</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">3,121</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">2,632</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,942</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,429</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">977</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Research and development</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">2,440</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,851</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,517</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,091</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,396</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">General and administrative</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">6,661</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,242</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">5,926</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">5,068</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,711</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Total stock-based compensation expense</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">14,673</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,781</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,928</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">8,558</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">6,775</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</p>
  <p style="margin: 0; 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%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="18" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 40%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">(in thousands)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2020</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2019</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2017</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2016</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#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>
     <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-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Consolidated Balance Sheets Data</b></p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Cash and cash equivalents</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">127,603</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">125,225</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">85,046</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">36,707</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">68,795</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Working capital</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">191,748</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">188,838</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">162,628</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">121,249</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">134,357</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Total assets</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">744,204</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">673,667</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">618,985</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">518,738</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">414,241</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Total liabilities</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">99,848</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">87,877</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">77,488</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">57,523</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">34,408</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Total shareholders' equity</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">644,356</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">585,790</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">541,497</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">461,215</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">379,833</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</p>
  <hr />
  <p style="margin: 0; 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="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    32
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="item7_mdaa" title="item7_mdaa" href="#"></a>Item&#xa0;7. Management&#x2019;s Discussion and Analysis of Financial Condition and Results of Operations</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>The following discussion and analysis of our financial condition and results of operations should be read in conjunction with the consolidated financial statements and related notes included elsewhere in this Annual Report on Form 10-K. This discussion and analysis contains forward-looking statements that involve risks and uncertainties. Our actual results may differ materially from those anticipated in these forward- looking statements as a result of various factors, including those set forth under &#x201c;Risk Factors&#x201d; and elsewhere in this Annual Report on Form 10-K.</i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>&#xa0;</i></p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Overview</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We are an e-commerce driven digital manufacturer of quick-turn, on-demand injection-molded, CNC-machined, 3D-printed and sheet metal-fabricated custom parts for prototyping and short-run production. We provide&#xa0;custom parts&#xa0;to product developers and engineers worldwide, who are under increasing pressure to bring their finished products to market faster than their competition. We believe custom parts manufacturing has historically been an underserved market due to the inefficiencies inherent in the quotation, equipment set-up and non-recurring engineering processes required to produce custom parts. Our proprietary technology eliminates most of the time-consuming and expensive skilled labor conventionally required to quote and manufacture parts in low volumes, and our customers conduct nearly all of their business with us over the Internet. We target our product lines to the millions of product developers and engineers who use 3D CAD software to design products across a diverse range of end markets. Our primary manufacturing product lines currently include Injection Molding, CNC Machining, 3D Printing and Sheet Metal.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We have experienced significant growth since our inception. Since we first introduced our Injection Molding product line in 1999, we have steadily expanded the size and geometric complexity of the injection-molded parts we are able to manufacture, and we continue to extend the diversity of materials we are able to support. Similarly, since first introducing our CNC Machining product line in 2007, we have expanded the range of part sizes, design geometries and materials we can support. In 2014, we acquired FineLine Prototyping, Inc. (FineLine) to expand the number of process types we offer to include stereolithography (SL), selective laser sintering (SLS) and direct metal laser sintering (DMLS). In 2017, we acquired RAPID to expand the number of process types we offer to include sheet metal&#xa0;fabrication and expand our CNC machining capability. In 2019, we added Carbon DLS to our 3D printing processes, introduced precision color matching on Injection Molding parts and launched production capabilities for metal 3D printing. We also continually seek to enhance other aspects of our technology and manufacturing processes, including our interactive web-based and automated user interface and quoting system. We intend to continue to invest significantly to enhance our technology and manufacturing processes and expand the range of our existing capabilities with the aim of meeting the needs of a broader set of customers. As a result of the factors described above, many of our customers tend to return to Proto Labs to meet their ongoing needs, with approximately 93%, 92% and 91% of our revenue in 2020, 2019 and 2018, respectively, derived from existing customers.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We have established our operations in the United States, Europe and Japan, which we believe are three of the largest geographic markets where product developers and engineers are located. We entered the European market in 2005 and launched operations in Japan in late 2009. Our operations were further expanded in Europe through our acquisition of Alphaform in 2015 and the United States through our acquisition of RAPID in November 2017. As of December 31, 2020, we had sold products into approximately 60 countries. Our revenue outside of the United States accounted for approximately 20%, 22% and 21% of our consolidated revenue in the years ended December 31, 2020, 2019 and 2018, respectively. We intend to continue to expand our international sales efforts and believe opportunities exist to serve the needs of product developers and engineers in select new geographic regions.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We have grown our total revenue from $298.1 million in 2016 to $434.4 million in 2020. During this period, our operating expenses increased from $105.2 million in 2016 to $158.0 million in 2020. Our recent growth in revenue has been accompanied by increased cost of revenues and operating expenses. We expect to increase investment in our operations to support anticipated future growth as discussed more fully below.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In addition, we believe that a number of trends affecting our industry have affected our results of operations and may continue to do so. For example, we believe that many of our target product developer and engineer customers are facing three mega trends, which are disrupting long-term product growth models.&#xa0;We believe our customers are facing increased pressure to shorten product life-cycles, to&#xa0;embed products with connectivity driven by the internet of things technology, and to&#xa0;deliver products&#xa0;that are&#xa0;personalized and customized to unique customer specifications. We believe we continue to be well positioned to benefit from these trends, given our proprietary technology that enables us to automate and integrate the majority of activities involved in procuring custom parts. The COVID-19 pandemic has also impacted the manufacturing environment. For example, the pandemic accelerated the digitization of manufacturing as companies pivoted to a work-from-home and socially-distanced manufacturing plant environment. As a result, the adoption of e-commerce was accelerated, which allows opportunity for us to provide valuable solutions to manufacturers looking to build resiliency in their supply chains through fast, on-demand manufacturers. While our business may be positively affected by these trends, our results may also be favorably or unfavorably impacted by other trends that affect product developer and engineer orders for custom parts in low volumes, including, among others, economic conditions, changes in product developer and engineer preferences or needs, developments in our industry and among our competitors, and developments in our customers' industries. For a more complete discussion of the risks facing our business, see Part I, Item 1A. &#x201c;Risk Factors&#x201d; of this Annual Report on Form 10-K.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    33
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Key Financial Measures and Trends</b></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Revenue</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">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 custom 3D-printed parts. Sheet Metal revenue consists of sales of fabricated sheet metal custom parts. Our revenue is generated from a diverse customer base, with no single customer company representing more than 2% of our total revenue in 2020. Our historical and current efforts to increase revenue have been directed at gaining new customers and selling to our existing customer base by increasing marketing and selling activities, including:</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">the introduction of our 3D Printing product line through our acquisition of FineLine in 2014;</p> </td>
    </tr>

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

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

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

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

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

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

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">expanding the breadth and scope of our products by adding more sizes and materials to our offerings.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">During 2020, we served 40,267 unique product developers and engineers who purchased our products through our web-based customer interface, a decrease of 15.7% over the same period in 2019. 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. Steps taken by national and local governments to slow the spread of the virus, including business shutdowns and shelter in place orders, have hindered the ability and willingness of project developers and engineers to proceed with development and commercialization projects on the same scale as they have historically. At this time, it is difficult to predict the future given the current economic uncertainty and evolving market conditions.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">During 2019, we served&#xa0;47,774 unique product developers and engineers who purchased our products through our web-based customer interface, an increase of 3.9% over the same period in 2018.</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 32.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Cost of Revenue, Gross Profit and Gross Margin</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Cost of revenue consists primarily of raw materials, equipment depreciation, employee compensation including benefits and stock-based compensation, facilities costs and overhead allocations 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, but remain relatively constant as a percentage of total revenue.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our business model requires that we invest in our capacity well in advance of demand to ensure we can fulfill the expectations for quick delivery of our products to our customers.&#xa0;Therefore, during each of 2020, 2019 and 2018 we made significant investments in additional factory space, equipment,&#xa0;and infrastructure in the United States. We also made significant investments&#xa0;in infrastructure in Europe in 2020 and 2017 and&#xa0;significant investments in additional factory space in Japan in 2019 and 2016.&#xa0;We expect to continue to grow in future periods, which will result in the need for additional investments in factory space and equipment.&#xa0;We expect that these additional costs for factory and equipment expansion can be absorbed by revenue growth, and allow gross margins by product line&#xa0;to remain relatively consistent over time.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">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. Our gross profit and gross margin are affected by many factors, including our mix of revenue by product line,&#xa0;pricing, sales volume, manufacturing costs, the costs associated with increasing production capacity, the mix between domestic and foreign revenue sources and foreign exchange rates.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    34
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Operating Expenses</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">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: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our recent growth in operating expenses is mainly due to the launch of our Protolabs 2.0 project in the fourth quarter of 2020. Expenses that were previously capitalizable as part of the project were expensed after the system was placed in service in November 2020. 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: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><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. 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: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><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, software developed 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 Accounting Standards Codification (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: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><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. 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: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Other Income, Net</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">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: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Provision for Income Taxes</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Provision for income taxes is comprised of federal, state, local and foreign taxes based on pre-tax income. On December 22, 2017, the Tax Cuts and Jobs Act was signed into law in the United States. As a result, many provisions will affect our tax rate in future years. Some provisions, such as the reduction to the U.S. corporate tax rate from 35% to 21%, which began in 2018, reduced our effective tax rate in 2018 and subsequent years. Overall, our effective tax rate for 2020 and beyond will remain consistent with the current tax laws.</p>
  <p style="margin: 0 22.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    35
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Results of Operations</b></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">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.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt; margin-right: 0pt; margin-left: 0pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="width: 21%; text-align: center; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Year Ended</b></p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="width: 21%; text-align: center; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Year Ended</b></p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>

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

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

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">434,395</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">458,728</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">(24,333</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">(5.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">458,728</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">445,596</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">100.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">13,132</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">2.9</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Cost of revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">216,568</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">49.9</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">223,438</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">48.7</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(6,870</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(3.1</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">223,438</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">48.7</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">206,917</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">46.4</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">16,521</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">8.0</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Gross profit</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">217,827</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">50.1</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">235,290</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">51.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">(17,463</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">(7.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">235,290</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">51.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">238,679</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">53.6</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">(3,389</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">(1.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

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

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Marketing and sales</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">69,309</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">16.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">72,976</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">15.9</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">(3,667</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">(5.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">72,976</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">15.9</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">68,533</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">15.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">4,443</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">6.5</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Research and development</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">36,940</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">8.5</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">32,692</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">7.1</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">4,248</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">13.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">32,692</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">7.1</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">28,735</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">6.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">3,957</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">13.8</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">General and administrative</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">51,742</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">11.9</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">49,766</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">10.9</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,976</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4.0</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">49,766</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">10.9</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">52,513</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">11.8</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(2,747</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(5.2</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 27pt; font-family: &quot;Times New Roman&quot;, Times, serif">Total operating expenses</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">157,991</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">36.4</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">155,434</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">33.9</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,557</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1.6</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">155,434</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">33.9</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">149,781</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">33.6</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">5,653</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3.8</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Income from operations</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">59,836</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">13.8</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">79,856</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">17.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">(20,020</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">(25.1</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">79,856</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">17.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">88,898</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">20.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">(9,042</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">(10.2</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Other income, net</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,109</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.7</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,337</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.3</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,772</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">132.5</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,337</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.3</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,757</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.6</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(1,420</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(51.5</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Income before income taxes</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">62,945</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">14.5</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">81,193</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">17.7</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">(18,248</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">(22.5</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">81,193</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">17.7</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">91,655</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">20.6</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt;">(10,462</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt;">(11.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Provision for income taxes</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">12,078</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; 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-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">17,538</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3.8</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(5,460</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(31.1</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">17,538</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3.8</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">15,067</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3.4</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,471</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">16.4</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 22%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Net income</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">50,867</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">11.7</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">63,655</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">13.9</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(12,788</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(20.1</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%)</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">63,655</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">13.9</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">76,588</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">17.2</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 4%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(12,933</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 3%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(16.9</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%)</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Stock-based compensation expense included in the statements of comprehensive income data above is as follows:</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-size: 10pt; margin-right: 5%; margin-left: 5%;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="10" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Year Ended December 31,</b></p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
    </tr>

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

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Stock options and grants</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">13,327</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">9,591</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">10,113</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

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

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Total stock-based compensation expense</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">14,673</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,781</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,928</td>
     <td style="width: 1%; padding-bottom: 3px; 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>
    </tr>

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

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

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Marketing and sales</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">3,121</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">2,632</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,942</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Research and development</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">2,440</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,851</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,517</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">General and administrative</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">6,661</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,242</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">5,926</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Total stock-based compensation expense</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">14,673</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,781</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,928</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i style="font-size: 10pt;"><b>Comparison of Years Ended </b></i><i><b>December 31, 2020</b></i><i style="font-size: 10pt;"><b>&#xa0;and </b></i><b><i>2019</i></b></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Revenue</i></p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Revenue by reportable segment and the related changes for 2020&#xa0;and 2019 is summarized as follows:</p>
  <hr />
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>

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

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

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">United States</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">345,708</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">79.6</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">360,205</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">78.5</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">(14,497</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">(4.0</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%)</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Europe</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">74,796</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">17.2</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">82,805</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">18.1</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">(8,009</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">(9.7</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Japan</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">13,891</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3.2</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">15,718</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3.4</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(1,827</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(11.6</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Total revenue</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">434,395</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; 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="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">458,728</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; 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="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(24,333</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(5.3</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%)</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our revenue decreased $24.3 million, or 5.3%, for 2020&#xa0;compared with 2019. By reportable segment, revenue in the United States decreased $14.5 million, or 4.0%, for 2020&#xa0;compared with 2019. Revenue in Europe decreased $8.0 million, or 9.7%, for 2020&#xa0;compared with 2019. Revenue in Japan decreased $1.8 million, or 11.6%, for 2020&#xa0;compared with 2019.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    36
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our revenue decline in 2020&#xa0;was the result of a decrease in the volume of product developers and engineers we served. During 2020, we served 40,267 unique product developers and engineers, a decrease of 15.7% over 2019. 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. Steps taken by national and local governments to slow the spread of the virus, including business shutdowns and shelter in place orders, have hindered the ability and willingness of project developers and engineers to proceed with development and commercialization projects on the same scale as they have historically. At this time, it is difficult to predict the future given the current economic uncertainty and evolving market conditions.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The decrease in product developers served led to a reduction in overall order activity as a result of the economic uncertainty created by the COVID-19 pandemic, which in turn resulted in a decrease in revenue. International revenue was positively impacted by $1.0 million in 2020&#xa0;compared to 2019&#xa0;as a result of foreign currency movements, primarily the strengthening of the Euro relative to the&#xa0;United States dollar.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Revenue by product line and the related changes for 2020&#xa0;and 2019 is summarized as follows:</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="width: 37%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Year Ended December 31,</b></p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>

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

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

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>

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

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Injection Molding</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">217,992</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">50.2</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">217,415</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">47.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">577</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">0.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">%</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">CNC Machining</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">131,587</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">30.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">155,473</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">33.9</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">(23,886</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">(15.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">3D Printing</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">62,502</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">14.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">61,352</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">13.4</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,150</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">1.9</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Sheet Metal</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">18,838</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">4.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">21,000</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">4.6</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">(2,162</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt;">(10.3</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Other Revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,476</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.8</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,488</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.7</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(12</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(0.3</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 28%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Total revenue</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">434,395</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; 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="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">458,728</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; 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="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(24,333</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 9%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(5.3</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">%)</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">By product line, our revenue decline was driven by a 15.4% decrease in CNC Machining revenue, a 10.3% decrease in Sheet Metal revenue, and a 0.3% decrease in Other revenue, which was partially offset by a 0.3% increase in Injection Molding revenue and a 1.9% increase in 3D Printing revenue in each case for 2020&#xa0;compared with 2019.</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Cost of Revenue, Gross Profit and Gross Margin</i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Cost of Revenue.</i> Cost of revenue decreased $6.9 million, or 3.1%, for 2020&#xa0;compared to 2019, which was less than the rate of revenue decrease of 5.3% for 2020&#xa0;compared to 2019. The decreases were driven by raw material and production cost decreases of $7.1 million and personnel and related cost decreases of $3.3 million, which were partially offset by equipment and facility-related cost increases of $3.5 million. The increases in equipment and facility-related costs are primarily driven by past investments which will support increased sales volumes in certain product lines and future growth of the business.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Gross Profit and Gross Margin.</i> Gross profit decreased from $235.3 million in 2019 to $217.8 million in 2020&#xa0;primarily due to a decrease in revenue. Gross margin decreased from 51.3% of revenue in 2019 to 50.1% of revenue in 2020&#xa0;due to the fixed cost structure of our facilities and equipment supporting lower revenue this year and the timing and mix of revenue.</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>&#xa0;</i></p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Operating Expenses</i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Marketing and Sales.</i> Marketing and sales expense decreased $3.7 million, or 5.0%, for 2020&#xa0;compared to 2019 due to a decrease in marketing program costs of $3.1 million which were primarily driven by reduced travel and a transition to virtual trade shows, as well as a decrease in personnel and related costs of $0.6 million.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Research and Development.</i> Our research and development expense increased $4.2 million, or 13.0%, for 2020&#xa0;compared to 2019 due to personnel and related cost increases of $4.3 million driven by the launch of our Protolabs 2.0 system. These costs were partially offset by a decrease in administrative and depreciation costs of $0.1 million.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>General and Administrative.</i> Our general and administrative expense increased $2.0 million, or 4.0%, for 2020&#xa0;compared to 2019 due to stock-based compensation cost increases of $2.4 million, amortization cost increases of $0.3 million, personnel and related cost increases of $0.5 million and professional service cost increases of $0.3 million, which were partially offset by administrative cost decreases of $1.5 million.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    37
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Income from Operations</i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Income from operations decreased $20.0 million, or 25.1%, for 2020&#xa0;compared with 2019. By reportable segment, income from operations for the United States and Europe decreased 9.1% and 22.4%, respectively, and loss from operations and expenses included in Corporate Unallocated and Japan increased 15.6% for 2020&#xa0;compared with 2019. The decrease in income from operations is primarily driven by the reduction in volume and an increase in operating expenses related to the Protolabs 2.0 launch in the fourth quarter of 2020.</p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Other Income, Net and Provision for Income Taxes</i></p>
  <p style="margin: 0 14.7pt; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Other Income, Net.</i> We recognized other income, net of $3.1 million in 2020, an increase of $1.8 million compared to other income, net of $1.3 million for 2019. Other income, net for 2020&#xa0;primarily consisted of $1.4 million in interest income on investments and a $1.5 million gain on foreign currency. Other income, net for 2019 primarily consisted of $2.1 million in interest income on investments, which was partially offset by a $0.8 million loss on foreign currency.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Provision for Income Taxes.</i> Our income tax provision decreased by $5.5 million for 2020&#xa0;compared to 2019. The decrease in the provision is primarily due to lower taxable income and an increase in tax benefits from the vesting of restricted stock and exercise of stock options. This decrease was coupled with an increase in the research and development tax credit.&#xa0;Our effective tax rate of 19.2% for 2020 decreased 2.4% compared to 21.6% for the same period in 2019.</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Comparison of Years Ended December 31, 2019</b></i><i><b>&#xa0;and </b></i><i><b>2018</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#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: 18pt;">For a comparison of our results of operations for fiscal years ended December 31, 2019 and December 31, 2018, see "Part II, Item 7 Management's Discussion and Analysis of Financial Condition and Results of Operations" of our Form 10-K for the fiscal year ended December 31, 2019, filed with the SEC on February 26, 2020.</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Selected Quarterly Results of Operations Data</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The following tables set forth selected unaudited quarterly results of operations data for 2020&#xa0;and 2019. This unaudited quarterly information has been prepared on the same basis as our annual audited consolidated financial statements appearing elsewhere in this Annual Report on Form 10-K and includes all adjustments, consisting only of normal recurring adjustments, that we consider necessary to present fairly the financial information for the fiscal quarters presented. The quarterly data should be read in conjunction with our selected financial data and consolidated financial statements and the related notes appearing elsewhere in this Annual Report on Form 10-K. Operating results for any quarter are not necessarily indicative of results for a full-year period, and the historical results presented below are not necessarily indicative of the results to be expected in any future period.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="30" style="width: 57%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Three Months Ended</b></p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">(in thousands, except share and per share amounts)</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Dec. 31, 2020</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Sep. 30, 2020</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Jun. 30, 2020</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Mar. 31, 2020</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Dec. 31, 2019</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Sep. 30, 2019</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Jun. 30, 2019</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Mar. 31, 2019</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="30" style="width: 57%; text-align: center; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">(unaudited)</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Consolidated Statements of Comprehensive Income Data:</b></p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: left; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">105,208</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">107,504</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">106,575</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">115,108</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">111,889</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">117,455</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">115,932</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">113,452</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Cost of revenue</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">52,580</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">52,861</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">54,119</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">57,008</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">55,311</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">57,839</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">55,696</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">54,592</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Gross profit</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">52,628</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">54,643</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">52,456</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">58,100</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">56,578</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">59,616</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">60,236</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">58,860</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

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

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Marketing and sales</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">17,488</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">16,705</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">16,936</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">18,180</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">17,510</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">17,604</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">19,285</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">18,577</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Research and development</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">11,390</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">7,915</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">8,648</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">8,987</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">8,151</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">8,359</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">8,169</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">8,013</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">General and administrative</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">12,759</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">12,354</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">12,521</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">14,108</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">11,355</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">12,380</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">13,209</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">12,822</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 27pt; font-family: &quot;Times New Roman&quot;, Times, serif">Total operating expenses</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">41,637</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">36,974</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">38,105</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">41,275</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">37,016</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">38,343</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">40,663</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">39,412</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Income from operations</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">10,991</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">17,669</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">14,351</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">16,825</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">19,562</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">21,273</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">19,573</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">19,448</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Other income (expense), net</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">560</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">728</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">767</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,054</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(229</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">228</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,125</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">213</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Income before income taxes</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">11,551</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">18,397</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">15,118</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">17,879</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">19,333</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">21,501</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">20,698</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">19,661</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Provision for income taxes</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,972</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,700</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2,511</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,895</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,147</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,709</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,532</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">4,150</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Net income</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">9,579</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">14,697</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">12,607</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">13,984</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">15,186</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">16,792</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">16,166</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">15,511</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>

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

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Basic</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.36</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.55</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.47</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.52</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.57</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.63</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.60</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.58</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Diluted</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.36</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.55</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.47</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.52</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.56</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.62</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.60</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 5%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">0.57</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>

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

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Basic</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,775,279</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,736,709</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,660,498</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,776,806</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,777,536</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,846,030</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,875,153</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,963,366</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 36%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; margin-left: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif">Diluted</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,976,582</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,886,433</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,760,866</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,929,640</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">26,945,927</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,005,341</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,041,422</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 5%; text-align: right; font-size: 10pt; margin-left: 0pt;">27,177,039</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    38
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Liquidity and Capital Resources</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Cash Flows</i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The following table summarizes our cash flows for the years ended December 31, 2020, 2019 and 2018:</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-size: 10pt; margin-right: auto; margin-left: 27pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td colspan="10" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>

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

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

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

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Net cash used in investing activities</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">(95,473</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">(44,303</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 14%; text-align: right; font-size: 10pt; margin-left: 0pt;">(63,281</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

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

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

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Net increase in cash and cash equivalents</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">2,378</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">40,179</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">48,339</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Sources of Liquidity</i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>&#xa0;</i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We finance our operations and capital expenditures through cash flow from operations. We had cash and cash equivalents of $127.6 million as of December 31, 2020, an increase of $2.4 million from December 31, 2019. The increase in our cash was due primarily to cash generated through operations, partially offset by investing activity and repurchases of common stock. We had cash and cash equivalents of $125.2 million as of December 31, 2019, an increase of $40.2 million from December 31, 2018. The increase in our cash was due primarily to cash generated through operations, partially offset by investing activity and repurchases of common stock. We had cash and cash equivalents of $85.0 million as of December 31, 2018, an increase of $48.3 million from December&#xa0;31, 2017. The increase in our cash was due primarily to cash generated through operations.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">As of December 31, 2020, the amount of cash and cash equivalents held by foreign subsidiaries was $23.4 million. Our intent is to continue to permanently reinvest these funds outside the U.S. and our current plans do not demonstrate a need to repatriate them to fund our domestic operations. We believe that our existing cash and cash equivalents together with cash generated from operations will be sufficient to meet our working capital expenditure requirements for at least the next 12 months.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Cash Flows from Operating Activities</i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Cash flow from operating activities of $107.0&#xa0;million during 2020&#xa0;primarily consisted of net income of $50.9 million, adjusted for certain non-cash items, including depreciation and amortization of $32.6 million, stock-based compensation expense of $14.7 million and deferred taxes of $7.6 million and changes in operating assets and liabilities and other items totaling $1.3 million. The cash flow from operating activities during 2020&#xa0;compared to 2019 decreased $9.1 million due to decreases in net income of $12.8 million and changes in operating assets and liabilities and other items of $3.8 million, which were partially offset by increases in stock-based compensation expenses of $3.9 million, increases in deferred taxes of $1.5 million, increases in depreciation and amortization of $1.7 million driven by an increase in capital investments and increases in amortization of held-to-maturity securities of $0.4 million.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Cash flow from operating activities of $116.1 million during 2019 primarily consisted of net income of $63.7 million, adjusted for certain non-cash items, including depreciation and amortization of $30.9 million, stock-based compensation expense of $10.8 million and deferred taxes of $6.1 million and changes in operating assets and liabilities and other items totaling $4.3 million. The cash flow from operating activities during 2019 compared to 2018 decreased $6.8 million due to decreases in net income of $12.9 million and deferred taxes of $5.8 million, which were partially offset by increases in depreciation and amortization of $4.1 million driven by an increase in capital investments and changes in operating assets and liabilities and other items of $7.8 million.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    39
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Cash Flows from Investing Activities</i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Cash used in investing activities was $95.5 million for the year ended December 31, 2020, consisting of $47.0 million for the purchase of property, equipment and other capital assets, $113.2 million for the purchase of marketable securities and $3.0 in other investing activities, which were partially offset by $67.7 million in proceeds from maturities of marketable securities.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Cash used in investing activities was $44.3 million for the year ended December 31, 2019, consisting of $62.2 million for the purchase of property, equipment and other capital assets, $46.4 million for the purchase of marketable securities and $4.0 in other investing activities, which were partially offset by $68.3 million in proceeds from maturities of marketable securities.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i>Cash Flows from Financing Activities</i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 27pt;">Cash used in financing activities was $10.7 million for the year ended December 31, 2020, consisting of $14.7 million in repurchases of common stock, $3.4&#xa0;million in purchases of shares withheld for tax obligations associated with equity transactions and $0.2 million in principal repayments of finance lease obligations, partially offset by $7.6&#xa0;million in proceeds from exercises of stock options.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Cash used in financing activities was $31.6 million for the year ended December 31, 2019, consisting of $33.5 million in repurchases of common stock, and $2.5 million in purchases of shares withheld for tax obligations associated with equity transactions, partially offset by $4.4 million in proceeds from exercises of stock options.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Operating and Capital Expenditure Requirements</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We believe, based on our current operating plan, that our cash balances and cash generated through operations and interest income will be sufficient to meet our anticipated cash requirements through at least the next 12 months. From time to time we may seek to sell equity or convertible debt securities or enter into credit facilities. The sale of equity and convertible debt securities may result in dilution to our shareholders. If we raise additional funds through the issuance of convertible debt securities or enter into credit facilities, these securities and debt holders could have rights senior to those of our common stock, and this debt could contain covenants that would restrict our operations. We may require additional capital beyond our currently forecasted amounts. Any such required additional capital may not be available on terms acceptable to us, or at all.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our future capital requirements will depend on many factors, including the following:</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">the revenue growth in&#xa0;Injection Molding,&#xa0;CNC Machining, 3D Printing&#xa0;and Sheet Metal product lines;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">costs of operations, including costs relating to expansion and growth;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">the emergence of competing or complementary technological developments;</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">the costs of filing, prosecuting, defending and enforcing any patent claims and other intellectual product rights, or participating in litigation-related activities; and</p> </td>
    </tr>

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

    <tr style="vertical-align: top;">
     <td style="width: 27pt;">&#xa0;</td>
     <td style="width: 27pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#x2022;</p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">the acquisition of businesses, products and technologies, although we currently have no commitments or agreements relating to any of these types of transactions.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our recent annual capital expenditures have varied between 10% and 20% of annual revenue. We believe future growth capital expenditures, excluding any expenditures for buildings and maintenance capital we might purchase for our operations, are likely to vary between approximately 8% and 12% of annual revenue.</p>
  <p style="margin: 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    40
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Contractual Obligations</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">As of December 31, 2020, our contractual obligations and the effect such obligations are expected to have on our liquidity and cash flows in future periods were as follows:</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-size: 10pt; margin-right: 5%; margin-left: 5%;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="text-align: center; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Payment Due by Period</b></p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 30%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">(in thousands)</p> </td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Total</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Less than 1 Year</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>1-3 Years</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>3-5 Years</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>More than 5 Years</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#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>
     <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-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Operating leases</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt;">11,406</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt;">3,915</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt;">5,246</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt;">1,486</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; margin-left: 0pt;">759</td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt">Finance leases</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">2,493</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">561</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">1,932</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">-</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 11%; text-align: right; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">-</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Total</p> </td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">13,899</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">4,476</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">7,178</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">1,486</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; 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: 11%; text-align: right; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">759</td>
     <td style="width: 1%; padding-bottom: 3px; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The table above reflects only payment obligations that are fixed and determinable. Our commitments for operating leases relate to three of our United States manufacturing facilities; our European sales, customer service and technical support offices and certain vehicles and equipment;&#xa0;manufacturing and office facilities located in Germany and certain vehicles and equipment; and our Japan facility and certain vehicles. Our commitment for financing leases relate to certain equipment in the United States.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Financing Arrangements</b></i></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;&#xa0;</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We had no financing arrangements as of December 31, 2020&#xa0;and 2019.</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b style="font-size: 10pt;">Inflation</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We experience normal inflation and changing prices, primarily on our production materials and labor. In 2020&#xa0;and 2019, wage inflation contributed to our lower gross margin. In 2018, we do not believe inflation and changing prices had a material effect on our financial condition.&#xa0;</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Off-Balance Sheet Arrangements</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">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: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Critical Accounting Policies and Use of Estimates</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The discussion and analysis of our financial condition and results of operations is based upon our consolidated financial statements, which have been prepared in accordance with accounting principles generally accepted in the United States. The preparation of these financial statements requires us to make estimates, judgments and assumptions that affect the reported amount of assets, liabilities, revenue, expenses and related disclosures. On an ongoing basis, we evaluate our estimates, including those related to revenue recognition, goodwill, capitalized software costs, other intangible assets, stock-based compensation, and income taxes. We base our estimates of the carrying value of certain assets and liabilities on historical experience and on various other assumptions that we believe to be reasonable under the circumstances. In many cases, we could reasonably have used different accounting policies and estimates. In some cases, changes in the accounting estimates are reasonably likely to occur from period to period. Management has discussed the development, selection and disclosure of these estimates with the audit committee of our board of directors. Our actual results may differ significantly from these estimates under different assumptions or conditions.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We believe the following critical accounting policies affect our more significant judgments used in the preparation of our consolidated financial statements. See the Notes to Consolidated Financial Statements included in Item 8. &#x201c;Financial Statements and Supplementary Data&#x201d; in this Annual Report on Form 10-K for additional information about these critical accounting policies, as well as a description of our other accounting policies.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    41
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Revenue Recognition</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We recognize revenue in accordance with ASC 606, <i>Revenue from Contracts with Customers</i>. We manufacture custom parts to specific customer orders&#xa0;that have no alternative use to us, and we believe there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these two criteria, we will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations using the estimated total time necessary to complete the parts per the customer's order and an estimate of inventory and production costs incurred to date. The majority of our CNC machining, 3D printing, and sheet metal contracts have a single performance obligation. The majority of our injection molding contracts have multiple performance obligations including one obligation to produce the mold and a second obligation to produce parts. For injection molding contracts with multiple performance obligations, we allocate revenue to each performance obligation based on its relative standalone selling price. We generally determine standalone selling price based on the price charged to customers.</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 32.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Goodwill</b></i></p>
  <p style="margin: 0 22.2pt 0 26.6pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We recognize goodwill in accordance with ASC 350, <i>Intangibles&#x2014;Goodwill and Other</i>. Goodwill is the excess of cost of an acquired entity over the amounts assigned to assets acquired and liabilities assumed in a business combination. Goodwill is not amortized. Goodwill is tested for impairment annually in the fourth quarter of each year, and is tested for impairment between annual tests if an event occurs or circumstances change that would indicate the carrying amount may be impaired. An impairment charge for goodwill is recognized only when the estimated fair value of a reporting unit, including goodwill, is less than its carrying amount. As of December 31, 2020&#xa0;no impairment charges for goodwill have been recognized. In 2020, we performed a qualitative analysis based on the significance of the fair value over the carrying value in prior period assessments. As of December 31, 2020, no impairment charges for goodwill have been recognized.</p>
  <p style="margin: 0 22.2pt 0 26.6pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Capitalized Software Costs</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">We follow ASC 350-40, <i>Intangibles &#x2013; Goodwill and Other, Internal-Use Software</i>, in accounting for internally developed software. Costs for internal-use software are evaluated by projected and capitalized where appropriate.</p>
  <p style="margin: 0 22.2pt 0 26.6pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Other Intangible Assets</b></i></p>
  <p style="margin: 0 22.2pt 0 26.6pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We recognize other intangibles assets in accordance with ASC 350, <i>Intangibles&#x2014;Goodwill and Other</i>. Other intangible assets include software technology, customer relationships and other intangible assets acquired from independent parties. Other intangible assets with a definite life are amortized over a period ranging from two to 10 years on a straight line basis, and are tested for impairment whenever events or circumstances indicate that the carrying amount of an asset (asset group) may not be recoverable. An impairment loss is recognized when the carrying amount of an asset exceeds the estimated undiscounted cash flows generated by the asset. As of December 31, 2020&#xa0;no impairment charges for intangible assets have been recognized.</p>
  <p style="margin: 0 22.2pt 0 26.6pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Stock-Based Compensation</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We determine our stock-based compensation in accordance with ASC 718,<i> Compensation&#x2014;Stock Compensation </i>(ASC 718), which requires the measurement and recognition of compensation expense for all share-based payment awards made to employees and non-employee directors based on the grant date fair value of the award.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Determining the appropriate fair value model and calculating the fair value of stock option grants requires the input of subjective assumptions. We use the Black-Scholes option pricing model to value our stock option awards. Stock-based compensation expense is significant to our consolidated financial statements and is calculated using our best estimates, which involve inherent uncertainties and the application of management&#x2019;s judgment. Significant estimates include our expected term and&#xa0;stock price volatility. If different estimates and assumptions had been used, our common stock valuations could be significantly different and related stock-based compensation expense may be materially impacted.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The Black-Scholes option pricing model requires inputs such as the risk-free interest rate, expected term, expected volatility and expected dividend yield. We base the risk-free interest rate that we use in the Black-Scholes option pricing model on zero coupon U.S. Treasury instruments with maturities similar to the expected term of the award being valued. The expected term of stock options is estimated from the vesting period of the award and represents the weighted average period that&#xa0;our stock options are expected to be outstanding. We estimated the volatility of our stock price based on the historic volatility of our common stock. We have never paid and do not anticipate paying any cash dividends in the foreseeable future and, therefore, we use an expected dividend yield of zero in the option pricing model. We account for&#xa0;forfeitures as they occur.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    42
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The fair value of each new employee option awarded was estimated on the date of grant for the periods below using the Black-Scholes option pricing model with the following assumptions:</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 95%; text-indent: 0px; font-size: 10pt; margin-right: 5%; margin-left: 18pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="10" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2020</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2019</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#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>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 52%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Risk-free interest rate</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">0.50 - 1.47%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">2.35 - 2.58%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">2.52 - 3.07%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Expected life (years)</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">6.25</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">6.25</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">6.25</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Expected volatility</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">42.40 - 43.83%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">42.52 - 42.74%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">41.68 - 42.22%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

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

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Weighted average grant date fair value</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">$45.32</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">$47.84</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">$50.08</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our 2012 Employee Stock Purchase Plan (ESPP) allows eligible employees to purchase a variable number of shares of our common stock during each offering period at a discount through payroll deductions of up to 15% of their eligible compensation, subject to plan limitations. The ESPP provides for six-month offering periods with a single purchase period.&#xa0;At the end of each offering period, employees are able to purchase shares at 85% of the lower of the fair market value of our common stock on the first trading day of the offering period or on the last trading day of the offering period. We determine the fair value stock-based compensation related to our ESPP in accordance with ASC 718 using the component measurement approach and the Black-Scholes standard option pricing model.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The fair value of each offering period was estimated using the Black-Scholes option pricing model with the following assumptions:</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 95%; text-indent: 0px; font-size: 10pt; margin-right: 5%; margin-left: 18pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="10" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Year Ended December 31,</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2020</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2019</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>2018</b></p> </td>
     <td style="padding-bottom: 1px; font-size: 10pt;">&#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>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 52%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Risk-free interest rate</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">0.12 - 0.17%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">1.59 - 2.35%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">2.06 - 2.33%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Expected life (months)</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">6.00</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">6.00</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">6.00</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Expected volatility</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">50.85 - 59.99%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">42.63 - 53.57%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 13%; text-align: center; font-size: 10pt; margin-left: 0pt;">31.50 - 37.36%</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

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

   </tbody>
  </table>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;There are significant differences among option valuation models, and this may result in a lack of comparability with other companies that use different models, methods and assumptions. If factors change and we employ different assumptions in the application of ASC 718 in future periods, or if we decide to use a different valuation model, such as a lattice model, the stock-based compensation expense that we record in the future under ASC 718 may differ significantly from what we have recorded using the Black-Scholes option pricing model and could materially affect our operating results.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We recognize stock-based compensation expense on a straight-line basis over the requisite service period. We recorded stock-based compensation expense relating to stock options, restricted stock awards, performance stock units and our ESPP&#xa0;of $14.7 million, $10.8 million and $10.9 million during the years ended December 31, 2020, 2019 and 2018, respectively. As of December 31, 2020, we had $4.2 million of unrecognized stock-based compensation costs related to unvested stock options that are expected to be recognized over a weighted average period of 2.6&#xa0;years. We issued options to purchase 60,065, 53,708 and 36,600 shares of our common stock in 2020, 2019 and 2018, respectively. As of December 31, 2020, we had $21.2 million of unrecognized stock-based compensation costs related to non-vested restricted stock, which is expected to be recognized over a weighted average period of 2.4 years. We issued restricted stock awards of 108,179, 115,471 and 106,855 shares of our common stock in 2020, 2019 and 2018, respectively. As of December 31, 2020, we had $1.7 million of&#xa0;unrecognized stock-based compensation costs related to non-vested performance stock, which is expected to be recognized over a weighted average period of 2.1 years. The increase in unrecognized stock-based compensation costs related to non-vested performance stock in 2020&#xa0;when compared to 2019 is driven by an increase in the number of shares expected to vest at the end of future performance periods. We issued performance stock awards of 19,956, 21,434 and 20,006 shares of our common stock in 2020, 2019 and 2018, respectively.</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In future periods, our stock-based compensation expense is expected to increase due to our existing unrecognized stock-based compensation and the issuance of additional stock-based awards to continue to attract and retain employees and non-employee directors.</p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Income Taxes</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">We account for income taxes in accordance with ASC 740,<i> Income Taxes</i> (ASC 740). Under this method, we determine tax assets and liabilities based upon the differences between the financial statement carrying amounts and the tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to affect taxable income. The tax consequences of most events recognized in the current year&#x2019;s financial statements are included in determining income taxes currently payable. However, because tax laws and financial accounting standards differ in their recognition and measurement of assets, liabilities and equity, revenues, expenses, gains and losses, differences arise between the amount of taxable income and pretax financial income for a year and between the tax basis of assets or liabilities and their reported amounts in the financial statements. Because we assume that the reported amounts of assets and liabilities will be recovered and settled, respectively, a difference between the tax basis of an asset or liability and its reported amount in the balance sheet will result in a taxable or a deductible amount in some future years when the related liabilities are settled or the reported amounts of the assets are recovered, giving rise to a deferred tax asset or liability. We establish a valuation allowance for any portion of our deferred tax assets that we believe will not be recognized.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    43
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">ASC 740 also clarifies the accounting for uncertainty in income taxes recognized in an enterprise&#x2019;s financial statements by defining a criterion that an individual tax position must meet for any part of the benefit of that position to be recognized in an enterprise&#x2019;s financial statements. The Company recognizes the effect of income tax positions only if sustaining those positions is more likely than not. The Company records penalties and interest related to unrecognized tax benefits in income taxes in the Company&#x2019;s Consolidated Statements of Income. Including interest and penalties, we have established a liability for uncertain tax positions of $6.2 million as of December 31, 2020.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The effective tax rate decreased by 2.4% for the year ended December 31, 2020&#xa0;when compared&#xa0;to 2019 primarily due to an increase in tax benefits from the vesting of restricted stock and exercise of stock options and an increase in the research and development tax credit.&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The Tax Cuts and Jobs Act (the &#x201c;Act&#x201d;)&#xa0;was enacted on December 22, 2017. The Act reduced the&#xa0;U.S. federal corporate tax rate from 35% to 21%, required companies to pay a transition tax on earnings of certain foreign subsidiaries that were previously tax deferred and creates new taxes on certain foreign sourced earnings.&#xa0; No additional income taxes have been provided for any remaining undistributed foreign earnings not subject to the transition tax or any additional outside basis difference inherent in these entities as these amounts continue to be indefinitely reinvested in foreign operations.</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Recently adopted accounting pronouncements</b></i></p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">During the first quarter of 2020, the Company adopted the Financial Accounting Standards Board (FASB) Accounting Standards Update (ASU) 2016-13, <i>Financial Instruments &#x2013; Credit Losses</i>, which is intended to provide financial statement users with more decision-useful information about the expected credit losses on financial instruments held by a reporting entity at each reporting date. The adoption of this guidance had no material impact on our consolidated financial statements.</p>
  <p style="margin: 0 29.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">During the first quarter of 2019, we adopted the FASB ASU 2016-02,&#xa0;<i>Leases&#xa0;</i>(ASC 842), which introduces the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. We have adopted the new lease standard using the new transition option issued under the amendments in ASU 2018-11,&#xa0;<i>Leases</i>, which allowed us to continue to apply the legacy guidance in Accounting Standards Codification (ASC) 840,&#xa0;<i>Leases</i>, in the comparative periods presented in the year of adoption. We elected the package of practical expedients permitted under the transition guidance within the new standard, which among other things, allowed us to carry forward the historical lease classification. We made an accounting policy election to keep leases with an initial term of 12 months or less off of the balance sheet. We will recognize those lease payments in the Consolidated Statements of Comprehensive Income on a straight-line basis over the lease term. The impact of the adoption was an increase to our operating lease assets and liabilities on January 1, 2019 of $13.1 million.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Recently issued accounting pronouncements</b></i></p>
  <p style="margin: 0 29.7pt 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0 29.7pt 0 -3pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In December 2019, the FASB issued ASU 2019-12, <i>Income Taxes</i>, which is intended to simplify the accounting for income taxes. This guidance will be effective for fiscal years beginning after December 15, 2020 and interim periods within those fiscal years with early adoption permitted. We are&#xa0;evaluating the impact of future adoption of this guidance on our consolidated financial statements, but we do not expect the impact to be material.</p>
  <p style="margin: 0 29.7pt 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    44
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="item7a_quantitativeandqualatativedis" title="item7a_quantitativeandqualatativedis" href="#"></a>Item&#xa0;7A. Quantitative and Qualitative Disclosures About Market Risk</b></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Quantitative and Qualitative Disclosure of Market Risks</b></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our exposure to market risk is confined to our cash and cash equivalent balances and investments. The primary goals of our investment policy are preservation of capital, fulfillment of liquidity needs and fiduciary control of cash and cash equivalent balances. We also seek to maximize income from our investments without assuming significant risk. To achieve our goals, we maintain a portfolio of debt securities with various maturities ranging from one to three years. Due to the nature of our investment portfolio, we are subject to interest rate risks, which we mitigate by holding our investments to maturity. In future periods, we will continue to evaluate our investment policy in order to continue our overall goals.</p>
  <p style="margin: 0 22.2pt 0 14.7pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Foreign Currency Risk</b></i></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">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 Pound, Euro and Japanese Yen.</p>
  <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Our operating results and cash flows are adversely impacted when the United States dollar appreciates relative to other 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: 0 7.2pt; text-align: left; text-indent: 18pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">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 $1.5 million and $0.3 million for the years ended December 31, 2020 and 2018, respectively, and foreign currency losses of $0.8 million for the year ended&#xa0;December 31, 2019.</p>
  <p style="margin: 0 22.2pt; text-align: left; text-indent: 23.1pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    45
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="item8_financialstatementsandsup" title="item8_financialstatementsandsup" href="#"></a>Item&#xa0;8. Financial Statements and Supplementary Data</b></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-size: 10pt; margin-right: 0pt; margin-left: 0pt;">
   <tbody>
    <tr style="font-size: 10pt;">
     <td style="width: 100%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Proto Labs, Inc.</b></p> </td>
    </tr>

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

   </tbody>
  </table>
  <p style="margin: 0 7.2pt; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-size: 10pt; margin-left: 0pt;">
   <tbody>
    <tr style="font-size: 10pt;">
     <td style="width: 10%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 2%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 78%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Page</b></p> </td>
    </tr>

    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#report1" style="-sec-extract:exhibit;">Report of Independent Registered Public Accounting Firm on Consolidated Financial Statements</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">47</p> </td>
    </tr>

    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#report2" style="-sec-extract:exhibit;">Report of Independent Registered Public Accounting Firm</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">49</p> </td>
    </tr>

    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#bs" style="-sec-extract:exhibit;">Consolidated Balance Sheets at December 31, 2020&#xa0;and 2019</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">50</p> </td>
    </tr>

    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#income" style="-sec-extract:exhibit;">Consolidated Statements of Comprehensive Income for the years ended December 31, 2020, 2019&#xa0;and 2018</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">51</p> </td>
    </tr>

    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#equity" style="-sec-extract:exhibit;">Consolidated Statements of Shareholders' Equity for the years ended December 31, 2020, 2019&#xa0;and 2018</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">52</p> </td>
    </tr>

    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#cf" style="-sec-extract:exhibit;">Consolidated Statements of Cash Flows for the years ended December 31, 2020, 2019&#xa0;and 2018</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">53</p> </td>
    </tr>

    <tr style="font-size: 10pt;">
     <td colspan="3" style="width: 12%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><a href="#notes" style="-sec-extract:exhibit;">Notes to Consolidated Financial Statements</a></p> </td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 5%; font-size: 10pt; vertical-align: top;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">54</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    46
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b><a id="report1" title="report1" href="#"></a>Report of Independent Registered Public Accounting Firm </b></p>
  <p style="margin: 0 7.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">To the Shareholders and the Board of Directors of Proto Labs, Inc.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Opinion on the Financial Statements </b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We have audited the accompanying consolidated balance sheets of Proto Labs, Inc. (the Company) as of December 31, 2020 and 2019, the related consolidated statements of comprehensive income, shareholders' equity and cash flows for each of the three years in the period ended December 31, 2020, and the related notes (collectively referred to as the &#x201c;consolidated financial statements&#x201d;). In our opinion, the consolidated financial statements present fairly, in all material respects, the financial position of the Company at December 31, 2020 and 2019, and the results of its operations and its cash flows for each of the three years in the period ended December 31, 2020, in conformity with U.S. generally accepted accounting principles.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We also have audited, in accordance with the standards of the Public Company Accounting Oversight Board (United States) (PCAOB), the Company's internal control over financial reporting as of December 31, 2020, based on criteria established in Internal Control-Integrated Framework issued by the Committee of Sponsoring Organizations of the Treadway Commission (2013 framework), and our report dated February 19, 2021 expressed an unqualified opinion thereon.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Basis for Opinion </b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">These financial statements are the responsibility of the Company's management. Our responsibility is to express an opinion on the Company&#x2019;s financial statements based on our audits. We are a public accounting firm registered with the PCAOB and are required to be independent with respect to the Company in accordance with the U.S. federal securities laws and the applicable rules and regulations of the Securities and Exchange Commission and the PCAOB.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We conducted our audits in accordance with the standards of the PCAOB. Those standards require that we plan and perform the audit to obtain reasonable assurance about whether the financial statements are free of material misstatement, whether due to error or fraud. Our audits included performing procedures to assess the risks of material misstatement of the financial statements, whether due to error or fraud, and performing procedures that respond to those risks. Such procedures included examining, on a test basis, evidence regarding the amounts and disclosures in the financial statements. Our audits also included evaluating the accounting principles used and significant estimates made by management, as well as evaluating the overall presentation of the financial statements. We believe that our audits provide a reasonable basis for our opinion.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Critical Audit Matter</b><sup style="vertical-align:top;line-height:120%;font-size:pt"><b> </b></sup></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">The critical audit matter communicated below is a matter arising from the current period audit of the consolidated financial statements that was communicated or required to be communicated to the audit committee and that: (1) relate to accounts or disclosures that are material to the consolidated financial statements and (2) involved our especially challenging, subjective or complex judgments. The communication of the critical audit matter does not alter in any way our opinion on the consolidated financial statements, taken as a whole, and we are not, by communicating the critical audit matter below, providing a separate opinion on the critical audit matter or on the account or disclosure to which it relates.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;">&#xa0;</td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</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;"><i><b>Revenue Recognition &#x2013; Revenue Recognized Over Time</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><i>Description of the Matter</i></p> </td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">As discussed in Notes 2 and 3 to the consolidated financial statements, the Company provides quality, quick-turn prototyping and on-demand manufacturing services.&#xa0; The majority of revenue recognized in a reporting period is based on completed, invoiced contracts.&#xa0; The Company manufactures custom parts to specific customer orders that have no alternative use to the Company, and the Company believes that there is a legally enforceable right to payment for performance completed to date on these manufactured parts.&#xa0; Revenue is recognized over time for manufactured parts which meet these two criteria.&#xa0; For revenue recognized over time, management uses the input method based on time in production time as a percentage of total estimated production time to measure progress toward satisfying performance obligations using the estimated total time necessary to complete the parts per the customer's order and an estimate of inventory and production costs incurred to date.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; 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="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    47
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 10%;">&#xa0;</td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;">Auditing revenue recognized over time was challenging because the relevant accounting standard requires the Company to estimate the progress towards satisfaction of performance obligations, applying a single appropriate method to measure progress.&#xa0; The input method requires an analysis of the incurred time in production and an estimate of the total time necessary to complete the total parts per the customer&#x2019;s order.&#xa0; The Company also estimates inventory and production costs incurred to date. These estimates are based on management&#x2019;s assessment of the current status of production as well as historical results.</td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 10%;">&#xa0;</td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;">&#xa0;</td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><i>How We Addressed the Matter in Our Audit</i></p> </td>
     <td style="vertical-align: top; width: 2%;">&#xa0;</td>
     <td style="vertical-align: top; width: 88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">We obtained an understanding, evaluated the design and tested the operating effectiveness of controls over the Company&#x2019;s process for recognizing revenue over time. This included testing controls over management&#x2019;s evaluation of contract terms, the estimation of production time incurred to date and total production time used in the input method, estimation of a reasonable profit margin and the completeness and accuracy of the data used in the input method.&#xa0;&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:0pt;margin-right:3.75pt;margin-top:0pt;text-align:left;">To test the Company&#x2019;s revenue recognition over time, we performed audit procedures that included, among others, inspecting a sample of contracts to evaluate the existence of an enforceable right to payment for performance completed to date, evaluating the progress towards completion of orders in process through examination of a sample of product shipments subsequent to the end of the reporting period, evaluating the reasonableness of management&#x2019;s estimate of profit margins based on a comparison to historical margins, testing the appropriateness of the timing and amount of revenue recognized over time based on the underlying inputs, and performing an independent sensitivity analysis to evaluate the impact on revenues of changes in significant assumptions.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">/s/ Ernst &amp; Young LLP</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We have served as the Company&#x2019;s auditor since 2011.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">Minneapolis, Minnesota</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">February 19, 2021</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    48
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b><a id="report2" title="report2" href="#"></a>Report of Independent Registered Public Accounting Firm</b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>&#xa0;</b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">To the Shareholders and the Board of Directors of Proto Labs, Inc.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Opinion on Internal Control over Financial Reporting</b>&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We have audited Proto Labs, Inc.&#x2019;s internal control over financial reporting as of December 31, 2020, based on criteria established in Internal Control&#x2014;Integrated Framework issued by the Committee of Sponsoring Organizations of the Treadway Commission (2013 framework) (the COSO criteria). In our opinion, Proto Labs, Inc. (the Company) maintained, in all material respects, effective internal control over financial reporting as of December 31, 2020, based on the COSO criteria.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We also have audited, in accordance with the standards of the Public Company Accounting Oversight Board (United States) (PCAOB), the consolidated balance sheets of Proto Labs, Inc. as of December 31, 2020 and 2019, the related consolidated statements of comprehensive income, shareholders' equity and cash flows for each of the three years in the period ended December 31, 2020, and the related notes<b> </b>and our report dated February 19, 2021 expressed an unqualified opinion thereon.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Basis for Opinion </b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">The Company&#x2019;s management is responsible for maintaining effective internal control over financial reporting and for its assessment of the effectiveness of internal control over financial reporting included in the accompanying Management&#x2019;s Annual Report on Internal Control Over Financial Reporting. Our responsibility is to express an opinion on the Company&#x2019;s internal control over financial reporting based on our audit. We are a public accounting firm registered with the PCAOB and are required to be independent with respect to the Company in accordance with the U.S. federal securities laws and the applicable rules and regulations of the Securities and Exchange Commission and the PCAOB.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">We conducted our audit in accordance with the standards of the PCAOB. Those standards require that we plan and perform the audit to obtain reasonable assurance about whether effective internal control over financial reporting was maintained in all material respects.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">Our audit included obtaining an understanding of internal control over financial reporting, assessing the risk that a material weakness exists, testing and evaluating the design and operating effectiveness of internal control based on the assessed risk, and performing such other procedures as we considered necessary in the circumstances. We believe that our audit provides a reasonable basis for our opinion.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Definition and Limitations of Internal Control Over Financial Reporting </b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">A company&#x2019;s internal control over financial reporting is a process designed 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. A company&#x2019;s internal control over financial reporting includes those policies and procedures that (1) pertain to the maintenance of records that, in reasonable detail, accurately and fairly reflect the transactions and dispositions of the assets of the company; (2) provide reasonable assurance that transactions are recorded as necessary to permit preparation of financial statements in accordance with generally accepted accounting principles, and that receipts and expenditures of the company are being made only in accordance with authorizations of management and directors of the company; and (3) provide reasonable assurance regarding prevention or timely detection of unauthorized acquisition, use, or disposition of the company&#x2019;s assets that could have a material effect on the financial statements.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">Because of its inherent limitations, internal control over financial reporting may not prevent or detect misstatements. Also, projections of any evaluation of effectiveness to future periods are subject to the risk that controls may become inadequate because of changes in conditions, or that the degree of compliance with the policies or procedures may deteriorate.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">/s/ Ernst &amp; Young LLP</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">Minneapolis, Minnesota</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">February 19, 2021</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    49
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <div>
   &#xa0;
  </div>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><a id="bs" title="bs" href="#"></a>Proto Labs, Inc.</b></p> </td>
    </tr>

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

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

    <tr>
     <td style="vertical-align: top; width: 100%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;">&#xa0;</p>
  <div>
   <table class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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; padding-bottom: 1px;">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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="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;"><b>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="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="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;"> <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;">&#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="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></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; 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;">&#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="c68814023" 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; 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;"><ix:nonFraction id="c68814024" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" 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; 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; margin-left: 27pt; 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;">&#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;"><ix:nonFraction id="c68814025" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814026" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:MarketableSecuritiesCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">35,437</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; margin-left: 27pt; text-indent: -9pt;">Accounts receivable, net of allowance for doubtful accounts of $<span style="-sec-ix-hidden:c68815719">1,781</span> and $<span style="-sec-ix-hidden:c68815720">952</span> as of December 31, 2020 and December 31, 2019, respectively</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;"><ix:nonFraction id="c68814027" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814028" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:AccountsReceivableNetCurrent" scale="3" format="ixt:numdotdecimal" decimals="-4">57,450</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; margin-left: 27pt; text-indent: -9pt;">Inventory</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;"><ix:nonFraction id="c68814029" 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;">&#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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814030" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:numdotdecimal" decimals="-3">10,075</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; margin-left: 27pt; 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;">&#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;"><ix:nonFraction id="c68814031" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814032" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">8,232</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; margin-left: 27pt; text-indent: -9pt;">Income taxes receivable</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814033" 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-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814034" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:IncomeTaxesReceivable" 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-bottom: 1px; 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; margin-left: 45pt; text-indent: -9pt;">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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814035" 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><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;"><ix:nonFraction id="c68814036" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:AssetsCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">236,419</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;">Property and equipment, net</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;"><ix:nonFraction id="c68814037" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814038" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">263,712</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;">Goodwill</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;"><ix:nonFraction id="c68814039" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814040" contextRef="i_2019-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; 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;">Other intangible assets, net</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;"><ix:nonFraction id="c68814041" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814042" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:OtherIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">17,369</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;">Long-term 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;">&#xa0;</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="c68814043" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814044" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:MarketableSecuritiesNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-4">12,960</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">Operating lease assets</td><td 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c68814045" 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><td 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c68814046" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" format="ixt:numdotdecimal" decimals="-3">11,425</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">Finance lease assets</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"><ix:nonFraction id="c68814047" 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">&#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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68814048" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAsset" 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">&#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;">Other long-term assets</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);">&#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);"><ix:nonFraction id="c68814049" 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; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#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);"><ix:nonFraction id="c68814050" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:OtherAssetsNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-4">3,030</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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: 45pt; text-indent: -9pt;">Total 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: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814051" 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; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814052" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:numdotdecimal" decimals="-3">673,667</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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></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>Liabilities and shareholders' equity</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="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="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;"> <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;">&#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="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></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; text-indent: -9pt;">Accounts payable</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="c68814053" 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; 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;"><ix:nonFraction id="c68814054" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:AccountsPayableCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">16,804</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; margin-left: 27pt; text-indent: -9pt;">Accrued compensation</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;"><ix:nonFraction id="c68814055" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814056" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:EmployeeRelatedLiabilitiesCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">15,058</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; margin-left: 27pt; 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;">&#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;"><ix:nonFraction id="c68814057" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814058" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:AccruedLiabilitiesAndOtherLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">11,057</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: 0pt 0pt 0pt 18pt;">Current operating lease liabilities</td><td 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c68814059" 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: 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c68814060" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3" format="ixt:numdotdecimal" decimals="-4">3,340</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; text-indent: 18pt;">Current finance lease liabilities</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"><ix:nonFraction id="c68814061" 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">&#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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68814062" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityCurrent" 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">&#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; margin-left: 27pt; text-indent: -9pt;">Income taxes payable</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814063" 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-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814064" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:AccruedIncomeTaxesCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">1,322</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 45pt; text-indent: -9pt;">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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814065" 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><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;"><ix:nonFraction id="c68814066" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:LiabilitiesCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">47,581</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; margin-left: 9pt; text-indent: -9pt;">Long-term operating lease 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814067" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814068" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">8,565</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">Long-term finance lease liabilities</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"><ix:nonFraction id="c68814069" 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">&#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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68814070" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityNoncurrent" 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">&#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;">Long-term deferred tax 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814071" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814072" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" scale="3" format="ixt:numdotdecimal" decimals="-3">26,283</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;">Other long-term 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814073" 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-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814074" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:OtherLiabilitiesNoncurrent" 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-bottom: 1px; 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; margin-left: 45pt; text-indent: -9pt;">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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814075" 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><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;"><ix:nonFraction id="c68814076" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:Liabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">87,877</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>&#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;, 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;">Shareholders' equity</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="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="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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Preferred stock, $<span style="-sec-ix-hidden:c68815721"><span style="-sec-ix-hidden:c68815722">0.001</span></span> par value, authorized <span style="-sec-ix-hidden:c68815723"><span style="-sec-ix-hidden:c68815724">10,000,000</span></span> shares; issued and outstanding <span style="-sec-ix-hidden:c68815725"><span style="-sec-ix-hidden:c68815727"><span style="-sec-ix-hidden:c68815726"><span style="-sec-ix-hidden:c68815728">0</span></span></span></span> shares as of December 31, 2020 and December 31, 2019, respectively</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;"><ix:nonFraction id="c68814077" 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><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;"><ix:nonFraction id="c68814078" contextRef="i_2019-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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Common stock, $<span style="-sec-ix-hidden:c68815729"><span style="-sec-ix-hidden:c68815730">0.001</span></span> par value, authorized <span style="-sec-ix-hidden:c68815731"><span style="-sec-ix-hidden:c68815732">150,000,000</span></span> shares; issued and outstanding <span style="-sec-ix-hidden:c68815733"><span style="-sec-ix-hidden:c68815735">26,776,796</span></span> and <span style="-sec-ix-hidden:c68815734"><span style="-sec-ix-hidden:c68815736">26,786,459</span></span> shares as of December 31, 2020 and December 31, 2019, respectively</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;"><ix:nonFraction id="c68814079" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814080" contextRef="i_2019-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; 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; margin-left: 27pt; text-indent: -9pt;">Additional paid-in capital</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;"><ix:nonFraction id="c68814081" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814082" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:AdditionalPaidInCapitalCommonStock" scale="3" format="ixt:numdotdecimal" decimals="-3">268,059</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; margin-left: 27pt; text-indent: -9pt;">Retained earnings</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;"><ix:nonFraction id="c68814083" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814084" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3" format="ixt:numdotdecimal" decimals="-3">324,722</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; margin-left: 27pt; text-indent: -9pt;">Accumulated other comprehensive loss</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814085" 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; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814086" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">7,018</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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; margin-left: 45pt; text-indent: -9pt;">Total shareholders' equity</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814087" 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; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814088" 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 45pt; text-indent: -9pt;">Total liabilities and shareholders' equity</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: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814089" 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; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814090" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:LiabilitiesAndStockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">673,667</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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>
  <hr />
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    50
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <div>
   &#xa0;
  </div>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><a id="income" title="income" href="#"></a>Proto Labs, Inc.</b></p> </td>
    </tr>

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

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

    <tr>
     <td style="vertical-align: top; width: 100%; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
   <table class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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: 55%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Statements of Operations:</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></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;">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;">$</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="c68814102" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">434,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; 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="c68814103" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">458,728</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814104" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">445,596</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;">Cost of 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814105" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" format="ixt:numdotdecimal" decimals="-3">216,568</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814106" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" format="ixt:numdotdecimal" decimals="-3">223,438</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814107" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" format="ixt:numdotdecimal" decimals="-3">206,917</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Gross profit</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;"><ix:nonFraction id="c68814108" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:numdotdecimal" decimals="-3">217,827</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814109" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:numdotdecimal" decimals="-4">235,290</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814110" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:numdotdecimal" decimals="-3">238,679</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;">Operating expenses</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></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; margin-left: 18pt;">Marketing and sales</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;"><ix:nonFraction id="c68814111" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:SellingAndMarketingExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">69,309</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814112" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:SellingAndMarketingExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">72,976</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814113" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:SellingAndMarketingExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">68,533</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; margin-left: 18pt;">Research and development</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;"><ix:nonFraction id="c68814114" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:ResearchAndDevelopmentExpense" scale="3" format="ixt:numdotdecimal" decimals="-4">36,940</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814115" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:ResearchAndDevelopmentExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">32,692</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814116" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:ResearchAndDevelopmentExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">28,735</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; margin-left: 18pt;">General and administrative</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814117" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:GeneralAndAdministrativeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">51,742</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814118" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:GeneralAndAdministrativeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">49,766</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814119" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:GeneralAndAdministrativeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">52,513</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 27pt;">Total operating expenses</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814120" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:OperatingExpenses" scale="3" format="ixt:numdotdecimal" decimals="-3">157,991</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814121" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:OperatingExpenses" scale="3" format="ixt:numdotdecimal" decimals="-3">155,434</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814122" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:OperatingExpenses" scale="3" format="ixt:numdotdecimal" decimals="-3">149,781</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Income from operations</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;"><ix:nonFraction id="c68814123" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">59,836</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814124" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">79,856</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814125" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">88,898</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;">Other income, net</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814126" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">3,109</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814127" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">1,337</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814128" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">2,757</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Income before income taxes</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;"><ix:nonFraction id="c68814129" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:numdotdecimal" decimals="-3">62,945</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814130" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:numdotdecimal" decimals="-3">81,193</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814131" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:numdotdecimal" decimals="-3">91,655</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;">Provision for income taxes</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814132" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">12,078</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814133" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">17,538</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814134" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">15,067</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Net income</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814135" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">50,867</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814136" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">63,655</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814137" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">76,588</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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></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;">Net income per share:</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></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: 18pt;">Basic</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814138" contextRef="d_2020-01-01_2020-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">1.90</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814139" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">2.37</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814140" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">2.84</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 18pt;">Diluted</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814141" contextRef="d_2020-01-01_2020-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">1.89</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814142" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">2.35</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814143" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">2.81</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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></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;">Shares used to compute net income per share:</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></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: 18pt;">Basic</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;"><ix:nonFraction id="c68814144" contextRef="d_2020-01-01_2020-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">26,737,425</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814145" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">26,866,985</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814146" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">26,982,614</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; margin-left: 18pt;">Diluted</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;"><ix:nonFraction id="c68814147" contextRef="d_2020-01-01_2020-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,896,357</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814148" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">27,049,423</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814149" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">27,278,816</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>&#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;, 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>Other Comprehensive Income (Loss), net of tax</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></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;">Foreign currency translation adjustments</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: 1px solid rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814150" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">3,598</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814151" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">1,474</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);">$</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);">(<ix:nonFraction id="c68814152" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">3,258</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Comprehensive income</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814153" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">54,465</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814154" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">65,129</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814155" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-4">73,330</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td></tr>
</tbody></table>
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    51
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <div>
   &#xa0;
  </div>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><a id="equity" title="equity" href="#"></a>Proto Labs, Inc.</b></p> </td>
    </tr>

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

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

    <tr>
     <td style="vertical-align: top; width: 100%; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
   <table class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 40%;">&#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: thin solid rgb(0, 0, 0); width: 10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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;, 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Additional</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 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: 6%;"><em style="font: inherit;">&#xa0;</em></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 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Accumulated Other</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 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: 6%;"><em style="font: inherit;">&#xa0;</em></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: 40%;">&#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: 6%;"><em style="font: inherit;">&#xa0;</em></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: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 6%;"><em style="font: inherit;">&#xa0;</em></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 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Paid-In</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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Retained</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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Comprehensive</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 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: 6%;"><em style="font: inherit;">&#xa0;</em></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: 40%;">&#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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Shares</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Amount</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Capital</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Earnings</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Loss</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Total</em></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="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 40%;">&#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: 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: 12%;">&#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;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at January 1, 2018</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814179" contextRef="i_2017-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,828,651</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814180" contextRef="i_2017-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814181" contextRef="i_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">241,725</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814182" contextRef="i_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">224,697</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814183" contextRef="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">5,234</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814184" contextRef="i_2017-12-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">461,215</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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Common shares issued on exercise of options and other</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814185" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:numdotdecimal" decimals="INF">260,694</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814186" contextRef="d_2018-01-01_2018-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814187" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-3">6,791</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814188" contextRef="d_2018-01-01_2018-12-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;, 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814189" contextRef="d_2018-01-01_2018-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814190" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-3">6,791</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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814192" contextRef="d_2018-01-01_2018-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814193" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-3">10,928</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814194" contextRef="d_2018-01-01_2018-12-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;, 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814195" contextRef="d_2018-01-01_2018-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814196" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-3">10,928</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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814197" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodShares" scale="0" format="ixt:numdotdecimal" decimals="INF">104,598</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814198" contextRef="d_2018-01-01_2018-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814199" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">942</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814200" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">11,287</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814201" contextRef="d_2018-01-01_2018-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814202" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">12,229</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; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Revenue recognition transition adjustment</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814204" contextRef="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814205" contextRef="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814206" contextRef="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">1,462</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814207" contextRef="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814208" contextRef="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">1,462</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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814210" contextRef="d_2018-01-01_2018-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814211" contextRef="d_2018-01-01_2018-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814212" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">76,588</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814213" contextRef="d_2018-01-01_2018-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814214" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">76,588</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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 12%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814216" contextRef="d_2018-01-01_2018-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814217" contextRef="d_2018-01-01_2018-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814218" contextRef="d_2018-01-01_2018-12-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;, 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814219" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">3,258</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; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814220" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">3,258</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; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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 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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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 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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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 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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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 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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 12%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#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: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 6%; 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="c68814226" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-4">73,330</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at December 31, 2018</b></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);">&#xa0;</td><td style="width: 6%; 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="c68814227" contextRef="i_2018-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,984,747</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814228" contextRef="i_2018-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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814229" contextRef="i_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">258,502</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814230" contextRef="i_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-4">291,460</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">(<ix:nonFraction id="c68814231" contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">8,492</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814232" contextRef="i_2018-12-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">541,497</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom" class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Common shares issued on exercise of options and other</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814233" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:numdotdecimal" decimals="INF">128,174</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814234" contextRef="d_2019-01-01_2019-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814235" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-3">1,904</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814236" contextRef="d_2019-01-01_2019-12-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;, 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814237" contextRef="d_2019-01-01_2019-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814238" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-3">1,904</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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814240" contextRef="d_2019-01-01_2019-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814241" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-3">10,781</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814242" contextRef="d_2019-01-01_2019-12-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;, 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814243" contextRef="d_2019-01-01_2019-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814244" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-3">10,781</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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814245" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodShares" scale="0" format="ixt:numdotdecimal" decimals="INF">326,462</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814246" contextRef="d_2019-01-01_2019-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814247" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">3,128</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814248" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">30,393</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814249" contextRef="d_2019-01-01_2019-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814250" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">33,521</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(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">&#xa0;</em></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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814252" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" xsi:nil="true"></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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814253" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" xsi:nil="true"></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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814254" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">63,655</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814255" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" xsi:nil="true"></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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814256" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">63,655</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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 12%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814258" contextRef="d_2019-01-01_2019-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814259" contextRef="d_2019-01-01_2019-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814260" contextRef="d_2019-01-01_2019-12-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;, 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814261" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">1,474</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; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c68814262" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">1,474</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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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 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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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 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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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 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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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 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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 12%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#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: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 6%; 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="c68814268" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">65,129</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at December 31, 2019</b></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);">&#xa0;</td><td style="width: 6%; 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="c68814269" 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814270" 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814271" 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814272" 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">(<ix:nonFraction id="c68814273" 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814274" 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Common shares issued on exercise of options and other</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814275" contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:numdotdecimal" decimals="INF">189,951</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814276" contextRef="d_2020-01-01_2020-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814277" contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-3">4,114</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814278" contextRef="d_2020-01-01_2020-12-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;, 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814279" contextRef="d_2020-01-01_2020-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814280" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-3">4,114</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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814282" contextRef="d_2020-01-01_2020-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814283" contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-3">14,673</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814284" contextRef="d_2020-01-01_2020-12-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;, 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814285" contextRef="d_2020-01-01_2020-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814286" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-3">14,673</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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814287" contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodShares" scale="0" format="ixt:numdotdecimal" decimals="INF">199,614</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814288" contextRef="d_2020-01-01_2020-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814289" contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">1,998</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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814290" contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">12,688</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814291" contextRef="d_2020-01-01_2020-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814292" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" 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; 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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814294" contextRef="d_2020-01-01_2020-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814295" contextRef="d_2020-01-01_2020-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814296" contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">50,867</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814297" contextRef="d_2020-01-01_2020-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814298" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">50,867</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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 12%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><i>&#xa0;</i></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: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814300" contextRef="d_2020-01-01_2020-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814301" contextRef="d_2020-01-01_2020-12-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;, 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: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814302" contextRef="d_2020-01-01_2020-12-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;, 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814303" contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">3,598</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; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c68814304" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">3,598</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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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 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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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 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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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 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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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 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="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 12%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#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: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 6%; 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="c68814310" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">54,465</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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: 40%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at December 31, 2020</b></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);">&#xa0;</td><td style="width: 6%; 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="c68814311" 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814312" 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814313" 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814314" 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">(<ix:nonFraction id="c68814315" 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814316" 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; padding-bottom: 3px;">&#xa0;</td></tr>
</tbody></table>
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    52
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <div>
   &#xa0;
  </div>
  <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="vertical-align:top;width:100%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><a id="cf" title="cf" href="#"></a>Proto Labs, Inc.</b></p> </td>
    </tr>

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

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

   </tbody>
  </table>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p>
  <hr />
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
   <table class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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: 55%;"> <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;">&#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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814326" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">50,867</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814327" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">63,655</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814328" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">76,588</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; margin-left: 27pt; text-indent: -9pt;">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;">&#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(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; margin-left: 45pt; text-indent: -9pt;">Depreciation and amortization</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;"><ix:nonFraction id="c68814329" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">32,594</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814330" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">30,864</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814331" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">26,754</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; margin-left: 45pt; text-indent: -9pt;">Stock-based compensation 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;">&#xa0;</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="c68814332" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:ShareBasedCompensation" scale="3" format="ixt:numdotdecimal" decimals="-3">14,673</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814333" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:ShareBasedCompensation" scale="3" format="ixt:numdotdecimal" decimals="-3">10,781</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814334" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:ShareBasedCompensation" scale="3" format="ixt:numdotdecimal" decimals="-3">10,928</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; margin-left: 45pt; text-indent: -9pt;">Deferred taxes</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;"><ix:nonFraction id="c68814335" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">7,577</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814336" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">6,106</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814337" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">11,936</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; margin-left: 45pt; text-indent: -9pt;">Gain on sale of businesses</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;"><ix:nonFraction id="c68814338" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:GainLossOnSaleOfBusiness" 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814339" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:GainLossOnSaleOfBusiness" 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814340" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:GainLossOnSaleOfBusiness" scale="3" format="ixt:numdotdecimal" decimals="-3">671</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(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; margin-left: 45pt; text-indent: -9pt;">Amortization of held-to-maturity 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814341" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">415</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814342" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">5</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814343" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">374</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; margin-left: 45pt; text-indent: -9pt;">Other</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;">(<ix:nonFraction id="c68814344" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:OtherNoncashIncomeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">336</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814345" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:OtherNoncashIncomeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">391</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814346" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:OtherNoncashIncomeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">619</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(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; margin-left: 45pt; text-indent: -9pt;">Changes in operating assets and liabilities, net of acquisitions:</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></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: 63pt; text-indent: -9pt;">Accounts receivable</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;">(<ix:nonFraction id="c68814347" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="3" format="ixt:numdotdecimal" decimals="-3">91</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814348" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">1,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><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;">(<ix:nonFraction id="c68814349" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="3" format="ixt:numdotdecimal" decimals="-3">6,098</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(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; margin-left: 63pt; text-indent: -9pt;">Inventories</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;">(<ix:nonFraction id="c68814350" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInInventories" scale="3" format="ixt:numdotdecimal" decimals="-3">662</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814351" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInInventories" scale="3" format="ixt:numdotdecimal" decimals="-4" sign="-">60</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814352" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInInventories" scale="3" format="ixt:numdotdecimal" decimals="-3">189</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 63pt; text-indent: -9pt;">Prepaid expenses and other</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;">(<ix:nonFraction id="c68814353" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" format="ixt:numdotdecimal" decimals="-4">1,680</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814354" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">545</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814355" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" format="ixt:numdotdecimal" decimals="-3">2,098</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(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; margin-left: 63pt; text-indent: -9pt;">Income taxes</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;">(<ix:nonFraction id="c68814356" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" scale="3" format="ixt:numdotdecimal" decimals="-4" sign="-">1,960</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814357" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" scale="3" format="ixt:numdotdecimal" decimals="-3">6,555</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814358" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">6,652</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 63pt; text-indent: -9pt;">Accounts payable</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;"><ix:nonFraction id="c68814359" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3" format="ixt:numdotdecimal" decimals="-3">1,492</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814360" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">719</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814361" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3" format="ixt:numdotdecimal" decimals="-3">1,942</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; margin-left: 63pt; 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;">&#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);">&#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);"><ix:nonFraction id="c68814362" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInOtherOperatingLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-4">4,080</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814363" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInOtherOperatingLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">4,039</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814364" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInOtherOperatingLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">10,734</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 27pt; text-indent: -9pt;">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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814365" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3">106,969</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814366" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3">116,052</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814367" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3">122,929</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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></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>Investing activities</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></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; margin-left: 27pt; text-indent: -9pt;">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;">&#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;">(<ix:nonFraction id="c68814368" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-4">47,010</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814369" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-4">62,230</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814370" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">87,104</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">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;">&#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;"><ix:nonFraction id="c68814371" contextRef="d_2020-01-01_2020-12-31" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814372" contextRef="d_2019-01-01_2019-12-31" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814373" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="3" format="ixt:numdotdecimal" decimals="-4">90</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(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; margin-left: 27pt; text-indent: -9pt;">Proceeds from sale of businesses</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;"><ix:nonFraction id="c68814374" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:ProceedsFromDivestitureOfBusinesses" 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814375" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:ProceedsFromDivestitureOfBusinesses" 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814376" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:ProceedsFromDivestitureOfBusinesses" 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; 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; margin-left: 27pt; text-indent: -9pt;">Purchases of other assets and investments</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;">(<ix:nonFraction id="c68814377" contextRef="d_2020-01-01_2020-12-31" 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; 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;">(<ix:nonFraction id="c68814378" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquireOtherInvestments" scale="3" format="ixt:numdotdecimal" decimals="-6">4,000</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814379" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquireOtherInvestments" scale="3" format="ixt:numdotdecimal" decimals="-3">126</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(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; margin-left: 27pt; text-indent: -9pt;">Purchases of 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;">&#xa0;</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="c68814380" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquireHeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-5">113,200</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814381" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquireHeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">46,403</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814382" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquireHeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">41,384</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Proceeds from maturities of 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814383" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">67,737</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814384" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities" scale="3" format="ixt:numdotdecimal" decimals="-4">68,330</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814385" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">65,139</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 27pt; text-indent: -9pt;">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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814386" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">95,473</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814387" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">44,303</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814388" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">63,281</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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></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;"><b>Financing activities</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></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; text-indent: -9pt;">Payments on debt</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;"><ix:nonFraction id="c68814389" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:RepaymentsOfLongTermDebt" 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814390" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:RepaymentsOfLongTermDebt" 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814391" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:RepaymentsOfLongTermDebt" scale="3" format="ixt:numdotdecimal" decimals="-6">5,000</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(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; margin-left: 27pt; text-indent: -9pt;">Principal repayments of finance lease obligations</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;">(<ix:nonFraction id="c68814392" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:numdotdecimal" decimals="-3">154</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814393" contextRef="d_2019-01-01_2019-12-31" 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; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814394" contextRef="d_2018-01-01_2018-12-31" 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; 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; margin-left: 27pt; text-indent: -9pt;">Proceeds from exercises of stock options</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;"><ix:nonFraction id="c68814395" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" 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-bottom: 1px; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814396" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" scale="3" format="ixt:numdotdecimal" decimals="-3">4,391</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814397" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" scale="3" format="ixt:numdotdecimal" decimals="-3">8,935</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 27pt; text-indent: -9pt;">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;">&#xa0;</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814398" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation" scale="3" format="ixt:numdotdecimal" decimals="-3">3,443</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;">&#xa0;</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="c68814399" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation" scale="3" format="ixt:numdotdecimal" decimals="-3">2,487</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;">&#xa0;</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="c68814400" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation" scale="3" format="ixt:numdotdecimal" decimals="-3">2,144</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Repurchases of common stock</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: 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; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814401" contextRef="d_2020-01-01_2020-12-31" 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; 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; 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; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814402" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3" format="ixt:numdotdecimal" decimals="-3">33,521</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; 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; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814403" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3" format="ixt:numdotdecimal" decimals="-3">12,229</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(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; margin-left: 27pt; text-indent: -9pt;">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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814404" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">10,726</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814405" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">31,617</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814406" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">10,438</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;">&#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);">&#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);"><ix:nonFraction id="c68814407" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:numdotdecimal" decimals="-3">1,608</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814408" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:numdotdecimal" decimals="-3">47</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814409" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">871</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Net increase 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814410" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" scale="3" format="ixt:numdotdecimal" decimals="-3">2,378</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814411" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" scale="3" format="ixt:numdotdecimal" decimals="-3">40,179</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814412" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" scale="3" format="ixt:numdotdecimal" decimals="-3">48,339</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;"><b>Cash and cash equivalents, beginning of period</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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814413" 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-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814414" contextRef="i_2018-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:numdotdecimal" decimals="-3">85,046</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814415" contextRef="i_2017-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:numdotdecimal" decimals="-3">36,707</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;"><b>Cash and cash equivalents, end of period</b></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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814416" 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; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814417" 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; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814418" contextRef="i_2018-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:numdotdecimal" decimals="-3">85,046</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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></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;"><b>Supplemental cash flow disclosure</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></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">Cash paid for interest</td><td 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="c68814419" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:InterestPaidNet" 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; 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="c68814420" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:InterestPaidNet" scale="3" format="ixt:numdotdecimal" decimals="-3">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><td 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="c68814421" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:InterestPaidNet" scale="3" format="ixt:numdotdecimal" decimals="-3">39</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">Cash paid for taxes</td><td 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="c68814422" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncomeTaxesPaid" scale="3" format="ixt:numdotdecimal" decimals="-4">5,650</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="c68814423" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncomeTaxesPaid" scale="3" format="ixt:numdotdecimal" decimals="-3">4,002</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="c68814424" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncomeTaxesPaid" scale="3" format="ixt:numdotdecimal" decimals="-3">9,966</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>
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr />
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><br /> The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    53
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b><a id="notes" title="notes" href="#"></a>Proto Labs, Inc.</b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>Notes to Consolidated Financial Statements</b></p>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" id="c1741298" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt;"><b>Note <em style="font: inherit;">1</em> &#x2014; Nature of Business</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Organization and business</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Proto Labs, Inc. and its subsidiaries (Proto Labs, the Company, we, us, or our) is an e-commerce driven digital manufacturer of quick-turn, on-demand&#xa0;injection-molded, computer numerical control (CNC) machined, <em style="font: inherit;">3D</em>-printed and sheet metal-fabricated custom parts for prototyping and short-run production. The Company&#x2019;s customers are product developers and engineers throughout the world who require a faster and less expensive way to obtain low volumes of parts. The Company&#x2019;s proprietary technology eliminates most of the time-consuming and expensive skilled labor conventionally required to quote and manufacture parts in low volumes, and its customers conduct nearly all of their business with the Company over the Internet. The Company targets its product lines to the millions of product developers and engineers who use <em style="font: inherit;">three</em>-dimensional (<em style="font: inherit;">3D</em>)&#xa0;computer-aided design (CAD) software to design products across a diverse range of end-markets. The Company has established operations in the United States, Europe and Japan, which the Company believes are among the largest geographic markets where these product developers and engineers are located. The Company&#x2019;s primary manufacturing product lines currently include Injection Molding, CNC Machining, <em style="font: inherit;">3D</em> Printing and Sheet Metal. Proto Labs, Inc. is headquartered in Maple Plain, Minnesota. The Company&#x2019;s subsidiaries are:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"><b>&#xa0;</b>&#xa0;</p>
   <table class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 5%; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Name</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td colspan="1" 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: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Location</b></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 5%;">&#xa0;</td><td style="width: 58%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 36%; text-align: right;">&#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: 5%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">PL-US International LLC</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United States</p> </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: 5%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs Ltd.</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United Kingdom</p> </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: 5%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">PL International Holdings, UK, Ltd.</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United Kingdom</p> </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: 5%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">PL Euro Services Limited</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United Kingdom</p> </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: 5%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs GmbH</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Germany</p> </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: 5%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs Tooling GmbH</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Germany</p> </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: 5%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs, G.K.</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Japan</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:SignificantAccountingPoliciesTextBlock" id="c1741299" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">2</em> &#x2014; Summary of Significant Accounting Policies</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ConsolidationPolicyTextBlock" id="c68815765" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Principles of consolidation</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The consolidated financial statements include the accounts of the Company and its wholly-owned subsidiaries, as listed within &#x201c;Organization and business&#x201d; above. All intercompany accounts and transactions have been eliminated in consolidation.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ComprehensiveIncomePolicyPolicyTextBlock" id="c68815766" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Comprehensive income</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Components of comprehensive income include net income and foreign currency translation adjustments. Comprehensive income is disclosed in the accompanying consolidated statements of comprehensive income and consolidated statements of shareholders&#x2019; equity.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"></p>
   <ix:exclude>
    <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
     <em style="font: inherit;">54</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>
    <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
     <div class="PGHDR" style="text-align: left; width: 100%">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
     </div>
    </div> <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p></ix:exclude>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:UseOfEstimates" id="c68815767" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounting estimates</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S. GAAP) requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and related disclosures at the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. Actual results could differ from those estimates.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:CashAndCashEquivalentsPolicyTextBlock" id="c68815768" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Cash and cash equivalents</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Cash and cash equivalents include cash and other investments, including marketable securities, with maturities of <em style="font: inherit;">three</em> months or less at the date of purchase. The Company maintains its cash in bank deposit accounts, which, at times, <em style="font: inherit;"> may </em>exceed federally insured limits. The Company has <em style="font: inherit;">not</em> experienced any losses on such accounts.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:MarketableSecuritiesPolicy" id="c68815769" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Marketable securities</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Marketable securities include held-to-maturity debt securities recorded at amortized cost. Management determines the appropriate classification of debt securities at the time of purchase and reevaluates such designation as of each balance sheet date. Debt securities are classified as held-to-maturity when the Company has the positive intent and ability to hold the securities to maturity. Held-to-maturity securities are stated at amortized cost, adjusted for amortization of premiums and accretion of discounts to maturity computed under the effective interest method. Such amortization is included in other income, net. Interest on securities classified as held to maturity is included in other income, net. The classification of marketable securities as current or non-current is dependent upon the security&#x2019;s maturity date. Securities with maturities of <em style="font: inherit;">three</em> months or less at the time of purchase are categorized as cash equivalents as described above. 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.</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:TradeAndOtherAccountsReceivablePolicy" id="c68815770" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounts receivable and allowance for doubtful accounts</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Accounts receivable are reported at the invoiced amount less an allowance for doubtful accounts. As of each balance sheet date, the Company evaluates its accounts receivable and establishes an allowance for doubtful accounts based on a combination of specific customer circumstances and credit conditions taking into account the history of write-offs and collections. A receivable is considered past due if payment has <em style="font: inherit;">not</em> been received within the period agreed upon in the invoice. Accounts receivable are written off after all collection efforts have been exhausted. Recoveries of trade receivables previously written off are recorded when received.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:InventoryPolicyTextBlock" id="c68815771" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Inventory</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Inventory consists primarily of raw materials, which are recorded at the lower of cost or market, using the average 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:PropertyPlantAndEquipmentPolicyTextBlock" id="c68815772" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Property, equipment and leasehold improvements</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Property, equipment and leasehold improvements are stated at cost. Major improvements that substantially extend an asset&#x2019;s useful life are capitalized. Repairs, maintenance and minor improvements are charged to operations as incurred. Depreciation, including amortization of leasehold improvements and assets recorded under capital leases, is calculated using the straight-line method over the estimated useful lives of the individual assets and ranges from <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c68815378" format="ixt-sec:duryear">3</ix:nonNumeric> to <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c68815379" format="ixt-sec:duryear">39</ix:nonNumeric>&#xa0;years. Manufacturing equipment is depreciated over <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c68815380" format="ixt-sec:duryear">3</ix:nonNumeric> to <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c68815381" format="ixt-sec:duryear">15</ix:nonNumeric>&#xa0;years, office furniture and equipment are depreciated over <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c68815382" format="ixt-sec:duryear">3</ix:nonNumeric> to <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c68815383" format="ixt-sec:duryear">7</ix:nonNumeric>&#xa0;years, computer hardware and software are depreciated over <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c68815384" format="ixt-sec:duryear">3</ix:nonNumeric> to <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c68815385" format="ixt-sec:duryear">5</ix:nonNumeric>&#xa0;years, building costs are depreciated over <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c68815386" format="ixt-sec:duryear">39</ix:nonNumeric>&#xa0;years, leasehold improvements are depreciated over the estimated lives of the related assets or the life of the lease, whichever is shorter, and building and land improvements are depreciated over <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MinimumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c68815387" format="ixt-sec:duryear">10</ix:nonNumeric> to <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MaximumMember" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="c68815388" format="ixt-sec:duryear">39</ix:nonNumeric> years. Assets <em style="font: inherit;">not</em> in service are <em style="font: inherit;">not</em> depreciated until the asset is put into use.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company follows ASC&#xa0;<em style="font: inherit;">350</em>-<em style="font: inherit;">40,</em><i> Internal-Use Software</i>, in accounting for internally developed software. As of <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em>, respectively, $<ix:nonFraction id="c68815394" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:CapitalizedComputerSoftwareNet" scale="6" format="ixt:numdotdecimal" decimals="-5">49.4</ix:nonFraction> million and $<ix:nonFraction id="c68815395" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:CapitalizedComputerSoftwareNet" scale="6" format="ixt:numdotdecimal" decimals="-5">32.7</ix:nonFraction> million of software development costs were capitalized. Capitalized software development costs for the year ended <em style="font: inherit;"> December 31, 2020</em>&#xa0;were $<ix:nonFraction id="c68815396" contextRef="i_2018-12-31" unitRef="USD" name="us-gaap:CapitalizedComputerSoftwareNet" scale="6" format="ixt:numdotdecimal" decimals="-5">16.7</ix:nonFraction> million.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <ix:exclude>
    <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
     <em style="font: inherit;">55</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>
    <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
     <div class="PGHDR" style="text-align: left; width: 100%">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
     </div>
    </div> <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p></ix:exclude>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy" id="c68815773" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Goodwill</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company recognizes goodwill in accordance with ASC <em style="font: inherit;">350,</em> <i>Intangibles&#x2014;Goodwill and Other</i>. Goodwill is the excess of cost of an acquired entity over the amounts assigned to assets acquired and liabilities assumed in a business combination. Goodwill is <em style="font: inherit;">not</em> amortized. Goodwill is tested for impairment annually in the <em style="font: inherit;">fourth</em> quarter of each year, and is tested for impairment between annual tests if an event occurs or circumstances change that would indicate the carrying amount <em style="font: inherit;"> may </em>be impaired. An impairment charge for goodwill is recognized only when the estimated fair value of a reporting unit, including goodwill, is less than its carrying amount. In <em style="font: inherit;">2020,</em> the Company performed a qualitative analysis based on the significance of the fair value over the carrying value in prior period assessments. As of <em style="font: inherit;"> December 31, 2020, </em><ix:nonFraction id="c68815402" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:GoodwillImpairmentLoss" scale="6" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction> impairment charges for goodwill have been recognized.</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"></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;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:InternalUseSoftwarePolicy" id="c68815774" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 7.2pt; text-align: left; text-indent: -9pt;"><i><b>Capitalized Software Costs</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#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 Company follows ASC <em style="font: inherit;">350</em>-<em style="font: inherit;">40,</em> <i>Intangibles &#x2013; Goodwill and Other, Internal-Use Software</i>, in accounting for internally developed software. Costs for internal use software are evaluated by projected and capitalized where appropriate.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" id="c68815775" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Other Intangible Assets</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Other intangible assets include software technology, customer relationships and other intangible assets acquired from other independent parties. Other intangible assets with a definite life are amortized over a period ranging from <span style="-sec-ix-hidden:c68815405">two</span> to <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_RangeAxis-MaximumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c68815406" format="ixt-sec:duryear">10</ix:nonNumeric> years on a straight line basis, and are tested for impairment whenever events or circumstances indicate that the carrying amount of an asset (asset group) <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> be recoverable. An impairment loss is recognized when the carrying amount of an asset exceeds the estimated undiscounted cash flows generated by the asset. The amount of the impairment loss recorded is calculated by the excess of the asset&#x2019;s carrying value over its fair value.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" id="c68815776" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounting for long-lived assets</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company periodically reviews the carrying amount of its property, equipment and leasehold improvements to determine if circumstances exist indicating an impairment or if depreciation periods should be modified. If facts or circumstances indicate that an impairment <em style="font: inherit;"> may </em>exist, the Company will prepare a projection of the undiscounted future cash flows of the specific assets to determine if the assets are recoverable. If impairment exists based on these projections, an adjustment will be made to reduce the carrying amount of the specific assets to fair value.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:RevenueRecognitionPolicyTextBlock" id="c68815777" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Revenue recognition</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company recognizes revenue in accordance with ASC <em style="font: inherit;">606,</em> <i>Revenue from Contracts with Customers</i>. The Company manufactures custom parts to specific customer orders that have <em style="font: inherit;">no</em> alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these <em style="font: inherit;">two</em> criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations using the estimated total time necessary to complete the parts per the customer's order and an estimate of inventory and production costs incurred to date. The majority of the Company&#x2019;s injection molding contracts have multiple performance obligations including <em style="font: inherit;">one</em> obligation to produce the mold and a <em style="font: inherit;">second</em> obligation to produce parts. For injection molding contracts with multiple performance obligations, the Company allocates revenue to each performance obligation based on its relative standalone selling price. The Company generally determines standalone selling price based on the price charged to customers.</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"></p>
   <p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:LesseeLeasesPolicyTextBlock" id="c68815778" escape="true"><p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;"><i><b>Leases</b></i></p> <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">&#xa0;</p> <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The Company accounts for leases in accordance with ASC <em style="font: inherit;">842,</em> <i>Leases</i>, which requires the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating and finance leases. The Company determines if an arrangement is a lease at inception. Operating and finance leases are included in operating and finance lease assets, current operating and finance lease liabilities and long-term operating and finance lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"></p>
   <ix:exclude>
    <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
     <em style="font: inherit;">56</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>
    <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
     <div class="PGHDR" style="text-align: left; width: 100%">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
     </div>
    </div> <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p></ix:exclude>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:IncomeTaxPolicyTextBlock" id="c68815779" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Income taxes</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for income taxes in accordance with ASC <em style="font: inherit;">740,</em><i> Income Taxes</i> (ASC <em style="font: inherit;">740</em>). Under this method, the Company determines tax assets and liabilities based upon the differences between the financial statement carrying amounts and the tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to affect taxable income. The tax consequences of most events recognized in the financial statements are included in determining income taxes currently payable. However, because tax laws and financial accounting standards differ in their recognition and measurement of assets, liabilities and equity, revenues, expenses, gains and losses, differences arise between the amount of taxable income and pretax financial income for a year and between the tax basis of assets or liabilities and their reported amounts in the financial statements. Because the Company assumes that the reported amounts of assets and liabilities will be recovered and settled, respectively, a difference between the tax basis of an asset or liability and its reported amount in the balance sheet will result in a taxable or a deductible amount in some future years when the related liabilities are settled or the reported amounts of the assets are recovered, giving rise to a deferred tax asset or liability. The Company establishes a valuation allowance for any portion of its deferred tax assets that the Company believes&#xa0;<em style="font: inherit;"> may </em><em style="font: inherit;">not</em> be recognized.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">ASC <em style="font: inherit;">740</em> also clarifies the accounting for uncertainty in income taxes recognized in an enterprise&#x2019;s financial statements by requiring that individual tax positions are recorded only when they meet a more-likely-than-<em style="font: inherit;">not</em> criterion. The Company recognizes the effect of income tax positions only if sustaining those positions is more likely than <em style="font: inherit;">not.</em> The Company records penalties and interest related to unrecognized tax benefits in income taxes in the Company&#x2019;s Consolidated Statements of Income.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:CompensationRelatedCostsPolicyTextBlock" id="c68815780" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Stock-based compensation</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for stock-based compensation in accordance with ASC <em style="font: inherit;">718,</em><i> Compensation&#x2014;Stock Compensation</i> (ASC <em style="font: inherit;">718</em>). Under the fair value recognition provisions of ASC <em style="font: inherit;">718,</em> the Company measures stock-based compensation cost at the grant date fair value and recognizes the compensation expense over the requisite service period, which is the vesting period, using a straight-line attribution method. The amount of stock-based compensation expense recognized during a period is based on the portion of the awards that are ultimately expected to vest. The Company accounts for forfeitures as they occur. Ultimately, the total expense recognized over the vesting period will only be for those awards that vest. The Company&#x2019;s awards are <em style="font: inherit;">not</em> eligible to vest early in the event of retirement, however, the awards vest early in the event of a change in control.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">In determining the compensation cost of the options granted, the fair value of options granted has been estimated on the date of grant using the Black-Scholes option-pricing model.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:AdvertisingCostsPolicyTextBlock" id="c68815781" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Advertising costs</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Advertising is expensed as incurred and was approximately $<ix:nonFraction id="c68815425" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:AdvertisingExpense" scale="6" format="ixt:numdotdecimal" decimals="-5">11.5</ix:nonFraction>&#xa0;million, $<ix:nonFraction id="c68815426" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:AdvertisingExpense" scale="6" format="ixt:numdotdecimal" decimals="-6">13.0</ix:nonFraction> million and $<ix:nonFraction id="c68815427" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:AdvertisingExpense" scale="6" format="ixt:numdotdecimal" decimals="-5">11.8</ix:nonFraction> million for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, respectively.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ResearchAndDevelopmentExpensePolicy" id="c68815782" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Research and development</b></i></p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Research and development expenses consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements 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 <em style="font: inherit;">350</em>-<em style="font: inherit;">40,</em> <i>Intangibles - Goodwill and Other, Internal-Use Software</i>. Research and development costs were approximately $<ix:nonFraction id="c68815432" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:ResearchAndDevelopmentExpense" scale="6" format="ixt:numdotdecimal" decimals="-5">36.9</ix:nonFraction>&#xa0;million, $<ix:nonFraction id="c68815433" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:ResearchAndDevelopmentExpense" scale="6" format="ixt:numdotdecimal" decimals="-5">32.7</ix:nonFraction> million and $<ix:nonFraction id="c68815434" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:ResearchAndDevelopmentExpense" scale="6" format="ixt:numdotdecimal" decimals="-5">28.7</ix:nonFraction> million for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, respectively.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" id="c68815783" escape="true"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Foreign currency translation/transactions</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company translated the balance sheets of its foreign subsidiaries at period-end exchange rates and the income statement at the average exchange rates in effect throughout the period. The Company has recorded the translation adjustment as a separate component of consolidated shareholders&#x2019; equity. Foreign currency transaction gains and losses are recognized in the consolidated statements of comprehensive income.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;"></p></ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;">&#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;">57</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>
    <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
     <div class="PGHDR" style="text-align: left; width: 100%">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
     </div>
    </div> <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p></ix:exclude>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"></p>
   <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b></b></i></p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock" id="c68815784" escape="true"><p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Recently adopted accounting pronouncements</b></i></p> <p style="margin: 0 29.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">During the <em style="font: inherit;">first</em> quarter of <em style="font: inherit;">2020,</em> the Company adopted the Financial Accounting Standards Board (FASB) Accounting Standards Update (ASU) <em style="font: inherit;">2016</em>-<em style="font: inherit;">13,</em> <i>Financial Instruments &#x2013; Credit Losses</i>, which is intended to provide financial statement users with more decision-useful information about the expected credit losses on financial instruments held by a reporting entity at each reporting date. The adoption of this guidance had <em style="font: inherit;">no</em> material impact on our consolidated financial statements.</p> <p style="margin: 0 29.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">During the <em style="font: inherit;">first</em> quarter of <em style="font: inherit;">2019,</em> the Company adopted the FASB ASU <em style="font: inherit;">2016</em>-<em style="font: inherit;">02,</em>&#xa0;<i>Leases&#xa0;</i>(ASC <em style="font: inherit;">842</em>), which introduces the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company has adopted the new lease standard using the new transition option issued under the amendments in ASU <em style="font: inherit;">2018</em>-<em style="font: inherit;">11,</em>&#xa0;<i>Leases</i>, which allowed the Company to continue to apply the legacy guidance in Accounting Standards Codification (ASC) <em style="font: inherit;">840,</em>&#xa0;<i>Leases</i>, in the comparative periods presented in the year of adoption.&#xa0;The Company elected the package of practical expedients permitted under the transition guidance within the new standard, which among other things, allowed the Company to carry forward the historical lease classification. The Company made an accounting policy election to keep leases with an initial term of <em style="font: inherit;">12</em> months or less off of the balance sheet. The Company will recognize those lease payments in the Consolidated Statements of Comprehensive Income on a straight-line basis over the lease term. The impact of the adoption was an increase to the Company&#x2019;s operating lease assets and liabilities on <em style="font: inherit;"> January 1, 2019 </em>of $<ix:nonFraction id="c68815452" contextRef="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="6" format="ixt:numdotdecimal" decimals="-5">13.1</ix:nonFraction> million.</p> <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Recently issued accounting pronouncements</b></i></p> <p style="margin: 0 29.7pt 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p> <p style="margin: 0 29.7pt 0 -3pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In <em style="font: inherit;"> December 2019, </em>the FASB issued ASU <em style="font: inherit;">2019</em>-<em style="font: inherit;">12,</em> <i>Income Taxes</i>, which is intended to simplify the accounting for income taxes. This guidance will be effective for fiscal years beginning after <em style="font: inherit;"> December 15, 2020 </em>and interim periods within those fiscal years with early adoption permitted. The Company is evaluating the impact of future adoption of this guidance on its consolidated financial statements, but does <em style="font: inherit;">not</em> expect the impact to be material.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:justify;text-indent:27pt;">&#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:nonNumeric>
   <ix:exclude>
    <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
     <em style="font: inherit;">58</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>
    <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
     <div class="PGHDR" style="text-align: left; width: 100%">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
     </div>
    </div> <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:RevenueFromContractWithCustomerTextBlock" id="c1741300" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">3</em> &#x2013; Revenue</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#xa0;accounts for revenue in accordance with ASC <em style="font: inherit;">606,</em> <i>Revenue from Contracts with Customers</i>. The Company provides quality, quick-turn prototyping and on-demand manufacturing services. As a result, the majority of revenue recognized in a reporting period is based on completed, invoiced contracts.&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">A performance obligation is a promise in a contract to transfer a distinct good or service to the customer, and is the unit of account in ASC <em style="font: inherit;">606.</em> The majority of the Company&#x2019;s CNC machining, <em style="font: inherit;">3D</em> printing, and sheet metal contracts have a single performance obligation. The majority of the Company&#x2019;s injection molding contracts have multiple performance obligations including <em style="font: inherit;">one</em> obligation to produce the mold and a <em style="font: inherit;">second</em> obligation to produce parts. For injection molding contracts with multiple performance obligations, we allocate revenue to each performance obligation based on its relative standalone selling price. We generally determine standalone selling price based on the price charged to customers.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company manufactures parts that have <em style="font: inherit;">no</em> alternative use to the Company since the parts are custom made to specific customer orders, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these <em style="font: inherit;">two</em> criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations using the estimated total time necessary to complete the parts per the customer's order and an estimate of inventory and production costs incurred to date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue by geographic region for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em> was as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:DisaggregationOfRevenueTableTextBlock" id="c8DF70E45-AE02-4788-B9AF-95445053EC64" escape="true" continuedAt="A132A6BB-9FF1-4473-8F6B-7B74149B54FA">
    <table class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 46%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Revenue:</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></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; 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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814437" contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">345,708</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814438" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">360,205</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814439" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">350,535</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; 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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814440" contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">74,796</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814441" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">82,805</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814442" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">80,889</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; 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: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 15%; 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="c68814443" contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">13,891</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 15%; 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="c68814444" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">15,718</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 15%; 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="c68814445" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">14,172</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 18pt;">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: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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="c68814446" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">434,395</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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="c68814447" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">458,728</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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="c68814448" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">445,596</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue by product line for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em> was as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:continuation id="A132A6BB-9FF1-4473-8F6B-7B74149B54FA">
    <table class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 46%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Revenue:</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></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; margin-left: 18pt;">Injection Molding</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814456" contextRef="d_2020-01-01_2020-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">217,992</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814457" contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">217,415</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814458" contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">210,523</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; margin-left: 18pt;">CNC Machining</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814459" contextRef="d_2020-01-01_2020-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">131,587</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814460" contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">155,473</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814461" contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">153,521</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; margin-left: 18pt;">3D Printing</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814462" contextRef="d_2020-01-01_2020-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">62,502</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814463" contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">61,352</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814464" contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">53,342</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; margin-left: 18pt;">Sheet Metal</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814465" contextRef="d_2020-01-01_2020-12-31_ProductOrServiceAxis-SheetMetalMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">18,838</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814466" contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-SheetMetalMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-6">21,000</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814467" contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-SheetMetalMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">24,998</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; margin-left: 18pt;">Other 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; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 15%; 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="c68814468" contextRef="d_2020-01-01_2020-12-31_ProductOrServiceAxis-OtherProductsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">3,476</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 15%; 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="c68814469" contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-OtherProductsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">3,488</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 15%; 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="c68814470" contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-OtherProductsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">3,212</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 18pt;">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: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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="c68814471" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">434,395</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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="c68814472" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">458,728</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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="c68814473" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">445,596</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:continuation>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#xa0;generally expenses sales commissions when incurred because the amortization period would have been <em style="font: inherit;">one</em> year or less. These costs are recorded within marketing and sales expenses. The value of unsatisfied performance obligations for contracts with an original expected length of <em style="font: inherit;">one</em> year or less is <em style="font: inherit;">not</em> material.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:22.2pt;margin-right:14.7pt;margin-top:0pt;text-align:center;">&#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;">59</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>&#xa0;</ix:exclude><ix:exclude><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:EarningsPerShareTextBlock" id="c1741303" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">4</em> &#x2013; Net Income Per Common Share</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">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 the 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 and other stock-based awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table presents the calculation of net income per basic and diluted share attributable to common shareholders:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" id="c1741304" escape="true">
    <table class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></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; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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;">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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814481" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">50,867</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="c68814482" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">63,655</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="c68814483" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">76,588</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>&#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;, 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;">Basic - weighted-average shares outstanding:</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="c68814484" contextRef="d_2020-01-01_2020-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">26,737,425</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="c68814485" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">26,866,985</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="c68814486" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">26,982,614</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;">Effect of dilutive securities:</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></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: 18pt;">Employee stock options and other</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814487" contextRef="d_2020-01-01_2020-12-31" unitRef="Share" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="0" format="ixt:numdotdecimal" decimals="INF">158,932</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814488" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="0" format="ixt:numdotdecimal" decimals="INF">182,438</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814489" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="0" format="ixt:numdotdecimal" decimals="INF">296,202</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Diluted - weighted-average shares outstanding:</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);">&#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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814490" contextRef="d_2020-01-01_2020-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,896,357</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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);">&#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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814491" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">27,049,423</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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);">&#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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814492" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">27,278,816</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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;">Net income per share attributable to common shareholders:</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></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; margin-left: 18pt;">Basic</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: 1px solid rgb(0, 0, 0);">$</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814493" contextRef="d_2020-01-01_2020-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">1.90</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814494" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">2.37</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814495" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">2.84</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 18pt;">Diluted</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814496" contextRef="d_2020-01-01_2020-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">1.89</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814497" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">2.35</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814498" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">2.81</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
  </ix:nonNumeric>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    60
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"><b>&#xa0;</b></p>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock" id="c1741305" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">5</em> &#x2013; Goodwill and Other Intangible Assets</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The changes in the carrying amount of goodwill for the years ended <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em> were as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfGoodwillTextBlock" id="c1741306" escape="true">
    <table class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 25%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Dec. 31, 2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Goodwill acquired during 2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);" class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Dec. 31, 2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Goodwill acquired during 2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Dec. 31, 2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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><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;, 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;">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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814506" contextRef="i_2018-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-3">123,883</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814507" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:GoodwillAcquiredDuringPeriod" 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; 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;" class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted"><ix:nonFraction id="c68814508" contextRef="i_2019-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-3">123,883</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814509" contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:GoodwillAcquiredDuringPeriod" 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; 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="c68814510" contextRef="i_2020-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-3">123,883</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;">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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814511" contextRef="i_2018-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-3">4,239</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814512" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:GoodwillAcquiredDuringPeriod" 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;" class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted"><ix:nonFraction id="c68814513" contextRef="i_2019-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-3">4,239</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814514" contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:GoodwillAcquiredDuringPeriod" 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814515" contextRef="i_2020-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-3">4,239</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;">Japan</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);">&#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);"><ix:nonFraction id="c68814516" contextRef="i_2018-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-4">630</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#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);"><ix:nonFraction id="c68814517" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:GoodwillAcquiredDuringPeriod" 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; padding-bottom: 1px;">&#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);">&#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);" class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted"><ix:nonFraction id="c68814518" contextRef="i_2019-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-4">630</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#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);"><ix:nonFraction id="c68814519" contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:GoodwillAcquiredDuringPeriod" 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; padding-bottom: 1px;">&#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);">&#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);"><ix:nonFraction id="c68814520" contextRef="i_2020-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-4">630</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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 goodwill</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: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814521" contextRef="i_2018-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-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814522" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:GoodwillAcquiredDuringPeriod" 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-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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);" class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted"><ix:nonFraction id="c68814523" contextRef="i_2019-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-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814524" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:GoodwillAcquiredDuringPeriod" 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-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68814525" 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-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Intangible assets other than goodwill for the years ended <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em> were as follows:&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" id="c1741307" escape="true">
    <table class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0"><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: 20%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31, 2020</em></em></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="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31, 2019</em></em></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 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: 7%;"><em style="font: inherit;">&#xa0;</em></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 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Weighted Average Useful Life</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: 20%;"> <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: 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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Gross</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Accumulated Amortization</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Net</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Gross</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Accumulated Amortization</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Net</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Useful Life (in years)</em></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%;"><b><em style="font: inherit;">Remaining (in years)</em></b></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="background-color: rgb(204, 238, 255); vertical-align: bottom"><td colspan="4" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 22%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><em style="font: inherit;">Intangible Assets with finite lives:</em></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: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#xa0;</em></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: 7%;"><em style="font: inherit;">&#xa0;</em></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: 7%;"><em style="font: inherit;">&#xa0;</em></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: 7%;"><em style="font: inherit;">&#xa0;</em></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: 7%;"><em style="font: inherit;">&#xa0;</em></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: 7%;"><em style="font: inherit;">&#xa0;</em></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: 7%;"><em style="font: inherit;">&#xa0;</em></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: 20%">Marketing assets</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$<ix:nonFraction id="c68814550" 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="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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$(<ix:nonFraction id="c68814551" 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$<ix:nonFraction id="c68814552" 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="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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$<ix:nonFraction id="c68814553" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-4">930</ix:nonFraction></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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$(<ix:nonFraction id="c68814554" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">527</ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$<ix:nonFraction id="c68814555" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">403</ix:nonFraction></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; width: 1%"><ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c68814556" format="ixt-sec:duryear">10.0</ix:nonNumeric></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; width: 1%"><ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c68814557" format="ixt-sec:duryear">3.3</ix:nonNumeric></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: 20%">Non-compete agreement</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"><ix:nonFraction id="c68814558" 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="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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">(<ix:nonFraction id="c68814559" 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"><ix:nonFraction id="c68814560" 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="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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"><ix:nonFraction id="c68814561" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-4">270</ix:nonFraction></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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">(<ix:nonFraction id="c68814562" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">222</ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"><ix:nonFraction id="c68814563" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">48</ix:nonFraction></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; width: 1%"><ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MinimumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c68814598" format="ixt-sec:duryear">2.0</ix:nonNumeric> - <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MaximumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c68814599" format="ixt-sec:duryear">5.0</ix:nonNumeric></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; width: 1%"><ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c68814565" format="ixt-sec:duryear">2.3</ix:nonNumeric></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: 20%">Software technology</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"><ix:nonFraction id="c68814566" 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="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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">(<ix:nonFraction id="c68814567" 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"><ix:nonFraction id="c68814568" 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="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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"><ix:nonFraction id="c68814569" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-3">13,229</ix:nonFraction></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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">(<ix:nonFraction id="c68814570" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">2,275</ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"><ix:nonFraction id="c68814571" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">10,954</ix:nonFraction></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; width: 1%"><ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c68814572" format="ixt-sec:duryear">10.0</ix:nonNumeric></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; width: 1%"><ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c68814573" format="ixt-sec:duryear">7.3</ix:nonNumeric></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: 20%">Customer relationships</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c68814574" 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="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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814575" 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c68814576" 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="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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c68814577" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-4">10,070</ix:nonFraction></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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814578" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">4,106</ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c68814579" contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">5,964</ix:nonFraction></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; width: 1%"><ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MinimumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c68814602" format="ixt-sec:duryear">6.0</ix:nonNumeric> - <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MaximumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c68814603" format="ixt-sec:duryear">9.0</ix:nonNumeric></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; width: 1%"><ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c68814581" format="ixt-sec:duryear">2.8</ix:nonNumeric></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: 20%;"> <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%; 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);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814582" 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; padding-bottom: 3px; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c68814583" 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; padding-bottom: 3px;">)</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: 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814584" 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; padding-bottom: 3px; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814585" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-3">25,829</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c68814586" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-4">8,460</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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: 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814587" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">17,369</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><em style="font: inherit;">&#xa0;</em></td><td style="padding-bottom: 3px; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#xa0;</em></td><td style="padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Amortization expense for intangible assets for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em> was $<ix:nonFraction id="c68815479" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:AmortizationOfIntangibleAssets" scale="6" format="ixt:numdotdecimal" decimals="-6">3.0</ix:nonFraction> million, $<ix:nonFraction id="c68815480" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:AmortizationOfIntangibleAssets" scale="6" format="ixt:numdotdecimal" decimals="-5">3.5</ix:nonFraction> million and $<ix:nonFraction id="c68815481" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:AmortizationOfIntangibleAssets" scale="6" format="ixt:numdotdecimal" decimals="-5">3.2</ix:nonFraction> million, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets is as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" id="c1741308" escape="true">
    <table class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 82%;"> <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: 1px solid rgb(0, 0, 0);"><b><em style="font: inherit;">Estimated Amortization Expense</em></b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt">2021</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">$</td><td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68814607" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" scale="3" format="ixt:numdotdecimal" decimals="-3">3,016</ix:nonFraction></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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">2022</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68814608" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" scale="3" format="ixt:numdotdecimal" decimals="-3">3,016</ix:nonFraction></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(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">2023</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68814609" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" scale="3" format="ixt:numdotdecimal" decimals="-3">2,813</ix:nonFraction></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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">2024</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68814610" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" scale="3" format="ixt:numdotdecimal" decimals="-5">1,400</ix:nonFraction></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(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">2025</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68814611" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" scale="3" format="ixt:numdotdecimal" decimals="-3">1,369</ix:nonFraction></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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Thereafter</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: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c68814612" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" scale="3" format="ixt:numdotdecimal" decimals="-3">2,736</ix:nonFraction></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(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: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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="c68814613" 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; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#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;">61</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a></div></ix:exclude><ix:exclude><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><div class="PGHDR" style="text-align: left; width: 100%"><a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:FairValueDisclosuresTextBlock" id="c1741309" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">6</em> &#x2013; Fair Value Measurements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">ASC <em style="font: inherit;">820,</em><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 which 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"><i>Level&#xa0;</i><em style="font: inherit;">1&#x2014;Quoted</em> prices in active markets for identical assets or liabilities.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"><i>Level&#xa0;</i><em style="font: inherit;">2&#x2014;Observable</em> inputs other than Level&#xa0;<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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"><i>Level&#xa0;</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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#x2019;s cash equivalents measured at fair value as of <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em>, respectively, consist of money market mutual funds. The Company determines the fair value of these financial assets using Level&#xa0;<em style="font: inherit;">1</em> inputs.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following tables summarizes financial assets as of <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em> measured at fair value on a recurring basis:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock" id="c1741310" escape="true">
    <table class="finTable" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2019</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 22%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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><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;, 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash and cash equivalents</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Money market mutual funds</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: 1px solid rgb(0, 0, 0);">$</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="c68814626" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:MoneyMarketFundsAtCarryingValue" 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-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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="c68814627" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:MoneyMarketFundsAtCarryingValue" 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-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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="c68814628" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:MoneyMarketFundsAtCarryingValue" 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-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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="c68814629" contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:MoneyMarketFundsAtCarryingValue" scale="3" format="ixt:numdotdecimal" decimals="-3">68,962</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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="c68814630" contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:MoneyMarketFundsAtCarryingValue" 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-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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="c68814631" contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:MoneyMarketFundsAtCarryingValue" 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-bottom: 1px; 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; margin-left: 9pt;">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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814632" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" 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; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814633" 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; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814634" 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; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814635" contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:numdotdecimal" decimals="-3">68,962</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814636" contextRef="i_2019-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; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814637" contextRef="i_2019-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; padding-bottom: 3px;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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;">62</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a></div></ix:exclude><ix:exclude><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><div class="PGHDR" style="text-align: left; width: 100%"><a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:InvestmentTextBlock" id="c1741311" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">7</em> &#x2013; Marketable Securities</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. The securities are categorized as held-to-maturity and are recorded at amortized cost. Categorization as held-to-maturity is based on the Company&#x2019;s ability and intent to hold these securities to maturity. Information regarding the Company&#x2019;s short-term and long-term marketable securities as of <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em> is as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:HeldToMaturitySecuritiesTextBlock" id="c16A02872-EA8D-4AAF-BD8D-4FDE0DA0691E" escape="true" continuedAt="CAD40E18-E9B5-41DF-BFDB-37863A103AD1">
    <table class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; 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;, Times, serif; font-size: 10pt; width: 48%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Amortized Cost</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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;, 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; 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="c68814648" 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; 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="c68814649" 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; 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="c68814650" 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; 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="c68814651" 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;">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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814652" 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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814653" 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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814654" 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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814655" 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. 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;">&#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="c68814656" 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;">&#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="c68814657" 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;">&#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="c68814658" 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;">&#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="c68814659" 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; padding: 0; margin: 0">Commercial paper</td><td 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="c68814660" 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: 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="c68814661" 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: 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="c68814662" 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: 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="c68814663" 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: 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;"> <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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814664" 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; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814665" 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; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814666" 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; padding-bottom: 1px;">&#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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814667" 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; padding-bottom: 1px; 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;">Total marketable securities</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814668" 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; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814669" 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; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c68814670" 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; padding-bottom: 3px;">)</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814671" 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; padding-bottom: 3px;">&#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="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <ix:continuation id="CAD40E18-E9B5-41DF-BFDB-37863A103AD1">
    <table class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2019</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 48%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Amortized Cost</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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;, 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; 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="c68814680" contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">6,274</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="c68814681" contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3" format="ixt:numdotdecimal" decimals="-3">1</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="c68814682" contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">7</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814683" contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3" format="ixt:numdotdecimal" decimals="-3">6,268</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814684" contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">26,944</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="c68814685" contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3" format="ixt:numdotdecimal" decimals="-4">80</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="c68814686" contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">12</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="c68814687" contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3" format="ixt:numdotdecimal" decimals="-3">27,012</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. 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;">&#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="c68814688" contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">10,204</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="c68814689" contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3" format="ixt:numdotdecimal" decimals="-3">9</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="c68814690" contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">3</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="c68814691" contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3" format="ixt:numdotdecimal" decimals="-4">10,210</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">Commercial paper</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"><ix:nonFraction id="c68814692" contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">3,491</ix:nonFraction></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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68814693" contextRef="i_2019-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">&#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"><ix:nonFraction id="c68814694" contextRef="i_2019-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">&#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"><ix:nonFraction id="c68814695" contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3" format="ixt:numdotdecimal" decimals="-3">3,491</ix:nonFraction></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(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;">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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814696" contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">1,484</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814697" contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3" format="ixt:numdotdecimal" decimals="-3">22</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814698" contextRef="i_2019-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; padding-bottom: 1px;">&#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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814699" contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3" format="ixt:numdotdecimal" decimals="-3">1,506</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Total marketable securities</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814700" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:HeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">48,397</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814701" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3" format="ixt:numdotdecimal" decimals="-3">112</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c68814702" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">22</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814703" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3" format="ixt:numdotdecimal" decimals="-3">48,487</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td></tr>
</tbody></table>
   </ix:continuation>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">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. government agency securities, U.S. municipal securities, commercial paper and certificates of deposit are primarily determined using dealer quotes or quoted market prices for similar securities (Level <em style="font: inherit;">2</em>).</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt;">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.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#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;">63</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a></div></ix:exclude><ix:exclude><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><div class="PGHDR" style="text-align: left; width: 100%"><a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The <em style="font: inherit;"> December 31, 2020</em>&#xa0;balance of held-to-maturity debt securities by contractual maturity is shown in the following table at amortized cost. 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock" id="c1741314" escape="true">
    <table class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 83%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: &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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814706" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" 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; 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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814707" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" 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-bottom: 1px; 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;">Total marketable securities</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814708" 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; padding-bottom: 3px;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock" id="c1741315" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">8</em> &#x2013; Property and Equipment</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Property and equipment consists of the following:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:PropertyPlantAndEquipmentTextBlock" id="c1741316" escape="true">
    <table class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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="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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 66%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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="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;">Land</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814713" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:Land" scale="3" format="ixt:numdotdecimal" decimals="-3">14,028</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814714" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:Land" scale="3" format="ixt:numdotdecimal" decimals="-3">14,098</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;">Buildings and improvements</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814715" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:BuildingsAndImprovementsGross" scale="3" format="ixt:numdotdecimal" decimals="-3">77,285</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814716" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:BuildingsAndImprovementsGross" scale="3" format="ixt:numdotdecimal" decimals="-3">75,843</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;">Machinery and equipment</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814717" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:MachineryAndEquipmentGross" scale="3" format="ixt:numdotdecimal" decimals="-3">221,301</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814718" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:MachineryAndEquipmentGross" scale="3" format="ixt:numdotdecimal" decimals="-3">208,954</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;">Computer hardware and software</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814719" contextRef="i_2020-12-31" unitRef="USD" name="prlb:ComputerHardwareAndSoftwareGross" scale="3" format="ixt:numdotdecimal" decimals="-3">79,207</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814720" contextRef="i_2019-12-31" unitRef="USD" name="prlb:ComputerHardwareAndSoftwareGross" scale="3" format="ixt:numdotdecimal" decimals="-3">24,953</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;">Leasehold improvements</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814721" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:LeaseholdImprovementsGross" scale="3" format="ixt:numdotdecimal" decimals="-3">7,821</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814722" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:LeaseholdImprovementsGross" scale="3" format="ixt:numdotdecimal" decimals="-3">7,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;">Construction in progress</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814723" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:ConstructionInProgressGross" scale="3" format="ixt:numdotdecimal" decimals="-4">33,780</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814724" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:ConstructionInProgressGross" scale="3" format="ixt:numdotdecimal" decimals="-3">54,313</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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;">&#xa0;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814725" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:numdotdecimal" decimals="-3">433,422</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814726" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:numdotdecimal" decimals="-3">385,502</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;">Accumulated depreciation and amortization</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814727" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">150,756</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814728" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-4">121,790</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">Property and equipment, net</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814729" 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; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814730" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">263,712</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;Depreciation expense for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em> was $<ix:nonFraction id="c68815511" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:Depreciation" scale="6" format="ixt:numdotdecimal" decimals="-5">29.6</ix:nonFraction> million, $<ix:nonFraction id="c68815512" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:Depreciation" scale="6" format="ixt:numdotdecimal" decimals="-5">27.4</ix:nonFraction> million and $<ix:nonFraction id="c68815513" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:Depreciation" scale="6" format="ixt:numdotdecimal" decimals="-5">23.5</ix:nonFraction> million, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:InventoryDisclosureTextBlock" id="c1741317" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">9</em> &#x2013; Inventory</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Inventory consists primarily of raw materials, which are recorded at the lower of cost or market using the average-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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#x2019;s inventory consists of the following:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfInventoryCurrentTableTextBlock" id="c1741318" escape="true">
    <table class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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="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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 66%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Total inventory</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68814735" 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">&#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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68814736" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:InventoryGross" scale="3" format="ixt:numdotdecimal" decimals="-3">10,319</ix:nonFraction></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="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;">Allowance for obsolescence</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814737" 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; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814738" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:InventoryValuationReserves" scale="3" format="ixt:numdotdecimal" decimals="-3">244</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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">Inventory, net of allowance</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: 14%; 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="c68814739" 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-bottom: 3px;">&#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: 14%; 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="c68814740" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:numdotdecimal" decimals="-3">10,075</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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;">64</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a></div></ix:exclude><ix:exclude><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><div class="PGHDR" style="text-align: left; width: 100%"><a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:DebtDisclosureTextBlock" id="c1741319" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">10</em> &#x2013; Financing Obligations</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company had <ix:nonFraction id="c68815519" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:LineOfCredit" scale="0" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction> financing obligations as of <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em>.<i>&#xa0;</i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock" id="c1741320" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">11</em> &#x2013; Employee Benefit Plans</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company maintains a <em style="font: inherit;">401</em>(k) retirement plan that covers employees in the United States. Under the plan, a full-time or regular part-time (over <ix:nonFraction id="c68815523" contextRef="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="Pure" name="prlb:MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" scale="0" format="ixt:numdotdecimal" decimals="INF">20</ix:nonFraction> hours/week) employee becomes a participant after completing <span style="-sec-ix-hidden:c68815524">three</span> months of employment. Employees <em style="font: inherit;"> may </em>elect to contribute up to <ix:nonFraction id="c68815525" contextRef="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="Pure" name="us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" scale="-2" format="ixt:numdotdecimal" decimals="1">50</ix:nonFraction> percent of regular gross pay, subject to federal law limits on the dollar amount that participants <em style="font: inherit;"> may </em>contribute to the plan, each calendar year. The Company matches part of the employee contributions and <em style="font: inherit;"> may </em>make a discretionary contribution to the plan. Total employer contributions were approximately $<ix:nonFraction id="c68815526" contextRef="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="USD" name="us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount" scale="6" format="ixt:numdotdecimal" decimals="-5">3.3</ix:nonFraction>&#xa0;million, $<ix:nonFraction id="c68815527" contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="USD" name="us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount" scale="6" format="ixt:numdotdecimal" decimals="-5">3.1</ix:nonFraction> million and $<ix:nonFraction id="c68815528" contextRef="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="USD" name="us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount" scale="6" format="ixt:numdotdecimal" decimals="-5">2.7</ix:nonFraction> million for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018,</em> respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company also sponsors a defined contribution retirement plan that covers the employees in the United Kingdom. Total employer contributions were approximately $<ix:nonFraction id="c68815531" contextRef="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="USD" name="us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount" scale="6" format="ixt:numdotdecimal" decimals="-5">0.5</ix:nonFraction>&#xa0;million for the year ended <em style="font: inherit;"> December 31, 2020 </em>and approximately&#xa0;$<ix:nonFraction id="c68815532" contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember" unitRef="USD" name="us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount" scale="6" format="ixt:numdotdecimal" decimals="-5">0.3</ix:nonFraction> million&#xa0;in each of the years ended <em style="font: inherit;"> December 31, 2019 </em>and <em style="font: inherit;">2018.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" id="c1741321" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">12</em> &#x2013; Stock-Based Compensation</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has <em style="font: inherit;">two</em> equity incentive plans: the <em style="font: inherit;">2000</em> Stock Option Plan (<em style="font: inherit;">2000</em> Plan) and the <em style="font: inherit;">2012</em> Long-Term Incentive Plan (<em style="font: inherit;">2012</em> Plan). Upon the adoption of the <em style="font: inherit;">2012</em> Plan on <em style="font: inherit;"> February&#xa0;</em><em style="font: inherit;">21,</em> <em style="font: inherit;">2012,</em> all shares that were reserved but <em style="font: inherit;">not</em> issued under the <em style="font: inherit;">2000</em> Plan were assumed by the <em style="font: inherit;">2012</em> Plan. <em style="font: inherit;">No</em> additional&#xa0;awards will be issued under the <em style="font: inherit;">2000</em> Plan. Under the <em style="font: inherit;">2012</em> Plan, the Company has the ability to grant stock options, stock appreciation rights (SARs), restricted stock, performance stock, 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:c68815550">ten</span> years from the date of grant. The compensation committee of the board of directors <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. Restricted stock is valued at fair market value on the date of grant.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <ix:exclude>
    <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
     <em style="font: inherit;">65</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>&#xa0;</ix:exclude><ix:exclude><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">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 at a discount through payroll deductions of up to <ix:nonFraction id="c68815555" contextRef="d_2020-01-01_2020-12-31_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:c68815556">six</span>-month offering periods with a single purchase period, and at the end of each offering period, employees are able to purchase shares at <ix:nonFraction id="c68815557" contextRef="d_2020-01-01_2020-12-31_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. The Company determines the fair value stock-based compensation related to its ESPP in accordance with ASC <em style="font: inherit;">718</em> using the component measurement approach and the Black-Scholes standard option pricing model.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Employees purchased <ix:nonFraction id="c68815560" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-ESPPMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:numdotdecimal" decimals="INF">42,235</ix:nonFraction> and <ix:nonFraction id="c68815561" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:numdotdecimal" decimals="INF">41,615</ix:nonFraction> shares of common stock under the ESPP at an average exercise price of $<ix:nonFraction id="c68815562" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-ESPPMember" unitRef="Share" name="prlb:EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" scale="0" format="ixt:numdotdecimal" decimals="INF">85.85</ix:nonFraction> and $<ix:nonFraction id="c68815563" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember" unitRef="Share" name="prlb:EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" scale="0" format="ixt:numdotdecimal" decimals="INF">86.70</ix:nonFraction> during <em style="font: inherit;">2020</em>&#xa0;and <em style="font: inherit;">2019</em>, respectively. As of <em style="font: inherit;"> December 31, 2020</em>, <ix:nonFraction id="c68815566" contextRef="i_2020-12-31_AwardTypeAxis-ESPPMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" scale="0" format="ixt:numdotdecimal" decimals="INF">1,126,595</ix:nonFraction>&#xa0;shares remained available for future issuance under the ESPP.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company determines its stock-based compensation in accordance with ASC <em style="font: inherit;">718,</em> which requires the measurement and recognition of compensation expense for all share-based payment awards made to employees and non-employee directors based on fair value.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Determining the appropriate fair value model and calculating the fair value of stock option grants requires the input of subjective assumptions. The Company uses the Black-Scholes option pricing model to value its stock option awards. Stock-based compensation expense is calculated using the Company&#x2019;s best estimates, which involve inherent uncertainties and the application of management&#x2019;s judgment. Significant estimates include its expected term and&#xa0;stock price volatility.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The expected term of stock options is estimated from the vesting period of the award and represents the weighted average period that&#xa0;the Company's&#xa0;stock options are expected to be outstanding. The Company estimates the volatility of its stock price based on the historic volatility of its common stock. The Company bases the risk-free interest rate that it uses in the Black-Scholes option pricing model on U.S.&#xa0;Treasury instruments with maturities similar to the expected term of the award being valued. The Company has never paid and does <em style="font: inherit;">not</em> anticipate paying, any cash dividends in the foreseeable future and, therefore, the Company uses an expected dividend yield of <em style="font: inherit;">zero</em> in the option pricing model. The Company accounts for forfeitures as they occur. The Company allocates stock-based compensation expense on a straight-line basis over the requisite service period.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes stock-based compensation expense for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, respectively:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" id="c1741322" escape="true">
    <table class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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;">Stock options and other</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814747" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">13,327</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814748" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">9,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><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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814749" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">10,113</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;">Employee stock purchase plan</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814750" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-ESPPMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">1,346</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814751" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-4">1,190</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814752" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-ESPPMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">815</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Total stock-based compensation expense</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814753" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">14,673</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814754" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">10,781</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814755" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">10,928</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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></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;">Cost of 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;">$</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814756" contextRef="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-CostOfSalesMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">2,451</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814757" contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-CostOfSalesMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">2,056</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814758" contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-CostOfSalesMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">1,543</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;">Operating expenses:</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="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="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="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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Marketing and sales</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814759" contextRef="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">3,121</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814760" contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">2,632</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814761" contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">1,942</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; margin-left: 18pt;">Research and development</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814762" contextRef="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-4">2,440</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814763" contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">1,851</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814764" contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">1,517</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; margin-left: 18pt;">General and administrative</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814765" contextRef="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">6,661</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814766" contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">4,242</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814767" contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">5,926</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Total stock-based compensation expense</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814768" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">14,673</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814769" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">10,781</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814770" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">10,928</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#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;">66</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a></div></ix:exclude><ix:exclude><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><div class="PGHDR" style="text-align: left; width: 100%"><a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Stock Options</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table provides the assumptions used in the Black-Scholes option pricing model for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" id="c1741323" escape="true">
    <table style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="c68814797" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="3">0.50</ix:nonFraction> - <ix:nonFraction id="c68814798" contextRef="d_2020-01-01_2020-12-31_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><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: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814811" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">2.35</ix:nonFraction> - <ix:nonFraction id="c68814812" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">2.58</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: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814825" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">2.52</ix:nonFraction> - <ix:nonFraction id="c68814826" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">3.07</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;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c68814781" 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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c68814782" 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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c68814783" 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="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;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814801" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="3">42.40</ix:nonFraction> - <ix:nonFraction id="c68814802" contextRef="d_2020-01-01_2020-12-31_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><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: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814815" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">42.52</ix:nonFraction> - <ix:nonFraction id="c68814816" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">42.74</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: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814829" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">41.68</ix:nonFraction> - <ix:nonFraction id="c68814830" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">42.22</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;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814787" contextRef="d_2020-01-01_2020-12-31_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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814788" contextRef="d_2019-01-01_2019-12-31_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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814789" contextRef="d_2018-01-01_2018-12-31_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>
<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;">Weighted average grant date fair value</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;">&#xa0;</td><td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$<ix:nonFraction id="c68814790" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">45.32</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;">&#xa0;</td><td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$<ix:nonFraction id="c68814791" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">47.84</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;">&#xa0;</td><td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$<ix:nonFraction id="c68814792" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">50.08</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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes stock option activity and the weighted average exercise price for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" id="c1741324" escape="true">
    <table class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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="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; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at January 1, 2018</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="c68814841" contextRef="i_2017-12-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">399,055</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="c68814842" contextRef="i_2017-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">51.13</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; margin-left: 9pt;">Granted</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="c68814843" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" scale="0" format="ixt:numdotdecimal" decimals="INF">36,600</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="c68814844" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">110.59</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; margin-left: 9pt;">Exercised</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="c68814845" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" scale="0" format="ixt:numdotdecimal" decimals="INF">155,765</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814846" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">38.92</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; margin-left: 9pt;">Cancelled</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814847" contextRef="d_2018-01-01_2018-12-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">27,274</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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="c68814848" contextRef="d_2018-01-01_2018-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">74.35</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Options outstanding at December 31, 2018</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="c68814849" contextRef="i_2018-12-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">252,616</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="c68814850" contextRef="i_2018-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">64.71</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; margin-left: 9pt;">Granted</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="c68814851" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" scale="0" format="ixt:numdotdecimal" decimals="INF">53,708</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="c68814852" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">105.81</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; margin-left: 9pt;">Exercised</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="c68814853" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" scale="0" format="ixt:numdotdecimal" decimals="INF">16,079</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814854" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">48.67</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; margin-left: 9pt;">Cancelled</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814855" contextRef="d_2019-01-01_2019-12-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">13,979</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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="c68814856" contextRef="d_2019-01-01_2019-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">89.50</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Options outstanding at December 31, 2019</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="c68814857" contextRef="i_2019-12-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">276,266</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="c68814858" contextRef="i_2019-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">72.38</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; margin-left: 9pt;">Granted</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="c68814859" contextRef="d_2020-01-01_2020-12-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" scale="0" format="ixt:numdotdecimal" decimals="INF">60,065</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="c68814860" contextRef="d_2020-01-01_2020-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">105.79</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; margin-left: 9pt;">Exercised</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="c68814861" contextRef="d_2020-01-01_2020-12-31" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" scale="0" format="ixt:numdotdecimal" decimals="INF">68,958</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814862" contextRef="d_2020-01-01_2020-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">57.00</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; margin-left: 9pt;">Cancelled</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);">&#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: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814863" contextRef="d_2020-01-01_2020-12-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">37,842</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">&#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="c68814864" contextRef="d_2020-01-01_2020-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">67.92</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814865" 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; padding-bottom: 3px; 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="c68814866" 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; padding-bottom: 3px; 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></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;">Exercisable 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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814867" contextRef="i_2020-12-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">94,318</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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="c68814868" contextRef="i_2020-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">69.36</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The outstanding options have a term of <span style="-sec-ix-hidden:c68815577">10</span> years. For employees, options that have been granted become exercisable ratably over the vesting period, which is generally a <span style="-sec-ix-hidden:c68815578">four</span>- or <span style="-sec-ix-hidden:c68815579">five</span>-year period, 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 directors, options generally become exercisable in full on the <em style="font: inherit;">first</em> anniversary of the grant date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The total intrinsic value of options exercised during the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, was $<ix:nonFraction id="c68815584" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" scale="6" format="ixt:numdotdecimal" decimals="-5">5.4</ix:nonFraction> million, $<ix:nonFraction id="c68815585" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" scale="6" format="ixt:numdotdecimal" decimals="-5">0.9</ix:nonFraction> million and $<ix:nonFraction id="c68815586" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" scale="6" format="ixt:numdotdecimal" decimals="-6">13.0</ix:nonFraction> million, respectively. The aggregate intrinsic value represents the cumulative difference between the fair market value of the underlying common stock and the option exercise prices.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">For options outstanding at <em style="font: inherit;"> December 31, 2020</em>, the weighted-average remaining contractual term was <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" id="c68815587" format="ixt-sec:duryear">6.8</ix:nonNumeric> years and the aggregate intrinsic value was $<ix:nonFraction id="c68815588" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" scale="6" format="ixt:numdotdecimal" decimals="-5">15.4</ix:nonFraction> million. For options exercisable at <em style="font: inherit;"> December 31, 2020</em>, the weighted-average remaining contractual term was <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" id="c68815589" format="ixt-sec:duryear">5.0</ix:nonNumeric> years and the aggregate intrinsic value was $<ix:nonFraction id="c68815590" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" scale="6" format="ixt:numdotdecimal" decimals="-5">7.9</ix:nonFraction> million. Refer to the table below for additional information.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#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;">67</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>&#xa0;</ix:exclude><ix:exclude><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes information about stock options outstanding at <em style="font: inherit;"> December 31, 2020</em>:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" id="c1741325" escape="true">
    <table class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0"><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: 25%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="8" 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: 31%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Options Outstanding, Vested and Expected to Vest</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="5" 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Options Exercisable</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 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: 10pt; width: 25%; border-bottom: thin solid rgb(0, 0, 0);"><b>Range of Exercise Prices</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="1" 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%;"><b>Number Outstanding</b></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="1" 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%;"><b>Weighted Average Remaining Contractual Life</b></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%;"><b>Weighted Average Exercise Price ($)</b></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="1" 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%;"><b>Number Exercisable</b></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%;"><b>Weighted Average Exercise Price ($)</b></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="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;">&#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: 12%; text-align: center;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;">&#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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#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: 12%;">&#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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td></tr>
<tr class="finHeading" 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: 25%">$7.76 to $31.43</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815785" contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" scale="0" xsi:nil="true"></ix:nonFraction></td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815786" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">5,964</ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815787" contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" scale="0" xsi:nil="true"></ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" id="c68815788" format="ixt-sec:duryear">1.35</ix:nonNumeric></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; width: 1%"><ix:nonFraction id="c68815789" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">30.58</ix:nonFraction></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="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815790" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" unitRef="Share" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0" format="ixt:numdotdecimal" decimals="INF">5,964</ix:nonFraction></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; width: 1%"><ix:nonFraction id="c68815791" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember" unitRef="USDPerShare" name="us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" scale="0" format="ixt:numdotdecimal" decimals="INF">30.58</ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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: 10pt; width: 25%">$31.44 to $66.87</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815792" contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" scale="0" xsi:nil="true"></ix:nonFraction></td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815793" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">78,482</ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815794" contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" scale="0" xsi:nil="true"></ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" id="c68815795" format="ixt-sec:duryear">4.81</ix:nonNumeric></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; width: 1%"><ix:nonFraction id="c68815796" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">57.51</ix:nonFraction></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="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815797" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" unitRef="Share" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0" format="ixt:numdotdecimal" decimals="INF">56,032</ix:nonFraction></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; width: 1%"><ix:nonFraction id="c68815798" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember" unitRef="USDPerShare" name="us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" scale="0" format="ixt:numdotdecimal" decimals="INF">57.18</ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td></tr>
<tr class="finHeading" 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: 25%">$66.88 to $96.20</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815799" contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" scale="0" xsi:nil="true"></ix:nonFraction></td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815800" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">10,591</ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815801" contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" scale="0" xsi:nil="true"></ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" id="c68815802" format="ixt-sec:duryear">4.42</ix:nonNumeric></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; width: 1%"><ix:nonFraction id="c68815803" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">74.05</ix:nonFraction></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="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815804" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" unitRef="Share" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0" format="ixt:numdotdecimal" decimals="INF">9,343</ix:nonFraction></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; width: 1%"><ix:nonFraction id="c68815805" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember" unitRef="USDPerShare" name="us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" scale="0" format="ixt:numdotdecimal" decimals="INF">71.09</ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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: 10pt; width: 25%">$96.21 to $123.10</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815806" contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" scale="0" xsi:nil="true"></ix:nonFraction></td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815807" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">134,494</ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815808" contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" scale="0" xsi:nil="true"></ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" id="c68815809" format="ixt-sec:duryear">8.45</ix:nonNumeric></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; width: 1%"><ix:nonFraction id="c68815810" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">106.81</ix:nonFraction></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="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"><ix:nonFraction id="c68815811" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" unitRef="Share" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0" format="ixt:numdotdecimal" decimals="INF">22,979</ix:nonFraction></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; width: 1%"><ix:nonFraction id="c68815812" contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember" unitRef="USDPerShare" name="us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" scale="0" format="ixt:numdotdecimal" decimals="INF">108.41</ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The fair value of share-based payment transactions is recognized in the consolidated statements of comprehensive income. As of <em style="font: inherit;"> December 31, 2020</em>, there was $<ix:nonFraction id="c68815592" contextRef="i_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USD" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" scale="6" format="ixt:numdotdecimal" decimals="-5">4.2</ix:nonFraction> million of total unrecognized compensation cost related to unvested stock options, which is expected to be recognized over a weighted average period of <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" id="c68815593" format="ixt-sec:duryear">2.6</ix:nonNumeric> years. The total fair value of options vested was $<ix:nonFraction id="c68815594" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" scale="6" format="ixt:numdotdecimal" decimals="-5">1.8</ix:nonFraction> million, $<ix:nonFraction id="c68815595" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" scale="6" format="ixt:numdotdecimal" decimals="-5">1.5</ix:nonFraction> million and $<ix:nonFraction id="c68815596" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" scale="6" format="ixt:numdotdecimal" decimals="-5">1.5</ix:nonFraction> million for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Restricted Stock</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The <em style="font: inherit;">2012</em> Plan provides for the award of restricted stock or restricted stock units. Restricted stock awards are share settled and restrictions lapse ratably over the vesting period, which is generally a <span style="-sec-ix-hidden:c68815600">four</span>- or <span style="-sec-ix-hidden:c68815601">five</span>-year period, 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 directors, restrictions generally lapse in full on the <em style="font: inherit;">first</em> anniversary of the grant date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes restricted stock activity for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>:&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" id="c1741326" escape="true">
    <table class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Stock Awards</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at January 1, 2018</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814909" contextRef="i_2017-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">334,831</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814910" contextRef="i_2017-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">63.29</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; margin-left: 9pt;">Granted</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814911" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">106,855</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814912" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">115.41</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; margin-left: 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814913" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">86,191</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814914" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">63.64</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; margin-left: 9pt;">Forfeited</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);">&#xa0;</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: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814915" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">31,574</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">&#xa0;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814916" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">68.67</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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, 2018</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814917" contextRef="i_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">323,921</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814918" contextRef="i_2018-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">79.85</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; margin-left: 9pt;">Granted</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814919" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">115,471</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814920" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">106.35</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; margin-left: 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814921" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">92,597</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814922" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">77.25</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; margin-left: 9pt;">Forfeited</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);">&#xa0;</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: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814923" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">31,822</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">&#xa0;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814924" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">87.58</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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, 2019</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814925" contextRef="i_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">314,973</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814926" contextRef="i_2019-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">89.55</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; margin-left: 9pt;">Granted</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814927" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">108,179</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814928" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">111.76</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; margin-left: 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68814929" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">101,941</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814930" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">84.70</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; margin-left: 9pt;">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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814931" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">14,012</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814932" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">94.24</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814933" 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; padding-bottom: 3px; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814934" 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; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#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;">68</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>&#xa0;</ix:exclude><ix:exclude><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font: inherit;"> December 31, 2020</em>, there was $<ix:nonFraction id="c68815607" contextRef="i_2020-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USD" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" scale="6" format="ixt:numdotdecimal" decimals="-5">21.2</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_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" id="c68815608" format="ixt-sec:duryear">2.4</ix:nonNumeric> years.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Performance Stock</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Performance Stock Units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between <span style="-sec-ix-hidden:c68815609">0</span> percent and <ix:nonFraction id="c68815610" contextRef="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" scale="-2" format="ixt:numdotdecimal" decimals="1">150</ix:nonFraction> percent of that target number capable of being earned and vesting at the end of a <span style="-sec-ix-hidden:c68815611">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.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes performance stock activity for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>:&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt -9pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" id="c1741327" escape="true">
    <table class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Stock Awards</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; 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;, 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="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="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; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at January 1, 2018</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="c68814945" contextRef="i_2017-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0" format="ixt:numdotdecimal" decimals="INF">25,707</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="c68814946" contextRef="i_2017-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">58.35</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; margin-left: 9pt;">Granted</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="c68814947" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">20,006</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="c68814948" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">105.75</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; margin-left: 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="c68814949" contextRef="d_2018-01-01_2018-12-31_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="c68814950" contextRef="d_2018-01-01_2018-12-31_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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Performance change</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"><ix:nonFraction id="c68814951" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" scale="0" format="ixt:numdotdecimal" decimals="INF">6,427</ix:nonFraction></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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68814952" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">58.35</ix:nonFraction></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(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: 9pt;">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: 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; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c68814953" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" 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="c68814954" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" 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="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, 2018</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="c68814955" contextRef="i_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0" format="ixt:numdotdecimal" decimals="INF">52,140</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="c68814956" contextRef="i_2018-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">76.54</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; margin-left: 9pt;">Granted</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="c68814957" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">21,434</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="c68814958" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">104.99</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; margin-left: 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="c68814959" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" 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="c68814960" contextRef="d_2019-01-01_2019-12-31_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(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: 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="c68814961" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" scale="0" format="ixt:numdotdecimal" decimals="INF" sign="-">61,816</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814962" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">88.06</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; margin-left: 9pt;">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: 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; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814963" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">2,375</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814964" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">105.37</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;">Performance stock at December 31, 2019</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="c68814965" contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0" format="ixt:numdotdecimal" decimals="INF">9,383</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="c68814966" contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">58.35</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; margin-left: 9pt;">Granted</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="c68814967" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" 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;">&#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="c68814968" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" 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(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: 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="c68814969" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">7,113</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68814970" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">58.35</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; margin-left: 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="c68814971" contextRef="d_2020-01-01_2020-12-31_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="c68814972" contextRef="d_2020-01-01_2020-12-31_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="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: 9pt;">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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68814973" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">2,270</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68814974" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">58.35</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814975" 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; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68814976" 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; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font: inherit;"> December 31, 2020</em>, there was $<ix:nonFraction id="c68815614" contextRef="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USD" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" scale="6" format="ixt:numdotdecimal" decimals="-5">1.7</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_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" id="c68815615" format="ixt-sec:duryear">2.1</ix:nonNumeric> years. Unrecognized stock-based compensation costs related to non-vested performance stock in <em style="font: inherit;">2020</em> when compared to <em style="font: inherit;">2019</em> increased $<ix:nonFraction id="c68815618" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USD" name="prlb:SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount" scale="6" format="ixt:numdotdecimal" decimals="-5">1.6</ix:nonFraction> million driven by an increase in the number of shares expected to vest at the end of future performance periods.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Employee Stock Purchase Plan</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table presents the assumptions used to estimate the fair value of the ESPP during the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="prlb:ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" id="c1741328" escape="true">
    <table style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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="7" style="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></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="1" 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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="1" 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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="1" 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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#xa0;</td><td>&#xa0;</td><td style="text-align: center;">&#xa0;</td><td style="text-align: center;">&#xa0;</td><td style="text-align: center;">&#xa0;</td><td style="text-align: center;">&#xa0;</td><td style="text-align: center;">&#xa0;</td><td style="text-align: center;">&#xa0;</td><td style="text-align: center;">&#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;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c68814999" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">0.12</ix:nonFraction> - <ix:nonFraction id="c68815000" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">0.17</ix:nonFraction>%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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="c68815011" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">1.59</ix:nonFraction> - <ix:nonFraction id="c68815012" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">2.35</ix:nonFraction>%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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="c68815023" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">2.06</ix:nonFraction> - <ix:nonFraction id="c68815024" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">2.33</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;">Expected life (months)</p> </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-12-31_AwardTypeAxis-PerformanceSharesMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c68814986" format="ixt-sec:duryear">6.00</ix:nonNumeric></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c68814987" format="ixt-sec:duryear">6.00</ix:nonNumeric></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c68814988" format="ixt-sec:duryear">6.00</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="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;">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: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c68815003" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">50.85</ix:nonFraction> - <ix:nonFraction id="c68815004" contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember_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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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="c68815015" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">42.63</ix:nonFraction> - <ix:nonFraction id="c68815016" contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">53.57</ix:nonFraction>%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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="c68815027" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="3">31.50</ix:nonFraction> - <ix:nonFraction id="c68815028" contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">37.36</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;">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: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c68814992" contextRef="d_2020-01-01_2020-12-31_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;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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="c68814993" contextRef="d_2019-01-01_2019-12-31_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;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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="c68814994" contextRef="d_2018-01-01_2018-12-31_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;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#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;">69</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>&#xa0;</ix:exclude>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="prlb:LesseeOperatingLeasesAndFinancingLeasesTextBlock" id="c1741329" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">13</em> &#x2013; Leases</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for leases in accordance with ASC <em style="font: inherit;">842,</em> <i>Leases</i>.&#xa0;The Company has operating leases for office space, manufacturing facilities and certain company vehicles and equipment and finance leases for certain company equipment. The leases have remaining lease terms of <span style="-sec-ix-hidden:c68815624">one</span> year to <span style="-sec-ix-hidden:c68815625">eight</span> years. Leases with an initial term of <em style="font: inherit;">12</em> months or less are <em style="font: inherit;">not</em> recorded on the balance sheet; we recognize lease expense for these leases on a straight-line basis over the lease term. For purposes of calculating operating lease liabilities, lease terms <em style="font: inherit;"> may </em>be deemed to include options to extend or terminate the lease when it is reasonably certain that the Company will exercise that option. As of <em style="font: inherit;"> December 31, 2020</em>, the operating lease liability does <em style="font: inherit;">not</em> include any options to extend or terminate leases.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease assets, current operating lease liabilities and long-term operating lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date. Finance leases are included in finance lease assets, current finance lease liabilities and long-term finance lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date. The majority of the Company&#x2019;s leases do <em style="font: inherit;">not</em> provide an implicit rate of return, therefore, the Company uses its incremental borrowing rate based on the information available at commencement date in determining the present value of lease payments. Lease agreements that contain non-lease components, with the exception of certain real estate leases, are accounted for as a single lease component.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Supplemental balance sheet information related to leases was as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="prlb:AssetsAndLiabilitiesLesseeTableTextBlock" id="c1741330" escape="true">
    <table class="finTable" style="margin-right: 20%; margin-left: 27pt; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></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; width: 62%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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;">Operating lease 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;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815035" 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; 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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815036" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" format="ixt:numdotdecimal" decimals="-3">11,425</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>&#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;, 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;">Current operating lease 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; margin-left: 0pt;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815037" 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; 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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815038" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3" format="ixt:numdotdecimal" decimals="-4">3,340</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;">Long-term operating lease liabilities</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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815039" 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; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815040" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">8,565</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">Total operating lease 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815041" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiability" scale="3" format="ixt:numdotdecimal" decimals="-3">10,858</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815042" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiability" scale="3" format="ixt:numdotdecimal" decimals="-3">11,905</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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></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></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;">Finance lease 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;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815043" 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; 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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815044" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAsset" 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(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></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;">Current finance lease 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; margin-left: 0pt;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815045" 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; 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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815046" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityCurrent" 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(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;">Long-term finance lease liabilities</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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815047" 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; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815048" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityNoncurrent" 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; 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;, 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;">Total finance lease 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815049" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiability" scale="3" format="ixt:numdotdecimal" decimals="-3">2,471</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815050" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiability" 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-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Lease expense is recognized on a straight-line basis over the lease term, with variable payments recognized in the period those payments are incurred. The components of lease expense for the periods reported were as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="prlb:ScheduleOfLeaseExpenseTableTextBlock" id="c1CF404A3-F54C-459F-AC69-1230B86713F9" escape="true" continuedAt="c87068F65-24F6-476B-8525-FB3D9F0FBD38">
    <table class="finTable" style="margin-right: 15%; margin-left: 27pt; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><tbody><tr style="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="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><b>Twelve Months Ended December 31,</b></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="vertical-align: bottom;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 64%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><b>2020</b></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><b>2019</b></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><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;">Operating lease cost</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815051" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:OperatingLeaseCost" scale="3" format="ixt:numdotdecimal" decimals="-3">4,191</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815052" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:OperatingLeaseCost" scale="3" format="ixt:numdotdecimal" decimals="-4">3,960</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);"><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;">Finance lease cost:</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="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="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="vertical-align: bottom; background-color: rgb(204, 238, 255);"><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: 18pt;">Amortization of right-of-use 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;">$</td><td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815053" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAssetAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">143</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815054" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAssetAmortization" 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="vertical-align: bottom; background-color: rgb(255, 255, 255);"><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: 18pt;">Interest on lease obligations</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815055" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestExpense" 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;">&#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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815056" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestExpense" 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="vertical-align: bottom; background-color: rgb(204, 238, 255);"><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;">Variable lease cost</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);">&#xa0;</td><td style="width: 15%; 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="c68815057" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:VariableLeaseCost" scale="3" format="ixt:numdotdecimal" decimals="-3">989</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#xa0;</td><td style="width: 15%; 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="c68815058" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:VariableLeaseCost" scale="3" format="ixt:numdotdecimal" decimals="-3">1,039</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#xa0;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><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: 9pt;">Total lease cost</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: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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="c68815059" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:LeaseCost" scale="3" format="ixt:numdotdecimal" decimals="-3">5,325</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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="c68815060" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:LeaseCost" scale="3" format="ixt:numdotdecimal" decimals="-3">4,999</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#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;">70</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>&#xa0;</ix:exclude>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Maturities of operating and finance lease liabilities as of <em style="font: inherit;"> December 31, 2020</em> were as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="prlb:LesseeLeaseLiabilityMaturityTableTextBlock" id="c1741332" escape="true">
    <table class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 62%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Operating Leases</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Finance Leases</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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><span style="text-decoration: underline; ">Year Ending December 31,</span></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(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;">2021</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815064" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" scale="3" format="ixt:numdotdecimal" decimals="-3">3,915</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815065" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" scale="3" format="ixt:numdotdecimal" decimals="-3">561</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;">2022</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815066" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" scale="3" format="ixt:numdotdecimal" decimals="-3">3,246</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815067" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueYearTwo" scale="3" format="ixt:numdotdecimal" decimals="-3">561</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;">2023</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815068" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree" scale="3" format="ixt:numdotdecimal" decimals="-4">1,460</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815069" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueYearThree" scale="3" format="ixt:numdotdecimal" decimals="-3">1,371</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;">2024</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815070" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour" 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; 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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815071" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueYearFour" 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(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;">2025</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815072" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive" scale="3" format="ixt:numdotdecimal" decimals="-3">494</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815073" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueYearFive" 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">After 2025</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: 1px solid rgb(0, 0, 0);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815074" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" scale="3" format="ixt:numdotdecimal" decimals="-3">1,751</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815075" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueAfterYearFive" 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-bottom: 1px; 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;">Total future minimum lease payments</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815076" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue" scale="3" format="ixt:numdotdecimal" decimals="-3">11,406</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815077" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDue" scale="3" format="ixt:numdotdecimal" decimals="-3">2,493</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Less interest</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: 1px solid rgb(0, 0, 0);">&#xa0;</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: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68815078" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" scale="3" format="ixt:numdotdecimal" decimals="-3">548</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px solid rgb(0, 0, 0);">&#xa0;</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: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68815079" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityUndiscountedExcessAmount" scale="3" format="ixt:numdotdecimal" decimals="-3">22</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">Present value of lease liabilities</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815080" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiability" scale="3" format="ixt:numdotdecimal" decimals="-3">10,858</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815081" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiability" scale="3" format="ixt:numdotdecimal" decimals="-3">2,471</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font: inherit;"> December 31, 2020</em>, we have <em style="font: inherit;">no</em> operating or finance leases that have <em style="font: inherit;">not</em> yet commenced.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Weighted average remaining lease term and&#xa0;discount rate&#xa0;was as follows:&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="prlb:ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" id="c1741333" escape="true">
    <table class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><tbody><tr style="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="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b>December 31,</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b>2020</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b>2019</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 62%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Remaining Lease Term - operating leases (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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="i_2020-12-31" name="us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1" id="c68815083" format="ixt-sec:duryear">4.4</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="i_2019-12-31" name="us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1" id="c68815084" format="ixt-sec:duryear">4.8</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(255, 255, 255);"><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;">Weighted Average Remaining Lease Term - finance leases (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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><span style="-sec-ix-hidden:c68815085">2.5</span></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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></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);"><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;">Weighted Average Discount Rate - operating leases</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815087" contextRef="i_2020-12-31" unitRef="Pure" name="us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent" scale="-2" format="ixt:numdotdecimal" decimals="3">2.6</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815088" contextRef="i_2019-12-31" unitRef="Pure" name="us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent" scale="-2" format="ixt:numdotdecimal" decimals="3">2.6</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="vertical-align: bottom; background-color: rgb(255, 255, 255);"><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;">Weighted Average Discount Rate - finance leases</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><span style="-sec-ix-hidden:c68815089">0.5</span></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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><span style="-sec-ix-hidden:c68815090">-</span></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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Supplemental cash flow information related to leases was as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;">&#xa0;</p>
   <ix:continuation id="c87068F65-24F6-476B-8525-FB3D9F0FBD38">
    <table class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><em style="font: inherit;"><em style="font: inherit;">Twelve Months Ended December 31,</em></em></b></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; width: 62%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><em style="font: inherit;">2020</em></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><em style="font: inherit;">2019</em></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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;">Cash paid for amounts included in the measurement of lease liabilities:</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></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; margin-left: 9pt;">Operating cash flows from operating leases</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815095" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:OperatingLeasePayments" scale="3" format="ixt:numdotdecimal" decimals="-3">4,426</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815096" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:OperatingLeasePayments" scale="3" format="ixt:numdotdecimal" decimals="-4">5,020</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; margin-left: 9pt;">Operating cash flows from finance leases</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815097" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestPaymentOnLiability" 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;">&#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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815098" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestPaymentOnLiability" 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Financing cash flows from finance leases</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815099" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:numdotdecimal" decimals="-3">154</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815100" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" 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(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></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;">Lease assets obtained in exchange for new operating lease 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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815101" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" scale="3" format="ixt:numdotdecimal" decimals="-3">1,506</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815102" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" scale="3" format="ixt:numdotdecimal" decimals="-3">1,921</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;">Lease assets obtained in exchange for new financing lease 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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815103" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" scale="3" format="ixt:numdotdecimal" decimals="-3">2,523</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;" class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted"><ix:nonFraction id="c68815104" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" 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>
</tbody></table>
   </ix:continuation>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:28.8pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;">&#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;">71</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>&#xa0;</ix:exclude><ix:exclude><p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"></p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:DisclosureOfReclassificationAmountTextBlock" id="c1741335" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">14</em> &#x2013; Accumulated Other Comprehensive Loss</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Other comprehensive loss is comprised entirely of foreign currency translation adjustments. The following table presents the changes in accumulated other comprehensive loss balances for the years ending <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, respectively:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock" id="c1741336" escape="true">
    <table class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 55%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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;">Foreign currency translation adjustments</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></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; margin-left: 27pt; text-indent: -9pt;">Balance at beginning of period</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="c68815112" contextRef="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" 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;, 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815113" contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">8,492</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815114" contextRef="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">5,234</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;">Other comprehensive (loss) income before reclassifications</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;"><ix:nonFraction id="c68815115" contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">3,598</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815116" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">1,474</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815117" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">3,258</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(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; margin-left: 36pt; text-indent: -9pt;">Amounts reclassified from accumulated other comprehensive income (loss)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815118" contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" 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-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815119" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" 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-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815120" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" 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-bottom: 1px; 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; margin-left: 27pt; text-indent: -9pt;">Net current-period other comprehensive (loss) 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815121" contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">3,598</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815122" contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">1,474</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68815123" contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">3,258</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Balance at end of period</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">(<ix:nonFraction id="c68815124" contextRef="i_2020-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">(<ix:nonFraction id="c68815125" contextRef="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">(<ix:nonFraction id="c68815126" contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">8,492</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:IncomeTaxDisclosureTextBlock" id="c1741337" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">15</em> &#x2013; Income Taxes</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">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 years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, the Company recorded an income tax provision of $<ix:nonFraction id="c68815640" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="6" format="ixt:numdotdecimal" decimals="-5">12.1</ix:nonFraction> million, $<ix:nonFraction id="c68815641" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="6" format="ixt:numdotdecimal" decimals="-5">17.5</ix:nonFraction> million and $<ix:nonFraction id="c68815642" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="6" format="ixt:numdotdecimal" decimals="-5">15.1</ix:nonFraction> million, respectively. The effective income tax rate for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em> was <ix:nonFraction id="c68815645" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:numdotdecimal" decimals="3">19.2</ix:nonFraction> percent, <ix:nonFraction id="c68815646" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:numdotdecimal" decimals="3">21.6</ix:nonFraction> percent and <ix:nonFraction id="c68815647" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:numdotdecimal" decimals="3">16.4</ix:nonFraction> percent, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#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;">72</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a></div></ix:exclude><ix:exclude><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><div class="PGHDR" style="text-align: left; width: 100%"><a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"></p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The effective tax rate decreased by <ix:nonFraction id="c68815649" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" scale="-2" format="ixt:numdotdecimal" decimals="3">2.4</ix:nonFraction>% for the year ended <em style="font: inherit;"> December 31, 2020</em>&#xa0;when compared&#xa0;to <em style="font: inherit;">2019</em> primarily due to an increase in tax benefits from the vesting of restricted stock and exercise of stock options and an increase in the research and development tax credit.&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The Tax Cuts and Jobs Act (the &#x201c;Act&#x201d;)&#xa0;was enacted on <em style="font: inherit;"> December 22, 2017. </em>The Act reduced the&#xa0;U.S. federal corporate tax rate from <ix:nonFraction id="c68815651" contextRef="d_2017-12-22_2017-12-22" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" format="ixt:numdotdecimal" decimals="2">35</ix:nonFraction>% to <ix:nonFraction id="c68815652" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" format="ixt:numdotdecimal" decimals="2">21</ix:nonFraction>%, required companies to pay a transition tax on earnings of certain foreign subsidiaries that were previously tax deferred and creates new taxes on certain foreign sourced earnings. <em style="font: inherit;">No</em> additional income taxes have been provided for any remaining undistributed foreign earnings <em style="font: inherit;">not</em> subject to the transition tax, or any additional outside basis difference inherent in these entities, as these amounts continue to be indefinitely reinvested in foreign operations.&#xa0;</p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; 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; text-align: left; text-indent: 27pt;">The Coronavirus Aid, Relief, and Economic Security (CARES) Act was signed into law on <em style="font: inherit;"> March 27, 2020. </em>The CARES Act was meant to infuse companies with various income and payroll tax cash benefits to ease the impact of the pandemic. A technical correction to the Tax Cuts and Jobs Act of <em style="font: inherit;">2017</em> was included in the CARES Act allowing qualified improvement property to claim bonus depreciation for respective assets placed in service in <em style="font: inherit;">2018</em> and <em style="font: inherit;">2019.</em> The impact of the CARES Act to the Company was a $<ix:nonFraction id="c68815658" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="prlb:IncreaseDecreaseInIncomeTaxesPayableCaresAct" scale="6" format="ixt:numdotdecimal" decimals="-5" sign="-">2.9</ix:nonFraction> million reduction to income taxes payable and a corresponding increase to deferred tax liability. In addition, the Company has elected to defer deposits of the employer portion of the Social Security tax for the quarter ended <em style="font: inherit;"> March 31, 2020 </em>through the quarter ended <em style="font: inherit;"> December 31, 2020. </em>The Social Security taxes are being accrued for and will be paid in <em style="font: inherit;">2021.</em></p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The provision for income taxes is based on income before income taxes reported for financial statement purposes. The components of income before income taxes are as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" id="c1741338" escape="true">
    <table class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></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; width: 55%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#xa0;</td><td>&#xa0;</td><td style="width: 17px;">&#xa0;</td><td style="width: 209px;">&#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;, 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;">Domestic</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 17px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 209px; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815134" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" scale="3" format="ixt:numdotdecimal" decimals="-3">58,551</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815135" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" scale="3" format="ixt:numdotdecimal" decimals="-3">74,841</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815136" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" scale="3" format="ixt:numdotdecimal" decimals="-3">81,893</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;">Foreign</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 17px; 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: 209px; 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="c68815137" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" scale="3" format="ixt:numdotdecimal" decimals="-3">4,394</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815138" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" scale="3" format="ixt:numdotdecimal" decimals="-3">6,352</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815139" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" scale="3" format="ixt:numdotdecimal" decimals="-3">9,762</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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: 17px; 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: 209px; 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="c68815140" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:numdotdecimal" decimals="-3">62,945</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68815141" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:numdotdecimal" decimals="-3">81,193</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68815142" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:numdotdecimal" decimals="-3">91,655</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#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 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Significant components of the provision for income taxes for the following periods are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" id="c1741339" escape="true">
    <table class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 55%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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;">Current:</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></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; margin-left: 18pt;">Federal</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="c68815149" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:CurrentFederalTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">2,128</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815150" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:CurrentFederalTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">6,991</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815151" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:CurrentFederalTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">782</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">State</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;"><ix:nonFraction id="c68815152" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">1,136</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815153" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">2,882</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815154" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">2,078</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; margin-left: 18pt;">Foreign</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;"><ix:nonFraction id="c68815155" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">1,241</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815156" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">1,544</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815157" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-4">1,810</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;">Deferred</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></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; margin-left: 18pt;">Federal</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;"><ix:nonFraction id="c68815158" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">6,904</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815159" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">5,121</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815160" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">11,325</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; margin-left: 18pt;">State</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;">(<ix:nonFraction id="c68815161" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">431</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815162" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">269</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815163" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">538</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; margin-left: 18pt;">Foreign</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;"><ix:nonFraction id="c68815164" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-4">210</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815165" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">809</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815166" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-4" sign="-">430</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Valuation Allowance</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815167" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="3" format="ixt:numdotdecimal" decimals="-4">890</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815168" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="3" format="ixt:numdotdecimal" decimals="-4">1,540</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815169" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="3" format="ixt:numdotdecimal" decimals="-3">528</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68815170" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">12,078</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68815171" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">17,538</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);"><ix:nonFraction id="c68815172" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">15,067</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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>
    <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
     <em style="font: inherit;">73</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>&#xa0;</ix:exclude>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">A reconciliation of the federal statutory income tax rate to the effective tax rate is as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" id="c1741340" escape="true">
    <table class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Federal tax statutory 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815181" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" format="ixt:numdotdecimal" decimals="2">21.0</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815182" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" format="ixt:numdotdecimal" decimals="2">21.0</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815183" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" format="ixt:numdotdecimal" decimals="2">21.0</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(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;">State tax (net of federal benefit)</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815184" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2" format="ixt:numdotdecimal" decimals="3">2.1</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815185" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2" format="ixt:numdotdecimal" decimals="3">2.1</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815186" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2" format="ixt:numdotdecimal" decimals="2">2.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>
<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;">Share based compensation</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815187" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">1.3</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815188" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">0.5</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815189" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">2.8</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(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;">Valuation allowance against deferred tax 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815190" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="-2" format="ixt:numdotdecimal" decimals="2">2.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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815191" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="-2" format="ixt:numdotdecimal" decimals="3">1.4</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815192" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" scale="-2" format="ixt:numdotdecimal" decimals="3">0.7</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;">Research and development credit</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815193" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" scale="-2" format="ixt:numdotdecimal" decimals="3">3.7</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815194" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" scale="-2" format="ixt:numdotdecimal" decimals="3">2.8</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815195" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" scale="-2" format="ixt:numdotdecimal" decimals="3">2.5</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(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;">Foreign rate differential</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815196" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">0.8</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815197" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">0.3</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815198" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">0.1</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Tax reserves</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815199" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies" scale="-2" format="ixt:numdotdecimal" decimals="3">1.4</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815200" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies" scale="-2" format="ixt:numdotdecimal" decimals="3">1.1</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815201" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">0.1</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(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Provision to return difference</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">(<ix:nonFraction id="c68815202" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">1.4</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">)</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68815203" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" scale="-2" format="ixt:zerodash" decimals="0">-</ix:nonFraction></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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"><ix:nonFraction id="c68815204" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" scale="-2" format="ixt:zerodash" decimals="0">-</ix:nonFraction></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(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;">Miscellaneous</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815205" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">0.1</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815206" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">0.4</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815207" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">0.5</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(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;">Transition tax</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815208" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" scale="-2" format="ixt:zerodash" decimals="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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815209" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" scale="-2" format="ixt:zerodash" decimals="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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815210" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">0.8</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revaluation of deferred tax liability</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815211" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" scale="-2" format="ixt:zerodash" decimals="0">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815212" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" scale="-2" format="ixt:zerodash" decimals="0">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68815213" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">0.5</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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</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);">&#xa0;</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815214" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:numdotdecimal" decimals="3">19.2</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</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);">&#xa0;</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815215" contextRef="d_2019-01-01_2019-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:numdotdecimal" decimals="3">21.6</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</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);">&#xa0;</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815216" contextRef="d_2018-01-01_2018-12-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:numdotdecimal" decimals="3">16.4</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Significant components of deferred tax assets and liabilities are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" id="c1741341" escape="true">
    <table class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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="6" style="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></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; width: 66%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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="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;">Deferred tax assets:</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></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; margin-left: 18pt;">Accrued expenses</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815221" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">2,155</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815222" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">1,362</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: 0px; margin: 0px; text-indent: 18pt;">Leases</td><td 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="c68815223" contextRef="i_2020-12-31" unitRef="USD" name="prlb:DeferredTaxAssetsRightOfUseLeases" scale="3" format="ixt:numdotdecimal" decimals="-3">3,598</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c68815224" contextRef="i_2019-12-31" unitRef="USD" name="prlb:DeferredTaxAssetsRightOfUseLeases" scale="3" format="ixt:numdotdecimal" decimals="-3">3,337</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Stock-based compensation</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815225" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" scale="3" format="ixt:numdotdecimal" decimals="-3">3,356</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815226" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" scale="3" format="ixt:numdotdecimal" decimals="-3">3,325</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; margin-left: 18pt;">Intangible 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815227" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets" scale="3" format="ixt:numdotdecimal" decimals="-3">1,693</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815228" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets" scale="3" format="ixt:numdotdecimal" decimals="-3">1,171</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; margin-left: 18pt;">Inventories</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815229" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsInventory" scale="3" format="ixt:numdotdecimal" decimals="-3">172</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815230" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsInventory" scale="3" format="ixt:numdotdecimal" decimals="-3">169</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; margin-left: 18pt;">Other 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815231" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsOther" scale="3" format="ixt:numdotdecimal" decimals="-4">1,790</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815232" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsOther" scale="3" format="ixt:numdotdecimal" decimals="-3">1,765</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; margin-left: 18pt;">Net operating loss</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815233" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwards" scale="3" format="ixt:numdotdecimal" decimals="-3">6,647</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815234" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwards" scale="3" format="ixt:numdotdecimal" decimals="-3">6,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></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: 36pt;">Less valuation allowance</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68815235" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsValuationAllowance" scale="3" format="ixt:numdotdecimal" decimals="-3">9,138</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68815236" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsValuationAllowance" scale="3" format="ixt:numdotdecimal" decimals="-3">8,248</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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 deferred tax 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815237" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">10,273</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815238" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">9,394</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;">Deferred tax liabilities:</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></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; margin-left: 18pt;">Depreciation</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815239" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">32,671</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815240" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-4">26,750</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Goodwill</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815241" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" scale="3" format="ixt:numdotdecimal" decimals="-3">7,858</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c68815242" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" scale="3" format="ixt:numdotdecimal" decimals="-4">5,590</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 0px; margin: 0px; text-indent: 18pt;">Leases</td><td 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="c68815243" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesLeasingArrangements" scale="3" format="ixt:numdotdecimal" decimals="-3">3,598</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: 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="c68815244" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilitiesLeasingArrangements" scale="3" format="ixt:numdotdecimal" decimals="-3">3,337</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total deferred tax 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68815245" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">44,127</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68815246" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">35,677</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">Net deferred tax liability</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c68815247" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilities" 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; margin-left: 0pt; padding-bottom: 3px;">)</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c68815248" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">26,283</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;" />
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has recorded <ix:nonFraction id="c68815661" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries" scale="0" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction> U.S. deferred taxes related to the undistributed earnings of its non-U.S. subsidiaries as of <em style="font: inherit;"> December 31, 2020</em>. Such amounts are intended to be reinvested outside of the United States indefinitely. It is <em style="font: inherit;">not</em> practicable to estimate the amount of additional tax that might be payable on the foreign earnings. As of <em style="font: inherit;"> December 31, 2020</em>, the Company had accumulated undistributed earnings in non-U.S. subsidiaries of $<ix:nonFraction id="c68815663" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:UndistributedEarningsOfForeignSubsidiaries" scale="6" format="ixt:numdotdecimal" decimals="-5">15.8</ix:nonFraction> million.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font: inherit;"> December 31, 2020</em>, the Company had estimated net operating loss carry forwards of $<ix:nonFraction id="c68815664" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:OperatingLossCarryforwards" scale="6" format="ixt:numdotdecimal" decimals="-5">6.6</ix:nonFraction> million for tax purposes. The net operating losses relate to operations in Japan and Germany. Japan losses can be carried forward for up to <span style="-sec-ix-hidden:c68815665">ten</span> years. The remaining Japan net operating losses begin to expire at various dates between <em style="font: inherit;">2021</em> and <em style="font: inherit;">2026.</em> The Company&#x2019;s Japan operations are taxed both by local authorities and in the U.S. Germany net operating losses <em style="font: inherit;"> may </em>be carried forward without any time limitations but are limited to <em style="font: inherit;">&#x20ac;1</em> million, plus <ix:nonFraction id="c68815669" contextRef="d_2020-01-01_2020-12-31" unitRef="Pure" name="prlb:OperatingLossCarryforwardsPercentageOfTaxableIncome" scale="-2" format="ixt:numdotdecimal" decimals="1">60</ix:nonFraction> percent&#xa0;of taxable income exceeding <em style="font: inherit;">&#x20ac;1</em> million.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#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;">74</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a></div></ix:exclude><ix:exclude><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><div class="PGHDR" style="text-align: left; width: 100%"><a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company establishes valuation allowances for deferred tax assets when, after consideration of all positive and negative evidence, it is considered more-likely-than-<em style="font: inherit;">not</em> that a portion of the deferred tax assets will <em style="font: inherit;">not</em> be realized. The Company's valuation allowances of $<ix:nonFraction id="c68815674" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsValuationAllowance" scale="6" format="ixt:numdotdecimal" decimals="-5">9.1</ix:nonFraction> million and $<ix:nonFraction id="c68815675" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:DeferredTaxAssetsValuationAllowance" scale="6" format="ixt:numdotdecimal" decimals="-5">8.2</ix:nonFraction> million at <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em>, respectively, reduce the carrying value of deferred tax assets associated with certain net operating loss carry forwards and other assets with insufficient positive evidence for recognition. The increase in the valuation allowance is primarily attributable to fluctuations in foreign currency and the net operating losses incurred in Germany in <em style="font: inherit;">2020.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company files a U.S. federal income tax return and income tax returns in various states and foreign jurisdictions. With a few exceptions, the Company is <em style="font: inherit;">no</em> longer subject to U.S. federal, state, or foreign income tax examinations by tax authorities for years before <em style="font: inherit;">2017.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has liabilities related to unrecognized tax benefits totaling $<ix:nonFraction id="c68815680" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="6" format="ixt:numdotdecimal" decimals="-5">4.8</ix:nonFraction> million and $<ix:nonFraction id="c68815681" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="6" format="ixt:numdotdecimal" decimals="-5">4.6</ix:nonFraction> million at <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em>, respectively, that if recognized would result in a reduction of the Company&#x2019;s effective tax rate. The liabilities are classified as other long-term liabilities in the accompanying consolidated balance sheets. 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. Interest and penalties were immaterial for each of the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#xa0;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">A reconciliation of the beginning and ending amount of unrecognized tax benefits is as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" id="c1741342" escape="true">
    <table class="finTable" style="margin-right: auto; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0"><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; padding-bottom: 1px;">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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="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="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; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Balance at beginning of period</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815255" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="3" format="ixt:numdotdecimal" decimals="-3">4,598</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815256" contextRef="i_2018-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="3" format="ixt:numdotdecimal" decimals="-3">4,096</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;">Additions for tax positions of current year</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815257" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" scale="3" format="ixt:numdotdecimal" decimals="-3">324</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815258" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" scale="3" format="ixt:numdotdecimal" decimals="-3">592</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;">Additions for tax positions of prior 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815259" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" scale="3" format="ixt:numdotdecimal" decimals="-3">475</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815260" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Decrease related to expiration of statutes of limitations</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68815261" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" scale="3" format="ixt:numdotdecimal" decimals="-3">567</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68815262" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" scale="3" format="ixt:numdotdecimal" decimals="-4">90</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">Balance at period end</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815263" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="3" format="ixt:numdotdecimal" decimals="-4">4,830</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815264" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="3" format="ixt:numdotdecimal" decimals="-3">4,598</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:LegalMattersAndContingenciesTextBlock" id="c1741343" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">16</em> &#x2013; Litigation</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">From time to time, the Company <em style="font: inherit;"> may </em>be subject to various legal proceedings and claims that arise in the ordinary course of its business.&#xa0;Although the results of litigation and claims cannot be predicted with certainty, the Company does <em style="font: inherit;">not</em> believe it is a party to any litigation the outcome of which, if determined adversely, would individually or in the aggregate be reasonably expected to have a material adverse effect on its business.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;<b>&#xa0;</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:SegmentReportingDisclosureTextBlock" id="c1741344" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">17</em> &#x2013; Segment Reporting</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#x2019;s reportable segments are based on the internal reporting used by the Company&#x2019;s CEO, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Company&#x2019;s reportable segments are based upon geographic region, consisting of the United States and Europe. The Corporate Unallocated and Japan category includes non-reportable segments, as well as research and development and general and administrative costs that are global in nature and&#xa0;that the Company does <em style="font: inherit;">not</em> allocate directly to its operating segments.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue in the United States is derived from Injection Molding, CNC Machining, <em style="font: inherit;">3D</em> Printing and Sheet Metal product lines. Revenue in Europe is derived from Injection Molding, CNC Machining, and <em style="font: inherit;">3D</em> Printing product lines. Revenue in&#xa0;Japan is derived from Injection Molding and CNC Machining 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 and lathe-turned customer parts. <em style="font: inherit;">3D</em> Printing revenue consists of sales of <em style="font: inherit;">3D</em>-printed parts. Sheet Metal revenue consists of sales of fabricated sheet metal parts.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#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;">75</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a></div></ix:exclude><ix:exclude><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><div class="PGHDR" style="text-align: left; width: 100%"><a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"></a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>Notes to Consolidated Financial Statements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p></ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The accounting policies of the reportable segments are the same as those described in&#xa0;Note <em style="font: inherit;">2</em>&#xa0;&#x2013;&#xa0;Summary of Significant Accounting Policies. 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.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Beginning in&#xa0;<em style="font: inherit;">2020</em>, the Company's CODM made a decision to view certain research and development costs by geographic region. As a result, costs previously included in the Corporate Unallocated and Japan category have been included in the respective geographic regions. All periods presented have been restated to reflect this change.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue and income from operations by reportable segment are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" name="us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock" id="c1741345" escape="true">
    <table class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Revenue:</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></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; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815271" contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">345,708</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815272" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">360,205</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815273" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">350,535</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; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815274" contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">74,796</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815275" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">82,805</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815276" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">80,889</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; margin-left: 18pt;">Japan</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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815277" contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">13,891</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815278" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">15,718</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815279" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">14,172</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815280" contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">434,395</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815281" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">458,728</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815282" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">445,596</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="prlb:IncomeFromOperationsByGeographicAreaTableTextBlock" id="c1741346" escape="true">
    <table class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Income from Operations:</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></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; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815290" contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">98,762</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815291" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">108,594</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815292" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-4">115,710</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; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815293" contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">11,707</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815294" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">15,077</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815295" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">16,747</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; margin-left: 18pt;">Corporate Unallocated and Japan</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);">&#xa0;</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: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68815296" contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">50,633</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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);">&#xa0;</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: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68815297" contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">43,815</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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);">&#xa0;</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: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c68815298" contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">43,557</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 18pt;">Total income from operations</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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815299" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">59,836</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815300" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">79,856</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815301" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">88,898</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Total long-lived assets, expenditures for additions to long-lived assets and depreciation and amortization expense are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock" id="c1741347" escape="true">
    <table class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>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><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;"> <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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815309" 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; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815310" contextRef="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">210,171</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815311" contextRef="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">185,979</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; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815312" 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; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815313" contextRef="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">45,019</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815314" contextRef="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">34,577</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; margin-left: 18pt;">Japan</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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815315" 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; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815316" contextRef="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">8,522</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815317" contextRef="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">7,445</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815318" 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-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815319" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">263,712</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815320" contextRef="i_2018-12-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">228,001</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="prlb:ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" id="c1741348" escape="true">
    <table class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Expenditures for additions to 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><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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;">&#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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815328" contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">29,984</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815329" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">45,123</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815330" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">78,762</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;">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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815331" contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">16,574</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815332" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">14,743</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815333" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">7,576</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;">Japan</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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815334" contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">452</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815335" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">2,364</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815336" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">766</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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 expenditures for additions to 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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815337" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-4">47,010</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815338" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-4">62,230</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815339" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">87,104</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#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;">76</em>
    </div>
    <hr style="page-break-after: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" /></ix:exclude><ix:exclude><div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt"><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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>Proto Labs, Inc.</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>Notes to Consolidated Financial Statements</b></p></ix:exclude><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b></b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="prlb:DepreciationAndAmortizationByGeographicRegionTableTextBlock" id="c1741349" escape="true">
    <table class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;" cellspacing="0" cellpadding="0" border="0"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Depreciation and Amortization:</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></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; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815347" contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">25,744</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815348" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">24,767</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815349" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">21,117</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; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815350" contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">5,024</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815351" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">4,746</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c68815352" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">4,679</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; margin-left: 18pt;">Japan</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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815353" contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">1,826</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815354" contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">1,351</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#xa0;</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: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c68815355" contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">958</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">Total depreciation and amortization</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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815356" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">32,594</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815357" contextRef="d_2019-01-01_2019-12-31" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">30,864</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c68815358" contextRef="d_2018-01-01_2018-12-31" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">26,754</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2020-01-01_2020-12-31" name="us-gaap:SubsequentEventsTextBlock" id="c1741350" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">18</em> &#x2013; Subsequent Events</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">On <em style="font: inherit;"> January 22, 2021, </em>the Company acquired <em style="font: inherit;">3D</em> Hubs, Inc. (<em style="font: inherit;">&#x201c;3D</em> Hubs&#x201d;), for $<ix:nonFraction id="c68815701" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_SubsequentEventTypeAxis-SubsequentEventMember" unitRef="USD" name="us-gaap:BusinessCombinationConsiderationTransferred1" scale="6" format="ixt:numdotdecimal" decimals="-5">294.4</ix:nonFraction> million, consisting of $<ix:nonFraction id="c68815702" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_SubsequentEventTypeAxis-SubsequentEventMember" unitRef="USD" name="us-gaap:PaymentsToAcquireBusinessesGross" scale="6" format="ixt:numdotdecimal" decimals="-5">127.7</ix:nonFraction> million in cash and <ix:nonFraction id="c68815703" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_SubsequentEventTypeAxis-SubsequentEventMember" 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="c68815704" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_SubsequentEventTypeAxis-SubsequentEventMember" unitRef="USD" name="us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" scale="6" format="ixt:numdotdecimal" decimals="-5">166.7</ix:nonFraction> million on the date of close.&#xa0; Up to an additional $<ix:nonFraction id="c68815705" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_SubsequentEventTypeAxis-SubsequentEventMember" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" scale="6" format="ixt:numdotdecimal" decimals="-5">52.8</ix:nonFraction> million of contingent consideration is 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> after closing, consisting of up to $<ix:nonFraction id="c68815708" 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="c68815709" 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="c68815710" 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. <em style="font: inherit;">3D</em> Hubs is a leading online manufacturing platform that provides customers with on-demand access to a global network of approximately <em style="font: inherit;">240</em> premium manufacturing partners. The completion of this transaction creates the world&#x2019;s most comprehensive digital manufacturing offer for custom parts. The acquisition will be accounted for under the acquisition method of accounting in accordance with ASC <em style="font: inherit;">805.</em></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">On <em style="font: inherit;"> February 3, 2021, </em>the Company announced the launch of its new digital quoting and design analysis platform to its U.S.-based customers, following a launch in the <em style="font: inherit;">fourth</em> quarter of <em style="font: inherit;">2020</em> to its European-based users. With the launch, <em style="font: inherit;">three</em> of the Company's services&#x2014;injection molding, CNC machining, and <em style="font: inherit;">3D</em> printing&#x2014;are now united in a single platform for a much easier quoting and ordering experience. The advanced e-commerce system is built to accelerate online quoting, design analysis and ordering.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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;">77</em>
    </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%">
     <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
    </div>
   </ix:exclude>
   <ix:exclude>&#xa0;</ix:exclude>
  </ix:nonNumeric>
  <div>
   &#xa0;
  </div>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item9_changesinanddisagreements" title="item9_changesinanddisagreements" href="#"></a>Item 9. Changes in and Disagreements with Accountants on Accounting and Financial Disclosure</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Not applicable.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item9a_controlsandprocedures" title="item9a_controlsandprocedures" href="#"></a>Item 9A. Controls and Procedures</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Evaluation of Disclosure Controls and Procedures</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">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 Annual Report on Form 10-K, our disclosure controls and procedures were effective and provided 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 timeframes 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Management&#x2019;s Annual Report on Internal Control Over Financial Reporting</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#x2019;s management is responsible for establishing and maintaining an adequate system of internal control over financial reporting, as defined in the Exchange Act Rule 13a-15(f). Management conducted an assessment of the Company&#x2019;s internal control over financial reporting based on the framework established by the Committee of Sponsoring Organizations of the Treadway Commission in <i>Internal Control &#x2013; Integrated Framework </i>(2013 framework). Based on the assessment, management concluded that, as of December 31, 2020, the Company&#x2019;s internal control over financial reporting is effective. The Company&#x2019;s registered public accounting firm&#x2019;s attestation report on the Company&#x2019;s internal control over financial reporting is provided in Part II, Item 8 of this Annual Report on Form 10-K.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Changes in Internal Control over Financial Reporting</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">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.&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"><b>&#xa0;</b></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item9b_otherinfo" title="item9b_otherinfo" href="#"></a>Item 9B. Other Information</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">None.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    78
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b><a id="part3" title="part3" href="#"></a>PART III</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item10_directorsexecofficers" title="item10_directorsexecofficers" href="#"></a>Item 10. Directors, Executive Officers and Corporate Governance</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The information required by this item with respect to Item 401 relating to executive officers is contained in Item&#xa0;1 of this Annual Report on Form 10-K under the heading &#x201c;Executive Officers of the Registrant&#x201d; and with respect to other information relating to our directors will be set forth in our 2021 Proxy Statement under the caption &#x201c;Proposal 1 &#x2014; Election of Directors,&#x201d; which will be filed no later than 120&#xa0;days after the end of the fiscal year covered by this Annual Report on Form 10-K, and is incorporated herein by reference.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The information required by this item under Item&#xa0;405 of Regulation S-K is incorporated herein by reference to the section titled &#x201c;Corporate Governance &#x2014; Section 16(a) Beneficial Ownership Reporting Compliance&#x201d; of our 2021 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K. The information required by this item under Items&#xa0;407 (c)(3), (d)(4) and (d)(5) of Regulation S-K is incorporated herein by reference to the section titled &#x201c;Corporate Governance&#x201d; of our 2015 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">We have adopted a Code of Ethics and Business Conduct that applies to all of our directors, officers and employees, including our principal executive officer and principal financial officer. The Code of Ethics and Business Conduct is available on our website at www.protolabs.com under the Investors Relations section. We plan to post to our website at the address described above any future amendments or waivers of our Code of Ethics and Business Conduct.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item11_executivecompensation" title="item11_executivecompensation" href="#"></a>Item 11. Executive Compensation</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Information related to this item is incorporated herein by reference to the sections titled &#x201c;Compensation Discussion and Analysis,&#x201d; &#x201c;Corporate Governance &#x2014; Compensation Committee Interlocks and Insider Participation,&#x201d; and &#x201c;Compensation Committee Report&#x201d; of our 2021 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item12_securityownership" title="item12_securityownership" href="#"></a>Item 12. Security Ownership of Certain Beneficial Owners and Management </b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Information related to security ownership required by this item is incorporated herein by reference to the section titled &#x201c;Security Ownership of Certain Beneficial Owners and Management&#x201d; of our 2021 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K. Information related to our equity compensation plans required by this item is incorporated herein by reference to the section titled &#x201c;Compensation Discussion and Analysis &#x2013; Elements of Executive Compensation&#x201d; of our 2021 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#xa0;</p>
  <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>Outstanding Equity Awards</b></p>
  <p style="margin: 0 22.2pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><b>&#xa0;</b></p>
  <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">The following table summarizes, as of December 31, 2020, information about shares of our common stock that may be issued under equity compensation plans approved by shareholders and plans not approved by shareholders:</p>
  <p style="margin: 0; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <hr />
  <p style="margin: 0; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-size: 10pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 33%; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"><b>Plan Category</b></td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="1" style="width: 20%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><b>Number of shares to be issued upon exercise of outstanding options, warrants and rights</b></td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><b>Weighted-average exercise price of outstanding options, warrants and rights</b></td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="1" style="width: 20%; text-align: center; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><b>Number of shares remaining available for future issuance under equity compensation plans (excluding shares in first column)</b></td>
     <td style="width: 1%; padding-bottom: 1px; font-size: 10pt;">&#xa0;</td>
    </tr>

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

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 33%; font-size: 10pt">Equity compensation plans approved by shareholders(1)</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td colspan="1" style="width: 20%; text-align: center; font-size: 10pt">556,686</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td style="width: 20%; text-align: center; font-size: 10pt">$86.46</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
     <td colspan="1" style="width: 20%; text-align: center; font-size: 10pt">5,987,986</td>
     <td style="width: 1%; font-size: 10pt">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 33%; font-size: 10pt;"> <p style="font-size: 10pt; margin-top: 0; margin-bottom: 0; font-family: &quot;Times New Roman&quot;, Times, serif">Equity compensation plans not approved by shareholders</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="1" style="width: 20%; text-align: center; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">None</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td style="width: 20%; text-align: center; font-size: 10pt; margin-left: 0pt;">N/A</td>
     <td style="width: 1%; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
     <td colspan="1" style="width: 20%; text-align: center; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0; text-align: center; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">None</p> </td>
     <td style="width: 1%; font-size: 10pt;">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; 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;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 18pt; border-top: thin solid rgb(0, 0, 0);"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><sup style="vertical-align:top;line-height:120%;font-size:pt">(1)</sup></p> </td>
     <td style="border-top: thin solid rgb(0, 0, 0);"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Includes the 2000 Stock Option Plan, the 2012 Long-Term Incentive Plan and our Employee Stock Purchase Plan.</p> </td>
    </tr>

    <tr style="vertical-align: top;">
     <td style="width: 18pt;"> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><sup style="vertical-align:top;line-height:120%;font-size:pt">(2)</sup></p> </td>
     <td> <p style="margin: 0; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Includes 1,126,595 shares remaining available for issuance as of December 31, 2020&#xa0;under our Employee Stock Purchase Plan.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item13_certianrelationships" title="item13_certianrelationships" href="#"></a>Item 13. Certain Relationships and Related Transactions, and Director Independence</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Information required by this item is incorporated herein by reference to the sections titled &#x201c;Corporate Governance &#x2014; Certain Relationships and Related Party Transactions,&#x201d; and &#x201c;Corporate Governance &#x2014; Director Independence&#x201d; of our 2021 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item14_principalaccoutantfees" title="item14_principalaccoutantfees" href="#"></a>Item 14. Principal Accountant Fees and Services</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Information required by this item is incorporated herein by reference to the section titled &#x201c;Fees Paid to Independent Registered Public Accounting Firm&#x201d; of our 2021 Proxy Statement, which will be filed no later than 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    79
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b><a id="part4" title="part4" href="#"></a>PART IV</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b><a id="item15_exhibitsandfinancialstatementsch" title="item15_exhibitsandfinancialstatementsch" href="#"></a>Item 15. Exhibits and Financial Statement Schedules</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">(a) The following documents are filed as part of this report:</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 36pt; text-align: left;">1. Consolidated Financial Statements</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 72pt; text-align: left;">See Index to Consolidated Financial Statement at Item 8 herein.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 36pt; text-align: left;">2. Financial Statement Schedules</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 72pt; text-align: left;">Schedules not listed above have been omitted because the information required to be set forth therein is not applicable or is shown in the financial statement or notes herein.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 36pt; text-align: left;">3. Exhibits</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 72pt; text-align: left;">See the Exhibit Index immediately following the signature page of this Annual Report on Form 10-K.</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 72pt; text-align: left;">&#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;">
      80
     </div>
    </div>
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink">
      <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">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>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:top;border-bottom:solid 1px #000000;;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Exhibit Number</b></p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;border-bottom:solid 1px #000000;;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Description of Exhibit</b></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">2.1<sup style="vertical-align:top;line-height:120%;font-size:pt">(29)</sup></p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774921000799/ex_221340.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Agreement and Plan of Merger, dated January 18,2021, by and among 3D Hubs, Inc., Proto Labs, Inc., Lithium Merger Sub I, Inc., Lithium M</span></a><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774921000799/ex_221340.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">erger Sub II, Inc. and Shareholder Representative Services, LLC</span></a></p> </td>
    </tr>

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

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

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

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">4.1<sup style="vertical-align:top;line-height:120%;font-size:pt">(3)</sup></p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/0001193125-12-054357-index.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of certificate representing common shares of Proto Labs, Inc.</span></a></p> </td>
    </tr>

    <tr>
     <td style="width: 10%; text-align: center; vertical-align: top;">4.2<sup style="vertical-align:top;line-height:120%;font-size:pt">(31)</sup></td>
     <td style="vertical-align:top;width:2%;">&#xa0;</td>
     <td style="vertical-align:bottom;width:88%;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774920003547/ex_172513.htm" style="-sec-extract:exhibit;">Description of Securities of Registrant</a></td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.1<sup style="vertical-align:top;line-height:120%;font-size:pt">(4)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774915019465/ex10-1.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">2012 Long-Term Incentive Plan, as amended as of August 5, 2015</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.2<sup style="vertical-align:top;line-height:120%;font-size:pt">(5)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/d199869dex1014.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Incentive Stock Option Agreement under 2012 Long-Term Incentive Plan</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.3<sup style="vertical-align:top;line-height:120%;font-size:pt">(6)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/d199869dex1015.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (Directors) under 2012 Long-Term Incentive Plan</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.4<sup style="vertical-align:top;line-height:120%;font-size:pt">(7)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/d199869dex1016.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (U.S. Employees) under 2012 Long-Term Incentive Plan</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.5<sup style="vertical-align:top;line-height:120%;font-size:pt">(8)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/d199869dex1017.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (U.K. Employees) under 2012 Long-Term Incentive Plan</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.6<sup style="vertical-align:top;line-height:120%;font-size:pt">(9)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/d199869dex1018.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Employee Stock Purchase Plan</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.7<sup style="vertical-align:top;line-height:120%;font-size:pt">(10)</sup></p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512075642/d305138dex997.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Stock Subscription Warrant issued to John B. Tumelty</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.8<sup style="vertical-align:top;line-height:120%;font-size:pt">(11)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511194962/dex107.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">2000 Stock Option Plan, as amended</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.9<sup style="vertical-align:top;line-height:120%;font-size:pt">(12)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511194962/dex108.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Incentive Stock Option Agreement under 2000 Stock Option Plan</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.10<sup style="vertical-align:top;line-height:120%;font-size:pt">(13)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511194962/dex108.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (Directors) under 2000 Stock Option Plan</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.11<sup style="vertical-align:top;line-height:120%;font-size:pt">(14)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511194962/dex1010.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (U.S. Employees) under 2000 Stock Option Plan</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.12<sup style="vertical-align:top;line-height:120%;font-size:pt">(15)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511194962/dex1011.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (U.S. Employees) under 2000 Stock Option Plan</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.13<sup style="vertical-align:top;line-height:120%;font-size:pt">(16)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511194962/dex1012.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Non-Statutory Stock Option Agreement (U.K. Employees) under 2000 Stock Option Plan</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.14<sup style="vertical-align:top;line-height:120%;font-size:pt">(17)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312511282025/d199869dex1019.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Amended and Restated Credit Agreement, dated as of September 30, 2011, between Proto Labs, Inc. and Wells Fargo Bank, N.A.</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.15<sup style="vertical-align:top;line-height:120%;font-size:pt">(18)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774917020059/ex_101319.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Credit Agreement, dated Nove</span></a><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774917020059/ex_101319.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">mber 27, 2017, by and among Proto Labs and Wells Fargo Bank, National Association</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.16<sup style="vertical-align:top;line-height:120%;font-size:pt">(19)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312513086525/d494950dex991.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of U.S. Severance Agreement</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.17<sup style="vertical-align:top;line-height:120%;font-size:pt">(20)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312513206525/d511353dex102.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of UK Severance Agreement</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.18<sup style="vertical-align:top;line-height:120%;font-size:pt">(21)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774919015244/ex_152135.htm" style="-sec-extract:exhibit;">Amended and Restated </a><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774919015244/ex_152135.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Executive Employment Agreement, dated August 1, 2019, by and between Proto Labs, Inc. and Victoria M. Holt</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.19<sup style="vertical-align:top;line-height:120%;font-size:pt">(22)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774914001627/ex10-2.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Restricted Stock Agreement under 2012 Long-Term Incentive Plan for the initial grant to Victoria M. Holt</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.20<sup style="vertical-align:top;line-height:120%;font-size:pt">(23)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774914001955/ex10-1.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Restricted Stock Unit Agreement under 2012 Long-Term Incentive Plan (U.S. Employees)</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.21<sup style="vertical-align:top;line-height:120%;font-size:pt">(24)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774914001955/ex10-2.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Restricted Stock Unit Agreement under 2012 Long-Term Incentive Plan (U.K. Employees)</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.22<sup style="vertical-align:top;line-height:120%;font-size:pt">(25)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774914003200/ex99-6.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Restricted Stock Unit Agreement under 2012 Long-Term Incentive Plan (Directors)</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.23<sup style="vertical-align:top;line-height:120%;font-size:pt">(26)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774919015244/ex_152136.htm" style="-sec-extract:exhibit;">Amended and Restated </a><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774919015244/ex_152136.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Severance Agreement, dated August 1, 2019, by and between Proto Labs, Inc. and John A. Way</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.24<sup style="vertical-align:top;line-height:120%;font-size:pt">(28)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774917002759/ex10-1.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Performance Stock Unit Agreement under 2012 Long-Term Incentive Plan</span></a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">10.25<sup style="vertical-align:top;line-height:120%;font-size:pt">(30)</sup>#</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774918014168/ex_117988.htm" style="-sec-extract:exhibit;"><span style="text-decoration: underline; ">Form of Deferred Stock Unit Agreement under 2012 Long-Term Incentive Plan</span></a></p> </td>
    </tr>

    <tr>
     <td style="width: 10%; text-align: center; vertical-align: top;">10.26<sup style="vertical-align:top;line-height:120%;font-size:pt">(32)</sup>#</td>
     <td style="vertical-align:top;width:2%;">&#xa0;</td>
     <td style="vertical-align:bottom;width:88%;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774919009830/ex_144745.htm" style="-sec-extract:exhibit;">Transition and Separation Agreement, dated May 8, 2019 by and between Proto Labs, Inc. and David M. Fein</a></td>
    </tr>

    <tr>
     <td style="width: 10%; text-align: center; vertical-align: top;">10.27<sup style="vertical-align:top;line-height:120%;font-size:pt">(33)</sup>#</td>
     <td style="vertical-align:top;width:2%;">&#xa0;</td>
     <td style="vertical-align:bottom;width:88%;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774919015244/ex_152137.htm" style="-sec-extract:exhibit;">Form of Executive Severance Agreement</a></td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">21.1</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="ex_215172.htm" style="-sec-extract:exhibit;">Subsidiaries of Proto Labs, Inc.</a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">23.1</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="ex_215173.htm" style="-sec-extract:exhibit;">Consent of Ernst &amp; Young LLP</a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">24.1</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="ex_215174.htm" style="-sec-extract:exhibit;">Powers of Attorney</a></p> </td>
    </tr>

    <tr>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">31.1</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="ex_215175.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>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">31.2</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="ex_215176.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>
     <td style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">32.1*</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><a href="ex_215177.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 style="vertical-align:top;width:10%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">101.INS**</p> </td>
     <td style="vertical-align:top;width:2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:bottom;width:88%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">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.</p> </td>
    </tr>

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

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

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

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

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

    <tr>
     <td style="width: 10%; text-align: center; vertical-align: top;">104</td>
     <td style="vertical-align:top;width:2%;">&#xa0;</td>
     <td style="vertical-align:bottom;width:88%;">Cover Page Interactive Data File (formatted as Inline XBRL and contained in Exhibit 101)</td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    81
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="margin-left:1.4%;width:98.6%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(1)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to 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.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(2)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 3.1 to the Company&#x2019;s Form 8-K, filed with the Commission on November 8, 2016.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(3)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 4.1 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(4)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.1 to the Company&#x2019;s Form 10-Q, filed with the Commission on November 3, 2015.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(5)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.14 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(6)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.15 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(7)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.16 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(8)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.17 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(9)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.18 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(10)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 99.7 to the Company&#x2019;s Registration Statement on Form S-8 (File No. 333-179651), filed with the Commission on February 23, 2012.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(11)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.7 to the Company&#x2019;s Registration Statement on Form S-1 (File No. 333-175745), filed with the Commission on July 25, 2011.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(12)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.8 to the Company&#x2019;s Registration Statement on Form S-1 (File No. 333-175745), filed with the Commission on July 25, 2011.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(13)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.9 to the Company&#x2019;s Registration Statement on Form S-1 (File No. 333-175745), filed with the Commission on July 25, 2011.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(14)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.10 to the Company&#x2019;s Registration Statement on Form S-1 (File No. 333-175745), filed with the Commission on July 25, 2011.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(15)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.11 to the Company&#x2019;s Registration Statement on Form S-1 (File No. 333-175745), filed with the Commission on July 25, 2011.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(16)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.12 to the Company&#x2019;s Registration Statement on Form S-1 (File No. 333-175745), filed with the Commission on July 25, 2011.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(17)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.19 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on October 26, 2011.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(18)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.1 to the Company&#x2019;s Form 8-K, filed with the Commission on December 1, 2017.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(19)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 99.1 to the Company&#x2019;s Form 8-K, filed with the Commission on March 1, 2013.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(20)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.2 to the Company&#x2019;s Form 10-Q, filed with the Commission on May 8, 2013.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(21)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.1 to the Company&#x2019;s Form 8-K, filed with the Commission on August 2, 2019.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(22)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.2 to the Company&#x2019;s Form 8-K, filed with the Commission on February 6, 2014.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(23)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.1 to the Company&#x2019;s Form 8-K, filed with the Commission on February 12, 2014.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(24)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.2 to the Company&#x2019;s Form 8-K, filed with the Commission on February 12, 2014.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(25)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 99.6 to the Company's Registration Statement on Form S-8 (file No. 333-194272), filed with the Commission on March 3, 2014.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(26)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.2 to the Company&#x2019;s Form 8-K, filed with the Commission on August 2, 2019.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(27)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 3.1 to the Company&#x2019;s Form 8-K, filed with the Commission on May 21, 2015.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(28)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.1 to the Company&#x2019;s Form 8-K, filed with the Commission on February 17, 2017.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(29)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 2.1 to the Company&#x2019;s Form 8-K, filed with the Commission on January 18, 2021.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(30)</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 10.1 to the Company's Form 10-Q, filed with the Commission on August 1, 2018.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="margin: 0pt; text-align: right; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">(31)</p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Incorporated by reference to Exhibit 4.2 to the Company's Form 10-K, filed with the Commission on February 26, 2020.</p> </td>
    </tr>

    <tr>
     <td style="width: 65px; text-align: right; vertical-align: top;">(32)</td>
     <td style="vertical-align: top; width: 1495px;">Incorporated by reference to Exhibit 10.1 to the Company's Form 8-K, filed with the Commission on May 14, 2019.</td>
    </tr>

    <tr>
     <td style="width: 65px; text-align: right; vertical-align: top;">(33)</td>
     <td style="vertical-align: top; width: 1495px;">Incorporated by reference to Exhibit 99.2 to the Company's Form 8-K, filed with the Commission on August 2, 2019.</td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;">&#xa0;</td>
     <td style="vertical-align: top; width: 1495px;">&#xa0;</td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:12pt;margin:0pt;text-align:right;"><sup style="vertical-align:top;line-height:120%;font-size:pt">#</sup></p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Indicates management contract or compensatory plan or arrangement.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:right;">*</p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">The certifications furnished in Exhibit 32.1 hereto are deemed to accompany this Annual Report on Form 10-K and will not be deemed &#x201c;filed&#x201d; for purposes of Section 18 of the Securities Exchange Act of 1934, as amended. Such certifications will not be deemed to be incorporated by reference into any filings under the Securities Act of 1933, as amended, or the Securities Exchange Act of 1934, as amended, except to the extent&#xa0;that the registrant specifically incorporates it by reference.</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align: top; width: 65px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:right;">**</p> </td>
     <td style="vertical-align: top; width: 1495px;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Users of this data are advised that, pursuant to Rule 406T of Regulation S-T, these interactive data files are deemed not filed or part of a registration statement or prospectus for purposes of Sections 11 or 12 of the Securities Act of 1933 or Section 18 of the Securities Exchange Act of 1934 and otherwise are not subject to liability under these sections.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 72pt; text-align: left;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
    82
   </div>
   <hr />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>SIGNATURE</b></p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Pursuant to the requirements of Section 13 or 15(d) 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:18pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Proto Labs, Inc.</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;text-indent:9pt;">Date: February 19, 2021</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;border-bottom:solid 1px #000000;;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Victoria M. Holt</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Victoria M. Holt</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

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

    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:9pt;margin-right:0pt;margin-top:0pt;text-align:left;">Date: February 19, 2021</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;border-bottom:solid 1px #000000;;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ John A. Way</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

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

    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Chief Financial Officer</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">(Principal Financial and Accounting Officer)</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Pursuant to the requirements of the Securities Exchange Act of 1934, this report has been signed below by the following persons on behalf of the Registrant in the capacities and on the dates indicated.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:left;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:9pt;margin-right:0pt;margin-top:0pt;text-align:left;">Date: February 19, 2021</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;border-bottom:solid 1px #000000;;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Victoria M. Holt</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Victoria M. Holt</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">President and Chief Executive Officer and Director</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">(Principal Executive Officer)</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:9pt;margin-right:0pt;margin-top:0pt;text-align:left;">Date: February 19, 2021</p> </td>
     <td style="vertical-align:top;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;border-bottom:solid 1px #000000;;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ John A. Way</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">John A Way</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Chief Financial Officer</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">(Principal Financial and Accounting Officer)</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><b>&#xa0;</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><b>Chairman of the Board of Directors:</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Archie C. Black*</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><b>Directors:</b></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Sujeet Chand*</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Moonhie Chin*</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Rainer Gawlick*</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">John B. Goodman*</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Donald G. Krantz*</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Sven A. Wehrwein*</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:left;">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">*Victoria M. Holt, by signing her name hereto, does hereby sign this document on behalf of each of the above named officers and directors of the registrant pursuant to powers of attorney duly executed by such persons and filed as an exhibit hereto.</p>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">
   <tbody>
    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:9pt;margin-right:0pt;margin-top:0pt;text-align:left;">Date: February 19, 2021</p> </td>
     <td style="vertical-align:middle;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;border-bottom:solid 1px #000000;;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Victoria M. Holt</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="vertical-align:middle;width:45.5%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:3.7%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
     <td style="vertical-align:middle;width:40.2%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Victoria M. Holt</p> </td>
     <td style="vertical-align:middle;width:10.6%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p> </td>
    </tr>

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

   </tbody>
  </table>
  <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#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;">
      83
     </div>
    </div>
   </div>
  </div>
 </body>
</html>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-21.1
<SEQUENCE>2
<FILENAME>ex_215172.htm
<DESCRIPTION>EXHIBIT 21.1
<TEXT>
<html><head>
	<title>ex_167007.htm</title>
	<!-- Generated by ThunderDome Portal - 1/29/2021 2:55:29 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="margin-bottom: 0; text-align: right; margin-top: 0; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&nbsp;</p>

<p style="margin: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;"><b>Exhibit 21.1</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: center;"><b>SUBSIDIARIES OF THE REGISTRANT</b></p>

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

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 18pt;">All of the Company&#8217;s subsidiaries listed below are wholly owned.</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;">&nbsp;</p>

<table cellpadding="0pt" cellspacing="0pt" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; margin-right: 0pt;">

		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: bottom; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><u><b>Name</b></u></p>
			</td>
			<td style="vertical-align: bottom; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"><u><b>Jurisdiction of Incorporation or Organization</b></u></p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">PL-US International LLC</p>
			</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">United States</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Proto Labs, Ltd.</p>
			</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">United Kingdom</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">PL International Holdings UK Ltd</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">United Kingdom</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">PL Euro Services Limited</p>
			</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">United Kingdom</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Proto Labs GmbH</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Germany</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Proto Labs Tooling GmbH</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Germany</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Proto Labs, G.K.</p>
			</td>
			<td style="vertical-align: top; width: 76%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Japan</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>

<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: right;">&nbsp;</p>

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


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-23.1
<SEQUENCE>3
<FILENAME>ex_215173.htm
<DESCRIPTION>EXHIBIT 23.1
<TEXT>
<html><head>
	<title>ex_167008.htm</title>
	<!-- Generated by ThunderDome Portal - 2/18/2021 10:09:35 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; padding:0in .1in;">
<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><b>Exhibit 23.1</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: center;"><b>Consent of Independent Registered Public Accounting Firm </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: justify;">We consent to the incorporation by reference in the Registration Statements (Form S-8 Nos. 333-179651, 333-194272 and 333-202486) pertaining to the 2012 Long-Term Incentive Plan, Employee Stock Purchase Plan, 2000 Stock Option Plan, and Stock Subscription Warrant of Proto Labs, Inc. and the Registration Statement (Form S-3 No. 333-253112) pertaining to the registration of 748,793 shares of common stock of our reports dated February 19, 2021, with respect to the consolidated financial statements of Proto Labs, Inc., and the effectiveness of internal control over financial reporting of Proto labs, Inc., included in this Annual Report (Form 10-K) for the year ended December 31, 2020.</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;">/s/ Ernst &amp; Young LLP</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;">Minneapolis, Minnesota</p>

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

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


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-24.1
<SEQUENCE>4
<FILENAME>ex_215174.htm
<DESCRIPTION>EXHIBIT 24.1
<TEXT>
<html><head>
	<title>ex_167009.htm</title>
	<!-- Generated by ThunderDome Portal - 1/29/2021 3:00:49 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="padding: 0in 0.1in; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; cursor: auto;">
<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: right;"><b>Exhibit 24.1</b></p>

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

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

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>POWER OF ATTORNEY OF DIRECTOR AND/OR OFFICER</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: justify;">Each of the undersigned directors and/or officers of Proto Labs, Inc., a Minnesota corporation (the &#8220;<u>Company</u>&#8221;), does hereby make, constitute and appoint Victoria M. Holt and John A. Way, and each of them, either of whom may act without the joinder of the other, the undersigned&#8217;s true and lawful attorney-in-fact and agent, with full power of substitution, for the undersigned and in the undersigned&#8217;s name, place and stead, to sign on his or her behalf, individually and in the capacities stated below, the Annual Report on Form 10-K for the year ended December 31, 2020 under the Securities Exchange Act of 1934, as amended, with any amendment or amendments thereto, with all exhibits thereto and other supporting documents, with the U.S. Securities and Exchange Commission, granting unto said attorneys-in-fact, and each of them, full power and authority to do and perform any and all acts necessary or incidental to the performance and execution of the powers herein expressly granted.</p>

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

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">IN WITNESS WHEREOF, each of the undersigned directors and/or officers of Proto Labs, Inc. has hereunto set his or her hand this 19th&nbsp;day of February, 2021.</p>

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

<table cellpadding="0" cellspacing="0" style="margin-left: 18pt; width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">

		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Archie C. Black</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Chairman</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Archie C. Black</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Victoria M. Holt</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">President, Chief Executive Officer and Director</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Victoria M. Holt</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: middle; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ John A. Way</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Chief Financial Officer</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">John A. Way</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Sven Wehrwein</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Director</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Sven Wehrwein</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Rainer Gawlick</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Director</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Rainer Gawlick</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ John B. Goodman</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Director</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">John B. Goodman</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Donald G. Krantz</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Director</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Donald G. Krantz</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Sujeet Chand</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Director</p>
			</td>
		</tr>
		<tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Sujeet Chand</p>
			</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<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: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
		</tr>
		<tr>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
		</tr>
		<tr>
			<td style="width: 47%; 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: thin; border-bottom-style: solid;">/s/ Moonhie Chin</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Director</td>
		</tr>
		<tr>
			<td style="width: 47%; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt; vertical-align: top;">Moonhie Chin</td>
			<td style="vertical-align: top; width: 6%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="vertical-align: top; width: 47%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', 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>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.1
<SEQUENCE>5
<FILENAME>ex_215175.htm
<DESCRIPTION>EXHIBIT 31.1
<TEXT>
<html><head>
	<title>ex_167011.htm</title>
	<!-- Generated by ThunderDome Portal - 1/29/2021 3:01:11 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="padding: 0in 0.1in; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt; cursor: auto;">
<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:right;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><b>Exhibit 31.1</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: 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></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, Victoria M. Holt, certify that:</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; text-indent: 27pt;">1. I have reviewed this Annual Report on Form 10-K 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; 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;">&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;">&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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">a)</p>
			</td>
			<td>
			<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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">b)</p>
			</td>
			<td>
			<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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">c)</p>
			</td>
			<td>
			<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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">d)</p>
			</td>
			<td>
			<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: &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; 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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">a)</p>
			</td>
			<td>
			<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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">b)</p>
			</td>
			<td>
			<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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; 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:49.9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Date: February 19, 2021</p>
			</td>
			<td style="vertical-align:top;width:3.2%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">By:</p>
			</td>
			<td style="vertical-align:top;border-bottom:solid 1px #000000;;width:46.9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Victoria M. Holt</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:49.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.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;width:46.9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Victoria M. Holt</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:49.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.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;width:46.9%;">
			<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:49.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.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;width:46.9%;">
			<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;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>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.2
<SEQUENCE>6
<FILENAME>ex_215176.htm
<DESCRIPTION>EXHIBIT 31.2
<TEXT>
<html><head>
	<title>ex_167012.htm</title>
	<!-- Generated by ThunderDome Portal - 1/29/2021 3:01:39 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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;">&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: &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: 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: &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, John A. Way, certify that:</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; text-indent: 27pt;">1. I have reviewed this Annual Report on Form 10-K 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; 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;">&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;">&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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">a)</p>
			</td>
			<td>
			<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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">b)</p>
			</td>
			<td>
			<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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">c)</p>
			</td>
			<td>
			<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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">d)</p>
			</td>
			<td>
			<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: &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; 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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">a)</p>
			</td>
			<td>
			<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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">b)</p>
			</td>
			<td>
			<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: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; 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:50%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Date: February 19, 2021</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;">By:</p>
			</td>
			<td style="vertical-align:top;border-bottom:solid 1px #000000;;width:47%;">
			<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:50%;">
			<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;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:47%;">
			<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:50%;">
			<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;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:47%;">
			<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:50%;">
			<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;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:47%;">
			<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: &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>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-32.1
<SEQUENCE>7
<FILENAME>ex_215177.htm
<DESCRIPTION>EXHIBIT 32.1
<TEXT>
<html><head>
	<title>ex_167013.htm</title>
	<!-- Generated by ThunderDome Portal - 1/29/2021 3:02:15 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: &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: right;"><b>Exhibit 32.1</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;">&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, Victoria M. Holt, certify, pursuant to 18 U.S.C. Section 1350, as adopted pursuant to Section 906 of the Sarbanes-Oxley Act of 2002, that the Annual Report of Proto Labs, Inc. on Form 10-K for the fiscal year ended December 31, 2020 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 Annual Report on Form 10-K 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: February 19, 2021</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; 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: 60%;">
			<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:5%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">By:</p>
			</td>
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 35%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Victoria M. Holt</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align: top; width: 60%;">
			<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:5%;">
			<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: 35%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Victoria M. Holt</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align: top; width: 60%;">
			<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:5%;">
			<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: 35%;">
			<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: &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;">&nbsp;</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, 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 Annual Report of Proto Labs, Inc. on Form 10-K for the fiscal year ended December 31, 2020 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 Annual Report on Form 10-K 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: February 19, 2021</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; 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: 60%;">
			<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:5%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">By:</p>
			</td>
			<td style="vertical-align: top; border-bottom: 1px solid rgb(0, 0, 0); width: 35%;">
			<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: 60%;">
			<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:5%;">
			<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: 35%;">
			<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: 60%;">
			<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:5%;">
			<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: 35%;">
			<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:'Times New Roman', 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>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.SCH
<SEQUENCE>8
<FILENAME>prlb-20201231.xsd
<DESCRIPTION>XBRL TAXONOMY EXTENSION SCHEMA
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 03:59AM UTC 2021-02-19--><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:country="http://xbrl.sec.gov/country/2020-01-31" xmlns:currency="http://xbrl.sec.gov/currency/2020-01-31" xmlns:dei="http://xbrl.sec.gov/dei/2019-01-31" xmlns:exch="http://xbrl.sec.gov/exch/2020-01-31" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:naics="http://xbrl.sec.gov/naics/2011-01-31" xmlns:nonnum="http://www.xbrl.org/dtr/type/non-numeric" xmlns:num="http://www.xbrl.org/dtr/type/numeric" xmlns:prlb="http://www.protolabs.com/20201231" xmlns:sic="http://xbrl.sec.gov/sic/2020-01-31" xmlns:srt="http://fasb.org/srt/2020-01-31" xmlns:srt-types="http://fasb.org/srt-types/2020-01-31" xmlns:stpr="http://xbrl.sec.gov/stpr/2018-01-31" xmlns:us-gaap="http://fasb.org/us-gaap/2020-01-31" xmlns:us-types="http://fasb.org/us-types/2020-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/20201231">
  <xsd:import namespace="http://xbrl.sec.gov/sic/2020-01-31" schemaLocation="https://xbrl.sec.gov/sic/2020/sic-2020-01-31.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/exch/2020-01-31" schemaLocation="https://xbrl.sec.gov/exch/2020/exch-2020-01-31.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/naics/2011-01-31" schemaLocation="http://xbrl.sec.gov/naics/2011/naics-2011-01-31.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/2020-01-31" schemaLocation="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/country/2020-01-31" schemaLocation="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd"/>
  <xsd:import namespace="http://fasb.org/us-types/2020-01-31" schemaLocation="http://xbrl.fasb.org/us-gaap/2020/elts/us-types-2020-01-31.xsd"/>
  <xsd:import namespace="http://www.xbrl.org/dtr/type/non-numeric" schemaLocation="http://www.xbrl.org/dtr/type/nonNumeric-2009-12-16.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/stpr/2018-01-31" schemaLocation="https://xbrl.sec.gov/stpr/2018/stpr-2018-01-31.xsd"/>
  <xsd:import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/>
  <xsd:import namespace="http://www.xbrl.org/dtr/type/numeric" schemaLocation="http://www.xbrl.org/dtr/type/numeric-2009-12-16.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/currency/2020-01-31" schemaLocation="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd"/>
  <xsd:import namespace="http://fasb.org/srt-types/2020-01-31" schemaLocation="http://xbrl.fasb.org/srt/2020/elts/srt-types-2020-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:import namespace="http://fasb.org/srt/2020-01-31" schemaLocation="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd"/>
  <xsd:annotation>
    <xsd:appinfo>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="prlb-20201231_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-20201231_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-20201231_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-20201231_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/20201231/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" roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">001 - Statement - Consolidated Balance Sheets</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-parentheticals" roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">002 - Statement - Consolidated Balance Sheets (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" roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">003 - Statement - Consolidated Statements of Comprehensive Income</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" roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">004 - Statement - Consolidated Statements of Shareholders' Equity</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" roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">005 - Statement - Consolidated Statements of Cash Flows</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-nature-of-business" roleURI="http://www.protolabs.com/20201231/role/statement-note-1-nature-of-business">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">006 - Disclosure - Note 1 - Nature of Business</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-summary-of-significant-accounting-policies-" roleURI="http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">007 - Disclosure - Note 2 - Summary of Significant Accounting Policies</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-revenue" roleURI="http://www.protolabs.com/20201231/role/statement-note-3-revenue">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">008 - Disclosure - Note 3 - Revenue</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-net-income-per-common-share" roleURI="http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">009 - Disclosure - Note 4 - 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-5-goodwill-and-other-intangible-assets" roleURI="http://www.protolabs.com/20201231/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/20201231/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/20201231/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-property-and-equipment" roleURI="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">013 - Disclosure - Note 8 - Property and Equipment</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-inventory" roleURI="http://www.protolabs.com/20201231/role/statement-note-9-inventory">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">014 - Disclosure - Note 9 - 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-10-financing-obligations" roleURI="http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">015 - Disclosure - Note 10 - Financing Obligations</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-employee-benefit-plans" roleURI="http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">016 - Disclosure - Note 11 - Employee Benefit Plans</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-stockbased-compensation" roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">017 - Disclosure - Note 12 - 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-13-leases" roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">018 - Disclosure - Note 13 - Leases</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-14-accumulated-other-comprehensive-loss" roleURI="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">019 - Disclosure - Note 14 - Accumulated Other Comprehensive 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-15-income-taxes" roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">020 - Disclosure - Note 15 - 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-16-litigation" roleURI="http://www.protolabs.com/20201231/role/statement-note-16-litigation">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">021 - Disclosure - Note 16 - Litigation</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-17-segment-reporting" roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">022 - Disclosure - Note 17 - 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-18-subsequent-events" roleURI="http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">023 - Disclosure - Note 18 - Subsequent Events</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-significant-accounting-policies-policies" roleURI="http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">024 - Disclosure - Significant Accounting Policies (Policies)</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-revenue-tables" roleURI="http://www.protolabs.com/20201231/role/statement-note-3-revenue-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">025 - Disclosure - Note 3 - Revenue (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-net-income-per-common-share-tables" roleURI="http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">026 - Disclosure - Note 4 - 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-5-goodwill-and-other-intangible-assets-tables" roleURI="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">027 - 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/20201231/role/statement-note-6-fair-value-measurements-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">028 - 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/20201231/role/statement-note-7-marketable-securities-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">029 - 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-property-and-equipment-tables" roleURI="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">030 - Disclosure - Note 8 - Property and Equipment (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-inventory-tables" roleURI="http://www.protolabs.com/20201231/role/statement-note-9-inventory-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">031 - Disclosure - Note 9 - 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-12-stockbased-compensation-tables" roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">032 - Disclosure - Note 12 - 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-13-leases-tables" roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">033 - Disclosure - Note 13 - Leases (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-14-accumulated-other-comprehensive-loss-tables" roleURI="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">034 - Disclosure - Note 14 - Accumulated Other Comprehensive 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-15-income-taxes-tables" roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">035 - Disclosure - Note 15 - Income Taxes (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-17-segment-reporting-tables" roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">036 - Disclosure - Note 17 - 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-2-summary-of-significant-accounting-policies-details-textual" roleURI="http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">037 - Disclosure - Note 2 - Summary of Significant Accounting Policies (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-3-revenue-disaggregation-of-revenue-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">038 - Disclosure - Note 3 - Revenue - 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>
      <link:roleType id="statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">039 - Disclosure - Note 4 - 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-5-goodwill-and-other-intangible-assets-details-textual" roleURI="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">040 - 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-carrying-amount-of-goodwill-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">041 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Changes in 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/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">042 - 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/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">043 - 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-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" roleURI="http://www.protolabs.com/20201231/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">044 - 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-marketable-securities-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">045 - Disclosure - Note 7 - Marketable Securities - Short-term and Long-term Marketable 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/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">046 - 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-property-and-equipment-details-textual" roleURI="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">047 - Disclosure - Note 8 - Property and Equipment (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-8-property-and-equipment-components-of-property-and-equipment-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">048 - Disclosure - Note 8 - Property and Equipment - Components of Property and Equipment (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-inventory-inventory-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">049 - Disclosure - Note 9 - 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-10-financing-obligations-details-textual" roleURI="http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">050 - Disclosure - Note 10 - Financing Obligations (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-11-employee-benefit-plans-details-textual" roleURI="http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">051 - Disclosure - Note 11 - Employee Benefit Plans (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-stockbased-compensation-details-textual" roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">052 - Disclosure - Note 12 - 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-12-stockbased-compensation-stockbased-compensation-expense-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">053 - Disclosure - Note 12 - Stock-based Compensation - Stock-based Compensation 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-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">054 - Disclosure - Note 12 - 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-12-stockbased-compensation-stock-option-activity-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">055 - Disclosure - Note 12 - 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-12-stockbased-compensation-information-about-stock-options-outstanding-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">056 - Disclosure - Note 12 - Stock-based Compensation - Information about Stock Options Outstanding (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-stockbased-compensation-restricted-stock-options-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">057 - Disclosure - Note 12 - 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-12-stockbased-compensation-performance-stock-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">058 - Disclosure - Note 12 - 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-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">059 - Disclosure - Note 12 - 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-13-leases-details-textual" roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">060 - Disclosure - Note 13 - Leases (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-13-leases-balance-sheet-information-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">061 - Disclosure - Note 13 - Leases - Balance Sheet Information (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-13-leases-lease-expense-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">062 - Disclosure - Note 13 - Leases - Lease 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-13-leases-maturities-of-operating-lease-liabilities-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">063 - Disclosure - Note 13 - Leases - Maturities of Operating Lease Liabilities (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-13-leases-weighted-average-remaining-terms-and-discount-rates-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">064 - Disclosure - Note 13 - Leases - Weighted Average Remaining Terms and Discount Rates (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-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">065 - Disclosure - Note 14 - Accumulated Other Comprehensive 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-15-income-taxes-details-textual" roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">066 - Disclosure - Note 15 - 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-15-income-taxes-components-of-income-loss-before-income-taxes-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">067 - Disclosure - Note 15 - Income Taxes - Components of Income (Loss) Before Income Taxes (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-15-income-taxes-significant-components-of-provision-for-income-taxes-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">068 - Disclosure - Note 15 - Income Taxes - Significant Components of Provision for Income Taxes (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-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">069 - Disclosure - Note 15 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (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-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">070 - Disclosure - Note 15 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (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-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">071 - Disclosure - Note 15 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (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-17-segment-reporting-revenue-from-operations-by-reportable-segment-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">072 - Disclosure - Note 17 - 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-17-segment-reporting-income-from-operations-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">073 - Disclosure - Note 17 - 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-17-segment-reporting-longlived-assets-by-geographic-region-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">074 - Disclosure - Note 17 - 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-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">075 - Disclosure - Note 17 - Segment Reporting - Expenditures for Additions to Long-lived Assets (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-17-segment-reporting-depreciation-and-amortization-details" roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">076 - Disclosure - Note 17 - Segment Reporting - Depreciation and Amortization (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-18-subsequent-events-details-textual" roleURI="http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">077 - Disclosure - Note 18 - Subsequent Events (Details Textual)</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="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_AssetsAndLiabilitiesLesseeTableTextBlock" name="AssetsAndLiabilitiesLesseeTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_CNCMachiningFirstcutMember" name="CNCMachiningFirstcutMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_ComputerHardwareAndSoftwareGross" name="ComputerHardwareAndSoftwareGross" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="prlb_CorporateUnallocatedAndJapanSegmentMember" name="CorporateUnallocatedAndJapanSegmentMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_DeferredTaxAssetsRightOfUseLeases" name="DeferredTaxAssetsRightOfUseLeases" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="prlb_DeferredTaxLiabilityCaresAct" name="DeferredTaxLiabilityCaresAct" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" name="DepreciationAndAmortizationByGeographicRegionTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" 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="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" name="EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" name="EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" name="EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" name="EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" name="EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EmployeeStockPurchasePlanOfferingPeriod" name="EmployeeStockPurchasePlanOfferingPeriod" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" name="EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" nillable="true" substitutionGroup="xbrli:item" type="xbrli:sharesItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_EuropeSegmentMember" name="EuropeSegmentMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_ExercisePriceRangeFourMember" name="ExercisePriceRangeFourMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_ExercisePriceRangeOneMember" name="ExercisePriceRangeOneMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_ExercisePriceRangeThreeMember" name="ExercisePriceRangeThreeMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_ExercisePriceRangeTwoMember" name="ExercisePriceRangeTwoMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" name="ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" name="IncomeFromOperationsByGeographicAreaTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct" name="IncreaseDecreaseInIncomeTaxesPayableCaresAct" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_InjectionMoldingProtomoldMember" name="InjectionMoldingProtomoldMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_JapanSegmentMember" name="JapanSegmentMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_LesseeLeaseLiabilityMaturityTableTextBlock" name="LesseeLeaseLiabilityMaturityTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock" name="LesseeOperatingLeasesAndFinancingLeasesTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_LongtermIncentivePlan2012Member" name="LongtermIncentivePlan2012Member" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" name="MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" name="MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" 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_OfficeFurnitureAndEquipmentMember" name="OfficeFurnitureAndEquipmentMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" name="OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_OperatingLossCarryforwardsExpirationPeriod" name="OperatingLossCarryforwardsExpirationPeriod" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" name="OperatingLossCarryforwardsPercentageOfTaxableIncome" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_OtherProductsMember" name="OtherProductsMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" name="PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="instant"/>
  <xsd:element id="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" name="PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" nillable="true" substitutionGroup="xbrli:item" type="num:percentItemType" xbrli:periodType="instant"/>
  <xsd:element id="prlb_ScheduleOfLeaseExpenseTableTextBlock" name="ScheduleOfLeaseExpenseTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" name="ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" name="ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="nonnum: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="num:perShareItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount" name="SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_SheetMetalMember" name="SheetMetalMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_StockOptionsRestrictedStockAndOtherMember" name="StockOptionsRestrictedStockAndOtherMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_The401KRetirementPlanMember" name="The401KRetirementPlanMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_ThreeDPrintingFinelineMember" name="ThreeDPrintingFinelineMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_UnitedStatesSegmentMember" name="UnitedStatesSegmentMember" nillable="true" substitutionGroup="xbrli:item" type="nonnum:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" name="statement-statement-note-12-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-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" name="statement-statement-note-12-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-12-stockbased-compensation-information-about-stock-options-outstanding-details" name="statement-statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-12-stockbased-compensation-performance-stock-details" name="statement-statement-note-12-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-12-stockbased-compensation-restricted-stock-options-details" name="statement-statement-note-12-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-12-stockbased-compensation-stock-option-activity-details" name="statement-statement-note-12-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-12-stockbased-compensation-stockbased-compensation-expense-details" name="statement-statement-note-12-stockbased-compensation-stockbased-compensation-expense-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-12-stockbased-compensation-tables" name="statement-statement-note-12-stockbased-compensation-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-13-leases-balance-sheet-information-details" name="statement-statement-note-13-leases-balance-sheet-information-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-13-leases-lease-expense-details" name="statement-statement-note-13-leases-lease-expense-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-13-leases-maturities-of-operating-lease-liabilities-details" name="statement-statement-note-13-leases-maturities-of-operating-lease-liabilities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-13-leases-tables" name="statement-statement-note-13-leases-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details" name="statement-statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" name="statement-statement-note-14-accumulated-other-comprehensive-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-14-accumulated-other-comprehensive-loss-tables" name="statement-statement-note-14-accumulated-other-comprehensive-loss-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" name="statement-statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" name="statement-statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" name="statement-statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" name="statement-statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" name="statement-statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-15-income-taxes-tables" name="statement-statement-note-15-income-taxes-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-17-segment-reporting-depreciation-and-amortization-details" name="statement-statement-note-17-segment-reporting-depreciation-and-amortization-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" name="statement-statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-17-segment-reporting-income-from-operations-details" name="statement-statement-note-17-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-17-segment-reporting-longlived-assets-by-geographic-region-details" name="statement-statement-note-17-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-17-segment-reporting-revenue-from-operations-by-reportable-segment-details" name="statement-statement-note-17-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-17-segment-reporting-tables" name="statement-statement-note-17-segment-reporting-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details" name="statement-statement-note-3-revenue-disaggregation-of-revenue-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-3-revenue-tables" name="statement-statement-note-3-revenue-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" name="statement-statement-note-4-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-4-net-income-per-common-share-tables" name="statement-statement-note-4-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-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" name="statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-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-marketable-securities-details" name="statement-statement-note-7-marketable-securities-shortterm-and-longterm-marketable-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-property-and-equipment-components-of-property-and-equipment-details" name="statement-statement-note-8-property-and-equipment-components-of-property-and-equipment-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-8-property-and-equipment-tables" name="statement-statement-note-8-property-and-equipment-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-9-inventory-inventory-details" name="statement-statement-note-9-inventory-inventory-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-9-inventory-tables" name="statement-statement-note-9-inventory-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-significant-accounting-policies-policies" name="statement-statement-significant-accounting-policies-policies" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
</xsd:schema>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.CAL
<SEQUENCE>9
<FILENAME>prlb-20201231_cal.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION CALCULATION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 03:59AM UTC 2021-02-19--><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/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:href="prlb-20201231.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/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" 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_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" 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="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" 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_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" 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_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" 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_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details" xlink:href="prlb-20201231.xsd#statement-note-13-leases-balance-sheet-information-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingLeaseLiability" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingLeaseLiability" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiability" 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_FinanceLeaseLiability" xlink:to="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details" xlink:href="prlb-20201231.xsd#statement-note-13-leases-lease-expense-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseInterestExpense" xlink:label="us-gaap_FinanceLeaseInterestExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_VariableLeaseCost" xlink:label="us-gaap_VariableLeaseCost" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_OperatingLeaseCost" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_FinanceLeaseInterestExpense" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_VariableLeaseCost" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:href="prlb-20201231.xsd#statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income" xlink:href="prlb-20201231.xsd#statement-consolidated-statements-of-comprehensive-income" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ResearchAndDevelopmentExpense" 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_GeneralAndAdministrativeExpense" 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_OperatingExpenses" 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_GrossProfit" 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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" 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_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows" xlink:href="prlb-20201231.xsd#statement-consolidated-statements-of-cash-flows" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GainLossOnSaleOfBusiness" xlink:label="us-gaap_GainLossOnSaleOfBusiness" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:label="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:label="us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireOtherInvestments" xlink:label="us-gaap_PaymentsToAcquireOtherInvestments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:label="us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:label="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:label="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RepaymentsOfLongTermDebt" xlink:label="us-gaap_RepaymentsOfLongTermDebt" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncreaseDecreaseInOtherOperatingLiabilities" 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_DeferredIncomeTaxExpenseBenefit" 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_ShareBasedCompensation" 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_NetIncomeLoss" 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_IncreaseDecreaseInAccountsPayable" 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_IncreaseDecreaseInAccruedIncomeTaxesPayable" 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_IncreaseDecreaseInAccountsReceivable" 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_OtherNoncashIncomeExpense" 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_IncreaseDecreaseInInventories" 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_GainLossOnSaleOfBusiness" 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_AccretionAmortizationOfDiscountsAndPremiumsInvestments" 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_PaymentsToAcquireOtherInvestments" 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_ProceedsFromSaleAndMaturityOfMarketableSecurities" 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_PaymentsToAcquireHeldToMaturitySecurities" 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_PaymentsToAcquireBusinessesNetOfCashAcquired" 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_PaymentsToAcquirePropertyPlantAndEquipment" 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_ProceedsFromDivestitureOfBusinesses" 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_FinanceLeasePrincipalPayments" 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_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" 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_PaymentsForRepurchaseOfCommonStock" xlink:type="arc"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_RepaymentsOfLongTermDebt" 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_NetCashProvidedByUsedInOperatingActivities" 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_NetCashProvidedByUsedInInvestingActivities" 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_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" 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_NetCashProvidedByUsedInFinancingActivities" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentFederalTaxExpenseBenefit" xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentForeignTaxExpenseBenefit" xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="prlb-20201231.xsd#prlb_DeferredTaxAssetsRightOfUseLeases" xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities" xlink:label="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:label="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsInventory" xlink:label="us-gaap_DeferredTaxAssetsInventory" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsNet" xlink:label="us-gaap_DeferredTaxAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsOther" xlink:label="us-gaap_DeferredTaxAssetsOther" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilities" xlink:label="us-gaap_DeferredTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:label="us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsOther" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsInventory" xlink:type="arc"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="prlb_DeferredTaxAssetsRightOfUseLeases" xlink:type="arc"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredIncomeTaxLiabilities" xlink:to="us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredIncomeTaxLiabilities" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredIncomeTaxLiabilities" xlink:to="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxLiabilities" xlink:to="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_DeferredTaxLiabilities" xlink:to="us-gaap_DeferredTaxAssetsNet" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:href="prlb-20201231.xsd#statement-note-4-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/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:href="prlb-20201231.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/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_HeldToMaturitySecurities" xlink:to="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_HeldToMaturitySecurities" xlink:to="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:href="prlb-20201231.xsd#statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:type="extended">
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ComputerHardwareAndSoftwareGross" xlink:label="prlb_ComputerHardwareAndSoftwareGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BuildingsAndImprovementsGross" xlink:label="us-gaap_BuildingsAndImprovementsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConstructionInProgressGross" xlink:label="us-gaap_ConstructionInProgressGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Land" xlink:label="us-gaap_Land" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseholdImprovementsGross" xlink:label="us-gaap_LeaseholdImprovementsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MachineryAndEquipmentGross" xlink:label="us-gaap_MachineryAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_BuildingsAndImprovementsGross" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_Land" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="prlb_ComputerHardwareAndSoftwareGross" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_MachineryAndEquipmentGross" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_ConstructionInProgressGross" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_LeaseholdImprovementsGross" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentNet" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentNet" xlink:to="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details" xlink:href="prlb-20201231.xsd#statement-note-9-inventory-inventory-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="locator"/>
    <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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" 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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="extended">
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" xlink:type="arc"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:type="arc"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="arc"/>
    <link:calculationArc order="9" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:calculationArc order="10" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets" xlink:href="prlb-20201231.xsd#statement-consolidated-balance-sheets" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:label="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxesReceivable" xlink:label="us-gaap_IncomeTaxesReceivable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MarketableSecuritiesCurrent" xlink:label="us-gaap_MarketableSecuritiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MarketableSecuritiesNoncurrent" xlink:label="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherIntangibleAssetsNet" xlink:label="us-gaap_OtherIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccountsReceivableNetCurrent" 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_MarketableSecuritiesCurrent" 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_PrepaidExpenseAndOtherAssetsCurrent" 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_InventoryNet" 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_CashAndCashEquivalentsAtCarryingValue" 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_OtherIntangibleAssetsNet" 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_FinanceLeaseRightOfUseAsset" 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_OperatingLeaseRightOfUseAsset" 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_OtherAssetsNoncurrent" 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_Goodwill" 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_PropertyPlantAndEquipmentNet" 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_OperatingLeaseLiabilityCurrent" 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_AccruedLiabilitiesAndOtherLiabilities" 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_AccruedIncomeTaxesCurrent" 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_FinanceLeaseLiabilityCurrent" 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_EmployeeRelatedLiabilitiesCurrent" 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_AccountsPayableCurrent" 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_OtherLiabilitiesNoncurrent" 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_OperatingLeaseLiabilityNoncurrent" 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_LiabilitiesCurrent" 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_DeferredIncomeTaxLiabilitiesNet" 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_FinanceLeaseLiabilityNoncurrent" 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_CommonStockValue" 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_PreferredStockValue" 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_RetainedEarningsAccumulatedDeficit" 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_AdditionalPaidInCapitalCommonStock" 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_AccumulatedOtherComprehensiveIncomeLossNetOfTax" 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_Liabilities" 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_StockholdersEquity" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:href="prlb-20201231.xsd#statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:href="prlb-20201231.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/20201231/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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AssetsFairValueDisclosure" xlink:label="us-gaap_AssetsFairValueDisclosure" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MoneyMarketFundsAtCarryingValue" xlink:label="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsFairValueDisclosure" xlink:to="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:type="arc"/>
  </link:calculationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.DEF
<SEQUENCE>10
<FILENAME>prlb-20201231_def.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION DEFINITION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 03:59AM UTC 2021-02-19--><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/20201231/role/statement-note-17-segment-reporting" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-16-litigation" xlink:href="prlb-20201231.xsd#statement-note-16-litigation" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-16-litigation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LegalMattersAndContingenciesTextBlock" xlink:label="us-gaap_LegalMattersAndContingenciesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LegalMattersAndContingenciesTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss" xlink:href="prlb-20201231.xsd#statement-note-14-accumulated-other-comprehensive-loss" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:label="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-9-inventory" xlink:href="prlb-20201231.xsd#statement-note-9-inventory" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-9-inventory" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-7-marketable-securities" xlink:href="prlb-20201231.xsd#statement-note-7-marketable-securities" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InvestmentTextBlock" xlink:label="us-gaap_InvestmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-6-fair-value-measurements" xlink:href="prlb-20201231.xsd#statement-note-6-fair-value-measurements" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueDisclosuresTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share" xlink:href="prlb-20201231.xsd#statement-note-4-net-income-per-common-share" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareTextBlock" xlink:label="us-gaap_EarningsPerShareTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-3-revenue" xlink:href="prlb-20201231.xsd#statement-note-3-revenue" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-3-revenue" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RevenueFromContractWithCustomerTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-1-nature-of-business" xlink:href="prlb-20201231.xsd#statement-note-1-nature-of-business" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-1-nature-of-business" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-document-and-entity-information" xlink:href="prlb-20201231.xsd#statement-document-and-entity-information" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-document-and-entity-information" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentAnnualReport" xlink:label="dei_DocumentAnnualReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityPublicFloat" xlink:label="dei_EntityPublicFloat" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityVoluntaryFilers" xlink:label="dei_EntityVoluntaryFilers" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityWellKnownSeasonedIssuer" xlink:label="dei_EntityWellKnownSeasonedIssuer" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.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_DocumentAnnualReport" 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_EntityWellKnownSeasonedIssuer" 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_EntityVoluntaryFilers" 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_EntityCurrentReportingStatus" 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_EntityInteractiveDataCurrent" 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_EntityFilerCategory" 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_EntitySmallBusiness" 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_EntityEmergingGrowthCompany" xlink:type="arc"/>
    <link:definitionArc order="30" 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="31" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityPublicFloat" xlink:type="arc"/>
    <link:definitionArc order="32" 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/20201231/role/statement-consolidated-balance-sheets-parentheticals" xlink:href="prlb-20201231.xsd#statement-consolidated-balance-sheets-parentheticals" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockParOrStatedValuePerShare" xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockSharesAuthorized" xlink:label="us-gaap_PreferredStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockSharesIssued" xlink:label="us-gaap_PreferredStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-2-summary-of-significant-accounting-policies-" xlink:href="prlb-20201231.xsd#statement-note-2-summary-of-significant-accounting-policies-" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OfficeFurnitureAndEquipmentMember" xlink:label="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComputerEquipmentMember" xlink:label="us-gaap_ComputerEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquipmentMember" xlink:label="us-gaap_EquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LandBuildingsAndImprovementsMember" xlink:label="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SignificantAccountingPoliciesTextBlock" xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember-default" 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_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" 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_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="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_EquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-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_PropertyPlantAndEquipmentTypeDomain" xlink:to="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_ComputerEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_BuildingMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_LandBuildingsAndImprovementsMember" 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_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TypeOfAdoptionMember" xlink:to="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember-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_SignificantAccountingPoliciesTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets" xlink:href="prlb-20201231.xsd#statement-note-5-goodwill-and-other-intangible-assets" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment" xlink:href="prlb-20201231.xsd#statement-note-8-property-and-equipment" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations" xlink:href="prlb-20201231.xsd#statement-note-10-financing-obligations" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DebtDisclosureTextBlock" xlink:label="us-gaap_DebtDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DebtDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans" xlink:href="prlb-20201231.xsd#statement-note-11-employee-benefit-plans" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_The401KRetirementPlanMember" xlink:label="prlb_The401KRetirementPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DomesticPlanMember" xlink:label="us-gaap_DomesticPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ForeignPlanMember" xlink:label="us-gaap_ForeignPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:label="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanSponsorLocationAxis" xlink:label="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" 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_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="prlb_The401KRetirementPlanMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain-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_RetirementPlanSponsorLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_DomesticPlanMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DomesticPlanMember" xlink:to="country_US" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain-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_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_ForeignPlanMember" 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_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_LongtermIncentivePlan2012Member" xlink:label="prlb_LongtermIncentivePlan2012Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PlanNameAxis" xlink:label="us-gaap_PlanNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-13-leases" xlink:href="prlb-20201231.xsd#statement-note-13-leases" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock" xlink:label="prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseContractualTermAxis" xlink:label="us-gaap_LeaseContractualTermAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermDomain" 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_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/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LeaseContractualTermAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LeaseContractualTermDomain" xlink:to="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermDomain-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="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="prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-18-subsequent-events" xlink:href="prlb-20201231.xsd#statement-note-18-subsequent-events" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ScenarioForecastMember" xlink:label="srt_ScenarioForecastMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventMember" xlink:label="us-gaap_SubsequentEventMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeAxis" xlink:label="us-gaap_SubsequentEventTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeDomain" xlink:label="us-gaap_SubsequentEventTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeDomain" xlink:label="us-gaap_SubsequentEventTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventsTextBlock" xlink:label="us-gaap_SubsequentEventsTextBlock" 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="us-gaap_SubsequentEventTypeAxis" xlink:to="us-gaap_SubsequentEventTypeDomain" 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="us-gaap_SubsequentEventTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SubsequentEventTypeDomain" xlink:to="us-gaap_SubsequentEventMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_SubsequentEventTypeAxis" xlink:to="us-gaap_SubsequentEventTypeDomain-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="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="4" 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_SubsequentEventsTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies" xlink:href="prlb-20201231.xsd#statement-significant-accounting-policies-policies" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingPoliciesAbstract" xlink:label="us-gaap_AccountingPoliciesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdvertisingCostsPolicyTextBlock" xlink:label="us-gaap_AdvertisingCostsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:label="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:label="us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:label="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConsolidationPolicyTextBlock" xlink:label="us-gaap_ConsolidationPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:label="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:label="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxPolicyTextBlock" xlink:label="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InternalUseSoftwarePolicy" xlink:label="us-gaap_InternalUseSoftwarePolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryPolicyTextBlock" xlink:label="us-gaap_InventoryPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeLeasesPolicyTextBlock" xlink:label="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MarketableSecuritiesPolicy" xlink:label="us-gaap_MarketableSecuritiesPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:label="us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueRecognitionPolicyTextBlock" xlink:label="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:label="us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UseOfEstimates" xlink:label="us-gaap_UseOfEstimates" 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_PolicyTextBlockAbstract" 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_PolicyTextBlockAbstract" xlink:to="us-gaap_AccountingPoliciesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ConsolidationPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_UseOfEstimates" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_MarketableSecuritiesPolicy" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_InventoryPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_InternalUseSoftwarePolicy" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_AdvertisingCostsPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="17" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:type="arc"/>
    <link:definitionArc order="18" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="arc"/>
    <link:definitionArc order="19" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-3-revenue-tables" xlink:href="prlb-20201231.xsd#statement-note-3-revenue-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-3-revenue-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DisaggregationOfRevenueTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-tables" xlink:href="prlb-20201231.xsd#statement-note-4-net-income-per-common-share-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:href="prlb-20201231.xsd#statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfGoodwillTextBlock" xlink:label="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-6-fair-value-measurements-tables" xlink:href="prlb-20201231.xsd#statement-note-6-fair-value-measurements-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-7-marketable-securities-tables" xlink:href="prlb-20201231.xsd#statement-note-7-marketable-securities-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:label="us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:label="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_HeldToMaturitySecuritiesTextBlock" 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/20201231/role/statement-note-8-property-and-equipment-tables" xlink:href="prlb-20201231.xsd#statement-note-8-property-and-equipment-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PropertyPlantAndEquipmentTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-9-inventory-tables" xlink:href="prlb-20201231.xsd#statement-note-9-inventory-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-9-inventory-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-12-stockbased-compensation-tables" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:label="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:label="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" 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_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" 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_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" 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="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" 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_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="6" 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:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-tables" xlink:href="prlb-20201231.xsd#statement-note-13-leases-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_AssetsAndLiabilitiesLesseeTableTextBlock" xlink:label="prlb_AssetsAndLiabilitiesLesseeTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_LesseeLeaseLiabilityMaturityTableTextBlock" xlink:label="prlb_LesseeLeaseLiabilityMaturityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:label="prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:label="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb_AssetsAndLiabilitiesLesseeTableTextBlock" 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_ScheduleOfLeaseExpenseTableTextBlock" 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="prlb_LesseeLeaseLiabilityMaturityTableTextBlock" 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="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-tables" xlink:href="prlb-20201231.xsd#statement-note-14-accumulated-other-comprehensive-loss-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:label="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-15-income-taxes-tables" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:label="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:label="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:label="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:label="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:label="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" 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_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" 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_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" 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_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" 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="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:label="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:label="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:label="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:label="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" 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_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:href="prlb-20201231.xsd#statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OfficeFurnitureAndEquipmentMember" xlink:label="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdvertisingExpense" xlink:label="us-gaap_AdvertisingExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CapitalizedComputerSoftwareNet" xlink:label="us-gaap_CapitalizedComputerSoftwareNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComputerEquipmentMember" xlink:label="us-gaap_ComputerEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquipmentMember" xlink:label="us-gaap_EquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillImpairmentLoss" xlink:label="us-gaap_GoodwillImpairmentLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LandBuildingsAndImprovementsMember" xlink:label="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember-default" 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_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" 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_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="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_EquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-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_PropertyPlantAndEquipmentTypeDomain" xlink:to="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_ComputerEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_BuildingMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_LandBuildingsAndImprovementsMember" 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_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TypeOfAdoptionMember" xlink:to="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember-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_PropertyPlantAndEquipmentUsefulLife" 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_CapitalizedComputerSoftwareNet" 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_GoodwillImpairmentLoss" 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_AdvertisingExpense" 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_ResearchAndDevelopmentExpense" 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_OperatingLeaseRightOfUseAsset" 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_OperatingLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual" xlink:href="prlb-20201231.xsd#statement-note-5-goodwill-and-other-intangible-assets-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AmortizationOfIntangibleAssets" xlink:label="us-gaap_AmortizationOfIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AmortizationOfIntangibleAssets" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-details-textual" xlink:href="prlb-20201231.xsd#statement-note-8-property-and-equipment-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Depreciation" xlink:label="us-gaap_Depreciation" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_Depreciation" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations-details-textual" xlink:href="prlb-20201231.xsd#statement-note-10-financing-obligations-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LineOfCredit" xlink:label="us-gaap_LineOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LineOfCredit" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual" xlink:href="prlb-20201231.xsd#statement-note-11-employee-benefit-plans-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" xlink:label="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" xlink:label="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_The401KRetirementPlanMember" xlink:label="prlb_The401KRetirementPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:label="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:label="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DomesticPlanMember" xlink:label="us-gaap_DomesticPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ForeignPlanMember" xlink:label="us-gaap_ForeignPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanSponsorLocationAxis" xlink:label="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" 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_RetirementPlanTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="prlb_The401KRetirementPlanMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain-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_RetirementPlanSponsorLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_DomesticPlanMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DomesticPlanMember" xlink:to="country_US" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain-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_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_ForeignPlanMember" 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="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" 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="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" 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_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" 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_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" xlink:label="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_LongtermIncentivePlan2012Member" xlink:label="prlb_LongtermIncentivePlan2012Member" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount" xlink:label="prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PlanNameAxis" xlink:label="us-gaap_PlanNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" 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_StockIssuedDuringPeriodSharesShareBasedCompensation" 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_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" 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_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" 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_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" 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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" 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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" 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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" 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="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" 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="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:type="arc"/>
    <link:definitionArc order="14" 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="15" 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="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:type="arc"/>
    <link:definitionArc order="17" 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="18" 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:definitionArc order="19" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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: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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_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="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/20201231/role/statement-note-13-leases-details-textual" xlink:href="prlb-20201231.xsd#statement-note-13-leases-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseContractualTermAxis" xlink:label="us-gaap_LeaseContractualTermAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseTermOfContract" xlink:label="us-gaap_LesseeOperatingLeaseTermOfContract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermDomain" 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_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/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LeaseContractualTermAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LeaseContractualTermDomain" xlink:to="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermDomain-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_LesseeOperatingLeaseTermOfContract" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_DeferredTaxLiabilityCaresAct" xlink:label="prlb_DeferredTaxLiabilityCaresAct" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct" xlink:label="prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OperatingLossCarryforwardsExpirationPeriod" xlink:label="prlb_OperatingLossCarryforwardsExpirationPeriod" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" xlink:label="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries" xlink:label="us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLossCarryforwards" xlink:label="us-gaap_OperatingLossCarryforwards" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct" 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_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries" 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_UndistributedEarningsOfForeignSubsidiaries" 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_OperatingLossCarryforwards" 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="prlb_OperatingLossCarryforwardsExpirationPeriod" 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_OperatingLossCarryforwardsPercentageOfTaxableIncome" 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_DeferredTaxAssetsValuationAllowance" 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="us-gaap_UnrecognizedTaxBenefits" 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_DeferredTaxLiabilityCaresAct" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual" xlink:href="prlb-20201231.xsd#statement-note-18-subsequent-events-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ScenarioForecastMember" xlink:label="srt_ScenarioForecastMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:label="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventMember" xlink:label="us-gaap_SubsequentEventMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeAxis" xlink:label="us-gaap_SubsequentEventTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeDomain" xlink:label="us-gaap_SubsequentEventTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeDomain" xlink:label="us-gaap_SubsequentEventTypeDomain-default" 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="us-gaap_SubsequentEventTypeAxis" xlink:to="us-gaap_SubsequentEventTypeDomain" 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="us-gaap_SubsequentEventTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SubsequentEventTypeDomain" xlink:to="us-gaap_SubsequentEventMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_SubsequentEventTypeAxis" xlink:to="us-gaap_SubsequentEventTypeDomain-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="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="4" 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_PaymentsToAcquireBusinessesGross" 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:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:href="prlb-20201231.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/20201231/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/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" 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_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" 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_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" 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_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" 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_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" 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_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" 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/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details" xlink:href="prlb-20201231.xsd#statement-note-3-revenue-disaggregation-of-revenue-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_CNCMachiningFirstcutMember" xlink:label="prlb_CNCMachiningFirstcutMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_InjectionMoldingProtomoldMember" xlink:label="prlb_InjectionMoldingProtomoldMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OtherProductsMember" xlink:label="prlb_OtherProductsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_SheetMetalMember" xlink:label="prlb_SheetMetalMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ThreeDPrintingFinelineMember" xlink:label="prlb_ThreeDPrintingFinelineMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ProductOrServiceAxis" xlink:label="srt_ProductOrServiceAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisaggregationOfRevenueAbstract" xlink:label="us-gaap_DisaggregationOfRevenueAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/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/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="country_US" 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/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_SegmentGeographicalDomain" xlink:to="srt_EuropeMember" 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_SegmentGeographicalDomain" xlink:to="country_JP" 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="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_DisaggregationOfRevenueAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisaggregationOfRevenueAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:href="prlb-20201231.xsd#statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAcquiredDuringPeriod" xlink:label="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/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="country_US" 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="srt_EuropeMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_JP" 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_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:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details" xlink:href="prlb-20201231.xsd#statement-note-13-leases-balance-sheet-information-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OperatingLeaseRightOfUseAsset" 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_OperatingLeaseLiabilityCurrent" 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_OperatingLeaseLiabilityNoncurrent" 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_OperatingLeaseLiability" 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_FinanceLeaseRightOfUseAsset" 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_FinanceLeaseLiabilityCurrent" 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_FinanceLeaseLiabilityNoncurrent" 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_FinanceLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details" xlink:href="prlb-20201231.xsd#statement-note-13-leases-lease-expense-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseInterestExpense" xlink:label="us-gaap_FinanceLeaseInterestExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:label="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeasePayments" xlink:label="us-gaap_OperatingLeasePayments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_VariableLeaseCost" xlink:label="us-gaap_VariableLeaseCost" 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_OperatingLeaseCost" 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_FinanceLeaseRightOfUseAssetAmortization" 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_FinanceLeaseInterestExpense" 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_VariableLeaseCost" 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_LeaseCost" 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_OperatingLeasePayments" 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_FinanceLeaseInterestPaymentOnLiability" 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_FinanceLeasePrincipalPayments" 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_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" 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_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:href="prlb-20201231.xsd#statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" 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_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" 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_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" 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_FinanceLeaseLiabilityPaymentsDueYearTwo" 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_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" 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_FinanceLeaseLiabilityPaymentsDueYearThree" 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_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" 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_FinanceLeaseLiabilityPaymentsDueYearFour" 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_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" 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_FinanceLeaseLiabilityPaymentsDueYearFive" 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_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" 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="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" 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="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="arc"/>
    <link:definitionArc order="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:type="arc"/>
    <link:definitionArc order="17" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
    <link:definitionArc order="18" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:href="prlb-20201231.xsd#statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OperatingLeaseWeightedAverageRemainingLeaseTerm1" 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_FinanceLeaseWeightedAverageRemainingLeaseTerm1" 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_OperatingLeaseWeightedAverageDiscountRatePercent" 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_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income" xlink:href="prlb-20201231.xsd#statement-consolidated-statements-of-comprehensive-income" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingExpensesAbstract" xlink:label="us-gaap_OperatingExpensesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenuesAbstract" xlink:label="us-gaap_RevenuesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SellingAndMarketingExpense" xlink:label="us-gaap_SellingAndMarketingExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_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_ComprehensiveIncomeNetOfTaxAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows" xlink:href="prlb-20201231.xsd#statement-consolidated-statements-of-cash-flows" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GainLossOnSaleOfBusiness" xlink:label="us-gaap_GainLossOnSaleOfBusiness" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxesPaid" xlink:label="us-gaap_IncomeTaxesPaid" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:label="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InterestPaidNet" xlink:label="us-gaap_InterestPaidNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:label="us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireOtherInvestments" xlink:label="us-gaap_PaymentsToAcquireOtherInvestments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:label="us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:label="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:label="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RepaymentsOfLongTermDebt" xlink:label="us-gaap_RepaymentsOfLongTermDebt" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SupplementalCashFlowInformationAbstract" xlink:label="us-gaap_SupplementalCashFlowInformationAbstract" 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_GainLossOnSaleOfBusiness" 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_AccretionAmortizationOfDiscountsAndPremiumsInvestments" 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_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_ProceedsFromDivestitureOfBusinesses" 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_PaymentsToAcquireOtherInvestments" 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_PaymentsToAcquireHeldToMaturitySecurities" 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_ProceedsFromSaleAndMaturityOfMarketableSecurities" 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_RepaymentsOfLongTermDebt" 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_FinanceLeasePrincipalPayments" 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_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" 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_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" 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_PaymentsForRepurchaseOfCommonStock" 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_NetCashProvidedByUsedInFinancingActivities" 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_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" 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_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="arc"/>
    <link:definitionArc order="8" 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: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_SupplementalCashFlowInformationAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_InterestPaidNet" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_IncomeTaxesPaid" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentFederalTaxExpenseBenefit" xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentForeignTaxExpenseBenefit" xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentForeignTaxExpenseBenefit" 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_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_DeferredTaxAssetsRightOfUseLeases" xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities" xlink:label="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:label="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsInventory" xlink:label="us-gaap_DeferredTaxAssetsInventory" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsNet" xlink:label="us-gaap_DeferredTaxAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsNetAbstract" xlink:label="us-gaap_DeferredTaxAssetsNetAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsOther" xlink:label="us-gaap_DeferredTaxAssetsOther" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilities" xlink:label="us-gaap_DeferredTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:label="us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:label="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DeferredTaxAssetsNetAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="prlb_DeferredTaxAssetsRightOfUseLeases" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsInventory" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsOther" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsNet" 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_DeferredTaxLiabilitiesNetAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilities" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ExercisePriceRangeFourMember" xlink:label="prlb_ExercisePriceRangeFourMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ExercisePriceRangeOneMember" xlink:label="prlb_ExercisePriceRangeOneMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ExercisePriceRangeThreeMember" xlink:label="prlb_ExercisePriceRangeThreeMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ExercisePriceRangeTwoMember" xlink:label="prlb_ExercisePriceRangeTwoMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" 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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:to="prlb_ExercisePriceRangeOneMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain-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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:to="prlb_ExercisePriceRangeTwoMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:to="prlb_ExercisePriceRangeThreeMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:to="prlb_ExercisePriceRangeFourMember" 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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" 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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" 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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" 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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" 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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" 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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" 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_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:href="prlb-20201231.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/20201231/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/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:label="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsGross" xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:label="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:label="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NoncompeteAgreementsMember" xlink:label="us-gaap_NoncompeteAgreementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_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="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/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:href="prlb-20201231.xsd#statement-note-4-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/20201231/role/statement-note-4-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/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:href="prlb-20201231.xsd#statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BankTimeDepositsMember" xlink:label="us-gaap_BankTimeDepositsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAxis" xlink:label="us-gaap_CashAndCashEquivalentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:label="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CorporateDebtSecuritiesMember" xlink:label="us-gaap_CorporateDebtSecuritiesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinancialInstrumentAxis" xlink:label="us-gaap_FinancialInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesFairValue" xlink:label="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:label="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:label="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:label="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:label="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:label="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_USGovernmentAgenciesDebtSecuritiesMember" 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_USStatesAndPoliticalSubdivisionsMember" 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="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="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_HeldToMaturitySecurities" 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_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" 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_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" 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_HeldToMaturitySecuritiesFairValue" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:href="prlb-20201231.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/20201231/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/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" 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_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" 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_HeldToMaturitySecurities" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:href="prlb-20201231.xsd#statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ComputerHardwareAndSoftwareGross" xlink:label="prlb_ComputerHardwareAndSoftwareGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BuildingsAndImprovementsGross" xlink:label="us-gaap_BuildingsAndImprovementsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConstructionInProgressGross" xlink:label="us-gaap_ConstructionInProgressGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Land" xlink:label="us-gaap_Land" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseholdImprovementsGross" xlink:label="us-gaap_LeaseholdImprovementsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MachineryAndEquipmentGross" xlink:label="us-gaap_MachineryAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_Land" 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_BuildingsAndImprovementsGross" 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_MachineryAndEquipmentGross" 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="prlb_ComputerHardwareAndSoftwareGross" 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_LeaseholdImprovementsGross" 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_ConstructionInProgressGross" 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_PropertyPlantAndEquipmentGross" 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_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" 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_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details" xlink:href="prlb-20201231.xsd#statement-note-9-inventory-inventory-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_StockOptionsRestrictedStockAndOtherMember" xlink:label="prlb_StockOptionsRestrictedStockAndOtherMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CostOfSalesMember" xlink:label="us-gaap_CostOfSalesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GeneralAndAdministrativeExpenseMember" xlink:label="us-gaap_GeneralAndAdministrativeExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementLocationAxis" xlink:label="us-gaap_IncomeStatementLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchAndDevelopmentExpenseMember" xlink:label="us-gaap_ResearchAndDevelopmentExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SellingAndMarketingExpenseMember" xlink:label="us-gaap_SellingAndMarketingExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationDomain" 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="prlb_StockOptionsRestrictedStockAndOtherMember" 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="prlb_ESPPMember" 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_IncomeStatementLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_CostOfSalesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationDomain-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_IncomeStatementLocationDomain" xlink:to="us-gaap_SellingAndMarketingExpenseMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_ResearchAndDevelopmentExpenseMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_GeneralAndAdministrativeExpenseMember" 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_AllocatedShareBasedCompensationExpense" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" 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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" 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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" 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_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" 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_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" 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_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" 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_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" 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_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" 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_EffectiveIncomeTaxRateReconciliationTaxContingencies" 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_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" 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_EffectiveIncomeTaxRateReconciliationOtherAdjustments" 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_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" 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_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" 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="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:label="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" 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_UnrecognizedTaxBenefits" 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_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" 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_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" 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_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-17-segment-reporting-income-from-operations-details" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting-income-from-operations-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:label="prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CorporateUnallocatedAndJapanSegmentMember" 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/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/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="country_US" 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="srt_EuropeMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_JP" 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_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting-depreciation-and-amortization-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/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="country_US" 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="srt_EuropeMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_JP" 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_DepreciationDepletionAndAmortization" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets" xlink:href="prlb-20201231.xsd#statement-consolidated-balance-sheets" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:label="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxesReceivable" xlink:label="us-gaap_IncomeTaxesReceivable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MarketableSecuritiesCurrent" xlink:label="us-gaap_MarketableSecuritiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MarketableSecuritiesNoncurrent" xlink:label="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherIntangibleAssetsNet" xlink:label="us-gaap_OtherIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PrepaidExpenseAndOtherAssetsCurrent" 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_IncomeTaxesReceivable" 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_OperatingLeaseLiabilityCurrent" 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_FinanceLeaseLiabilityCurrent" 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_AccruedIncomeTaxesCurrent" 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_LiabilitiesCurrent" 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_OperatingLeaseLiabilityNoncurrent" 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_FinanceLeaseLiabilityNoncurrent" 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_DeferredIncomeTaxLiabilitiesNet" 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_OtherLiabilitiesNoncurrent" 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_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/20201231/role/statement-consolidated-statements-of-shareholders-equity" xlink:href="prlb-20201231.xsd#statement-consolidated-statements-of-shareholders-equity" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" xlink:label="srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:label="srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:label="srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:label="srt_CumulativeEffectPeriodOfAdoptionDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingStandardsUpdate201409Member" xlink:label="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember-default" 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="srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:to="srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:to="srt_CumulativeEffectPeriodOfAdoptionDomain-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_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TypeOfAdoptionMember" xlink:to="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember-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="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_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" 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="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:to="srt_CumulativeEffectPeriodOfAdoptionDomain" 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_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" 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_StockRepurchasedAndRetiredDuringPeriodShares" 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_StockRepurchasedAndRetiredDuringPeriodValue" 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_NetIncomeLoss" 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_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" 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_ComprehensiveIncomeNetOfTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-stock-option-activity-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:href="prlb-20201231.xsd#statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedTranslationAdjustmentMember" xlink:label="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:label="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccumulatedTranslationAdjustmentMember" 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/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_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" 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_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" 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_OtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:href="prlb-20201231.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/20201231/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/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AssetsFairValueDisclosure" xlink:label="us-gaap_AssetsFairValueDisclosure" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis" xlink:label="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueInputsLevel1Member" xlink:label="us-gaap_FairValueInputsLevel1Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueInputsLevel2Member" xlink:label="us-gaap_FairValueInputsLevel2Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueInputsLevel3Member" xlink:label="us-gaap_FairValueInputsLevel3Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain" xlink:label="us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain" xlink:label="us-gaap_FairValueMeasurementFrequencyDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember" xlink:label="us-gaap_FairValueMeasurementsRecurringMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MoneyMarketFundsAtCarryingValue" xlink:label="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_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="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_MoneyMarketFundsAtCarryingValue" 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_AssetsFairValueDisclosure" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-restricted-stock-options-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-performance-stock-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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>11
<FILENAME>prlb-20201231_lab.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION LABEL LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 03:59AM UTC 2021-02-19--><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-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.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-20201231.xsd#prlb_statement-statement-significant-accounting-policies-policies" xlink:label="prlb_statement-statement-significant-accounting-policies-policies" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-significant-accounting-policies-policies-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Significant Accounting Policies</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-significant-accounting-policies-policies" xlink:to="prlb_statement-statement-significant-accounting-policies-policies-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Option, Exercise Price Range [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-3-revenue-tables" xlink:label="prlb_statement-statement-note-3-revenue-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-3-revenue-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 3 - Revenue</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-3-revenue-tables" xlink:to="prlb_statement-statement-note-3-revenue-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-4-net-income-per-common-share-tables" xlink:label="prlb_statement-statement-note-4-net-income-per-common-share-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-4-net-income-per-common-share-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 4 - 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-4-net-income-per-common-share-tables" xlink:to="prlb_statement-statement-note-4-net-income-per-common-share-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.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="prlb-20201231.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-20201231.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-20201231.xsd#prlb_statement-statement-note-8-property-and-equipment-tables" xlink:label="prlb_statement-statement-note-8-property-and-equipment-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-8-property-and-equipment-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 8 - Property and Equipment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-8-property-and-equipment-tables" xlink:to="prlb_statement-statement-note-8-property-and-equipment-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-9-inventory-tables" xlink:label="prlb_statement-statement-note-9-inventory-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-9-inventory-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Inventory</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-9-inventory-tables" xlink:to="prlb_statement-statement-note-9-inventory-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" xlink:label="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" xlink:type="locator"/>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased</link:label>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Employee Stock Purchase Plan, Weighted Average Purchase Price of Shares Purchased (in shares)</link:label>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The weighted average purchase price of shares purchased through the Employee Stock Purchase Plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" xlink:to="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-tables" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-12-stockbased-compensation-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 12 - Stock-based Compensation</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-12-stockbased-compensation-tables" xlink:to="prlb_statement-statement-note-12-stockbased-compensation-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.xsd#prlb_statement-statement-note-13-leases-tables" xlink:label="prlb_statement-statement-note-13-leases-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-13-leases-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 13 - Leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-13-leases-tables" xlink:to="prlb_statement-statement-note-13-leases-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-tables" xlink:label="prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 14 - Accumulated Other Comprehensive Loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-tables" xlink:to="prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-15-income-taxes-tables" xlink:label="prlb_statement-statement-note-15-income-taxes-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-15-income-taxes-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 15 - Income Taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-15-income-taxes-tables" xlink:to="prlb_statement-statement-note-15-income-taxes-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-17-segment-reporting-tables" xlink:label="prlb_statement-statement-note-17-segment-reporting-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-17-segment-reporting-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 17 - Segment Reporting</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-17-segment-reporting-tables" xlink:to="prlb_statement-statement-note-17-segment-reporting-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.xsd#prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details" xlink:label="prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 3 - Revenue - Disaggregation of Revenue (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details" xlink:to="prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.xsd#prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:label="prlb_statement-statement-note-4-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-4-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 4 - 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-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:to="prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-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 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-carrying-amount-of-goodwill-details" xlink:to="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/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="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.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-20201231.xsd#prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:label="prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-marketable-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 Marketable 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-marketable-securities-details" xlink:to="prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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: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-20201231.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="prlb-20201231.xsd#prlb_statement-statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:label="prlb_statement-statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-8-property-and-equipment-components-of-property-and-equipment-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 8 - Property and Equipment - Components of Property and Equipment (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:to="prlb_statement-statement-note-8-property-and-equipment-components-of-property-and-equipment-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.xsd#prlb_statement-statement-note-9-inventory-inventory-details" xlink:label="prlb_statement-statement-note-9-inventory-inventory-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-9-inventory-inventory-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Inventory - Inventory (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-9-inventory-inventory-details" xlink:to="prlb_statement-statement-note-9-inventory-inventory-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-stockbased-compensation-expense-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-12-stockbased-compensation-stockbased-compensation-expense-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 12 - Stock-based Compensation - Stock-based Compensation Expense (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-12-stockbased-compensation-stockbased-compensation-expense-details" xlink:to="prlb_statement-statement-note-12-stockbased-compensation-stockbased-compensation-expense-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-12-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 12 - 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-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:to="prlb_statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-stock-option-activity-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-stock-option-activity-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-12-stockbased-compensation-stock-option-activity-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 12 - 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-12-stockbased-compensation-stock-option-activity-details" xlink:to="prlb_statement-statement-note-12-stockbased-compensation-stock-option-activity-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 12 - Stock-based Compensation - Information about Stock Options Outstanding (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:to="prlb_statement-statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-restricted-stock-options-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-restricted-stock-options-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-12-stockbased-compensation-restricted-stock-options-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 12 - 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-12-stockbased-compensation-restricted-stock-options-details" xlink:to="prlb_statement-statement-note-12-stockbased-compensation-restricted-stock-options-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-performance-stock-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-performance-stock-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-12-stockbased-compensation-performance-stock-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 12 - 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-12-stockbased-compensation-performance-stock-details" xlink:to="prlb_statement-statement-note-12-stockbased-compensation-performance-stock-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-12-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 12 - 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-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:to="prlb_statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-13-leases-balance-sheet-information-details" xlink:label="prlb_statement-statement-note-13-leases-balance-sheet-information-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-13-leases-balance-sheet-information-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 13 - Leases - Balance Sheet Information (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-13-leases-balance-sheet-information-details" xlink:to="prlb_statement-statement-note-13-leases-balance-sheet-information-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.xsd#prlb_statement-statement-note-13-leases-lease-expense-details" xlink:label="prlb_statement-statement-note-13-leases-lease-expense-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-13-leases-lease-expense-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 13 - Leases - Lease Expense (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-13-leases-lease-expense-details" xlink:to="prlb_statement-statement-note-13-leases-lease-expense-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:label="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities-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_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:to="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_statement-statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:label="prlb_statement-statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-13-leases-maturities-of-operating-lease-liabilities-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 13 - Leases - Maturities of Operating Lease Liabilities (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:to="prlb_statement-statement-note-13-leases-maturities-of-operating-lease-liabilities-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_statement-statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:label="prlb_statement-statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 13 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:to="prlb_statement-statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:label="prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 14 - Accumulated Other Comprehensive 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-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:to="prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/negatedLabel" xlink:type="resource" xml:lang="en-US">Forfeited (in shares)</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="prlb-20201231.xsd#prlb_statement-statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:label="prlb_statement-statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 15 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:to="prlb_statement-statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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 adjustments</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="prlb-20201231.xsd#prlb_statement-statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:label="prlb_statement-statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 15 - Income Taxes - Significant Components of Provision for Income Taxes (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:to="prlb_statement-statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_statement-statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:label="prlb_statement-statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 15 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:to="prlb_statement-statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:label="prlb_statement-statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 15 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:to="prlb_statement-statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_statement-statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:label="prlb_statement-statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 15 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:to="prlb_statement-statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:label="prlb_statement-statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-17-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 17 - 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-17-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:to="prlb_statement-statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">Granted (in shares)</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_statement-statement-note-17-segment-reporting-income-from-operations-details" xlink:label="prlb_statement-statement-note-17-segment-reporting-income-from-operations-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-17-segment-reporting-income-from-operations-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 17 - 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-17-segment-reporting-income-from-operations-details" xlink:to="prlb_statement-statement-note-17-segment-reporting-income-from-operations-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">Restrictions lapsed (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Restrictions lapsed (in shares)</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:label="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Cost by Plan [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:to="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Options outstanding, vested and expected to vest, weighted average remaining contractual life (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details" xlink:label="prlb_statement-statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-17-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 17 - 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-17-segment-reporting-longlived-assets-by-geographic-region-details" xlink:to="prlb_statement-statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_statement-statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:label="prlb_statement-statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 17 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:to="prlb_statement-statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-17-segment-reporting-depreciation-and-amortization-details" xlink:label="prlb_statement-statement-note-17-segment-reporting-depreciation-and-amortization-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-17-segment-reporting-depreciation-and-amortization-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 17 - Segment Reporting - Depreciation and Amortization (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-17-segment-reporting-depreciation-and-amortization-details" xlink:to="prlb_statement-statement-note-17-segment-reporting-depreciation-and-amortization-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.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="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OtherComprehensiveIncomeLossNetOfTax</link:label>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net current-period other comprehensive (loss) income</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1-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, Exercisable, Weighted Average Remaining Contractual Term (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1-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, Exercisable, Intrinsic Value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1-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, Vested in Period, Fair Value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue-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, Exercises in Period, Intrinsic Value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other comprehensive (loss) income before reclassifications</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:label="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Amounts reclassified from accumulated other comprehensive income (loss)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:to="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2-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, Outstanding, Weighted Average Remaining Contractual Term (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue-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, Outstanding, Intrinsic Value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:label="us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquireHeldToMaturitySecurities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquireHeldToMaturitySecurities</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireHeldToMaturitySecurities-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_PaymentsToAcquireHeldToMaturitySecurities" xlink:to="us-gaap_PaymentsToAcquireHeldToMaturitySecurities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">Options outstanding, vested and expected to vest, 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/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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">Cancelled, 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DomesticPlanMember" xlink:label="us-gaap_DomesticPlanMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DomesticPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Domestic Plan [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DomesticPlanMember" xlink:to="us-gaap_DomesticPlanMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ForeignPlanMember" xlink:label="us-gaap_ForeignPlanMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ForeignPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign Plan [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ForeignPlanMember" xlink:to="us-gaap_ForeignPlanMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanSponsorLocationAxis" xlink:label="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetirementPlanSponsorLocationAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retirement Plan Sponsor Location [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetirementPlanSponsorLocationDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retirement Plan Sponsor Location [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">Options outstanding, vested and expected to vest, number outstanding (in shares)</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetirementPlanTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retirement Plan Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetirementPlanTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retirement Plan Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetirementPlanTypeDomain" xlink:to="us-gaap_RetirementPlanTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant-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, Number of Shares Available for Grant (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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:label xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Expenditures for additions to long-lived 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:type="locator"/>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share based compensation</link:label>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Qualified subsidiary election.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SupplementalCashFlowInformationAbstract" xlink:label="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SupplementalCashFlowInformationAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Supplemental cash flow disclosure</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_SupplementalCashFlowInformationAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.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="prlb-20201231.xsd#prlb_The401KRetirementPlanMember" xlink:label="prlb_The401KRetirementPlanMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_The401KRetirementPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">401(k) Retirement Plan [Member]</link:label>
    <link:label xlink:label="prlb_The401KRetirementPlanMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">A company sponsored 401(k) defined contribution plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_The401KRetirementPlanMember" xlink:to="prlb_The401KRetirementPlanMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" xlink:label="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" xlink:type="locator"/>
    <link:label xlink:label="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome</link:label>
    <link:label xlink:label="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Loss Carryforwards, Percentage of Taxable Income</link:label>
    <link:label xlink:label="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the operating loss carryforwards percentage of taxable income limit.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" xlink:to="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OperatingLossCarryforwardsExpirationPeriod" xlink:label="prlb_OperatingLossCarryforwardsExpirationPeriod" xlink:type="locator"/>
    <link:label xlink:label="prlb_OperatingLossCarryforwardsExpirationPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_OperatingLossCarryforwardsExpirationPeriod</link:label>
    <link:label xlink:label="prlb_OperatingLossCarryforwardsExpirationPeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Loss Carryforwards, Expiration Period (Year)</link:label>
    <link:label xlink:label="prlb_OperatingLossCarryforwardsExpirationPeriod-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The expiration period of operating loss carryforwards.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_OperatingLossCarryforwardsExpirationPeriod" xlink:to="prlb_OperatingLossCarryforwardsExpirationPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LegalMattersAndContingenciesTextBlock" xlink:label="us-gaap_LegalMattersAndContingenciesTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LegalMattersAndContingenciesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Legal Matters and Contingencies [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LegalMattersAndContingenciesTextBlock" xlink:to="us-gaap_LegalMattersAndContingenciesTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.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/verboseLabel" 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/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-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_StockOptionsRestrictedStockAndOtherMember" xlink:label="prlb_StockOptionsRestrictedStockAndOtherMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_StockOptionsRestrictedStockAndOtherMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Stock Options, Restricted Stock, and Other [Member]</link:label>
    <link:label xlink:label="prlb_StockOptionsRestrictedStockAndOtherMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Equity awards of stock options, restricted stock, and equity instruments not otherwise classified.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_StockOptionsRestrictedStockAndOtherMember" xlink:to="prlb_StockOptionsRestrictedStockAndOtherMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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: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-20201231.xsd#prlb_DeferredTaxAssetsRightOfUseLeases" xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases" xlink:type="locator"/>
    <link:label xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_DeferredTaxAssetsRightOfUseLeases</link:label>
    <link:label xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Leases</link:label>
    <link:label xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from right of use lease assets.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_DeferredTaxAssetsRightOfUseLeases" xlink:to="prlb_DeferredTaxAssetsRightOfUseLeases-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment</link:label>
    <link:label xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Accumulated depreciation and amortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/totalLabel" 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/periodStartLabel" xlink:type="resource" xml:lang="en-US">Goodwill, balance as of the beginning of the period</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, balance as of the end of the period</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PropertyPlantAndEquipmentGross</link:label>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentGross-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_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_PropertyPlantAndEquipmentGross-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MachineryAndEquipmentGross" xlink:label="us-gaap_MachineryAndEquipmentGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MachineryAndEquipmentGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Machinery and equipment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MachineryAndEquipmentGross" xlink:to="us-gaap_MachineryAndEquipmentGross-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConstructionInProgressGross" xlink:label="us-gaap_ConstructionInProgressGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConstructionInProgressGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Construction in progress</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConstructionInProgressGross" xlink:to="us-gaap_ConstructionInProgressGross-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseholdImprovementsGross" xlink:label="us-gaap_LeaseholdImprovementsGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseholdImprovementsGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Leasehold improvements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseholdImprovementsGross" xlink:to="us-gaap_LeaseholdImprovementsGross-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Land" xlink:label="us-gaap_Land" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Land-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Land</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Land" xlink:to="us-gaap_Land-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Office Space, Manufacturing Facilities, and Certain Company Vehicles and Equipment [Member]</link:label>
    <link:label xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Information pertaining to office space, manufacturing facilities, and certain company vehicles and equipment.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:to="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BuildingsAndImprovementsGross" xlink:label="us-gaap_BuildingsAndImprovementsGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BuildingsAndImprovementsGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Buildings and improvements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BuildingsAndImprovementsGross" xlink:to="us-gaap_BuildingsAndImprovementsGross-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:label="prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_ScheduleOfLeaseExpenseTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Lease Expense [Table Text Block]</link:label>
    <link:label xlink:label="prlb_ScheduleOfLeaseExpenseTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of lease expenses incurred.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:to="prlb_ScheduleOfLeaseExpenseTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:label="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Lease Terms and Discount Rates [Table Text Block]</link:label>
    <link:label xlink:label="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of the weighted average remaining lease terms and discount rates.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:to="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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:label xlink:label="us-gaap_HeldToMaturitySecurities-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_HeldToMaturitySecurities" xlink:to="us-gaap_HeldToMaturitySecurities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.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-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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:label xlink:label="us-gaap_IncomeTaxExpenseBenefit-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_IncomeTaxExpenseBenefit" xlink:to="us-gaap_IncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:label="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount</link:label>
    <link:label xlink:label="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Defined Contribution Plan, Employer Discretionary Contribution Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:to="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:label="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent</link:label>
    <link:label xlink:label="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Defined Contribution Plan, Maximum Annual Contributions Per Employee, Percent</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:to="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount-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_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:to="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount-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_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:to="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">Allocated share-based compensation 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MoneyMarketFundsAtCarryingValue" xlink:label="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MoneyMarketFundsAtCarryingValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Money market mutual funds</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:to="us-gaap_MoneyMarketFundsAtCarryingValue-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock" xlink:label="prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lessee, Operating Leases and Financing Leases [Text Block]</link:label>
    <link:label xlink:label="prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The entire disclosure for operating leases of lessee and finance leases of lessee.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock" xlink:to="prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_AssetsAndLiabilitiesLesseeTableTextBlock" xlink:label="prlb_AssetsAndLiabilitiesLesseeTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_AssetsAndLiabilitiesLesseeTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Assets and Liabilities, Lessee [Table Text Block]</link:label>
    <link:label xlink:label="prlb_AssetsAndLiabilitiesLesseeTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of lessee's assets and liabilities.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_AssetsAndLiabilitiesLesseeTableTextBlock" xlink:to="prlb_AssetsAndLiabilitiesLesseeTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">Other Comprehensive Income (Loss), 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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:label xlink:label="us-gaap_ComprehensiveIncomeNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" 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/2019/dei-2019-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UseOfEstimates" xlink:label="us-gaap_UseOfEstimates" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UseOfEstimates-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Use of Estimates, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UseOfEstimates" xlink:to="us-gaap_UseOfEstimates-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GainLossOnSaleOfBusiness" xlink:label="us-gaap_GainLossOnSaleOfBusiness" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GainLossOnSaleOfBusiness-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_GainLossOnSaleOfBusiness</link:label>
    <link:label xlink:label="us-gaap_GainLossOnSaleOfBusiness-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Gain on sale of businesses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GainLossOnSaleOfBusiness" xlink:to="us-gaap_GainLossOnSaleOfBusiness-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">New Accounting Pronouncements, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:to="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_LesseeLeaseLiabilityMaturityTableTextBlock" xlink:label="prlb_LesseeLeaseLiabilityMaturityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_LesseeLeaseLiabilityMaturityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lessee, Lease Liability, Maturity [Table Text Block]</link:label>
    <link:label xlink:label="prlb_LesseeLeaseLiabilityMaturityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of undiscounted cash flows of operating and finance lease liability.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_LesseeLeaseLiabilityMaturityTableTextBlock" xlink:to="prlb_LesseeLeaseLiabilityMaturityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct" xlink:label="prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct" xlink:type="locator"/>
    <link:label xlink:label="prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct</link:label>
    <link:label xlink:label="prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Increase (Decrease) in Income Taxes Payable, CARES Act</link:label>
    <link:label xlink:label="prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents increase (decrease) in income taxes payable related to CARES Act.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct" xlink:to="prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" xlink:type="locator"/>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Provision to return difference</link:label>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to provision to return difference.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.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/2019/dei-2019-01-31.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="prlb-20201231.xsd#prlb_DeferredTaxLiabilityCaresAct" xlink:label="prlb_DeferredTaxLiabilityCaresAct" xlink:type="locator"/>
    <link:label xlink:label="prlb_DeferredTaxLiabilityCaresAct-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_DeferredTaxLiabilityCaresAct</link:label>
    <link:label xlink:label="prlb_DeferredTaxLiabilityCaresAct-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Deferred Tax Liability, CARES Act</link:label>
    <link:label xlink:label="prlb_DeferredTaxLiabilityCaresAct-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents deferred tax liability related to CARES act.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_DeferredTaxLiabilityCaresAct" xlink:to="prlb_DeferredTaxLiabilityCaresAct-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_VariableLeaseCost" xlink:label="us-gaap_VariableLeaseCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_VariableLeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Variable lease cost</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_VariableLeaseCost" xlink:to="us-gaap_VariableLeaseCost-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LeaseCost</link:label>
    <link:label xlink:label="us-gaap_LeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total lease cost</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_LeaseCost-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:label xlink:label="country_JP-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">JAPAN</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="country_JP" xlink:to="country_JP-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Weighted Average Discount Rate - operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:to="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating lease cost</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseCost" xlink:to="us-gaap_OperatingLeaseCost-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConsolidationPolicyTextBlock" xlink:label="us-gaap_ConsolidationPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConsolidationPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Consolidation, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConsolidationPolicyTextBlock" xlink:to="us-gaap_ConsolidationPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lease assets obtained in exchange for new financing lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lease assets obtained in exchange for new operating lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Weighted Average Remaining Lease Term - operating leases (years) (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:to="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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/2019/dei-2019-01-31.xsd#dei_EntityPublicFloat" xlink:label="dei_EntityPublicFloat" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityPublicFloat-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Public Float</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityPublicFloat" xlink:to="dei_EntityPublicFloat-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityVoluntaryFilers" xlink:label="dei_EntityVoluntaryFilers" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityVoluntaryFilers-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Voluntary Filers</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityVoluntaryFilers" xlink:to="dei_EntityVoluntaryFilers-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityWellKnownSeasonedIssuer" xlink:label="dei_EntityWellKnownSeasonedIssuer" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityWellKnownSeasonedIssuer-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Well-known Seasoned Issuer</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityWellKnownSeasonedIssuer" xlink:to="dei_EntityWellKnownSeasonedIssuer-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CapitalizedComputerSoftwareNet" xlink:label="us-gaap_CapitalizedComputerSoftwareNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CapitalizedComputerSoftwareNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CapitalizedComputerSoftwareNet</link:label>
    <link:label xlink:label="us-gaap_CapitalizedComputerSoftwareNet-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Capitalized Computer Software, Net, Ending Balance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CapitalizedComputerSoftwareNet" xlink:to="us-gaap_CapitalizedComputerSoftwareNet-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillImpairmentLoss" xlink:label="us-gaap_GoodwillImpairmentLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillImpairmentLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_GoodwillImpairmentLoss</link:label>
    <link:label xlink:label="us-gaap_GoodwillImpairmentLoss-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Goodwill, Impairment Loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillImpairmentLoss" xlink:to="us-gaap_GoodwillImpairmentLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:label="us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Debt Securities, Held-to-maturity [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:to="us-gaap_HeldToMaturitySecuritiesTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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/2019/dei-2019-01-31.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-20201231.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/2019/dei-2019-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdvertisingExpense" xlink:label="us-gaap_AdvertisingExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdvertisingExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AdvertisingExpense</link:label>
    <link:label xlink:label="us-gaap_AdvertisingExpense-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Advertising Expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdvertisingExpense" xlink:to="us-gaap_AdvertisingExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/2019/dei-2019-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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.sec.gov/dei/2019/dei-2019-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:type="locator"/>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revaluation of deferred tax liability</link:label>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to the revaluation of deferred tax liability.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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</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-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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 (in shares)</link:label>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Shares Issued, Shares, Share-based Payment Arrangement, after Forfeiture, Total (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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">Cancelled (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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/2020/country-2020-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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:label xlink:label="us-gaap_ResearchAndDevelopmentExpense-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Research and Development Expense, Total</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DebtDisclosureTextBlock" xlink:label="us-gaap_DebtDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Debt Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtDisclosureTextBlock" xlink:to="us-gaap_DebtDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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, net of acquisitions:</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventMember" xlink:label="us-gaap_SubsequentEventMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SubsequentEventMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Subsequent Event [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SubsequentEventMember" xlink:to="us-gaap_SubsequentEventMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Present value of lease liabilities, operating lease</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Lease, Liability, Total</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total operating lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseLiability" xlink:to="us-gaap_OperatingLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeAxis" xlink:label="us-gaap_SubsequentEventTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SubsequentEventTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Subsequent Event Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SubsequentEventTypeAxis" xlink:to="us-gaap_SubsequentEventTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeDomain" xlink:label="us-gaap_SubsequentEventTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SubsequentEventTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Subsequent Event Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SubsequentEventTypeDomain" xlink:to="us-gaap_SubsequentEventTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:label="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retirement Benefits [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:to="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventsTextBlock" xlink:label="us-gaap_SubsequentEventsTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SubsequentEventsTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Subsequent Events [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SubsequentEventsTextBlock" xlink:to="us-gaap_SubsequentEventsTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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:label xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Lease, Right-of-Use Asset</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total future minimum lease payments, operating lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Present value of lease liabilities</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total finance lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiability" xlink:to="us-gaap_FinanceLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">Financing cash flows from finance leases</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Less interest, operating lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Thereafter</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2023, operating lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2024, operating lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2025, operating lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">After 2025, operating lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">2022</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">2023</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">2024</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2021, operating lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-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_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2022, operating lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">2021</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:label="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign Currency Transactions and Translations Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:to="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeLeasesPolicyTextBlock" xlink:label="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeLeasesPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lessee, Leases [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeLeasesPolicyTextBlock" xlink:to="us-gaap_LesseeLeasesPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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:label xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Finite-Lived Intangible Asset, 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="prlb-20201231.xsd#prlb_ExercisePriceRangeOneMember" xlink:label="prlb_ExercisePriceRangeOneMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_ExercisePriceRangeOneMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercise Price Range One [Member]</link:label>
    <link:label xlink:label="prlb_ExercisePriceRangeOneMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Exercise price range one [member</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ExercisePriceRangeOneMember" xlink:to="prlb_ExercisePriceRangeOneMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ExercisePriceRangeTwoMember" xlink:label="prlb_ExercisePriceRangeTwoMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_ExercisePriceRangeTwoMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercise Price Range Two [Member]</link:label>
    <link:label xlink:label="prlb_ExercisePriceRangeTwoMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Exercise price range two [member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ExercisePriceRangeTwoMember" xlink:to="prlb_ExercisePriceRangeTwoMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ExercisePriceRangeThreeMember" xlink:label="prlb_ExercisePriceRangeThreeMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_ExercisePriceRangeThreeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercise Price Range Three [Member]</link:label>
    <link:label xlink:label="prlb_ExercisePriceRangeThreeMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Exercise price range three [member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ExercisePriceRangeThreeMember" xlink:to="prlb_ExercisePriceRangeThreeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_ExercisePriceRangeFourMember" xlink:label="prlb_ExercisePriceRangeFourMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_ExercisePriceRangeFourMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercise Price Range Four [Member]</link:label>
    <link:label xlink:label="prlb_ExercisePriceRangeFourMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Exercise price range four [member</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ExercisePriceRangeFourMember" xlink:to="prlb_ExercisePriceRangeFourMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:label="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Comprehensive Income, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:to="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxPolicyTextBlock" xlink:label="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Tax, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxPolicyTextBlock" xlink:to="us-gaap_IncomeTaxPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/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_AssetsFairValueDisclosure" xlink:to="us-gaap_AssetsFairValueDisclosure-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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 held-to-maturity 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InternalUseSoftwarePolicy" xlink:label="us-gaap_InternalUseSoftwarePolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InternalUseSoftwarePolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Internal Use Software, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InternalUseSoftwarePolicy" xlink:to="us-gaap_InternalUseSoftwarePolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseTermOfContract" xlink:label="us-gaap_LesseeOperatingLeaseTermOfContract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseTermOfContract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseTermOfContract</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseTermOfContract-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Lessee, Operating Lease, Term of Contract (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseTermOfContract" xlink:to="us-gaap_LesseeOperatingLeaseTermOfContract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:label="us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ResearchAndDevelopmentExpensePolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Research and Development Expense, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:to="us-gaap_ResearchAndDevelopmentExpensePolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Depreciation" xlink:label="us-gaap_Depreciation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Depreciation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_Depreciation</link:label>
    <link:label xlink:label="us-gaap_Depreciation-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Depreciation, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Depreciation" xlink:to="us-gaap_Depreciation-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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:label xlink:label="us-gaap_DepreciationDepletionAndAmortization-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.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-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:label="us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CompensationRelatedCostsPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Compensation Related Costs, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:to="us-gaap_CompensationRelatedCostsPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdvertisingCostsPolicyTextBlock" xlink:label="us-gaap_AdvertisingCostsPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdvertisingCostsPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Advertising Cost [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdvertisingCostsPolicyTextBlock" xlink:to="us-gaap_AdvertisingCostsPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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 26,776,796 and 26,786,459 shares as of December 31, 2020 and December 31, 2019, 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxAssetsValuationAllowance</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Deferred Tax Assets, Valuation Allowance, Total</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Less valuation allowance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsValuationAllowance" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeasePayments" xlink:label="us-gaap_OperatingLeasePayments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeasePayments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating cash flows from operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeasePayments" xlink:to="us-gaap_OperatingLeasePayments-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsNet" xlink:label="us-gaap_DeferredTaxAssetsNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxAssetsNet</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total deferred tax assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsNet" xlink:to="us-gaap_DeferredTaxAssetsNet-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:label="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseInterestPaymentOnLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating cash flows from finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:to="us-gaap_FinanceLeaseInterestPaymentOnLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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 December 31, 2020 and December 31, 2019, respectively</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill and Intangible Assets, Intangible Assets, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:to="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InterestPaidNet" xlink:label="us-gaap_InterestPaidNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InterestPaidNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash paid for interest</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InterestPaidNet" xlink:to="us-gaap_InterestPaidNet-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxesPaid" xlink:label="us-gaap_IncomeTaxesPaid" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxesPaid-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash paid for taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxesPaid" xlink:to="us-gaap_IncomeTaxesPaid-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:label="prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_CorporateUnallocatedAndJapanSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Corporate Unallocated and Japan Segment[Member]</link:label>
    <link:label xlink:label="prlb_CorporateUnallocatedAndJapanSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Segment for corporate unallocated expenses and Japan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:to="prlb_CorporateUnallocatedAndJapanSegmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:label="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Impairment or Disposal of Long-Lived Assets, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:to="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsOther" xlink:label="us-gaap_DeferredTaxAssetsOther" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsOther-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsOther" xlink:to="us-gaap_DeferredTaxAssetsOther-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:to="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:to="us-gaap_PropertyPlantAndEquipmentTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:to="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities" xlink:label="us-gaap_DeferredIncomeTaxLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredIncomeTaxLiabilities</link:label>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxLiabilities-label" xlink:role="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:type="resource" xml:lang="en-US">Total deferred tax liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxLiabilities" xlink:to="us-gaap_DeferredIncomeTaxLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsInventory" xlink:label="us-gaap_DeferredTaxAssetsInventory" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsInventory-label" xlink:role="http://www.xbrl.org/2003/role/label" 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_DeferredTaxAssetsInventory" xlink:to="us-gaap_DeferredTaxAssetsInventory-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:label="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" 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_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:to="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued expenses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:label="srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_CumulativeEffectPeriodOfAdoptionDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cumulative Effect, Period of Adoption [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:to="srt_CumulativeEffectPeriodOfAdoptionDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:label="srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_CumulativeEffectPeriodOfAdoptionAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cumulative Effect, Period of Adoption [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:to="srt_CumulativeEffectPeriodOfAdoptionAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PropertyPlantAndEquipmentUsefulLife</link:label>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment, Useful Life (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:to="us-gaap_PropertyPlantAndEquipmentUsefulLife-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" xlink:label="srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" xlink:type="locator"/>
    <link:label xlink:label="srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cumulative Effect, Period of Adoption, Adjustment [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" xlink:to="srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueRecognitionPolicyTextBlock" xlink:label="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueRecognitionPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:to="us-gaap_RevenueRecognitionPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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,781 and $952 as of December 31, 2020 and December 31, 2019, 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Stock-based compensation</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LandBuildingsAndImprovementsMember" xlink:label="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LandBuildingsAndImprovementsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Land, Buildings and Improvements [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LandBuildingsAndImprovementsMember" xlink:to="us-gaap_LandBuildingsAndImprovementsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BuildingMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Building [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BuildingMember" xlink:to="us-gaap_BuildingMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property, Plant and Equipment, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:to="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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, 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-Lived Tangible Asset [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-Lived Tangible Asset [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net operating loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:to="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryPolicyTextBlock" xlink:label="us-gaap_InventoryPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Inventory, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryPolicyTextBlock" xlink:to="us-gaap_InventoryPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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 increase 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsNetAbstract" xlink:label="us-gaap_DeferredTaxAssetsNetAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxAssetsNetAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred tax assets:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsNetAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">us-gaap_OperatingIncomeLoss</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:label xlink:label="us-gaap_OperatingIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilities" xlink:label="us-gaap_DeferredTaxLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilities</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilities-label" xlink:role="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:type="resource" xml:lang="en-US">Net deferred tax liability</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilities" xlink:to="us-gaap_DeferredTaxLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" 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_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingStandardsUpdate201409Member" xlink:label="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountingStandardsUpdate201409Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounting Standards Update 2014-09 [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountingStandardsUpdate201409Member" xlink:to="us-gaap_AccountingStandardsUpdate201409Member-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:label="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Depreciation and Amortization by Geographic Region [Table Text Block]</link:label>
    <link:label xlink:label="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of depreciation and amortization by geographic region.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:to="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:label="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Expenditures for Additions to Long-lived Assets by Geographic Region [Table Text Block]</link:label>
    <link:label xlink:label="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of expenditures for additions to long-lived assets by geographic region.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:to="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:label="us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesLeasingArrangements-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilitiesLeasingArrangements</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesLeasingArrangements-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:to="us-gaap_DeferredTaxLiabilitiesLeasingArrangements-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountingStandardsUpdate201602Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounting Standards Update 2016-02 [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountingStandardsUpdate201602Member" xlink:to="us-gaap_AccountingStandardsUpdate201602Member-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MarketableSecuritiesPolicy" xlink:label="us-gaap_MarketableSecuritiesPolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MarketableSecuritiesPolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Marketable Securities, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MarketableSecuritiesPolicy" xlink:to="us-gaap_MarketableSecuritiesPolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TypeOfAdoptionMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounting Standards Update [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TypeOfAdoptionMember" xlink:to="us-gaap_TypeOfAdoptionMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Depreciation</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:to="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounting Standards Update [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries" xlink:label="us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries</link:label>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Deferred Tax Liability Not Recognized, Amount of Unrecognized Deferred Tax Liability, Undistributed Earnings of Foreign Subsidiaries</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries" xlink:to="us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:label="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredTaxLiabilitiesNetAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred tax liabilities:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesNetAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_UndistributedEarningsOfForeignSubsidiaries</link:label>
    <link:label xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Undistributed Earnings of Foreign Subsidiaries</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:to="us-gaap_UndistributedEarningsOfForeignSubsidiaries-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:type="locator"/>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Transition tax</link:label>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to a one time transition tax.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:to="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">State</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:to="us-gaap_CurrentStateAndLocalTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">State</link:label>
    <link:label xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentForeignTaxExpenseBenefit" xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:to="us-gaap_CurrentForeignTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Foreign</link:label>
    <link:label xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredForeignIncomeTaxExpenseBenefit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentFederalTaxExpenseBenefit" xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Federal</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:to="us-gaap_CurrentFederalTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Federal</link:label>
    <link:label xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredFederalIncomeTaxExpenseBenefit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OfficeFurnitureAndEquipmentMember" xlink:label="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_OfficeFurnitureAndEquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Office Furniture And Equipment [Member]</link:label>
    <link:label xlink:label="prlb_OfficeFurnitureAndEquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Office furniture and equipment [member</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_OfficeFurnitureAndEquipmentMember" xlink:to="prlb_OfficeFurnitureAndEquipmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign</link:label>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Foreign</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic</link:label>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Domestic</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount" xlink:label="prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount" xlink:type="locator"/>
    <link:label xlink:label="prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount</link:label>
    <link:label xlink:label="prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount-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, Change in Amount</link:label>
    <link:label xlink:label="prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of change in cost not yet recognized for nonvested award under share-based payment arrangement.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount" xlink:to="prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LineOfCredit" xlink:label="us-gaap_LineOfCredit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCredit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LineOfCredit</link:label>
    <link:label xlink:label="us-gaap_LineOfCredit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Long-term Line of Credit, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCredit" xlink:to="us-gaap_LineOfCredit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisaggregationOfRevenueAbstract" xlink:label="us-gaap_DisaggregationOfRevenueAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisaggregationOfRevenueAbstract-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_DisaggregationOfRevenueAbstract" xlink:to="us-gaap_DisaggregationOfRevenueAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RepaymentsOfLongTermDebt" xlink:label="us-gaap_RepaymentsOfLongTermDebt" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RepaymentsOfLongTermDebt-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_RepaymentsOfLongTermDebt</link:label>
    <link:label xlink:label="us-gaap_RepaymentsOfLongTermDebt-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Payments on debt</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RepaymentsOfLongTermDebt" xlink:to="us-gaap_RepaymentsOfLongTermDebt-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquipmentMember" xlink:label="us-gaap_EquipmentMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Equipment [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EquipmentMember" xlink:to="us-gaap_EquipmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue from Contract with Customer [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:to="us-gaap_RevenueFromContractWithCustomerTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentAnnualReport" xlink:label="dei_DocumentAnnualReport" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentAnnualReport-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Annual Report</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentAnnualReport" xlink:to="dei_DocumentAnnualReport-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:label="us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TradeAndOtherAccountsReceivablePolicy-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounts Receivable [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:to="us-gaap_TradeAndOtherAccountsReceivablePolicy-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComputerEquipmentMember" xlink:label="us-gaap_ComputerEquipmentMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComputerEquipmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Computer Equipment [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComputerEquipmentMember" xlink:to="us-gaap_ComputerEquipmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:label="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash and Cash Equivalents, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:to="us-gaap_CashAndCashEquivalentsPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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:label xlink:label="us-gaap_UnrecognizedTaxBenefits-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_UnrecognizedTaxBenefits-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_UnrecognizedTaxBenefits" xlink:to="us-gaap_UnrecognizedTaxBenefits-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GeneralAndAdministrativeExpenseMember" xlink:label="us-gaap_GeneralAndAdministrativeExpenseMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GeneralAndAdministrativeExpenseMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">General and Administrative Expense [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GeneralAndAdministrativeExpenseMember" xlink:to="us-gaap_GeneralAndAdministrativeExpenseMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/2019/dei-2019-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:label="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations</link:label>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Decrease related to expiration of statutes of limitations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:to="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SellingAndMarketingExpenseMember" xlink:label="us-gaap_SellingAndMarketingExpenseMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SellingAndMarketingExpenseMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Selling and Marketing Expense [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SellingAndMarketingExpenseMember" xlink:to="us-gaap_SellingAndMarketingExpenseMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Additions for tax positions of prior years</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Additions for tax positions of current year</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:to="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.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="prlb-20201231.xsd#prlb_ComputerHardwareAndSoftwareGross" xlink:label="prlb_ComputerHardwareAndSoftwareGross" xlink:type="locator"/>
    <link:label xlink:label="prlb_ComputerHardwareAndSoftwareGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Computer hardware and software</link:label>
    <link:label xlink:label="prlb_ComputerHardwareAndSoftwareGross-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The gross amount of computer hardware and software as of the balance sheet date.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ComputerHardwareAndSoftwareGross" xlink:to="prlb_ComputerHardwareAndSoftwareGross-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CostOfSalesMember" xlink:label="us-gaap_CostOfSalesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CostOfSalesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cost of Sales [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CostOfSalesMember" xlink:to="us-gaap_CostOfSalesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchAndDevelopmentExpenseMember" xlink:label="us-gaap_ResearchAndDevelopmentExpenseMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ResearchAndDevelopmentExpenseMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Research and Development Expense [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ResearchAndDevelopmentExpenseMember" xlink:to="us-gaap_ResearchAndDevelopmentExpenseMember-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementLocationAxis" xlink:label="us-gaap_IncomeStatementLocationAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeStatementLocationAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Statement Location [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeStatementLocationDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Statement Location [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeStatementLocationDomain" xlink:to="us-gaap_IncomeStatementLocationDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.xsd#prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" xlink:label="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" xlink:type="locator"/>
    <link:label xlink:label="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan</link:label>
    <link:label xlink:label="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Minimum Number Of Employee Working Hours Required To Be Eligible To Participate In 401K Plan</link:label>
    <link:label xlink:label="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Minimum Number of Employee Working Hours Required to be Eligible to Participate in 401(k) Plan</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" xlink:to="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLossCarryforwards" xlink:label="us-gaap_OperatingLossCarryforwards" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLossCarryforwards-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingLossCarryforwards</link:label>
    <link:label xlink:label="us-gaap_OperatingLossCarryforwards-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Loss Carryforwards, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLossCarryforwards" xlink:to="us-gaap_OperatingLossCarryforwards-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" xlink:label="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" xlink:type="locator"/>
    <link:label xlink:label="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan</link:label>
    <link:label xlink:label="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Minimum Service Period Of Employees To Avail Benefit Under Defined Contribution Benefit Plan (Month)</link:label>
    <link:label xlink:label="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Minimum Service Period Of Employees To Avail Benefit Under Defined Contribution Benefit Plan</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" xlink:to="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Miscellaneous</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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:label xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-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_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Valuation allowance against deferred tax assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseContractualTermDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lease Contractual Term [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseContractualTermDomain" xlink:to="us-gaap_LeaseContractualTermDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseContractualTermAxis" xlink:label="us-gaap_LeaseContractualTermAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseContractualTermAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lease Contractual Term [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Tax reserves</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseInterestExpense" xlink:label="us-gaap_FinanceLeaseInterestExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseInterestExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Interest on lease obligations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseInterestExpense" xlink:to="us-gaap_FinanceLeaseInterestExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:label="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Income before Income Tax, Domestic and Foreign [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:to="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseLiabilityPaymentsDue</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total future minimum lease payments, finance lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDue-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:label="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Unrecognized Tax Benefits Roll Forward [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:to="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Amortization of right-of-use assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:to="us-gaap_FinanceLeaseRightOfUseAssetAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2025, finance lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:label="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:to="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">After 2025, finance lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:label="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Deferred Tax Assets and Liabilities [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:to="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:label="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:to="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Less interest, finance lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:to="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2021, finance lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2022, finance lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2023, finance lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">2024, finance lease</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Weighted Average Discount Rate - finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:to="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">State tax (net of federal benefit)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign rate differential</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Weighted Average Remaining Lease Term - finance leases (years) (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:to="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch</link:label>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Research and development credit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">Federal tax statutory rate</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Valuation Allowance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:to="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:label="us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromDivestitureOfBusinesses-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Proceeds from sale of businesses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:to="us-gaap_ProceedsFromDivestitureOfBusinesses-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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">Options exercisable, number exercisable (in shares)</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1-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_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:to="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Range of exercise prices, upper limit (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercise Price Range [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercise Price Range [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Range of exercise prices, lower limit (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit-label" xlink:type="arc"/>
  </link:labelLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.PRE
<SEQUENCE>12
<FILENAME>prlb-20201231_pre.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION PRESENTATION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 03:59AM UTC 2021-02-19--><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/20201231/role/statement-note-17-segment-reporting" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-16-litigation" xlink:href="prlb-20201231.xsd#statement-note-16-litigation" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-16-litigation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LegalMattersAndContingenciesTextBlock" xlink:label="us-gaap_LegalMattersAndContingenciesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LegalMattersAndContingenciesTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss" xlink:href="prlb-20201231.xsd#statement-note-14-accumulated-other-comprehensive-loss" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:label="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-9-inventory" xlink:href="prlb-20201231.xsd#statement-note-9-inventory" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-9-inventory" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-7-marketable-securities" xlink:href="prlb-20201231.xsd#statement-note-7-marketable-securities" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InvestmentTextBlock" xlink:label="us-gaap_InvestmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-6-fair-value-measurements" xlink:href="prlb-20201231.xsd#statement-note-6-fair-value-measurements" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueDisclosuresTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share" xlink:href="prlb-20201231.xsd#statement-note-4-net-income-per-common-share" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareTextBlock" xlink:label="us-gaap_EarningsPerShareTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-3-revenue" xlink:href="prlb-20201231.xsd#statement-note-3-revenue" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-3-revenue" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RevenueFromContractWithCustomerTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-1-nature-of-business" xlink:href="prlb-20201231.xsd#statement-note-1-nature-of-business" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-1-nature-of-business" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-document-and-entity-information" xlink:href="prlb-20201231.xsd#statement-document-and-entity-information" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-document-and-entity-information" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentAnnualReport" xlink:label="dei_DocumentAnnualReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityPublicFloat" xlink:label="dei_EntityPublicFloat" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityVoluntaryFilers" xlink:label="dei_EntityVoluntaryFilers" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityWellKnownSeasonedIssuer" xlink:label="dei_EntityWellKnownSeasonedIssuer" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.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_DocumentAnnualReport" 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_EntityWellKnownSeasonedIssuer" 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_EntityVoluntaryFilers" 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_EntityCurrentReportingStatus" 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_EntityInteractiveDataCurrent" 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_EntityFilerCategory" 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_EntitySmallBusiness" 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_EntityEmergingGrowthCompany" xlink:type="arc"/>
    <link:presentationArc order="29" 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="30" 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_EntityPublicFloat" xlink:type="arc"/>
    <link:presentationArc order="31" 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/20201231/role/statement-consolidated-balance-sheets-parentheticals" xlink:href="prlb-20201231.xsd#statement-consolidated-balance-sheets-parentheticals" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockParOrStatedValuePerShare" xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockSharesAuthorized" xlink:label="us-gaap_PreferredStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockSharesIssued" xlink:label="us-gaap_PreferredStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-2-summary-of-significant-accounting-policies-" xlink:href="prlb-20201231.xsd#statement-note-2-summary-of-significant-accounting-policies-" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OfficeFurnitureAndEquipmentMember" xlink:label="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComputerEquipmentMember" xlink:label="us-gaap_ComputerEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquipmentMember" xlink:label="us-gaap_EquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LandBuildingsAndImprovementsMember" xlink:label="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SignificantAccountingPoliciesTextBlock" xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" 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_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" 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_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" 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_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="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_PropertyPlantAndEquipmentByTypeAxis" 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_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_EquipmentMember" 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_PropertyPlantAndEquipmentByTypeAxis" xlink:to="prlb_OfficeFurnitureAndEquipmentMember" 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_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_ComputerEquipmentMember" 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_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_BuildingMember" 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_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_LandBuildingsAndImprovementsMember" 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_AdjustmentsForNewAccountingPronouncementsAxis" 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_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_AccountingStandardsUpdate201602Member" 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_SignificantAccountingPoliciesTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets" xlink:href="prlb-20201231.xsd#statement-note-5-goodwill-and-other-intangible-assets" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment" xlink:href="prlb-20201231.xsd#statement-note-8-property-and-equipment" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations" xlink:href="prlb-20201231.xsd#statement-note-10-financing-obligations" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DebtDisclosureTextBlock" xlink:label="us-gaap_DebtDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DebtDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans" xlink:href="prlb-20201231.xsd#statement-note-11-employee-benefit-plans" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_The401KRetirementPlanMember" xlink:label="prlb_The401KRetirementPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DomesticPlanMember" xlink:label="us-gaap_DomesticPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ForeignPlanMember" xlink:label="us-gaap_ForeignPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:label="us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanSponsorLocationAxis" xlink:label="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain" 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_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" 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_RetirementPlanTypeAxis" 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_RetirementPlanTypeAxis" xlink:to="prlb_The401KRetirementPlanMember" 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_RetirementPlanSponsorLocationAxis" 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_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_DomesticPlanMember" 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_DomesticPlanMember" xlink:to="country_US" 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_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_ForeignPlanMember" 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_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_LongtermIncentivePlan2012Member" xlink:label="prlb_LongtermIncentivePlan2012Member" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PlanNameAxis" xlink:label="us-gaap_PlanNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-13-leases" xlink:href="prlb-20201231.xsd#statement-note-13-leases" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock" xlink:label="prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseContractualTermAxis" xlink:label="us-gaap_LeaseContractualTermAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermDomain" 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_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="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_LeaseContractualTermAxis" 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_LeaseContractualTermAxis" xlink:to="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" 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_DisclosureTextBlockAbstract" xlink:to="prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-18-subsequent-events" xlink:href="prlb-20201231.xsd#statement-note-18-subsequent-events" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ScenarioForecastMember" xlink:label="srt_ScenarioForecastMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventMember" xlink:label="us-gaap_SubsequentEventMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeAxis" xlink:label="us-gaap_SubsequentEventTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeDomain" xlink:label="us-gaap_SubsequentEventTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventsTextBlock" xlink:label="us-gaap_SubsequentEventsTextBlock" 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="us-gaap_SubsequentEventTypeAxis" xlink:to="us-gaap_SubsequentEventTypeDomain" 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="us-gaap_SubsequentEventTypeAxis" 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_SubsequentEventTypeAxis" xlink:to="us-gaap_SubsequentEventMember" 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="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="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="dei_LegalEntityAxis" 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_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_SubsequentEventsTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies" xlink:href="prlb-20201231.xsd#statement-significant-accounting-policies-policies" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-significant-accounting-policies-policies" xlink:label="prlb_statement-statement-significant-accounting-policies-policies" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingPoliciesAbstract" xlink:label="us-gaap_AccountingPoliciesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdvertisingCostsPolicyTextBlock" xlink:label="us-gaap_AdvertisingCostsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:label="us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:label="us-gaap_CompensationRelatedCostsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:label="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConsolidationPolicyTextBlock" xlink:label="us-gaap_ConsolidationPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:label="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:label="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:label="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxPolicyTextBlock" xlink:label="us-gaap_IncomeTaxPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InternalUseSoftwarePolicy" xlink:label="us-gaap_InternalUseSoftwarePolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryPolicyTextBlock" xlink:label="us-gaap_InventoryPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeLeasesPolicyTextBlock" xlink:label="us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MarketableSecuritiesPolicy" xlink:label="us-gaap_MarketableSecuritiesPolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:label="us-gaap_ResearchAndDevelopmentExpensePolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueRecognitionPolicyTextBlock" xlink:label="us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:label="us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UseOfEstimates" xlink:label="us-gaap_UseOfEstimates" 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-significant-accounting-policies-policies" 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_PolicyTextBlockAbstract-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_PolicyTextBlockAbstract" xlink:to="us-gaap_AccountingPoliciesAbstract" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_ConsolidationPolicyTextBlock" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_UseOfEstimates" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_CashAndCashEquivalentsPolicyTextBlock" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_MarketableSecuritiesPolicy" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_TradeAndOtherAccountsReceivablePolicy" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_InventoryPolicyTextBlock" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_InternalUseSoftwarePolicy" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_RevenueRecognitionPolicyTextBlock" 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_AccountingPoliciesAbstract" xlink:to="us-gaap_LesseeLeasesPolicyTextBlock" 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="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_IncomeTaxPolicyTextBlock" 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="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_CompensationRelatedCostsPolicyTextBlock" 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="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_AdvertisingCostsPolicyTextBlock" 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="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ResearchAndDevelopmentExpensePolicy" 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="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" 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="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-3-revenue-tables" xlink:href="prlb-20201231.xsd#statement-note-3-revenue-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-3-revenue-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-3-revenue-tables" xlink:label="prlb_statement-statement-note-3-revenue-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-revenue-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_DisaggregationOfRevenueTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-tables" xlink:href="prlb-20201231.xsd#statement-note-4-net-income-per-common-share-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-4-net-income-per-common-share-tables" xlink:label="prlb_statement-statement-note-4-net-income-per-common-share-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-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/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:href="prlb-20201231.xsd#statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfGoodwillTextBlock" xlink:label="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-6-fair-value-measurements-tables" xlink:href="prlb-20201231.xsd#statement-note-6-fair-value-measurements-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/20201231/role/statement-note-7-marketable-securities-tables" xlink:href="prlb-20201231.xsd#statement-note-7-marketable-securities-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:label="us-gaap_HeldToMaturitySecuritiesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:label="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_HeldToMaturitySecuritiesTextBlock" 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/20201231/role/statement-note-8-property-and-equipment-tables" xlink:href="prlb-20201231.xsd#statement-note-8-property-and-equipment-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-8-property-and-equipment-tables" xlink:label="prlb_statement-statement-note-8-property-and-equipment-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:label="us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-property-and-equipment-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_PropertyPlantAndEquipmentTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-9-inventory-tables" xlink:href="prlb-20201231.xsd#statement-note-9-inventory-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-9-inventory-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-9-inventory-tables" xlink:label="prlb_statement-statement-note-9-inventory-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-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/20201231/role/statement-note-12-stockbased-compensation-tables" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:label="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-tables" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:label="us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-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_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock" 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_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" 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_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock" 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="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" 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_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" 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_TableTextBlock" xlink:to="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-tables" xlink:href="prlb-20201231.xsd#statement-note-13-leases-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_AssetsAndLiabilitiesLesseeTableTextBlock" xlink:label="prlb_AssetsAndLiabilitiesLesseeTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_LesseeLeaseLiabilityMaturityTableTextBlock" xlink:label="prlb_LesseeLeaseLiabilityMaturityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:label="prlb_ScheduleOfLeaseExpenseTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:label="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-13-leases-tables" xlink:label="prlb_statement-statement-note-13-leases-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-13-leases-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="prlb_AssetsAndLiabilitiesLesseeTableTextBlock" 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_ScheduleOfLeaseExpenseTableTextBlock" 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="prlb_LesseeLeaseLiabilityMaturityTableTextBlock" 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="prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-tables" xlink:href="prlb-20201231.xsd#statement-note-14-accumulated-other-comprehensive-loss-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-tables" xlink:label="prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:label="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-14-accumulated-other-comprehensive-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/20201231/role/statement-note-15-income-taxes-tables" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-15-income-taxes-tables" xlink:label="prlb_statement-statement-note-15-income-taxes-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:label="us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:label="us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:label="us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:label="us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:label="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-15-income-taxes-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_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock" 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_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" 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_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" 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_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" 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="us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:label="prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:label="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:label="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-17-segment-reporting-tables" xlink:label="prlb_statement-statement-note-17-segment-reporting-tables" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:label="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-17-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="prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock" 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_DepreciationAndAmortizationByGeographicRegionTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:href="prlb-20201231.xsd#statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OfficeFurnitureAndEquipmentMember" xlink:label="prlb_OfficeFurnitureAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingStandardsUpdate201602Member" xlink:label="us-gaap_AccountingStandardsUpdate201602Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdvertisingExpense" xlink:label="us-gaap_AdvertisingExpense-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BuildingMember" xlink:label="us-gaap_BuildingMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CapitalizedComputerSoftwareNet" xlink:label="us-gaap_CapitalizedComputerSoftwareNet-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComputerEquipmentMember" xlink:label="us-gaap_ComputerEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquipmentMember" xlink:label="us-gaap_EquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillImpairmentLoss" xlink:label="us-gaap_GoodwillImpairmentLoss-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LandBuildingsAndImprovementsMember" xlink:label="us-gaap_LandBuildingsAndImprovementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:label="us-gaap_PropertyPlantAndEquipmentUsefulLife-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" 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_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" 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_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" 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_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="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_PropertyPlantAndEquipmentByTypeAxis" 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_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_EquipmentMember" 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_PropertyPlantAndEquipmentByTypeAxis" xlink:to="prlb_OfficeFurnitureAndEquipmentMember" 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_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_ComputerEquipmentMember" 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_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_BuildingMember" 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_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_LandBuildingsAndImprovementsMember" 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_AdjustmentsForNewAccountingPronouncementsAxis" 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_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_AccountingStandardsUpdate201602Member" 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_PropertyPlantAndEquipmentUsefulLife-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_CapitalizedComputerSoftwareNet-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_GoodwillImpairmentLoss-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_FiniteLivedIntangibleAssetUsefulLife-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_AdvertisingExpense-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_ResearchAndDevelopmentExpense-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_OperatingLeaseRightOfUseAsset-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_OperatingLeaseLiability-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual" xlink:href="prlb-20201231.xsd#statement-note-5-goodwill-and-other-intangible-assets-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AmortizationOfIntangibleAssets" xlink:label="us-gaap_AmortizationOfIntangibleAssets-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="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_AmortizationOfIntangibleAssets-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-details-textual" xlink:href="prlb-20201231.xsd#statement-note-8-property-and-equipment-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Depreciation" xlink:label="us-gaap_Depreciation-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="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_Depreciation-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations-details-textual" xlink:href="prlb-20201231.xsd#statement-note-10-financing-obligations-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LineOfCredit" xlink:label="us-gaap_LineOfCredit-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="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_LineOfCredit-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual" xlink:href="prlb-20201231.xsd#statement-note-11-employee-benefit-plans-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan" xlink:label="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan" xlink:label="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_The401KRetirementPlanMember" xlink:label="prlb_The401KRetirementPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount" xlink:label="us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:label="us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DomesticPlanMember" xlink:label="us-gaap_DomesticPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ForeignPlanMember" xlink:label="us-gaap_ForeignPlanMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanSponsorLocationAxis" xlink:label="us-gaap_RetirementPlanSponsorLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanSponsorLocationDomain" xlink:label="us-gaap_RetirementPlanSponsorLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanTypeAxis" xlink:label="us-gaap_RetirementPlanTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetirementPlanTypeDomain" xlink:label="us-gaap_RetirementPlanTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="us-gaap_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_RetirementPlanSponsorLocationDomain" 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_RetirementPlanTypeAxis" xlink:to="us-gaap_RetirementPlanTypeDomain" 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_RetirementPlanTypeAxis" 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_RetirementPlanTypeAxis" xlink:to="prlb_The401KRetirementPlanMember" 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_RetirementPlanSponsorLocationAxis" 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_RetirementPlanSponsorLocationDomain" xlink:to="us-gaap_DomesticPlanMember" 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_DomesticPlanMember" xlink:to="country_US" 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_RetirementPlanSponsorLocationAxis" xlink:to="us-gaap_ForeignPlanMember" 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="prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan-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="prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan-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_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent-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_DefinedContributionPlanEmployerDiscretionaryContributionAmount-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased" xlink:label="prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_LongtermIncentivePlan2012Member" xlink:label="prlb_LongtermIncentivePlan2012Member" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount" xlink:label="prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PlanNameAxis" xlink:label="us-gaap_PlanNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation-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="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_StockIssuedDuringPeriodSharesShareBasedCompensation-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_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue-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="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2-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="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue-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="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1-2" 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="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1-2" xlink:type="arc"/>
    <link:presentationArc order="13" 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="14" 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="15" 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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1-2" xlink:type="arc"/>
    <link:presentationArc order="16" 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="17" 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:presentationArc order="18" 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_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-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: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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-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="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_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="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/20201231/role/statement-note-13-leases-details-textual" xlink:href="prlb-20201231.xsd#statement-note-13-leases-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:label="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseContractualTermAxis" xlink:label="us-gaap_LeaseContractualTermAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseTermOfContract" xlink:label="us-gaap_LesseeOperatingLeaseTermOfContract-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermDomain" 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_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="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_LeaseContractualTermAxis" 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_LeaseContractualTermAxis" xlink:to="prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember" 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/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseTermOfContract-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_DeferredTaxLiabilityCaresAct" xlink:label="prlb_DeferredTaxLiabilityCaresAct-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct" xlink:label="prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct-n2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OperatingLossCarryforwardsExpirationPeriod" xlink:label="prlb_OperatingLossCarryforwardsExpirationPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome" xlink:label="prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries" xlink:label="us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLossCarryforwards" xlink:label="us-gaap_OperatingLossCarryforwards-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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="prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct-n2" 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_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries-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_UndistributedEarningsOfForeignSubsidiaries-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_OperatingLossCarryforwards-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="prlb_OperatingLossCarryforwardsExpirationPeriod-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_OperatingLossCarryforwardsPercentageOfTaxableIncome-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="us-gaap_DeferredTaxAssetsValuationAllowance-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="us-gaap_UnrecognizedTaxBenefits-2" 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_DeferredTaxLiabilityCaresAct-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual" xlink:href="prlb-20201231.xsd#statement-note-18-subsequent-events-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ScenarioForecastMember" xlink:label="srt_ScenarioForecastMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:label="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventMember" xlink:label="us-gaap_SubsequentEventMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeAxis" xlink:label="us-gaap_SubsequentEventTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeDomain" xlink:label="us-gaap_SubsequentEventTypeDomain" 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="us-gaap_SubsequentEventTypeAxis" xlink:to="us-gaap_SubsequentEventTypeDomain" 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="us-gaap_SubsequentEventTypeAxis" 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_SubsequentEventTypeAxis" xlink:to="us-gaap_SubsequentEventMember" 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="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="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="dei_LegalEntityAxis" 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_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_PaymentsToAcquireBusinessesGross-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:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:href="prlb-20201231.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/20201231/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/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-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_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-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_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-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_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-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_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive-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_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive-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/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details" xlink:href="prlb-20201231.xsd#statement-note-3-revenue-disaggregation-of-revenue-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_CNCMachiningFirstcutMember" xlink:label="prlb_CNCMachiningFirstcutMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_InjectionMoldingProtomoldMember" xlink:label="prlb_InjectionMoldingProtomoldMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_OtherProductsMember" xlink:label="prlb_OtherProductsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_SheetMetalMember" xlink:label="prlb_SheetMetalMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ThreeDPrintingFinelineMember" xlink:label="prlb_ThreeDPrintingFinelineMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details" xlink:label="prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ProductOrServiceAxis" xlink:label="srt_ProductOrServiceAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisaggregationOfRevenueAbstract" xlink:label="us-gaap_DisaggregationOfRevenueAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-3-revenue-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="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_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="country_US" 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_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_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_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_StatementGeographicalAxis" xlink:to="country_JP" 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="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_DisaggregationOfRevenueAbstract" 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_DisaggregationOfRevenueAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:href="prlb-20201231.xsd#statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAcquiredDuringPeriod" xlink:label="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-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="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_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="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="srt_StatementGeographicalAxis" xlink:to="srt_EuropeMember" 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_StatementGeographicalAxis" xlink:to="country_JP" 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_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/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/20201231/role/statement-note-13-leases-balance-sheet-information-details" xlink:href="prlb-20201231.xsd#statement-note-13-leases-balance-sheet-information-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-13-leases-balance-sheet-information-details" xlink:label="prlb_statement-statement-note-13-leases-balance-sheet-information-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-13-leases-balance-sheet-information-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_OperatingLeaseRightOfUseAsset" 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_OperatingLeaseLiabilityCurrent" 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_OperatingLeaseLiabilityNoncurrent" 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_OperatingLeaseLiability-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_FinanceLeaseRightOfUseAsset" 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_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_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityNoncurrent" 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_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiability-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details" xlink:href="prlb-20201231.xsd#statement-note-13-leases-lease-expense-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-13-leases-lease-expense-details" xlink:label="prlb_statement-statement-note-13-leases-lease-expense-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseInterestExpense" xlink:label="us-gaap_FinanceLeaseInterestExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:label="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeasePayments" xlink:label="us-gaap_OperatingLeasePayments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_VariableLeaseCost" xlink:label="us-gaap_VariableLeaseCost" 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-13-leases-lease-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/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseCost" 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_FinanceLeaseRightOfUseAssetAmortization" 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_FinanceLeaseInterestExpense" 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_VariableLeaseCost" 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_LeaseCost-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_StatementLineItems" xlink:to="us-gaap_OperatingLeasePayments" 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_FinanceLeaseInterestPaymentOnLiability" 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_FinanceLeasePrincipalPayments" 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_StatementLineItems" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" 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_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:href="prlb-20201231.xsd#statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:label="prlb_statement-statement-note-13-leases-maturities-of-operating-lease-liabilities-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-13-leases-maturities-of-operating-lease-liabilities-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_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" 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_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" 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_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" 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_FinanceLeaseLiabilityPaymentsDueYearTwo" 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_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" 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_FinanceLeaseLiabilityPaymentsDueYearThree" 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_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" 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_FinanceLeaseLiabilityPaymentsDueYearFour" 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_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" 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_FinanceLeaseLiabilityPaymentsDueYearFive" 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_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" 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_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:presentationArc order="12" 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_LesseeOperatingLeaseLiabilityPaymentsDue-3" 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_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDue-3" xlink:type="arc"/>
    <link:presentationArc order="14" 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_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-n8" xlink:type="arc"/>
    <link:presentationArc order="15" 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_FinanceLeaseLiabilityUndiscountedExcessAmount-n8" 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="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" 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="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiability" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:href="prlb-20201231.xsd#statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:label="prlb_statement-statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-13-leases-weighted-average-remaining-terms-and-discount-rates-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_OperatingLeaseWeightedAverageRemainingLeaseTerm1" 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_FinanceLeaseWeightedAverageRemainingLeaseTerm1" 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_OperatingLeaseWeightedAverageDiscountRatePercent" 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_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income" xlink:href="prlb-20201231.xsd#statement-consolidated-statements-of-comprehensive-income" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementAbstract" xlink:label="us-gaap_IncomeStatementAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingExpensesAbstract" xlink:label="us-gaap_OperatingExpensesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenuesAbstract" xlink:label="us-gaap_RevenuesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SellingAndMarketingExpense" xlink:label="us-gaap_SellingAndMarketingExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-2" xlink:type="arc"/>
    <link:presentationArc order="1" 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_ComprehensiveIncomeNetOfTaxAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows" xlink:href="prlb-20201231.xsd#statement-consolidated-statements-of-cash-flows" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GainLossOnSaleOfBusiness" xlink:label="us-gaap_GainLossOnSaleOfBusiness-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxesPaid" xlink:label="us-gaap_IncomeTaxesPaid" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:label="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InterestPaidNet" xlink:label="us-gaap_InterestPaidNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireHeldToMaturitySecurities" xlink:label="us-gaap_PaymentsToAcquireHeldToMaturitySecurities-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireOtherInvestments" xlink:label="us-gaap_PaymentsToAcquireOtherInvestments-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:label="us-gaap_ProceedsFromDivestitureOfBusinesses" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:label="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:label="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RepaymentsOfLongTermDebt" xlink:label="us-gaap_RepaymentsOfLongTermDebt-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementOfCashFlowsAbstract" xlink:label="us-gaap_StatementOfCashFlowsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SupplementalCashFlowInformationAbstract" xlink:label="us-gaap_SupplementalCashFlowInformationAbstract" 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_GainLossOnSaleOfBusiness-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_AccretionAmortizationOfDiscountsAndPremiumsInvestments-n8" xlink:type="arc"/>
    <link:presentationArc order="5" 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/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_ProceedsFromDivestitureOfBusinesses" 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_PaymentsToAcquireOtherInvestments-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_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireHeldToMaturitySecurities-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_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities" 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/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_RepaymentsOfLongTermDebt-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_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_FinanceLeasePrincipalPayments-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_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" 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_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-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_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock-n8" 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_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities-3" 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_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" 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_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-3" xlink:type="arc"/>
    <link:presentationArc order="8" 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="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_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-5" 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_SupplementalCashFlowInformationAbstract" 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_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_InterestPaidNet" 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_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_IncomeTaxesPaid" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:label="prlb_statement-statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentFederalTaxExpenseBenefit" xlink:label="us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentForeignTaxExpenseBenefit" xlink:label="us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:label="us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:label="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-15-income-taxes-significant-components-of-provision-for-income-taxes-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_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" 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_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentFederalTaxExpenseBenefit" 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_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentStateAndLocalTaxExpenseBenefit" 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_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_CurrentForeignTaxExpenseBenefit" 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_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" 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_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredFederalIncomeTaxExpenseBenefit-1" 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_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit-1" xlink:type="arc"/>
    <link:presentationArc order="2" 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_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_DeferredForeignIncomeTaxExpenseBenefit-1" 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_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance" 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_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="us-gaap_IncomeTaxExpenseBenefit-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_DeferredTaxAssetsRightOfUseLeases" xlink:label="prlb_DeferredTaxAssetsRightOfUseLeases-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:label="prlb_statement-statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities" xlink:label="us-gaap_DeferredIncomeTaxLiabilities-n10" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:label="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsInventory" xlink:label="us-gaap_DeferredTaxAssetsInventory" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsNet" xlink:label="us-gaap_DeferredTaxAssetsNet-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsNetAbstract" xlink:label="us-gaap_DeferredTaxAssetsNetAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:label="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsOther" xlink:label="us-gaap_DeferredTaxAssetsOther" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:label="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_DeferredTaxAssetsValuationAllowance-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilities" xlink:label="us-gaap_DeferredTaxLiabilities-n10" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill" xlink:label="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesLeasingArrangements" xlink:label="us-gaap_DeferredTaxLiabilitiesLeasingArrangements-n9" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:label="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment" xlink:label="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-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_DeferredTaxAssetsNetAbstract" 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_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities" 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_DeferredTaxAssetsNetAbstract" xlink:to="prlb_DeferredTaxAssetsRightOfUseLeases-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_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" 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_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets" 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_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsInventory" 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_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsOther" 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_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsOperatingLossCarryforwards" 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_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsValuationAllowance-n8" 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_DeferredTaxAssetsNetAbstract" xlink:to="us-gaap_DeferredTaxAssetsNet-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_DeferredTaxLiabilitiesNetAbstract" 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_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment-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_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill-n8" 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_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilitiesLeasingArrangements-n9" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedTotalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredIncomeTaxLiabilities-n10" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedTotalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DeferredTaxLiabilitiesNetAbstract" xlink:to="us-gaap_DeferredTaxLiabilities-n10" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ExercisePriceRangeFourMember" xlink:label="prlb_ExercisePriceRangeFourMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ExercisePriceRangeOneMember" xlink:label="prlb_ExercisePriceRangeOneMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ExercisePriceRangeThreeMember" xlink:label="prlb_ExercisePriceRangeThreeMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ExercisePriceRangeTwoMember" xlink:label="prlb_ExercisePriceRangeTwoMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-stockbased-compensation-information-about-stock-options-outstanding-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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain" 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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" 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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="prlb_ExercisePriceRangeOneMember" 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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="prlb_ExercisePriceRangeTwoMember" 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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="prlb_ExercisePriceRangeThreeMember" 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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis" xlink:to="prlb_ExercisePriceRangeFourMember" 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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit" 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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" 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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit" 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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" 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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" 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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" 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_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:href="prlb-20201231.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/20201231/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/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:label="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsGross" xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:label="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:label="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NoncompeteAgreementsMember" xlink:label="us-gaap_NoncompeteAgreementsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-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="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/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:href="prlb-20201231.xsd#statement-note-4-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/20201231/role/statement-note-4-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/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:label="prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-4-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/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:href="prlb-20201231.xsd#statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:label="prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BankTimeDepositsMember" xlink:label="us-gaap_BankTimeDepositsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAxis" xlink:label="us-gaap_CashAndCashEquivalentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:label="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CorporateDebtSecuritiesMember" xlink:label="us-gaap_CorporateDebtSecuritiesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinancialInstrumentAxis" xlink:label="us-gaap_FinancialInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesFairValue" xlink:label="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:label="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:label="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:label="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-marketable-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_USGovernmentAgenciesDebtSecuritiesMember" 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_USStatesAndPoliticalSubdivisionsMember" 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="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="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_HeldToMaturitySecurities" 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_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" 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_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss-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_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:href="prlb-20201231.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/20201231/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/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:label="us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount" 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_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount" 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_HeldToMaturitySecurities-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:href="prlb-20201231.xsd#statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ComputerHardwareAndSoftwareGross" xlink:label="prlb_ComputerHardwareAndSoftwareGross" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:label="prlb_statement-statement-note-8-property-and-equipment-components-of-property-and-equipment-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BuildingsAndImprovementsGross" xlink:label="us-gaap_BuildingsAndImprovementsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConstructionInProgressGross" xlink:label="us-gaap_ConstructionInProgressGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Land" xlink:label="us-gaap_Land" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseholdImprovementsGross" xlink:label="us-gaap_LeaseholdImprovementsGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MachineryAndEquipmentGross" xlink:label="us-gaap_MachineryAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-property-and-equipment-components-of-property-and-equipment-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_Land" 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_BuildingsAndImprovementsGross" 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_MachineryAndEquipmentGross" 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="prlb_ComputerHardwareAndSoftwareGross" 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_LeaseholdImprovementsGross" 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_ConstructionInProgressGross" 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_PropertyPlantAndEquipmentGross-3" 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_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-n8" 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_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentNet-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details" xlink:href="prlb-20201231.xsd#statement-note-9-inventory-inventory-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-9-inventory-inventory-details" xlink:label="prlb_statement-statement-note-9-inventory-inventory-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-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/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_StockOptionsRestrictedStockAndOtherMember" xlink:label="prlb_StockOptionsRestrictedStockAndOtherMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-stockbased-compensation-expense-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CostOfSalesMember" xlink:label="us-gaap_CostOfSalesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GeneralAndAdministrativeExpenseMember" xlink:label="us-gaap_GeneralAndAdministrativeExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementLocationAxis" xlink:label="us-gaap_IncomeStatementLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementLocationDomain" xlink:label="us-gaap_IncomeStatementLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchAndDevelopmentExpenseMember" xlink:label="us-gaap_ResearchAndDevelopmentExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SellingAndMarketingExpenseMember" xlink:label="us-gaap_SellingAndMarketingExpenseMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-stockbased-compensation-stockbased-compensation-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_IncomeStatementLocationAxis" xlink:to="us-gaap_IncomeStatementLocationDomain" 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="prlb_StockOptionsRestrictedStockAndOtherMember" 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="prlb_ESPPMember" 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_IncomeStatementLocationAxis" 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_IncomeStatementLocationAxis" xlink:to="us-gaap_CostOfSalesMember" 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_IncomeStatementLocationAxis" xlink:to="us-gaap_SellingAndMarketingExpenseMember" 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_IncomeStatementLocationAxis" xlink:to="us-gaap_ResearchAndDevelopmentExpenseMember" 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_IncomeStatementLocationAxis" xlink:to="us-gaap_GeneralAndAdministrativeExpenseMember" 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_AllocatedShareBasedCompensationExpense" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:label="prlb_statement-statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-15-income-taxes-components-of-income-loss-before-income-taxes-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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic-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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign-2" 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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:label="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:label="prlb_statement-statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-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_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" 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_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" 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="prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection" 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_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance" 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_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch-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_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" 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_EffectiveIncomeTaxRateReconciliationTaxContingencies" 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_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent" 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_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" 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="prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent" 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="prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability" 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_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:href="prlb-20201231.xsd#statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:label="prlb_statement-statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:label="us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:label="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations-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-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-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_UnrecognizedTaxBenefits-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_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" 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_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" 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_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations-n8" 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_UnrecognizedTaxBenefits-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:label="prlb_statement-statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-17-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/20201231/role/statement-note-17-segment-reporting-income-from-operations-details" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting-income-from-operations-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:label="prlb_CorporateUnallocatedAndJapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-17-segment-reporting-income-from-operations-details" xlink:label="prlb_statement-statement-note-17-segment-reporting-income-from-operations-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-17-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_CorporateUnallocatedAndJapanSegmentMember" 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_OperatingIncomeLoss-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details" xlink:label="prlb_statement-statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-17-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/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:label="prlb_statement-statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-17-segment-reporting-expenditures-for-additions-to-longlived-assets-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_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_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="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="srt_StatementGeographicalAxis" xlink:to="srt_EuropeMember" 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_StatementGeographicalAxis" xlink:to="country_JP" 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/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details" xlink:href="prlb-20201231.xsd#statement-note-17-segment-reporting-depreciation-and-amortization-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_JP" xlink:label="country_JP" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-17-segment-reporting-depreciation-and-amortization-details" xlink:label="prlb_statement-statement-note-17-segment-reporting-depreciation-and-amortization-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-17-segment-reporting-depreciation-and-amortization-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_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_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="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="srt_StatementGeographicalAxis" xlink:to="srt_EuropeMember" 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_StatementGeographicalAxis" xlink:to="country_JP" 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/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DepreciationDepletionAndAmortization-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets" xlink:href="prlb-20201231.xsd#statement-consolidated-balance-sheets" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:label="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxesReceivable" xlink:label="us-gaap_IncomeTaxesReceivable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MarketableSecuritiesCurrent" xlink:label="us-gaap_MarketableSecuritiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MarketableSecuritiesNoncurrent" xlink:label="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherIntangibleAssetsNet" xlink:label="us-gaap_OtherIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PrepaidExpenseAndOtherAssetsCurrent" 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_IncomeTaxesReceivable" 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_OperatingLeaseLiabilityCurrent" 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_FinanceLeaseLiabilityCurrent" 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_AccruedIncomeTaxesCurrent" 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_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LiabilitiesCurrent-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_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" 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_FinanceLeaseLiabilityNoncurrent" 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_DeferredIncomeTaxLiabilitiesNet" 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_OtherLiabilitiesNoncurrent" 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_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/20201231/role/statement-consolidated-statements-of-shareholders-equity" xlink:href="prlb-20201231.xsd#statement-consolidated-statements-of-shareholders-equity" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity" xlink:type="extended">
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" xlink:label="srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:label="srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:label="srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingStandardsUpdate201409Member" xlink:label="us-gaap_AccountingStandardsUpdate201409Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:label="us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementOfStockholdersEquityAbstract" xlink:label="us-gaap_StatementOfStockholdersEquityAbstract" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember" xlink:label="us-gaap_TypeOfAdoptionMember" 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="srt_CumulativeEffectPeriodOfAdoptionAxis" 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_CumulativeEffectPeriodOfAdoptionAxis" xlink:to="srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" 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_AdjustmentsForNewAccountingPronouncementsAxis" 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_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_AccountingStandardsUpdate201409Member" 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_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="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_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="us-gaap_TypeOfAdoptionMember" 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="srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:to="srt_CumulativeEffectPeriodOfAdoptionDomain" 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/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_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="arc"/>
    <link:presentationArc order="5" 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="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_StockRepurchasedAndRetiredDuringPeriodValue-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_NetIncomeLoss" 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_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-2" 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_ComprehensiveIncomeNetOfTax" 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_CommonStockSharesOutstanding-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_StockholdersEquity-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-stock-option-activity-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-stock-option-activity-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-stock-option-activity-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-12-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/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:href="prlb-20201231.xsd#statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:label="prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedTranslationAdjustmentMember" xlink:label="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTax-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:label="us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-14-accumulated-other-comprehensive-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_AccumulatedTranslationAdjustmentMember" 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_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax" 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_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax" 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_OtherComprehensiveIncomeLossNetOfTax-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/20201231/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:href="prlb-20201231.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/20201231/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/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AssetsFairValueDisclosure" xlink:label="us-gaap_AssetsFairValueDisclosure-3" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis" xlink:label="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueInputsLevel1Member" xlink:label="us-gaap_FairValueInputsLevel1Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueInputsLevel2Member" xlink:label="us-gaap_FairValueInputsLevel2Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueInputsLevel3Member" xlink:label="us-gaap_FairValueInputsLevel3Member" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain" xlink:label="us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember" xlink:label="us-gaap_FairValueMeasurementsRecurringMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MoneyMarketFundsAtCarryingValue" xlink:label="us-gaap_MoneyMarketFundsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_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="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_MoneyMarketFundsAtCarryingValue" xlink:type="arc"/>
    <link:presentationArc order="1" 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_AssetsFairValueDisclosure-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-restricted-stock-options-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-restricted-stock-options-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-restricted-stock-options-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n9" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n9" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-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/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details" xlink:href="prlb-20201231.xsd#statement-note-12-stockbased-compensation-performance-stock-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue-1" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20201231.xsd#prlb_statement-statement-note-12-stockbased-compensation-performance-stock-details" xlink:label="prlb_statement-statement-note-12-stockbased-compensation-performance-stock-details" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n9" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n8" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n9" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-1" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-4" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-5" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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-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/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" 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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="arc"/>
    <link:presentationArc order="12" 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="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue-1" xlink:type="arc"/>
    <link:presentationArc order="13" 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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n8" xlink:type="arc"/>
    <link:presentationArc order="14" 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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n8" xlink:type="arc"/>
    <link:presentationArc order="15" 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="16" 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>GRAPHIC
<SEQUENCE>13
<FILENAME>image02.jpg
<TEXT>
begin 644 image02.jpg
M_]C_X  02D9)1@ ! 0$ 8 !@  #_X0 L17AI9@  34T *@    @  0$Q  (
M   *    &@    !'<F5E;G-H;W0 _]L 0P '!04&!00'!@4&" <'" H1"PH)
M"0H5#Q ,$1@5&AD8%1@7&QXG(1L=)1T7&"(N(B4H*2LL*QH@+S,O*C(G*BLJ
M_]L 0P$'" @*"0H4"PL4*AP8'"HJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ_\  $0@")@*2 P$B  (1 0,1 ?_$
M !\   $% 0$! 0$!           ! @,$!08'" D*"__$ +40  (! P,"! ,%
M!00$   !?0$" P $$042(3%!!A-180<B<10R@9&A""-"L<$54M'P)#-B<H()
M"A87&!D:)28G*"DJ-#4V-S@Y.D-$149'2$E*4U155E=865IC9&5F9VAI:G-T
M=79W>'EZ@X2%AH>(B8J2DY25EI>8F9JBHZ2EIJ>HJ:JRL[2UMK>XN;K"P\3%
MQL?(R<K2T]35UM?8V=KAXN/DY>;GZ.GJ\?+S]/7V]_CY^O_$ !\!  ,! 0$!
M 0$! 0$        ! @,$!08'" D*"__$ +41  (! @0$ P0'!00$  $"=P !
M @,1! 4A,08205$'87$3(C*!"!1"D:&QP0DC,U+P%6)RT0H6)#3A)?$7&!D:
M)B<H*2HU-C<X.3I#1$5&1TA)2E-455976%E:8V1E9F=H:6IS='5V=WAY>H*#
MA(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6VM[BYNL+#Q,7&Q\C)RM+3
MU-76U]C9VN+CY.7FY^CIZO+S]/7V]_CY^O_:  P# 0 "$0,1 #\ ^D:,T4E
M"&15^\0/J:3S8_[Z_G7"^/(3=>(M"M6DD2.9G1MC$'!*U=?X=:?M_=W]\C=F
M\[.*W5."BG*6_D<GMJCG*,(WMYG7YH+J,9(&>F37!6-WJ/A#Q)!I.HW37FGW
MAQ!*_+(2<#]<"M_Q#8VEW=Z:]YJ/V-HIMT:;@/-/]WWI2I<K6NCZEQK<T7IJ
MNAOYHS5:[OK:P@,U[/'!&.-SM@55@\0Z3<PR30ZA T<0RYW@;1G&36?+)JZ1
MJYQ3LV:18*,L<#U-&X&LC7H[/4_#L@FOQ;6LJJPN58  =00?>N?\4ZN-(\.:
M?9Z;J2^:3$K,&&]HL'YOH<=:J%-SLD9U*RIW;V2.XS1FJEE?VM];>=:7$<T:
M\%XV! /UJE+XJT.&;RI-3M]V<?*^<?B*GDDW9(T]I!*[9L4@=6^Z0?H:K&YB
MN=.>:VD62-HR5=&R#QV-<U\.79_#\Y=F8_:GY8YJE!N+EV(=5*<8+J=?32ZK
M]XX^IQ2UQ/Q*+?8--179-]V%)5L<$&BG#GFHCK5/9P<SM/-C_OK^=.R*X_\
MX5WI[Q B]OE)'7SCQ6;*VI> ]6M_.O9+W2;E]K>:<M&>Y_K6BI1EI"6IBZ\X
M*]2-EZGH)=5^\<?6E+JHR2 !U)[5A>*;*SO]+CCOM0^P1B56$@8#)].:Y_QW
MJD$D=AI<&H*JM,%NMC\JHQC=Z#G-33I<[21=6O[--OH=VDT<@)C=7 Z[3FD2
M>*1B(Y%8CJ%8&O.]8DT70?"ES;^&M04S73J'V3[VV]\>@_QK=\'Z1HEHGVK2
MKC[1<M$JSL)MV">>G:JE248<WZ$0Q#E-0T\]3JLTN:R[CQ'HUK<>1/J5LDN<
M%3(.#[^GXU?CFCFB$D3JZ,,AE.01]:P<6MT=*G%[,DS2UF2^(=)A@\Z34+<1
M[RF[>#\PZBK2W]J]F+Q;B+[,5W"7>-N/7-#C)=!*<7LRSFC-9=MXBTB\N?(M
M=1MY)<X"B098^WK^%7+J\M[.W,]W,D,0X+R' 'XT.,D[- IQ:NF3YHS6;=>(
M=)L)%CN]0@C=N0I?G'K[5<BNH)[87,,R20D;A(K J1ZYH<9+6PU.+=DR;=1O
M&[!(SZ9KBM*\413>,M36ZU*+[&%1+4%P%//;U-:]]8VDOBRQNI=1,-S&A$=K
MN'[P<\XK1TG%VEV,8UU-7CWL;^:,U6N[ZUL(?-OKB*"/IND8*"?QJE:^)='O
M;@0VNH0/*QPJ;L%OIGK6:C)JZ1JZD$[-FKNHW#OQ7+>.]:?2]!=+.Z6"\E8!
M0"-Y7N0/ZUI17ECJV@2I%?1L@AV2RHX/EY7J:OV;Y5+H1[:/.X+=&N&!&0<C
MVI<UD>'+:VLM"@AL[S[;"F=LY;.[GUI9/$VBPW'D2:G;+(#@CS!P?<]!4\KN
MTM2E47*G+2YK9HS3$E26-7C971AE64Y!'J*IOK6FI#+*]];B.%MCL9!A6]/K
M[4K-[%.45NR_FBL^PUK3M3)&GWD,[#JJMR/PZU?%#33LPC)25T[BT444B@HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "DI:2@#A_&?_ ".'
MAS_KJW\UKMS7!>/;J*R\2Z#<W!Q%$SNQ SP"M:9^(_A\J=DLSG'"K">:ZY4Y
MSIPY5<X*=6%.K-2=M2C\1P2='\OB3[3\OUX_K4GCK_D):!GK]J']*K6R7GC7
MQ-;:C-:O:Z98G=&)!@R-G(_7'Y59\>'&J:#D_P#+U_A6D?=<8/=7,I7E&=1;
M-JQ!) GB?XBSVNH9DLM.B^2$GY6;@'/XD_D*D\<^&M/A\/RWUA;QVLL& WDK
MM#J2 00/P-&I&7PKXV?67@DET^]C\N5HUR8VX[?AG\357Q?XLM=7\/S6NCI+
M.AVM/,8RJQKN&!D]R<4XJ;G!PVT(FZ:IU%/XM?\ @6+NN?\ )*(#_P!.L/\
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
MEKM%Z5SU&Y0BWN=5%*-6:2TT_(6BBBN<ZPHHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@"&:TM[@@W$$<NWIO0-C\Z8NG62G*VD"GU$2
M_P"%)/J5I;2^7/.J/C."#4?]LZ?_ ,_*?D:=V+E3Z%T* .!]*CE@BE*M+$CE
M#E2R@X/M5;^V=/\ ^?I/R/\ A1_;.G_\_*?D?\*0]##UK4]7T;7/.>UDOM'E
M0!DBC#-&W^?PYK'U74YO%5F-(T'29X(IG!FFEB$:J <]N/\ ]5=G_;&G_P#/
MRGY'_"C^V-/_ .?E/R/^%;QJJ-M-3EG0E*_O:,EMK&&'38;)T66**-8P'7((
M Q4YAC,7E&-3'C&S:,8],54&LZ>/^7E/R/\ A1_;.G_\_*?D:QNV=*22L6(K
M2W@C*0P1QHW540 '\J9%IUE!)OAM((W_ +RQ@&HO[9T__GY3\C1_;.G_ //R
MGY&B[#E78M"VA65I%B0.PPS!1D_4T1010+MAB2,9SA% Y_"JO]LZ?_S\I^1J
MS!<Q7,>^!PZYQD4@LB6HYK:"X $\,<H!R ZAL?G4E% ]RL--LE.5L[<'U$2_
MX5.J*J@* H'0#BG44[L226Q'+;PSH%GB210<@.H(S^-$EO#*4,L2.4.5+*#M
M^GI4E%(+(CE@BG39-&DB]=KJ"/UIX4   8 & !2T4#*TNG64TGF36D$C_P!Y
MHP34ZHJJ%50%'  '2G44[L226J(XK>&$$0Q)&&.3L4#)]>*<R*RE6 8'J",Y
MIU%(=BM'IUE#)YD-I C_ -Y8P#4TD,4R;)HUD3^ZZY%/HIW8K);"*BJH50
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
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4AZ4M(>E &XG^K7Z"BA/]6OT%%,9\QZG\8O%]OK%[!%<682*YD1<VJG@.
M0/Y55_X71XR_Y^++_P !%KCM:_Y&#4O^OR;_ -#-4ZULK$G>_P#"Z/&7_/Q9
M?^ BT?\ "Z/&7_/Q9?\ @(M<%13L@.]_X71XR_Y^++_P$6C_ (71XR_Y^++_
M ,!%K@J*+(#O?^%T>,O^?BR_\!%H_P"%T>,O^?BR_P# 1:X*BBR [W_A='C+
M_GXLO_ 1:/\ A='C+_GXLO\ P$6N"HHL@.]_X71XR_Y^++_P$6C_ (71XR_Y
M^++_ ,!%K@J*+(#O?^%T>,O^?BR_\!%H_P"%T>,O^?BR_P# 1:X*BBR [W_A
M='C+_GXLO_ 1:/\ A='C+_GXLO\ P$6N"HHL@.]_X71XR_Y^++_P$6C_ (71
MXR_Y^++_ ,!%K@J*+(#O?^%T>,O^?BR_\!%H_P"%T>,O^?BR_P# 1:X*BBR
M[W_A='C+_GYLO_ 1:]G^%=_K/B?PD=6\2/&S3S,+811",;%XSQUR<_E7S%8V
M<VHZA;V5JN^:YE6*-1W9C@?J:^SM#TF'0]!LM+M@/+M(5B! QN(')_$Y/XU$
MDD-$WV"#T;\Z/L$'HWYU*UQ$KNC2H&C7>X+#*KSR?0<'GV-(US#';&XDEC6$
M+O,I8!0O7.>F/>H&1_8(/1OSH^P0>C?G3;+5;#4MW]G7UM=[/O\ D3+)M^N#
MQ5K- %?[!!Z-^='V"#T;\ZFBF2:,21.LB-]UD.0?Q%(DR2;O+=7V-M;:V=I]
M#[T 1?8(/1OSH^P0>C?G4PE0R>6'4R 9*YY ]<4[- %?[!!Z-^='V"#T;\Z6
M[O[33XA+?W4%K&6VAYI @)],GO4-SK.F65RMO>:C9V\[8VQ2SJK'/3 )S0!+
M]@@]&_.C[!!Z-^=23W$5K \US*D,*#+R2,%51ZDG@4R'4+2XLS=V]U!+; $F
M9) R8'7Y@<<4 )]@@]&_.C[!!Z-^=1WNL:=IS(-0U"TM2XR@GG5-P]1D\U;#
MAE#(0RD9!'0B@"#[!!Z-^='V"#T;\ZL9HS0!7^P0>C?G1]@@]&_.IO-0RF,.
MID49*9Y ]<4&9!,(BZB1E+*A/) QD@?B/S% $/V"#T;\Z/L$'HWYU8S1F@"O
M]@@]&_.C[!!Z-^=6,TWS$\WR]Z[\;MN><>N* (?L$'HWYT?8(/1OSJQGUHS0
M!7^P0>C?G1]@@]&_.II)4AB:69UCC499G. H]2:=NH K_8(/1OSH^P0>C?G5
MC--6:-I'1'5G3&Y0>5R,C([4 0_8(/1OSH^P0>C?G4[R+'&SR,J*HRS,< #U
MH#AE#*0P(R".] $'V"#T;\Z/L$'HWYU8S445W!.VV&:*1MN["."<9(SQVR"/
MPH 9]@@]&_.C[!!Z-^=6,GN*,T 5_L$'HWYT?8(/1OSJ82H93$'7S H8IGD
M\9QZ<'\J<#0!7^P0>C?G1]@@]&_.K&:BFNH+?/GSQ184O\[A?E'4\]AD<^]
M#/L$'HWYT?8(/1OSJQDT9H K_8(/1OSH^P0>C?G5C=38YDF0/"ZR(21N4Y''
M!H A^P0>C?G1]@@]&_.IGE6.)I)&5$4$LS' 4#J2:57W*"N"",@@]: (/L$'
MHWYT?8(/1OSJ:.9)HQ)"ZR(>C(<@_C3LT 5_L$'HWYT?8(/1OSJQFHENX'E$
M:3Q-(=V$#@D[2 W'L2,^F: &?8(/1OSH^P0>C?G5C/-+0!6^P0>C?G1]@@]&
M_.K-% %;[!!Z-^='V"#T;\ZLT4 9]W;PP194'<3@<U3JS?2[[C:.B\56I""B
MBB@ I#TI:0]* -Q/]6OT%%"?ZM?H**8SXHUK_D8-2_Z_)O\ T,U3JYK7_(P:
ME_U^3?\ H9JG6Y)I:3X=UG7EE.BZ7=7XA($AMXB^PG.,X^AJ67PGX@@U:'3)
MM%ODOIU+Q6S0$/(HSD@=P,'\J[?X;2V4/PY\8R:I<WUK:@VWF36&/.7E_NY(
M%;WA'Q;IFK^-O"6B:.=0N;?31=.U[J;*9Y"T3<<$\#_#TJ;L#RS4/!WB32K-
M[O4M"O[6W3&^66 A5S[U+;^!?%=W;17-MX=U&6"9 \<B6[%74C((]L5Z7YEA
MI_@;Q)KGAJ_UG73,'L;JUU"88LPQ/[S8,Y'3'/\ 6F>*+K08-!\)#6=6\164
MO]B0%4T@KY9&T<MDCG^E+F8'CUW:7%A>2VM[ ]O<0L5DBD&&0^A%15T+>'UU
M*RU+5[?6[%88)'V0:E=A+V<#D'9@[B<^O6N>J@"BBBF 4444 %%%% !1110
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
MQ]J3>*H]?TRRMM(U VPCE>*!6$Y(YD*L-N3["O6V\3ZJ_P 3/"6DM-%]BO\
M3XKBYB^SQ_/(8R2<[<CGL.*&[ ?.Q8#J0*,@#)->LZOJ]QX!\(:9=^&XX(;[
M6KJYENKV2!)&PDA"QC<" ,=OKZUT_AM+!?$UIXE?3X(I-2\,RWEY:QH%1G5U
MRP7MN HY@L?/^1G%+7L5]X>MM&^'/C*XTT"32]16UN]/D(SB-F&4SV*GBO':
M:=P"BBBF 5I>'='E\0>)+#2H!E[J=8R<=%SR?IC-9M>P?L^^'OM?B"^UZ9,Q
MV,?DPDC_ ):/UQ]%_P#0A2;L@/?K2VBL[.&VMUVQ0HL:#T &!4M**0]:Q*/.
M-2TQE\10P/ICK?W5[=8U)L;9D>&0QINSDX7:-IX&WBIET_4[VUG+:5=1)'IM
MG;20S;0;D12LTT8 /1DR.<9W5O6?C;1;N">YEN%MK>*[:UCEG90)77()4 D@
M<=P*U9=9TZ#4H=/EO(ENYQNBA+?,PYZ?D?RI@<0WARZDN+>YLM)^QKNO%L@8
MT#6&^(!#@?<&\,<+TS[U9\.Z'>VWAW6XOLDMN;BT\J.V-JENK2!&!8*KMDG*
M@L2,X'I707?BW2K;4SIZS>?<JLC21Q$$Q[$W$'\*EM?%&CW>F27\=_"+>$#S
MB6_U9/0'WH YF/1[R/Q-ILZZ5(\L:VX>:>%6$:K&%;9,&#)@9^3!#'/]ZG:E
MX8%YXTEDET5)K:XO;>::8Q)LD189%(;N?F*\'KD5T\OB31X=.BOY=1@6TF;;
M'*6X8]Q^&#3K;7;*XNFMQ*%D\XPQJQ'[TA0Q*XZC!ZT <-J?AO4WTNP@%DYM
MX9+R..!+6.8PEIB874,RA,)T8<KD<5I/X;N?[3N+]K'S;U=4LVBNF"F3R52$
M2D'/ X?..OO7<BEHN!Q?C'2[B]U:UFM=,>\D1 (C)"LD2MNS]XL&A;IEUR<?
M2H9M#U%_B(;UXI"AG62.Y2V0[8A'M,9E+;@-VX[ N#D&NZHH \PD\&SKX:A@
MCT5#+-HSK=IL4F6<21,@;/WF&'P3TY&171>)]$GU06$=A:E+>[C^Q7B@!#%
MQ5CG![!67 _O^U=;11<#S2;PUK&HZ7OU&P$MY/;7<,H<*>1"(XL_[S*6'INJ
MU8^&FCN!J%OHWV:X&J6K1,8U5X[<0Q*X&#\J\,"!UQWKT&BBX'F8\)WDNC7!
MN-*WW<.CI'9EPI:.<2RM\G/##*<_K6QXJ\/2:MJ%_<?V>MTZ:,\=H[*#LN-Q
M*[<]&Z$'MZUVE%%P.)FTF\?Q0)CITCW;74,L6I87$-NJ /$6SD98/\H&#OK(
MET?5[C14T\:3<H]IH]U9LS%0LDC/$5"'/((4\\5Z;11<#A;W0C;^+[.32]&'
MEQ-$$8VZ>5$@^]LD#!HN"25 (8]>IINM>&?MOC*69]'6>"YFLWEG\M=KHGF!
MPQZGJG'< >E=Y10!YOJ>A7HT*.P71%EB2XO/(!MEG$"F7]T%B+*J@KT;JN,
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
M(**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH ***K2ZA:PS+%),H<G&.N#[^E %FBBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *0]*6D/2@#
M<3_5K]!10G^K7Z"BF,Q7_P!8W^\:2E?_ %C?[QI*0@HHHH ***3M0 M%1QSQ
M2L1&X8CJ!4E !1110 4444 %%%% !1110 4444 %%%% !1110 445%<SBWA+
MGD]%'J: ):*SXK-[I?-O'+;A\J>@^G3^=3FV\@;K0D8ZQELJWY]#]* +-%4A
MJ!W#=;L 3M&'4\^F*M1R)*FZ,Y'3Z4 /HHHH **** "BBB@ HHHH **** "B
MBB@ HHJK<2,9UB$IA7879QC/! [\=Z +5%4HD:7I>W(SR-P0$CUQMJ3[+)_S
M^W'Y)_\ $T 6:*K?99/^?VX_)/\ XFFNLML8V^T22AI%0K(%[G'8"@"W1110
M 4444 %%%% !1110 54O+[[*RHJ;W89R3A5'J?0<U;JO-&GVB.1T!!4QL?8]
M ?;- &;#J-U=022*8F1'VD1-@G\^U9*231S32 ;_ ")298@<ALDC)SV[59FB
M%A>W0C>1+0,@=8R >><_ABI9T,D:3:>BPA2<3,_S,.<[A[GU]:H"WIU^HW!V
MV6Y!,1D/W< 9!_/BM2*6.>,20N'1NA!KFVM52T\NZ+*L+EGC+#<RD#D'N,BI
MK&]6.-60+"^W[KG"3@=P>S4@.AHJ*WN$N8@\9]B#U4^AJ6D 4444 %%%% !1
M110 4444 %0/)*UP8HMJ[5!9FYQGL/RJ?Z546XB6^D!EC 95 Y[C.?Z4 3QK
M(K$R2!QC@!<8J2BB@ HHHH **** "BBB@ I#TI:0]* -Q/\ 5K]!10G^K7Z"
MBF,Q7_UC?[QI*5_]8W^\:2D(***I7U^;-T41,^[G.* +M,E3S873)&X$9':H
M!? C_CWN/^_=+]M'_/O<?]^Z &K;2.R&8JHC&T>42"?\XJ3[*O\ ?E_[^&F_
M;1_S[W'_ '[H^VC_ )][C_OW0 [[*O\ STE_[[-,MLK<7$>YF5"NW<<XR,TO
MVT?\^]Q_W[J&.XV7$SFWN-LA!'[OT&* +U+57[</^?>X_P"_='VX?\^]Q_W[
M_P#KT 6J*J_;A_S[W'_?O_Z] OD+JK13)N8*"R8&30!:HHHH **** "BBB@
MHHHH *HSN;N2);?>55B3*!\H^5AD>O)J6^)%J1G 9E5CZ D9JQC P!@#@#TH
M *6BB@!C1HZ%&4%3U&*@8BVNE?D12+M8GIN'0GZCO5JD*AE((R",$>M !2U7
ML239KDY +*I]5#$ _D!5B@ HHHH **** "BBB@ HHHH **** "JDF3J(V!2W
MV=L!NGWA5NJ#WELFJ#?<0KMA93F0<'<.* +<40B!).YV^\QZG_/I4E5O[0L_
M^?N#_OZO^-6 P90000>A!ZT +5:]^Y#_ -=X_P#T(4Y[RUB<I)<PHPZJT@!%
M5KN^M&2+;=0'$T9.)!TW4 :%%-5E= R,&5N00>#3J "BBB@ HHHH **** "L
M_6#-]CV02>62"6XZ@#I[5H51U.Q>]@ ADV2K]TGH<]0: ,":WN9&\Z>1P-P$
M@!&X<<$@>GK4U_ILEHD<UJRS1/P23@DGW'49YH%K)+>ND[+#>2,"F"?DP#V]
M*=.ET-)+OM6.4@B*)=V"#R?;Z"J 674Y)F@;[,OF(6CW,05R1USVJMOAN+&(
MPNRS;BIROR^Q],U<M9!/'<6TUF69MH*8V@<=?6IK70F6 )-,RJ,D*#]W(Q0
M[2(XXID5&;S1&5E5VR01T_#TK9JE;6!@OGG>02;HP@)')QW-7:0!1112 ***
M* "BBB@ HHHH K77[QHK?H)6);_=7M4<=ALO7<I'Y3=%Q[ 8QT[$Y]Z6ZB66
M\M5?.,.>"1V'I3_L$'_33_OXW^- "VI*M-#U$3[5SZ$ @?K5BJEG&L5Q=HF<
M"1>IS_ M6Z "BBB@ HHHH **** "D/2EI#TH W$_U:_044)_JU^@HIC,5_\
M6-_O&DI7_P!8W^\::3M4GDX&>!FD(6FLBMC<H;'3(SBL=?%6G?VE:V$R7UM<
MW>[R%N;&6+S,#)P64 \4S3/&6B:OK$NE6EQ(+Z(-NAF@>(_*?F'S 9(STHL!
MNTE(\BQQL\C!$4$LS'  '>L[1]?LM>A$^FK=- R[DFDM9(T<9Q\K, &_"@#2
MHK+L/$NDZGKE[H]E=>9?6/\ KXMC#;SCJ1@_A5?_ (3/1%\1+H<MQ+#J#-M6
M.:W= QQD ,1CG''K0!N4M%% !1110 E5[W[D/_79/YU9K/O[I%\L,P4"12,^
MQH OTM1Q2B1>V?K3\_2@!:*2EH **9(_EIG\JK17Z2R%596QUQVH N44E+0
MUT61"CC(88(J#9=Q_+&T4B]C(2&_059K&L?%>BZCKUQHUG>"2^M\[X]C ''!
MPQ&&QD9P: -#-]_<MO\ OMO\*,WW]RV_[[;_  K';QUX?2^N[-KUA<6<R03)
MY+_*[MM4=.>>XK4BU6TFU>?3(Y2;NWB661-A&%;.#GH>E $F;[^Y;?\ ?;?X
M4%+J4%96CC0]?*))(^IQBJ.L>)=/T*>"+4!=AKAQ'$8K220.YZ("JD;N.G6H
M[SQAHVG:G!I]]</!=7$#7$<3PN"4"DG/'!P#P<&G8#950B!5  48 %.K @\9
MZ1=RK'8_;;MV@2XQ;V,LFU''RDX7CZ'FMX'*@X(SZBD M%%0R3.)1%#'O?;N
M.3@ 4 345'#*)H@X&,]C4E !1110 44A.U23Q54WBB4(2H)Z*3S0!;HJ&>Y6
M"U>=DED51DK%&9'/L% )-9NE^*-,UC3Y[ZQ:X-K &+RR6TD:G;D,!N R1@Y
MH V*K&WE5V^SSK&K'<5:/=SW[BLO2/&>A:[):II=X9FND=XAY3KD(0&SD#&"
M1P:KV_C_ ,/W6K_V9!<7#7?F^44-G* &SCEBN ,CKTIV W/(N_\ GZB_\!__
M +*JYTK))/V0D]2;0?XU#9>)K#4;EH;&.]FV3- TJV4OE*ZG!!?;M&/KBJ[>
M,]&6=XVDN0L=R+1YC:2^4LI. I?;MZGUH U([6XB0)%/"BCHJV^ /_'J=Y-T
M1@W48'?$.#_Z%5.#Q+I-SXDGT"&ZW:E;IODAV$8'!ZXP>HXS1I_B/3]5N9HK
M#[1,(7>-YUMG\D,GWAYF-I_ \T :4<:Q1+&@PJC %/KF].\?>']5U1=/LKBX
M>Y:3R]K6<J@-SP25P.AZU;M_%&G76N/I$2WOVV,!G1K*50BG(#%BN IQP>E%
M@-FBL9/%FC/9BZ6Y8PF\-D&\IN90<%<8]>_2GZ7XDL=9\MK".]>*3.V=K*5(
MCCK\Y4#M2 UJ*B>YAC<J\@##J/2F_;(/^>@H GHJA=:G#$IVOG Z#J:=8WOV
ME01G!.,'L: +M%%86L^,=%\/7T5KJ\\UN\PRC&VD*'H/O@8XR,^F: -.\LA=
M;'4[98R2C#UJC9:9=[E^WSAHT4JL2'@_6I=1\06&FWEM:3_:);BZ1GABMK=Y
MF=5ZGY >.127_B'3]+TN&_OVG@AFD6-%>W?S"S' 79C<#]13U TP .@ I:R5
M\26#Z9/?(MVT5NYCF06DGF1D=<IMW >^.E0Q^+]&?P^=:,\T>G\;)9;=T\W/
M38" 7ST&,T:@;E%86H^,-(TC2HM0U5[FRMY9?*4SVDB,6_W2,X]^E:&G:M9:
MJ;D6$ID^RS&";*D;7 !(&1SU'(I6 NT444 %%%% !1110 4450U#7=*TF6*/
M5-1MK-Y@3&LTH4OCKC- $]TCAHYHQEHLY&,\'C_Z],34("H#N-^,D+SWZ =?
MTJ!_$.C1:.FK2:I:)I[G"W1E C)Z8W=*G.H6 DM?])MP]Y_Q[_,,S<9^7UXY
MH ?:JVV260;7E?<5/8=!^@%6*I:EK&G:/"LVK7T%G&YVAYG"@GTR:GM;NWOK
M6.ZLIHYX)1NCEC8,K#U!% $U%%% !1110 4444 %(>E+2'I0!N)_JU^@HH3_
M %:_044QF*_^L;_>--;(4[1DXX!.,TY_]8W^\:CED$,$DI&0BEB!WP,TA'()
MX<OY?&FGZR=-M+%+?SFGVWSSM*SKQ@% %Y]*H:+X+UE?'#:OJYLX;..[GO(8
MH)6DD,DBA<,2HX ':I?#?Q6T_P 2^(+?2;?3+RWEF#$O,R[5 &1]<BM32O'=
MEJVO?V;':7$4<ID6TO),>5=F,X<)WX]^M5J!NZI81ZKI%WI\[,L=U$T3,IP1
MD8S6;X8M]9T_1+?3]5MK,-:0"*.>"<L)=O"Y3:-O&,\FJ%CX]@N?%3Z'>:;<
M64HF:W6=I%>-Y0N[9D=RO-6-!\6_\)#=RQV=@JQPS/#*S7L?F)M8C<8Q\V">
ME+4#"\.>!=8T3Q%9:S+>6\UQ*TXU),X&USN&QMN6(('7%&I^#-:UCQVVH7'V
M.WTJ2>WE<+*SS'R<[<#: ,D\\\5UNAZW%KMO<RPPO"+>ZDMB'(.XH<$C':M2
MBX!UHJ*>XCMH]\S87^="7,#H&65,'I\PI 2T5'YT7_/5/^^A1YT7_/5/^^A0
M!)65J-D)&C+9^^%!'H:T?/B_YZQ_]]"J]W+&ZPA)%8^<G 8'O0 0:? B_-$/
MS-2_8[?_ )Y+^9J:EH KFV"8:V_=L.W4-]:?%,),J?ED7[R'M4M5[M"83)&#
MYJ#*D=: 'SQ^8F._\ZS+>Q^R7HQG;*" 6['KBKEM*6GVQS&:/9EF(^ZU3W$7
MFPE0<,/F4^A'2F!(. *6HX)?.A5^A[CT/<5)2 3&00>_I7!Z%X'U/3_$EHUW
M<6S:5I<MQ-9&,GSY&E/(DXQ@<^N:WO&VH76E>#;^\L)C!<1*"D@ .WYAZ\5G
MIK&H?\)/K=JURWDVVDPW$2%1\CLK$MTSSCZ4T!S6K?##5;SQ(^K6D]K&\FIB
M>53*P\R %2 ?E^\"#Q^M=:VF:S9>-;_5[&TM;N"[M8H0LEV864H3D_<;UK'\
M'7_B+49]$NY9=2GLY[1GOI+R.)8B_&TQ[0#6[X*U&]U31;NXOI&N)([^XB4[
M0/D5R%'  Z<4W<"MXKTK6M9DT8V5G:8L;V*]D\V\*Y*YR@Q&?4?-^E8WC?P%
MJ?BK4CJ%N]O;7$=DJ0$RME)=V6&0OW2I(S^E5_#GC#5;GQ5 ;V_6>"]:Z$^F
MB-5;35B/RDG&>>G/K3_ 'B_5-<\1:A:ZM=NT%[$USIX\K88T#%< E1GC!SS3
MU LZ#X0U?0]4@O'L;*^:+3[>V4_;GB\MXP0QP$(8'WKOP25!8 ''(!SBO-/"
M/B769?'<NE76I/J<#374312(@>V6)AL<E5'WLXP?2O3*E@(:K/&+FZ.2P6(8
M)4X))[5+/+Y4)8<MT4>IJ-66UC2,AGD;+$*.3ZFD!.B+&@5!A1T%.J-)XY$#
M*XP?4XID\W CA8&1^!S]T=S0!'(RS.QD<I!'P2&QN;_ZU.2U@=0R,[*>A#GF
MB>RCGLQ;DE5'0BFPZ=!#"J89L=RQ&?UI@.>QB9" 7_[[-4#I7^EB0%^#G;U_
M6K[0FW_>6P)Q]Y,D[A[9[U.CK(@9#E32 BE\^&S8VL23S 96-Y-BL?\ >P<?
MD:Y;POX?U?2_!MYHM_#:K(XG,4L5P7#&1F.""@QC<.><UV%%%P/-?!OPXU+P
MSXMM;]IK<V*67EO$DC$K,0NXJ".A*YS^E==;:1=0^/;W6G=/LL]C';H QW[E
M<DY&,8Y]:V+B86]M+,PW"-"Y [X&:\N\+>-]9\2^+(66\?[.UK-+<V$5N/*M
M0%_=GS.2Q)Z]/I5:L#IO"^@:EH&H7C2Z?:2"ZNY96NDO7W+&S9 \O9C(^OXU
MD1?#R_@\1MK(D@N&;4VN'LYIG,+1'&&QC D4\C@U-HOB+5KE/!C7%V\G]HFX
M^U?(H\[:I*CIQCVQ57P]XLUB]\96R7%\)X[ZXN89=*"*&T]8C\KDXSS[\<\4
M:@3Z?X$UBU\30^();NW>[EO9GNX@<+Y#C "OMR2!C@\5O>$M)U3P[:'2)H;:
M33X99#;W*3D2;"Q90R;>6YY.ZLK38=?/Q%O--N/$]W-:VL4=V(S;1 .'9AY9
MP,@# YSFI_!L^KZS->7>H7M\8+>^FCCVR1")PKX"%-F[@=]U#O8#7T[2+NU\
M8ZUJLKQFWOXX%B"L=WR*0<C''7BJ%CI6M0_$"]UN:SM%M+NWCML+>$N@0D[L
M>6 <Y'&>/6NKHI7 X2+P-?)XXFO#<0G0O.>]AM,D,MRR;22,8QG)Z]^E6O".
MD:EX8T^.PFT^U\R0MON8KUW+G)(/EE !UYP:Z]W"(78X ZFHH$9F,\@PS_='
M]T>G]:+@/BA$4>T<GJS'N:?03@$FJ:W<BK'+(JF.7[H098?XT@)I[=9E((!!
M&""*2WM5MP H"@= */MD>>5D7GJR$ 5/0 M<+XZ\+:[XDU2U.EBQBMH[>6WD
MEN)26*R@!B%"XR #CGOVJU\2-=O](T.V@T2X:WU*]N!'"ZQ^854 ECMP<\#T
MK(UKQ5J]U\)]-U70[KR=3N9(H6=57F3.UQ@CCD'M32>X&MK/A2YEU;0I[*V@
MO;;3+9X&BGNG@9B0 I#*I]*U]:L[S5O#QMI-.LIVGPMQ:3SML*]]L@7(;H0=
MM<OX*\;7.J:'X@U;5I6\FP;B-E \O;&"PX'/S9_.LSPUXQUVX\(>(QJM\S:G
M:V@O+:0PA"B,IP "H!P>^"*=F!UFFZ?XCM?!<^F7WV:\NL/!;[[DC$)&%WR;
M.6 ]%&<"LF'PGKB^&?#EE+!9F;1)U9E6[8+,H0C<&\OY6!/'!^M=/Y>I:GX-
MB-G>M::A/:HZ71C#8<J#D@C&#7.>&M4U_P 0Z#J6L7NIVVEHT;6UO'A6C@D0
ME6F9FQU8=#P!0@(]0\%:UKWA^VT_7;M+DKJ+3R>;.9"D!4A5#;1N89ST%:/P
M[\,ZEX6T2ZM=8FAGGFNC*LD3ELKM4#)('/%-\'W=]?B]LM6U6[&HPHL<]M((
MRT1/2:)PH#(PY&5-4="N-9O]"\12R>(IH;FVOI[*UFNQ$(XPI&TGY1\W.,G\
MJ-0.^HKEO!>H75Y'=Q:E?W#WUNRQW%C=*F^W<#[RLH&Y&Z@X_&NHJ0%HJO\
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
MY&>:TMY&:'[.S-"#F+^YT^[[=*U,T9I@8UCIV@:9-YVG6%K:R;=N^& *<>G
MJ>&+2+>R>S@MH([60MO@2'"-NY;(QCD]:TLT9I 8UKIGAZQCGCL].M($N$V3
M".W"B1?0X'(]JCM="T2*.9=-T&S2.=3'+B!460=P>.:W<FH'@PWF0'RW[C^%
MOJ* *.GZ-!I7F?V78V%GYN#)Y$.S=CIG'6K4L-W*FUGB"YY R-WM3_-N.]L#
M[B0<T>=<?\^O_D04 12)*-BW 'D 8(A!'TS[5-:[Q!^\S]X[=W7&>,TGG7'_
M #Z_^1!_A4-U<W:6[-';8;UW X_"F!8FMUEZX(/4$9S3HHQ&FT8_ 5'9R2RV
MJO.NUSU%6*0&.GA;1D\2-KRV*C4F&#-O;TQG;G&<#&<9HO/"FBW_ -M-W9B0
MWTB2SMYC ET^ZP(/RD?[.*V** ,/7/"&B^)&A;6K>6Z$ _=H;F15'OM# $GU
M[U->>&M-O;R"[D2>*>WB,,4EM<R0E4/\/R,..!6M13N!FR^']-N+B">Y@:>2
MW@>W1II6?,;_ '@V3\V<=3DU5_X0_1A#8Q1Q7$2Z>K+:M%=RHT2MU 8,#BMR
MB@# U7P5HFN6]O#J\5S>1VW^K66]F//J?FY/.,G/'%;D44<$*0P(J1QJ%55&
M  .@I]%+4 J"[_X]S_O+_,5/4%W_ ,>Y_P!Y?YB@"<]:*#UHH *0]*6D/2@#
M<3_5K]!10G^K7Z"BF,Q7_P!8W^\:2E?_ %C?[QI*0@HHHH *2EHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH :Z+(A5QD'J*9%;I
M$Q(W,Q&-S')QZ5+10 E+110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 5!=_\>Y_WE_F*GJ"\S]F.W&=RXS]10!/
M140FPP252C$\=P?QJ6@ I#TI:0]* -Q/]6OT%%"?ZM?H**8S%?\ UC?[QI*5
M_P#6-_O&DI""BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ J"[_P"/<_[R_P#H0J>H+O\ X]S_ +R_
MS% !<?ZV#_KI_0U/56ZD(F7:!^Z_>')QD<BK*G<H([C- "TAZ4M(>E &XG^K
M7Z"BA/\ 5K]!13&8K_ZQO]XTE*_^L;_>-)2$%%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !4%W_Q[
MG_>7^8J>HKA"\!"C)R#CUP<T /=%<C>H;!R,C.*=34<.H9>0:=0 4AZ4M(>E
M &XG^K7Z"BA/]6OT%%,9QTWBO1(YY$>_4,KD$>6_!!^E,_X2W0_^@@G_ '[?
M_"O,[_\ Y"5U_P!=W_\ 0C5>O967TVKW/GI9G53:LCU3_A+=#_Z""?\ ?M_\
M*/\ A+=#_P"@@G_?M_\ "O*Z*?\ 9]/NR?[4J]D>J?\ "6Z'_P!!!/\ OV_^
M%'_"6Z'_ -!!/^_;_P"%>5T4?V?3[L/[4J]D>J?\);H?_003_OV_^%'_  EN
MA_\ 003_ +]O_A7E=%']GT^[#^U*O9'JG_"6Z'_T$$_[]O\ X4?\);H?_003
M_OV_^%>5T4?V?3[L/[4J]D>J?\);H?\ T$$_[]O_ (4?\);H?_003_OV_P#A
M7E=%']GT^[#^U*O9'JG_  ENA_\ 003_ +]O_A1_PENA_P#003_OV_\ A7E=
M%']GT^[#^U*O9'JG_"6Z'_T$$_[]O_A1_P );H?_ $$$_P"_;_X5Y711_9]/
MNP_M2KV1ZI_PENA_]!!/^_;_ .%'_"6Z'_T$$_[]O_A7E=%']GT^[#^U*O9'
MJG_"6Z'_ -!!/^_;_P"%'_"6Z'_T$$_[]O\ X5Y711_9]/NP_M2KV1ZI_P )
M;H?_ $$$_P"_;_X5HZ;>V^L1/)ILGGHAVLP4C!_'%>-5[9X/TO\ LKPQ:Q,N
M)9%\V3ZMS_+ KEQ6&IT8IIZL[L'BZF(FTUHB?[)/_P \S^8H^R3_ //,_F*U
MJ*\\]2QD_9)_^>9_,4?9)_\ GF?S%:U%(9D_9)_^>9_,4?9)_P#GF?S%:U%
M&3]DG_YYG\Q1]DG_ .>9_,5K44 9/V2?_GF?S%'V2?\ YYG\Q6M10!D_9)_^
M>9_,4?9)_P#GF?S%:U% &3]DG_YYG\Q1]DG_ .>9_,5K44 9/V2?_GF?S%'V
M2?\ YYG\Q6M10!D_9)_^>9_,4?9)_P#GF?S%:U% &3]DG_YYG\Q1]DG_ .>9
M_,5K44 9/V2?_GF?S%'V2?\ YYG\Q6M10!D_9)_^>9_,4?9)_P#GF?S%:U%
M&3]DG_YYG\Q1]DG_ .>9_,5K44 9/V2?_GF?S%'V2?\ YYG\Q6M10!D_9)_^
M>9_,4?9)_P#GF?S%:U% &3]DG_YYG\Q1]DG_ .>9_,5K44 9/V2?_GF?S%'V
M2?\ YYG\Q6M10!D_9)_^>9_,4?9)_P#GF?S%:U% &3]DG_YYG\Q1]DG_ .>9
M_,5K44 9/V2?_GF?S%'V2?\ YYG\Q6M10!D_9)_^>9_,4?9)_P#GF?S%:U%
M&3]DG_YYG\Q1]DG_ .>9_,5K44 9/V2?_GF?S%'V2?\ YYG\Q6M10!D_9)_^
M>9_,4?9)_P#GF?S%:U% &3]DG_YYG\Q1]DG_ .>9_,5K44 9/V2?_GF?S%'V
M2?\ YYG\Q6M10!D_9)_^>9_,4?9)_P#GF?S%:U(Q"J2>@H$8KHT;;7&#Z4E.
MD<R2,QZDYIM $#_N&,H^X?OCT]ZGJ"\_X\Y?]VISUH *0]*6D/2@#<3_ %:_
M044)_JU^@HIC/G^__P"0G=?]=W_]"-5ZL7__ "$[K_KN_P#Z$:KU]5'X4?%3
M^)A171^&M(M-0TO4KJZL[B]DM=GEPV[E6;.<] ?2M6+PKIL^HZ07MKJT2]\T
M2V<TA\P%5)!!ZUSRQ,(R:?0Z(86<XJ2ZG#T5V+Z!I\]EJ#?V1?Z6;6)I$N+E
MR4<CM@@=?:JDNGZ)HMM9)K,-S<W-U$)G,4NP0HW3ZFA8B+6B=Q/"R6[5CF:*
M[)?#.FZ<=8DU!)KR&SCBE@V2>675\]??_"JT6BZ5JEM97VFI-#$;V.UN;>23
M<1N/4-]*/K,/D/ZK/Y]CEJ*Z>RT&QG\>SZ3(K_9$9P 'YX&1S4,.F:9IVB1:
MEJ\<]R;J5T@@BDV853@L3_GK5.O'8A8>75G/45L7)T&WU8/;QW%Y9-$"8B_E
MM&Q[;N^*Z,Z'X=.NZ?IHL+D&]A6;?]I/RY&<8QSTI2KJ-KIE0PSE>S1PE%=,
M^E:3I&F1WFK13W+W4KB""*79M13C<3ZU?T[PII5SK*EY)3IMQ8M=1,S89,$
M@D=<4GB8)7Z L+-NRM<XJBNFD\-1V>E:V]X&:XL63R)%;"LK'@X[Y!KF:VA4
MC.]C&I3E3MS!1115F84444 :WAC3/[6\1VEJ1F/?OD_W5Y/^'XU[D!VKS[X7
MZ7MANM3D7ESY,9([#D_K_*O0:\+&U.>K9=#Z;+J7)1YNYS$^N:O]EN=7MDM&
MTRVF=#;-&WG2*CE&<2;MHY!(7:<@=1GBQ;^+;:?4A;?8[N.%IY+9+MP@C:1%
M+%1\V[HI.=N.,9S1<>%A/)+"-1N$TR>0RS6("[68G<P#8W!2>2 >Y]:E7PS;
M+)"QFD(COY;T+@8+2(ZE?IAS^0KBT/2*Y\80K8?:Y--OHXI2@M"_E@78<_*4
M._"Y'.'*G'.*T+/6H+[0_P"T[>&9U 8- BAI ZL59, D$A@1P<=\XYK*D\&B
M?2_L%SJ4UQ!"4^R)+#&RVX3[ORD8?CC+9XK03P_$OAEM&$[JCH5::)5C.2<Y
M 4 #GL!C'% #](UM=9AN?+MI+>>VD\N2&9T;#;0P^9&9<$$=":P+CQ/J]J-0
MM6ETVXN[=K=?,AA?RX&EE5#&P+Y<@-G(*Y]!6QH'AN/0H[Q8[DNUXXD?9"D(
M5@H7*J@ ' 'XU4G\(R7D,GV[6;F>YQ&L-PT48,0202#@##<J,DT 7;"]U&'6
M/[,UB2UGDDA,\,]K"T0PK!64JS-SR"#NYYX&.:JZCKU_]HN]*CLOLD$[Q):S
M(WFW 1MK$2;@J9(. 5;H"3S@7M.T:2UO6OK^_DU"[,?E)*\:H$3.2 JC')QD
M^P]*K3^&I'FG6UU:ZM;*YD,L]K&%^9F.6VN1N4-W /<^M #6\2 >)FTW$0C$
M94;F^?S@N_;P>FWVZ@\U4TK6]:.GZ/J.JR6$UKJBQ#R[>V>)X&D7<O)D8,,\
M'A?7VJ])X2TYTWJBI>^>)_MHB7S<[LD;L="OR_0U#IGA62RCL(+S5I[ZVTX+
M]F@>)$"E5VJ25&6('KWYH GU?Q-%H]T\+V%[="&!;B:2W52L49)&3E@3RO0
MD]@>:C'BR(QRJ=-O1>).D"69\OS)69=ZD'?M *@MRPP <X/%7+_0XM0DO'DF
MD0W=JMLP7'R@,QR/?YC5:[\,1SW,]W!>2V]U)-%-%*JJWDLB>7P",'*D@@^M
M %>_\8)%I)N-.L+JZN/L\LS0A5S!Y>5;>"PSAAC"DDXXSUI;?QC:O>VMG/%)
MYD@B269"@CCED4,J8+;^<CD CYADT3^#T:Q6&TU*XM9FADAGN%56:99&+/U&
M =Q)!'3H*(O!MI!K4-_'-R@CWHT$;-(R*%#;RNY>%7(! X]S1H ZP\123Z7H
MES=!4?4971UCC)'"2-QEOE^YU^;TQSD6]$\01ZW#)+%9W,$:J'1Y2A$BGH1L
M9L'_ &6PP[BF0>&H(++2K9;F;&F2-)&W&6+(Z<_]_"?P%,T3PPFCW%S<-=M<
MS7*A&?R4BR 2<L$ #-D\L>:- *;>.[1--M;UM/O56ZC:>-':)6\D $RX+XQ\
MPX^\?2KUQXFM[:^MH6M+EX+EHT2[&P1[I" H +!FY9<E5(&>3P<4[KP1:7.F
M:7:BXPVG6XMDEDMXY2\> #PX(!.T'(Y%+?>"X+S5X[[[8Z".2&54,*.5:+;M
MVL1E =@R!@'GUHT BN?&9BU*!8]/N#I["<M=,%VR"(#<4PV0 <YW 9P<9KHK
M.]2^69HE8+%*T6XXPY'4C';.1]0:PI/"K0W'GP7,ES# LWV?3I"J19E^\"X4
MG&<^N,FM'1],GTJTL[03![>"VV2#'+RY!+Y]_F_.@#G;;QQJ+7FRXT2=XP;W
M<D)C+A8)54-DR;<88Y[DC@8K6?QEIR7]O;HDLD<PA+3@H%B,O^K!!8,<Y'0'
M&1G%+!X3A@O+B<W<S"9;I%0JN(Q.ZNV#C)PRG&?6H5\%6B:E9W<<W_'O'"CA
M[>-VE\H *=Y4E>@SMQFC0"WX@\0-H\,B6ME/>W0MI+C9"%Q&JC[S99<C.!@9
M)["JEGXL,MLS-:RW5R;B.".VMT569F@24X+O@@!B<DKTQCC)NZUH']K,9(+Z
M:QF>![:22)58O$W5?F''/((K-N_#%S8V9?0I&EO1=).CR2K'Y>(5B/\  P(*
MKT([^U&@$%YXXE\J*73;":4R&US;RHBN@EG,1RQD S\N .Q())&<7-3\7_8D
MU")+&>*X@M9Y[=[@+LF,:Y/RAMX'^\%R.E06?@HKID:W5_(+SRH TD8#!7BF
M,P89'/S-@Y["DE\ 6\UW<327\I\Z*XBSY,>\+,#N!DQN;&> 3QQ1H >(O%M_
MHURL=MIXFC_LXW9EX(W"1%VXW X^;TZE>V:N'Q=&"L)TJ_%XUW]D^R?NMZOY
M9E!)W[<;!GK4FK^%XM7DB9[N6'9;-;,$53O0LK=QP04'2I3X<@.M?VEY\GF?
M;!=[,#;N\@PX^F#GZT 0VGB^QO-0GM8XI_W:R&*10K^?Y9PX158OD'C! SVS
M3(_%\#PW'F6%U%=0/&@M"T3/(TA(0 JY7)*MU88QSBF6_@JTM[J^DCN&CCNX
MY4"Q11H\?F<L?, WDY)QD\5%9^!H;1;EEOF$\QB=98K:.,1O&6*OM48)^8YS
MUHT L6/B=Y='N[Z_LY8GBO7M(K50/,9MP55^]MW$G&<[>^<4ZX\6):Q@SZ7J
M"2)&TUU&5CW6L2G!=OGPPX.-A8G!Q3HO# 31YK.6_N)IY;HW8NF50R2[@P(
M&, @<=,<5%<^$Y+M<SZQ=-+-$T%Y)L0&XB))V=/DQDX*\C)H >WBV#^T9+6.
MPO)$6X^RBY 01M,4#J@RP/((YQCU(K-TOQU)/I<-SJ%A,)I8+5A;01KDO,[H
MN&\P@@[ <'& >2<X&N/#5L)"RS2 ?V@M^%P,!@@3;],#ZU4LO!-O:)"#?3R^
M3]F"951A8)'=!P/]O!/M1H!;L_%%M=S10FVN()W6<O%)L)C,)4.I*L1GYQC!
M(]ZK'QMIP>RQ%/Y=U##,\A,8$"R_ZO<"V3DG'RAL=Z=-X24S^?::C/:SF:>0
MNJ*V5F(+I@C_ &1@]14*^![-+C3Y4F/^AP0P-OMXW:58AA3N924/KMQFC0#1
ML?$,>H:Q-8PV=R$B=T^TG84+(<,,!BR\YP64 XX)R,YEEXPN)(IQ<:1<R7*W
MEQ#%! 8]S11'!D.9,#&5!YR2>!5VU\,K!XC;5Y;QYY,OY:F)%8;N,,Z@,X X
M 8G''I4,GA,B22:SU.>VF:>:5)%C1BBRX,D?(Y!90<GD8% %7Q#XON-/AM)]
M)M!=6UUI]Q>+,V-HV1AER"P;'/(QGD>]6E\801V=Q)>V-W:SP>5BVE,8:7S<
MA-IWE1D@_>((QSBGZEX2MK^PM;.*XFM8K:UEM%V@,6C= A!SWX!S[4NH^$[7
M4OM;2RMNN4@4;HU=4,)8JVT@@_>Y!XXHT F7Q-:-X9N-;,<HAM4D::$;6D5D
MR&7@E2001P<'UJJ?&$0C16TK4!=O.L*6A6,2-N0NK9W[0"JGJ<CH0*?=>''7
MP1>:)92(TT\$B+(46)2S9YP@PHY["BU\+^7/;W-Y?S75U#<+.9651NVQLBI@
M#& ')SU)H D3Q59F\DBF@N(+=3*J7;A?*E:('S ,$M\N&&2 #M.,U1@\9.VL
M""ZTRYM+>2.W,0E5"[M+*4#95R-O3C[PYR*MKX3@-Y(9[F66S8S-%9D +$TN
M?,.1R<[FZ]-QJL?!CR,\D^LW4LP2%+=S&G[CRGWH0,88YZYZT: 6Y?%,.]HK
M.PN[RY$\L(MX0@8^5C>^68#:-R]\G/2L[3_&<D^HW":C:26-O%/,JM+&,F..
M)9,MAR5(W="OH."#5N/PF\$:R6NK7$5Z)YI3=>6A)\W!==N-N,JN/3%(G@RV
M%Y)+<7=Q<12>86BEQ\WF1+&^6QDY"@_6C0!3XQACMV:?3+^&XWPJEJRQF202
ML5C88<K@D$<D$8Y K5TG4TU:S,Z0RV[I(T4D,NW=&ZG!!*D@_@2*RX?"0#))
M>ZA<7=Q'+ RRLBKA(6+(F ,=2<GJ<^U:VFZ:FFI<+&[N)[F2X.['!=LD?2D!
M=HHHH **** "JM_)L@VCJQQ5HUE7DGF7! Z+P* *]+112$07G_'G+_NU.>IJ
M"\_X\Y?]VISU- !2'I2TAZ4 ;B?ZM?H**$_U:_044QGS_?\ _(3NO^N[_P#H
M1JO5B_\ ^0G=?]=W_P#0C5>OJH_"CXF?Q,W-'UI-,T'5;=)IH;JY\OR7CR#Q
MG/(Z=:30-<-IXFMM1U:XGF6)64NS%V *D <^YK$HK-T8N_F:*M-<MNATT?B*
M#4-(O-,UV:>1"YEM+@Y=D;/ /M2R:EH>M6UB^LR7-O=6L:POY,>X3(O3_=/^
M-<Q14?5X]-"_K,WI+4[%?$VFZ@=9CU!IK2&\CBB@\N/>45,]?SJB^M6&EZ;;
MV6BM-<A;I;J::9-FXKT4#^M<Y10L/!/R[#>*FUY]SLEUW0;?6[C7;>2[:[EC
M8BU:/"J[#!^;/2LV#4]-U#0X=.UEYK=K61GAGA0/D,<E2/Z^U<_11]7C;=@\
M3)]%8OZQ)IKWBC1HI$@1 I:4\R,.K8[?2MX>(]/'BC2+_,GD6=LL4OR<[@I'
M [UR5%4Z,9*S(C7E%W1TSZMI&K:7'9:L]Q;/:RNT$\4>_<C$D@KV-6HO%.G1
MW[I&DL=C#I[VEME<LS$@[CZ9KCZ*GZO#8OZU,ZH>)[:?P1/IEV&^W[5C20+D
M.BD$ GV'%<K116D*<87Y>IE4JRJ6YN@4445H9!2JK.ZJ@RS' 'OVI*Z+P/I?
M]I^*(-ZYBM_WS_AT'YXJ*DU"#D^AI2@ZDU!=3U70--&DZ#:V8',<8W>[=3^M
M:/>@4M?,-\SNS[*,5&*2/.],\2:Q:7][=ZQ<BXA6.^=;:+&U?*N$C0 [01U/
M4GKFMO\ X2+4TW:?)9VO]KFZ2W0+*Q@.Z,R[MV-PPJMVZ@=JU5\.:6K.?LN=
MZ3(P9V((E</)P3W8 ^W:HU\+:8NG-9B.<JT@E,QNI#-O' ;S=V\$ 8'/3CI0
M44=,\27FJ:M;6<=G!&/)>2[9I3E2DAC(0 <\C/../>G^(_$\N@NZ+:"X9H/,
MMUWD&1@X#+T[!@?SK3LM$L-/FCEM(/+>.'R =Q.4W;CG)Y))))/))ZU)=Z79
MW]U:W%W ));1V>%B3\I*E3QWX/>D!RDWBC5;S6H3HJ6SVA@NF"SR%5D$9B^8
MX!.068 #CFI'\=LVI64-O9EHIHK>25=DC2#SL8V[5*X7.3N(XS6]:^'-,LHK
M>.VMO+2V@DMX@)&X1R"XZ\Y*CD\TT>&-,66UD2*5/LL<<:(EQ(J,J?<WJ&P^
M.Q;-,#"N?&=];V G:UM4-Q>S6MKEI'&(F=69PBDC.SC /7FK]SXCO6TG1KC3
MK!3<:K,(A%=,T8AS&[DGC/&SIBM";P[ITU@MIY<L4:S/.C0W#QNCNQ9B'4AA
MDL>A[XZ5#JGABUU.UTVUWR06^GSB5%B=E8@1L@ <,&4_-G.<\4: 8VI^-[C3
M]&BOS;6J;8W>XB>5V8E"00@13Q\IPS8'(]Z34/$&N3:K%'I\5I!:1:O'92,\
MC%Y04#GC;@##>N>*V;GPAH]U!'#);RI&D!MR(KF2/S(SG*OM8;QDD_-GDGUJ
MPWAW36A:,PN%:Y6Z)69PWFJ H;(.>B@8Z'\31H!1\/\ B&ZU;4+FVO+>&V:-
M=PAW.)4^;!#!E /;E21GZC.7<^.9[6ZU"*2VM9OL]G/=1+#*Y_U6/E9BNTYW
M#[I.,'-='IWA^PTJX:>T28N4\M3-</+Y:9SM0,3L7(' P.!Z"J?_  A>BGS
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
M$]#_ .@='_WV_P#C1_PB>A_] Z/_ +[?_&C^T*?9A_9=7NCRJBO5?^$3T/\
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
MM*LVLYEAL+;S#&P3$*]<'':J4DWNR'%I;(;_ &9I/_/O!_WU_P#7H_LS2?\
MGW@_[Z_^O5>**V6% _A]RP4!O]'AZX_WJDT_3;9HYGN--AC+SLR))"F0O&.F
M:IZ=7]Y*NW9)?<2?V7I7_/O!_P!]?_7IT<R64RPM*IMW.(FW?</]T^WI^7I4
MO]F6'_/A:_\ ?A?\*IZMI]E'I%T\=G;HZQDAEA4$'ZXI1<9.PY*45=6T-:B@
M_>/UHK$W"BBB@ HHHH **** "BBB@ HHHH S;HA]0F\R3RT@M=P;/W2Q()^N
M%Q^=4+9)()(7/^B^9A=[@X!VY)Y/)/3GH!6I>QA)UN67?%L,<ZXSE3R#^!'Y
M$U"L-Q"7BLXHIK23#1^;)N51CD=^IKIC)<MCDE%\UR&>1I[*.Y#;+@2^2D\;
M%01G&X^H]O6K@_=ZX5'_ "VM]S\8Y5@ ?R8_E4(ADNP[ZFIMX(P-L0<!3CJ3
M[<<>U0V^H+)J$TIMYBX0*D:IR(^N[\3VZ\"AJZ:0)I--FS14<,T=Q$)(7#*>
MXJ2N;8ZD[A1110,**** "J.HP2S>6R*LL<88O$6*[^,<'Z9_.KU(Q"C+8 ]Z
MJ+L[DR2DK,R%%HZXBOA'!,JRM"<;B  ?J. ,CVJQ9M)/?-=K&8[>6( %SRV"
M=I [<,>OM56&YM[J"1(])=HBY,>U %D.<9SQCZUJ6DR7%I'+&FQ6'"_W>V*V
MG=(PA9O<S/LZPRR17[!'E#R+<J_HP/(.,$?+[4\NA60I*;Z>Y4QYC( "@<^P
MQFIM4N88%AWVHNY6?]W&!D@@9S^GZBFQ7$ U!&^PO"\WR^:Z@$G&<8^G>FKM
M7):2E:XZ2VNY=/MHSY9EC*F2/.U7P.F1GO5>/[-(B^3>?91.@1X7P6...,]#
MU%:_3VK(2[MII+F)-+>2$L09(XP5D8<'GCTZU,)-HN<4FM2: O/?Q36\16VC
MC:+>Q^\!Z#J.>]:55K"5);4>7%Y(1BACR#M(ZCBK-9S>MC2FE:Z"BBBH- HH
MHH **** "BBB@ HHHH Q=0_Y"'_;6+_T%JT;*-/L%OE%_P!4O\(]*SM0_P"0
MA_VUB_\ 06J=I+Z/3['^SX8Y2RJ)/,; "X'-=,DW%(Y(M*;8^_O8+52D8C,_
M'RE<A03U/L/K3#<W$)C>[M;>. L%DD5LXSWZ<#Z^M5Y8YIM09;E?LS2 "-E&
MY78 X.?4'VJ1(VLDE:4+ )(Q&L:,7,C_ -X#_/O1RI)(7-)MLN)=64X=;>6"
M1PI.$()%940?SK6220R-(87)( P2C>@JP#!9PV+2(ML/)=3NXP<#J:@3[UD/
M]F#K_N-515KV%)WM<U[#_D'6_P#UR7^56*KV'_(.M_\ KDO\JL5RRW9UQ^%!
M1112*"BBB@ HHHH **** "BBB@"G/_R%;+_=E_D*A:71X;PR/+;)<*QRQ< @
MU-/_ ,A6R_W9?Y"G//>K(1'9HR@\-]HQD?3;7,W:_J=*5[>A2+: S%FDM"2<
MD^8/\:M6']G9?^SC">!O\ML_G3UGO2K;K-%('RCS\Y.?IQ4L+S2*3<0B(YX
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
M6S1VT=ND:D% 1^[Z],>O'Y42G*+T5QPA&2NW8TJ,UE1:=<QP*A8?*X&<Y.S
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
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@!.O6C ].O6EHI
M60[L3'M1M&<X&?7%+119=@NQ,#C@4@11T4#Z"G44<JOL',^XFT<<#CIQ0%4<
M@ 'V%+11RH.9]Q H'0 ?04M%%"26P784444Q!2'I2TAZ4 ;B?ZM?H**$_P!6
MOT%%,94O+7?F2,?-W'K6?6Y5"\M<9EC''\0]/>@"E1112$%%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4AZ4M(>E &XG^K7Z"BA/]6OT%%,8M&*** *4FGJSED?:#SC&:;_
M &=_TU_\=_\ KT44@#^SO^FO_CO_ ->C^SO^FO\ X[_]>BB@ _L[_IK_ .._
M_7H_L[_IK_X[_P#7HHH /[._Z:_^._\ UZ/[._Z:_P#CO_UZ** #^SO^FO\
MX[_]>C^SO^FO_CO_ ->BB@ _L[_IK_X[_P#7H_L[_IK_ ..__7HHH /[._Z:
M_P#CO_UZ/[._Z:_^._\ UZ** #^SO^FO_CO_ ->C^SO^FO\ X[_]>BB@ _L[
M_IK_ ..__7H_L[_IK_X[_P#7HHH /[._Z:_^._\ UZ/[._Z:_P#CO_UZ** #
M^SO^FO\ X[_]>C^SO^FO_CO_ ->BB@ _L[_IK_X[_P#7H_L[_IK_ ..__7HH
MH /[._Z:_P#CO_UZ/[._Z:_^._\ UZ** #^SO^FO_CO_ ->C^SO^FO\ X[_]
M>BB@ _L[_IK_ ..__7H_L[_IK_X[_P#7HHH /[._Z:_^._\ UZ/[._Z:_P#C
MO_UZ** #^SO^FO\ X[_]>C^SO^FO_CO_ ->BB@ _L[_IK_X[_P#7H_L[_IK_
M ..__7HHH /[._Z:_P#CO_UZ/[._Z:_^._\ UZ** #^SO^FO_CO_ ->C^SO^
MFO\ X[_]>BB@ _L[_IK_ ..__7H_L[_IK_X[_P#7HHH /[._Z:_^._\ UZ/[
M._Z:_P#CO_UZ** #^SO^FO\ X[_]>C^SO^FO_CO_ ->BB@ _L[_IK_X[_P#7
MH_L[_IK_ ..__7HHH /[._Z:_P#CO_UZ/[._Z:_^._\ UZ** #^SO^FO_CO_
M ->C^SO^FO\ X[_]>BB@ _L[_IK_ ..__7H_L[_IK_X[_P#7HHH /[._Z:_^
M._\ UZ/[._Z:_P#CO_UZ** #^SO^FO\ X[_]>C^SO^FO_CO_ ->BB@ _L[_I
MK_X[_P#7H_L[_IK_ ..__7HHH /[._Z:_P#CO_UZ/[._Z:_^._\ UZ** #^S
MO^FO_CO_ ->C^SO^FO\ X[_]>BB@ _L[_IK_ ..__7H_L[_IK_X[_P#7HHH
M/[._Z:_^._\ UZ/[._Z:_P#CO_UZ** #^SO^FO\ X[_]>C^SO^FO_CO_ ->B
MB@ _L[_IK_X[_P#7H_L[_IK_ ..__7HHH /[._Z:_P#CO_UZ/[._Z:_^._\
MUZ** #^SO^FO_CO_ ->C^SO^FO\ X[_]>BB@ _L[_IK_ ..__7H_L[_IK_X[
J_P#7HHH /[._Z:_^._\ UZ/[._Z:_P#CO_UZ** +R_*H'H,4444P/__9

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
<SEQUENCE>14
<FILENAME>performancegraph.jpg
<TEXT>
begin 644 performancegraph.jpg
M_]C_X  02D9)1@ ! 0$ 8 !@  #_X1#^17AI9@  34T *@    @ ! $[  (
M   1   (2H=I  0    !   (7)R=  $    B   0U.H<  <   @,    /@
M   <Z@    @
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M                                                 $IE;FYI9F5R
M($AO9F9M86X    %D ,  @   !0  !"JD 0  @   !0  !"^DI$  @    ,S
M-0  DI(  @    ,S-0  ZAP !P  " P   B>     !SJ    "
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M                            ,C R,3HP,CHP-" Q,CHR-SHR.0 R,#(Q
M.C R.C T(#$R.C(W.C(Y    2@!E &X ;@!I &8 90!R "  2 !O &8 9@!M
M &$ ;@   /_A"R-H='1P.B\O;G,N861O8F4N8V]M+WAA<"\Q+C O #P_>'!A
M8VME="!B96=I;CTG[[N_)R!I9#TG5S5-,$UP0V5H:4AZ<F53>DY48WIK8SED
M)S\^#0H\>#IX;7!M971A('AM;&YS.G@](F%D;V)E.FYS.FUE=&$O(CX\<F1F
M.E)$1B!X;6QN<SIR9&8](FAT=' Z+R]W=W<N=S,N;W)G+S$Y.3DO,#(O,C(M
M<F1F+7-Y;G1A>"UN<R,B/CQR9&8Z1&5S8W)I<'1I;VX@<F1F.F%B;W5T/2)U
M=6ED.F9A9C5B9&0U+6)A,V0M,3%D82UA9#,Q+60S,V0W-3$X,F8Q8B(@>&UL
M;G,Z9&,](FAT=' Z+R]P=7)L+F]R9R]D8R]E;&5M96YT<R\Q+C$O(B\^/')D
M9CI$97-C<FEP=&EO;B!R9&8Z86)O=70](G5U:60Z9F%F-6)D9#4M8F$S9"TQ
M,61A+6%D,S$M9#,S9#<U,3@R9C%B(B!X;6QN<SIX;7 ](FAT=' Z+R]N<RYA
M9&]B92YC;VTO>&%P+S$N,"\B/CQX;7 Z0W)E871E1&%T93XR,#(Q+3 R+3 T
M5#$R.C(W.C(Y+C,U,SPO>&UP.D-R96%T941A=&4^/"]R9&8Z1&5S8W)I<'1I
M;VX^/')D9CI$97-C<FEP=&EO;B!R9&8Z86)O=70](G5U:60Z9F%F-6)D9#4M
M8F$S9"TQ,61A+6%D,S$M9#,S9#<U,3@R9C%B(B!X;6QN<SID8STB:'1T<#HO
M+W!U<FPN;W)G+V1C+V5L96UE;G1S+S$N,2\B/CQD8SIC<F5A=&]R/CQR9&8Z
M4V5Q('AM;&YS.G)D9CTB:'1T<#HO+W=W=RYW,RYO<F<O,3DY.2\P,B\R,BUR
M9&8M<WEN=&%X+6YS(R(^/')D9CIL:3Y*96YN:69E<B!(;V9F;6%N/"]R9&8Z
M;&D^/"]R9&8Z4V5Q/@T*"0D)/"]D8SIC<F5A=&]R/CPO<F1F.D1E<V-R:7!T
M:6]N/CPO<F1F.E)$1CX\+W@Z>&UP;65T83X-"B @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" *(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @( H@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @"B @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" *(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @( H@(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @"B @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" *(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @( H@(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @"B @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" *(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @( H@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @"B @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" *(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M( H@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @"B @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" *(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @( H@(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M"B @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" *(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
M(" @(" @(" @(" @(" @(" @(" @( H@(" @(" @(" @(" @(" @(" @(" @
M(" @(" @/#]X<&%C:V5T(&5N9#TG=R<_/O_; $, !P4%!@4$!P8%!@@'!P@*
M$0L*"0D*%0\0#!$8%1H9&!48%QL>)R$;'24=%Q@B+B(E*"DK+"L:("\S+RHR
M)RHK*O_; $,!!P@("@D*% L+%"H<&!PJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ
M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*O_  !$( G<#+P,!(@ "$0$#
M$0'_Q  ?   !!0$! 0$! 0           0(#! 4&!P@)"@O_Q "U$  " 0,#
M @0#!04$!    7T! @, !!$%$B$Q008346$'(G$4,H&1H0@C0K'!%5+1\"0S
M8G*""0H6%Q@9&B4F)R@I*C0U-C<X.3I#1$5&1TA)2E-455976%E:8V1E9F=H
M:6IS='5V=WAY>H.$A8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJLK.TM;:WN+FZ
MPL/$Q<;'R,G*TM/4U=;7V-G:X>+CY.7FY^CIZO'R\_3U]O?X^?K_Q  ? 0 #
M 0$! 0$! 0$!         0(#! 4&!P@)"@O_Q "U$0 " 0($! ,$!P4$!  !
M G<  0(#$00%(3$&$D%1!V%Q$R(R@0@40I&AL<$)(S-2\!5B<M$*%B0TX27Q
M%Q@9&B8G*"DJ-38W.#DZ0T1%1D=(24I35%565UA96F-D969G:&EJ<W1U=G=X
M>7J"@X2%AH>(B8J2DY25EI>8F9JBHZ2EIJ>HJ:JRL[2UMK>XN;K"P\3%QL?(
MR<K2T]35UM?8V=KBX^3EYN?HZ>KR\_3U]O?X^?K_V@ , P$  A$#$0 _ /I&
MBBJM_J-KI=N)[V0QQE@@(1F)8]  H)H M45C?\)7I/\ SUN/_ *;_P"(H_X2
MO2?^>MQ_X!3?_$4 ;-%8W_"5Z3_SUN/_  "F_P#B*/\ A*])_P">MQ_X!3?_
M !% &S16-_PE>D_\];C_ , IO_B*/^$KTG_GK<?^ 4W_ ,10!LT5C?\ "5Z3
M_P ];C_P"F_^(H_X2O2?^>MQ_P" 4W_Q% &S16-_PE>D_P#/6X_\ IO_ (BC
M_A*])_YZW'_@%-_\10!LT5C?\)7I/_/6X_\  *;_ .(H_P"$KTG_ )ZW'_@%
M-_\ $4 ;-%8W_"5Z3_SUN/\ P"F_^(H_X2O2?^>MQ_X!3?\ Q% &S16-_P )
M7I/_ #UN/_ *;_XBC_A*])_YZW'_ (!3?_$4 ;-%8W_"5Z3_ ,];C_P"F_\
MB*/^$KTG_GK<?^ 4W_Q% &S16-_PE>D_\];C_P  IO\ XBC_ (2O2?\ GK<?
M^ 4W_P 10!LT5C?\)7I/_/6X_P# *;_XBC_A*])_YZW'_@%-_P#$4 ;-%8W_
M  E>D_\ /6X_\ IO_B*/^$KTG_GK<?\ @%-_\10!LT5C?\)7I/\ SUN/_ *;
M_P"(H_X2O2?^>MQ_X!3?_$4 ;-%8W_"5Z3_SUN/_  "F_P#B*/\ A*])_P">
MMQ_X!3?_ !% &S16-_PE>D_\];C_ , IO_B*/^$KTG_GK<?^ 4W_ ,10!LT5
MC?\ "5Z3_P ];C_P"F_^(H_X2O2?^>MQ_P" 4W_Q% &S16-_PE>D_P#/6X_\
M IO_ (BC_A*])_YZW'_@%-_\10!LT5C?\)7I/_/6X_\  *;_ .(H_P"$KTG_
M )ZW'_@%-_\ $4 ;-%8W_"5Z3_SUN/\ P"F_^(H_X2O2?^>MQ_X!3?\ Q% &
MS16-_P )7I/_ #UN/_ *;_XBC_A*])_YZW'_ (!3?_$4 ;-%8W_"5Z3_ ,];
MC_P"F_\ B*/^$KTG_GK<?^ 4W_Q% &S16-_PE>D_\];C_P  IO\ XBC_ (2O
M2?\ GK<?^ 4W_P 10!LT5C?\)7I/_/6X_P# *;_XBC_A*])_YZW'_@%-_P#$
M4 ;-%8W_  E>D_\ /6X_\ IO_B*/^$KTG_GK<?\ @%-_\10!LT5C?\)7I/\
MSUN/_ *;_P"(H_X2O2?^>MQ_X!3?_$4 ;-%8W_"5Z3_SUN/_  "F_P#B*/\
MA*])_P">MQ_X!3?_ !% &S16-_PE>D_\];C_ , IO_B*/^$KTG_GK<?^ 4W_
M ,10!LT5C?\ "5Z3_P ];C_P"F_^(H_X2O2?^>MQ_P" 4W_Q% &S16-_PE>D
M_P#/6X_\ IO_ (BC_A*])_YZW'_@%-_\10!LT5C?\)7I/_/6X_\  *;_ .(H
M_P"$KTG_ )ZW'_@%-_\ $4 ;-%8W_"5Z3_SUN/\ P"F_^(H_X2O2?^>MQ_X!
M3?\ Q% &S16-_P )7I/_ #UN/_ *;_XBC_A*])_YZW'_ (!3?_$4 ;-%8W_"
M5Z3_ ,];C_P"F_\ B*/^$KTG_GK<?^ 4W_Q% &S16-_PE>D_\];C_P  IO\
MXBC_ (2O2?\ GK<?^ 4W_P 10!LT5C?\)7I/_/6X_P# *;_XBC_A*])_YZW'
M_@%-_P#$4 ;-%8W_  E>D_\ /6X_\ IO_B*/^$KTG_GK<?\ @%-_\10!LT5C
M?\)7I/\ SUN/_ *;_P"(H_X2O2?^>MQ_X!3?_$4 ;-%8W_"5Z3_SUN/_  "F
M_P#B*/\ A*])_P">MQ_X!3?_ !% &S16-_PE>D_\];C_ , IO_B*/^$KTG_G
MK<?^ 4W_ ,10!LT5C?\ "5Z3_P ];C_P"F_^(H_X2O2?^>MQ_P" 4W_Q% &S
M16-_PE>D_P#/6X_\ IO_ (BC_A*])_YZW'_@%-_\10!LT5C?\)7I/_/6X_\
M *;_ .(H_P"$KTG_ )ZW'_@%-_\ $4 ;-%8W_"5Z3_SUN/\ P"F_^(H_X2O2
M?^>MQ_X!3?\ Q% &S16-_P )7I/_ #UN/_ *;_XBC_A*])_YZW'_ (!3?_$4
M ;-%8W_"5Z3_ ,];C_P"F_\ B*/^$KTG_GK<?^ 4W_Q% &S16-_PE>D_\];C
M_P  IO\ XBC_ (2O2?\ GK<?^ 4W_P 10!LT5C?\)7I/_/6X_P# *;_XBC_A
M*])_YZW'_@%-_P#$4 ;-%8W_  E>D_\ /6X_\ IO_B*/^$KTG_GK<?\ @%-_
M\10!LT5C?\)7I/\ SUN/_ *;_P"(K2LKVWU&S2ZLY/,ADSM;:1G!(/!Y'(-
M$]%%% !6/XA_YA?_ &$8?ZUL5C^(?^87_P!A&'^M &Q1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !6
M-X4_Y%V/_KO/_P"CGK9K&\*?\B['_P!=Y_\ T<] &S1110 5C^(?^87_ -A&
M'^M;%8_B'_F%_P#81A_K0!L4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 5
MXS??M0>"K#4+BTDTW79'MY6B9DMX=K%3C(S*#CCN*]F/0U\S_ #Q'H?A_P 5
M>-SK^KV&FK-<)Y?VRY2+S,/+G;N(SC(Z>M):RMY7_(?V;^:/</!7Q%\-?$"T
MEF\-WWFO!CSK>5"DL6>F5/;W&1[UU%?-?P>%OJ_[1_B?6/#$170UCF_>1KMC
M.YEV\>Y5F'L*IZ3\4_B]XJNM9T/PC;K?WMO>NWV[R8$^S0AB%C&X!.<'ELD]
MNF:K1J-ENK_U^8K6;N]G8^H**\9\<?$_Q5INI>'?!7ABSMY/%NIVL4EW+< %
M+9F7G '&<AB3R !T.:PM3\=?%3X2ZMIDWQ&N]-U[1K^;RWEM(PK0XZ@%8TYQ
MS@J0<8R*$KNWG872_E<]E\2>-_#OA"XL(?$6HBSDU&3RK53$[^8V0/X5./O#
MDX'-;U?+/[1%OXHD\=:%=3:I:2Z7=S Z)&J -;G$6XO\G.6(/5N/3I7K2^(?
M%7PS^%VJ:U\3M2L];U"";-M]B4(KA@JI&<1I_%DD[3@>M)?!S/\ K;3U*:]Y
M175?Y_@>F45\^VNL?'?7/#(\::??Z/;:>T1N8M($*[Y8ASQE">1S_K ?I7I'
MPD^(G_"R/!8U.>!+:^MY3;W<49.W> #N7/8@@X[<BGRO7NB;K3S-OQKXPT_P
M)X7GU[5XKF:U@=$9+5%9R68*,!B!U/K5WP[KMKXF\.6.M:>LJ6U]"LT:S* X
M![$ D9^A->??M'?\D3U+_KO;_P#HU:Z'X1?\D?\ #/\ UX)1'6,GV:_():-+
MNG^9V5%>;^.+?XM:EX@DM? EYHVD:4D:%+R[&Z61^=PP5< =/X1]:Y[X=?$#
MQG;?%2Z^'WQ$EL[Z\C@,L5[;(%W':'QPJ@@J?[H(QWI1]YV_K0;T5SJ_#?Q1
M7Q#\5=<\%C23;_V2C/\ ;#<[O-VLH(V;1M^]ZGI7?5\M:;=^*8/VE?&-OX&M
M+6;4[LRQ>?>,1%:IN0F1L=>@ 'J1P>E==X1^(GCOPU\6X/ OQ.N+346OP#;W
MMO&J8)!VD;54%25(Y4'/M3A[T(=VOO83]V4NR?W(]WHKP/4O'WQ#\;_$[6?"
MW@'5M(\/II$C(/MR@RW.T[6(#(^>>>%&!CGFO8/![>)&\,P#QJEJNL*SK,;0
M_NW 8[6'U&/\!26L>8)>[+E(/'/C?3?A_P"&FUO68;J:V658MEJBLY+=.&91
MCCUK5T35[?7]!L=7L1(+:^@2>(2##!6 (R.>>:\O_::_Y(])_P!?T/\ 6L_Q
M+XKUGP;^S#X;U3PY=BTO?LME&)?*23"E!D88$=O2E%KDE)]&E]Z&UJDNS?W'
MMU%?/.M^,?C/+X)B\>69TO2M%AB28Z>466>:(X_>/N3H>ORLIP>E=[_PMV"'
MX&1>/KFT4S/#M%JK8#3[]FT'LNX$^N*J2Y4V^@EJTEU/2:*\&\/7WQY\1Z9:
M^*[._P!#2PNE$L.D2Q*I>,]"#LR,]1F0?TKWA<[1NZXYIN+6XKI["T445(PH
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "L;PI_R+L?_ %WG_P#1SULUC>%/^1=C
M_P"N\_\ Z.>@#9HHHH *Q_$/_,+_ .PC#_6MBL?Q#_S"_P#L(P_UH V****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH #T-?*WP5\ >&?'7BOQBOBK3/MXL[E
M3!^_DCV;GDS]QAG[HZU]4U0TW0=(T:2>31]*LK![EM\[6MND1E;GEBH&X\GK
MZT1LI7?;_(;?NV\T-T7P_I'AO3_L6@:=;:?;9W&.WC"ACZG'4^YKQ']FC_D/
M>._^OV/_ -"EKW^J&G:%I.CR7$FD:796#W3[YVM;=(C*W/+%0-QY/)]::=I-
MOM;\5_D2U[O*N]SP7XEW;^ /VDM%\:ZM;3-HD\ B>XC3<$.QD8?4 AL=QG%4
M?C%XZTGXN_V#X1^'SRZM<R7HFDE6WDC6/"E>=Z@X^8DG& !7TC>65KJ%I):W
M]M#=6\@VO#/&'1QZ$'@U4TGP[HF@JXT/1[#31(<N+.U2'=]=H&:4=DI;)_K<
MIMWNMVK?H>$_M)6<FDVO@:^=6DM--G,4KJ.X$9'YA&_*M[XHZM8?%GX'ZG<^
M!)9-46QNHWD5('1B4P6 5@"2%;/'IQ7L5[8VFIV<EIJ-K#=VTHQ)#/&'1QZ%
M3P:CTS2=.T6S%IH]A:Z?; EA#:PK$@)ZG:H I-<T6GWO\]/\@6C3716^6O\
MF>(>&OV@/!VF?".SM+JYF76;+3A;?8/L\A,CHFT8<#;@X!Y/%;'[-7AG4-!^
M'5Q=ZI ]N^J71N(HG7#>6%"AB#TS@GZ8KTI_"'AJ35?[3D\/:4^H;MWVMK*,
MRYQC._;G./>MBM.:[E)[O_AR+:**V1Y9^T=_R1/4O^N]O_Z-6L3X<?&OX?Z'
M\.=!TG5-?\B]M;1(IHOL=PVUAVR$(/X&O9=1TRPU>Q>RU:RM[ZUDQO@N8ED1
ML'(RK @\UB#X<^" 01X.T $="-+A_P#B:B.ET]F[E2UL^Q\_?$O5K76OC?J&
MB_$KQ#JNC>%8H%:T2T5BD@VJRG:%8'+;CNVGE<<8XS_A#:^'[3]H^TC\'SWU
MSHWV>;[//?*!)+^Z(9N%7C<"!P.E?4FJ^'M%UV../6]'L-12(YC6\M4E"'V#
M XI8] T>+4HM1BTFQ2^AB\F*Z6V02I'_ ' V,A>3P..:</=M\_G?N*=YK[OP
ML?-^C^,;'P-^TMXOU;6H;@:7)(]M<7<43.ML692K.%!."5QZ_6K1UBW^+7[3
MNBZCX666?2M&BC:6[,3("$+/G#8(!9@HR :^AD\/Z-'<WEQ'I-BDU^,7<JVR
M!K@?]-#C+?CFG:5HFE:%;M!HFF6>G0LVYH[.W2)2?4A0!FB'NJ%_LK0<_>YK
M?:W/GKXHWWP<\2:GJ]Q?:A?:+XJLI9(B]O;R9FEBRJYPK(02!SE3C&2*]%_9
M_P!4\0:O\*[>Y\32SSR>>Z6LUQDO)" ,$D\MSN /H*[B^\)^'=3U!+_4M TN
M[O$QMN+BRCDD7!R,,1D<\UJJJH@1%"JHP !@ 4H>[%KN$_>DFOZ\CR+]IK_D
MCTG_ %_0_P!:Y?XF_P#)I/AS_KC8_P#H%>]ZGI.G:U9FSUFPM=0MBP8P74*R
MH2.AVL",U'=Z%I%_I*:7?:597.GH%"VDUNCQ*%^Z A&!CMQQ4V]R4>[3^XKF
M]Y/LFOO/.=?_ .35&_[%R+_T4M>=PZ%>Z]^QE:QZ;"T\UK.]R8T&69%G?=@=
M\ D_A7T?)IEA-I9TR:RMI+ Q^2;1HE,13&-NS&-N.,8Q2Z?IMCI-C'9:59V]
ME:QYV06T2QHN3DX50 .3FKJ/G<WW:?W-LF'NQBNW^5CQ7P=\?O".G?#72+%F
MNKC7;6TBM%TN*W<O-(H" *^"N"0.^>>G:NL\3?%^W\-?$[1/!TNCS3/JBQ%[
MH3!?),C%5 7'S<CGD8]^E=I;^&="M-6?5+71-.@U"08>[CM$65OJX&3T'?M4
MUQHNEW>J6^I76FV<]]; B"ZD@5I8@>NUR,K^!JG+FDI/O=DI6CRKMH7:***@
MH**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ K&\*?\B['_UWG_\ 1SULUC>%/^1=
MC_Z[S_\ HYZ -FBBB@ K'\0_\PO_ +",/]:V*Q_$/_,+_P"PC#_6@#8HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **Y[Q;X2_P"$LMK>'^W]<T3R'+;]&O?L[29&,,<'
M(KQGX4:#J'BIM?O-<\?>+XH]$U1X(PFLL(WC3G,FX'/3GH,4+5V?];?Y@]%H
M?0]%>9R_'CPO&SW$>G:_/H\<AC?7(=-9K)2#C_69SUXX7O63\9/BEJ7AFR\/
MOX2%ZT=_<0S-?P6B36]Q V[]RK-G]XV 0  <=Z.WGH'?R/8J*X^;XCV5IX5M
M-9O=#\06\MY(\5OI;Z:QO9'7/'E*3C(7()(&,4WPE\3=(\7:Q<Z.ECJNCZM;
MQ^<]AJ]IY$QCX^<#)&.1WS[4:ZH.ESLJ*\>_9S)/AOQ,">!K]QC_ +Y2F?%1
MM3U+XP^"_#EKX@UC1[+48I_M!TJ]:!FVC(/'!/'<'O3MK%+K;\5<'IS/M?\
M.Q[)17C?A*_UCPS\<YO \?B/4/$>D-IQNY'U*83SVDF>AD SZ<''WAQZ[^H_
M&SPY8WUU';Z?KFI65C(8KS5+#3VEM+9A]X/)D=.^ :6ED^__  P:W:[?\.>B
MT5XW\7_BO?\ A_3?#L_@[[:\.HW$4YOX+-)8)X6W?N59L_O#@': #CN*ZZ[^
M*.G:=HNB:CJFBZW8?VU?BP@M;NU6*>*0D@&1&?A>,Y&3@CBFDW]]OF#T^ZYV
MU%<[K'C;3M$\9:)X:NX;I[S6A(;>2-%,:;!D[R6!'M@&N6\2?'GPAX5UC4]+
MU1=0^VZ=/'"T,4*L9BZ[MR?-C !Y+;?;-):VMU_X8#TNBN&U?XMZ!HWB:Y\/
MSVFJ7.I0VR7$5O9VGG/<[QD+&JDDL!UR !ZUI^"?'VC^/+.ZFTA;JWGLY?)N
MK.]A\J:W?T9<D=CT)Z&A:["N=-17DGQXO]3MXO"5EI>KZAI2ZCK*6T\NGW+0
MR%&&"-P^N><C-9C3ZY\-OC-X:\.6OBC5M?TK75?S[?6)Q<30D<;P^ 0.,XZ<
M-UHC[SMW=OPN.6BOV5_T/;J*\]U;XS^'],U2[M+;3M<U>+3Y#'?WNF:>9K>S
M8?>\Q\CIWQGH:T-=^*?AGP_H&C:Y=7$DVEZQ,L4%U H*ID$[GR00!@YP"0>U
M'2X;.QV5%>$?$3XU6FO?![5+SP;:ZT@FN#8_;UMPJ08*$LS!B4#*^%)Y)["M
MKP!KW@[X??"F+5'TS5O#\%Q*B20ZC'(9KVX*+\\499LANQ7 XZ#%-=6^EOQ!
MZ6\[_@>NT5POAWXLZ+KVOPZ)=:;K6@:E<J7MK?6K(V[7  R2AR0?S%9VL_'G
MP?H6M7FDWRZA]OM+T6;0)"I+DX^=?FQL&>IP?0&BVJ7<5]+GI=%<'JGQ>T#2
MO$VI^'GLM7N]5T]486ME9F=[G<F_]V%)/ QDMM R.:H1_'?PK<Z&U_IUEK>H
M30[C<V%II[/<6@7JTHSM0#U+=CCH:72Y5G>QZ717,1_$+P_/X'A\5VT\]QIL
MY"Q^1;O)*SEMNS8H)W;N,5F>'OBSI&N^)(=!N])UW0-2N4+VT&M6/V<W  ).
MSDYQCOBG9WL3=6N=U17 ZA\8M L/$6KZ"NGZS>ZKI;*K6EC9>?)< KN+1A2?
ME (R6VCD5IZ#\2?#?B#P=<^)K>[:VT^SW"[^U)L>V90"5=>>>1TSGMFETN/K
M8ZNBN(\,_%32?%.JP6=II.O6D5WG['>WNG-';W8"EB8Y.>P)YQ5'4?C9X<L;
MZZCM]/US4K*QD,5YJEAI[2VELP^\'DR.G? -&SLP/1:*K:=J%IJVFV^H:=.E
MQ:W,8EAE0\.I&0:LTVFG9AOJ%%%%( HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "L;PI_R+L?\ UWG_
M /1SULUC>%/^1=C_ .N\_P#Z.>@#9HHHH *Q_$/_ #"_^PC#_6MBL?Q#_P P
MO_L(P_UH V**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "OGSX9Z3>:W\/OBEI>G\75WJ%
MW#"#QERI 'X]/QKZ#HI-7OYJWY?Y#3LT^SO^9\Z67Q T:'X$R> )+*_'BS^S
MY+#^QA82F4R'.&^[C'.[KFK'Q$\.:GH'P%\$P7MO*[Z)>VT]_P"6"_D(%8L3
MCL,@9KZ#HJW)M\W6Z?W$\JMR]+-?>>+_ !.^(4]_X8\.ZKX4U:^LO"NH7;Q:
MGK-E:N)H(AA<J&7<N3N^;&<@8]^>^&?V)_VA3/I&JZ_K.GS:$Q@U#72[23C>
MN2A=5)C'0<=<U]$T4E9._K^*L-ZJW];W/'OV<P1X;\3$C@Z_<8_[Y2J'Q<T+
M3O$OQS\!Z1K=O]IL;J&X6:+>R;@!D<J01R!T->X44:7BWTM^"L#>DO._YW/"
M_"NGQ_"WXQW_ ()MHDBT;Q);-/I<[(#)'( <QF3[S <\$G'R^ISP'AC3- T'
M1[OPQ\1/%?C7P[J7VB2+^RK&27[/>(QP"B+$P;=R.>#7UG12]>UOQT_R'Z=[
M_P"9X%\4-"ATGX)>$/[%M=2;2])U""YD^V1YN(8<.2TB@#&-W/ Q6A\7-;M?
M$_@GPMXO\.K/J&C:=K<5W<31P.I6)"0S[6 ; (QG%>VT4[N]_._Y?Y$V6WE;
M\_\ ,\'U;Q;8^,_CO\/M0T*&[DTN/[2D=]-;/#'.QCR0F\ G;@9.,<UL?#ZW
MA?\ :'^(T[PQM-%]F6.0J"R IR >HS@9^@KV"BB+Y=O/\0E[WX?@>1Z2 ?VL
M=<)'(T"/'M\T=1?"E2OQH^)PP0OVR ].,_O*]AHHB^5+R37WNXWK?S:_!6/&
M/VB+7[:O@JU\Z:W$VNQQ^=;OMDCW#&Y6[,.H/K78^&_A7HGAS6FUI[O5-:UG
MRS$FHZQ>&XFC0C[JG  ^N,\GGFNVHI+1-=_\D@>I\H^']+T;PQ_:V@?$3Q;X
MS\-7KWTHBM=.EE6WOHVP-ZJL;!BW0^N174>.-!TG2OAY\-M*TR"^;3#X@BV1
M:M&/.9'9B0ZX  .3Q@<'I7T-13B[6\K?@$M6WWO^)YC^T(@7X':ND:@*K6X"
MJ. /.2N=^).GWT.C_#?Q*EG/>Z=H4D,U_##&79$*1G?M'.!M/YU[A12C>.JW
MNG]P.SMZ-?>>%ZYKMA\6_B;X*E\"BXOK/1;M[J^U'[-)%'",H=FYU&2=O3W%
M:OPKMX6^,GQ,N&BC,R7T2+(5&Y5(?(!Z@' _*O7Z*<6H[>?XV_R%+WEKY?A?
M_,\B\( ']I[QT<#(L+;!_P" I5#X/)BX^*.5P#K%P.G_ %TKVRBIM[G+Y-?C
M<J_O<WFG]RL?-/AC6_$F@_LJV=YX6,T<HU)TN+B&+S7M[<N=[JISWQSVR?K4
M&B2Z7=_&WP-=Z!XC\3>)+-FG5K[6VD:,2>6<I"71>G\0&>W-?3M%:<WO\_\
M6UB;>[R^OYW/(_AX!_PT!\23@9S:C/\ P"O/=/T#4O$/PJ^*.GZ/"\UR/$+R
MK @YD"2!F4#N<#I7T]16?V4NRM^*?Z%)^]S>=_PL>;>"?B9X=\3:98>'-&^V
MC5%M!!<6XLI%%BRQD'S&("CE2!@GG%>*^&-,T#0='N_#'Q$\5^-?#NI?:)(O
M[*L9)?L]XC' *(L3!MW(YX-?6=%4W>3EWW_K_AQ1TBHKIL<_X$TNRT;P+I-A
MI27R6<5N/)74%VSA3S\XP,'GI@8KH***).[N)*RL%%%%(84444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!6-X4_Y%V/\ Z[S_ /HYZV:QO"G_ "+L?_7>?_T<] &S1110 5C^(?\ F%_]
MA&'^M;%8_B'_ )A?_81A_K0!L4444 %%%% !1110 45#>7EO86<EU>2K%!$-
MSNW85F:3XLT?6FNDL[F2.6S4/<0W=M+:R1*1D,4E56VG!^;&.#S0!LT5A:3X
MST+7+X6>G7CM.\9EB$MO+"+B,'EXF=0)5Z?,A(Y'/-);>-_#]WJR:=!?DS22
M-#$[6\BPS2+]Y$F*^6[#!RJL3P?0T[,#>HJEJNKV.AV#7FJ7 @@#!0=I9G8G
M 554$LQ/ 4 D]A5&V\8Z#=:3=ZBM^(K>R;9="YB>&2!N,*\;@.I.1@$9.1C.
M:0&W165HWB72]?:>/39Y/.M]OG6]Q;R6\T8;[I,<BJP!P<'&#CBM6@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "L;PI_R+L?_ %WG_P#1SULUC>%/
M^1=C_P"N\_\ Z.>@#9HHHH *Q_$/_,+_ .PC#_6MBL?Q#_S"_P#L(P_UH V*
M*** "BBB@ HHHH @OKE+6SDEDN8+7C:LMP?D5B<+GD9Y(&,C/2O&O%46JQ:C
MXYLM0EAU35KSPQYL=S80M%'%"A8>282SD,2S,&+G// Q7M%Q;PW=N]O=PQSP
MR#:\<BAE8>A!X-5-*T'2-"MW@T32K+3H9#N>.TMDB5CZD* #1U_K^OZL4G;^
MO-?U^)P?B%TU/6O 8T*2.2007-PGED'$'V4KGCMN9!]<5C6S1W/P>^'EG9E?
MMG]HV"+&#AA)$^9N/4!7S^->J:;H&C:--/+I&DV-A)<-NF>UMDB,I]6*@9/U
MHMO#^C6>JS:G::18P:A/Q+=Q6R++)_O.!D_B:OFUOYI_<VS.WNV\FOO.1\9Z
MA9W7B'P=<PW4%Q96NO-#<O'('6*;R)556(/RD.0,'G)%<EXM&[X@:O?J5;3+
M?5M$CO''*JZNY.[TV[XL_A7KK:'I+V-S9/I=DUI=NTEQ ;=#',S'+,ZXPQ/<
MGK2V^BZ79Z4=,M--LX-/*E3:10*L1!ZC8!C!^E3%VL^S3_+_ "_JQ3UNNZM^
M?^9RUJ//^.=]-;$-%!H,,5P5.<.TSL@/OM!/T/O7:G.T[<9QQFJFF:/IFB6G
MV71M.M-/M\EO)M(%B3/KA0!5RELDOZWO^H;MOO\ HDOT.7O-4\16FLZ=I[+I
M9:^\W:P$F!L7=SS_ (UH?\5+_P!0K_R)576O^1X\,_\ ;U_Z+%=%0!C_ /%2
M_P#4*_\ (E'_ !4O_4*_\B5L44 8_P#Q4O\ U"O_ ")1_P 5+_U"O_(E;%%
M&/\ \5+_ -0K_P B4?\ %2_]0K_R)6Q10!C_ /%2_P#4*_\ (E'_ !4O_4*_
M\B5L44 8_P#Q4O\ U"O_ ")1_P 5+_U"O_(E;%% &/\ \5+_ -0K_P B4?\
M%2_]0K_R)6Q10!C_ /%2_P#4*_\ (E'_ !4O_4*_\B5L44 8_P#Q4O\ U"O_
M ")1_P 5+_U"O_(E;%% &/\ \5+_ -0K_P B4?\ %2_]0K_R)6Q10!C_ /%2
M_P#4*_\ (E'_ !4O_4*_\B5L44 8_P#Q4O\ U"O_ ")1_P 5+_U"O_(E;%%
M&/\ \5+_ -0K_P B4?\ %2_]0K_R)6Q10!C_ /%2_P#4*_\ (E'_ !4O_4*_
M\B5L44 8_P#Q4O\ U"O_ ")1_P 5+_U"O_(E;%% &/\ \5+_ -0K_P B4?\
M%2_]0K_R)6Q10!C_ /%2_P#4*_\ (E'_ !4O_4*_\B5L44 8_P#Q4O\ U"O_
M ")1_P 5+_U"O_(E;%% &/\ \5+_ -0K_P B4?\ %2_]0K_R)6Q10!C_ /%2
M_P#4*_\ (E'_ !4O_4*_\B5L44 8_P#Q4O\ U"O_ ")1_P 5+_U"O_(E;%%
M&/\ \5+_ -0K_P B4?\ %2_]0K_R)6Q10!C_ /%2_P#4*_\ (E'_ !4O_4*_
M\B5L44 8_P#Q4O\ U"O_ ")1_P 5+_U"O_(E;%% &/\ \5+_ -0K_P B4?\
M%2_]0K_R)6Q10!C_ /%2_P#4*_\ (E'_ !4O_4*_\B5L44 8_P#Q4O\ U"O_
M ")1_P 5+_U"O_(E;%% &/\ \5+_ -0K_P B4?\ %2_]0K_R)6Q10!C_ /%2
M_P#4*_\ (E'_ !4O_4*_\B5L44 8_P#Q4O\ U"O_ ")1_P 5+_U"O_(E;%%
M&/\ \5+_ -0K_P B4?\ %2_]0K_R)6Q10!C_ /%2_P#4*_\ (E'_ !4O_4*_
M\B5L44 8_P#Q4O\ U"O_ ")1_P 5+_U"O_(E;%% &/\ \5+_ -0K_P B4?\
M%2_]0K_R)6Q10!C_ /%2_P#4*_\ (E'_ !4O_4*_\B5L44 8_P#Q4O\ U"O_
M ")1_P 5+_U"O_(E;%% &/\ \5+_ -0K_P B4?\ %2_]0K_R)6Q10!C_ /%2
M_P#4*_\ (E'_ !4O_4*_\B5L44 8_P#Q4O\ U"O_ ")6A9?;?L__ !,?(\[<
M?]1G;C\><U8HH **** "BBB@ K&\*?\ (NQ_]=Y__1SULUC>%/\ D78_^N\_
M_HYZ -FBBB@ K'\0_P#,+_[",/\ 6MBL?Q#_ ,PO_L(P_P!: -BBBB@ HHHH
M **** "BBB@ HHHH **** "BBB@#G=:_Y'CPS_V]?^BQ715SNM?\CQX9_P"W
MK_T6*Z*@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *QO"G_ "+L?_7>?_T<
M];-8WA3_ )%V/_KO/_Z.>@#9HHHH *Q_$/\ S"_^PC#_ %K8K'\0_P#,+_["
M,/\ 6@#8HHHH **** "BBB@ HHHH **** "BBB@ HHHH YW6O^1X\,_]O7_H
ML5T5<[K7_(\>&?\ MZ_]%BNBH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
ML;PI_P B['_UWG_]'/6S6-X4_P"1=C_Z[S_^CGH V:*** "L?Q#_ ,PO_L(P
M_P!:V*Q_$/\ S"_^PC#_ %H V**** "BBB@ HHHH **** "BBB@ HHHH ***
M* .=UK_D>/#/_;U_Z+%=%7.ZU_R/'AG_ +>O_18KHJ "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ K&\*?\ (NQ_]=Y__1SULUC>%/\ D78_^N\__HYZ -FB
MBB@ K'\0_P#,+_[",/\ 6MBL?Q#_ ,PO_L(P_P!: -BBBB@ HHHH **** (;
MR6:"SDDM;9KJ91\D*N%WGTR>!7*6OCB[CU+6=+US2(K/4M+L!J(2VO#/%/"=
MV,.8T(.Y2""ON,UT>M:D='T6[U!;.ZOFMXRXMK2(R2RGLJJ.237$>#KB&X_M
M;5=9T_4[S7=2@WW<#Z-<P1)"@PMM&T\:*V QZG+$L<8Z+5WMV'M8Z?0]4U^]
MA2ZUK2M,L;*2W$RR6VIR7#C(! *M @ QGG<>G2L6T^(<\\>EZG<:+Y&@:Q<K
M;6=Z+K=-ER1&\D.P!48C@AV/(R!DXR-.T2TN_&5M+X)T.XT#2?L-S%J>=.?3
MXIW<*(E\IE0LRG)W@8 XSS5/3['4=1\&^$_!TNE:A;W^D7EHU]+):.D$<=NV
M[>LI 1]VU0 I)^;D#!K16;7JONN[_<K$ZJ+^?WVT/0?$OB(:!!9I#:F\O]0N
M1:V=L'V"20@M\SX.U0JDDX/ X!/%8;_$7[#%J-MK.E-!K%C<6]N+*VG\Y+AI
MSB$QR%5X)SDLHQ@\>M;Q-<7>J76B:[:Z/JBQ>']:E%S!):GS98O+>(S1(,F1
M<N",#)&<"L#6=%U/6M;U'Q?8:;>^3%?Z;);VLT#137$5NS&5A$V&'^M.%8 G
M9TY%3&SW[KY+3^O^&'+RWM][UT_K]3N]$\375YX@NM!US38]/U.WMTN@MO<F
MXAEB9BN5<HAR"I!!4=L9KHZXK1(I=;^)5WXFBM+RVT^/2H["$WEL]N\K^:SN
M1'( X ^49(&<G&:[1AN4C)&1C(HZ*_\ 6O\ D+J[;?\  7ZW.>UK_D>/#/\
MV]?^BQ715P^J: L/BS0;<:GJ;B?[1F1[MBZ;4!^4]L]_6MO_ (15/^@SK7_@
M<U(9NT5A?\(JG_09UK_P.:C_ (15/^@SK7_@<U &[16%_P (JG_09UK_ ,#F
MH_X15/\ H,ZU_P"!S4 ;M%87_"*I_P!!G6O_  .:C_A%4_Z#.M?^!S4 ;M%8
M7_"*I_T&=:_\#FH_X15/^@SK7_@<U &[16%_PBJ?]!G6O_ YJ/\ A%4_Z#.M
M?^!S4 ;M%87_  BJ?]!G6O\ P.:C_A%4_P"@SK7_ ('-0!NT5A?\(JG_ $&=
M:_\  YJ/^$53_H,ZU_X'-0!NT5A?\(JG_09UK_P.:C_A%4_Z#.M?^!S4 ;M%
M87_"*I_T&=:_\#FH_P"$53_H,ZU_X'-0!NT5A?\ "*I_T&=:_P# YJ/^$53_
M *#.M?\ @<U &[16%_PBJ?\ 09UK_P #FH_X15/^@SK7_@<U &[16%_PBJ?]
M!G6O_ YJ/^$53_H,ZU_X'-0!NT5A?\(JG_09UK_P.:C_ (15/^@SK7_@<U &
M[16%_P (JG_09UK_ ,#FH_X15/\ H,ZU_P"!S4 ;M%87_"*I_P!!G6O_  .:
MC_A%4_Z#.M?^!S4 ;M%87_"*I_T&=:_\#FH_X15/^@SK7_@<U &[16%_PBJ?
M]!G6O_ YJ/\ A%4_Z#.M?^!S4 ;M%87_  BJ?]!G6O\ P.:C_A%4_P"@SK7_
M ('-0!NT5A?\(JG_ $&=:_\  YJ/^$53_H,ZU_X'-0!NT5A?\(JG_09UK_P.
M:C_A%4_Z#.M?^!S4 ;M%87_"*I_T&=:_\#FH_P"$53_H,ZU_X'-0!NT5A?\
M"*I_T&=:_P# YJ/^$53_ *#.M?\ @<U &[16%_PBJ?\ 09UK_P #FH_X15/^
M@SK7_@<U &[16%_PBJ?]!G6O_ YJ/^$53_H,ZU_X'-0!NT5A?\(JG_09UK_P
M.:C_ (15/^@SK7_@<U &[16%_P (JG_09UK_ ,#FH_X15/\ H,ZU_P"!S4 ;
MM%87_"*I_P!!G6O_  .:C_A%4_Z#.M?^!S4 ;M%87_"*I_T&=:_\#FH_X15/
M^@SK7_@<U &[16%_PBJ?]!G6O_ YJ/\ A%4_Z#.M?^!S4 ;M%87_  BJ?]!G
M6O\ P.:C_A%4_P"@SK7_ ('-0!NT5A?\(JG_ $&=:_\  YJ/^$53_H,ZU_X'
M-0!NT5A?\(JG_09UK_P.:C_A%4_Z#.M?^!S4 ;M%87_"*I_T&=:_\#FH_P"$
M53_H,ZU_X'-0!NT5A?\ "*I_T&=:_P# YJ/^$53_ *#.M?\ @<U &[16%_PB
MJ?\ 09UK_P #FH_X15/^@SK7_@<U &[16%_PBJ?]!G6O_ YJ/^$53_H,ZU_X
M'-0!NT5A?\(JG_09UK_P.:C_ (15/^@SK7_@<U &[16%_P (JG_09UK_ ,#F
MK3T^Q&GVODK<7-P-Q;?<RF1OID]J +5%%% !1110 5C>%/\ D78_^N\__HYZ
MV:QO"G_(NQ_]=Y__ $<] &S1110 5C^(?^87_P!A&'^M;%8_B'_F%_\ 81A_
MK0!L4444 %%%% !1110 4444 %%%% !1110 4444 <[K7_(\>&?^WK_T6*Z*
MN=UK_D>/#/\ V]?^BQ714 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% #9)$AB>65@D:*69F. H'4
MFO)_AQ\5Y/%GC;4+>XNHI=,U"1_[)58RIMVB',3M@;F>/;,!R1^\4_=Q5[XV
M:U._AJ'P9H3,^O>)W^R6\2$#;%G,KOP<)MR#WP3CH:BT3X.7.B^'M,TF#Q*5
MBT^]2_5X[!!(UP#EGWDEOF!*G/\ "<=* /4:*** "BBB@ K&\*?\B['_ -=Y
M_P#T<];-8WA3_D78_P#KO/\ ^CGH V:*** "L?Q#_P PO_L(P_UK8K'\0_\
M,+_[",/]: -BBBB@ HHHH **** "BBB@ HHHH **** "BBB@#G=:_P"1X\,_
M]O7_ *+%=%7.ZU_R/'AG_MZ_]%BNBH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *S?$6OZ?X6\/WFLZS
M.(+.TCWR,>I[!1ZDD@ =R16E7D5Z3\7OB4=-0LW@_P +7 :[(/R:A>CI'[JG
M.?Y<@T :/PNT'4-5U"\^(OBR%H]7UA=EE:R#_CPLP<H@]"PPQ_#H2:],H P,
M#@44 %%%% !1110 5C>%/^1=C_Z[S_\ HYZV:QO"G_(NQ_\ 7>?_ -'/0!LT
M444 %8_B'_F%_P#81A_K6Q6/XA_YA?\ V$8?ZT ;%%%% !1110 4444 %%%%
M !1110 4444 %%%% '.ZU_R/'AG_ +>O_18KHJYW6O\ D>/#/_;U_P"BQ714
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 445C^+/$]AX.\+WVNZL^+>TC+; 0&D;HJ+GN3@#ZT <I\4O%&H0I
M9^#?"+9\2:^3'&Z_\N=O_P M)V/; SCWR1DC%=3X1\+:?X,\*V6A:2F(+6/!
M<@;I7_B=O<GFN5^%_AB^\R\\;^+(L>(]= ;RVY^Q6W5(%STX )]P,\BO1* "
MBBB@ HHHH **** "L;PI_P B['_UWG_]'/6S6-X4_P"1=C_Z[S_^CGH V:**
M* "L?Q#_ ,PO_L(P_P!:V*Q_$/\ S"_^PC#_ %H V**** "BBB@ HHHH **A
MO([B:SDCLYUMIV&$E:/?L/KMR,UYQ<>+M8\)ZEXNMKR_DUZTT728[^.>ZCBC
M=)FW?N6,2*I!"AA\N1GOQ0.QZ;17GK:SKOA;6O#_ /;6L-JEOK4<PN(I+>*,
M6TJ0F4>444'9A6&'+'H<]<T;7Q/XB@\/>&_%UWJAEM];O+>*;2C!&(8(KAMJ
M>6P42;URN2S$'G@<8KE=[?+YO1$WTO\ ,]0HKE_&6LWUC/HFDZ3,MM=:U??9
MOM.P.T"+&TCNJD$%L)@9! )R0>E<M?>,==T+5-2\,-?+?WPO+""QO[F%%<)=
M%@2ZH%1F38Y& H/&1URDF_Z]/\QO17?J>HT5Q^AZEJFG_$"[\+ZIJ4FK0_V<
ME_;W5Q%&DR_O"CHWEJJD9 (.T'KG-=@2 "2< =32Z7#K;^NYSNM?\CQX9_[>
MO_18KHJY#5M9TN3QCX>FCU*T>*'[3YDBSJ53,8 R<\9-;W_"1:+_ -!BP_\
M I/\: -&BL[_ (2+1?\ H,6'_@4G^-'_  D6B_\ 08L/_ I/\: -&BL[_A(M
M%_Z#%A_X%)_C1_PD6B_]!BP_\"D_QH T:*SO^$BT7_H,6'_@4G^-'_"1:+_T
M&+#_ ,"D_P : -&BL[_A(M%_Z#%A_P"!2?XT?\)%HO\ T&+#_P "D_QH T:*
MSO\ A(M%_P"@Q8?^!2?XT?\ "1:+_P!!BP_\"D_QH T:*SO^$BT7_H,6'_@4
MG^-'_"1:+_T&+#_P*3_&@#1HK._X2+1?^@Q8?^!2?XT?\)%HO_08L/\ P*3_
M !H T:*SO^$BT7_H,6'_ (%)_C1_PD6B_P#08L/_  *3_&@#1HK._P"$BT7_
M *#%A_X%)_C1_P )%HO_ $&+#_P*3_&@#1HK._X2+1?^@Q8?^!2?XT?\)%HO
M_08L/_ I/\: -&BL[_A(M%_Z#%A_X%)_C1_PD6B_]!BP_P# I/\ &@#1HK._
MX2+1?^@Q8?\ @4G^-'_"1:+_ -!BP_\  I/\: -&BL[_ (2+1?\ H,6'_@4G
M^-'_  D6B_\ 08L/_ I/\: -&BL[_A(M%_Z#%A_X%)_C1_PD6B_]!BP_\"D_
MQH T:*SO^$BT7_H,6'_@4G^-'_"1:+_T&+#_ ,"D_P : -&BL[_A(M%_Z#%A
M_P"!2?XT?\)%HO\ T&+#_P "D_QH T:*SO\ A(M%_P"@Q8?^!2?XT?\ "1:+
M_P!!BP_\"D_QH T:*SO^$BT7_H,6'_@4G^-'_"1:+_T&+#_P*3_&@#1HK._X
M2+1?^@Q8?^!2?XT?\)%HO_08L/\ P*3_ !H T:*SO^$BT7_H,6'_ (%)_C1_
MPD6B_P#08L/_  *3_&@#1HK._P"$BT7_ *#%A_X%)_C1_P )%HO_ $&+#_P*
M3_&@#1HK._X2+1?^@Q8?^!2?XT?\)%HO_08L/_ I/\: -&BL[_A(M%_Z#%A_
MX%)_C1_PD6B_]!BP_P# I/\ &@#1HK._X2+1?^@Q8?\ @4G^-'_"1:+_ -!B
MP_\  I/\: -&BL[_ (2+1?\ H,6'_@4G^-'_  D6B_\ 08L/_ I/\: -&BL[
M_A(M%_Z#%A_X%)_C1_PD6B_]!BP_\"D_QH T:*SO^$BT7_H,6'_@4G^-'_"1
M:+_T&+#_ ,"D_P : -&BL[_A(M%_Z#%A_P"!2?XT?\)%HO\ T&+#_P "D_QH
M T:*SO\ A(M%_P"@Q8?^!2?XT?\ "1:+_P!!BP_\"D_QH T:*SO^$BT7_H,6
M'_@4G^-'_"1:+_T&+#_P*3_&@#1HK._X2+1?^@Q8?^!2?XT?\)%HO_08L/\
MP*3_ !H T:*SO^$BT7_H,6'_ (%)_C1_PD6B_P#08L/_  *3_&@#1HK._P"$
MBT7_ *#%A_X%)_C1_P )%HO_ $&+#_P*3_&@#1HK._X2+1?^@Q8?^!2?XT?\
M)%HO_08L/_ I/\: -&BL[_A(M%_Z#%A_X%)_C1_PD6B_]!BP_P# I/\ &@#1
MKR*W'_"W_B4+PGS/!OA:X_T<8^34;X=7]T3/'8Y[@FK/Q0\;+J M?!'A+5K1
M-3UL%;F^$Z[+"UZ/(2#]XC( R#UQSBNP\.'PKX6\/6>BZ/J.GPVEI&$11<IE
MCW8\\DG))[DT =)16=_PD6B_]!BP_P# I/\ &C_A(M%_Z#%A_P"!2?XT :-%
M9W_"1:+_ -!BP_\  I/\:MVUW;7L/FV=Q%<1YQOB<,,^F10!-1110 4444 %
M8WA3_D78_P#KO/\ ^CGK9K&\*?\ (NQ_]=Y__1ST ;-%%% !6/XA_P"87_V$
M8?ZUL5C^(?\ F%_]A&'^M &Q1110 445#>7EOI]C/>7LJPVUO&TDLCG 10,D
MG\*&[:L-]":BN!\(_&'0/&OB*;2M&L]4'EVSW,=S/;B.*X12 =F6R>6'4"NJ
M\.>(=/\ %6@V^L:0[O:7&X(70JP*L5((/0@@T[.UP)M:&J'1;L:!]E&I&,BV
M-V6$0?L6V@G ]A7&:5X+U:7P?JGAO7+*P@CU2WE%WJ<&J27-Q<3N,&1E:",?
MK@   8Z>@T4N_F.^WD<3;>%]<U;5-(F\5_V<D.C0RI"+*9Y&N9'C\OS&W(OE
MX4M\HW<M][CFEIW@?7%TO0_#NIR:>VBZ'<Q3Q7,4KM/=+$<Q(T90*F#MR0S9
MV]!GCT.BGS.]_P"K[DV5K?U8X[6?#_B+6([.^EDTQ=4TC57N]/2-I%AE@VL@
M24D$JQ1SDJ" <8!K-O? .JZNVH:Q>SV5KKMQ=VES;QPN\D$(MCE(RY568-N?
M+;1C=TXY]#HI*ZV_K;_(;U_K^NYS&B:%J;>*[KQ)X@6SAO);-+*&VLY6F2*-
M69R3(R(6+$CC:,8'7K73]>M%%'D'6YR^L6ELOC7PVBV\05OM6Y0@P<1C&:Z'
M[!:?\^L'_?L5B:U_R/'AG_MZ_P#18KHJ (/L%I_SZP?]^Q1]@M/^?6#_ +]B
MIZ* (/L%I_SZP?\ ?L4?8+3_ )]8/^_8J>B@"#[!:?\ /K!_W[%'V"T_Y]8/
M^_8J>B@"#[!:?\^L'_?L4?8+3_GU@_[]BIZ* (/L%I_SZP?]^Q1]@M/^?6#_
M +]BIZ* (/L%I_SZP?\ ?L4?8+3_ )]8/^_8J>B@"#[!:?\ /K!_W[%'V"T_
MY]8/^_8J>B@"#[!:?\^L'_?L4?8+3_GU@_[]BIZ* (/L%I_SZP?]^Q1]@M/^
M?6#_ +]BIZ* (/L%I_SZP?\ ?L4?8+3_ )]8/^_8J>B@"#[!:?\ /K!_W[%'
MV"T_Y]8/^_8J>B@"#[!:?\^L'_?L4?8+3_GU@_[]BIZ* (/L%I_SZP?]^Q1]
M@M/^?6#_ +]BIZ* (/L%I_SZP?\ ?L4?8+3_ )]8/^_8J>B@"#[!:?\ /K!_
MW[%'V"T_Y]8/^_8J>B@"#[!:?\^L'_?L4?8+3_GU@_[]BIZ* (/L%I_SZP?]
M^Q1]@M/^?6#_ +]BIZ* (/L%I_SZP?\ ?L4?8+3_ )]8/^_8J>B@"#[!:?\
M/K!_W[%'V"T_Y]8/^_8IFJ:G::-I-UJ6I3"&TM(FFFD/\*J,FC2]3M-9TFUU
M+39A-:7<2S0R#^)6&10 _P"P6G_/K!_W[%'V"T_Y]8/^_8J>B@"#[!:?\^L'
M_?L4?8+3_GU@_P"_8J>B@"#[!:?\^L'_ '[%'V"T_P"?6#_OV*GHH @^P6G_
M #ZP?]^Q1]@M/^?6#_OV*GHH @^P6G_/K!_W[%'V"T_Y]8/^_8J>B@"#[!:?
M\^L'_?L4?8+3_GU@_P"_8J>B@"#[!:?\^L'_ '[%'V"T_P"?6#_OV*GHH @^
MP6G_ #ZP?]^Q1]@M/^?6#_OV*GHH @^P6G_/K!_W[%'V"T_Y]8/^_8J>B@"#
M[!:?\^L'_?L4?8+3_GU@_P"_8J>B@"#[!:?\^L'_ '[%'V"T_P"?6#_OV*GH
MH @^P6G_ #ZP?]^Q1]@M/^?6#_OV*GHH @^P6G_/K!_W[%'V"T_Y]8/^_8J>
MB@"#[!:?\^L'_?L4?8+3_GU@_P"_8J>B@"#[!:?\^L'_ '[%'V"T_P"?6#_O
MV*GHH @^P6G_ #ZP?]^Q6!XUU_1?!'A6ZUO4K6%EA&V&%8QNGE/"(HQU)_(9
M/:NE9@JEF(  R23TKR70P?BU\1/^$EG&[PGX<G:+28F!VWMT,;KC'0JO13SS
MZ'(H V/AAX)GTS3;GQ!XLABF\2:XPN+P-&,6R_P0(.P4=1Z^N!7>?8+3_GU@
M_P"_8J>B@"#[!:?\^L'_ '[%'V"T_P"?6#_OV*GHH @^P6G_ #ZP?]^Q4L<4
M<*[8D5%SG"C IU% !1110 4444 %8WA3_D78_P#KO/\ ^CGK9K&\*?\ (NQ_
M]=Y__1ST ;-%%% !6/XA_P"87_V$8?ZUL5C^(?\ F%_]A&'^M &Q1110 5A^
M-="E\3^!]8T6WE$4U]:/#&[= Q'&?;-;E4M:M;R]T.]M=+O/L-[- Z076W=Y
M+D8#8[X/-3)7BT5%V:9X'%XM\>:1XMTJ27X9:D]]IND2:6B6P8V\C%D*R"0*
M5"_N^F>_6O6_A?X=U#PO\/K'3]9*_P!H,TEQ<JARJ/(Y<J/INQ7"W_@'XOVV
MGSSVWQ/6>6.,ND36:H'(&<;L''UQ7<?"K69->^&>DZA<:I+JMQ(C^=<S0B)R
MX<@J5!(^7ID'G&>]:IMQ?];MO\S.UK6V_P E;\CL****@H**** "BBB@ HHH
MH YW6O\ D>/#/_;U_P"BQ715SNM?\CQX9_[>O_18KHJ "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHJ*YN8+.UDN;R:."")2TDLK!50#J23P!0!+69KWB/2/"^EOJ&
MOZA!8VJ?QS-C<?0#J3[#FN O/BKJ/BJ^FTGX2:3_ &Q+&QCFUF[!CL;9O][K
M(>G Z@@C(J[H'PDM5U1=>\>:A)XKUT'<LEVN+>V.<XBA^Z,8')[C.!0!YWXX
M^(.J?$>>RTC2K+4O#WAIW6\.LW.E3W)NPC9CV11HV5W ,,D9VC)'0V/!2_$&
MQU'4M'\">(X=4TVV NK<>(-&GM$?S'8NH8J&#!CG'W3D$8Y ^@0,# X%% 'F
M/_"??$+19''B;X;3W4$:Y-UH=XMQN_W8C\WKU.>*GL_CMX)DNH[/6+B^T"\=
M<_9]6LI(67ZG!4=#R3BO1Z@N[*UOX##?6T-S$>J31AU/X&@"II/B/1->C\S1
M-7L=07UM;A),?D:TJX+5O@E\/M6E29O#L%E-&<I+I[M;%3USA"!GCN.*S3\*
M?$.D*W_"'_$K7K+G*Q:F$OHU]@' P/SH ]/HKS)KOXR:$7,VG>'?%%NH^7[-
M,]I.WUW_ "#Z"@?&232V">,? _B/1"%W23I;?:K=/7]XG7\J /3:*\DU#]H3
MPJNL:0FC7UM=Z;,V=1N)2T+VRE@B[4< L=QW' .%4GTK8U#X\?#?3FVR^)8I
MFYXMH)91^:J1^M 'H=%>:3?&_2GVC1_"WBS5]W1K/2'V_P#CQ!_3M1)\1O&M
MU&#HGPKU64M_S_WT-K@8]#GU]J /2Z*\T?5OC)J$*FQ\,^&M(9N2-0OWG*CG
MC]U@9Z>M']A?&#4+?%YXPT#2)&ZG3M-,^WGL9>O&.W<_6@#TNBO-1\,_%EY!
MLUOXIZ[*QX8Z?!%9_EMR1TZYK'\3_ ]7\)7\>GZSXBU[59DV0_VIK#;%W85F
M(&T' +$*>O0G!H [;PYX_L/$?BS5M#MX)(C8DFWN&8%+U%;RY63_ ') 5/U4
M]ZZROG^\^#6HZ/<6.I?#+2[_ ,-:U:D(US)J,4T<R'ABZL3SCG ^4^G0CJ+?
MXJZWX-GCT_XNZ&U@"=L>N:<C2V<OIN Y0^W7O@"@#UBBJNFZG8ZQI\5]I5W#
M>6LHRDT#AU8?45:H **** "BBB@ HHHH **** "BBB@ HHKSKXI_%JW^&YLX
M4L#J-W<H[F(2;/+&"(\^NY\# YP'/\- $'Q*U:]\2:Q;?#?PS.\5WJ*>;J]W
M$1_H5G_%_P "?. /0^]=_H^DV6@Z/:Z7I<"P6=I&(HHU[ ?U[D^M<M\,O!MQ
MX:TFYU+7I!<^)-;E^UZG<'G#'[L2_P"R@. .G7'&!7;4 %%%% !116-XH\6Z
M+X,T9]3\17T=G;KPNXY:5L9VHO5C["@!WBKQ';>$O#%YK5[')+%:J#LC'+$D
M*!D\*,D98X ')X%>:^'_ (F7B7::G?ZY9ZWIUWJ$>G75O91[5TZXD/[M8)"!
M]H3! 8\G/S#CBA=*\5_&619_$(NO#'@PD-'IBMMNM27J#*1]Q#_=_P#K-76>
M%?AUX<\-ZLTNFSR70LRRV5I/,)$TT.27$8Z@D_Q-EL #.!0!VM%%% !1110
M5C>%/^1=C_Z[S_\ HYZV:QO"G_(NQ_\ 7>?_ -'/0!LT444 %8_B'_F%_P#8
M1A_K6Q6/XA_YA?\ V$8?ZT ;%%%% !7&^+O&?@]+74O#NK>+;72+R2%H9"MR
M$F@WKPP]#@@BNRKC_%/@[P(8M0\1^*- TZ<Q1&>ZNIK<,Q5%ZGN>!BIEMKL5
M'?3<\=D\*_#N>-HKCXUZI+$XVNC:HI##N"#7N'@+3_#^E>"-/L_!UPESI$:L
M(9TD#^:=QW,6'4[LYKPT^-OA0S#R?A)J,J/&9HV&EQ_/&.KCYON\CGIS7N/@
M"\TS4/ NFW>@Z1)HVG3(SP64D0C,:ECSM&1@_>'J#FM%?E?]=S-[HZ.BBBI*
M"BBB@ HHHH **** .=UK_D>/#/\ V]?^BQ715SNM?\CQX9_[>O\ T6*Z*@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HKD_&?Q)\.>!HT35KIIK^8@6^G6B^;<3,>@"#IGID
MX%<A_8_Q!^*#!_$=Q)X+\-/_ ,PRS?-[=+_TTD_@'L/4@KT- &UXG^+NF:9J
MIT#PM:3>*/$1!Q8:?RL7;,LGW4 /7J1QG&<UE6GPSU[QK=1ZE\7-6^TPA@\/
MAW3V,=I"?^FC YD/3Z'/)!Q7>>&/"&A>#=+%AX;TV&RAXWE!EY#ZNQY8_4UM
M4 5[&PM-,L8K/3K:&UM85VQPPH$1!Z #@58HHH **** "BBB@ HHHH ****
M/'9/ 'B.>[U>75O!W@[6Y=0NY9OM=[<OYB(V%15S =FU%4<'J">IKO? .A7N
M@^#=-LM<AL1J=M%Y4LMH,API(4EMJDL5QDXZYKI:* "BBB@ HHHH **** "H
M[BWAN[=X+J&.>&1=KQR*&5AZ$'@BI** /+M2^#K:/J4FL?"[69?#%^QW260R
M]E<'T:/^'/J,X[ 5%8_%^]\.7\>D_%K0Y- N';RXM5MP9;&X/0$,,E,\G!S@
M<G%>K5!>V-KJ5E+9ZC;0W5M,I62&= Z./0@\&@ LKZUU*RBO-.N8;JVF4-'-
M X=''J".#4]>5W7PCOO"UW-J?PEUN30YI&\R72;HF:RN#Z8.2A/ R,X' Q4N
MF?&'^R;V/2?BEH\WA;46.U+I@7LK@^JRC('T/ [F@#T^BHX)X;JWCGMI4FAD
M4,DD;!E8'H01P14E !1110 45E:_XIT/PM9_:O$.JVNG1'[IGD"ESZ*O5CQT
M -<%_P +9U?Q2QA^&'A&\U6/.!JNI#[+9@8^\I/S/[C@T >I$X&3P*XGQ%\7
M/"7AZZ-B+YM5U0DJFG:4GVF=F SMPO /U(K$_P"%8^)?%B[_ (F>+[BX@?E]
M'T;_ $:UQC!1F^](/K@UV_ASP?X>\(V@MO#FD6M@F &:)/G? Q\SGYF/N2:
M.)_M+XJ>,\C2M.L_!&FOD"YU#_2;PCLPB'RJ>O#<US6C_"G4(+Z_OO&/AR?Q
M;JMP\T2W]YJZ8$#950J'@':?P)XQBO=:* ,'P3!K5KX-T^U\3*HU*WC,,C"0
M.7520C$CC<5"D^Y-;U%% !14-Y>6VGV4UY?W$5M;0(7EFF<*B*.I)/ %>47G
MC+Q)\4;V72/AGYFEZ&CF.\\33)C?CJEN.I/^UV_V>"0#?\:?%*VT+4AX=\,6
M;^(?%,W$>G6QR(>/O3-T0#(.#S@]AS53PM\,+B764\4_$F]77O$/6&+'^BV
MZ[8DZ9']X^GKDGH_!7@'0O FFM;Z+;EKB;!NKZ8[I[ENNYW[\DG'09-;][>V
MVG6,UY?SQV]M ADEFE8*J*!DDD]!0!R_Q1U"73/A[>W$=R]I"98(KNXC8J\-
MN\R+*RD<A@C-C'/IS7G&DS:#<>&X/$GA[PS#X7N!JL-OX>N8U"W.J(7"OO4#
M<ZLI?.[=P-V?ES5ZUCO/CMX@6]NTEMOA[I\Q^S0-E&U:53C>PZ^6"#QQ^>=O
MI6D^!_"^A:@+[1M T^RNE4HLL-NJLBDY(4]ADG@4 ;U%%% !1110 5C>%/\
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
M)<S-(Q)AC +.<L>3R>:](NH7N+26&*XDM7="JSQ!2\9/\0# KD>X(]JYG1/
M@T1]3*>(]9NEU1WFN%F:W3]ZX4&16BB1E;"C&#CVJ+)\R?56_%/]"KVM;H[_
M (,Y[1$LO!6JVVF7?@W1-'U6ZT^8VM_I&R07'E*I='8Q1LI/#8P0<=:P[6R@
MLO /@KQ=:H/^$@U"_L6O-07_ %UT+AP)$=NK+AN%/ VC &*]'T[PA#::PFJZ
MEJ>H:S?0PM!!-?F+]S&V-P58D1>=HR2">.M5=.^'VG:=<686_P!0GL-/F,]C
MIDLB?9[5^<%<(';&XX#LP&> ,#&BEJF^Z_!MM?-$VM%I>?Y?H5?B"QN]4\*Z
M+.2;#5-4,=Y%G"SQI#)((V]5+*,CH0,'@UQ&M9T/Q5JOA71]UAHMWJ.DHUO;
M'RXX5F9Q*B ?<#B, A<?>/J:](N_!5K>Z>]O<ZGJDLHOVU"VNWN TUG*2<"(
ME2 B@D!2",$@YJ-O .ESZ7>VM_<7M[<WTT=Q/J$TBB<RQX\ME*J%7;M& J@>
MQR<S%I;]U\]M/P'+71=K>F^IDZ'8VWAWXNWFC:';1V.ESZ+'=M9VZ!(4F$S)
MN5!PI*]<8SBN])PI."<#H*Q]%\-0Z/>W-_-?7FIZC=(D<MY>E-Y1,E4 C544
M L3PHR3DYK9HZ)?UO_2%U;_K9?\ #G%:KK/F>+M F_LW4$\G[3^[>##/F,#Y
M1GG'>MW_ (2'_J$:K_X"_P#UZJZU_P CQX9_[>O_ $6*Z*D,Q_\ A(?^H1JO
M_@+_ /7H_P"$A_ZA&J_^ O\ ]>MBB@#'_P"$A_ZA&J_^ O\ ]>C_ (2'_J$:
MK_X"_P#UZV** ,?_ (2'_J$:K_X"_P#UZ/\ A(?^H1JO_@+_ /7K8HH Q_\
MA(?^H1JO_@+_ /7H_P"$A_ZA&J_^ O\ ]>MBB@#'_P"$A_ZA&J_^ O\ ]>C_
M (2'_J$:K_X"_P#UZV** ,?_ (2'_J$:K_X"_P#UZ/\ A(?^H1JO_@+_ /7K
M8HH Q_\ A(?^H1JO_@+_ /7H_P"$A_ZA&J_^ O\ ]>MBB@#'_P"$A_ZA&J_^
M O\ ]>C_ (2'_J$:K_X"_P#UZV** ,?_ (2'_J$:K_X"_P#UZ/\ A(?^H1JO
M_@+_ /7K8HH Q_\ A(?^H1JO_@+_ /7H_P"$A_ZA&J_^ O\ ]>MBB@#'_P"$
MA_ZA&J_^ O\ ]>C_ (2'_J$:K_X"_P#UZV** ,?_ (2'_J$:K_X"_P#UZ/\
MA(?^H1JO_@+_ /7K8HH Q_\ A(?^H1JO_@+_ /7H_P"$A_ZA&J_^ O\ ]>MB
MB@#'_P"$A_ZA&J_^ O\ ]>N'^(GQ/NM+@@\.^%M-O'\5:L"EE#+#CREYW2D9
M)P "1]">@-==XY\9Z?X%\,3:MJ.9'R(K6V3[]S,?NQJ/4_H 37-_"_P7J-E)
M=>,?&NV;Q7K(W2C'%E#U6!!VP,9^@'.,D E^'VD6G@+PO'IT&EZM<WDI\Z^O
M6M?GN9C]YB2<XSTSV_&NI_X2'_J$:K_X"_\ UZV** ,?_A(?^H1JO_@+_P#7
MH_X2'_J$:K_X"_\ UZV** ,?_A(?^H1JO_@+_P#7H_X2'_J$:K_X"_\ UZV*
M* ,?_A(?^H1JO_@+_P#7H_X2'_J$:K_X"_\ UZUW=8T+.P50,DDX KE-:^*7
M@?P^9%U3Q/IR21??ABF$LB^VQ,G/MB@#4_X2'_J$:K_X"_\ UZ/^$A_ZA&J_
M^ O_ ->O&M>^+=AXR\6VEEH6D^)->T9+;S$M=,C> 74WF8)D88;RT 7V)8[N
ME=#\+_'&EZAXNN]#L)K_ $^-K42G1=89_M%E<*Y#JK.265E96"YXP>!G% 'H
MG_"0_P#4(U7_ ,!?_KT?\)#_ -0C5?\ P%_^O6Q10!C_ /"0_P#4(U7_ ,!?
M_KT?\)#_ -0C5?\ P%_^O6Q10!C_ /"0_P#4(U7_ ,!?_KT?\)#_ -0C5?\
MP%_^O6Q10!C_ /"0_P#4(U7_ ,!?_KT?\)#_ -0C5?\ P%_^O6Q10!C_ /"0
M_P#4(U7_ ,!?_KT?\)#_ -0C5?\ P%_^O6Q10!C_ /"0_P#4(U7_ ,!?_KT?
M\)#_ -0C5?\ P%_^O6Q10!C_ /"0_P#4(U7_ ,!?_KT?\)#_ -0C5?\ P%_^
MO6Q6%XT\5VG@KPC>Z]?HTL=JHVQ(0&D9F"JHS[D9/89/:@"7_A(?^H1JO_@+
M_P#7H_X2'_J$:K_X"_\ UZ\+MOC?XDM;X7>E6]UXKBOV\EXQ:?9K.WN6;"1V
MTI&^08."&&6QN&T9%=NWA?XJ^+?^1D\5V?ABR?.ZST*(M,5/8S-RK>ZDB@#J
M=:^(VA^'(1+KPN-.1CA3=*L>X^@!;D_2N2/QWAUE73P#X1UWQ)(!Q*EOY-N#
MZ%SDC\16SH/P3\%:+<_;+C3GUK4&(9[S5Y#<N[#N0WRY]\5WB)#:VX2-8X88
MQPJ@*JC^E 'C$S?%OQ5,1J]XWA2P8C]QH]BTUP5[@R,1M/NI_#BK^C_#'P=I
M]S]MU?P_KWB/4",/=ZVAN6;G/*D[?TS[]:[/6/B=X)T!I5U3Q/IL4D(S)"DX
MDD7C.-B9;/MC-<N_QYT.]8+X3T'Q%XE). ^GZ<WE@^Y;!'Y4 =K;ZS!:0+!:
MZ%J4$2#"QQV855'L >*S]7^(>GZ)-;6]WI>L/=7A(MK6&R,DLVW&XJH.<#(R
M>@R,GFN9/BKXN:WO&B^!=-T.,GY)]9O_ #,C/4I'@@_YYKE_$7A;XEP^(+/7
M/$OB::.WFMS:74OA?3C-):)NW !<;]K$G+J"1M7(QR #T[2?B)IVLW%Q:VNF
M:Q'>6N//M)[(QS1 ]"5)S@X.".#CK6I_PD/_ %"-5_\  7_Z]>-Z%-\1]%\2
M/XC@T[4/%^D6MLUC&][!]@O9HF='W"-OFDV%< L 3N;'!S7I7A3XJ^%O%L_V
M*VO&L-54[9-,U%/(N$;N-I^]^!- &U_PD/\ U"-5_P# 7_Z]-?7ED4K)HNJ,
MIZAK7(/ZUM44 </J6A^$=7D\S4_ (N9,8\R328R^/3=U[FN6O?A%\.KRX\^+
MP9K%E/D,)+0RQ[2.A W[0>_ KV&B@#Q5?AO/82;_  ]XK^(6GD9V1R2":)?;
M8< @>]>9Z_HGBA?$M[8^.M<U6X?4?+BMV72%DFU"%&RL<!)Q%)N()4=.&)8
MU];4A56()4$KT)'2@#SCX7Z>O@CP-::9+X<NK>\^9[EK:UR7))QO?C>P7 +8
M .. !Q78?\)#_P!0C5?_  %_^O6Q10!C_P#"0_\ 4(U7_P !?_KUY1XK\8ZE
M\4=4D\)>"H]0MM%MWV:[JD$.7QW@CP<9.#DY_3.=7QGXHU7QWXFG^'OP^N3;
M^3@:[K*_=M(SP8D/=SR./I_>*^A^%_#&E^#_  _;Z/H=LMO:P+V^](W=V/=C
MZT 9N@OIOAG0[;2-$\.ZE:65LNV.-+7\R3G))/))Y)K1_P"$A_ZA&J_^ O\
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
MR2 3^"_!FE>!?#<.D:-'\J_//._^LN)#]Z1SW)_08 X%=!110 4444 %%%%
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
MH **** "BBB@#G=:_P"1X\,_]O7_ *+%=%7.ZU_R/'AG_MZ_]%BNBH ****
M"BBB@ HHHH **** "B@D $DX ZDUP/B7XS>$O#]X-.MKF;7-68[4T[2(_M$K
M'TR/E!'4C.<#I0!WU9'B'Q7H/A2S^U>(M5M=/B_A\Z0!G]E7JQ]@#7G_ )GQ
M:\=']VEIX#TF0=7_ -)OF&?3A5R/H1[UK^'O@OX3T2\&HZE#/XAU7(9K_69?
MM#D@Y! /RC'8XR/6@#);XJ^(O%Q:'X6^$KF\A)P-8U<&WM #_$H.&<>PP?:L
M'6_@WXLUO4XM<\6:O!XHEDQ'>Z/%*VGPM$I+(JN@.[8S-C<!G/WACGUS4?%G
MAO0XQ_:NNZ98*/E43W<<?X $^WZ5YOXT^/'AJ">UT;PUKL;7%XV)M1MX&N!:
M)G'R*%(>4]%'W1U;L" :'A7X1:(FJ7&J:]X1T*TC:(0VNEI&MTL2YR9)'=?F
M<\#@8 '4YKT:UTRPLABRL;:W'_3*%4_D*\@T#XT>(-26XT?2?!FJ>(-5LL'S
MY MBLL1/R2.&SL8@'@<$@XP.FWYOQGUMT*6_AKPQ;L/F$CO=W"'\/D/;]>30
M!Z=6?JFOZ/H<)FUK5;+3XQU:ZN%C'_CQ%>?#X3^(]77_ (K#XF:]>?-DQ:8$
ML8R/0A<Y_2M#2_@9\/M,F:8Z"E_.YR\NH2O<%CW)#';D_2@"/4?COX!LKK[+
M::K)JMV1\L&FVSSL_L"!M)X]:H?\+4\7:S'GPC\+]9F4G EU:5+(?4!NOYUZ
M1IVCZ;H\ ATG3[6QB P$MH%C4#TPH%7* /*S8?&O77=;G5_#GAFW;[ILX&N9
MDYX'SY4\=3D>P].&U/X,>([35KBSU#4-:\3QZLWF+/#=BUM?./#M=QY+8 P0
M5))"A>,"OHVJ]WJ%G8!3?7<%L'W;/.D"[MJEFQGKA02?8$T >=V/@_P+\&O
MQU74+&SEFL(B9=0E@5IYY"<[4)Y&2< 9Z8R>":;\-O#.I:OJ\GQ$\;0E-9OX
M]NGV39VZ;:GHH!_C(/)//)Z9(K+T:"3XS^-X_$M^CKX,T.=ETJU<<:C.#@SL
M.ZJ1Q^7]X'V*@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH \'O/A9HMO>,FO_#^_UB]M9Y&MKK2I42'4(V<L@FRZ[74$!B>#C@G.
M*]3^'_AC_A$O!UMIKP6\$QDEGFBM_P#5QM)(S^6IP,JN[:#Z**Z6B@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "L;PI_R+L?_ %WG_P#1SULUC>%/^1=C_P"N
M\_\ Z.>@#9HHHH *Q_$/_,+_ .PC#_6MBL?Q#_S"_P#L(P_UH V**** "BBB
M@ HHHH ;)(D4;22LJ(@+,S'  '<FLK0_%>A^);"ZOM#U*&\M+65H9ITR$5E
M)^8@ C!!R,CWK2N;:"\M9+:\ACG@E4I)%*@974]00>"/:O(WMI6^''Q5M]/B
M^?\ M"\5(XU[>1'P /:COY*_XI?J-*]O-V_!_P"1Z)I/C/0M<OA9Z=>.T[QF
M6(2V\L(N(P>7B9U E7I\R$CD<\TEMXW\/W>K)IT%^3-)(T,3M;R+#-(OWD28
MKY;L,'*JQ/!]#7)>(734]:\!C0I(Y)!!<W">60<0?92N>.VYD'UQ6-;-'<_!
M[X>6=F5^V?VC8(L8.&$D3YFX]0%?/XU?*N:WFE][:O\ (B]XW\F_PN>KZKJ]
MCH=@UYJEP(( P4':69V)P%55!+,3P% )/851MO&.@W6DW>HK?B*WLFV70N8G
MAD@;C"O&X#J3D8!&3D8SFN<\9ZA9W7B'P=<PW4%Q96NO-#<O'('6*;R)556(
M/RD.0,'G)%<EXM&[X@:O?J5;3+?5M$CO''*JZNY.[TV[XL_A4Q5[+N[?E_G^
M14M$_)7_ #T_ ]6T;Q+I>OM/'IL\GG6^WSK>XMY+>:,-]TF.158 X.#C!QQ6
MK7$VH\_XYWTUL0T4&@PQ7!4YP[3.R ^^T$_0^]=J<[3MQG'&:71/^M[!U:_K
M9/\ 4X[Q)KND6/Q#\,VM[JEG;W!^T?NI;A5;YHP%X)SR>!ZUV5?"&LG^UCK.
MIZMJ=G)KAU!Q(LCE@Z@MDH<$'<<* 3PJ\[5(KNM(\8_&ZQ\%:9+IR7\FC&)5
MM;NTTZ*]?RQD<_>/&,?-Z4 ?6M%?*UAX]\5ZK<FUO_C%;Z1= Y>"^TG[.4/H
M6\H*#STS756W@3XA>*;3S=,^-,5]"QW>9I\S <>\;#'TH ]_HKY_E^ OQ GS
MY_Q4OY,G)WRW!Y_&2H;O]FC5;^,I?^,KJZ5CN832.X)]<$4 >_RWMK!GS[F&
M/!P=\@'/XUBZWX]\+>'=-GOM5UVQBCA!RBW"L['&=JJ#EFXZ"O$A^RC#@9UQ
MR>^"/_B*KZM^RP]OI4LNDZ@]U=Q@,L#SJHE /S*#Y> 2,X)XSC/% '5^'?VD
M-&N=6N8O%D,.CV$BM+87,5PMT60'[LJ1%BCXP<8]1Z9CUS]HV&Z$EO\ #GPU
MJ7B&X!QY[6[B)??:H+MVX.WZUYSX3^!6K7.OQQSZ1<>4EPDC2ZG"T,<,:LKL
MK#I*[ ;,)N3#,2V<!?IF"#7[:!8;:+1X8D&%2-9%51[ =* /G>X@^+7Q 99?
M$OAW7;ZQDS_Q*XYTTF =L,&R[J?]K!]#SQW?AWPI\2]$@6V\+>'_  5X5M6
M#DF6XN,=,LXSO.!W_.O4?^*E_P"H5_Y$H_XJ7_J%?^1* .)7P!\1-0F9M<^*
M5Q'$Q),&F:;% 5YZ!^OY@FA?@1H-W$R>)->\2^(%8@LFHZH[*<'/1<=_>NV_
MXJ7_ *A7_D2C_BI?^H5_Y$H P=-^#?P]TJ-4MO"FGR =[I#<$_C(6K5U;P/H
M>IZ;':P6<>F2V[B6TNK"-89;60='0@?A@Y!'!!%6?^*E_P"H5_Y$H_XJ7_J%
M?^1* '>'?#EGX:TYK>T,DTTTAFNKN<[I;J4_>D=NY/IT      K6K'_XJ7_J
M%?\ D2C_ (J7_J%?^1* -BBL?_BI?^H5_P"1*/\ BI?^H5_Y$H V**P+V^UO
M3;*6\U"YT2UMH5+R33.Z(@]23P*\[7XH>+_&-_+IGPTTRROHT;RY=<GCD2TA
M/?;N(+GZ#T."* /3/$OBO0_"&EMJ'B/4H;"W'"F1OFD.,[54<L?8 U\^>*QK
M?QWU2?4])^SZ3X?TR"6*R_M&8)+=2@'> @.5WD*I)Z <'EA7H>@_"74;/6AK
M_BB\L_$^N]1=:BSLD/M'& %4#MQQVQ6[+\/;">9Y9O"/@R221BSN^F*2Q/))
M.WDT ;_@R^TO4?!6DW6@0K;Z<]J@@@48\D 8*8[%2"#[@UMUSUAIVL:591V>
MEV>A65K'G9!;1/&B9.>%4 #FK/\ Q4O_ %"O_(E &Q16/_Q4O_4*_P#(E'_%
M2_\ 4*_\B4 ;%%8__%2_]0K_ ,B4?\5+_P!0K_R)0!L45C_\5+_U"O\ R)1_
MQ4O_ %"O_(E &Q16/_Q4O_4*_P#(E'_%2_\ 4*_\B4 ;%%8__%2_]0K_ ,B4
M?\5+_P!0K_R)0!L45C_\5+_U"O\ R)1_Q4O_ %"O_(E &Q16/_Q4O_4*_P#(
ME'_%2_\ 4*_\B4 ;%%8__%2_]0K_ ,B4?\5+_P!0K_R)0!L45C_\5+_U"O\
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
M!;:<;9-\9.V0YE?+;3M[9 7TKKJ "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH *QO"G_(NQ_P#7>?\ ]'/6S6-X4_Y%V/\ Z[S_ /HY
MZ -FBBB@ K'\0_\ ,+_[",/]:V*Q_$/_ #"_^PC#_6@#8HHHH **** "BBB@
M HHHH **** "BBB@ HHHH YW6O\ D>/#/_;U_P"BQ715SNM?\CQX9_[>O_18
MKHJ "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ K&\*?\B['_ -=Y_P#T<];-
M8WA3_D78_P#KO/\ ^CGH V:*** "L?Q#_P PO_L(P_UK8K'\0_\ ,+_[",/]
M: -BBBB@ HHHH **** "BBHKJ?[-:33E=WE1L^,XS@9I-I*[&E=V):*YOPYK
MFO:O8VVI:II&F6.G7-JMPLD&IR3RJ&4, 4,"#H>?FX]ZR[3XASSQZ7J=QHOD
M:!K%RMM9WHNMTV7)$;R0[ %1B."'8\C(&3BN5WY24TUS+8[BBL7Q+XB&@06:
M0VIO+_4+D6MG;!]@DD(+?,^#M4*I).#P. 3Q6&_Q%^PQ:C;:SI30:Q8W%O;B
MRMI_.2X:<XA,<A5>"<Y+*,8/'JEK_7]=Q[';45SFB>)KJ\\076@ZYIL>GZG;
MVZ706WN3<0RQ,Q7*N40Y!4@@J.V,UT= '.ZU_P CQX9_[>O_ $6*Z*N=UK_D
M>/#/_;U_Z+%=%0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %8WA3_D78_\
MKO/_ .CGK9K&\*?\B['_ -=Y_P#T<] &S1110 5C^(?^87_V$8?ZUL5C^(?^
M87_V$8?ZT ;%%%% !1110 4444 %0W;B.RF<P/<A8V)A0 M)Q]T D D].3BI
MJ* 1Y;!H=C>>+M/;P+X?N/#]HL%PFK2?V8^GQ2JT95(RC*GF,'.0R@@ 'GFJ
MVGV.HZCX-\)^#I=*U"WO](O+1KZ62T=((X[=MV]92 C[MJ@!23\W(&#7K=%4
MI--?)_<[K\Q/7\?Q. \37%WJEUHFNVNCZHL7A_6I1<P26I\V6+RWB,T2#)D7
M+@C R1G K UG1=3UK6]1\7V&FWODQ7^FR6]K- T4UQ%;LQE81-AA_K3A6 )V
M=.17KU%)-JWE_P #_(;UOV>GRU_S.*T2*76_B5=^)HK2\MM/CTJ.PA-Y;/;O
M*_FL[D1R . /E&2!G)QFNT(RI'(R.U+12Z67]=0ZM_UM;]#BM5T.*+Q=H$ O
M=083?:,N]XY9<1@_*V<KGOCK6Y_PC4/_ $$M6_\  ^3_ !JMK7_(\>&?^WK_
M -%BNBH QO\ A&H?^@EJW_@?)_C1_P (U#_T$M6_\#Y/\:V:* ,;_A&H?^@E
MJW_@?)_C1_PC4/\ T$M6_P# ^3_&MFB@#&_X1J'_ *"6K?\ @?)_C1_PC4/_
M $$M6_\  ^3_ !K9HH QO^$:A_Z"6K?^!\G^-'_"-0_]!+5O_ ^3_&MFB@#&
M_P"$:A_Z"6K?^!\G^-'_  C4/_02U;_P/D_QK9HH QO^$:A_Z"6K?^!\G^-'
M_"-0_P#02U;_ ,#Y/\:V:* ,;_A&H?\ H):M_P"!\G^-'_"-0_\ 02U;_P #
MY/\ &MFB@#&_X1J'_H):M_X'R?XT?\(U#_T$M6_\#Y/\:V:* ,;_ (1J'_H)
M:M_X'R?XT?\ "-0_]!+5O_ ^3_&MFB@#&_X1J'_H):M_X'R?XT?\(U#_ -!+
M5O\ P/D_QK9HH QO^$:A_P"@EJW_ ('R?XT?\(U#_P!!+5O_  /D_P :V:*
M,;_A&H?^@EJW_@?)_C1_PC4/_02U;_P/D_QK9HH QO\ A&H?^@EJW_@?)_C1
M_P (U#_T$M6_\#Y/\:V:* ,;_A&H?^@EJW_@?)_C1_PC4/\ T$M6_P# ^3_&
MMFB@#&_X1J'_ *"6K?\ @?)_C1_PC4/_ $$M6_\  ^3_ !K9HH QO^$:A_Z"
M6K?^!\G^-'_"-0_]!+5O_ ^3_&MFB@#&_P"$:A_Z"6K?^!\G^-'_  C4/_02
MU;_P/D_QK9HH QO^$:A_Z"6K?^!\G^-'_"-0_P#02U;_ ,#Y/\:V:* ,;_A&
MH?\ H):M_P"!\G^-'_"-0_\ 02U;_P #Y/\ &MFB@#&_X1J'_H):M_X'R?XT
M?\(U#_T$M6_\#Y/\:V:* ,;_ (1J'_H):M_X'R?XT?\ "-0_]!+5O_ ^3_&M
MFB@#&_X1J'_H):M_X'R?XT?\(U#_ -!+5O\ P/D_QK9HH QO^$:A_P"@EJW_
M ('R?XT?\(U#_P!!+5O_  /D_P :V:* ,;_A&H?^@EJW_@?)_C1_PC4/_02U
M;_P/D_QK9HH QO\ A&H?^@EJW_@?)_C1_P (U#_T$M6_\#Y/\:V:* ,;_A&H
M?^@EJW_@?)_C1_PC4/\ T$M6_P# ^3_&MFB@#&_X1J'_ *"6K?\ @?)_C1_P
MC4/_ $$M6_\  ^3_ !K9HH QO^$:A_Z"6K?^!\G^-'_"-0_]!+5O_ ^3_&MF
MB@#&_P"$:A_Z"6K?^!\G^-'_  C4/_02U;_P/D_QK9HH QO^$:A_Z"6K?^!\
MG^-'_"-0_P#02U;_ ,#Y/\:V:* ,;_A&H?\ H):M_P"!\G^-'_"-0_\ 02U;
M_P #Y/\ &MFB@#&_X1J'_H):M_X'R?XT?\(U#_T$M6_\#Y/\:V:* ,;_ (1J
M'_H):M_X'R?XT?\ "-0_]!+5O_ ^3_&MFB@#&_X1J'_H):M_X'R?XT?\(U#_
M -!+5O\ P/D_QK9HH QO^$:A_P"@EJW_ ('R?XT?\(U#_P!!+5O_  /D_P :
MV:* ,;_A&H?^@EJW_@?)_C1_PC4/_02U;_P/D_QK9HH QO\ A&H?^@EJW_@?
M)_C1_P (U#_T$M6_\#Y/\:V:* ,;_A&H?^@EJW_@?)_C6C8V:V-OY*33S#<3
MNN)3(WYGM5BB@ HHHH **** "L;PI_R+L?\ UWG_ /1SULUC>%/^1=C_ .N\
M_P#Z.>@#9HHHH *Q_$/_ #"_^PC#_6MBL?Q#_P PO_L(P_UH V**** "BBB@
M HHHH **** "BBB@ HHHH **** .=UK_ )'CPS_V]?\ HL5T5<[K7_(\>&?^
MWK_T6*Z*@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *QO"G_(NQ_P#7>?\
M]'/6S6-X4_Y%V/\ Z[S_ /HYZ -FBBB@ K'\0_\ ,+_[",/]:V*Q_$/_ #"_
M^PC#_6@#8HHHH **** "BBB@ HHHH **** "BBB@ HHHH YW6O\ D>/#/_;U
M_P"BQ715SNM?\CQX9_[>O_18KHJ "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ K&\*?\B['_ -=Y_P#T<];-8WA3_D78_P#KO/\ ^CGH V:*** "L?Q#_P P
MO_L(P_UK8K'\0_\ ,+_[",/]: -BBBB@ HHHH **** "BBB@ HHHH **** "
MBBB@#G=:_P"1X\,_]O7_ *+%=%7.ZU_R/'AG_MZ_]%BNBH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "L;PI_R+L?\ UWG_ /1SULUC>%/^1=C_ .N\_P#Z
M.>@#9HHHH *Q_$/_ #"_^PC#_6MBL?Q#_P PO_L(P_UH V**** "BBB@ HHH
MH **** (KF=;6TFN'^[$C.?H!FO-+7Q/XB@\/>&_%UWJAEM];O+>*;2C!&(8
M(KAMJ>6P42;URN2S$'G@<8]-FB6>WDAD^Y(I5L>A&*\_T[P/KBZ7H?AW4Y-/
M;1=#N8IXKF*5VGNEB.8D:,H%3!VY(9L[>@SPXVYM>Z^Z^OX _A^__@&UXMU>
M_@U?0M!TFY^QSZQ/(LEV%5W@BCC+L45@5+$[0"P(&>AKF;CQGKFDS:MX>:\2
M\U&#5;.PL[^>)58I<J&WNB *S( _0 ' XZUNZGH'B34FTK5I'TO^V='OYY8(
M4>1+>>W<,@1V*LRML*DD*0&' Q5"Z\ :EJ-KJ.I7-S:0:]>:E;:C&(F9X(3;
MA0D18@,P(#9;:/O=.*2M?7;K]Z_2X/R_IZ_\ T=#U+5-/^(%WX7U34I-6A_L
MY+^WNKB*-)E_>%'1O+55(R 0=H/7.:[ D $DX ZFN8T30M3;Q7=>)/$"V<-Y
M+9I90VUG*TR11JS.29&1"Q8D<;1C Z]:Z?KUI]%??_@_Y6%U=MO^ K_C<Y#5
MM9TN3QCX>FCU*T>*'[3YDBSJ53,8 R<\9-;W_"1:+_T&+#_P*3_&HK_P_:7U
M[8R/;VQAMW=I(FA!$@*%0,=."0?PJ7_A'=%_Z ]A_P" J?X4AA_PD6B_]!BP
M_P# I/\ &C_A(M%_Z#%A_P"!2?XT?\([HO\ T![#_P !4_PH_P"$=T7_ * ]
MA_X"I_A0 ?\ "1:+_P!!BP_\"D_QH_X2+1?^@Q8?^!2?XT?\([HO_0'L/_ 5
M/\*/^$=T7_H#V'_@*G^% !_PD6B_]!BP_P# I/\ &C_A(M%_Z#%A_P"!2?XT
M?\([HO\ T![#_P !4_PH_P"$=T7_ * ]A_X"I_A0 ?\ "1:+_P!!BP_\"D_Q
MH_X2+1?^@Q8?^!2?XU4M/"FF07-Y)-I]C*DTH>)3;*?+7:!M''J">/6K?_".
MZ+_T![#_ ,!4_P * #_A(M%_Z#%A_P"!2?XT?\)%HO\ T&+#_P "D_QH_P"$
M=T7_ * ]A_X"I_A1_P ([HO_ $![#_P%3_"@ _X2+1?^@Q8?^!2?XT?\)%HO
M_08L/_ I/\:/^$=T7_H#V'_@*G^%'_".Z+_T![#_ ,!4_P * #_A(M%_Z#%A
M_P"!2?XT?\)%HO\ T&+#_P "D_QH_P"$=T7_ * ]A_X"I_A45UX9TB:SFBAT
MNQCD>-E5Q;)\I(X/2@"7_A(M%_Z#%A_X%)_C1_PD6B_]!BP_\"D_QJ*U\,Z1
M#9PQ3:78R2)&JLYMD^8@<GI4O_".Z+_T![#_ ,!4_P * #_A(M%_Z#%A_P"!
M2?XT?\)%HO\ T&+#_P "D_QH_P"$=T7_ * ]A_X"I_A1_P ([HO_ $![#_P%
M3_"@ _X2+1?^@Q8?^!2?XT?\)%HO_08L/_ I/\:/^$=T7_H#V'_@*G^%'_".
MZ+_T![#_ ,!4_P * #_A(M%_Z#%A_P"!2?XT?\)%HO\ T&+#_P "D_QH_P"$
M=T7_ * ]A_X"I_A52Y\*:9-?64T6GV,<4#LTL8MEQ*"A !X[$@\^E %O_A(M
M%_Z#%A_X%)_C1_PD6B_]!BP_\"D_QH_X1W1?^@/8?^ J?X4?\([HO_0'L/\
MP%3_  H /^$BT7_H,6'_ (%)_C1_PD6B_P#08L/_  *3_&C_ (1W1?\ H#V'
M_@*G^%'_  CNB_\ 0'L/_ 5/\* #_A(M%_Z#%A_X%)_C1_PD6B_]!BP_\"D_
MQH_X1W1?^@/8?^ J?X4?\([HO_0'L/\ P%3_  H /^$BT7_H,6'_ (%)_C1_
MPD6B_P#08L/_  *3_&C_ (1W1?\ H#V'_@*G^%5+;PIID-]>S2Z?8R13NK11
MFV7$0" $#CN03QZT 6_^$BT7_H,6'_@4G^-'_"1:+_T&+#_P*3_&C_A'=%_Z
M ]A_X"I_A1_PCNB_] >P_P# 5/\ "@ _X2+1?^@Q8?\ @4G^-'_"1:+_ -!B
MP_\  I/\:/\ A'=%_P"@/8?^ J?X4?\ ".Z+_P! >P_\!4_PH /^$BT7_H,6
M'_@4G^-'_"1:+_T&+#_P*3_&C_A'=%_Z ]A_X"I_A1_PCNB_] >P_P# 5/\
M"@ _X2+1?^@Q8?\ @4G^-'_"1:+_ -!BP_\  I/\:KWWA?2;G3KF"WTVQAEE
MB9$E%L@*,00&X'8\T^U\,Z1#9PQ3:78R2)&JLYMD^8@<GI0!+_PD6B_]!BP_
M\"D_QH_X2+1?^@Q8?^!2?XT?\([HO_0'L/\ P%3_  H_X1W1?^@/8?\ @*G^
M% !_PD6B_P#08L/_  *3_&C_ (2+1?\ H,6'_@4G^-'_  CNB_\ 0'L/_ 5/
M\*/^$=T7_H#V'_@*G^% !_PD6B_]!BP_\"D_QH_X2+1?^@Q8?^!2?XT?\([H
MO_0'L/\ P%3_  H_X1W1?^@/8?\ @*G^% !_PD6B_P#08L/_  *3_&C_ (2+
M1?\ H,6'_@4G^-5+GPIIDU]931:?8QQ0.S2QBV7$H*$ 'CL2#SZ5;_X1W1?^
M@/8?^ J?X4 '_"1:+_T&+#_P*3_&C_A(M%_Z#%A_X%)_C1_PCNB_] >P_P#
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
M$7*,F&1BK## '@@BN)\*/<6GBK6M9E.MZCI[V,0DO]4TJ2&ZWH6Q#'"L2%U
M8GY8^IZMVR-+UB>W^'FJ:3!:ZG9:GJFKW-O:BZTZ>W.+FX<K(ID10<1DN0.0
M!SBBW;?];V#3KW_"U_P.TL?'^DS:?976HRK9'4;HP64>6E:93*8XWPJ_*'P"
M">!GK5_5O%NCZ)=_9K^:?S5022>19S3B%#G#2-&C"->#RQ X/H:YCQ\(-*T3
MP_I&G:=J,R66H64RI8Z9/<+'!%(NXDQHP& .F<GL*RO&*7FH:]?7-O%K5E'<
MZ=$MHMEID\B:F?F/EW6%S$ 6VX/EL S9;' -+77=KY67_!!;Z]OU/5$D22-9
M$8,C#<&!X(]:Q=/\9:%JFI"QLKQFF8,8F>WDCCG"_>,4C*$DQWV$XJVD-S=>
M&5AFA2TNI;38T49RL3E,%0?0'C\*\O&E:KKOA7PQH%GI=]8ZAHEE+'=R7-J\
M4<;_ &.2!0DA 63<[@Y0L,#)Q2EIS>7_  ?\OQ".J5^O]?B>E:7XGTO6KQK?
M37N9L(76<V4RP2+P,I,R"-^O\+&J">.;!6U!KN*9(+:\>T@:VADNI+DHJF1A
M'$A8!68J3R/EYQ7"Z=J-[X9LX=1LK?Q!%;V6D/'J5MJ9G\MKSY%ACA64XSO+
M#,/R8(YZ5T\]BWAGP+I>D&\URSD\LFXO=%T\74C2D9?<OE2$;F9FW!>H^\.[
MDK7M_6O_  /Q01UM_73_ (/X,V[GQMH%K86=X;U[B*^C,MLMI;2W$DB#[S!(
MU9MHR,DC SS3M4\4VMGX=M=5TW9J*WTL,5FL<F!.TKA5PV#QR2>.@-<'X7BU
M'PG<Z/?ZSHE\MH-(EL$6QLY+AXBLY9"\:;W5I$P23D!A@D5:\':;<2ZMH6DZ
MA;^5_8-M+J%Q PSY,]P[^2F1QE8S)GTR*=E?Y_DW^:7XBO\ U]WZNQW-KXGT
M>]UNYTBUOHY;VUB\Z9%#%47<5/SXVY# @C.01S4&E>,M"UN^6TTV\>25T,D3
M/;RQI.HZM$[*%E R,E"<9KFO[0BG^,-R\FG:NUI)I(L#,=)NA$THF8E?,\O;
MC!^]G:>QK/\ #^AR2^+/#PTBX\0R:-H:3$#6+/[,MN#'Y:0Q[HHY).&SN)<
M(.<FIAJE?S_-_P# ^_T'+1M+R_)?K?[O4](U#4;32K-[O4)T@@3 +N>YZ #J
M2>P')K.;Q?HHT&RUA+B::SOU#VOV>TEEDF!&?EB52YXY/R\#K5O6[Z+3M'N)
MYX[F1=I7;:VLEPY)X&$C5F/Y<5Y_X>\2WGA[X/Z';6VB:PVIQ0163QR:/=?Z
M-($Y=U$>YD7U4$$\ ^AT?R_7_@?>/L=G<^+M+3P7<>)K&=;VQC@:5#&<&0CC
M9@C(;=\N",@\8IB^,M*BOK;3]0DDMKZ8I&R^1*T"3,,^5Y^P1[^VTD$\<<UR
M-C96$UOX7\)Z:+N6W$[ZG?M>V4EL\HB?>6:.15*[IW4@8P0#CI4_C'[=J/B2
MQCT]=;N;BTU&WD339]/_ .)>RJPW3>>J#! RP!E/S ?)VJK+F2[O\._Y_=TU
M)Z?U_7_#G90^)-(N/$+Z'!>K)J*1-,T**QVJK!6RV-N06 QG//2H+CQ-;VWB
M6;3)1&D-K9"ZNKIY=HAW/MC3&.2V'/7L.#FN;O-6CC^,MI<-9:K]FATN:SDN
M1I5R85E::-@/,\O;MPI._.T8Y-7/!UU&-"U/Q;=Q3M_;%RUTHA@>:3[.N(X0
M$0%CE%#8 /WS4KX5+R?YM+\-1O=KT_S_ . :Z^,]!D\/1:W'?%K&:4PQ,L$A
M>60,5*+'MWLV5(P%)..*O:1K-CKEF;K3)FDC5S&ZR1/$\;CJK(X#*1Z$ UYI
MX>2TN/A[;0ZK;>)--N].U2:ZBFMM'N1/ SS3%'5&A8."C$'Y6 W<@5T_P[TJ
M_LX];U#46O"=4U#SX?MR*D[1K$D8=U4*%+;"=NT8&,@&JMJ_Z[?\$3Z?UW_X
M!KZQXPT30;O[-J=W(DJQB6016TLP@C)P'D**1&N0?F<@<'G@T^^\5Z1I]Y':
MRS3SS.BOML[.:YV*WW6<Q*P13S@M@<'TKDM9-UI/B#Q8DNDZA?#7+.);%K:T
M>9'<1M&8F901'R0<N57#'G@US/\ PCFMZ%%JUI$NO?V[+%:G2)]/>?[*72VB
MC/FE3Y6 T9R)>,?=SFE'7?\ KR^0W_7X'J.M^)(=%U'3;22-7-XTC2NTFT00
MQH6>4\'(!VKCCEAS4=IXUT&[M[Z9;U[==/027*WEM+;/&ASM?;(JL5.#@@$'
M'%9&E3-J7BC7]?:*:==-A&EVWD(K.S(-\YCSP27*K]8ZXZ[TC5]4EUJ[TZ/6
M=8A=+&9KG5K#[)=2-!<"0VZ(4B#+LW'A!\QQN;L+L_Z_I!_7]?UT/4=&\2Z7
MKQG73YI1+;;3-#<VTEO+&&&58QRJK;3@X.,'!QTK'M_B+I T9-2U3S;2&5I'
MC\J&6XQ;J[*L[F-#Y:,%SEL  ]:Y?7M0NK[5-5U/2[2]LQJ]E;:'9275K);R
MO.\DA=A'(%;$:,6R1@X.,XK6\:W0TW1K3P=INGZC#8W5K]GGOK/2Y[J.UMP-
MA51$C?O&&0 >!U/8%=/Z_KL_F-6O;^OZW7JCH=2\;>'])DC6\OR=\*W!>WMY
M)TCB;I)(T:L(T//S,0.#SQ6ZCK)&KQL&1AE6!R"/6O,) =%N/$$-KHNJ7-IK
M6F6\>EK'I\K [83'Y,GRYAP2#^]VCYCZ&N_\/V,NF>&=,L;DAIK6TBAD(.<L
MJ ']13MO_7?\OU)N]/Z[?GK]Q#9>*M$U&ZU""RU".5]-19+I@"$C5@Q!WD;2
M/E;H3TI-(\5Z/KE]-9Z?<2?:H4$CP7%M+ Y0G =5D52R$C[PR/>N5T?6HX_B
M9XEO6T[6A;W%G;+#(VC72K(T(E+@$Q@9Y&.?F) &:SK+Q.B2:YXRU.PU2VU0
MV/D6=C<Z5<P"&(-\D9EDC57E>1QD GL!G!)7^15NG]=#K4\<V"MJ#7<4R06U
MX]I UM#)=27)15,C".)"P"LQ4GD?+SBK-YXU\.V.CVNJ7.J1"SO IMW16<R
ML%R%4%L9903CC(SBL.>Q;PSX%TO2#>:Y9R>63<7NBZ>+J1I2,ON7RI"-S,S;
M@O4?>'?G-52]L/@=9Z)<Z-?K?,Z+!;66GSSGRX[E6#2; ^QB@#$,>I('/%/;
MY67^8M[/O<]'\1:V-!TQ+A8/M,\UQ%;00;]OF22.% S@X R2>.@-06_C+0[K
M6UTF*\<7<A<1>9;RI',4^^(Y&4)(1W"L<8/I6.+R'Q5\0--6".;['HUJ;YUN
M+=X6$\N8X@4<!E(02G! /S*:RY[T>+?&@^V66KV*::)X--271[E5DF="C3M*
M8]BK@D*-W.23V%3LOO\ Z^_\PT_+^ON.MT[QCH>JZD+"QO'>9PQB+V\D<<X7
M[WE2,H23'?83BMNO+_#MK>WL?@73#I5]9W'AL9U![BU>*-"ML\.U)" LFYF!
M^0L,#G%>H5<DD]'<2;"L;PI_R+L?_7>?_P!'/6S6-X4_Y%V/_KO/_P"CGJ1F
MS1110 5C^(?^87_V$8?ZUL5C^(?^87_V$8?ZT ;%%%% !1110 4444 %%%%
M!1110 4444 !&1@U%;6MO96L=M9P1V\$2[8XHD"J@] !P!4M% !44EK;S7$,
M\L$;S0$F*1D!:/(P=IZC(XXJ6B@ HHHH **** (I[6WNA&+F".;RG$B>8@;8
MXZ,,]"/6I:** "HHK6W@FFFA@BCEN&#3.B -(0, L>Y  '/85+10 4444 %%
M%% $0M;=;QKL01"Y9!&TP0;R@)(4MUP"2<>YJ6N;\0>*KC2?$&FZ+IND2:G>
MZA#-.H$ZQ*B1% <EN_[P4S^W?%7_ $)O_E4B_P * .CG@ANK>2WNHDFAE4I)
M'(H974C!!!X(/I3T18T5(U"JHPJJ, #TKF?[=\5?]";_ .52+_"C^W?%7_0F
M_P#E4B_PH Z>BN8_MWQ5_P!";_Y5(O\ "C^W?%7_ $)O_E4B_P * .GHKF/[
M=\5?]";_ .52+_"C^W?%7_0F_P#E4B_PH Z*VM;>SMU@LX([>%22L<2!5&3D
M\#W)-2US']N^*O\ H3?_ "J1?X4?V[XJ_P"A-_\ *I%_A0!T4UI;W$T,L\$4
MLENQ>%W0$QL05)4GH<$C([$U+7,?V[XJ_P"A-_\ *I%_A1_;OBK_ *$W_P J
MD7^% '3T5S']N^*O^A-_\JD7^%']N^*O^A-_\JD7^% '3U%<VEO>1JEW!%.B
MNLBK*@8!E.58 ]P0"#V(KG?[=\5?]";_ .52+_"C^W?%7_0F_P#E4B_PH Z>
MBN8_MWQ5_P!";_Y5(O\ "C^W?%7_ $)O_E4B_P * .BBM;>":::&"*.6X8-,
MZ( TA P"Q[D  <]A4M<Q_;OBK_H3?_*I%_A1_;OBK_H3?_*I%_A0!T]%<Q_;
MOBK_ *$W_P JD7^%']N^*O\ H3?_ "J1?X4 =/40M;=;QKL01"Y9!&TP0;R@
M)(4MUP"2<>YKG?[=\5?]";_Y5(O\*/[=\5?]";_Y5(O\* .GILD:31/%,BR1
MNI5D89# ]01W%<U_;OBK_H3?_*I%_A1_;OBK_H3?_*I%_A0!TD,,=O"D,$:Q
M11J%1$4!5 X  '04^N8_MWQ5_P!";_Y5(O\ "C^W?%7_ $)O_E4B_P * .GH
MKF/[=\5?]";_ .52+_"C^W?%7_0F_P#E4B_PH Z>HK:UM[.W6"S@CMX5)*QQ
M(%49.3P/<DUSO]N^*O\ H3?_ "J1?X4?V[XJ_P"A-_\ *I%_A0!T]136EO<3
M0RSP12R6[%X7= 3&Q!4E2>AP2,CL37._V[XJ_P"A-_\ *I%_A1_;OBK_ *$W
M_P JD7^% '3T5S']N^*O^A-_\JD7^%']N^*O^A-_\JD7^% '3T5S']N^*O\
MH3?_ "J1?X4?V[XJ_P"A-_\ *I%_A0!T5S:6]Y&J7<$4Z*ZR*LJ!@&4Y5@#W
M! (/8BI:YC^W?%7_ $)O_E4B_P */[=\5?\ 0F_^52+_  H Z>HHK6W@FFFA
M@BCEN&#3.B -(0, L>Y  '/85SO]N^*O^A-_\JD7^%']N^*O^A-_\JD7^% '
M3T5S']N^*O\ H3?_ "J1?X58\*^)W\1_VI%<:=)I]UI=X;2>%I5D&[RT?(9>
MHPXH WZ*** (A:VZWC78@B%RR"-I@@WE 20I;K@$DX]S4M%% #9(TFB>*9%D
MC=2K(PR&!Z@CN*2&&.WA2&"-8HHU"HB* J@<  #H*?10 4444 %%%% $5M:6
M]G"8K."*WC+,Y2) HW,2S' [DDDGN34M%% $4UI;W$T,L\$4LENQ>%W0$QL0
M5)4GH<$C([$U+110 4444 %17-I;WD:I=P13HKK(JRH& 93E6 /<$ @]B*EH
MH **** (HK6W@FFFA@BCEN&#3.B -(0, L>Y  '/85+110 4444 %8WA3_D7
M8_\ KO/_ .CGK9K&\*?\B['_ -=Y_P#T<] &S1110 5C^(?^87_V$8?ZUL5C
M^(?^87_V$8?ZT ;%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110!Q6L_\ ):_"W_8*U#_T*WKM&944L[!5
M'4DXKB]9_P"2U^%O^P5J'_H5O71^(?#NE>*M$GTC7[07=A/M\R$NR9P01RI!
M'('0T 7?M=O_ ,]XO^^Q6-XJ\9:3X0T"35M3D:6)'5!%; /)(S'&%7//&3]
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
MTG_PH#_\C4?VWX__ .A+TG_PH#_\C5M_\)/H7_07L_\ O\M'_"3Z%_T%[/\
M[_+0!B?VWX__ .A+TG_PH#_\C4?VWX__ .A+TG_PH#_\C5M_\)/H7_07L_\
MO\M'_"3Z%_T%[/\ [_+0!B?VWX__ .A+TG_PH#_\C4?VWX__ .A+TG_PH#_\
MC5M_\)/H7_07L_\ O\M'_"3Z%_T%[/\ [_+0!B?VWX__ .A+TG_PH#_\C4?V
MWX__ .A+TG_PH#_\C5M_\)/H7_07L_\ O\M'_"3Z%_T%[/\ [_+0!B?VWX__
M .A+TG_PH#_\C4?VWX__ .A+TG_PH#_\C5M_\)/H7_07L_\ O\M'_"3Z%_T%
M[/\ [_+0!B?VWX__ .A+TG_PH#_\C4?VWX__ .A+TG_PH#_\C5M_\)/H7_07
ML_\ O\M'_"3Z%_T%[/\ [_+0!B?VWX__ .A+TG_PH#_\C4?VWX__ .A+TG_P
MH#_\C5M_\)/H7_07L_\ O\M'_"3Z%_T%[/\ [_+0!B?VWX__ .A+TG_PH#_\
MC4?VWX__ .A+TG_PH#_\C5M_\)/H7_07L_\ O\M'_"3Z%_T%[/\ [_+0!B?V
MWX__ .A+TG_PH#_\C4?VWX__ .A+TG_PH#_\C5M_\)/H7_07L_\ O\M'_"3Z
M%_T%[/\ [_+0!B?VWX__ .A+TG_PH#_\C4?VWX__ .A+TG_PH#_\C5M_\)/H
M7_07L_\ O\M'_"3Z%_T%[/\ [_+0!B?VWX__ .A+TG_PH#_\C4?VWX__ .A+
MTG_PH#_\C5M_\)/H7_07L_\ O\M'_"3Z%_T%[/\ [_+0!B?VWX__ .A+TG_P
MH#_\C4?VWX__ .A+TG_PH#_\C5M_\)/H7_07L_\ O\M'_"3Z%_T%[/\ [_+0
M!B?VWX__ .A+TG_PH#_\C4?VWX__ .A+TG_PH#_\C5M_\)/H7_07L_\ O\M'
M_"3Z%_T%[/\ [_+0!B?VWX__ .A+TG_PH#_\C4_P)H^L:=+X@OO$%M;6EQJV
MIF[6WM[@SB-?)C3!<JN3E">E;'_"3Z%_T%[/_O\ +1_PD^A?]!>S_P"_RT :
MM%97_"3Z%_T%[/\ [_+1_P )/H7_ $%[/_O\M &K165_PD^A?]!>S_[_ "T?
M\)/H7_07L_\ O\M &K165_PD^A?]!>S_ ._RT?\ "3Z%_P!!>S_[_+0!JT5E
M?\)/H7_07L_^_P M'_"3Z%_T%[/_ +_+0!JT5E?\)/H7_07L_P#O\M'_  D^
MA?\ 07L_^_RT :M%97_"3Z%_T%[/_O\ +1_PD^A?]!>S_P"_RT :M%97_"3Z
M%_T%[/\ [_+1_P )/H7_ $%[/_O\M &K165_PD^A?]!>S_[_ "T?\)/H7_07
ML_\ O\M &K165_PD^A?]!>S_ ._RT?\ "3Z%_P!!>S_[_+0!JT5E?\)/H7_0
M7L_^_P M'_"3Z%_T%[/_ +_+0!JT5E?\)/H7_07L_P#O\M'_  D^A?\ 07L_
M^_RT :M%97_"3Z%_T%[/_O\ +1_PD^A?]!>S_P"_RT :M8WA3_D78_\ KO/_
M .CGJ3_A)]"_Z"]G_P!_EJ+PBZR>&H70AE::<@CH1YST ;5%%% !2,JN,, P
M]"*6B@!GD1?\\D_[Y%'D1?\ /)/^^13Z* &>1%_SR3_OD4>1%_SR3_OD4^B@
M!GD1?\\D_P"^11Y$7_/)/^^13Z* &>1%_P \D_[Y%'D1?\\D_P"^13Z* &>1
M%_SR3_OD4>1%_P \D_[Y%/HH 9Y$7_/)/^^11Y$7_/)/^^13Z* &>1%_SR3_
M +Y%'D1?\\D_[Y%/HH 9Y$7_ #R3_OD4>1%_SR3_ +Y%/HH 9Y$7_/)/^^11
MY$7_ #R3_OD4^B@!GD1?\\D_[Y%'D1?\\D_[Y%/HH 9Y$7_/)/\ OD4>1%_S
MR3_OD4^B@!GD1?\ /)/^^11Y$7_/)/\ OD4^B@!GD1?\\D_[Y%'D1?\ /)/^
M^13Z* &>1%_SR3_OD4>1%_SR3_OD4^B@!GD1?\\D_P"^11Y$7_/)/^^13Z*
M&>1%_P \D_[Y%'D1?\\D_P"^13Z* &>1%_SR3_OD4>1%_P \D_[Y%/HH 9Y$
M7_/)/^^11Y$7_/)/^^13Z* &>1%_SR3_ +Y%'D1?\\D_[Y%/HH 9Y$7_ #R3
M_OD4>1%_SR3_ +Y%/HH 9Y$7_/)/^^11Y$7_ #R3_OD4^B@!GD1?\\D_[Y%'
MD1?\\D_[Y%/HH 9Y$7_/)/\ OD4>1%_SR3_OD4^B@!GD1?\ /)/^^11Y$7_/
M)/\ OD4^B@!GD1?\\D_[Y%'D1?\ /)/^^13Z* &>1%_SR3_OD4>1%_SR3_OD
M4^B@!GD1?\\D_P"^11Y$7_/)/^^13Z* &>1%_P \D_[Y%'D1?\\D_P"^13Z*
M &>1%_SR3_OD4>1%_P \D_[Y%/HH 9Y$7_/)/^^11Y$7_/)/^^13Z* &>1%_
MSR3_ +Y%'D1?\\D_[Y%/HH 9Y$7_ #R3_OD4>1%_SR3_ +Y%/HH 9Y$7_/)/
M^^11Y$7_ #R3_OD4^B@!GD1?\\D_[Y%'D1?\\D_[Y%/HH 9Y$7_/)/\ OD4>
M1%_SR3_OD4^B@!GD1?\ /)/^^11Y$7_/)/\ OD4^B@!GD1?\\D_[Y%'D1?\
M/)/^^13Z* &>1%_SR3_OD4>1%_SR3_OD4^B@!GD1?\\D_P"^11Y$7_/)/^^1
M3Z* &>1%_P \D_[Y%'D1?\\D_P"^13Z* &>1%_SR3_OD4>1%_P \D_[Y%/HH
M 9Y$7_/)/^^11Y$7_/)/^^13Z* &>1%_SR3_ +Y%'D1?\\D_[Y%/HH 9Y$7_
M #R3_OD4>1%_SR3_ +Y%/HH 9Y$7_/)/^^11Y$7_ #R3_OD4^B@!GD1?\\D_
M[Y%'D1?\\D_[Y%/HH 9Y$7_/)/\ OD4>1%_SR3_OD4^B@!GD1?\ /)/^^11Y
M$7_/)/\ OD4^B@!GD1?\\D_[Y%. "C"@ >@I:* "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
/ HHHH **** "BBB@#__9

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>15
<FILENAME>prlb20201119_10k_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/2020-01-31"
  xmlns:dei="http://xbrl.sec.gov/dei/2019-01-31"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:prlb="http://www.protolabs.com/20201231"
  xmlns:srt="http://fasb.org/srt/2020-01-31"
  xmlns:thunderdome="http://www.RDGFilings.com"
  xmlns:us-gaap="http://fasb.org/us-gaap/2020-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-20201231.xsd" xlink:type="simple"/>
    <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_2020-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2020-06-30</instant>
        </period>
    </context>
    <context id="i_2021-02-10">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2021-02-10</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="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_2019-01-01_2019-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i_2017-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>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2017-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>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2017-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>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2017-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>2017-12-31</instant>
        </period>
    </context>
    <context id="i_2017-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="d_2018-01-01_2018-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>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-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>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-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>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-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>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201409Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-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>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-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>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-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>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-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>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_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>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_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>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_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>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_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>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </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="d_2020-01-01_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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</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_2020-01-01_2020-12-31_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_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:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_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:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_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:PropertyPlantAndEquipmentByTypeAxis">prlb:OfficeFurnitureAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_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:PropertyPlantAndEquipmentByTypeAxis">prlb:OfficeFurnitureAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_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:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_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:PropertyPlantAndEquipmentByTypeAxis">us-gaap:ComputerEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_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:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandBuildingsAndImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_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:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandBuildingsAndImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201602Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-01-01</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_StatementGeographicalAxis-EuropeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_StatementGeographicalAxis-JP">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i_2018-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_StatementGeographicalAxis-EuropeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_StatementGeographicalAxis-EuropeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_StatementGeographicalAxis-EuropeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_StatementGeographicalAxis-JP">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_StatementGeographicalAxis-JP">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_StatementGeographicalAxis-JP">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:JP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</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="i_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </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="i_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </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="i_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </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="i_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </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_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-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>2019-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_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-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-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="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_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">country:US</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">country:US</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">country:US</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">us-gaap:ForeignPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">us-gaap:ForeignPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanSponsorLocationAxis">us-gaap:ForeignPlanMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RetirementPlanTypeAxis">prlb:The401KRetirementPlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2020-12-31_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>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:StockOptionsRestrictedStockAndOtherMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:StockOptionsRestrictedStockAndOtherMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:StockOptionsRestrictedStockAndOtherMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-CostOfSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-CostOfSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-CostOfSalesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeOneMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeTwoMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeThreeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeThreeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeFourMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis">prlb:ExercisePriceRangeFourMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_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>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i_2017-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>2017-12-31</instant>
        </period>
    </context>
    <context id="d_2018-01-01_2018-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>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i_2018-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>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-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>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</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="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-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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i_2017-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>2017-12-31</instant>
        </period>
    </context>
    <context id="d_2018-01-01_2018-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>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i_2018-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>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2019-01-01_2019-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>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember_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:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember_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:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember_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:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember_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:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember_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:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember_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:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i_2020-12-31_LeaseContractualTermAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_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:LeaseContractualTermAxis">prlb:OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_LeaseContractualTermAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_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:LeaseContractualTermAxis">prlb:OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_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>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-12-31_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>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i_2017-12-31_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>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_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-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i_2020-12-31_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>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2017-12-22_2017-12-22">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2017-12-22</startDate>
            <endDate>2017-12-22</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-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>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-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>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-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>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-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>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-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>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-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>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_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>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-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>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-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>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember">
        <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:CorporateUnallocatedAndJapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember">
        <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:CorporateUnallocatedAndJapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember">
        <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:CorporateUnallocatedAndJapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </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_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-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>2018-12-31</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_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-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>2018-12-31</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_2019-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>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2018-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>2018-12-31</instant>
        </period>
    </context>
    <context id="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_SubsequentEventTypeAxis-SubsequentEventMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</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_SubsequentEventTypeAxis-SubsequentEventMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</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>
    <unit id="USD">
        <measure>iso4217:USD</measure>
    </unit>
    <unit id="Share">
        <measure>shares</measure>
    </unit>
    <unit id="NonApplicable">
        <measure>thunderdome:item</measure>
    </unit>
    <unit id="USDPerShare">
        <divide>
            <unitNumerator>
                <measure>iso4217:USD</measure>
            </unitNumerator>
            <unitDenominator>
                <measure>shares</measure>
            </unitDenominator>
        </divide>
    </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_2020-01-01_2020-12-31"
      id="thunderdome-EntityCentralIndexKey">0001443669</dei:EntityCentralIndexKey>
    <dei:EntityRegistrantName
      contextRef="d_2020-01-01_2020-12-31"
      id="thunderdome-EntityRegistrantName">Proto Labs Inc</dei:EntityRegistrantName>
    <dei:AmendmentFlag contextRef="d_2020-01-01_2020-12-31">false</dei:AmendmentFlag>
    <dei:CurrentFiscalYearEndDate contextRef="d_2020-01-01_2020-12-31">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:DocumentFiscalPeriodFocus contextRef="d_2020-01-01_2020-12-31">FY</dei:DocumentFiscalPeriodFocus>
    <dei:DocumentFiscalYearFocus contextRef="d_2020-01-01_2020-12-31">2020</dei:DocumentFiscalYearFocus>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815719"
      unitRef="USD">1781000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815720"
      unitRef="USD">952000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c68815721"
      unitRef="USDPerShare">0.001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c68815722"
      unitRef="USDPerShare">0.001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c68815723"
      unitRef="Share">10000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c68815724"
      unitRef="Share">10000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815725"
      unitRef="Share">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815727"
      unitRef="Share">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815726"
      unitRef="Share">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815728"
      unitRef="Share">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c68815729"
      unitRef="USDPerShare">0.001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c68815730"
      unitRef="USDPerShare">0.001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c68815731"
      unitRef="Share">150000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c68815732"
      unitRef="Share">150000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c68815733"
      unitRef="Share">26776796</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c68815735"
      unitRef="Share">26776796</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesIssued
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c68815734"
      unitRef="Share">26786459</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c68815736"
      unitRef="Share">26786459</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2020-01-01_2020-12-31_RangeAxis-MinimumMember"
      id="c68815405">P2Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <prlb:MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan
      contextRef="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      id="c68815524">P3M</prlb:MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="-5"
      id="c68815742"
      unitRef="USD">300000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod
      contextRef="d_2020-01-01_2020-12-31_PlanNameAxis-LongtermIncentivePlan2012Member"
      id="c68815550">P10Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod>
    <prlb:EmployeeStockPurchasePlanOfferingPeriod
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-ESPPMember"
      id="c68815556">P6M</prlb:EmployeeStockPurchasePlanOfferingPeriod>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      id="c68815577">P10Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      id="c68815578">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      id="c68815579">P5Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember_RangeAxis-MinimumMember"
      id="c68815600">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember_RangeAxis-MaximumMember"
      id="c68815601">P5Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit
      contextRef="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="-3"
      id="c68815609"
      unitRef="Pure">0</prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      id="c68815611">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:LesseeOperatingLeaseTermOfContract
      contextRef="i_2020-12-31_LeaseContractualTermAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MinimumMember"
      id="c68815624">P1Y</us-gaap:LesseeOperatingLeaseTermOfContract>
    <us-gaap:LesseeOperatingLeaseTermOfContract
      contextRef="i_2020-12-31_LeaseContractualTermAxis-OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember_RangeAxis-MaximumMember"
      id="c68815625">P8Y</us-gaap:LesseeOperatingLeaseTermOfContract>
    <us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1 contextRef="i_2020-12-31" id="c68815085">P2Y6M</us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent
      contextRef="i_2020-12-31"
      decimals="3"
      id="c68815089"
      unitRef="Pure">0.005</us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent
      contextRef="i_2019-12-31"
      decimals="0"
      id="c68815090"
      unitRef="Pure">0</us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent>
    <prlb:DeferredTaxLiabilityCaresAct
      contextRef="i_2020-12-31"
      decimals="-5"
      id="c68815754"
      unitRef="USD">2900000</prlb:DeferredTaxLiabilityCaresAct>
    <prlb:OperatingLossCarryforwardsExpirationPeriod contextRef="d_2020-01-01_2020-12-31" id="c68815665">P10Y</prlb:OperatingLossCarryforwardsExpirationPeriod>
    <dei:DocumentType contextRef="d_2020-01-01_2020-12-31">10-K</dei:DocumentType>
    <dei:DocumentAnnualReport contextRef="d_2020-01-01_2020-12-31">true</dei:DocumentAnnualReport>
    <dei:DocumentPeriodEndDate contextRef="d_2020-01-01_2020-12-31">2020-12-31</dei:DocumentPeriodEndDate>
    <dei:DocumentTransitionReport contextRef="d_2020-01-01_2020-12-31">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber contextRef="d_2020-01-01_2020-12-31">001-35435</dei:EntityFileNumber>
    <dei:EntityIncorporationStateCountryCode contextRef="d_2020-01-01_2020-12-31">MN</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber contextRef="d_2020-01-01_2020-12-31">41-1939628</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1 contextRef="d_2020-01-01_2020-12-31">5540 Pioneer Creek Drive</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown contextRef="d_2020-01-01_2020-12-31">Maple Plain</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince contextRef="d_2020-01-01_2020-12-31">MN</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode contextRef="d_2020-01-01_2020-12-31">55359</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode contextRef="d_2020-01-01_2020-12-31">763</dei:CityAreaCode>
    <dei:LocalPhoneNumber contextRef="d_2020-01-01_2020-12-31">479-3680</dei:LocalPhoneNumber>
    <dei:Security12bTitle contextRef="d_2020-01-01_2020-12-31">Common Stock, Par Value $0.001 Per Share</dei:Security12bTitle>
    <dei:TradingSymbol contextRef="d_2020-01-01_2020-12-31">PRLB</dei:TradingSymbol>
    <dei:SecurityExchangeName contextRef="d_2020-01-01_2020-12-31">NYSE</dei:SecurityExchangeName>
    <dei:EntityWellKnownSeasonedIssuer contextRef="d_2020-01-01_2020-12-31">Yes</dei:EntityWellKnownSeasonedIssuer>
    <dei:EntityVoluntaryFilers contextRef="d_2020-01-01_2020-12-31">No</dei:EntityVoluntaryFilers>
    <dei:EntityCurrentReportingStatus contextRef="d_2020-01-01_2020-12-31">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent contextRef="d_2020-01-01_2020-12-31">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory contextRef="d_2020-01-01_2020-12-31">Large Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness contextRef="d_2020-01-01_2020-12-31">false</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany contextRef="d_2020-01-01_2020-12-31">false</dei:EntityEmergingGrowthCompany>
    <dei:EntityShellCompany contextRef="d_2020-01-01_2020-12-31">false</dei:EntityShellCompany>
    <dei:EntityPublicFloat contextRef="i_2020-06-30" decimals="1" unitRef="USD">3000000000.0</dei:EntityPublicFloat>
    <dei:EntityCommonStockSharesOutstanding contextRef="i_2021-02-10" decimals="INF" unitRef="Share">27604879</dei:EntityCommonStockSharesOutstanding>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814023"
      unitRef="USD">127603000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814024"
      unitRef="USD">125225000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:MarketableSecuritiesCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814025"
      unitRef="USD">34088000</us-gaap:MarketableSecuritiesCurrent>
    <us-gaap:MarketableSecuritiesCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814026"
      unitRef="USD">35437000</us-gaap:MarketableSecuritiesCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814027"
      unitRef="USD">57877000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c68814028"
      unitRef="USD">57450000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:InventoryNet
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814029"
      unitRef="USD">10862000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814030"
      unitRef="USD">10075000</us-gaap:InventoryNet>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814031"
      unitRef="USD">11032000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814032"
      unitRef="USD">8232000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:IncomeTaxesReceivable
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c68814033"
      unitRef="USD">540000</us-gaap:IncomeTaxesReceivable>
    <us-gaap:IncomeTaxesReceivable
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814034"
      unitRef="USD">0</us-gaap:IncomeTaxesReceivable>
    <us-gaap:AssetsCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814035"
      unitRef="USD">242002000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814036"
      unitRef="USD">236419000</us-gaap:AssetsCurrent>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814037"
      unitRef="USD">282666000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814038"
      unitRef="USD">263712000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:Goodwill
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814039"
      unitRef="USD">128752000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814040"
      unitRef="USD">128752000</us-gaap:Goodwill>
    <us-gaap:OtherIntangibleAssetsNet
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c68814041"
      unitRef="USD">14350000</us-gaap:OtherIntangibleAssetsNet>
    <us-gaap:OtherIntangibleAssetsNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814042"
      unitRef="USD">17369000</us-gaap:OtherIntangibleAssetsNet>
    <us-gaap:MarketableSecuritiesNoncurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814043"
      unitRef="USD">59357000</us-gaap:MarketableSecuritiesNoncurrent>
    <us-gaap:MarketableSecuritiesNoncurrent
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c68814044"
      unitRef="USD">12960000</us-gaap:MarketableSecuritiesNoncurrent>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814045"
      unitRef="USD">9855000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814046"
      unitRef="USD">11425000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:FinanceLeaseRightOfUseAsset
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814047"
      unitRef="USD">2396000</us-gaap:FinanceLeaseRightOfUseAsset>
    <us-gaap:FinanceLeaseRightOfUseAsset
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814048"
      unitRef="USD">0</us-gaap:FinanceLeaseRightOfUseAsset>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814049"
      unitRef="USD">4826000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c68814050"
      unitRef="USD">3030000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814051"
      unitRef="USD">744204000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814052"
      unitRef="USD">673667000</us-gaap:Assets>
    <us-gaap:AccountsPayableCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814053"
      unitRef="USD">18248000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814054"
      unitRef="USD">16804000</us-gaap:AccountsPayableCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814055"
      unitRef="USD">11989000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814056"
      unitRef="USD">15058000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesAndOtherLiabilities
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814057"
      unitRef="USD">16193000</us-gaap:AccruedLiabilitiesAndOtherLiabilities>
    <us-gaap:AccruedLiabilitiesAndOtherLiabilities
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814058"
      unitRef="USD">11057000</us-gaap:AccruedLiabilitiesAndOtherLiabilities>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814059"
      unitRef="USD">3272000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c68814060"
      unitRef="USD">3340000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:FinanceLeaseLiabilityCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814061"
      unitRef="USD">552000</us-gaap:FinanceLeaseLiabilityCurrent>
    <us-gaap:FinanceLeaseLiabilityCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814062"
      unitRef="USD">0</us-gaap:FinanceLeaseLiabilityCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814063"
      unitRef="USD">0</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814064"
      unitRef="USD">1322000</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814065"
      unitRef="USD">50254000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814066"
      unitRef="USD">47581000</us-gaap:LiabilitiesCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814067"
      unitRef="USD">7586000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814068"
      unitRef="USD">8565000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:FinanceLeaseLiabilityNoncurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814069"
      unitRef="USD">1919000</us-gaap:FinanceLeaseLiabilityNoncurrent>
    <us-gaap:FinanceLeaseLiabilityNoncurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814070"
      unitRef="USD">0</us-gaap:FinanceLeaseLiabilityNoncurrent>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814071"
      unitRef="USD">33854000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814072"
      unitRef="USD">26283000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814073"
      unitRef="USD">6235000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814074"
      unitRef="USD">5448000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:Liabilities
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814075"
      unitRef="USD">99848000</us-gaap:Liabilities>
    <us-gaap:Liabilities
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814076"
      unitRef="USD">87877000</us-gaap:Liabilities>
    <us-gaap:PreferredStockValue
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814077"
      unitRef="USD">0</us-gaap:PreferredStockValue>
    <us-gaap:PreferredStockValue
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814078"
      unitRef="USD">0</us-gaap:PreferredStockValue>
    <us-gaap:CommonStockValue
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814079"
      unitRef="USD">27000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockValue
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814080"
      unitRef="USD">27000</us-gaap:CommonStockValue>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814081"
      unitRef="USD">284848000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814082"
      unitRef="USD">268059000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814083"
      unitRef="USD">362901000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814084"
      unitRef="USD">324722000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c68814085"
      unitRef="USD">-3420000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814086"
      unitRef="USD">-7018000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814087"
      unitRef="USD">644356000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c68814088"
      unitRef="USD">585790000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814089"
      unitRef="USD">744204000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814090"
      unitRef="USD">673667000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814102"
      unitRef="USD">434395000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814103"
      unitRef="USD">458728000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814104"
      unitRef="USD">445596000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814105"
      unitRef="USD">216568000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814106"
      unitRef="USD">223438000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814107"
      unitRef="USD">206917000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:GrossProfit
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814108"
      unitRef="USD">217827000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c68814109"
      unitRef="USD">235290000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814110"
      unitRef="USD">238679000</us-gaap:GrossProfit>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814111"
      unitRef="USD">69309000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814112"
      unitRef="USD">72976000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814113"
      unitRef="USD">68533000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-4"
      id="c68814114"
      unitRef="USD">36940000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814115"
      unitRef="USD">32692000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814116"
      unitRef="USD">28735000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814117"
      unitRef="USD">51742000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814118"
      unitRef="USD">49766000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814119"
      unitRef="USD">52513000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:OperatingExpenses
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814120"
      unitRef="USD">157991000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814121"
      unitRef="USD">155434000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814122"
      unitRef="USD">149781000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814123"
      unitRef="USD">59836000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814124"
      unitRef="USD">79856000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814125"
      unitRef="USD">88898000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814126"
      unitRef="USD">3109000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814127"
      unitRef="USD">1337000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814128"
      unitRef="USD">2757000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814129"
      unitRef="USD">62945000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814130"
      unitRef="USD">81193000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814131"
      unitRef="USD">91655000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814132"
      unitRef="USD">12078000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814133"
      unitRef="USD">17538000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814134"
      unitRef="USD">15067000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814135"
      unitRef="USD">50867000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814136"
      unitRef="USD">63655000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814137"
      unitRef="USD">76588000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814138"
      unitRef="USDPerShare">1.90</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814139"
      unitRef="USDPerShare">2.37</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814140"
      unitRef="USDPerShare">2.84</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814141"
      unitRef="USDPerShare">1.89</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814142"
      unitRef="USDPerShare">2.35</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814143"
      unitRef="USDPerShare">2.81</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814144"
      unitRef="Share">26737425</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814145"
      unitRef="Share">26866985</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814146"
      unitRef="Share">26982614</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814147"
      unitRef="Share">26896357</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814148"
      unitRef="Share">27049423</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814149"
      unitRef="Share">27278816</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814150"
      unitRef="USD">3598000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814151"
      unitRef="USD">1474000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814152"
      unitRef="USD">-3258000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814153"
      unitRef="USD">54465000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814154"
      unitRef="USD">65129000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-4"
      id="c68814155"
      unitRef="USD">73330000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c68814179"
      unitRef="Share">26828651</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2017-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814180"
      unitRef="USD">27000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2017-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814181"
      unitRef="USD">241725000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2017-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814182"
      unitRef="USD">224697000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814183"
      unitRef="USD">-5234000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2017-12-31"
      decimals="-3"
      id="c68814184"
      unitRef="USD">461215000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c68814185"
      unitRef="Share">260694</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814186"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814187"
      unitRef="USD">6791000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814188"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814189"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814190"
      unitRef="USD">6791000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814192"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814193"
      unitRef="USD">10928000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814194"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814195"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814196"
      unitRef="USD">10928000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodShares
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c68814197"
      unitRef="Share">104598</us-gaap:StockRepurchasedAndRetiredDuringPeriodShares>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814198"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814199"
      unitRef="USD">942000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814200"
      unitRef="USD">11287000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814201"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814202"
      unitRef="USD">12229000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814204"
      unitRef="USD">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814205"
      unitRef="USD">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814206"
      unitRef="USD">1462000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814207"
      unitRef="USD">0</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201409Member_CumulativeEffectPeriodOfAdoptionAxis-CumulativeEffectPeriodOfAdoptionAdjustmentMember"
      decimals="-3"
      id="c68814208"
      unitRef="USD">1462000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814210"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814211"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814212"
      unitRef="USD">76588000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814213"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814214"
      unitRef="USD">76588000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814216"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814217"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814218"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814219"
      unitRef="USD">-3258000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814220"
      unitRef="USD">-3258000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-4"
      id="c68814226"
      unitRef="USD">73330000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c68814227"
      unitRef="Share">26984747</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814228"
      unitRef="USD">27000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814229"
      unitRef="USD">258502000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-4"
      id="c68814230"
      unitRef="USD">291460000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814231"
      unitRef="USD">-8492000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c68814232"
      unitRef="USD">541497000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c68814233"
      unitRef="Share">128174</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814234"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814235"
      unitRef="USD">1904000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814236"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814237"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814238"
      unitRef="USD">1904000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814240"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814241"
      unitRef="USD">10781000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814242"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814243"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814244"
      unitRef="USD">10781000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodShares
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c68814245"
      unitRef="Share">326462</us-gaap:StockRepurchasedAndRetiredDuringPeriodShares>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814246"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814247"
      unitRef="USD">3128000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814248"
      unitRef="USD">30393000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814249"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814250"
      unitRef="USD">33521000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      id="c68814252"
      unitRef="USD"
      xsi:nil="true"/>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      id="c68814253"
      unitRef="USD"
      xsi:nil="true"/>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814254"
      unitRef="USD">63655000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      id="c68814255"
      unitRef="USD"
      xsi:nil="true"/>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814256"
      unitRef="USD">63655000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814258"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814259"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814260"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814261"
      unitRef="USD">1474000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814262"
      unitRef="USD">1474000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814268"
      unitRef="USD">65129000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c68814269"
      unitRef="Share">26786459</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814270"
      unitRef="USD">27000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814271"
      unitRef="USD">268059000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814272"
      unitRef="USD">324722000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814273"
      unitRef="USD">-7018000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c68814274"
      unitRef="USD">585790000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c68814275"
      unitRef="Share">189951</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814276"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814277"
      unitRef="USD">4114000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814278"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814279"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814280"
      unitRef="USD">4114000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814282"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814283"
      unitRef="USD">14673000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814284"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814285"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814286"
      unitRef="USD">14673000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodShares
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c68814287"
      unitRef="Share">199614</us-gaap:StockRepurchasedAndRetiredDuringPeriodShares>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814288"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814289"
      unitRef="USD">1998000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814290"
      unitRef="USD">12688000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814291"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814292"
      unitRef="USD">14686000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814294"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814295"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814296"
      unitRef="USD">50867000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814297"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814298"
      unitRef="USD">50867000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814300"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814301"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814302"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c68814303"
      unitRef="USD">3598000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814304"
      unitRef="USD">3598000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814310"
      unitRef="USD">54465000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c68814311"
      unitRef="Share">26776796</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c68814312"
      unitRef="USD">27000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c68814313"
      unitRef="USD">284848000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c68814314"
      unitRef="USD">362901000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-4"
      id="c68814315"
      unitRef="USD">-3420000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814316"
      unitRef="USD">644356000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814326"
      unitRef="USD">50867000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814327"
      unitRef="USD">63655000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814328"
      unitRef="USD">76588000</us-gaap:NetIncomeLoss>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814329"
      unitRef="USD">32594000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814330"
      unitRef="USD">30864000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814331"
      unitRef="USD">26754000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814332"
      unitRef="USD">14673000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814333"
      unitRef="USD">10781000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814334"
      unitRef="USD">10928000</us-gaap:ShareBasedCompensation>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814335"
      unitRef="USD">7577000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814336"
      unitRef="USD">6106000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814337"
      unitRef="USD">11936000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:GainLossOnSaleOfBusiness
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814338"
      unitRef="USD">-0</us-gaap:GainLossOnSaleOfBusiness>
    <us-gaap:GainLossOnSaleOfBusiness
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814339"
      unitRef="USD">-0</us-gaap:GainLossOnSaleOfBusiness>
    <us-gaap:GainLossOnSaleOfBusiness
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814340"
      unitRef="USD">671000</us-gaap:GainLossOnSaleOfBusiness>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814341"
      unitRef="USD">-415000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814342"
      unitRef="USD">-5000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814343"
      unitRef="USD">-374000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814344"
      unitRef="USD">336000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814345"
      unitRef="USD">-391000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814346"
      unitRef="USD">619000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814347"
      unitRef="USD">91000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814348"
      unitRef="USD">-1848000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814349"
      unitRef="USD">6098000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814350"
      unitRef="USD">662000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c68814351"
      unitRef="USD">-60000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814352"
      unitRef="USD">189000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-4"
      id="c68814353"
      unitRef="USD">1680000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814354"
      unitRef="USD">-545000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814355"
      unitRef="USD">2098000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-4"
      id="c68814356"
      unitRef="USD">-1960000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814357"
      unitRef="USD">6555000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814358"
      unitRef="USD">-6652000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814359"
      unitRef="USD">1492000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814360"
      unitRef="USD">-719000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814361"
      unitRef="USD">1942000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-4"
      id="c68814362"
      unitRef="USD">4080000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814363"
      unitRef="USD">-4039000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814364"
      unitRef="USD">10734000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814365"
      unitRef="USD">106969000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814366"
      unitRef="USD">116052000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814367"
      unitRef="USD">122929000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-4"
      id="c68814368"
      unitRef="USD">47010000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c68814369"
      unitRef="USD">62230000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814370"
      unitRef="USD">87104000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814371"
      unitRef="USD">-0</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814372"
      unitRef="USD">-0</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-4"
      id="c68814373"
      unitRef="USD">90000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:ProceedsFromDivestitureOfBusinesses
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814374"
      unitRef="USD">0</us-gaap:ProceedsFromDivestitureOfBusinesses>
    <us-gaap:ProceedsFromDivestitureOfBusinesses
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814375"
      unitRef="USD">0</us-gaap:ProceedsFromDivestitureOfBusinesses>
    <us-gaap:ProceedsFromDivestitureOfBusinesses
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814376"
      unitRef="USD">284000</us-gaap:ProceedsFromDivestitureOfBusinesses>
    <us-gaap:PaymentsToAcquireOtherInvestments
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-6"
      id="c68814377"
      unitRef="USD">3000000</us-gaap:PaymentsToAcquireOtherInvestments>
    <us-gaap:PaymentsToAcquireOtherInvestments
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-6"
      id="c68814378"
      unitRef="USD">4000000</us-gaap:PaymentsToAcquireOtherInvestments>
    <us-gaap:PaymentsToAcquireOtherInvestments
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814379"
      unitRef="USD">126000</us-gaap:PaymentsToAcquireOtherInvestments>
    <us-gaap:PaymentsToAcquireHeldToMaturitySecurities
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-5"
      id="c68814380"
      unitRef="USD">113200000</us-gaap:PaymentsToAcquireHeldToMaturitySecurities>
    <us-gaap:PaymentsToAcquireHeldToMaturitySecurities
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814381"
      unitRef="USD">46403000</us-gaap:PaymentsToAcquireHeldToMaturitySecurities>
    <us-gaap:PaymentsToAcquireHeldToMaturitySecurities
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814382"
      unitRef="USD">41384000</us-gaap:PaymentsToAcquireHeldToMaturitySecurities>
    <us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814383"
      unitRef="USD">67737000</us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities>
    <us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c68814384"
      unitRef="USD">68330000</us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities>
    <us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814385"
      unitRef="USD">65139000</us-gaap:ProceedsFromSaleAndMaturityOfMarketableSecurities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814386"
      unitRef="USD">-95473000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814387"
      unitRef="USD">-44303000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814388"
      unitRef="USD">-63281000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:RepaymentsOfLongTermDebt
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814389"
      unitRef="USD">-0</us-gaap:RepaymentsOfLongTermDebt>
    <us-gaap:RepaymentsOfLongTermDebt
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814390"
      unitRef="USD">-0</us-gaap:RepaymentsOfLongTermDebt>
    <us-gaap:RepaymentsOfLongTermDebt
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-6"
      id="c68814391"
      unitRef="USD">5000000</us-gaap:RepaymentsOfLongTermDebt>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814392"
      unitRef="USD">154000</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814393"
      unitRef="USD">-0</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814394"
      unitRef="USD">-0</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814395"
      unitRef="USD">7557000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814396"
      unitRef="USD">4391000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814397"
      unitRef="USD">8935000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814398"
      unitRef="USD">3443000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814399"
      unitRef="USD">2487000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814400"
      unitRef="USD">2144000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814401"
      unitRef="USD">14686000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814402"
      unitRef="USD">33521000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814403"
      unitRef="USD">12229000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814404"
      unitRef="USD">-10726000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814405"
      unitRef="USD">-31617000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814406"
      unitRef="USD">-10438000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814407"
      unitRef="USD">1608000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814408"
      unitRef="USD">47000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814409"
      unitRef="USD">-871000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814410"
      unitRef="USD">2378000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814411"
      unitRef="USD">40179000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814412"
      unitRef="USD">48339000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814413"
      unitRef="USD">125225000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c68814414"
      unitRef="USD">85046000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2017-12-31"
      decimals="-3"
      id="c68814415"
      unitRef="USD">36707000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814416"
      unitRef="USD">127603000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814417"
      unitRef="USD">125225000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c68814418"
      unitRef="USD">85046000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:InterestPaidNet
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814419"
      unitRef="USD">23000</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814420"
      unitRef="USD">14000</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814421"
      unitRef="USD">39000</us-gaap:InterestPaidNet>
    <us-gaap:IncomeTaxesPaid
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-4"
      id="c68814422"
      unitRef="USD">5650000</us-gaap:IncomeTaxesPaid>
    <us-gaap:IncomeTaxesPaid
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814423"
      unitRef="USD">4002000</us-gaap:IncomeTaxesPaid>
    <us-gaap:IncomeTaxesPaid
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814424"
      unitRef="USD">9966000</us-gaap:IncomeTaxesPaid>
    <us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741298">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;1&lt;/em&gt; &#x2014; Nature of Business&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Organization and business&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Proto Labs, Inc. and its subsidiaries (Proto Labs, the Company, we, us, or our) is an e-commerce driven digital manufacturer of quick-turn, on-demand&#160;injection-molded, computer numerical control (CNC) machined, &lt;em style="font: inherit;"&gt;3D&lt;/em&gt;-printed and sheet metal-fabricated custom parts for prototyping and short-run production. The Company&#x2019;s customers are product developers and engineers throughout the world who require a faster and less expensive way to obtain low volumes of parts. The Company&#x2019;s proprietary technology eliminates most of the time-consuming and expensive skilled labor conventionally required to quote and manufacture parts in low volumes, and its customers conduct nearly all of their business with the Company over the Internet. The Company targets its product lines to the millions of product developers and engineers who use &lt;em style="font: inherit;"&gt;three&lt;/em&gt;-dimensional (&lt;em style="font: inherit;"&gt;3D&lt;/em&gt;)&#160;computer-aided design (CAD) software to design products across a diverse range of end-markets. The Company has established operations in the United States, Europe and Japan, which the Company believes are among the largest geographic markets where these product developers and engineers are located. The Company&#x2019;s primary manufacturing product lines currently include Injection Molding, CNC Machining, &lt;em style="font: inherit;"&gt;3D&lt;/em&gt; Printing and Sheet Metal. Proto Labs, Inc. is headquartered in Maple Plain, Minnesota. The Company&#x2019;s subsidiaries are:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 5%; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%; border-bottom: thin solid rgb(0, 0, 0);"&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;Name&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: thin solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" 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: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;Location&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: 5%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 58%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 36%; text-align: right;"&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: 5%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&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;PL-US International LLC&lt;/p&gt; &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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;United States&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&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;Proto Labs Ltd.&lt;/p&gt; &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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;United Kingdom&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&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;PL International Holdings, UK, Ltd.&lt;/p&gt; &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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;United Kingdom&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&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;PL Euro Services Limited&lt;/p&gt; &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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;United Kingdom&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&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;Proto Labs GmbH&lt;/p&gt; &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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;Germany&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&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;Proto Labs Tooling GmbH&lt;/p&gt; &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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;Germany&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 5%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 58%;"&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;Proto Labs, G.K.&lt;/p&gt; &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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;Japan&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
  </us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock>
    <us-gaap:SignificantAccountingPoliciesTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741299">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;2&lt;/em&gt; &#x2014; Summary of Significant Accounting Policies&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Principles of consolidation&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The consolidated financial statements include the accounts of the Company and its wholly-owned subsidiaries, as listed within &#x201c;Organization and business&#x201d; above. All intercompany accounts and transactions have been eliminated in consolidation.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Comprehensive income&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Components of comprehensive income include net income and foreign currency translation adjustments. Comprehensive income is disclosed in the accompanying consolidated statements of comprehensive income and consolidated statements of shareholders&#x2019; equity.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"/&gt;


   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Accounting estimates&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S. GAAP) requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and related disclosures at the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. Actual results could differ from those estimates.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Cash and cash equivalents&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Cash and cash equivalents include cash and other investments, including marketable securities, with maturities of &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months or less at the date of purchase. The Company maintains its cash in bank deposit accounts, which, at times, &lt;em style="font: inherit;"&gt; may &lt;/em&gt;exceed federally insured limits. The Company has &lt;em style="font: inherit;"&gt;not&lt;/em&gt; experienced any losses on such accounts.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Marketable securities&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Marketable securities include held-to-maturity debt securities recorded at amortized cost. Management determines the appropriate classification of debt securities at the time of purchase and reevaluates such designation as of each balance sheet date. Debt securities are classified as held-to-maturity when the Company has the positive intent and ability to hold the securities to maturity. Held-to-maturity securities are stated at amortized cost, adjusted for amortization of premiums and accretion of discounts to maturity computed under the effective interest method. Such amortization is included in other income, net. Interest on securities classified as held to maturity is included in other income, net. The classification of marketable securities as current or non-current is dependent upon the security&#x2019;s maturity date. Securities with maturities of &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months or less at the time of purchase are categorized as cash equivalents as described above. 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.&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Accounts receivable and allowance for doubtful accounts&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Accounts receivable are reported at the invoiced amount less an allowance for doubtful accounts. As of each balance sheet date, the Company evaluates its accounts receivable and establishes an allowance for doubtful accounts based on a combination of specific customer circumstances and credit conditions taking into account the history of write-offs and collections. A receivable is considered past due if payment has &lt;em style="font: inherit;"&gt;not&lt;/em&gt; been received within the period agreed upon in the invoice. Accounts receivable are written off after all collection efforts have been exhausted. Recoveries of trade receivables previously written off are recorded when received.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Inventory&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Inventory consists primarily of raw materials, which are recorded at the lower of cost or market, using the average 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Property, equipment and leasehold improvements&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Property, equipment and leasehold improvements are stated at cost. Major improvements that substantially extend an asset&#x2019;s useful life are capitalized. Repairs, maintenance and minor improvements are charged to operations as incurred. Depreciation, including amortization of leasehold improvements and assets recorded under capital leases, is calculated using the straight-line method over the estimated useful lives of the individual assets and ranges from 3 to 39&#160;years. Manufacturing equipment is depreciated over 3 to 15&#160;years, office furniture and equipment are depreciated over 3 to 7&#160;years, computer hardware and software are depreciated over 3 to 5&#160;years, building costs are depreciated over 39&#160;years, leasehold improvements are depreciated over the estimated lives of the related assets or the life of the lease, whichever is shorter, and building and land improvements are depreciated over 10 to 39 years. Assets &lt;em style="font: inherit;"&gt;not&lt;/em&gt; in service are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; depreciated until the asset is put into use.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company follows ASC&#160;&lt;em style="font: inherit;"&gt;350&lt;/em&gt;-&lt;em style="font: inherit;"&gt;40,&lt;/em&gt;&lt;i&gt; Internal-Use Software&lt;/i&gt;, in accounting for internally developed software. As of &lt;em style="font: inherit;"&gt; December 31, 2020 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2019&lt;/em&gt;, respectively, $49.4 million and $32.7 million of software development costs were capitalized. Capitalized software development costs for the year ended &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;&#160;were $16.7 million.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;


   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Goodwill&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company recognizes goodwill in accordance with ASC &lt;em style="font: inherit;"&gt;350,&lt;/em&gt; &lt;i&gt;Intangibles&#x2014;Goodwill and Other&lt;/i&gt;. Goodwill is the excess of cost of an acquired entity over the amounts assigned to assets acquired and liabilities assumed in a business combination. Goodwill is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; amortized. Goodwill is tested for impairment annually in the &lt;em style="font: inherit;"&gt;fourth&lt;/em&gt; quarter of each year, and is tested for impairment between annual tests if an event occurs or circumstances change that would indicate the carrying amount &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be impaired. An impairment charge for goodwill is recognized only when the estimated fair value of a reporting unit, including goodwill, is less than its carrying amount. In &lt;em style="font: inherit;"&gt;2020,&lt;/em&gt; the Company performed a qualitative analysis based on the significance of the fair value over the carrying value in prior period assessments. As of &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;no impairment charges for goodwill have been recognized.&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"/&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;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&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;&lt;i&gt;&lt;b&gt;Capitalized Software Costs&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&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 Company follows ASC &lt;em style="font: inherit;"&gt;350&lt;/em&gt;-&lt;em style="font: inherit;"&gt;40,&lt;/em&gt; &lt;i&gt;Intangibles &#x2013; Goodwill and Other, Internal-Use Software&lt;/i&gt;, in accounting for internally developed software. Costs for internal use software are evaluated by projected and capitalized where appropriate.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Other Intangible Assets&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Other intangible assets include software technology, customer relationships and other intangible assets acquired from other independent parties. Other intangible assets with a definite life are amortized over a period ranging from &lt;span style="-sec-ix-hidden:c68815405"&gt;two&lt;/span&gt; to 10 years on a straight line basis, and are tested for impairment whenever events or circumstances indicate that the carrying amount of an asset (asset group) &lt;em style="font: inherit;"&gt; may &lt;/em&gt;&lt;em style="font: inherit;"&gt;not&lt;/em&gt; be recoverable. An impairment loss is recognized when the carrying amount of an asset exceeds the estimated undiscounted cash flows generated by the asset. The amount of the impairment loss recorded is calculated by the excess of the asset&#x2019;s carrying value over its fair value.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Accounting for long-lived assets&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company periodically reviews the carrying amount of its property, equipment and leasehold improvements to determine if circumstances exist indicating an impairment or if depreciation periods should be modified. If facts or circumstances indicate that an impairment &lt;em style="font: inherit;"&gt; may &lt;/em&gt;exist, the Company will prepare a projection of the undiscounted future cash flows of the specific assets to determine if the assets are recoverable. If impairment exists based on these projections, an adjustment will be made to reduce the carrying amount of the specific assets to fair value.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Revenue recognition&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company recognizes revenue in accordance with ASC &lt;em style="font: inherit;"&gt;606,&lt;/em&gt; &lt;i&gt;Revenue from Contracts with Customers&lt;/i&gt;. The Company manufactures custom parts to specific customer orders that have &lt;em style="font: inherit;"&gt;no&lt;/em&gt; alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these &lt;em style="font: inherit;"&gt;two&lt;/em&gt; criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations using the estimated total time necessary to complete the parts per the customer's order and an estimate of inventory and production costs incurred to date. The majority of the Company&#x2019;s injection molding contracts have multiple performance obligations including &lt;em style="font: inherit;"&gt;one&lt;/em&gt; obligation to produce the mold and a &lt;em style="font: inherit;"&gt;second&lt;/em&gt; obligation to produce parts. For injection molding contracts with multiple performance obligations, the Company allocates revenue to each performance obligation based on its relative standalone selling price. The Company generally determines standalone selling price based on the price charged to customers.&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"/&gt;
   &lt;p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Leases&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="margin: 0pt 7.2pt 0pt -2pt; 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 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;The Company accounts for leases in accordance with ASC &lt;em style="font: inherit;"&gt;842,&lt;/em&gt; &lt;i&gt;Leases&lt;/i&gt;, which requires the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating and finance leases. The Company determines if an arrangement is a lease at inception. Operating and finance leases are included in operating and finance lease assets, current operating and finance lease liabilities and long-term operating and finance lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"/&gt;


   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Income taxes&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company accounts for income taxes in accordance with ASC &lt;em style="font: inherit;"&gt;740,&lt;/em&gt;&lt;i&gt; Income Taxes&lt;/i&gt; (ASC &lt;em style="font: inherit;"&gt;740&lt;/em&gt;). Under this method, the Company determines tax assets and liabilities based upon the differences between the financial statement carrying amounts and the tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to affect taxable income. The tax consequences of most events recognized in the financial statements are included in determining income taxes currently payable. However, because tax laws and financial accounting standards differ in their recognition and measurement of assets, liabilities and equity, revenues, expenses, gains and losses, differences arise between the amount of taxable income and pretax financial income for a year and between the tax basis of assets or liabilities and their reported amounts in the financial statements. Because the Company assumes that the reported amounts of assets and liabilities will be recovered and settled, respectively, a difference between the tax basis of an asset or liability and its reported amount in the balance sheet will result in a taxable or a deductible amount in some future years when the related liabilities are settled or the reported amounts of the assets are recovered, giving rise to a deferred tax asset or liability. The Company establishes a valuation allowance for any portion of its deferred tax assets that the Company believes&#160;&lt;em style="font: inherit;"&gt; may &lt;/em&gt;&lt;em style="font: inherit;"&gt;not&lt;/em&gt; be recognized.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;ASC &lt;em style="font: inherit;"&gt;740&lt;/em&gt; also clarifies the accounting for uncertainty in income taxes recognized in an enterprise&#x2019;s financial statements by requiring that individual tax positions are recorded only when they meet a more-likely-than-&lt;em style="font: inherit;"&gt;not&lt;/em&gt; criterion. The Company recognizes the effect of income tax positions only if sustaining those positions is more likely than &lt;em style="font: inherit;"&gt;not.&lt;/em&gt; The Company records penalties and interest related to unrecognized tax benefits in income taxes in the Company&#x2019;s Consolidated Statements of Income.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Stock-based compensation&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company accounts for stock-based compensation in accordance with ASC &lt;em style="font: inherit;"&gt;718,&lt;/em&gt;&lt;i&gt; Compensation&#x2014;Stock Compensation&lt;/i&gt; (ASC &lt;em style="font: inherit;"&gt;718&lt;/em&gt;). Under the fair value recognition provisions of ASC &lt;em style="font: inherit;"&gt;718,&lt;/em&gt; the Company measures stock-based compensation cost at the grant date fair value and recognizes the compensation expense over the requisite service period, which is the vesting period, using a straight-line attribution method. The amount of stock-based compensation expense recognized during a period is based on the portion of the awards that are ultimately expected to vest. The Company accounts for forfeitures as they occur. Ultimately, the total expense recognized over the vesting period will only be for those awards that vest. The Company&#x2019;s awards are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; eligible to vest early in the event of retirement, however, the awards vest early in the event of a change in control.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;In determining the compensation cost of the options granted, the fair value of options granted has been estimated on the date of grant using the Black-Scholes option-pricing model.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Advertising costs&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Advertising is expensed as incurred and was approximately $11.5&#160;million, $13.0 million and $11.8 million for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;, respectively.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Research and development&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Research and development expenses consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements 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 &lt;em style="font: inherit;"&gt;350&lt;/em&gt;-&lt;em style="font: inherit;"&gt;40,&lt;/em&gt; &lt;i&gt;Intangibles - Goodwill and Other, Internal-Use Software&lt;/i&gt;. Research and development costs were approximately $36.9&#160;million, $32.7 million and $28.7 million for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;, respectively.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Foreign currency translation/transactions&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company translated the balance sheets of its foreign subsidiaries at period-end exchange rates and the income statement at the average exchange rates in effect throughout the period. The Company has recorded the translation adjustment as a separate component of consolidated shareholders&#x2019; equity. Foreign currency transaction gains and losses are recognized in the consolidated statements of comprehensive income.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/&gt;
   &lt;p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;&lt;i&gt;&lt;b/&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;&lt;i&gt;&lt;b&gt;Recently adopted accounting pronouncements&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="margin: 0 29.7pt; text-align: left; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&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 Financial Accounting Standards Board (FASB) Accounting Standards Update (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;, which is intended to provide financial statement users with more decision-useful information about the expected credit losses on financial instruments held by a reporting entity at each reporting date. The adoption of this guidance had &lt;em style="font: inherit;"&gt;no&lt;/em&gt; material impact on our consolidated financial statements.&lt;/p&gt; &lt;p style="margin: 0 29.7pt; text-align: left; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;&#160;&lt;/p&gt; &lt;p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;During the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; quarter of &lt;em style="font: inherit;"&gt;2019,&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;02,&lt;/em&gt;&#160;&lt;i&gt;Leases&#160;&lt;/i&gt;(ASC &lt;em style="font: inherit;"&gt;842&lt;/em&gt;), which introduces the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company has adopted the new lease standard using the new transition option issued under the amendments in ASU &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;-&lt;em style="font: inherit;"&gt;11,&lt;/em&gt;&#160;&lt;i&gt;Leases&lt;/i&gt;, which allowed the Company to continue to apply the legacy guidance in Accounting Standards Codification (ASC) &lt;em style="font: inherit;"&gt;840,&lt;/em&gt;&#160;&lt;i&gt;Leases&lt;/i&gt;, in the comparative periods presented in the year of adoption.&#160;The Company elected the package of practical expedients permitted under the transition guidance within the new standard, which among other things, allowed the Company to carry forward the historical lease classification. The Company made an accounting policy election to keep leases with an initial term of &lt;em style="font: inherit;"&gt;12&lt;/em&gt; months or less off of the balance sheet. The Company will recognize those lease payments in the Consolidated Statements of Comprehensive Income on a straight-line basis over the lease term. The impact of the adoption was an increase to the Company&#x2019;s operating lease assets and liabilities on &lt;em style="font: inherit;"&gt; January 1, 2019 &lt;/em&gt;of $13.1 million.&lt;/p&gt; &lt;p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;&#160;&lt;/p&gt; &lt;p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;&lt;i&gt;&lt;b&gt;Recently issued accounting pronouncements&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="margin: 0 29.7pt 0 14.7pt; text-align: left; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;&#160;&lt;/p&gt; &lt;p style="margin: 0 29.7pt 0 -3pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;In &lt;em style="font: inherit;"&gt; December 2019, &lt;/em&gt;the FASB issued 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&lt;/i&gt;, which is intended to simplify the accounting for income taxes. This guidance will be effective for fiscal years beginning after &lt;em style="font: inherit;"&gt; December 15, 2020 &lt;/em&gt;and interim periods within those fiscal years with early adoption permitted. The Company is evaluating the impact of future adoption of this guidance on its consolidated financial statements, but does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; expect the impact to be material.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:justify;text-indent:27pt;"&gt;&#160;&lt;/p&gt;



   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:SignificantAccountingPoliciesTextBlock>
    <us-gaap:ConsolidationPolicyTextBlock contextRef="d_2020-01-01_2020-12-31" id="c68815765">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Principles of consolidation&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The consolidated financial statements include the accounts of the Company and its wholly-owned subsidiaries, as listed within &#x201c;Organization and business&#x201d; above. All intercompany accounts and transactions have been eliminated in consolidation.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:ConsolidationPolicyTextBlock>
    <us-gaap:ComprehensiveIncomePolicyPolicyTextBlock contextRef="d_2020-01-01_2020-12-31" id="c68815766">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Comprehensive income&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Components of comprehensive income include net income and foreign currency translation adjustments. Comprehensive income is disclosed in the accompanying consolidated statements of comprehensive income and consolidated statements of shareholders&#x2019; equity.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:ComprehensiveIncomePolicyPolicyTextBlock>
    <us-gaap:UseOfEstimates contextRef="d_2020-01-01_2020-12-31" id="c68815767">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Accounting estimates&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S. GAAP) requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and related disclosures at the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. Actual results could differ from those estimates.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:UseOfEstimates>
    <us-gaap:CashAndCashEquivalentsPolicyTextBlock contextRef="d_2020-01-01_2020-12-31" id="c68815768">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Cash and cash equivalents&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Cash and cash equivalents include cash and other investments, including marketable securities, with maturities of &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months or less at the date of purchase. The Company maintains its cash in bank deposit accounts, which, at times, &lt;em style="font: inherit;"&gt; may &lt;/em&gt;exceed federally insured limits. The Company has &lt;em style="font: inherit;"&gt;not&lt;/em&gt; experienced any losses on such accounts.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:CashAndCashEquivalentsPolicyTextBlock>
    <us-gaap:MarketableSecuritiesPolicy contextRef="d_2020-01-01_2020-12-31" id="c68815769">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Marketable securities&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Marketable securities include held-to-maturity debt securities recorded at amortized cost. Management determines the appropriate classification of debt securities at the time of purchase and reevaluates such designation as of each balance sheet date. Debt securities are classified as held-to-maturity when the Company has the positive intent and ability to hold the securities to maturity. Held-to-maturity securities are stated at amortized cost, adjusted for amortization of premiums and accretion of discounts to maturity computed under the effective interest method. Such amortization is included in other income, net. Interest on securities classified as held to maturity is included in other income, net. The classification of marketable securities as current or non-current is dependent upon the security&#x2019;s maturity date. Securities with maturities of &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months or less at the time of purchase are categorized as cash equivalents as described above. 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.&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;</us-gaap:MarketableSecuritiesPolicy>
    <us-gaap:TradeAndOtherAccountsReceivablePolicy contextRef="d_2020-01-01_2020-12-31" id="c68815770">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Accounts receivable and allowance for doubtful accounts&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Accounts receivable are reported at the invoiced amount less an allowance for doubtful accounts. As of each balance sheet date, the Company evaluates its accounts receivable and establishes an allowance for doubtful accounts based on a combination of specific customer circumstances and credit conditions taking into account the history of write-offs and collections. A receivable is considered past due if payment has &lt;em style="font: inherit;"&gt;not&lt;/em&gt; been received within the period agreed upon in the invoice. Accounts receivable are written off after all collection efforts have been exhausted. Recoveries of trade receivables previously written off are recorded when received.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:TradeAndOtherAccountsReceivablePolicy>
    <us-gaap:InventoryPolicyTextBlock contextRef="d_2020-01-01_2020-12-31" id="c68815771">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Inventory&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Inventory consists primarily of raw materials, which are recorded at the lower of cost or market, using the average 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:InventoryPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentPolicyTextBlock contextRef="d_2020-01-01_2020-12-31" id="c68815772">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Property, equipment and leasehold improvements&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Property, equipment and leasehold improvements are stated at cost. Major improvements that substantially extend an asset&#x2019;s useful life are capitalized. Repairs, maintenance and minor improvements are charged to operations as incurred. Depreciation, including amortization of leasehold improvements and assets recorded under capital leases, is calculated using the straight-line method over the estimated useful lives of the individual assets and ranges from 3 to 39&#160;years. Manufacturing equipment is depreciated over 3 to 15&#160;years, office furniture and equipment are depreciated over 3 to 7&#160;years, computer hardware and software are depreciated over 3 to 5&#160;years, building costs are depreciated over 39&#160;years, leasehold improvements are depreciated over the estimated lives of the related assets or the life of the lease, whichever is shorter, and building and land improvements are depreciated over 10 to 39 years. Assets &lt;em style="font: inherit;"&gt;not&lt;/em&gt; in service are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; depreciated until the asset is put into use.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company follows ASC&#160;&lt;em style="font: inherit;"&gt;350&lt;/em&gt;-&lt;em style="font: inherit;"&gt;40,&lt;/em&gt;&lt;i&gt; Internal-Use Software&lt;/i&gt;, in accounting for internally developed software. As of &lt;em style="font: inherit;"&gt; December 31, 2020 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2019&lt;/em&gt;, respectively, $49.4 million and $32.7 million of software development costs were capitalized. Capitalized software development costs for the year ended &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;&#160;were $16.7 million.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:PropertyPlantAndEquipmentPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2020-01-01_2020-12-31_RangeAxis-MinimumMember"
      id="c68815378">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2020-01-01_2020-12-31_RangeAxis-MaximumMember"
      id="c68815379">P39Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MinimumMember"
      id="c68815380">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-EquipmentMember_RangeAxis-MaximumMember"
      id="c68815381">P15Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MinimumMember"
      id="c68815382">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-OfficeFurnitureAndEquipmentMember_RangeAxis-MaximumMember"
      id="c68815383">P7Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MinimumMember"
      id="c68815384">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-ComputerEquipmentMember_RangeAxis-MaximumMember"
      id="c68815385">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-BuildingMember"
      id="c68815386">P39Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MinimumMember"
      id="c68815387">P10Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="d_2020-01-01_2020-12-31_PropertyPlantAndEquipmentByTypeAxis-LandBuildingsAndImprovementsMember_RangeAxis-MaximumMember"
      id="c68815388">P39Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="i_2020-12-31"
      decimals="-5"
      id="c68815394"
      unitRef="USD">49400000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="i_2019-12-31"
      decimals="-5"
      id="c68815395"
      unitRef="USD">32700000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:CapitalizedComputerSoftwareNet
      contextRef="i_2018-12-31"
      decimals="-5"
      id="c68815396"
      unitRef="USD">16700000</us-gaap:CapitalizedComputerSoftwareNet>
    <us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy contextRef="d_2020-01-01_2020-12-31" id="c68815773">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Goodwill&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company recognizes goodwill in accordance with ASC &lt;em style="font: inherit;"&gt;350,&lt;/em&gt; &lt;i&gt;Intangibles&#x2014;Goodwill and Other&lt;/i&gt;. Goodwill is the excess of cost of an acquired entity over the amounts assigned to assets acquired and liabilities assumed in a business combination. Goodwill is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; amortized. Goodwill is tested for impairment annually in the &lt;em style="font: inherit;"&gt;fourth&lt;/em&gt; quarter of each year, and is tested for impairment between annual tests if an event occurs or circumstances change that would indicate the carrying amount &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be impaired. An impairment charge for goodwill is recognized only when the estimated fair value of a reporting unit, including goodwill, is less than its carrying amount. In &lt;em style="font: inherit;"&gt;2020,&lt;/em&gt; the Company performed a qualitative analysis based on the significance of the fair value over the carrying value in prior period assessments. As of &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;no impairment charges for goodwill have been recognized.&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;</us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy>
    <us-gaap:GoodwillImpairmentLoss
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815402"
      unitRef="USD">0</us-gaap:GoodwillImpairmentLoss>
    <us-gaap:InternalUseSoftwarePolicy contextRef="d_2020-01-01_2020-12-31" id="c68815774">&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;&lt;i&gt;&lt;b&gt;Capitalized Software Costs&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&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 Company follows ASC &lt;em style="font: inherit;"&gt;350&lt;/em&gt;-&lt;em style="font: inherit;"&gt;40,&lt;/em&gt; &lt;i&gt;Intangibles &#x2013; Goodwill and Other, Internal-Use Software&lt;/i&gt;, in accounting for internally developed software. Costs for internal use software are evaluated by projected and capitalized where appropriate.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&#160;&lt;/p&gt;</us-gaap:InternalUseSoftwarePolicy>
    <us-gaap:GoodwillAndIntangibleAssetsIntangibleAssetsPolicy contextRef="d_2020-01-01_2020-12-31" id="c68815775">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Other Intangible Assets&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Other intangible assets include software technology, customer relationships and other intangible assets acquired from other independent parties. Other intangible assets with a definite life are amortized over a period ranging from &lt;span style="-sec-ix-hidden:c68815405"&gt;two&lt;/span&gt; to 10 years on a straight line basis, and are tested for impairment whenever events or circumstances indicate that the carrying amount of an asset (asset group) &lt;em style="font: inherit;"&gt; may &lt;/em&gt;&lt;em style="font: inherit;"&gt;not&lt;/em&gt; be recoverable. An impairment loss is recognized when the carrying amount of an asset exceeds the estimated undiscounted cash flows generated by the asset. The amount of the impairment loss recorded is calculated by the excess of the asset&#x2019;s carrying value over its fair value.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:GoodwillAndIntangibleAssetsIntangibleAssetsPolicy>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2020-01-01_2020-12-31_RangeAxis-MaximumMember"
      id="c68815406">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock contextRef="d_2020-01-01_2020-12-31" id="c68815776">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Accounting for long-lived assets&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company periodically reviews the carrying amount of its property, equipment and leasehold improvements to determine if circumstances exist indicating an impairment or if depreciation periods should be modified. If facts or circumstances indicate that an impairment &lt;em style="font: inherit;"&gt; may &lt;/em&gt;exist, the Company will prepare a projection of the undiscounted future cash flows of the specific assets to determine if the assets are recoverable. If impairment exists based on these projections, an adjustment will be made to reduce the carrying amount of the specific assets to fair value.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock>
    <us-gaap:RevenueRecognitionPolicyTextBlock contextRef="d_2020-01-01_2020-12-31" id="c68815777">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Revenue recognition&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company recognizes revenue in accordance with ASC &lt;em style="font: inherit;"&gt;606,&lt;/em&gt; &lt;i&gt;Revenue from Contracts with Customers&lt;/i&gt;. The Company manufactures custom parts to specific customer orders that have &lt;em style="font: inherit;"&gt;no&lt;/em&gt; alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these &lt;em style="font: inherit;"&gt;two&lt;/em&gt; criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations using the estimated total time necessary to complete the parts per the customer's order and an estimate of inventory and production costs incurred to date. The majority of the Company&#x2019;s injection molding contracts have multiple performance obligations including &lt;em style="font: inherit;"&gt;one&lt;/em&gt; obligation to produce the mold and a &lt;em style="font: inherit;"&gt;second&lt;/em&gt; obligation to produce parts. For injection molding contracts with multiple performance obligations, the Company allocates revenue to each performance obligation based on its relative standalone selling price. The Company generally determines standalone selling price based on the price charged to customers.&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;</us-gaap:RevenueRecognitionPolicyTextBlock>
    <us-gaap:LesseeLeasesPolicyTextBlock contextRef="d_2020-01-01_2020-12-31" id="c68815778">&lt;p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Leases&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="margin: 0pt 7.2pt 0pt -2pt; 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 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;The Company accounts for leases in accordance with ASC &lt;em style="font: inherit;"&gt;842,&lt;/em&gt; &lt;i&gt;Leases&lt;/i&gt;, which requires the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating and finance leases. The Company determines if an arrangement is a lease at inception. Operating and finance leases are included in operating and finance lease assets, current operating and finance lease liabilities and long-term operating and finance lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:LesseeLeasesPolicyTextBlock>
    <us-gaap:IncomeTaxPolicyTextBlock contextRef="d_2020-01-01_2020-12-31" id="c68815779">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Income taxes&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company accounts for income taxes in accordance with ASC &lt;em style="font: inherit;"&gt;740,&lt;/em&gt;&lt;i&gt; Income Taxes&lt;/i&gt; (ASC &lt;em style="font: inherit;"&gt;740&lt;/em&gt;). Under this method, the Company determines tax assets and liabilities based upon the differences between the financial statement carrying amounts and the tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to affect taxable income. The tax consequences of most events recognized in the financial statements are included in determining income taxes currently payable. However, because tax laws and financial accounting standards differ in their recognition and measurement of assets, liabilities and equity, revenues, expenses, gains and losses, differences arise between the amount of taxable income and pretax financial income for a year and between the tax basis of assets or liabilities and their reported amounts in the financial statements. Because the Company assumes that the reported amounts of assets and liabilities will be recovered and settled, respectively, a difference between the tax basis of an asset or liability and its reported amount in the balance sheet will result in a taxable or a deductible amount in some future years when the related liabilities are settled or the reported amounts of the assets are recovered, giving rise to a deferred tax asset or liability. The Company establishes a valuation allowance for any portion of its deferred tax assets that the Company believes&#160;&lt;em style="font: inherit;"&gt; may &lt;/em&gt;&lt;em style="font: inherit;"&gt;not&lt;/em&gt; be recognized.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;ASC &lt;em style="font: inherit;"&gt;740&lt;/em&gt; also clarifies the accounting for uncertainty in income taxes recognized in an enterprise&#x2019;s financial statements by requiring that individual tax positions are recorded only when they meet a more-likely-than-&lt;em style="font: inherit;"&gt;not&lt;/em&gt; criterion. The Company recognizes the effect of income tax positions only if sustaining those positions is more likely than &lt;em style="font: inherit;"&gt;not.&lt;/em&gt; The Company records penalties and interest related to unrecognized tax benefits in income taxes in the Company&#x2019;s Consolidated Statements of Income.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:IncomeTaxPolicyTextBlock>
    <us-gaap:CompensationRelatedCostsPolicyTextBlock contextRef="d_2020-01-01_2020-12-31" id="c68815780">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Stock-based compensation&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company accounts for stock-based compensation in accordance with ASC &lt;em style="font: inherit;"&gt;718,&lt;/em&gt;&lt;i&gt; Compensation&#x2014;Stock Compensation&lt;/i&gt; (ASC &lt;em style="font: inherit;"&gt;718&lt;/em&gt;). Under the fair value recognition provisions of ASC &lt;em style="font: inherit;"&gt;718,&lt;/em&gt; the Company measures stock-based compensation cost at the grant date fair value and recognizes the compensation expense over the requisite service period, which is the vesting period, using a straight-line attribution method. The amount of stock-based compensation expense recognized during a period is based on the portion of the awards that are ultimately expected to vest. The Company accounts for forfeitures as they occur. Ultimately, the total expense recognized over the vesting period will only be for those awards that vest. The Company&#x2019;s awards are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; eligible to vest early in the event of retirement, however, the awards vest early in the event of a change in control.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;In determining the compensation cost of the options granted, the fair value of options granted has been estimated on the date of grant using the Black-Scholes option-pricing model.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:CompensationRelatedCostsPolicyTextBlock>
    <us-gaap:AdvertisingCostsPolicyTextBlock contextRef="d_2020-01-01_2020-12-31" id="c68815781">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Advertising costs&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Advertising is expensed as incurred and was approximately $11.5&#160;million, $13.0 million and $11.8 million for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;, respectively.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:AdvertisingCostsPolicyTextBlock>
    <us-gaap:AdvertisingExpense
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-5"
      id="c68815425"
      unitRef="USD">11500000</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-6"
      id="c68815426"
      unitRef="USD">13000000.0</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-5"
      id="c68815427"
      unitRef="USD">11800000</us-gaap:AdvertisingExpense>
    <us-gaap:ResearchAndDevelopmentExpensePolicy contextRef="d_2020-01-01_2020-12-31" id="c68815782">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Research and development&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Research and development expenses consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements 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 &lt;em style="font: inherit;"&gt;350&lt;/em&gt;-&lt;em style="font: inherit;"&gt;40,&lt;/em&gt; &lt;i&gt;Intangibles - Goodwill and Other, Internal-Use Software&lt;/i&gt;. Research and development costs were approximately $36.9&#160;million, $32.7 million and $28.7 million for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;, respectively.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;</us-gaap:ResearchAndDevelopmentExpensePolicy>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-5"
      id="c68815432"
      unitRef="USD">36900000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-5"
      id="c68815433"
      unitRef="USD">32700000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-5"
      id="c68815434"
      unitRef="USD">28700000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock contextRef="d_2020-01-01_2020-12-31" id="c68815783">&lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;i&gt;&lt;b&gt;Foreign currency translation/transactions&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company translated the balance sheets of its foreign subsidiaries at period-end exchange rates and the income statement at the average exchange rates in effect throughout the period. The Company has recorded the translation adjustment as a separate component of consolidated shareholders&#x2019; equity. Foreign currency transaction gains and losses are recognized in the consolidated statements of comprehensive income.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;"/&gt;</us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock>
    <us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock contextRef="d_2020-01-01_2020-12-31" id="c68815784">&lt;p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;&lt;i&gt;&lt;b&gt;Recently adopted accounting pronouncements&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="margin: 0 29.7pt; text-align: left; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;&#160;&lt;/p&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&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 Financial Accounting Standards Board (FASB) Accounting Standards Update (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;, which is intended to provide financial statement users with more decision-useful information about the expected credit losses on financial instruments held by a reporting entity at each reporting date. The adoption of this guidance had &lt;em style="font: inherit;"&gt;no&lt;/em&gt; material impact on our consolidated financial statements.&lt;/p&gt; &lt;p style="margin: 0 29.7pt; text-align: left; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;&#160;&lt;/p&gt; &lt;p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;During the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; quarter of &lt;em style="font: inherit;"&gt;2019,&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;02,&lt;/em&gt;&#160;&lt;i&gt;Leases&#160;&lt;/i&gt;(ASC &lt;em style="font: inherit;"&gt;842&lt;/em&gt;), which introduces the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company has adopted the new lease standard using the new transition option issued under the amendments in ASU &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;-&lt;em style="font: inherit;"&gt;11,&lt;/em&gt;&#160;&lt;i&gt;Leases&lt;/i&gt;, which allowed the Company to continue to apply the legacy guidance in Accounting Standards Codification (ASC) &lt;em style="font: inherit;"&gt;840,&lt;/em&gt;&#160;&lt;i&gt;Leases&lt;/i&gt;, in the comparative periods presented in the year of adoption.&#160;The Company elected the package of practical expedients permitted under the transition guidance within the new standard, which among other things, allowed the Company to carry forward the historical lease classification. The Company made an accounting policy election to keep leases with an initial term of &lt;em style="font: inherit;"&gt;12&lt;/em&gt; months or less off of the balance sheet. The Company will recognize those lease payments in the Consolidated Statements of Comprehensive Income on a straight-line basis over the lease term. The impact of the adoption was an increase to the Company&#x2019;s operating lease assets and liabilities on &lt;em style="font: inherit;"&gt; January 1, 2019 &lt;/em&gt;of $13.1 million.&lt;/p&gt; &lt;p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;&#160;&lt;/p&gt; &lt;p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;&lt;i&gt;&lt;b&gt;Recently issued accounting pronouncements&lt;/b&gt;&lt;/i&gt;&lt;/p&gt; &lt;p style="margin: 0 29.7pt 0 14.7pt; text-align: left; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;&#160;&lt;/p&gt; &lt;p style="margin: 0 29.7pt 0 -3pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif"&gt;In &lt;em style="font: inherit;"&gt; December 2019, &lt;/em&gt;the FASB issued 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&lt;/i&gt;, which is intended to simplify the accounting for income taxes. This guidance will be effective for fiscal years beginning after &lt;em style="font: inherit;"&gt; December 15, 2020 &lt;/em&gt;and interim periods within those fiscal years with early adoption permitted. The Company is evaluating the impact of future adoption of this guidance on its consolidated financial statements, but does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; expect the impact to be material.&lt;/p&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:justify;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
    </us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2019-01-01_AdjustmentsForNewAccountingPronouncementsAxis-AccountingStandardsUpdate201602Member"
      decimals="-5"
      id="c68815452"
      unitRef="USD">13100000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:RevenueFromContractWithCustomerTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741300">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;3&lt;/em&gt; &#x2013; Revenue&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company&#160;accounts for revenue in accordance with ASC &lt;em style="font: inherit;"&gt;606,&lt;/em&gt; &lt;i&gt;Revenue from Contracts with Customers&lt;/i&gt;. The Company provides quality, quick-turn prototyping and on-demand manufacturing services. As a result, the majority of revenue recognized in a reporting period is based on completed, invoiced contracts.&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;A performance obligation is a promise in a contract to transfer a distinct good or service to the customer, and is the unit of account in ASC &lt;em style="font: inherit;"&gt;606.&lt;/em&gt; The majority of the Company&#x2019;s CNC machining, &lt;em style="font: inherit;"&gt;3D&lt;/em&gt; printing, and sheet metal contracts have a single performance obligation. The majority of the Company&#x2019;s injection molding contracts have multiple performance obligations including &lt;em style="font: inherit;"&gt;one&lt;/em&gt; obligation to produce the mold and a &lt;em style="font: inherit;"&gt;second&lt;/em&gt; obligation to produce parts. For injection molding contracts with multiple performance obligations, we allocate revenue to each performance obligation based on its relative standalone selling price. We generally determine standalone selling price based on the price charged to customers.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company manufactures parts that have &lt;em style="font: inherit;"&gt;no&lt;/em&gt; alternative use to the Company since the parts are custom made to specific customer orders, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these &lt;em style="font: inherit;"&gt;two&lt;/em&gt; criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations using the estimated total time necessary to complete the parts per the customer's order and an estimate of inventory and production costs incurred to date.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Revenue by geographic region for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt; was as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 46%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;Revenue:&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;/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; margin-left: 18pt;"&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;"&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;345,708&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;360,205&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;350,535&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; margin-left: 18pt;"&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;"&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;74,796&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;82,805&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;80,889&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; margin-left: 18pt;"&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;"&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;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;13,891&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; 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; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;15,718&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; 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; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;14,172&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; 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; margin-left: 18pt;"&gt;Total revenue&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: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;434,395&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; 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; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;458,728&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; 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; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;445,596&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Revenue by product line for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt; was as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 46%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;Revenue:&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;/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; margin-left: 18pt;"&gt;Injection Molding&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;217,992&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;217,415&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;210,523&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; margin-left: 18pt;"&gt;CNC Machining&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;131,587&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;155,473&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;153,521&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; margin-left: 18pt;"&gt;3D Printing&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;62,502&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;61,352&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;53,342&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; margin-left: 18pt;"&gt;Sheet Metal&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;18,838&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21,000&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;24,998&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; margin-left: 18pt;"&gt;Other Revenue&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: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;3,476&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; 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; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;3,488&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; 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; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;3,212&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; 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; margin-left: 18pt;"&gt;Total revenue&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: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;434,395&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; 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; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;458,728&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; 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; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;445,596&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company&#160;generally expenses sales commissions when incurred because the amortization period would have been &lt;em style="font: inherit;"&gt;one&lt;/em&gt; year or less. These costs are recorded within marketing and sales expenses. The value of unsatisfied performance obligations for contracts with an original expected length of &lt;em style="font: inherit;"&gt;one&lt;/em&gt; year or less is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; material.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:22.2pt;margin-right:14.7pt;margin-top:0pt;text-align:center;"&gt;&#160;&lt;/p&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:RevenueFromContractWithCustomerTextBlock>
    <us-gaap:DisaggregationOfRevenueTableTextBlock
      contextRef="d_2020-01-01_2020-12-31"
      id="c8DF70E45-AE02-4788-B9AF-95445053EC64">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 46%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;Revenue:&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;/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; margin-left: 18pt;"&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;"&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;345,708&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;360,205&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;350,535&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; margin-left: 18pt;"&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;"&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;74,796&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;82,805&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;80,889&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; margin-left: 18pt;"&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;"&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;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;13,891&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; 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; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;15,718&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; 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; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;14,172&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; 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; margin-left: 18pt;"&gt;Total revenue&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: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;434,395&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; 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; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;458,728&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; 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; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;445,596&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; margin-left: 0pt;"&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="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 46%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;Revenue:&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;/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; margin-left: 18pt;"&gt;Injection Molding&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;217,992&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;217,415&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;210,523&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; margin-left: 18pt;"&gt;CNC Machining&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;131,587&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;155,473&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;153,521&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; margin-left: 18pt;"&gt;3D Printing&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;62,502&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;61,352&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;53,342&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; margin-left: 18pt;"&gt;Sheet Metal&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;18,838&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21,000&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;24,998&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; margin-left: 18pt;"&gt;Other Revenue&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: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;3,476&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; 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; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;3,488&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; 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; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;3,212&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; 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; margin-left: 18pt;"&gt;Total revenue&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: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;434,395&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; 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; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;458,728&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; 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; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;445,596&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; 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_2020-01-01_2020-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68814437"
      unitRef="USD">345708000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68814438"
      unitRef="USD">360205000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68814439"
      unitRef="USD">350535000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68814440"
      unitRef="USD">74796000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68814441"
      unitRef="USD">82805000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68814442"
      unitRef="USD">80889000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c68814443"
      unitRef="USD">13891000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c68814444"
      unitRef="USD">15718000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c68814445"
      unitRef="USD">14172000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814446"
      unitRef="USD">434395000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814447"
      unitRef="USD">458728000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814448"
      unitRef="USD">445596000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember"
      decimals="-3"
      id="c68814456"
      unitRef="USD">217992000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember"
      decimals="-3"
      id="c68814457"
      unitRef="USD">217415000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember"
      decimals="-3"
      id="c68814458"
      unitRef="USD">210523000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember"
      decimals="-3"
      id="c68814459"
      unitRef="USD">131587000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember"
      decimals="-3"
      id="c68814460"
      unitRef="USD">155473000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-CNCMachiningFirstcutMember"
      decimals="-3"
      id="c68814461"
      unitRef="USD">153521000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember"
      decimals="-3"
      id="c68814462"
      unitRef="USD">62502000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember"
      decimals="-3"
      id="c68814463"
      unitRef="USD">61352000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-ThreeDPrintingFinelineMember"
      decimals="-3"
      id="c68814464"
      unitRef="USD">53342000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-12-31_ProductOrServiceAxis-SheetMetalMember"
      decimals="-3"
      id="c68814465"
      unitRef="USD">18838000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-SheetMetalMember"
      decimals="-6"
      id="c68814466"
      unitRef="USD">21000000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-SheetMetalMember"
      decimals="-3"
      id="c68814467"
      unitRef="USD">24998000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-12-31_ProductOrServiceAxis-OtherProductsMember"
      decimals="-3"
      id="c68814468"
      unitRef="USD">3476000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ProductOrServiceAxis-OtherProductsMember"
      decimals="-3"
      id="c68814469"
      unitRef="USD">3488000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ProductOrServiceAxis-OtherProductsMember"
      decimals="-3"
      id="c68814470"
      unitRef="USD">3212000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814471"
      unitRef="USD">434395000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814472"
      unitRef="USD">458728000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814473"
      unitRef="USD">445596000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:EarningsPerShareTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741303">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;4&lt;/em&gt; &#x2013; Net Income Per Common Share&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&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 the 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 and other stock-based awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table presents the calculation of net income per basic and diluted share attributable to common shareholders:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; 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="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: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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;"&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: 52%;"&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, except share and per share amounts)&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&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;, 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;Net Income&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;50,867&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;63,655&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;76,588&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&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;, 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;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;, 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;26,737,425&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;26,866,985&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;26,982,614&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;Effect of dilutive securities:&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;/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: 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;, 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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;158,932&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;182,438&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;296,202&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; 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;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;, 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;&#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: 3px double rgb(0, 0, 0);"&gt;26,896,357&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; 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; 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;&#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: 3px double rgb(0, 0, 0);"&gt;27,049,423&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; 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; 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;&#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: 3px double rgb(0, 0, 0);"&gt;27,278,816&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; padding-bottom: 3px;"&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;Net income per share attributable to common shareholders:&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;/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; 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;, 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: 1px solid rgb(0, 0, 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1.90&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; 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; border-bottom: 1px solid rgb(0, 0, 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2.37&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; 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; border-bottom: 1px solid rgb(0, 0, 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2.84&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; 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; 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;, 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; 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: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.89&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; 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; 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; 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: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.35&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; 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; 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; 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: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.81&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:EarningsPerShareTextBlock>
    <us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741304">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; 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="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: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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;"&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: 52%;"&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, except share and per share amounts)&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&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;, 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;Net Income&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;50,867&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;63,655&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;76,588&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&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;, 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;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;, 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;26,737,425&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;26,866,985&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;26,982,614&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;Effect of dilutive securities:&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;/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: 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;, 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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;158,932&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;182,438&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;296,202&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; 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;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;, 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;&#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: 3px double rgb(0, 0, 0);"&gt;26,896,357&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; 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; 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;&#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: 3px double rgb(0, 0, 0);"&gt;27,049,423&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; 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; 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;&#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: 3px double rgb(0, 0, 0);"&gt;27,278,816&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; padding-bottom: 3px;"&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;Net income per share attributable to common shareholders:&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;/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; 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;, 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: 1px solid rgb(0, 0, 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1.90&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; 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; border-bottom: 1px solid rgb(0, 0, 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2.37&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; 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; border-bottom: 1px solid rgb(0, 0, 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2.84&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; 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; 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;, 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; 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: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.89&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; 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; 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; 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: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.35&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; 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; 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; 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: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2.81&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814481"
      unitRef="USD">50867000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814482"
      unitRef="USD">63655000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814483"
      unitRef="USD">76588000</us-gaap:NetIncomeLoss>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814484"
      unitRef="Share">26737425</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814485"
      unitRef="Share">26866985</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814486"
      unitRef="Share">26982614</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814487"
      unitRef="Share">158932</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814488"
      unitRef="Share">182438</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814489"
      unitRef="Share">296202</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814490"
      unitRef="Share">26896357</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814491"
      unitRef="Share">27049423</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814492"
      unitRef="Share">27278816</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814493"
      unitRef="USDPerShare">1.90</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814494"
      unitRef="USDPerShare">2.37</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814495"
      unitRef="USDPerShare">2.84</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814496"
      unitRef="USDPerShare">1.89</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814497"
      unitRef="USDPerShare">2.35</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814498"
      unitRef="USDPerShare">2.81</us-gaap:EarningsPerShareDiluted>
    <us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741305">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The changes in the carrying amount of goodwill for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2019&lt;/em&gt; were as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 25%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Dec. 31, 2018&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Goodwill acquired during 2019&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; padding-bottom: 1px;"&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 class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" 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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Dec. 31, 2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Goodwill acquired during 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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Dec. 31, 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; 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&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;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;, 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;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;"&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;123,883&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: 12%; 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; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;123,883&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: 12%; 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; 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;123,883&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;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;"&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,239&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: 12%; 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 class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,239&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: 12%; 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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,239&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;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-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;&#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: 1px solid rgb(0, 0, 0);"&gt;630&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; 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; 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;&#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: 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; margin-left: 0pt; 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; 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;&#160;&lt;/td&gt;&lt;td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" 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: 1px solid rgb(0, 0, 0);"&gt;630&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; 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; 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;&#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: 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; margin-left: 0pt; 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; 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;&#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: 1px solid rgb(0, 0, 0);"&gt;630&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; 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;, 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 goodwill&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: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;128,752&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; 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; border-bottom: 3px double rgb(0, 0, 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" 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: 3px double rgb(0, 0, 0);"&gt;128,752&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; 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; border-bottom: 3px double rgb(0, 0, 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;128,752&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Intangible assets other than goodwill for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2019&lt;/em&gt; were as follows:&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table 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;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 20%;"&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="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended 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; 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="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31, 2019&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; width: 1%;"&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; 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; width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted Average Useful Life&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; width: 1%;"&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: 20%;"&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: 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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Useful Life (in years)&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; 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;b&gt;&lt;em style="font: inherit;"&gt;Remaining (in years)&lt;/em&gt;&lt;/b&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="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td colspan="4" style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 22%;"&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;em style="font: inherit;"&gt;Intangible Assets with finite lives:&lt;/em&gt;&lt;/p&gt; &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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; 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 style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; width: 1%;"&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: 20%"&gt;Marketing assets&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;$930&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;$(620&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;$310&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;$930&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;$(527&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;$403&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 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; width: 1%"&gt;10.0&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 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; width: 1%"&gt;3.3&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;/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: 20%"&gt;Non-compete agreement&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;270&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;(238&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;32&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;270&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;(222&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;48&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 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; width: 1%"&gt;2.0 - 5.0&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 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; width: 1%"&gt;2.3&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;/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: 20%"&gt;Software technology&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;13,229&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;(3,645&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;9,584&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;13,229&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;(2,275&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;10,954&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 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; width: 1%"&gt;10.0&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 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; width: 1%"&gt;7.3&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;/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: 20%"&gt;Customer relationships&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;10,070&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;(5,646&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;4,424&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;10,070&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;(4,106&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;5,964&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 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; width: 1%"&gt;6.0 - 9.0&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 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; width: 1%"&gt;2.8&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;/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: 20%;"&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%; 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);"&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: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px;"&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: 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;25,829&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; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,460&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; padding-bottom: 3px;"&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: 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,369&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; margin-left: 0pt;"&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; 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: 7%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Amortization expense for intangible assets for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt; was $3.0 million, $3.5 million and $3.2 million, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets is as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&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: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 82%;"&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: 1px solid rgb(0, 0, 0);"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Estimated Amortization Expense&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, Times, serif; font-size: 10pt"&gt;2021&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;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;3,016&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;/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;2022&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;3,016&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;/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;2023&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;2,813&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;/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;2024&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;1,400&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;/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;2025&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;1,369&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;/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;Thereafter&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: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;2,736&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;/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: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;14,350&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
  </us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock>
    <us-gaap:ScheduleOfGoodwillTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741306">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 25%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Dec. 31, 2018&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Goodwill acquired during 2019&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; padding-bottom: 1px;"&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 class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" 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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Dec. 31, 2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Goodwill acquired during 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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Dec. 31, 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; 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&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;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;, 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;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;"&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;123,883&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: 12%; 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; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;123,883&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: 12%; 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; 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;123,883&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;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;"&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,239&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: 12%; 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 class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,239&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: 12%; 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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,239&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;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-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;&#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: 1px solid rgb(0, 0, 0);"&gt;630&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; 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; 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;&#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: 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; margin-left: 0pt; 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; 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;&#160;&lt;/td&gt;&lt;td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" 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: 1px solid rgb(0, 0, 0);"&gt;630&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; 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; 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;&#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: 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; margin-left: 0pt; 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; 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;&#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: 1px solid rgb(0, 0, 0);"&gt;630&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; 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;, 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 goodwill&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: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;128,752&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; 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; border-bottom: 3px double rgb(0, 0, 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" 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: 3px double rgb(0, 0, 0);"&gt;128,752&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; 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; border-bottom: 3px double rgb(0, 0, 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;128,752&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; 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_2018-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68814506"
      unitRef="USD">123883000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68814507"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2019-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68814508"
      unitRef="USD">123883000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68814509"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2020-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68814510"
      unitRef="USD">123883000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i_2018-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68814511"
      unitRef="USD">4239000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68814512"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2019-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68814513"
      unitRef="USD">4239000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68814514"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2020-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68814515"
      unitRef="USD">4239000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i_2018-12-31_StatementGeographicalAxis-JP"
      decimals="-4"
      id="c68814516"
      unitRef="USD">630000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c68814517"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2019-12-31_StatementGeographicalAxis-JP"
      decimals="-4"
      id="c68814518"
      unitRef="USD">630000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c68814519"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2020-12-31_StatementGeographicalAxis-JP"
      decimals="-4"
      id="c68814520"
      unitRef="USD">630000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c68814521"
      unitRef="USD">128752000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814522"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814523"
      unitRef="USD">128752000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814524"
      unitRef="USD">0</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:Goodwill
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814525"
      unitRef="USD">128752000</us-gaap:Goodwill>
    <us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741307">
    &lt;table 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;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 20%;"&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="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended 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; 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="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31, 2019&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; width: 1%;"&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; 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; width: 1%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted Average Useful Life&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; width: 1%;"&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: 20%;"&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: 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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Useful Life (in years)&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; 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;b&gt;&lt;em style="font: inherit;"&gt;Remaining (in years)&lt;/em&gt;&lt;/b&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="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td colspan="4" style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 22%;"&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;em style="font: inherit;"&gt;Intangible Assets with finite lives:&lt;/em&gt;&lt;/p&gt; &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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; 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 style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 7%;"&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&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; width: 7%;"&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; width: 1%;"&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: 20%"&gt;Marketing assets&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;$930&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;$(620&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;$310&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;$930&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;$(527&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;$403&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 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; width: 1%"&gt;10.0&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 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; width: 1%"&gt;3.3&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;/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: 20%"&gt;Non-compete agreement&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;270&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;(238&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;32&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;270&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;(222&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;48&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 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; width: 1%"&gt;2.0 - 5.0&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 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; width: 1%"&gt;2.3&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;/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: 20%"&gt;Software technology&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;13,229&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;(3,645&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;9,584&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;13,229&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;(2,275&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;"&gt;10,954&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 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; width: 1%"&gt;10.0&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 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; width: 1%"&gt;7.3&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;/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: 20%"&gt;Customer relationships&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;10,070&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;(5,646&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;4,424&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;10,070&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 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;(4,106&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;)&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;5,964&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 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; width: 1%"&gt;6.0 - 9.0&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 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; width: 1%"&gt;2.8&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;/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: 20%;"&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%; 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);"&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: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px;"&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: 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;25,829&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; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,460&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; padding-bottom: 3px;"&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: 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,369&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; margin-left: 0pt;"&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; 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: 7%;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-4"
      id="c68814550"
      unitRef="USD">930000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-4"
      id="c68814551"
      unitRef="USD">-620000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-4"
      id="c68814552"
      unitRef="USD">310000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-4"
      id="c68814553"
      unitRef="USD">930000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-3"
      id="c68814554"
      unitRef="USD">-527000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-3"
      id="c68814555"
      unitRef="USD">403000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      id="c68814556">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      id="c68814557">P3Y3M18D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-4"
      id="c68814558"
      unitRef="USD">270000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-3"
      id="c68814559"
      unitRef="USD">238000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-3"
      id="c68814560"
      unitRef="USD">32000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-4"
      id="c68814561"
      unitRef="USD">270000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-3"
      id="c68814562"
      unitRef="USD">222000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-3"
      id="c68814563"
      unitRef="USD">48000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MinimumMember"
      id="c68814598">P2Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MaximumMember"
      id="c68814599">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      id="c68814565">P2Y3M18D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c68814566"
      unitRef="USD">13229000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c68814567"
      unitRef="USD">3645000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c68814568"
      unitRef="USD">9584000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c68814569"
      unitRef="USD">13229000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c68814570"
      unitRef="USD">2275000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c68814571"
      unitRef="USD">10954000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      id="c68814572">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      id="c68814573">P7Y3M18D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-4"
      id="c68814574"
      unitRef="USD">10070000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c68814575"
      unitRef="USD">5646000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c68814576"
      unitRef="USD">4424000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-4"
      id="c68814577"
      unitRef="USD">10070000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c68814578"
      unitRef="USD">4106000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2019-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c68814579"
      unitRef="USD">5964000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MinimumMember"
      id="c68814602">P6Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MaximumMember"
      id="c68814603">P9Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2020-01-01_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      id="c68814581">P2Y9M18D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814582"
      unitRef="USD">24499000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814583"
      unitRef="USD">10149000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c68814584"
      unitRef="USD">14350000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814585"
      unitRef="USD">25829000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c68814586"
      unitRef="USD">8460000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814587"
      unitRef="USD">17369000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-6"
      id="c68815479"
      unitRef="USD">3000000.0</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-5"
      id="c68815480"
      unitRef="USD">3500000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-5"
      id="c68815481"
      unitRef="USD">3200000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741308">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 82%;"&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: 1px solid rgb(0, 0, 0);"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Estimated Amortization Expense&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, Times, serif; font-size: 10pt"&gt;2021&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;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;3,016&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;/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;2022&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;3,016&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;/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;2023&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;2,813&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;/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;2024&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;1,400&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;/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;2025&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;1,369&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;/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;Thereafter&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: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;2,736&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;/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: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;14,350&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814607"
      unitRef="USD">3016000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814608"
      unitRef="USD">3016000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814609"
      unitRef="USD">2813000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
      contextRef="i_2020-12-31"
      decimals="-5"
      id="c68814610"
      unitRef="USD">1400000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814611"
      unitRef="USD">1369000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814612"
      unitRef="USD">2736000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c68814613"
      unitRef="USD">14350000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FairValueDisclosuresTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741309">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;ASC &lt;em style="font: inherit;"&gt;820,&lt;/em&gt;&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 which 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"&gt;&lt;i&gt;Level&#160;&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"&gt;&lt;i&gt;Level&#160;&lt;/i&gt;&lt;em style="font: inherit;"&gt;2&#x2014;Observable&lt;/em&gt; inputs other than Level&#160;&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"&gt;&lt;i&gt;Level&#160;&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company&#x2019;s cash equivalents measured at fair value as of &lt;em style="font: inherit;"&gt; December 31, 2020 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2019&lt;/em&gt;, respectively, consist of money market mutual funds. The Company determines the fair value of these financial assets using Level&#160;&lt;em style="font: inherit;"&gt;1&lt;/em&gt; inputs.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following tables summarizes financial assets as of &lt;em style="font: inherit;"&gt; December 31, 2020 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2019&lt;/em&gt; measured at fair value on a recurring basis:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 27pt; 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="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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31, 2019&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; 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;, Times, serif; font-size: 10pt; width: 22%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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&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;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;, 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;"&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;Cash and cash equivalents&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;"&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: 9pt;"&gt;Money market mutual funds&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: 1px solid 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 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-bottom: 1px; 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; border-bottom: 1px solid 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;, Times, serif; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid 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;, Times, serif; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;68,962&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; 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; border-bottom: 1px solid 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;, Times, serif; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid 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;, Times, serif; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 9pt;"&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; 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; 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; 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;, 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%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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; 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; 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;, 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%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;68,962&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; 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; 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; 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;, 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%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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; 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; 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;, 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%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:FairValueDisclosuresTextBlock>
    <us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741310">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 27pt; 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="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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31, 2019&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; 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;, Times, serif; font-size: 10pt; width: 22%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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&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;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;, 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;"&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;Cash and cash equivalents&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;"&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: 9pt;"&gt;Money market mutual funds&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: 1px solid 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 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-bottom: 1px; 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; border-bottom: 1px solid 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;, Times, serif; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid 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;, Times, serif; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;68,962&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; 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; border-bottom: 1px solid 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;, Times, serif; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid 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;, Times, serif; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 9pt;"&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; 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; 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; 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;, 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%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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; 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; 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;, 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%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;68,962&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; 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; 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; 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;, 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%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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; 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; 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;, 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%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c68814626"
      unitRef="USD">55378000</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c68814627"
      unitRef="USD">0</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c68814628"
      unitRef="USD">0</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c68814629"
      unitRef="USD">68962000</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c68814630"
      unitRef="USD">0</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c68814631"
      unitRef="USD">0</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c68814632"
      unitRef="USD">55378000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c68814633"
      unitRef="USD">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c68814634"
      unitRef="USD">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c68814635"
      unitRef="USD">68962000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c68814636"
      unitRef="USD">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2019-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c68814637"
      unitRef="USD">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:InvestmentTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741311">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. The securities are categorized as held-to-maturity and are recorded at amortized cost. Categorization as held-to-maturity is based on the Company&#x2019;s ability and intent to hold these securities to maturity. Information regarding the Company&#x2019;s short-term and long-term marketable securities as of &lt;em style="font: inherit;"&gt; December 31, 2020 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2019&lt;/em&gt; is as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; 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="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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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;, Times, serif; font-size: 10pt; width: 48%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Amortized 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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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&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;, 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; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; 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; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; 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; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; 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; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; 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;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: 10%; 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: 10%; 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: 10%; 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: 10%; 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. 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;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; 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;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; 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;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; 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;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; 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; padding: 0; margin: 0"&gt;Commercial paper&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 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: 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: 10%; 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: 10%; 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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 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: 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;"&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&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; padding-bottom: 1px; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;93&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; 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; 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;, Times, serif; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;"&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;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; 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;5,488&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; 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;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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px;"&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px;"&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="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; 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="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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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, 2019&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; 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;, Times, serif; font-size: 10pt; width: 48%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Amortized 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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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&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;, 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; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,274&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(7&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,268&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;26,944&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;80&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(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;)&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;27,012&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. 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;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,204&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(3&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,210&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;Commercial paper&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;3,491&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&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: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, Times, serif; font-size: 10pt"&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: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, Times, serif; font-size: 10pt"&gt;3,491&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;/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;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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,484&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;22&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; 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; 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;, Times, serif; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;"&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;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; 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;1,506&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; 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;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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;48,397&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;112&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(22&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; padding-bottom: 3px;"&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;48,487&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&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. government agency securities, U.S. municipal securities, commercial paper and certificates of deposit 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&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 0pt -2pt; text-align: left; text-indent: 27pt;"&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.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;&#160;balance of held-to-maturity debt securities by contractual maturity is shown in the following table at amortized cost. 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&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;, Times, serif; 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;, 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 83%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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&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;, 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;34,088&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;59,357&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; 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;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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:InvestmentTextBlock>
    <us-gaap:HeldToMaturitySecuritiesTextBlock
      contextRef="d_2020-01-01_2020-12-31"
      id="c16A02872-EA8D-4AAF-BD8D-4FDE0DA0691E">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; 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="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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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;, Times, serif; font-size: 10pt; width: 48%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Amortized 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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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&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;, 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; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; 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; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; 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; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; 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; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; 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;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: 10%; 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: 10%; 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: 10%; 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: 10%; 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. 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;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; 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;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; 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;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; 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;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; 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; padding: 0; margin: 0"&gt;Commercial paper&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 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: 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: 10%; 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: 10%; 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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 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: 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;"&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&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; padding-bottom: 1px; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;93&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; 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; 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;, Times, serif; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;"&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;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; 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;5,488&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; 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;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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px;"&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px;"&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="margin-right: 5%; margin-left: 18pt; 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="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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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, 2019&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; 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;, Times, serif; font-size: 10pt; width: 48%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Amortized 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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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&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;, 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; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,274&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(7&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,268&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;26,944&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;80&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(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;)&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;27,012&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. 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;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,204&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(3&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,210&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;Commercial paper&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;3,491&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: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&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: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, Times, serif; font-size: 10pt"&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: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, Times, serif; font-size: 10pt"&gt;3,491&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;/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;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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,484&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;22&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; 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; 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;, Times, serif; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;"&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;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; 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;1,506&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; 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;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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;48,397&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;112&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(22&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; padding-bottom: 3px;"&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;48,487&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:HeldToMaturitySecuritiesTextBlock>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-5"
      id="c68814648"
      unitRef="USD">18500000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c68814649"
      unitRef="USD">6000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-4"
      id="c68814650"
      unitRef="USD">10000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c68814651"
      unitRef="USD">18496000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c68814652"
      unitRef="USD">42048000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c68814653"
      unitRef="USD">211000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c68814654"
      unitRef="USD">11000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c68814655"
      unitRef="USD">42248000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c68814656"
      unitRef="USD">25003000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c68814657"
      unitRef="USD">83000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c68814658"
      unitRef="USD">2000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c68814659"
      unitRef="USD">25084000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c68814660"
      unitRef="USD">2499000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c68814661"
      unitRef="USD">0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c68814662"
      unitRef="USD">-0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c68814663"
      unitRef="USD">2499000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c68814664"
      unitRef="USD">5395000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c68814665"
      unitRef="USD">93000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c68814666"
      unitRef="USD">-0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c68814667"
      unitRef="USD">5488000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814668"
      unitRef="USD">93445000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814669"
      unitRef="USD">393000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814670"
      unitRef="USD">23000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814671"
      unitRef="USD">93815000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c68814680"
      unitRef="USD">6274000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c68814681"
      unitRef="USD">1000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c68814682"
      unitRef="USD">7000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c68814683"
      unitRef="USD">6268000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c68814684"
      unitRef="USD">26944000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-4"
      id="c68814685"
      unitRef="USD">80000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c68814686"
      unitRef="USD">12000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c68814687"
      unitRef="USD">27012000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c68814688"
      unitRef="USD">10204000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c68814689"
      unitRef="USD">9000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c68814690"
      unitRef="USD">3000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2019-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-4"
      id="c68814691"
      unitRef="USD">10210000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c68814692"
      unitRef="USD">3491000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c68814693"
      unitRef="USD">0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c68814694"
      unitRef="USD">-0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2019-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c68814695"
      unitRef="USD">3491000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c68814696"
      unitRef="USD">1484000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c68814697"
      unitRef="USD">22000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c68814698"
      unitRef="USD">-0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2019-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c68814699"
      unitRef="USD">1506000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814700"
      unitRef="USD">48397000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814701"
      unitRef="USD">112000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814702"
      unitRef="USD">22000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814703"
      unitRef="USD">48487000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741314">
    &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;, Times, serif; 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;, 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 83%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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&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;, 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;34,088&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;59,357&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; 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;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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock>
    <us-gaap:HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814706"
      unitRef="USD">34088000</us-gaap:HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount>
    <us-gaap:HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814707"
      unitRef="USD">59357000</us-gaap:HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814708"
      unitRef="USD">93445000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741315">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;8&lt;/em&gt; &#x2013; Property and Equipment&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Property and equipment consists of the following:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&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;, Times, serif; 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;, 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="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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&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; 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;, Times, serif; font-size: 10pt; width: 66%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; 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&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;, 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;Land&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;14,028&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;14,098&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;Buildings and improvements&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;77,285&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;75,843&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;Machinery and equipment&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;221,301&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;208,954&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;Computer hardware and software&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;79,207&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;24,953&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;Leasehold improvements&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,821&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,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;Construction in progress&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;33,780&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;54,313&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; 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;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;"&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; margin-left: 0pt;"&gt;433,422&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;385,502&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;Accumulated depreciation and amortization&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(150,756&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; padding-bottom: 1px;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(121,790&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; padding-bottom: 1px;"&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;"&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;Property and equipment, net&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;263,712&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;Depreciation expense for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt; was $29.6 million, $27.4 million and $23.5 million, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
  </us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock>
    <us-gaap:PropertyPlantAndEquipmentTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741316">
    &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;, Times, serif; 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;, 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="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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&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; 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;, Times, serif; font-size: 10pt; width: 66%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; 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&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;, 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;Land&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;14,028&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;14,098&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;Buildings and improvements&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;77,285&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;75,843&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;Machinery and equipment&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;221,301&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;208,954&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;Computer hardware and software&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;79,207&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;24,953&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;Leasehold improvements&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,821&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,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;Construction in progress&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;33,780&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;54,313&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; 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;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;"&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; margin-left: 0pt;"&gt;433,422&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;385,502&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;Accumulated depreciation and amortization&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(150,756&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; padding-bottom: 1px;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(121,790&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; padding-bottom: 1px;"&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;"&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;Property and equipment, net&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;263,712&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:PropertyPlantAndEquipmentTextBlock>
    <us-gaap:Land
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814713"
      unitRef="USD">14028000</us-gaap:Land>
    <us-gaap:Land
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814714"
      unitRef="USD">14098000</us-gaap:Land>
    <us-gaap:BuildingsAndImprovementsGross
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814715"
      unitRef="USD">77285000</us-gaap:BuildingsAndImprovementsGross>
    <us-gaap:BuildingsAndImprovementsGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814716"
      unitRef="USD">75843000</us-gaap:BuildingsAndImprovementsGross>
    <us-gaap:MachineryAndEquipmentGross
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814717"
      unitRef="USD">221301000</us-gaap:MachineryAndEquipmentGross>
    <us-gaap:MachineryAndEquipmentGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814718"
      unitRef="USD">208954000</us-gaap:MachineryAndEquipmentGross>
    <prlb:ComputerHardwareAndSoftwareGross
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814719"
      unitRef="USD">79207000</prlb:ComputerHardwareAndSoftwareGross>
    <prlb:ComputerHardwareAndSoftwareGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814720"
      unitRef="USD">24953000</prlb:ComputerHardwareAndSoftwareGross>
    <us-gaap:LeaseholdImprovementsGross
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814721"
      unitRef="USD">7821000</us-gaap:LeaseholdImprovementsGross>
    <us-gaap:LeaseholdImprovementsGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814722"
      unitRef="USD">7341000</us-gaap:LeaseholdImprovementsGross>
    <us-gaap:ConstructionInProgressGross
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c68814723"
      unitRef="USD">33780000</us-gaap:ConstructionInProgressGross>
    <us-gaap:ConstructionInProgressGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814724"
      unitRef="USD">54313000</us-gaap:ConstructionInProgressGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814725"
      unitRef="USD">433422000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814726"
      unitRef="USD">385502000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814727"
      unitRef="USD">150756000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c68814728"
      unitRef="USD">121790000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814729"
      unitRef="USD">282666000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814730"
      unitRef="USD">263712000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:Depreciation
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-5"
      id="c68815511"
      unitRef="USD">29600000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-5"
      id="c68815512"
      unitRef="USD">27400000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-5"
      id="c68815513"
      unitRef="USD">23500000</us-gaap:Depreciation>
    <us-gaap:InventoryDisclosureTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741317">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;9&lt;/em&gt; &#x2013; Inventory&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Inventory consists primarily of raw materials, which are recorded at the lower of cost or market using the average-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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company&#x2019;s inventory consists of the following:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&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;, Times, serif; 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;, 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="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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&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; 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;, Times, serif; font-size: 10pt; width: 66%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; 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&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;, Times, serif; font-size: 10pt"&gt;Total inventory&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&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"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;10,319&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;/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;Allowance for obsolescence&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: 1px 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; margin-left: 0pt; border-bottom: 1px 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; margin-left: 0pt; padding-bottom: 1px;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(244&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; padding-bottom: 1px;"&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"&gt;Inventory, net of allowance&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: 14%; 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;10,862&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; 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: 14%; 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;10,075&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;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </us-gaap:InventoryDisclosureTextBlock>
    <us-gaap:ScheduleOfInventoryCurrentTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741318">
    &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;, Times, serif; 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;, 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="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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&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; 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;, Times, serif; font-size: 10pt; width: 66%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; 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&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;, Times, serif; font-size: 10pt"&gt;Total inventory&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&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"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;10,319&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;/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;Allowance for obsolescence&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: 1px 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; margin-left: 0pt; border-bottom: 1px 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; margin-left: 0pt; padding-bottom: 1px;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(244&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; padding-bottom: 1px;"&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"&gt;Inventory, net of allowance&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: 14%; 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;10,862&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; 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: 14%; 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;10,075&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;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfInventoryCurrentTableTextBlock>
    <us-gaap:InventoryGross
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814735"
      unitRef="USD">11122000</us-gaap:InventoryGross>
    <us-gaap:InventoryGross
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814736"
      unitRef="USD">10319000</us-gaap:InventoryGross>
    <us-gaap:InventoryValuationReserves
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c68814737"
      unitRef="USD">260000</us-gaap:InventoryValuationReserves>
    <us-gaap:InventoryValuationReserves
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814738"
      unitRef="USD">244000</us-gaap:InventoryValuationReserves>
    <us-gaap:InventoryNet
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68814739"
      unitRef="USD">10862000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68814740"
      unitRef="USD">10075000</us-gaap:InventoryNet>
    <us-gaap:DebtDisclosureTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741319">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;10&lt;/em&gt; &#x2013; Financing Obligations&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company had no financing obligations as of &lt;em style="font: inherit;"&gt; December 31, 2020 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2019&lt;/em&gt;.&lt;i&gt;&#160;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
  </us-gaap:DebtDisclosureTextBlock>
    <us-gaap:LineOfCredit
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815519"
      unitRef="USD">0</us-gaap:LineOfCredit>
    <us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741320">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;11&lt;/em&gt; &#x2013; Employee Benefit Plans&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company maintains a &lt;em style="font: inherit;"&gt;401&lt;/em&gt;(k) retirement plan that covers employees in the United States. Under the plan, a full-time or regular part-time (over 20 hours/week) employee becomes a participant after completing &lt;span style="-sec-ix-hidden:c68815524"&gt;three&lt;/span&gt; months of employment. Employees &lt;em style="font: inherit;"&gt; may &lt;/em&gt;elect to contribute up to 50 percent of regular gross pay, subject to federal law limits on the dollar amount that participants &lt;em style="font: inherit;"&gt; may &lt;/em&gt;contribute to the plan, each calendar year. The Company matches part of the employee contributions and &lt;em style="font: inherit;"&gt; may &lt;/em&gt;make a discretionary contribution to the plan. Total employer contributions were approximately $3.3&#160;million, $3.1 million and $2.7 million for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018,&lt;/em&gt; respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company also sponsors a defined contribution retirement plan that covers the employees in the United Kingdom. Total employer contributions were approximately $0.5&#160;million for the year ended &lt;em style="font: inherit;"&gt; December 31, 2020 &lt;/em&gt;and approximately&#160;$0.3 million&#160;in each of the years ended &lt;em style="font: inherit;"&gt; December 31, 2019 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2018.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
  </us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock>
    <prlb:MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan
      contextRef="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="INF"
      id="c68815523"
      unitRef="Pure">20</prlb:MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan>
    <us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent
      contextRef="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="1"
      id="c68815525"
      unitRef="Pure">0.50</us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="-5"
      id="c68815526"
      unitRef="USD">3300000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="-5"
      id="c68815527"
      unitRef="USD">3100000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="d_2018-01-01_2018-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="-5"
      id="c68815528"
      unitRef="USD">2700000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="-5"
      id="c68815531"
      unitRef="USD">500000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount
      contextRef="d_2019-01-01_2019-12-31_RetirementPlanSponsorLocationAxis-ForeignPlanMember_RetirementPlanTypeAxis-The401KRetirementPlanMember"
      decimals="-5"
      id="c68815532"
      unitRef="USD">300000</us-gaap:DefinedContributionPlanEmployerDiscretionaryContributionAmount>
    <us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741321">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;12&lt;/em&gt; &#x2013; Stock-Based Compensation&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company has &lt;em style="font: inherit;"&gt;two&lt;/em&gt; equity incentive plans: the &lt;em style="font: inherit;"&gt;2000&lt;/em&gt; Stock Option Plan (&lt;em style="font: inherit;"&gt;2000&lt;/em&gt; Plan) and the &lt;em style="font: inherit;"&gt;2012&lt;/em&gt; Long-Term Incentive Plan (&lt;em style="font: inherit;"&gt;2012&lt;/em&gt; Plan). Upon the adoption of the &lt;em style="font: inherit;"&gt;2012&lt;/em&gt; Plan on &lt;em style="font: inherit;"&gt; February&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;21,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2012,&lt;/em&gt; all shares that were reserved but &lt;em style="font: inherit;"&gt;not&lt;/em&gt; issued under the &lt;em style="font: inherit;"&gt;2000&lt;/em&gt; Plan were assumed by the &lt;em style="font: inherit;"&gt;2012&lt;/em&gt; Plan. &lt;em style="font: inherit;"&gt;No&lt;/em&gt; additional&#160;awards will be issued under the &lt;em style="font: inherit;"&gt;2000&lt;/em&gt; Plan. Under 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, performance stock, 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:c68815550"&gt;ten&lt;/span&gt; years from the date of grant. The compensation committee of the board of directors &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. Restricted stock is valued at fair market value on the date of grant.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&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 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:c68815556"&gt;six&lt;/span&gt;-month offering periods with a single purchase period, and 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. The Company determines the fair value stock-based compensation related to its ESPP in accordance with ASC &lt;em style="font: inherit;"&gt;718&lt;/em&gt; using the component measurement approach and the Black-Scholes standard option pricing model.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Employees purchased 42,235 and 41,615 shares of common stock under the ESPP at an average exercise price of $85.85 and $86.70 during &lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&#160;and &lt;em style="font: inherit;"&gt;2019&lt;/em&gt;, respectively. As of &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;, 1,126,595&#160;shares remained available for future issuance under the ESPP.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company determines its stock-based compensation in accordance with ASC &lt;em style="font: inherit;"&gt;718,&lt;/em&gt; which requires the measurement and recognition of compensation expense for all share-based payment awards made to employees and non-employee directors based on fair value.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Determining the appropriate fair value model and calculating the fair value of stock option grants requires the input of subjective assumptions. The Company uses the Black-Scholes option pricing model to value its stock option awards. Stock-based compensation expense is calculated using the Company&#x2019;s best estimates, which involve inherent uncertainties and the application of management&#x2019;s judgment. Significant estimates include its expected term and&#160;stock price volatility.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The expected term of stock options is estimated from the vesting period of the award and represents the weighted average period that&#160;the Company's&#160;stock options are expected to be outstanding. The Company estimates the volatility of its stock price based on the historic volatility of its common stock. The Company bases the risk-free interest rate that it uses in the Black-Scholes option pricing model on U.S.&#160;Treasury instruments with maturities similar to the expected term of the award being valued. The Company has never paid and does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; anticipate paying, any cash dividends in the foreseeable future and, therefore, the Company uses an expected dividend yield of &lt;em style="font: inherit;"&gt;zero&lt;/em&gt; in the option pricing model. The Company accounts for forfeitures as they occur. The Company allocates stock-based compensation expense on a straight-line basis over the requisite service period.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table summarizes stock-based compensation expense for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;, respectively:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 49%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&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;, 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;Stock options and other&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;13,327&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9,591&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,113&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;Employee stock purchase plan&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,346&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,190&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;815&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; 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;Total stock-based compensation 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;14,673&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,781&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,928&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; padding-bottom: 3px;"&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;/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;Cost of revenue&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,451&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,056&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,543&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;Operating expenses:&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="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="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="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;"&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: 18pt;"&gt;Marketing and sales&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,121&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,632&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,942&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; margin-left: 18pt;"&gt;Research and development&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,440&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,851&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,517&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; margin-left: 18pt;"&gt;General and administrative&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,661&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;4,242&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,926&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; 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;Total stock-based compensation 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;14,673&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,781&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,928&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Stock Options&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table provides the assumptions used in the Black-Scholes option pricing model for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 18pt; 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="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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&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;, Times, serif; font-size: 10pt; width: 52%;"&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;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.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;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: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.35 - 2.58%&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: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.52 - 3.07%&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;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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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="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;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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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;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: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;42.52 - 42.74%&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: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;41.68 - 42.22%&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;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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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;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;Weighted average grant date fair value&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;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$45.32&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;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$47.84&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;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$50.08&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table summarizes stock option activity and the weighted average exercise price for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; 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="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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&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;, 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; margin-top: 0pt; margin-bottom: 0pt;"&gt;Options outstanding at January 1, 2018&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;399,055&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;51.13&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; margin-left: 9pt;"&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;"&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;36,600&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;110.59&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; margin-left: 9pt;"&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;"&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;(155,765&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;38.92&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; margin-left: 9pt;"&gt;Cancelled&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(27,274&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; padding-bottom: 1px;"&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;74.35&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; 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;Options outstanding at December 31, 2018&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;252,616&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;64.71&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; margin-left: 9pt;"&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;"&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;53,708&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;105.81&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; margin-left: 9pt;"&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;"&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;(16,079&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;48.67&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; margin-left: 9pt;"&gt;Cancelled&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(13,979&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; padding-bottom: 1px;"&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;89.50&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; 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;Options outstanding at December 31, 2019&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;276,266&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;72.38&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; margin-left: 9pt;"&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;"&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;60,065&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;105.79&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; margin-left: 9pt;"&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;"&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;(68,958&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;57.00&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; margin-left: 9pt;"&gt;Cancelled&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;&#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: 1px solid rgb(0, 0, 0);"&gt;(37,842&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; padding-bottom: 1px;"&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;"&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;67.92&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; 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;, 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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; 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; padding-bottom: 3px; 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;/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;Exercisable 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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;94,318&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; 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;69.36&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The outstanding options have a term of &lt;span style="-sec-ix-hidden:c68815577"&gt;10&lt;/span&gt; years. For employees, options that have been granted become exercisable ratably over the vesting period, which is generally a &lt;span style="-sec-ix-hidden:c68815578"&gt;four&lt;/span&gt;- or &lt;span style="-sec-ix-hidden:c68815579"&gt;five&lt;/span&gt;-year period, 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 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The total intrinsic value of options exercised during the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;, was $5.4 million, $0.9 million and $13.0 million, respectively. The aggregate intrinsic value represents the cumulative difference between the fair market value of the underlying common stock and the option exercise prices.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;For options outstanding at &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;, the weighted-average remaining contractual term was 6.8 years and the aggregate intrinsic value was $15.4 million. For options exercisable at &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;, the weighted-average remaining contractual term was 5.0 years and the aggregate intrinsic value was $7.9 million. Refer to the table below for additional information.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table summarizes information about stock options outstanding at &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; 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="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: 25%;"&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="8" 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: 31%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;Options Outstanding, Vested and Expected to Vest&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="5" 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: 16%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;Options Exercisable&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 class="finHeading" 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: 25%; border-bottom: thin solid rgb(0, 0, 0);"&gt;&lt;b&gt;Range of Exercise Prices&lt;/b&gt;&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="1" 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;b&gt;Number Outstanding&lt;/b&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="1" 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;b&gt;Weighted Average Remaining Contractual Life&lt;/b&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;b&gt;Weighted Average Exercise Price ($)&lt;/b&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="1" 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;b&gt;Number Exercisable&lt;/b&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;b&gt;Weighted Average Exercise Price ($)&lt;/b&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="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: 25%;"&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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;"&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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; 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: 12%;"&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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&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;/tr&gt;
&lt;tr class="finHeading" 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: 25%"&gt;$7.76 to $31.43&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&lt;/td&gt;&lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;5,964&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;1.35&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 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; width: 1%"&gt;30.58&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 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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;5,964&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 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; width: 1%"&gt;30.58&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;/tr&gt;
&lt;tr class="finHeading" 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: 25%"&gt;$31.44 to $66.87&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&lt;/td&gt;&lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;78,482&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;4.81&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 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; width: 1%"&gt;57.51&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 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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;56,032&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 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; width: 1%"&gt;57.18&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;/tr&gt;
&lt;tr class="finHeading" 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: 25%"&gt;$66.88 to $96.20&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&lt;/td&gt;&lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;10,591&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;4.42&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 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; width: 1%"&gt;74.05&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 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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;9,343&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 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; width: 1%"&gt;71.09&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;/tr&gt;
&lt;tr class="finHeading" 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: 25%"&gt;$96.21 to $123.10&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&lt;/td&gt;&lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;134,494&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;8.45&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 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; width: 1%"&gt;106.81&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 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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;22,979&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 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; width: 1%"&gt;108.41&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;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The fair value of share-based payment transactions is recognized in the consolidated statements of comprehensive income. As of &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;, there was $4.2 million of total unrecognized compensation cost related to unvested stock options, which is expected to be recognized over a weighted average period of 2.6 years. The total fair value of options vested was $1.8 million, $1.5 million and $1.5 million for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Restricted Stock&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The &lt;em style="font: inherit;"&gt;2012&lt;/em&gt; Plan provides for the award of restricted stock or restricted stock units. Restricted stock awards are share settled and restrictions lapse ratably over the vesting period, which is generally a &lt;span style="-sec-ix-hidden:c68815600"&gt;four&lt;/span&gt;- or &lt;span style="-sec-ix-hidden:c68815601"&gt;five&lt;/span&gt;-year period, 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 directors, restrictions generally lapse 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table summarizes restricted stock activity for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;:&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&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;, Times, serif; 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;, 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Stock Awards&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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&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;, Times, serif; font-size: 10pt; width: 66%;"&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 January 1, 2018&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;334,831&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63.29&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; margin-left: 9pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;106,855&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115.41&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; margin-left: 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(86,191&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63.64&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; margin-left: 9pt;"&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-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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(31,574&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; padding-bottom: 1px;"&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;"&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; margin-left: 0pt;"&gt;68.67&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; 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;, 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, 2018&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;323,921&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;79.85&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; margin-left: 9pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115,471&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;106.35&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; margin-left: 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(92,597&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;77.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="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; margin-left: 9pt;"&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-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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(31,822&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; padding-bottom: 1px;"&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;"&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; margin-left: 0pt;"&gt;87.58&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; 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;, 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, 2019&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;314,973&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;89.55&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; margin-left: 9pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;108,179&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;111.76&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; margin-left: 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(101,941&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;84.70&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; margin-left: 9pt;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(14,012&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; padding-bottom: 1px;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;94.24&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; 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;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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; 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: 14%; 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; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"&gt;&#160;&lt;/p&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;As of &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;, there was $21.2 million of unrecognized compensation expense related to non-vested restricted stock, which is expected to be recognized over a weighted-average period of 2.4 years.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Performance Stock&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Performance Stock Units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between &lt;span style="-sec-ix-hidden:c68815609"&gt;0&lt;/span&gt; percent and 150 percent of that target number capable of being earned and vesting at the end of a &lt;span style="-sec-ix-hidden:c68815611"&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.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table summarizes performance stock activity for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;:&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt -9pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; 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="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Stock Awards&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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;, 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="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="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; width: 68%;"&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 January 1, 2018&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;25,707&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;58.35&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; margin-left: 9pt;"&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;"&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;20,006&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;105.75&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; margin-left: 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;Performance change&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"&gt;6,427&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;58.35&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;/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: 9pt;"&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: 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; margin-left: 0pt; 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; 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="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, 2018&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;52,140&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;76.54&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; margin-left: 9pt;"&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;"&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;21,434&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;104.99&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; margin-left: 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(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: 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;(61,816&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;88.06&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; margin-left: 9pt;"&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: 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; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;(2,375&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;105.37&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;Performance stock at December 31, 2019&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;9,383&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;58.35&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; margin-left: 9pt;"&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;"&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;"&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;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(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: 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;(7,113&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58.35&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; margin-left: 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="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: 9pt;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(2,270&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;58.35&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; 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;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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;As of &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;, there was $1.7 million of unrecognized compensation expense related to non-vested performance stock, which is expected to be recognized over a weighted-average period of 2.1 years. Unrecognized stock-based compensation costs related to non-vested performance stock in &lt;em style="font: inherit;"&gt;2020&lt;/em&gt; when compared to &lt;em style="font: inherit;"&gt;2019&lt;/em&gt; increased $1.6 million driven by an increase in the number of shares expected to vest at the end of future performance periods.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Employee Stock Purchase Plan&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The following table presents the assumptions used to estimate the fair value of the ESPP during the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 27pt; 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="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="7" style="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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;"&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="1" 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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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="1" 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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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="1" 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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&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;, Times, serif; font-size: 10pt; width: 52%;"&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;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: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.12 - 0.17%&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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;1.59 - 2.35%&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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;2.06 - 2.33%&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;Expected life (months)&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: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.00&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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.00&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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.00&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;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: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;50.85 - 59.99%&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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.63 - 53.57%&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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;31.50 - 37.36%&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;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: 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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;


  </us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-ESPPMember"
      decimals="2"
      id="c68815555"
      unitRef="Pure">0.15</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-ESPPMember"
      decimals="2"
      id="c68815557"
      unitRef="Pure">0.85</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-ESPPMember"
      decimals="INF"
      id="c68815560"
      unitRef="Share">42235</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember"
      decimals="INF"
      id="c68815561"
      unitRef="Share">41615</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <prlb:EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-ESPPMember"
      decimals="INF"
      id="c68815562"
      unitRef="Share">85.85</prlb:EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased>
    <prlb:EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember"
      decimals="INF"
      id="c68815563"
      unitRef="Share">86.70</prlb:EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="i_2020-12-31_AwardTypeAxis-ESPPMember"
      decimals="INF"
      id="c68815566"
      unitRef="Share">1126595</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741322">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 49%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&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;, 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;Stock options and other&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;13,327&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9,591&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;10,113&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;Employee stock purchase plan&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,346&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,190&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;815&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; 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;Total stock-based compensation 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;14,673&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,781&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,928&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; padding-bottom: 3px;"&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;/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;Cost of revenue&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,451&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,056&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,543&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;Operating expenses:&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="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="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="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;"&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: 18pt;"&gt;Marketing and sales&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,121&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,632&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,942&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; margin-left: 18pt;"&gt;Research and development&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,440&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,851&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,517&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; margin-left: 18pt;"&gt;General and administrative&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,661&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;4,242&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,926&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; 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;Total stock-based compensation 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;14,673&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,781&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,928&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember"
      decimals="-3"
      id="c68814747"
      unitRef="USD">13327000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember"
      decimals="-3"
      id="c68814748"
      unitRef="USD">9591000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-StockOptionsRestrictedStockAndOtherMember"
      decimals="-3"
      id="c68814749"
      unitRef="USD">10113000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-ESPPMember"
      decimals="-3"
      id="c68814750"
      unitRef="USD">1346000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-ESPPMember"
      decimals="-4"
      id="c68814751"
      unitRef="USD">1190000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-ESPPMember"
      decimals="-3"
      id="c68814752"
      unitRef="USD">815000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814753"
      unitRef="USD">14673000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814754"
      unitRef="USD">10781000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814755"
      unitRef="USD">10928000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-CostOfSalesMember"
      decimals="-3"
      id="c68814756"
      unitRef="USD">2451000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-CostOfSalesMember"
      decimals="-3"
      id="c68814757"
      unitRef="USD">2056000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-CostOfSalesMember"
      decimals="-3"
      id="c68814758"
      unitRef="USD">1543000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"
      decimals="-3"
      id="c68814759"
      unitRef="USD">3121000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"
      decimals="-3"
      id="c68814760"
      unitRef="USD">2632000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-SellingAndMarketingExpenseMember"
      decimals="-3"
      id="c68814761"
      unitRef="USD">1942000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember"
      decimals="-4"
      id="c68814762"
      unitRef="USD">2440000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember"
      decimals="-3"
      id="c68814763"
      unitRef="USD">1851000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-ResearchAndDevelopmentExpenseMember"
      decimals="-3"
      id="c68814764"
      unitRef="USD">1517000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2020-01-01_2020-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"
      decimals="-3"
      id="c68814765"
      unitRef="USD">6661000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"
      decimals="-3"
      id="c68814766"
      unitRef="USD">4242000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31_IncomeStatementLocationAxis-GeneralAndAdministrativeExpenseMember"
      decimals="-3"
      id="c68814767"
      unitRef="USD">5926000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68814768"
      unitRef="USD">14673000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68814769"
      unitRef="USD">10781000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68814770"
      unitRef="USD">10928000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741323">
    &lt;table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 18pt; 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="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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&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;, Times, serif; font-size: 10pt; width: 52%;"&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;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.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;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: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.35 - 2.58%&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: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.52 - 3.07%&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;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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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="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;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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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;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: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;42.52 - 42.74%&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: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;41.68 - 42.22%&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;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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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;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;Weighted average grant date fair value&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;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$45.32&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;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$47.84&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;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$50.08&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_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="3"
      id="c68814797"
      unitRef="Pure">0.0050</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c68814798"
      unitRef="Pure">0.0147</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c68814811"
      unitRef="Pure">0.0235</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c68814812"
      unitRef="Pure">0.0258</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c68814825"
      unitRef="Pure">0.0252</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c68814826"
      unitRef="Pure">0.0307</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      id="c68814781">P6Y3M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      id="c68814782">P6Y3M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      id="c68814783">P6Y3M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="3"
      id="c68814801"
      unitRef="Pure">0.4240</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c68814802"
      unitRef="Pure">0.4383</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c68814815"
      unitRef="Pure">0.4252</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c68814816"
      unitRef="Pure">0.4274</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c68814829"
      unitRef="Pure">0.4168</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c68814830"
      unitRef="Pure">0.4222</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c68814787"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c68814788"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c68814789"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="INF"
      id="c68814790"
      unitRef="USDPerShare">45.32</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="INF"
      id="c68814791"
      unitRef="USDPerShare">47.84</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="INF"
      id="c68814792"
      unitRef="USDPerShare">50.08</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741324">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; 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="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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&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;, 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; margin-top: 0pt; margin-bottom: 0pt;"&gt;Options outstanding at January 1, 2018&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;399,055&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;51.13&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; margin-left: 9pt;"&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;"&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;36,600&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;110.59&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; margin-left: 9pt;"&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;"&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;(155,765&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;38.92&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; margin-left: 9pt;"&gt;Cancelled&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(27,274&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; padding-bottom: 1px;"&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;74.35&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; 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;Options outstanding at December 31, 2018&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;252,616&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;64.71&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; margin-left: 9pt;"&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;"&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;53,708&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;105.81&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; margin-left: 9pt;"&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;"&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;(16,079&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;48.67&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; margin-left: 9pt;"&gt;Cancelled&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(13,979&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; padding-bottom: 1px;"&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;89.50&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; 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;Options outstanding at December 31, 2019&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;276,266&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;72.38&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; margin-left: 9pt;"&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;"&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;60,065&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;105.79&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; margin-left: 9pt;"&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;"&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;(68,958&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;57.00&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; margin-left: 9pt;"&gt;Cancelled&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;&#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: 1px solid rgb(0, 0, 0);"&gt;(37,842&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; padding-bottom: 1px;"&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;"&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;67.92&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; 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;, 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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; 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; padding-bottom: 3px; 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;/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;Exercisable 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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;94,318&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; 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;69.36&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2017-12-31"
      decimals="INF"
      id="c68814841"
      unitRef="Share">399055</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2017-12-31"
      decimals="INF"
      id="c68814842"
      unitRef="USDPerShare">51.13</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814843"
      unitRef="Share">36600</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814844"
      unitRef="USDPerShare">110.59</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814845"
      unitRef="Share">155765</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814846"
      unitRef="USDPerShare">38.92</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814847"
      unitRef="Share">27274</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
      contextRef="d_2018-01-01_2018-12-31"
      decimals="INF"
      id="c68814848"
      unitRef="USDPerShare">74.35</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2018-12-31"
      decimals="INF"
      id="c68814849"
      unitRef="Share">252616</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2018-12-31"
      decimals="INF"
      id="c68814850"
      unitRef="USDPerShare">64.71</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814851"
      unitRef="Share">53708</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814852"
      unitRef="USDPerShare">105.81</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814853"
      unitRef="Share">16079</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814854"
      unitRef="USDPerShare">48.67</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814855"
      unitRef="Share">13979</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
      contextRef="d_2019-01-01_2019-12-31"
      decimals="INF"
      id="c68814856"
      unitRef="USDPerShare">89.50</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c68814857"
      unitRef="Share">276266</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2019-12-31"
      decimals="INF"
      id="c68814858"
      unitRef="USDPerShare">72.38</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814859"
      unitRef="Share">60065</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814860"
      unitRef="USDPerShare">105.79</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814861"
      unitRef="Share">68958</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814862"
      unitRef="USDPerShare">57.00</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814863"
      unitRef="Share">37842</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
      contextRef="d_2020-01-01_2020-12-31"
      decimals="INF"
      id="c68814864"
      unitRef="USDPerShare">67.92</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c68814865"
      unitRef="Share">229531</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c68814866"
      unitRef="USDPerShare">86.46</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c68814867"
      unitRef="Share">94318</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c68814868"
      unitRef="USDPerShare">69.36</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-5"
      id="c68815584"
      unitRef="USD">5400000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-5"
      id="c68815585"
      unitRef="USD">900000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-6"
      id="c68815586"
      unitRef="USD">13000000.0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2 contextRef="d_2020-01-01_2020-12-31" id="c68815587">P6Y9M18D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
      contextRef="i_2020-12-31"
      decimals="-5"
      id="c68815588"
      unitRef="USD">15400000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1 contextRef="d_2020-01-01_2020-12-31" id="c68815589">P5Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1
      contextRef="i_2020-12-31"
      decimals="-5"
      id="c68815590"
      unitRef="USD">7900000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1>
    <us-gaap:ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741325">
    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; 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="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: 25%;"&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="8" 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: 31%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;Options Outstanding, Vested and Expected to Vest&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="5" 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: 16%;"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;Options Exercisable&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 class="finHeading" 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: 25%; border-bottom: thin solid rgb(0, 0, 0);"&gt;&lt;b&gt;Range of Exercise Prices&lt;/b&gt;&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="1" 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;b&gt;Number Outstanding&lt;/b&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="1" 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;b&gt;Weighted Average Remaining Contractual Life&lt;/b&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;b&gt;Weighted Average Exercise Price ($)&lt;/b&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="1" 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;b&gt;Number Exercisable&lt;/b&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;b&gt;Weighted Average Exercise Price ($)&lt;/b&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="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: 25%;"&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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;"&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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; 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: 12%;"&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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; 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 style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 12%;"&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;/tr&gt;
&lt;tr class="finHeading" 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: 25%"&gt;$7.76 to $31.43&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&lt;/td&gt;&lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;5,964&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;1.35&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 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; width: 1%"&gt;30.58&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 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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;5,964&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 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; width: 1%"&gt;30.58&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;/tr&gt;
&lt;tr class="finHeading" 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: 25%"&gt;$31.44 to $66.87&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&lt;/td&gt;&lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;78,482&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;4.81&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 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; width: 1%"&gt;57.51&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 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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;56,032&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 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; width: 1%"&gt;57.18&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;/tr&gt;
&lt;tr class="finHeading" 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: 25%"&gt;$66.88 to $96.20&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&lt;/td&gt;&lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;10,591&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;4.42&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 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; width: 1%"&gt;74.05&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 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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;9,343&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 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; width: 1%"&gt;71.09&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;/tr&gt;
&lt;tr class="finHeading" 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: 25%"&gt;$96.21 to $123.10&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&lt;/td&gt;&lt;td colspan="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;134,494&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;&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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;8.45&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 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; width: 1%"&gt;106.81&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 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="1" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%"&gt;22,979&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 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; width: 1%"&gt;108.41&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;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit
      contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      id="c68815785"
      unitRef="USDPerShare"
      xsi:nil="true"/>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      decimals="INF"
      id="c68815786"
      unitRef="Share">5964</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit
      contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      id="c68815787"
      unitRef="USDPerShare"
      xsi:nil="true"/>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      id="c68815788">P1Y4M6D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      decimals="INF"
      id="c68815789"
      unitRef="USDPerShare">30.58</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      decimals="INF"
      id="c68815790"
      unitRef="Share">5964</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember"
      decimals="INF"
      id="c68815791"
      unitRef="USDPerShare">30.58</us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit
      contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      id="c68815792"
      unitRef="USDPerShare"
      xsi:nil="true"/>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      decimals="INF"
      id="c68815793"
      unitRef="Share">78482</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit
      contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      id="c68815794"
      unitRef="USDPerShare"
      xsi:nil="true"/>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      id="c68815795">P4Y9M21D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      decimals="INF"
      id="c68815796"
      unitRef="USDPerShare">57.51</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      decimals="INF"
      id="c68815797"
      unitRef="Share">56032</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeTwoMember"
      decimals="INF"
      id="c68815798"
      unitRef="USDPerShare">57.18</us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit
      contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      id="c68815799"
      unitRef="USDPerShare"
      xsi:nil="true"/>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      decimals="INF"
      id="c68815800"
      unitRef="Share">10591</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit
      contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      id="c68815801"
      unitRef="USDPerShare"
      xsi:nil="true"/>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      id="c68815802">P4Y5M1D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      decimals="INF"
      id="c68815803"
      unitRef="USDPerShare">74.05</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      decimals="INF"
      id="c68815804"
      unitRef="Share">9343</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeThreeMember"
      decimals="INF"
      id="c68815805"
      unitRef="USDPerShare">71.09</us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit
      contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      id="c68815806"
      unitRef="USDPerShare"
      xsi:nil="true"/>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      decimals="INF"
      id="c68815807"
      unitRef="Share">134494</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit
      contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      id="c68815808"
      unitRef="USDPerShare"
      xsi:nil="true"/>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      id="c68815809">P8Y5M12D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      decimals="INF"
      id="c68815810"
      unitRef="USDPerShare">106.81</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      decimals="INF"
      id="c68815811"
      unitRef="Share">22979</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1
      contextRef="i_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeFourMember"
      decimals="INF"
      id="c68815812"
      unitRef="USDPerShare">108.41</us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-5"
      id="c68815592"
      unitRef="USD">4200000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember"
      id="c68815593">P2Y7M6D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-5"
      id="c68815594"
      unitRef="USD">1800000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-5"
      id="c68815595"
      unitRef="USD">1500000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-5"
      id="c68815596"
      unitRef="USD">1500000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1>
    <us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741326">
    &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;, Times, serif; 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;, 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Stock Awards&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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&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;, Times, serif; font-size: 10pt; width: 66%;"&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 January 1, 2018&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;334,831&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63.29&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; margin-left: 9pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;106,855&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115.41&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; margin-left: 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(86,191&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;63.64&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; margin-left: 9pt;"&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-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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(31,574&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; padding-bottom: 1px;"&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;"&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; margin-left: 0pt;"&gt;68.67&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; 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;, 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, 2018&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;323,921&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;79.85&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; margin-left: 9pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115,471&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;106.35&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; margin-left: 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(92,597&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;77.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="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; margin-left: 9pt;"&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-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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(31,822&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; padding-bottom: 1px;"&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;"&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; margin-left: 0pt;"&gt;87.58&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; 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;, 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, 2019&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;314,973&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;89.55&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; margin-left: 9pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;108,179&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;111.76&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; margin-left: 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(101,941&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;84.70&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; margin-left: 9pt;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(14,012&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; padding-bottom: 1px;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;94.24&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; 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;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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; 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: 14%; 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; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i_2017-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814909"
      unitRef="Share">334831</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2017-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814910"
      unitRef="USDPerShare">63.29</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814911"
      unitRef="Share">106855</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814912"
      unitRef="USDPerShare">115.41</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814913"
      unitRef="Share">86191</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814914"
      unitRef="USDPerShare">63.64</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814915"
      unitRef="Share">31574</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814916"
      unitRef="USDPerShare">68.67</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814917"
      unitRef="Share">323921</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2018-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814918"
      unitRef="USDPerShare">79.85</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814919"
      unitRef="Share">115471</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814920"
      unitRef="USDPerShare">106.35</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814921"
      unitRef="Share">92597</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814922"
      unitRef="USDPerShare">77.25</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814923"
      unitRef="Share">31822</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814924"
      unitRef="USDPerShare">87.58</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814925"
      unitRef="Share">314973</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2019-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814926"
      unitRef="USDPerShare">89.55</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814927"
      unitRef="Share">108179</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814928"
      unitRef="USDPerShare">111.76</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814929"
      unitRef="Share">101941</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814930"
      unitRef="USDPerShare">84.70</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814931"
      unitRef="Share">14012</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814932"
      unitRef="USDPerShare">94.24</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i_2020-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814933"
      unitRef="Share">307199</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2020-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c68814934"
      unitRef="USDPerShare">98.87</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i_2020-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-5"
      id="c68815607"
      unitRef="USD">21200000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-RestrictedStockMember"
      id="c68815608">P2Y4M24D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit
      contextRef="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="1"
      id="c68815610"
      unitRef="Pure">1.50</prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit>
    <us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741327">
    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; 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="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Stock Awards&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; 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;, 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="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="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; width: 68%;"&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 January 1, 2018&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;25,707&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;58.35&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; margin-left: 9pt;"&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;"&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;20,006&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;105.75&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; margin-left: 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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;Performance change&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"&gt;6,427&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;58.35&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;/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: 9pt;"&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: 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; margin-left: 0pt; 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; 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="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, 2018&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;52,140&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;76.54&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; margin-left: 9pt;"&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;"&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;21,434&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;104.99&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; margin-left: 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(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: 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;(61,816&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;88.06&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; margin-left: 9pt;"&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: 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; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;(2,375&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;105.37&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;Performance stock at December 31, 2019&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;9,383&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;58.35&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; margin-left: 9pt;"&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;"&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;"&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;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(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: 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;(7,113&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: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58.35&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; margin-left: 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="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: 9pt;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(2,270&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;58.35&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; 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;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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2017-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814945"
      unitRef="Share">25707</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2017-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814946"
      unitRef="USDPerShare">58.35</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814947"
      unitRef="Share">20006</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814948"
      unitRef="USDPerShare">105.75</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814949"
      unitRef="Share">-0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814950"
      unitRef="USDPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814951"
      unitRef="Share">6427</prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange>
    <prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814952"
      unitRef="USDPerShare">58.35</prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814953"
      unitRef="Share">-0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814954"
      unitRef="USDPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814955"
      unitRef="Share">52140</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814956"
      unitRef="USDPerShare">76.54</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814957"
      unitRef="Share">21434</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814958"
      unitRef="USDPerShare">104.99</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814959"
      unitRef="Share">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814960"
      unitRef="USDPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814961"
      unitRef="Share">-61816</prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange>
    <prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814962"
      unitRef="USDPerShare">88.06</prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814963"
      unitRef="Share">2375</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814964"
      unitRef="USDPerShare">105.37</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814965"
      unitRef="Share">9383</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814966"
      unitRef="USDPerShare">58.35</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814967"
      unitRef="Share">19956</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814968"
      unitRef="USDPerShare">118.66</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814969"
      unitRef="Share">7113</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814970"
      unitRef="USDPerShare">58.35</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814971"
      unitRef="Share">0</prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange>
    <prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814972"
      unitRef="USDPerShare">0</prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814973"
      unitRef="Share">2270</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814974"
      unitRef="USDPerShare">58.35</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814975"
      unitRef="Share">19956</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c68814976"
      unitRef="USDPerShare">118.66</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="-5"
      id="c68815614"
      unitRef="USD">1700000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      id="c68815615">P2Y1M6D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <prlb:SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="-5"
      id="c68815618"
      unitRef="USD">1600000</prlb:SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount>
    <prlb:ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741328">
    &lt;table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 27pt; 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="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="7" style="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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;"&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="1" 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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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="1" 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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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="1" 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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center;"&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;, Times, serif; font-size: 10pt; width: 52%;"&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;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: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.12 - 0.17%&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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;1.59 - 2.35%&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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;2.06 - 2.33%&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;Expected life (months)&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: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.00&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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.00&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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.00&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;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: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;50.85 - 59.99%&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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.63 - 53.57%&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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;31.50 - 37.36%&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;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: 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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: center;"&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;
   </prlb:ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c68814999"
      unitRef="Pure">0.0012</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c68815000"
      unitRef="Pure">0.0017</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c68815011"
      unitRef="Pure">0.0159</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c68815012"
      unitRef="Pure">0.0235</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c68815023"
      unitRef="Pure">0.0206</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c68815024"
      unitRef="Pure">0.0233</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      id="c68814986">P6Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      id="c68814987">P6Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      id="c68814988">P6Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c68815003"
      unitRef="Pure">0.5085</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c68815004"
      unitRef="Pure">0.5999</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c68815015"
      unitRef="Pure">0.4263</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c68815016"
      unitRef="Pure">0.5357</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MinimumMember"
      decimals="3"
      id="c68815027"
      unitRef="Pure">0.3150</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c68815028"
      unitRef="Pure">0.3736</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="-3"
      id="c68814992"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2019-01-01_2019-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="-3"
      id="c68814993"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2018-01-01_2018-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="-3"
      id="c68814994"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <prlb:LesseeOperatingLeasesAndFinancingLeasesTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741329">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;13&lt;/em&gt; &#x2013; Leases&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company accounts for leases in accordance with ASC &lt;em style="font: inherit;"&gt;842,&lt;/em&gt; &lt;i&gt;Leases&lt;/i&gt;.&#160;The Company has operating leases for office space, manufacturing facilities and certain company vehicles and equipment and finance leases for certain company equipment. The leases have remaining lease terms of &lt;span style="-sec-ix-hidden:c68815624"&gt;one&lt;/span&gt; year to &lt;span style="-sec-ix-hidden:c68815625"&gt;eight&lt;/span&gt; years. Leases with an initial term of &lt;em style="font: inherit;"&gt;12&lt;/em&gt; months or less are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; recorded on the balance sheet; we recognize lease expense for these leases on a straight-line basis over the lease term. For purposes of calculating operating lease liabilities, lease terms &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be deemed to include options to extend or terminate the lease when it is reasonably certain that the Company will exercise that option. As of &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;, the operating lease liability does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; include any options to extend or terminate leases.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease assets, current operating lease liabilities and long-term operating lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date. Finance leases are included in finance lease assets, current finance lease liabilities and long-term finance lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date. The majority of the Company&#x2019;s leases do &lt;em style="font: inherit;"&gt;not&lt;/em&gt; provide an implicit rate of return, therefore, the Company uses its incremental borrowing rate based on the information available at commencement date in determining the present value of lease payments. Lease agreements that contain non-lease components, with the exception of certain real estate leases, are accounted for as a single lease component.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Supplemental balance sheet information related to leases was as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 20%; margin-left: 27pt; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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="6" 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&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;"&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: 62%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; 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;, 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;Operating lease 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;"&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;"&gt;9,855&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,425&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&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;, 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;Current operating lease liabilities&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,272&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,340&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;Long-term operating lease liabilities&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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,586&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,565&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; 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;, 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: 18pt;"&gt;Total operating lease liabilities&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: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,858&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; 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; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;11,905&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; 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;/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;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: &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;Finance lease 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;"&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;"&gt;2,396&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: 16%; 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&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(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;Current finance lease liabilities&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;552&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: 16%; 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="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;Long-term finance lease liabilities&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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,919&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; 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; 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;&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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: 18pt;"&gt;Total finance lease liabilities&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: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,471&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; 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; border-bottom: 3px double rgb(0, 0, 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Lease expense is recognized on a straight-line basis over the lease term, with variable payments recognized in the period those payments are incurred. The components of lease expense for the periods reported were as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 15%; margin-left: 27pt; width: 85%; 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;"&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="6" 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;Twelve Months Ended December 31,&lt;/b&gt;&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;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 64%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;2019&lt;/b&gt;&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;"&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: &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;Operating lease cost&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,191&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,960&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);"&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;Finance lease cost:&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="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="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="vertical-align: bottom; background-color: rgb(204, 238, 255);"&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: 18pt;"&gt;Amortization of right-of-use 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;"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;143&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: 15%; 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="vertical-align: bottom; background-color: rgb(255, 255, 255);"&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: 18pt;"&gt;Interest on lease obligations&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: 15%; 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;&#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: 15%; 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="vertical-align: bottom; background-color: rgb(204, 238, 255);"&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;Variable lease cost&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;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;989&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; 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; 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;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;1,039&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; padding-bottom: 1px;"&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: &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: 9pt;"&gt;Total lease cost&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: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;5,325&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; 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; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;4,999&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Maturities of operating and finance lease liabilities as of &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt; were as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 62%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Operating Leases&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Finance Leases&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; 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;, 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;&lt;span style="text-decoration: underline; "&gt;Year Ending December 31,&lt;/span&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 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(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;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;"&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,915&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;561&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;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;"&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,246&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;561&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;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;"&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,460&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,371&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;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;"&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;540&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: 16%; 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="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;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;"&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;494&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: 16%; 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="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;After 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;"&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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,751&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; 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; border-bottom: 1px solid rgb(0, 0, 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;Total future minimum lease payments&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,406&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; 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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,493&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; 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;Less interest&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: 1px solid rgb(0, 0, 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(548&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(22&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; padding-bottom: 1px;"&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;"&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;Present value of lease liabilities&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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,858&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; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,471&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;As of &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;, we have &lt;em style="font: inherit;"&gt;no&lt;/em&gt; operating or finance leases that have &lt;em style="font: inherit;"&gt;not&lt;/em&gt; yet commenced.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Weighted average remaining lease term and&#160;discount rate&#160;was as follows:&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; 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;"&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="6" 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;December 31,&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;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;2019&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;"&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: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 62%;"&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;Weighted Average Remaining Lease Term - operating leases (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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4.4&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4.8&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);"&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;Weighted Average Remaining Lease Term - finance leases (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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&lt;span style="-sec-ix-hidden:c68815085"&gt;2.5&lt;/span&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&lt;em style="font: inherit;"&gt;-&lt;/em&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="vertical-align: bottom; background-color: rgb(204, 238, 255);"&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;Weighted Average Discount Rate - operating leases&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.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;%&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.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;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&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;Weighted Average Discount Rate - finance leases&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&lt;span style="-sec-ix-hidden:c68815089"&gt;0.5&lt;/span&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;%&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&lt;span style="-sec-ix-hidden:c68815090"&gt;-&lt;/span&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;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Supplemental cash flow information related to leases was as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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="6" 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Twelve Months Ended December 31,&lt;/em&gt;&lt;/em&gt;&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;"&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: 62%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&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;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt;&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;"&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;Cash paid for amounts included in the measurement of lease liabilities:&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;/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; margin-left: 9pt;"&gt;Operating cash flows from operating leases&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,426&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,020&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; margin-left: 9pt;"&gt;Operating cash flows from finance leases&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: 16%; 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;&#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: 16%; 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="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: 9pt;"&gt;Financing cash flows from finance leases&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;154&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: 16%; 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&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(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;Lease assets obtained in exchange for new operating lease liabilities&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,506&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,921&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;Lease assets obtained in exchange for new financing lease liabilities&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,523&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 class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="width: 16%; 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;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:28.8pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"&gt;&#160;&lt;/p&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/&gt;
  </prlb:LesseeOperatingLeasesAndFinancingLeasesTextBlock>
    <prlb:AssetsAndLiabilitiesLesseeTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741330">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 20%; margin-left: 27pt; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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="6" 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&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;"&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: 62%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; 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;, 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;Operating lease 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;"&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;"&gt;9,855&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,425&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&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;, 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;Current operating lease liabilities&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,272&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,340&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;Long-term operating lease liabilities&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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,586&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,565&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; 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;, 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: 18pt;"&gt;Total operating lease liabilities&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: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,858&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; 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; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;11,905&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; 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;/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;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: &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;Finance lease 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;"&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;"&gt;2,396&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: 16%; 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&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(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;Current finance lease liabilities&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;552&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: 16%; 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="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;Long-term finance lease liabilities&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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,919&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; 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; 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;&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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: 18pt;"&gt;Total finance lease liabilities&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: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,471&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; 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; border-bottom: 3px double rgb(0, 0, 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </prlb:AssetsAndLiabilitiesLesseeTableTextBlock>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815035"
      unitRef="USD">9855000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815036"
      unitRef="USD">11425000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815037"
      unitRef="USD">3272000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c68815038"
      unitRef="USD">3340000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815039"
      unitRef="USD">7586000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815040"
      unitRef="USD">8565000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815041"
      unitRef="USD">10858000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815042"
      unitRef="USD">11905000</us-gaap:OperatingLeaseLiability>
    <us-gaap:FinanceLeaseRightOfUseAsset
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815043"
      unitRef="USD">2396000</us-gaap:FinanceLeaseRightOfUseAsset>
    <us-gaap:FinanceLeaseRightOfUseAsset
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815044"
      unitRef="USD">0</us-gaap:FinanceLeaseRightOfUseAsset>
    <us-gaap:FinanceLeaseLiabilityCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815045"
      unitRef="USD">552000</us-gaap:FinanceLeaseLiabilityCurrent>
    <us-gaap:FinanceLeaseLiabilityCurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815046"
      unitRef="USD">0</us-gaap:FinanceLeaseLiabilityCurrent>
    <us-gaap:FinanceLeaseLiabilityNoncurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815047"
      unitRef="USD">1919000</us-gaap:FinanceLeaseLiabilityNoncurrent>
    <us-gaap:FinanceLeaseLiabilityNoncurrent
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815048"
      unitRef="USD">0</us-gaap:FinanceLeaseLiabilityNoncurrent>
    <us-gaap:FinanceLeaseLiability
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815049"
      unitRef="USD">2471000</us-gaap:FinanceLeaseLiability>
    <us-gaap:FinanceLeaseLiability
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815050"
      unitRef="USD">0</us-gaap:FinanceLeaseLiability>
    <prlb:ScheduleOfLeaseExpenseTableTextBlock
      contextRef="d_2020-01-01_2020-12-31"
      id="c1CF404A3-F54C-459F-AC69-1230B86713F9">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 15%; margin-left: 27pt; width: 85%; 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;"&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="6" 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;Twelve Months Ended December 31,&lt;/b&gt;&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;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 64%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;2019&lt;/b&gt;&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;"&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: &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;Operating lease cost&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,191&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: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,960&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);"&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;Finance lease cost:&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="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="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="vertical-align: bottom; background-color: rgb(204, 238, 255);"&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: 18pt;"&gt;Amortization of right-of-use 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;"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;143&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: 15%; 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="vertical-align: bottom; background-color: rgb(255, 255, 255);"&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: 18pt;"&gt;Interest on lease obligations&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: 15%; 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;&#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: 15%; 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="vertical-align: bottom; background-color: rgb(204, 238, 255);"&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;Variable lease cost&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;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;989&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; 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; 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;&#160;&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;1,039&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; padding-bottom: 1px;"&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: &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: 9pt;"&gt;Total lease cost&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: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;5,325&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; 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; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 15%; text-align: right; 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;4,999&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; margin-left: 0pt;"&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="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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="6" 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Twelve Months Ended December 31,&lt;/em&gt;&lt;/em&gt;&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;"&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: 62%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&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;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt;&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;"&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;Cash paid for amounts included in the measurement of lease liabilities:&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;/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; margin-left: 9pt;"&gt;Operating cash flows from operating leases&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,426&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,020&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; margin-left: 9pt;"&gt;Operating cash flows from finance leases&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: 16%; 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;&#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: 16%; 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="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: 9pt;"&gt;Financing cash flows from finance leases&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;154&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: 16%; 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&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(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;Lease assets obtained in exchange for new operating lease liabilities&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,506&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,921&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;Lease assets obtained in exchange for new financing lease liabilities&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,523&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 class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="width: 16%; 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;/tbody&gt;&lt;/table&gt;
   </prlb:ScheduleOfLeaseExpenseTableTextBlock>
    <us-gaap:OperatingLeaseCost
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815051"
      unitRef="USD">4191000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c68815052"
      unitRef="USD">3960000</us-gaap:OperatingLeaseCost>
    <us-gaap:FinanceLeaseRightOfUseAssetAmortization
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815053"
      unitRef="USD">143000</us-gaap:FinanceLeaseRightOfUseAssetAmortization>
    <us-gaap:FinanceLeaseRightOfUseAssetAmortization
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815054"
      unitRef="USD">0</us-gaap:FinanceLeaseRightOfUseAssetAmortization>
    <us-gaap:FinanceLeaseInterestExpense
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815055"
      unitRef="USD">2000</us-gaap:FinanceLeaseInterestExpense>
    <us-gaap:FinanceLeaseInterestExpense
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815056"
      unitRef="USD">0</us-gaap:FinanceLeaseInterestExpense>
    <us-gaap:VariableLeaseCost
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815057"
      unitRef="USD">989000</us-gaap:VariableLeaseCost>
    <us-gaap:VariableLeaseCost
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815058"
      unitRef="USD">1039000</us-gaap:VariableLeaseCost>
    <us-gaap:LeaseCost
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815059"
      unitRef="USD">5325000</us-gaap:LeaseCost>
    <us-gaap:LeaseCost
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815060"
      unitRef="USD">4999000</us-gaap:LeaseCost>
    <prlb:LesseeLeaseLiabilityMaturityTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741332">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 62%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Operating Leases&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Finance Leases&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; 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;, 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;&lt;span style="text-decoration: underline; "&gt;Year Ending December 31,&lt;/span&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 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(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;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;"&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,915&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;561&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;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;"&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,246&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;561&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;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;"&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,460&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,371&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;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;"&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;540&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: 16%; 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="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;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;"&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;494&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: 16%; 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="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;After 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;"&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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,751&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; 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; border-bottom: 1px solid rgb(0, 0, 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;Total future minimum lease payments&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,406&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; 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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,493&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; 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;Less interest&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: 1px solid rgb(0, 0, 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(548&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(22&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; padding-bottom: 1px;"&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;"&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;Present value of lease liabilities&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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,858&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; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,471&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </prlb:LesseeLeaseLiabilityMaturityTableTextBlock>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815064"
      unitRef="USD">3915000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815065"
      unitRef="USD">561000</us-gaap:FinanceLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815066"
      unitRef="USD">3246000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearTwo
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815067"
      unitRef="USD">561000</us-gaap:FinanceLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c68815068"
      unitRef="USD">1460000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearThree
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815069"
      unitRef="USD">1371000</us-gaap:FinanceLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c68815070"
      unitRef="USD">540000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearFour
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815071"
      unitRef="USD">0</us-gaap:FinanceLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815072"
      unitRef="USD">494000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearFive
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815073"
      unitRef="USD">0</us-gaap:FinanceLeaseLiabilityPaymentsDueYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815074"
      unitRef="USD">1751000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815075"
      unitRef="USD">0</us-gaap:FinanceLeaseLiabilityPaymentsDueAfterYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815076"
      unitRef="USD">11406000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:FinanceLeaseLiabilityPaymentsDue
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815077"
      unitRef="USD">2493000</us-gaap:FinanceLeaseLiabilityPaymentsDue>
    <us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815078"
      unitRef="USD">548000</us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:FinanceLeaseLiabilityUndiscountedExcessAmount
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815079"
      unitRef="USD">22000</us-gaap:FinanceLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815080"
      unitRef="USD">10858000</us-gaap:OperatingLeaseLiability>
    <us-gaap:FinanceLeaseLiability
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815081"
      unitRef="USD">2471000</us-gaap:FinanceLeaseLiability>
    <prlb:ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741333">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; 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;"&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="6" 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;December 31,&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;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;b&gt;2019&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;"&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: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 62%;"&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;Weighted Average Remaining Lease Term - operating leases (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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4.4&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4.8&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);"&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;Weighted Average Remaining Lease Term - finance leases (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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&lt;span style="-sec-ix-hidden:c68815085"&gt;2.5&lt;/span&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&lt;em style="font: inherit;"&gt;-&lt;/em&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="vertical-align: bottom; background-color: rgb(204, 238, 255);"&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;Weighted Average Discount Rate - operating leases&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.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;%&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.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;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&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;Weighted Average Discount Rate - finance leases&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&lt;span style="-sec-ix-hidden:c68815089"&gt;0.5&lt;/span&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;%&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: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&lt;span style="-sec-ix-hidden:c68815090"&gt;-&lt;/span&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;/tbody&gt;&lt;/table&gt;
   </prlb:ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1 contextRef="i_2020-12-31" id="c68815083">P4Y4M24D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1 contextRef="i_2019-12-31" id="c68815084">P4Y9M18D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i_2020-12-31"
      decimals="3"
      id="c68815087"
      unitRef="Pure">0.026</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i_2019-12-31"
      decimals="3"
      id="c68815088"
      unitRef="Pure">0.026</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeasePayments
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815095"
      unitRef="USD">4426000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c68815096"
      unitRef="USD">5020000</us-gaap:OperatingLeasePayments>
    <us-gaap:FinanceLeaseInterestPaymentOnLiability
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815097"
      unitRef="USD">2000</us-gaap:FinanceLeaseInterestPaymentOnLiability>
    <us-gaap:FinanceLeaseInterestPaymentOnLiability
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815098"
      unitRef="USD">0</us-gaap:FinanceLeaseInterestPaymentOnLiability>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815099"
      unitRef="USD">154000</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815100"
      unitRef="USD">0</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815101"
      unitRef="USD">1506000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815102"
      unitRef="USD">1921000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815103"
      unitRef="USD">2523000</us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815104"
      unitRef="USD">0</us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability>
    <us-gaap:DisclosureOfReclassificationAmountTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741335">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;14&lt;/em&gt; &#x2013; Accumulated Other Comprehensive Loss&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Other comprehensive loss is comprised entirely of foreign currency translation adjustments. The following table presents the changes in accumulated other comprehensive loss balances for the years ending &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;, respectively:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&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 7.2pt;text-align:left;text-indent:27pt;"&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;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 55%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&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;, 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;Foreign currency translation adjustments&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;/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; margin-left: 27pt; text-indent: -9pt;"&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;, 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;(7,018&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(8,492&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(5,234&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;/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: 36pt; text-indent: -9pt;"&gt;Other comprehensive (loss) income before reclassifications&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,598&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,474&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(3,258&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;/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; margin-left: 36pt; text-indent: -9pt;"&gt;Amounts reclassified from accumulated other comprehensive income (loss)&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: 1px 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 27pt; text-indent: -9pt;"&gt;Net current-period other comprehensive (loss) income&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,598&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; 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;"&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;&#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: 1px solid rgb(0, 0, 0);"&gt;1,474&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; 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;"&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;&#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: 1px solid rgb(0, 0, 0);"&gt;(3,258&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; 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;, 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; text-indent: -9pt;"&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;, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(3,420&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; padding-bottom: 3px;"&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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(7,018&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; padding-bottom: 3px;"&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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,492&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; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&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 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&#160;&lt;/p&gt;
  </us-gaap:DisclosureOfReclassificationAmountTextBlock>
    <us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741336">
    &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;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 55%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&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;, 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;Foreign currency translation adjustments&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;/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; margin-left: 27pt; text-indent: -9pt;"&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;, 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;(7,018&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(8,492&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(5,234&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;/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: 36pt; text-indent: -9pt;"&gt;Other comprehensive (loss) income before reclassifications&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,598&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,474&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(3,258&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;/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; margin-left: 36pt; text-indent: -9pt;"&gt;Amounts reclassified from accumulated other comprehensive income (loss)&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: 1px 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; 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;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 27pt; text-indent: -9pt;"&gt;Net current-period other comprehensive (loss) income&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;3,598&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; 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;"&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;&#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: 1px solid rgb(0, 0, 0);"&gt;1,474&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; 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;"&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;&#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: 1px solid rgb(0, 0, 0);"&gt;(3,258&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; 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;, 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; text-indent: -9pt;"&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;, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(3,420&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; padding-bottom: 3px;"&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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(7,018&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; padding-bottom: 3px;"&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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,492&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; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815112"
      unitRef="USD">-7018000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815113"
      unitRef="USD">-8492000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815114"
      unitRef="USD">-5234000</us-gaap:StockholdersEquity>
    <us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815115"
      unitRef="USD">3598000</us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815116"
      unitRef="USD">1474000</us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815117"
      unitRef="USD">-3258000</us-gaap:OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax>
    <us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815118"
      unitRef="USD">0</us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax>
    <us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815119"
      unitRef="USD">0</us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax>
    <us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815120"
      unitRef="USD">0</us-gaap:ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTax
      contextRef="d_2020-01-01_2020-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815121"
      unitRef="USD">3598000</us-gaap:OtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTax
      contextRef="d_2019-01-01_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815122"
      unitRef="USD">1474000</us-gaap:OtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTax
      contextRef="d_2018-01-01_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815123"
      unitRef="USD">-3258000</us-gaap:OtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-4"
      id="c68815124"
      unitRef="USD">-3420000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815125"
      unitRef="USD">-7018000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2018-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c68815126"
      unitRef="USD">-8492000</us-gaap:StockholdersEquity>
    <us-gaap:IncomeTaxDisclosureTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741337">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;15&lt;/em&gt; &#x2013; Income Taxes&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&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 years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;, the Company recorded an income tax provision of $12.1 million, $17.5 million and $15.1 million, respectively. The effective income tax rate for the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt; was 19.2 percent, 21.6 percent and 16.4 percent, respectively.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"/&gt;
   &lt;p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;The effective tax rate decreased by 2.4% for the year ended &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;&#160;when compared&#160;to &lt;em style="font: inherit;"&gt;2019&lt;/em&gt; primarily due to an increase in tax benefits from the vesting of restricted stock and exercise of stock options and an increase in the research and development tax credit.&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &amp;quot;Times New Roman&amp;quot;,Times,serif; font-size: 10pt;"&gt;The Tax Cuts and Jobs Act (the &#x201c;Act&#x201d;)&#160;was enacted on &lt;em style="font: inherit;"&gt; December 22, 2017. &lt;/em&gt;The Act reduced the&#160;U.S. federal corporate tax rate from 35% to 21%, required companies to pay a transition tax on earnings of certain foreign subsidiaries that were previously tax deferred and creates new taxes on certain foreign sourced earnings. &lt;em style="font: inherit;"&gt;No&lt;/em&gt; additional income taxes have been provided for any remaining undistributed foreign earnings &lt;em style="font: inherit;"&gt;not&lt;/em&gt; subject to the transition tax, or any additional outside basis difference inherent in these entities, as these amounts continue to be indefinitely reinvested in foreign operations.&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; 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; text-align: left; text-indent: 27pt;"&gt;The Coronavirus Aid, Relief, and Economic Security (CARES) Act was signed into law on &lt;em style="font: inherit;"&gt; March 27, 2020. &lt;/em&gt;The CARES Act was meant to infuse companies with various income and payroll tax cash benefits to ease the impact of the pandemic. A technical correction to the Tax Cuts and Jobs Act of &lt;em style="font: inherit;"&gt;2017&lt;/em&gt; was included in the CARES Act allowing qualified improvement property to claim bonus depreciation for respective assets placed in service in &lt;em style="font: inherit;"&gt;2018&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2019.&lt;/em&gt; The impact of the CARES Act to the Company was a $2.9 million reduction to income taxes payable and a corresponding increase to deferred tax liability. In addition, the Company has elected to defer deposits of the employer portion of the Social Security tax for the quarter ended &lt;em style="font: inherit;"&gt; March 31, 2020 &lt;/em&gt;through the quarter ended &lt;em style="font: inherit;"&gt; December 31, 2020. &lt;/em&gt;The Social Security taxes are being accrued for and will be paid in &lt;em style="font: inherit;"&gt;2021.&lt;/em&gt;&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The provision for income taxes is based on income before income taxes reported for financial statement purposes. The components of income before income taxes are as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&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: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&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;, Times, serif; 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;, 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: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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;"&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: 55%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td style="width: 17px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 209px;"&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;, 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;Domestic&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: 17px; 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: 209px; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58,551&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;74,841&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;81,893&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;Foreign&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: 17px; 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: 209px; text-align: right; 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;4,394&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,352&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;9,762&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; 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;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: 17px; 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: 209px; text-align: right; 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;62,945&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; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;81,193&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; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;91,655&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&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 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Significant components of the provision for income taxes for the following periods are as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&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 7.2pt;text-align:left;text-indent:27pt;"&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;, Times, serif; 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;, 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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 55%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&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;, 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;Current:&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;/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; margin-left: 18pt;"&gt;Federal&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;2,128&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,991&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(782&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;/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: 18pt;"&gt;State&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,136&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,882&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,078&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; margin-left: 18pt;"&gt;Foreign&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,241&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,544&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,810&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;Deferred&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;/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; margin-left: 18pt;"&gt;Federal&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,904&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,121&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,325&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; margin-left: 18pt;"&gt;State&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(431&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;269&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;538&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; margin-left: 18pt;"&gt;Foreign&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;210&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(809&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(430&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;/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;Valuation Allowance&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;890&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,540&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;528&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; 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;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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;12,078&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; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,538&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; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;15,067&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&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;


   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;A reconciliation of the federal statutory income tax rate to the effective tax rate is as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&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;, Times, serif; 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;, 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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&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;, Times, serif; font-size: 10pt; width: 49%;"&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;Federal tax statutory 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21.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;%&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21.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;%&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21.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;%&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;State tax (net of federal benefit)&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.1&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.1&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.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;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;Share based compensation&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(1.3&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.5&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.8&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;/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;Valuation allowance against deferred tax 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;"&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; margin-left: 0pt;"&gt;2.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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1.4&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0.7&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;Research and development credit&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(3.7&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.8&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.5&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;/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;Foreign rate differential&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.8&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.3&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.1&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;/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;Tax reserves&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1.4&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1.1&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.1&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;/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;Provision to return difference&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;(1.4&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&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: 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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&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;/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;Miscellaneous&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.1&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.4&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.5&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;/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;Transition tax&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: 14%; 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: 14%; 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.8&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;/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;Revaluation of deferred tax liability&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: 1px 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;"&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;&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;"&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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(0.5&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; padding-bottom: 1px;"&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;"&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; 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;&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;19.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; padding-bottom: 3px;"&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;&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;21.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; padding-bottom: 3px;"&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;&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;16.4&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; padding-bottom: 3px;"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Significant components of deferred tax assets and liabilities are as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&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;, Times, serif; 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;, 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="6" style="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&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;"&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: 66%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; 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&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;, 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;Deferred tax assets:&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;/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; margin-left: 18pt;"&gt;Accrued expenses&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,155&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,362&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: 0px; margin: 0px; text-indent: 18pt;"&gt;Leases&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;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,598&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,337&lt;/td&gt;&lt;td style="width: 1%; 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;"&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: 18pt;"&gt;Stock-based compensation&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,356&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,325&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; margin-left: 18pt;"&gt;Intangible 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;"&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; margin-left: 0pt;"&gt;1,693&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,171&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; margin-left: 18pt;"&gt;Inventories&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;172&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;169&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; margin-left: 18pt;"&gt;Other 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;"&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; margin-left: 0pt;"&gt;1,790&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,765&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; margin-left: 18pt;"&gt;Net operating loss&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,647&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,513&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; margin-left: 36pt;"&gt;Less valuation allowance&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: 1px 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(8,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; padding-bottom: 1px;"&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;"&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 deferred tax 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;"&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; margin-left: 0pt;"&gt;10,273&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9,394&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;Deferred tax liabilities:&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;/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; margin-left: 18pt;"&gt;Depreciation&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(32,671&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(26,750&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;/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: 18pt;"&gt;Goodwill&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(7,858&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; padding-bottom: 1px;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(5,590&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; padding-bottom: 1px;"&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: 0px; margin: 0px; text-indent: 18pt;"&gt;Leases&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;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;(3,598&lt;/td&gt;&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: 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;(3,337&lt;/td&gt;&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;/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 deferred tax liabilities&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(44,127&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; padding-bottom: 1px;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(35,677&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; padding-bottom: 1px;"&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;"&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;Net deferred tax liability&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(33,854&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; padding-bottom: 3px;"&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(26,283&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; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company has recorded no U.S. deferred taxes related to the undistributed earnings of its non-U.S. subsidiaries as of &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;. Such amounts are intended to be reinvested outside of the United States indefinitely. It is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; practicable to estimate the amount of additional tax that might be payable on the foreign earnings. As of &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;, the Company had accumulated undistributed earnings in non-U.S. subsidiaries of $15.8 million.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;As of &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;, the Company had estimated net operating loss carry forwards of $6.6 million for tax purposes. The net operating losses relate to operations in Japan and Germany. Japan losses can be carried forward for up to &lt;span style="-sec-ix-hidden:c68815665"&gt;ten&lt;/span&gt; years. The remaining Japan net operating losses begin to expire at various dates between &lt;em style="font: inherit;"&gt;2021&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2026.&lt;/em&gt; The Company&#x2019;s Japan operations are taxed both by local authorities and in the U.S. Germany net operating losses &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be carried forward without any time limitations but are limited to &lt;em style="font: inherit;"&gt;&#x20ac;1&lt;/em&gt; million, plus 60 percent&#160;of taxable income exceeding &lt;em style="font: inherit;"&gt;&#x20ac;1&lt;/em&gt; million.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company establishes valuation allowances for deferred tax assets when, after consideration of all positive and negative evidence, it is considered more-likely-than-&lt;em style="font: inherit;"&gt;not&lt;/em&gt; that a portion of the deferred tax assets will &lt;em style="font: inherit;"&gt;not&lt;/em&gt; be realized. The Company's valuation allowances of $9.1 million and $8.2 million at &lt;em style="font: inherit;"&gt; December 31, 2020 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2019&lt;/em&gt;, respectively, reduce the carrying value of deferred tax assets associated with certain net operating loss carry forwards and other assets with insufficient positive evidence for recognition. The increase in the valuation allowance is primarily attributable to fluctuations in foreign currency and the net operating losses incurred in Germany in &lt;em style="font: inherit;"&gt;2020.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company files a U.S. federal income tax return and income tax returns in various states and foreign jurisdictions. With a few exceptions, the Company is &lt;em style="font: inherit;"&gt;no&lt;/em&gt; longer subject to U.S. federal, state, or foreign income tax examinations by tax authorities for years before &lt;em style="font: inherit;"&gt;2017.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company has liabilities related to unrecognized tax benefits totaling $4.8 million and $4.6 million at &lt;em style="font: inherit;"&gt; December 31, 2020 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2019&lt;/em&gt;, respectively, that if recognized would result in a reduction of the Company&#x2019;s effective tax rate. The liabilities are classified as other long-term liabilities in the accompanying consolidated balance sheets. 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. Interest and penalties were immaterial for each of the years ended &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;&lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2018&lt;/em&gt;.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;A reconciliation of the beginning and ending amount of unrecognized tax benefits is as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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; padding-bottom: 1px;"&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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&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; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; 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;, 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="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="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; width: 66%;"&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;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;, 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,598&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,096&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;Additions for tax positions of current year&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;324&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;592&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;Additions for tax positions of prior 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;475&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: 14%; 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="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;Decrease related to expiration of statutes of limitations&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(567&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; padding-bottom: 1px;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(90&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; padding-bottom: 1px;"&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;"&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;Balance at period end&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,830&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,598&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-5"
      id="c68815640"
      unitRef="USD">12100000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-5"
      id="c68815641"
      unitRef="USD">17500000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-5"
      id="c68815642"
      unitRef="USD">15100000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2020-01-01_2020-12-31"
      decimals="3"
      id="c68815645"
      unitRef="Pure">0.192</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c68815646"
      unitRef="Pure">0.216</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c68815647"
      unitRef="Pure">0.164</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod
      contextRef="d_2020-01-01_2020-12-31"
      decimals="3"
      id="c68815649"
      unitRef="Pure">0.024</prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="d_2017-12-22_2017-12-22"
      decimals="2"
      id="c68815651"
      unitRef="Pure">0.35</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="d_2020-01-01_2020-12-31"
      decimals="2"
      id="c68815652"
      unitRef="Pure">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <prlb:IncreaseDecreaseInIncomeTaxesPayableCaresAct
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-5"
      id="c68815658"
      unitRef="USD">-2900000</prlb:IncreaseDecreaseInIncomeTaxesPayableCaresAct>
    <us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741338">
    &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;, Times, serif; 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;, 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: thin solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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;"&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: 55%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td style="width: 17px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 209px;"&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;, 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;Domestic&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: 17px; 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: 209px; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;58,551&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;74,841&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;81,893&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;Foreign&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: 17px; 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: 209px; text-align: right; 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;4,394&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,352&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;9,762&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; 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;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: 17px; 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: 209px; text-align: right; 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;62,945&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; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;81,193&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; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;91,655&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815134"
      unitRef="USD">58551000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815135"
      unitRef="USD">74841000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68815136"
      unitRef="USD">81893000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815137"
      unitRef="USD">4394000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815138"
      unitRef="USD">6352000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68815139"
      unitRef="USD">9762000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815140"
      unitRef="USD">62945000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815141"
      unitRef="USD">81193000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68815142"
      unitRef="USD">91655000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741339">
    &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;, Times, serif; 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;, 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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 55%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&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;, 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;Current:&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;/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; margin-left: 18pt;"&gt;Federal&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;2,128&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,991&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(782&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;/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: 18pt;"&gt;State&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,136&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,882&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,078&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; margin-left: 18pt;"&gt;Foreign&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,241&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,544&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,810&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;Deferred&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;/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; margin-left: 18pt;"&gt;Federal&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,904&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,121&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,325&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; margin-left: 18pt;"&gt;State&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(431&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;269&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;538&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; margin-left: 18pt;"&gt;Foreign&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;210&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(809&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: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(430&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;/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;Valuation Allowance&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;890&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,540&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; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;528&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; 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;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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;12,078&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; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;17,538&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; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;15,067&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815149"
      unitRef="USD">2128000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815150"
      unitRef="USD">6991000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68815151"
      unitRef="USD">-782000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815152"
      unitRef="USD">1136000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815153"
      unitRef="USD">2882000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68815154"
      unitRef="USD">2078000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815155"
      unitRef="USD">1241000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815156"
      unitRef="USD">1544000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-4"
      id="c68815157"
      unitRef="USD">1810000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815158"
      unitRef="USD">6904000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815159"
      unitRef="USD">5121000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68815160"
      unitRef="USD">11325000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815161"
      unitRef="USD">-431000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815162"
      unitRef="USD">269000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68815163"
      unitRef="USD">538000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-4"
      id="c68815164"
      unitRef="USD">210000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815165"
      unitRef="USD">-809000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-4"
      id="c68815166"
      unitRef="USD">-430000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-4"
      id="c68815167"
      unitRef="USD">890000</us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c68815168"
      unitRef="USD">1540000</us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68815169"
      unitRef="USD">528000</us-gaap:IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815170"
      unitRef="USD">12078000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815171"
      unitRef="USD">17538000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68815172"
      unitRef="USD">15067000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741340">
    &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;, Times, serif; 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;, 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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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&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;, Times, serif; font-size: 10pt; width: 49%;"&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;Federal tax statutory 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21.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;%&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21.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;%&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21.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;%&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;State tax (net of federal benefit)&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.1&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.1&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2.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;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;Share based compensation&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(1.3&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.5&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.8&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;/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;Valuation allowance against deferred tax 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;"&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; margin-left: 0pt;"&gt;2.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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1.4&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0.7&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;Research and development credit&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(3.7&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.8&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2.5&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;/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;Foreign rate differential&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.8&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.3&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.1&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;/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;Tax reserves&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1.4&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1.1&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.1&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;/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;Provision to return difference&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;(1.4&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&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: 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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&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;/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;Miscellaneous&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.1&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.4&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.5&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;/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;Transition tax&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: 14%; 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: 14%; 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(0.8&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;/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;Revaluation of deferred tax liability&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: 1px 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;"&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;&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;"&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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(0.5&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; padding-bottom: 1px;"&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;"&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; 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;&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;19.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; padding-bottom: 3px;"&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;&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;21.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; padding-bottom: 3px;"&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;&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;16.4&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; padding-bottom: 3px;"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="d_2020-01-01_2020-12-31"
      decimals="2"
      id="c68815181"
      unitRef="Pure">0.210</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="d_2019-01-01_2019-12-31"
      decimals="2"
      id="c68815182"
      unitRef="Pure">0.210</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="d_2018-01-01_2018-12-31"
      decimals="2"
      id="c68815183"
      unitRef="Pure">0.210</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="d_2020-01-01_2020-12-31"
      decimals="3"
      id="c68815184"
      unitRef="Pure">0.021</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c68815185"
      unitRef="Pure">0.021</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="d_2018-01-01_2018-12-31"
      decimals="2"
      id="c68815186"
      unitRef="Pure">0.020</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection
      contextRef="d_2020-01-01_2020-12-31"
      decimals="3"
      id="c68815187"
      unitRef="Pure">-0.013</prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection>
    <prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c68815188"
      unitRef="Pure">-0.005</prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection>
    <prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c68815189"
      unitRef="Pure">-0.028</prlb:EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2020-01-01_2020-12-31"
      decimals="2"
      id="c68815190"
      unitRef="Pure">0.020</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c68815191"
      unitRef="Pure">0.014</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c68815192"
      unitRef="Pure">0.007</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="d_2020-01-01_2020-12-31"
      decimals="3"
      id="c68815193"
      unitRef="Pure">0.037</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c68815194"
      unitRef="Pure">0.028</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c68815195"
      unitRef="Pure">0.025</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCreditsResearch>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="d_2020-01-01_2020-12-31"
      decimals="3"
      id="c68815196"
      unitRef="Pure">-0.008</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c68815197"
      unitRef="Pure">-0.003</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c68815198"
      unitRef="Pure">-0.001</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies
      contextRef="d_2020-01-01_2020-12-31"
      decimals="3"
      id="c68815199"
      unitRef="Pure">0.014</us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c68815200"
      unitRef="Pure">0.011</us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c68815201"
      unitRef="Pure">-0.001</us-gaap:EffectiveIncomeTaxRateReconciliationTaxContingencies>
    <prlb:EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent
      contextRef="d_2020-01-01_2020-12-31"
      decimals="3"
      id="c68815202"
      unitRef="Pure">-0.014</prlb:EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent>
    <prlb:EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent
      contextRef="d_2019-01-01_2019-12-31"
      decimals="0"
      id="c68815203"
      unitRef="Pure">0</prlb:EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent>
    <prlb:EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent
      contextRef="d_2018-01-01_2018-12-31"
      decimals="0"
      id="c68815204"
      unitRef="Pure">0</prlb:EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="d_2020-01-01_2020-12-31"
      decimals="3"
      id="c68815205"
      unitRef="Pure">-0.001</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c68815206"
      unitRef="Pure">-0.004</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c68815207"
      unitRef="Pure">-0.005</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent
      contextRef="d_2020-01-01_2020-12-31"
      decimals="0"
      id="c68815208"
      unitRef="Pure">0</prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent>
    <prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent
      contextRef="d_2019-01-01_2019-12-31"
      decimals="0"
      id="c68815209"
      unitRef="Pure">0</prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent>
    <prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c68815210"
      unitRef="Pure">-0.008</prlb:EffectiveIncomeTaxRateReconciliationTransitionTaxPercent>
    <prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability
      contextRef="d_2020-01-01_2020-12-31"
      decimals="0"
      id="c68815211"
      unitRef="Pure">0</prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability>
    <prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability
      contextRef="d_2019-01-01_2019-12-31"
      decimals="0"
      id="c68815212"
      unitRef="Pure">0</prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability>
    <prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c68815213"
      unitRef="Pure">-0.005</prlb:EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2020-01-01_2020-12-31"
      decimals="3"
      id="c68815214"
      unitRef="Pure">0.192</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2019-01-01_2019-12-31"
      decimals="3"
      id="c68815215"
      unitRef="Pure">0.216</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2018-01-01_2018-12-31"
      decimals="3"
      id="c68815216"
      unitRef="Pure">0.164</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741341">
    &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;, Times, serif; 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;, 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="6" style="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&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;"&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: 66%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; 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&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;, 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;Deferred tax assets:&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;/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; margin-left: 18pt;"&gt;Accrued expenses&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2,155&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,362&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: 0px; margin: 0px; text-indent: 18pt;"&gt;Leases&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;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,598&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,337&lt;/td&gt;&lt;td style="width: 1%; 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;"&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: 18pt;"&gt;Stock-based compensation&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,356&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3,325&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; margin-left: 18pt;"&gt;Intangible 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;"&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; margin-left: 0pt;"&gt;1,693&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,171&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; margin-left: 18pt;"&gt;Inventories&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;172&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;169&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; margin-left: 18pt;"&gt;Other 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;"&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; margin-left: 0pt;"&gt;1,790&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;1,765&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; margin-left: 18pt;"&gt;Net operating loss&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,647&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6,513&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; margin-left: 36pt;"&gt;Less valuation allowance&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: 1px 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(8,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; padding-bottom: 1px;"&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;"&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 deferred tax 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;"&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; margin-left: 0pt;"&gt;10,273&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;9,394&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;Deferred tax liabilities:&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;/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; margin-left: 18pt;"&gt;Depreciation&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(32,671&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(26,750&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;/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: 18pt;"&gt;Goodwill&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(7,858&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; padding-bottom: 1px;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(5,590&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; padding-bottom: 1px;"&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: 0px; margin: 0px; text-indent: 18pt;"&gt;Leases&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;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;(3,598&lt;/td&gt;&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: 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;(3,337&lt;/td&gt;&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;/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 deferred tax liabilities&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(44,127&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; padding-bottom: 1px;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(35,677&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; padding-bottom: 1px;"&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;"&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;Net deferred tax liability&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(33,854&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; padding-bottom: 3px;"&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(26,283&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; padding-bottom: 3px;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815221"
      unitRef="USD">2155000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815222"
      unitRef="USD">1362000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities>
    <prlb:DeferredTaxAssetsRightOfUseLeases
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815223"
      unitRef="USD">3598000</prlb:DeferredTaxAssetsRightOfUseLeases>
    <prlb:DeferredTaxAssetsRightOfUseLeases
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815224"
      unitRef="USD">3337000</prlb:DeferredTaxAssetsRightOfUseLeases>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815225"
      unitRef="USD">3356000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815226"
      unitRef="USD">3325000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815227"
      unitRef="USD">1693000</us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets>
    <us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815228"
      unitRef="USD">1171000</us-gaap:DeferredTaxAssetsGoodwillAndIntangibleAssets>
    <us-gaap:DeferredTaxAssetsInventory
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815229"
      unitRef="USD">172000</us-gaap:DeferredTaxAssetsInventory>
    <us-gaap:DeferredTaxAssetsInventory
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815230"
      unitRef="USD">169000</us-gaap:DeferredTaxAssetsInventory>
    <us-gaap:DeferredTaxAssetsOther
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c68815231"
      unitRef="USD">1790000</us-gaap:DeferredTaxAssetsOther>
    <us-gaap:DeferredTaxAssetsOther
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815232"
      unitRef="USD">1765000</us-gaap:DeferredTaxAssetsOther>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815233"
      unitRef="USD">6647000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwards
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815234"
      unitRef="USD">6513000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwards>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815235"
      unitRef="USD">9138000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815236"
      unitRef="USD">8248000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsNet
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815237"
      unitRef="USD">10273000</us-gaap:DeferredTaxAssetsNet>
    <us-gaap:DeferredTaxAssetsNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815238"
      unitRef="USD">9394000</us-gaap:DeferredTaxAssetsNet>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815239"
      unitRef="USD">32671000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c68815240"
      unitRef="USD">26750000</us-gaap:DeferredTaxLiabilitiesPropertyPlantAndEquipment>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815241"
      unitRef="USD">7858000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill>
    <us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c68815242"
      unitRef="USD">5590000</us-gaap:DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill>
    <us-gaap:DeferredTaxLiabilitiesLeasingArrangements
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815243"
      unitRef="USD">3598000</us-gaap:DeferredTaxLiabilitiesLeasingArrangements>
    <us-gaap:DeferredTaxLiabilitiesLeasingArrangements
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815244"
      unitRef="USD">3337000</us-gaap:DeferredTaxLiabilitiesLeasingArrangements>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815245"
      unitRef="USD">44127000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815246"
      unitRef="USD">35677000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredTaxLiabilities
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815247"
      unitRef="USD">33854000</us-gaap:DeferredTaxLiabilities>
    <us-gaap:DeferredTaxLiabilities
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815248"
      unitRef="USD">26283000</us-gaap:DeferredTaxLiabilities>
    <us-gaap:DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815661"
      unitRef="USD">0</us-gaap:DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries>
    <us-gaap:UndistributedEarningsOfForeignSubsidiaries
      contextRef="i_2020-12-31"
      decimals="-5"
      id="c68815663"
      unitRef="USD">15800000</us-gaap:UndistributedEarningsOfForeignSubsidiaries>
    <us-gaap:OperatingLossCarryforwards
      contextRef="i_2020-12-31"
      decimals="-5"
      id="c68815664"
      unitRef="USD">6600000</us-gaap:OperatingLossCarryforwards>
    <prlb:OperatingLossCarryforwardsPercentageOfTaxableIncome
      contextRef="d_2020-01-01_2020-12-31"
      decimals="1"
      id="c68815669"
      unitRef="Pure">0.60</prlb:OperatingLossCarryforwardsPercentageOfTaxableIncome>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i_2020-12-31"
      decimals="-5"
      id="c68815674"
      unitRef="USD">9100000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i_2019-12-31"
      decimals="-5"
      id="c68815675"
      unitRef="USD">8200000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2020-12-31"
      decimals="-5"
      id="c68815680"
      unitRef="USD">4800000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2019-12-31"
      decimals="-5"
      id="c68815681"
      unitRef="USD">4600000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741342">
    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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; padding-bottom: 1px;"&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);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31,&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; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; 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;, 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="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="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; width: 66%;"&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;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;, 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,598&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,096&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;Additions for tax positions of current year&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;324&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;592&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;Additions for tax positions of prior 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;475&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: 14%; 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="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;Decrease related to expiration of statutes of limitations&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(567&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; padding-bottom: 1px;"&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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(90&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; padding-bottom: 1px;"&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;"&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;Balance at period end&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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,830&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; 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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4,598&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; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815255"
      unitRef="USD">4598000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c68815256"
      unitRef="USD">4096000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815257"
      unitRef="USD">324000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815258"
      unitRef="USD">592000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815259"
      unitRef="USD">475000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815260"
      unitRef="USD">0</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815261"
      unitRef="USD">567000</us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations>
    <us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c68815262"
      unitRef="USD">90000</us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c68815263"
      unitRef="USD">4830000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815264"
      unitRef="USD">4598000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:LegalMattersAndContingenciesTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741343">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;16&lt;/em&gt; &#x2013; Litigation&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;From time to time, the Company &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be subject to various legal proceedings and claims that arise in the ordinary course of its business.&#160;Although the results of litigation and claims cannot be predicted with certainty, the Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; believe it is a party to any litigation the outcome of which, if determined adversely, would individually or in the aggregate be reasonably expected to have a material adverse effect on its business.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
  </us-gaap:LegalMattersAndContingenciesTextBlock>
    <us-gaap:SegmentReportingDisclosureTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741344">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;17&lt;/em&gt; &#x2013; Segment Reporting&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The Company&#x2019;s reportable segments are based on the internal reporting used by the Company&#x2019;s CEO, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Company&#x2019;s reportable segments are based upon geographic region, consisting of the United States and Europe. The Corporate Unallocated and Japan category includes non-reportable segments, as well as research and development and general and administrative costs that are global in nature and&#160;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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Revenue in the United States is derived from Injection Molding, CNC Machining, &lt;em style="font: inherit;"&gt;3D&lt;/em&gt; Printing and Sheet Metal product lines. Revenue in Europe is derived from Injection Molding, CNC Machining, and &lt;em style="font: inherit;"&gt;3D&lt;/em&gt; Printing product lines. Revenue in&#160;Japan is derived from Injection Molding and CNC Machining 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 and lathe-turned customer parts. &lt;em style="font: inherit;"&gt;3D&lt;/em&gt; Printing revenue consists of sales of &lt;em style="font: inherit;"&gt;3D&lt;/em&gt;-printed parts. Sheet Metal revenue consists of sales of fabricated sheet metal parts.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;The accounting policies of the reportable segments are the same as those described in&#160;Note &lt;em style="font: inherit;"&gt;2&lt;/em&gt;&#160;&#x2013;&#160;Summary of Significant Accounting Policies. 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.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Beginning in&#160;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;, the Company's CODM made a decision to view certain research and development costs by geographic region. As a result, costs previously included in the Corporate Unallocated and Japan category have been included in the respective geographic regions. All periods presented have been restated to reflect this change.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Revenue and income from operations by reportable segment are as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 49%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;Revenue:&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;/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; margin-left: 18pt;"&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;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;345,708&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;360,205&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;350,535&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; margin-left: 18pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;74,796&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;82,805&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;80,889&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; margin-left: 18pt;"&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-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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;13,891&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;15,718&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;14,172&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; 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;, 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: 18pt;"&gt;Total revenue&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: 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;434,395&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;458,728&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;445,596&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 49%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;Income from Operations:&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;/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; margin-left: 18pt;"&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;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;98,762&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;108,594&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115,710&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; margin-left: 18pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,707&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;15,077&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,747&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; margin-left: 18pt;"&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;, 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(50,633&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; padding-bottom: 1px;"&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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(43,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; padding-bottom: 1px;"&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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(43,557&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; padding-bottom: 1px;"&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;"&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: 18pt;"&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;, 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);"&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: 3px double rgb(0, 0, 0);"&gt;59,836&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;79,856&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;88,898&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;Total long-lived assets, expenditures for additions to long-lived assets and depreciation and amortization expense are as follows:&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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;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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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;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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;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;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;"&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: 18pt;"&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;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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; 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;210,171&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;185,979&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; margin-left: 18pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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; 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;45,019&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;34,577&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; margin-left: 18pt;"&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-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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&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; margin-left: 0pt; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,522&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,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; 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;, 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: 18pt;"&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: 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;263,712&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;228,001&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"&gt;&#160;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 49%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;Expenditures for additions to 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;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;"&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;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;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;29,984&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;45,123&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;78,762&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;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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,574&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;14,743&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,576&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;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-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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;452&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,364&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;766&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; 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;, 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 expenditures for additions to 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: 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;47,010&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;62,230&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;87,104&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"&gt;&lt;b/&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 49%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;Depreciation and Amortization:&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;/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; margin-left: 18pt;"&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;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25,744&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;24,767&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21,117&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; margin-left: 18pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,024&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,746&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,679&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; margin-left: 18pt;"&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-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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,826&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,351&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;958&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; 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;, 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: 18pt;"&gt;Total depreciation and amortization&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: 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;32,594&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,864&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;26,754&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
  </us-gaap:SegmentReportingDisclosureTextBlock>
    <us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock
      contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      id="c1741345">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 49%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;Revenue:&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;/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; margin-left: 18pt;"&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;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;345,708&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;360,205&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;350,535&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; margin-left: 18pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;74,796&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;82,805&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;80,889&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; margin-left: 18pt;"&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-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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;13,891&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;15,718&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;14,172&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; 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;, 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: 18pt;"&gt;Total revenue&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: 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;434,395&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;458,728&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;445,596&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; 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_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c68815271"
      unitRef="USD">345708000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c68815272"
      unitRef="USD">360205000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c68815273"
      unitRef="USD">350535000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c68815274"
      unitRef="USD">74796000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c68815275"
      unitRef="USD">82805000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c68815276"
      unitRef="USD">80889000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c68815277"
      unitRef="USD">13891000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c68815278"
      unitRef="USD">15718000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c68815279"
      unitRef="USD">14172000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c68815280"
      unitRef="USD">434395000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c68815281"
      unitRef="USD">458728000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c68815282"
      unitRef="USD">445596000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <prlb:IncomeFromOperationsByGeographicAreaTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741346">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 49%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;Income from Operations:&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;/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; margin-left: 18pt;"&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;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;98,762&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;108,594&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;115,710&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; margin-left: 18pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;11,707&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;15,077&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,747&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; margin-left: 18pt;"&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;, 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(50,633&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; padding-bottom: 1px;"&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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(43,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; padding-bottom: 1px;"&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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(43,557&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; padding-bottom: 1px;"&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;"&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: 18pt;"&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;, 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);"&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: 3px double rgb(0, 0, 0);"&gt;59,836&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;79,856&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;88,898&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </prlb:IncomeFromOperationsByGeographicAreaTableTextBlock>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c68815290"
      unitRef="USD">98762000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c68815291"
      unitRef="USD">108594000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-4"
      id="c68815292"
      unitRef="USD">115710000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c68815293"
      unitRef="USD">11707000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c68815294"
      unitRef="USD">15077000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c68815295"
      unitRef="USD">16747000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember"
      decimals="-3"
      id="c68815296"
      unitRef="USD">-50633000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2019-01-01_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember"
      decimals="-3"
      id="c68815297"
      unitRef="USD">-43815000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2018-01-01_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-CorporateUnallocatedAndJapanSegmentMember"
      decimals="-3"
      id="c68815298"
      unitRef="USD">-43557000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815299"
      unitRef="USD">59836000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815300"
      unitRef="USD">79856000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68815301"
      unitRef="USD">88898000</us-gaap:OperatingIncomeLoss>
    <us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741347">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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;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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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;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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 49%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;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;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;"&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: 18pt;"&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;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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; 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;210,171&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;185,979&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; margin-left: 18pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&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; 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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;45,019&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;34,577&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; margin-left: 18pt;"&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-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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&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; margin-left: 0pt; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;8,522&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;7,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; 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;, 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: 18pt;"&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: 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&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; padding-bottom: 3px; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;263,712&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;228,001&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c68815309"
      unitRef="USD">215721000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c68815310"
      unitRef="USD">210171000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c68815311"
      unitRef="USD">185979000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c68815312"
      unitRef="USD">59388000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c68815313"
      unitRef="USD">45019000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c68815314"
      unitRef="USD">34577000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c68815315"
      unitRef="USD">7557000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2019-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c68815316"
      unitRef="USD">8522000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2018-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c68815317"
      unitRef="USD">7445000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c68815318"
      unitRef="USD">282666000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c68815319"
      unitRef="USD">263712000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2018-12-31"
      decimals="-3"
      id="c68815320"
      unitRef="USD">228001000</us-gaap:PropertyPlantAndEquipmentNet>
    <prlb:ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741348">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 49%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;Expenditures for additions to 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;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;"&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;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;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;29,984&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;45,123&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;78,762&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;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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,574&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;14,743&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,576&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;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-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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;452&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,364&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;766&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; 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;, 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 expenditures for additions to 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: 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;47,010&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;62,230&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;87,104&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </prlb:ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68815328"
      unitRef="USD">29984000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68815329"
      unitRef="USD">45123000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68815330"
      unitRef="USD">78762000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68815331"
      unitRef="USD">16574000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68815332"
      unitRef="USD">14743000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68815333"
      unitRef="USD">7576000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c68815334"
      unitRef="USD">452000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c68815335"
      unitRef="USD">2364000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c68815336"
      unitRef="USD">766000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-4"
      id="c68815337"
      unitRef="USD">47010000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-4"
      id="c68815338"
      unitRef="USD">62230000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68815339"
      unitRef="USD">87104000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <prlb:DepreciationAndAmortizationByGeographicRegionTableTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741349">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Year Ended December 31,&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; 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;, Times, serif; font-size: 10pt; width: 49%;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2019&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; padding-bottom: 1px;"&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: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2018&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; 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;, 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;Depreciation and Amortization:&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;/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; margin-left: 18pt;"&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;"&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25,744&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;24,767&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;21,117&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; margin-left: 18pt;"&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;"&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: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,024&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,746&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: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;4,679&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; margin-left: 18pt;"&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-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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,826&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,351&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; 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; 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;&#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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;958&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; 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;, 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: 18pt;"&gt;Total depreciation and amortization&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: 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;32,594&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;30,864&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; 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;26,754&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; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </prlb:DepreciationAndAmortizationByGeographicRegionTableTextBlock>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68815347"
      unitRef="USD">25744000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68815348"
      unitRef="USD">24767000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-US"
      decimals="-3"
      id="c68815349"
      unitRef="USD">21117000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68815350"
      unitRef="USD">5024000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68815351"
      unitRef="USD">4746000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-EuropeMember"
      decimals="-3"
      id="c68815352"
      unitRef="USD">4679000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2020-01-01_2020-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c68815353"
      unitRef="USD">1826000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2019-01-01_2019-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c68815354"
      unitRef="USD">1351000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2018-01-01_2018-12-31_StatementGeographicalAxis-JP"
      decimals="-3"
      id="c68815355"
      unitRef="USD">958000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c68815356"
      unitRef="USD">32594000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2019-01-01_2019-12-31"
      decimals="-3"
      id="c68815357"
      unitRef="USD">30864000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2018-01-01_2018-12-31"
      decimals="-3"
      id="c68815358"
      unitRef="USD">26754000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:SubsequentEventsTextBlock contextRef="d_2020-01-01_2020-12-31" id="c1741350">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;18&lt;/em&gt; &#x2013; Subsequent Events&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;On &lt;em style="font: inherit;"&gt; January 22, 2021, &lt;/em&gt;the Company acquired &lt;em style="font: inherit;"&gt;3D&lt;/em&gt; Hubs, Inc. (&lt;em style="font: inherit;"&gt;&#x201c;3D&lt;/em&gt; Hubs&#x201d;), for $294.4 million, consisting of $127.7 million in cash and 863,995 shares of the Company's common stock valued at $166.7 million on the date of close.&#160; Up to an additional $52.8 million of contingent consideration is 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; after closing, 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;em style="font: inherit;"&gt;3D&lt;/em&gt; Hubs is a leading online manufacturing platform that provides customers with on-demand access to a global network of approximately &lt;em style="font: inherit;"&gt;240&lt;/em&gt; premium manufacturing partners. The completion of this transaction creates the world&#x2019;s most comprehensive digital manufacturing offer for custom parts. The acquisition will be accounted for under the acquisition method of accounting in accordance with ASC &lt;em style="font: inherit;"&gt;805.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"&gt;On &lt;em style="font: inherit;"&gt; February 3, 2021, &lt;/em&gt;the Company announced the launch of its new digital quoting and design analysis platform to its U.S.-based customers, following a launch in the &lt;em style="font: inherit;"&gt;fourth&lt;/em&gt; quarter of &lt;em style="font: inherit;"&gt;2020&lt;/em&gt; to its European-based users. With the launch, &lt;em style="font: inherit;"&gt;three&lt;/em&gt; of the Company's services&#x2014;injection molding, CNC machining, and &lt;em style="font: inherit;"&gt;3D&lt;/em&gt; printing&#x2014;are now united in a single platform for a much easier quoting and ordering experience. The advanced e-commerce system is built to accelerate online quoting, design analysis and ordering.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;"&gt;&#160;&lt;/p&gt;


  </us-gaap:SubsequentEventsTextBlock>
    <us-gaap:BusinessCombinationConsiderationTransferred1
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_SubsequentEventTypeAxis-SubsequentEventMember"
      decimals="-5"
      id="c68815701"
      unitRef="USD">294400000</us-gaap:BusinessCombinationConsiderationTransferred1>
    <us-gaap:PaymentsToAcquireBusinessesGross
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_SubsequentEventTypeAxis-SubsequentEventMember"
      decimals="-5"
      id="c68815702"
      unitRef="USD">127700000</us-gaap:PaymentsToAcquireBusinessesGross>
    <us-gaap:BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_SubsequentEventTypeAxis-SubsequentEventMember"
      decimals="INF"
      id="c68815703"
      unitRef="Share">863995</us-gaap:BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued>
    <us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_SubsequentEventTypeAxis-SubsequentEventMember"
      decimals="-5"
      id="c68815704"
      unitRef="USD">166700000</us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_SubsequentEventTypeAxis-SubsequentEventMember"
      decimals="-5"
      id="c68815705"
      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="c68815708"
      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="c68815709"
      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="c68815710"
      unitRef="USD">27800000</us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable>
</xbrl>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>16
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407027361976">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Document And Entity Information - USD ($)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Feb. 10, 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_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>
<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>
<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>
<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>
<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>
<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">FY<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_dei_DocumentFiscalYearFocus', window );">Document Fiscal Year Focus</a></td>
<td class="text">2020<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_dei_DocumentType', window );">Document Type</a></td>
<td class="text">10-K<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_dei_DocumentAnnualReport', window );">Document Annual Report</a></td>
<td class="text">true<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_dei_DocumentPeriodEndDate', window );">Document Period End Date</a></td>
<td class="text">Dec. 31,  2020<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_dei_DocumentTransitionReport', window );">Document Transition Report</a></td>
<td class="text">false<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_dei_EntityFileNumber', window );">Entity File Number</a></td>
<td class="text">001-35435<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_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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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_EntityWellKnownSeasonedIssuer', window );">Entity Well-known Seasoned Issuer</a></td>
<td class="text">Yes<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_dei_EntityVoluntaryFilers', window );">Entity Voluntary Filers</a></td>
<td class="text">No<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_dei_EntityCurrentReportingStatus', window );">Entity Current Reporting Status</a></td>
<td class="text">Yes<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_dei_EntityInteractiveDataCurrent', window );">Entity Interactive Data Current</a></td>
<td class="text">Yes<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_dei_EntityFilerCategory', window );">Entity Filer Category</a></td>
<td class="text">Large Accelerated Filer<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_dei_EntitySmallBusiness', window );">Entity Small Business</a></td>
<td class="text">false<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_dei_EntityEmergingGrowthCompany', window );">Entity Emerging Growth Company</a></td>
<td class="text">false<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_dei_EntityShellCompany', window );">Entity Shell Company</a></td>
<td class="text">false<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_dei_EntityPublicFloat', window );">Entity Public Float</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 3,000,000,000.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_dei_EntityCommonStockSharesOutstanding', window );">Entity Common Stock, Shares Outstanding</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">27,604,879<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_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_DocumentAnnualReport">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 annual 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, 20-F, 40-F<br> -Number 240<br> -Section 15<br> -Subsection d-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_DocumentAnnualReport</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_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 CCYY 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>The end date of the period reflected on the cover page if a periodic report. For all other reports and registration statements containing historical data, it is the date up through which that historical data is presented.  If there is no historical data in the report, use the filing date. The format of the date is CCYY-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_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_EntityPublicFloat">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 market value of the voting and non-voting common equity held by non-affiliates computed by reference to the price at which the common equity was last sold, or the average bid and asked price of such common equity, as of the last business day of the registrant's most recently completed second fiscal quarter.</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_EntityPublicFloat</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: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_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_EntityVoluntaryFilers">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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' if the registrant is not required to file reports pursuant to Section 13 or Section 15(d) of the Act.</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_EntityVoluntaryFilers</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_EntityWellKnownSeasonedIssuer">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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' if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Is used on Form Type: 10-K, 10-Q, 8-K, 20-F, 6-K, 10-K/A, 10-Q/A, 20-F/A, 6-K/A, N-CSR, N-Q, N-1A.</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_EntityWellKnownSeasonedIssuer</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_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>17
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407025835880">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Balance Sheets - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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">$ 127,603<span></span>
</td>
<td class="nump">$ 125,225<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">34,088<span></span>
</td>
<td class="nump">35,437<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,781 and $952 as of December 31, 2020 and December 31, 2019, respectively</a></td>
<td class="nump">57,877<span></span>
</td>
<td class="nump">57,450<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">10,862<span></span>
</td>
<td class="nump">10,075<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_PrepaidExpenseAndOtherAssetsCurrent', window );">Prepaid expenses and other current assets</a></td>
<td class="nump">11,032<span></span>
</td>
<td class="nump">8,232<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_IncomeTaxesReceivable', window );">Income taxes receivable</a></td>
<td class="nump">540<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_AssetsCurrent', window );">Total current assets</a></td>
<td class="nump">242,002<span></span>
</td>
<td class="nump">236,419<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">282,666<span></span>
</td>
<td class="nump">263,712<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">128,752<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">14,350<span></span>
</td>
<td class="nump">17,369<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">59,357<span></span>
</td>
<td class="nump">12,960<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">9,855<span></span>
</td>
<td class="nump">11,425<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,396<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_OtherAssetsNoncurrent', window );">Other long-term assets</a></td>
<td class="nump">4,826<span></span>
</td>
<td class="nump">3,030<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">744,204<span></span>
</td>
<td class="nump">673,667<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">18,248<span></span>
</td>
<td class="nump">16,804<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">11,989<span></span>
</td>
<td class="nump">15,058<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">16,193<span></span>
</td>
<td class="nump">11,057<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_OperatingLeaseLiabilityCurrent', window );">Current operating lease liabilities</a></td>
<td class="nump">3,272<span></span>
</td>
<td class="nump">3,340<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_FinanceLeaseLiabilityCurrent', window );">Current finance lease liabilities</a></td>
<td class="nump">552<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_AccruedIncomeTaxesCurrent', window );">Income taxes payable</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,322<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_LiabilitiesCurrent', window );">Total current liabilities</a></td>
<td class="nump">50,254<span></span>
</td>
<td class="nump">47,581<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,586<span></span>
</td>
<td class="nump">8,565<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,919<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_DeferredIncomeTaxLiabilitiesNet', window );">Long-term deferred tax liabilities</a></td>
<td class="nump">33,854<span></span>
</td>
<td class="nump">26,283<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,235<span></span>
</td>
<td class="nump">5,448<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">99,848<span></span>
</td>
<td class="nump">87,877<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 December 31, 2020 and December 31, 2019, respectively</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 26,776,796 and 26,786,459 shares as of December 31, 2020 and December 31, 2019, respectively</a></td>
<td class="nump">27<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">284,848<span></span>
</td>
<td class="nump">268,059<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">362,901<span></span>
</td>
<td class="nump">324,722<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">(3,420)<span></span>
</td>
<td class="num">(7,018)<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">644,356<span></span>
</td>
<td class="nump">585,790<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">$ 744,204<span></span>
</td>
<td class="nump">$ 673,667<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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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=121593590&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=121566466&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=121593590&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=121641772&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=121641772&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=121370832&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=121370832&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=121641772&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/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 3: 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=75031198&amp;loc=d3e14064-108612<br><br>Reference 4: 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=121559654&amp;loc=d3e5710-111685<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 (a)<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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 22<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&amp;loc=d3e8736-108599<br><br>Reference 8: 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 9: 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 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 30<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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=121566466&amp;loc=d3e6801-107765<br><br>Reference 2: 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=75031198&amp;loc=d3e14064-108612<br><br>Reference 3: 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 4: 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 5: 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=121559654&amp;loc=d3e5710-111685<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.9)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 7: 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 8: 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=121566466&amp;loc=d3e6676-107765<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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_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=121586364&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=121566466&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://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=120406818&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=120406818&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=121603541&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=121603541&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=121603541&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://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=121566466&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.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://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 2: 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=75031198&amp;loc=d3e14064-108612<br><br>Reference 3: 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=121559654&amp;loc=d3e5710-111685<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.19-26)<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 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=121559654&amp;loc=d3e5710-111685<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/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=120311839&amp;loc=d3e8906-108599<br><br>Reference 8: 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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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://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 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)(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 4: 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 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(32))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: 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=75031198&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/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=121559654&amp;loc=d3e5710-111685<br><br>Reference 2: 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=75031198&amp;loc=d3e14064-108612<br><br>Reference 3: 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 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(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<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.21)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: 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=121559654&amp;loc=d3e5710-111685<br><br>Reference 7: 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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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=121566466&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=121603541&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=121603541&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=121603541&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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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=121566466&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://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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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/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 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)(23)(a)(4))<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 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121370832&amp;loc=SL117420844-207641<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 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 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)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=121370832&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://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=27010918&amp;loc=d3e74512-122707<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(31))<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 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 6: 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=75031198&amp;loc=d3e14064-108612<br><br>Reference 7: 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>18
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407025668088">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Balance Sheets (Parentheticals) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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,781<span></span>
</td>
<td class="nump">$ 952<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">26,776,796<span></span>
</td>
<td class="nump">26,786,459<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">26,776,796<span></span>
</td>
<td class="nump">26,786,459<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=121611835&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=121599878&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>num: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=109259400&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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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>num: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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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>19
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024848984">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Comprehensive Income - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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>
</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">$ 434,395<span></span>
</td>
<td class="nump">$ 458,728<span></span>
</td>
<td class="nump">$ 445,596<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">216,568<span></span>
</td>
<td class="nump">223,438<span></span>
</td>
<td class="nump">206,917<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">217,827<span></span>
</td>
<td class="nump">235,290<span></span>
</td>
<td class="nump">238,679<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>
</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">69,309<span></span>
</td>
<td class="nump">72,976<span></span>
</td>
<td class="nump">68,533<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">36,940<span></span>
</td>
<td class="nump">32,692<span></span>
</td>
<td class="nump">28,735<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">51,742<span></span>
</td>
<td class="nump">49,766<span></span>
</td>
<td class="nump">52,513<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">157,991<span></span>
</td>
<td class="nump">155,434<span></span>
</td>
<td class="nump">149,781<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">59,836<span></span>
</td>
<td class="nump">79,856<span></span>
</td>
<td class="nump">88,898<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, net</a></td>
<td class="nump">3,109<span></span>
</td>
<td class="nump">1,337<span></span>
</td>
<td class="nump">2,757<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">62,945<span></span>
</td>
<td class="nump">81,193<span></span>
</td>
<td class="nump">91,655<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">12,078<span></span>
</td>
<td class="nump">17,538<span></span>
</td>
<td class="nump">15,067<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">$ 50,867<span></span>
</td>
<td class="nump">$ 63,655<span></span>
</td>
<td class="nump">$ 76,588<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>
</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">$ 1.90<span></span>
</td>
<td class="nump">$ 2.37<span></span>
</td>
<td class="nump">$ 2.84<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">$ 1.89<span></span>
</td>
<td class="nump">$ 2.35<span></span>
</td>
<td class="nump">$ 2.81<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>
</tr>
<tr 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">26,737,425<span></span>
</td>
<td class="nump">26,866,985<span></span>
</td>
<td class="nump">26,982,614<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">26,896,357<span></span>
</td>
<td class="nump">27,049,423<span></span>
</td>
<td class="nump">27,278,816<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>Other Comprehensive Income (Loss), 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>
</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 adjustments</a></td>
<td class="nump">$ 3,598<span></span>
</td>
<td class="nump">$ 1,474<span></span>
</td>
<td class="num">$ (3,258)<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_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="nump">$ 54,465<span></span>
</td>
<td class="nump">$ 65,129<span></span>
</td>
<td class="nump">$ 73,330<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=120395209&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=121641772&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=121641772&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=121641772&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=120395209&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 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22583-107794<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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-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 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1448-109256<br><br>Reference 4: 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=109234566&amp;loc=d3e22595-107794<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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1337-109256<br><br>Reference 7: 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=120380238&amp;loc=d3e4984-109258<br><br>Reference 8: 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 9: 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=120380238&amp;loc=d3e3842-109258<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 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22644-107794<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=6371337&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 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=120395209&amp;loc=SL114868664-224227<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 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1252-109256<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 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=SL5780133-109256<br><br>Reference 15: 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>num: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=120380238&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=109234566&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=120380238&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=121326447&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=109234566&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=109234566&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=109234566&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=121326447&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 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 10: 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=6371337&amp;loc=d3e3550-109257<br><br>Reference 11: 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 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 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-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 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1337-109256<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=120395209&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>num: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=120395209&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/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 2: 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=120311839&amp;loc=d3e8924-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 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&amp;loc=d3e8906-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(g)(1)(ii))<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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&amp;loc=d3e8736-108599<br><br>Reference 6: 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=75031198&amp;loc=d3e14064-108612<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 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&amp;loc=d3e8933-108599<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.1,2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120395209&amp;loc=SL114868664-224227<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 (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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=120311839&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=120311839&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=120311839&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=68072869&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=120311839&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=120395209&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=120311839&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=116825942&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=84230637&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=120311839&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=109234566&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=120385591&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=109234566&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://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=121641772&amp;loc=SL7669619-108580<br><br>Reference 2: 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=120311839&amp;loc=d3e8924-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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<br><br>Reference 4: 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 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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 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 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 4<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22595-107794<br><br>Reference 9: 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=121641772&amp;loc=SL7669625-108580<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=120311839&amp;loc=d3e8736-108599<br><br>Reference 11: 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 12: 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=120395209&amp;loc=SL114868664-224227<br><br>Reference 13: 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=121586364&amp;loc=d3e3602-108585<br><br>Reference 14: 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=109234566&amp;loc=d3e22499-107794<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=109234566&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 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=75031198&amp;loc=d3e14064-108612<br><br>Reference 17: 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=120311839&amp;loc=d3e8906-108599<br><br>Reference 18: 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=109234566&amp;loc=d3e22583-107794<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://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=121326447&amp;loc=SL5780133-109256<br><br>Reference 21: 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 22: 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=120311839&amp;loc=d3e8933-108599<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=109234566&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_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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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_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=121641772&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_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=120395209&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://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 2: 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=120311839&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=121604090&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=121604090&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=120311839&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=120311839&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=6371337&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=121326447&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=6371337&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=121326447&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>20
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407031274856">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Statements of Shareholders' Equity - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th">
<div>Cumulative Effect, Period of Adoption, Adjustment [Member] </div>
<div>Common Stock [Member]</div>
</th>
<th class="th">
<div>Cumulative Effect, Period of Adoption, Adjustment [Member] </div>
<div>Additional Paid-in Capital [Member]</div>
</th>
<th class="th">
<div>Cumulative Effect, Period of Adoption, Adjustment [Member] </div>
<div>Retained Earnings [Member]</div>
</th>
<th class="th">
<div>Cumulative Effect, Period of Adoption, Adjustment [Member] </div>
<div>AOCI Attributable to Parent [Member]</div>
</th>
<th class="th"><div>Cumulative Effect, Period of Adoption, Adjustment [Member]</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, 2017</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="nump">26,828,651<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, 2017</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="nump">$ 27<span></span>
</td>
<td class="nump">$ 241,725<span></span>
</td>
<td class="nump">$ 224,697<span></span>
</td>
<td class="num">$ (5,234)<span></span>
</td>
<td class="nump">$ 461,215<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 (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="text">&#160;<span></span>
</td>
<td class="nump">260,694<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</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="nump">$ 0<span></span>
</td>
<td class="nump">6,791<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">6,791<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="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>
<td class="nump">10,928<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">10,928<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="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="num">(104,598)<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="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>
<td class="num">(942)<span></span>
</td>
<td class="num">(11,287)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(12,229)<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="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">76,588<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">76,588<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 adjustments</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="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(3,258)<span></span>
</td>
<td class="num">(3,258)<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="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">73,330<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, 2018</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="nump">26,984,747<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 (Accounting Standards Update 2014-09 [Member]) at Dec. 31, 2018</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 1,462<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 1,462<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="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, 2018</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="nump">$ 27<span></span>
</td>
<td class="nump">258,502<span></span>
</td>
<td class="nump">291,460<span></span>
</td>
<td class="num">(8,492)<span></span>
</td>
<td class="nump">541,497<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 (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="text">&#160;<span></span>
</td>
<td class="nump">128,174<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</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="nump">$ 0<span></span>
</td>
<td class="nump">1,904<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,904<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="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>
<td class="nump">10,781<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">10,781<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="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="num">(326,462)<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="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>
<td class="num">(3,128)<span></span>
</td>
<td class="num">(30,393)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(33,521)<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="text">&#160;<span></span>
</td>
<td class="text"> <span></span>
</td>
<td class="text"> <span></span>
</td>
<td class="nump">63,655<span></span>
</td>
<td class="text"> <span></span>
</td>
<td class="nump">63,655<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 adjustments</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="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,474<span></span>
</td>
<td class="nump">1,474<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="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">$ 65,129<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="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">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="nump">26,786,459<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="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">$ 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_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other (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="text">&#160;<span></span>
</td>
<td class="nump">189,951<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</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="nump">$ 0<span></span>
</td>
<td class="nump">4,114<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">4,114<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="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>
<td class="nump">14,673<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">14,673<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="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="num">(199,614)<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="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>
<td class="num">(1,998)<span></span>
</td>
<td class="num">(12,688)<span></span>
</td>
<td class="nump">0<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_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="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">50,867<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">50,867<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 adjustments</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="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,598<span></span>
</td>
<td class="nump">3,598<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="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">$ 54,465<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="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">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="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">$ 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>
</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=120383193&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=120383193&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=121326096&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=109259400&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=120395209&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=121641772&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=121641772&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=121641772&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://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=121641772&amp;loc=SL7669619-108580<br><br>Reference 2: 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=120311839&amp;loc=d3e8924-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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<br><br>Reference 4: 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 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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 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 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 4<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22595-107794<br><br>Reference 9: 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=121641772&amp;loc=SL7669625-108580<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=120311839&amp;loc=d3e8736-108599<br><br>Reference 11: 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 12: 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=120395209&amp;loc=SL114868664-224227<br><br>Reference 13: 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=121586364&amp;loc=d3e3602-108585<br><br>Reference 14: 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=109234566&amp;loc=d3e22499-107794<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=109234566&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 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=75031198&amp;loc=d3e14064-108612<br><br>Reference 17: 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=120311839&amp;loc=d3e8906-108599<br><br>Reference 18: 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=109234566&amp;loc=d3e22583-107794<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://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=121326447&amp;loc=SL5780133-109256<br><br>Reference 21: 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 22: 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=120311839&amp;loc=d3e8933-108599<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=109234566&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_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=121641772&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_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=109259400&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_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=109259400&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=109259400&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=109259400&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://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=27010918&amp;loc=d3e74512-122707<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(31))<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 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 6: 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=75031198&amp;loc=d3e14064-108612<br><br>Reference 7: 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_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201409Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201409Member</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>21
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407027583368">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Cash Flows - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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>
<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">$ 50,867<span></span>
</td>
<td class="nump">$ 63,655<span></span>
</td>
<td class="nump">$ 76,588<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>
<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">32,594<span></span>
</td>
<td class="nump">30,864<span></span>
</td>
<td class="nump">26,754<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">14,673<span></span>
</td>
<td class="nump">10,781<span></span>
</td>
<td class="nump">10,928<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">7,577<span></span>
</td>
<td class="nump">6,106<span></span>
</td>
<td class="nump">11,936<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_GainLossOnSaleOfBusiness', window );">Gain on sale of businesses</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(671)<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_AccretionAmortizationOfDiscountsAndPremiumsInvestments', window );">Amortization of held-to-maturity securities</a></td>
<td class="nump">415<span></span>
</td>
<td class="nump">5<span></span>
</td>
<td class="nump">374<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_OtherNoncashIncomeExpense', window );">Other</a></td>
<td class="num">(336)<span></span>
</td>
<td class="nump">391<span></span>
</td>
<td class="num">(619)<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_IncreaseDecreaseInOperatingCapitalAbstract', window );"><strong>Changes in operating assets and liabilities, net of acquisitions:</strong></a></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_IncreaseDecreaseInAccountsReceivable', window );">Accounts receivable</a></td>
<td class="num">(91)<span></span>
</td>
<td class="nump">1,848<span></span>
</td>
<td class="num">(6,098)<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_IncreaseDecreaseInInventories', window );">Inventories</a></td>
<td class="num">(662)<span></span>
</td>
<td class="nump">60<span></span>
</td>
<td class="num">(189)<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_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets', window );">Prepaid expenses and other</a></td>
<td class="num">(1,680)<span></span>
</td>
<td class="nump">545<span></span>
</td>
<td class="num">(2,098)<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_IncreaseDecreaseInAccruedIncomeTaxesPayable', window );">Income taxes</a></td>
<td class="num">(1,960)<span></span>
</td>
<td class="nump">6,555<span></span>
</td>
<td class="num">(6,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_IncreaseDecreaseInAccountsPayable', window );">Accounts payable</a></td>
<td class="nump">1,492<span></span>
</td>
<td class="num">(719)<span></span>
</td>
<td class="nump">1,942<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_IncreaseDecreaseInOtherOperatingLiabilities', window );">Accrued liabilities and other</a></td>
<td class="nump">4,080<span></span>
</td>
<td class="num">(4,039)<span></span>
</td>
<td class="nump">10,734<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_NetCashProvidedByUsedInOperatingActivities', window );">Net cash provided by operating activities</a></td>
<td class="nump">106,969<span></span>
</td>
<td class="nump">116,052<span></span>
</td>
<td class="nump">122,929<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_NetCashProvidedByUsedInInvestingActivitiesAbstract', window );"><strong>Investing activities</strong></a></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_PaymentsToAcquirePropertyPlantAndEquipment', window );">Purchases of property, equipment and other capital assets</a></td>
<td class="num">(47,010)<span></span>
</td>
<td class="num">(62,230)<span></span>
</td>
<td class="num">(87,104)<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_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Cash used for acquisitions, net of cash acquired</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(90)<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_ProceedsFromDivestitureOfBusinesses', window );">Proceeds from sale of businesses</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">284<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="num">(3,000)<span></span>
</td>
<td class="num">(4,000)<span></span>
</td>
<td class="num">(126)<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_PaymentsToAcquireHeldToMaturitySecurities', window );">Purchases of marketable securities</a></td>
<td class="num">(113,200)<span></span>
</td>
<td class="num">(46,403)<span></span>
</td>
<td class="num">(41,384)<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_ProceedsFromSaleAndMaturityOfMarketableSecurities', window );">Proceeds from maturities of marketable securities</a></td>
<td class="nump">67,737<span></span>
</td>
<td class="nump">68,330<span></span>
</td>
<td class="nump">65,139<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_NetCashProvidedByUsedInInvestingActivities', window );">Net cash used in investing activities</a></td>
<td class="num">(95,473)<span></span>
</td>
<td class="num">(44,303)<span></span>
</td>
<td class="num">(63,281)<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_NetCashProvidedByUsedInFinancingActivitiesAbstract', window );"><strong>Financing activities</strong></a></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_RepaymentsOfLongTermDebt', window );">Payments on debt</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(5,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_FinanceLeasePrincipalPayments', window );">Principal repayments of finance lease obligations</a></td>
<td class="num">(154)<span></span>
</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_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions', window );">Proceeds from exercises of stock options</a></td>
<td class="nump">7,557<span></span>
</td>
<td class="nump">4,391<span></span>
</td>
<td class="nump">8,935<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_PaymentsRelatedToTaxWithholdingForShareBasedCompensation', window );">Purchases of shares withheld for tax obligations</a></td>
<td class="num">(3,443)<span></span>
</td>
<td class="num">(2,487)<span></span>
</td>
<td class="num">(2,144)<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_PaymentsForRepurchaseOfCommonStock', window );">Repurchases of common stock</a></td>
<td class="num">(14,686)<span></span>
</td>
<td class="num">(33,521)<span></span>
</td>
<td class="num">(12,229)<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">(10,726)<span></span>
</td>
<td class="num">(31,617)<span></span>
</td>
<td class="num">(10,438)<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">1,608<span></span>
</td>
<td class="nump">47<span></span>
</td>
<td class="num">(871)<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 increase in cash and cash equivalents</a></td>
<td class="nump">2,378<span></span>
</td>
<td class="nump">40,179<span></span>
</td>
<td class="nump">48,339<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">125,225<span></span>
</td>
<td class="nump">85,046<span></span>
</td>
<td class="nump">36,707<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">127,603<span></span>
</td>
<td class="nump">125,225<span></span>
</td>
<td class="nump">85,046<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_SupplementalCashFlowInformationAbstract', window );"><strong>Supplemental cash flow disclosure</strong></a></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_InterestPaidNet', window );">Cash paid for interest</a></td>
<td class="nump">23<span></span>
</td>
<td class="nump">14<span></span>
</td>
<td class="nump">39<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_IncomeTaxesPaid', window );">Cash paid for taxes</a></td>
<td class="nump">$ 5,650<span></span>
</td>
<td class="nump">$ 4,002<span></span>
</td>
<td class="nump">$ 9,966<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=121586364&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_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=121583591&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=121586364&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=121586364&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=98513438&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=121586364&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_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=116825942&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=116825942&amp;loc=d3e330036-122817<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<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 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=116825942&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=121586364&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=84230637&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=120311839&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=121586364&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=98513438&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=121603541&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=121609121&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_GainLossOnSaleOfBusiness">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 gain (loss) from sale and disposal of integrated set of activities and assets capable of being conducted and managed for purpose of providing return in form of dividend, lower cost, or other economic benefit to investor, owner, member and participant.</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 (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121586364&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 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109239629&amp;loc=SL4582445-111684<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GainLossOnSaleOfBusiness</td>
</tr>
<tr>
<td style="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_IncomeTaxesPaid">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 cash paid during the current period to foreign, federal, state, and local authorities as taxes on income.</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 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121583591&amp;loc=d3e4297-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 25<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=121586364&amp;loc=d3e3536-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_IncomeTaxesPaid</td>
</tr>
<tr>
<td style="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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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_InterestPaidNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 paid for interest, excluding capitalized interest, classified as operating activity. Includes, but is not limited to, payment to settle zero-coupon bond for accreted interest of debt discount and debt instrument with insignificant coupon interest rate in relation to effective interest rate of borrowing attributable to accreted interest of debt discount.</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 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121583591&amp;loc=d3e4297-108586<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 17<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=121586364&amp;loc=d3e3367-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 25<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=121586364&amp;loc=d3e3536-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_InterestPaidNet</td>
</tr>
<tr>
<td style="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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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://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=121641772&amp;loc=SL7669619-108580<br><br>Reference 2: 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=120311839&amp;loc=d3e8924-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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<br><br>Reference 4: 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 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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 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 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 4<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22595-107794<br><br>Reference 9: 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=121641772&amp;loc=SL7669625-108580<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=120311839&amp;loc=d3e8736-108599<br><br>Reference 11: 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 12: 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=120395209&amp;loc=SL114868664-224227<br><br>Reference 13: 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=121586364&amp;loc=d3e3602-108585<br><br>Reference 14: 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=109234566&amp;loc=d3e22499-107794<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=109234566&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 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=75031198&amp;loc=d3e14064-108612<br><br>Reference 17: 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=120311839&amp;loc=d3e8906-108599<br><br>Reference 18: 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=109234566&amp;loc=d3e22583-107794<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://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=121326447&amp;loc=SL5780133-109256<br><br>Reference 21: 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 22: 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=120311839&amp;loc=d3e8933-108599<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=109234566&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_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=121586364&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=121586364&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=121586364&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_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=121586364&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_PaymentsToAcquireHeldToMaturitySecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 through purchase of long-term held-to-maturity securities.</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=121586364&amp;loc=d3e3213-108585<br><br>Reference 2: 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=121553693&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_PaymentsToAcquireHeldToMaturitySecurities</td>
</tr>
<tr>
<td style="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=121586364&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=121586364&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_ProceedsFromDivestitureOfBusinesses">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 amount received from the sale of a portion of the company's business, for example a segment, division, branch or other business, 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 12<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121586364&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_ProceedsFromDivestitureOfBusinesses</td>
</tr>
<tr>
<td style="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_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=121586364&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_ProceedsFromSaleAndMaturityOfMarketableSecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 aggregate amount received by the entity through sale or maturity of marketable securities  (held-to-maturity or available-for-sale) 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_ProceedsFromSaleAndMaturityOfMarketableSecurities</td>
</tr>
<tr>
<td style="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_RepaymentsOfLongTermDebt">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 for debt initially having maturity due after one year or beyond 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 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121586364&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_RepaymentsOfLongTermDebt</td>
</tr>
<tr>
<td style="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_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=121586364&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>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SupplementalCashFlowInformationAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_SupplementalCashFlowInformationAbstract</td>
</tr>
<tr>
<td style="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>22
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407022873928">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 1 - Nature of Business<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt;"><b>Note <em style="font: inherit;">1</em> &#8212; Nature of Business</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Organization and business</b></i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Proto Labs, Inc. and its subsidiaries (Proto Labs, the Company, we, us, or our) is an e-commerce driven digital manufacturer of quick-turn, on-demand&#160;injection-molded, computer numerical control (CNC) machined, <em style="font: inherit;">3D</em>-printed and sheet metal-fabricated custom parts for prototyping and short-run production. The Company&#8217;s customers are product developers and engineers throughout the world who require a faster and less expensive way to obtain low volumes of parts. The Company&#8217;s proprietary technology eliminates most of the time-consuming and expensive skilled labor conventionally required to quote and manufacture parts in low volumes, and its customers conduct nearly all of their business with the Company over the Internet. The Company targets its product lines to the millions of product developers and engineers who use <em style="font: inherit;">three</em>-dimensional (<em style="font: inherit;">3D</em>)&#160;computer-aided design (CAD) software to design products across a diverse range of end-markets. The Company has established operations in the United States, Europe and Japan, which the Company believes are among the largest geographic markets where these product developers and engineers are located. The Company&#8217;s primary manufacturing product lines currently include Injection Molding, CNC Machining, <em style="font: inherit;">3D</em> Printing and Sheet Metal. Proto Labs, Inc. is headquartered in Maple Plain, Minnesota. The Company&#8217;s subsidiaries are:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"><b>&#160;</b>&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 5%; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Name</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="1" 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: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Location</b></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 5%;">&#160;</td><td style="width: 58%;">&#160;</td><td style="width: 1%;">&#160;</td><td style="width: 36%; text-align: right;">&#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: 5%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">PL-US International LLC</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United States</p> </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: 5%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs Ltd.</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United Kingdom</p> </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: 5%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">PL International Holdings, UK, Ltd.</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United Kingdom</p> </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: 5%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">PL Euro Services Limited</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">United Kingdom</p> </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: 5%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs GmbH</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Germany</p> </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: 5%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs Tooling GmbH</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Germany</p> </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: 5%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 58%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Proto Labs, G.K.</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 36%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;">Japan</p> </td></tr>
</tbody></table>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;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_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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024552744">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 2 - Summary of Significant Accounting Policies<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">2</em> &#8212; Summary of Significant Accounting Policies</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Principles of consolidation</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The consolidated financial statements include the accounts of the Company and its wholly-owned subsidiaries, as listed within &#8220;Organization and business&#8221; above. All intercompany accounts and transactions have been eliminated in consolidation.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Comprehensive income</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Components of comprehensive income include net income and foreign currency translation adjustments. Comprehensive income is disclosed in the accompanying consolidated statements of comprehensive income and consolidated statements of shareholders&#8217; equity.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"/>


   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounting estimates</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S. GAAP) requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and related disclosures at the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. Actual results could differ from those estimates.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Cash and cash equivalents</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Cash and cash equivalents include cash and other investments, including marketable securities, with maturities of <em style="font: inherit;">three</em> months or less at the date of purchase. The Company maintains its cash in bank deposit accounts, which, at times, <em style="font: inherit;"> may </em>exceed federally insured limits. The Company has <em style="font: inherit;">not</em> experienced any losses on such accounts.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Marketable securities</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Marketable securities include held-to-maturity debt securities recorded at amortized cost. Management determines the appropriate classification of debt securities at the time of purchase and reevaluates such designation as of each balance sheet date. Debt securities are classified as held-to-maturity when the Company has the positive intent and ability to hold the securities to maturity. Held-to-maturity securities are stated at amortized cost, adjusted for amortization of premiums and accretion of discounts to maturity computed under the effective interest method. Such amortization is included in other income, net. Interest on securities classified as held to maturity is included in other income, net. The classification of marketable securities as current or non-current is dependent upon the security&#8217;s maturity date. Securities with maturities of <em style="font: inherit;">three</em> months or less at the time of purchase are categorized as cash equivalents as described above. 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.</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounts receivable and allowance for doubtful accounts</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Accounts receivable are reported at the invoiced amount less an allowance for doubtful accounts. As of each balance sheet date, the Company evaluates its accounts receivable and establishes an allowance for doubtful accounts based on a combination of specific customer circumstances and credit conditions taking into account the history of write-offs and collections. A receivable is considered past due if payment has <em style="font: inherit;">not</em> been received within the period agreed upon in the invoice. Accounts receivable are written off after all collection efforts have been exhausted. Recoveries of trade receivables previously written off are recorded when received.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Inventory</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Inventory consists primarily of raw materials, which are recorded at the lower of cost or market, using the average 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Property, equipment and leasehold improvements</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Property, equipment and leasehold improvements are stated at cost. Major improvements that substantially extend an asset&#8217;s useful life are capitalized. Repairs, maintenance and minor improvements are charged to operations as incurred. Depreciation, including amortization of leasehold improvements and assets recorded under capital leases, is calculated using the straight-line method over the estimated useful lives of the individual assets and ranges from 3 to 39&#160;years. Manufacturing equipment is depreciated over 3 to 15&#160;years, office furniture and equipment are depreciated over 3 to 7&#160;years, computer hardware and software are depreciated over 3 to 5&#160;years, building costs are depreciated over 39&#160;years, leasehold improvements are depreciated over the estimated lives of the related assets or the life of the lease, whichever is shorter, and building and land improvements are depreciated over 10 to 39 years. Assets <em style="font: inherit;">not</em> in service are <em style="font: inherit;">not</em> depreciated until the asset is put into use.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company follows ASC&#160;<em style="font: inherit;">350</em>-<em style="font: inherit;">40,</em><i> Internal-Use Software</i>, in accounting for internally developed software. As of <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em>, respectively, $49.4 million and $32.7 million of software development costs were capitalized. Capitalized software development costs for the year ended <em style="font: inherit;"> December 31, 2020</em>&#160;were $16.7 million.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>


   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Goodwill</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company recognizes goodwill in accordance with ASC <em style="font: inherit;">350,</em> <i>Intangibles&#8212;Goodwill and Other</i>. Goodwill is the excess of cost of an acquired entity over the amounts assigned to assets acquired and liabilities assumed in a business combination. Goodwill is <em style="font: inherit;">not</em> amortized. Goodwill is tested for impairment annually in the <em style="font: inherit;">fourth</em> quarter of each year, and is tested for impairment between annual tests if an event occurs or circumstances change that would indicate the carrying amount <em style="font: inherit;"> may </em>be impaired. An impairment charge for goodwill is recognized only when the estimated fair value of a reporting unit, including goodwill, is less than its carrying amount. In <em style="font: inherit;">2020,</em> the Company performed a qualitative analysis based on the significance of the fair value over the carrying value in prior period assessments. As of <em style="font: inherit;"> December 31, 2020, </em>no impairment charges for goodwill have been recognized.</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 7.2pt; text-align: left; text-indent: -9pt;"><i><b/></i></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;"><i><b>Capitalized Software Costs</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#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 Company follows ASC <em style="font: inherit;">350</em>-<em style="font: inherit;">40,</em> <i>Intangibles &#8211; Goodwill and Other, Internal-Use Software</i>, in accounting for internally developed software. Costs for internal use software are evaluated by projected and capitalized where appropriate.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Other Intangible Assets</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Other intangible assets include software technology, customer relationships and other intangible assets acquired from other independent parties. Other intangible assets with a definite life are amortized over a period ranging from <span style="-sec-ix-hidden:c68815405">two</span> to 10 years on a straight line basis, and are tested for impairment whenever events or circumstances indicate that the carrying amount of an asset (asset group) <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> be recoverable. An impairment loss is recognized when the carrying amount of an asset exceeds the estimated undiscounted cash flows generated by the asset. The amount of the impairment loss recorded is calculated by the excess of the asset&#8217;s carrying value over its fair value.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounting for long-lived assets</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company periodically reviews the carrying amount of its property, equipment and leasehold improvements to determine if circumstances exist indicating an impairment or if depreciation periods should be modified. If facts or circumstances indicate that an impairment <em style="font: inherit;"> may </em>exist, the Company will prepare a projection of the undiscounted future cash flows of the specific assets to determine if the assets are recoverable. If impairment exists based on these projections, an adjustment will be made to reduce the carrying amount of the specific assets to fair value.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Revenue recognition</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company recognizes revenue in accordance with ASC <em style="font: inherit;">606,</em> <i>Revenue from Contracts with Customers</i>. The Company manufactures custom parts to specific customer orders that have <em style="font: inherit;">no</em> alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these <em style="font: inherit;">two</em> criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations using the estimated total time necessary to complete the parts per the customer's order and an estimate of inventory and production costs incurred to date. The majority of the Company&#8217;s injection molding contracts have multiple performance obligations including <em style="font: inherit;">one</em> obligation to produce the mold and a <em style="font: inherit;">second</em> obligation to produce parts. For injection molding contracts with multiple performance obligations, the Company allocates revenue to each performance obligation based on its relative standalone selling price. The Company generally determines standalone selling price based on the price charged to customers.</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"/>
   <p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;"><i><b/></i></p>
   <p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;"><i><b>Leases</b></i></p> <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">&#160;</p> <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The Company accounts for leases in accordance with ASC <em style="font: inherit;">842,</em> <i>Leases</i>, which requires the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating and finance leases. The Company determines if an arrangement is a lease at inception. Operating and finance leases are included in operating and finance lease assets, current operating and finance lease liabilities and long-term operating and finance lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"/>


   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Income taxes</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for income taxes in accordance with ASC <em style="font: inherit;">740,</em><i> Income Taxes</i> (ASC <em style="font: inherit;">740</em>). Under this method, the Company determines tax assets and liabilities based upon the differences between the financial statement carrying amounts and the tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to affect taxable income. The tax consequences of most events recognized in the financial statements are included in determining income taxes currently payable. However, because tax laws and financial accounting standards differ in their recognition and measurement of assets, liabilities and equity, revenues, expenses, gains and losses, differences arise between the amount of taxable income and pretax financial income for a year and between the tax basis of assets or liabilities and their reported amounts in the financial statements. Because the Company assumes that the reported amounts of assets and liabilities will be recovered and settled, respectively, a difference between the tax basis of an asset or liability and its reported amount in the balance sheet will result in a taxable or a deductible amount in some future years when the related liabilities are settled or the reported amounts of the assets are recovered, giving rise to a deferred tax asset or liability. The Company establishes a valuation allowance for any portion of its deferred tax assets that the Company believes&#160;<em style="font: inherit;"> may </em><em style="font: inherit;">not</em> be recognized.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">ASC <em style="font: inherit;">740</em> also clarifies the accounting for uncertainty in income taxes recognized in an enterprise&#8217;s financial statements by requiring that individual tax positions are recorded only when they meet a more-likely-than-<em style="font: inherit;">not</em> criterion. The Company recognizes the effect of income tax positions only if sustaining those positions is more likely than <em style="font: inherit;">not.</em> The Company records penalties and interest related to unrecognized tax benefits in income taxes in the Company&#8217;s Consolidated Statements of Income.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Stock-based compensation</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for stock-based compensation in accordance with ASC <em style="font: inherit;">718,</em><i> Compensation&#8212;Stock Compensation</i> (ASC <em style="font: inherit;">718</em>). Under the fair value recognition provisions of ASC <em style="font: inherit;">718,</em> the Company measures stock-based compensation cost at the grant date fair value and recognizes the compensation expense over the requisite service period, which is the vesting period, using a straight-line attribution method. The amount of stock-based compensation expense recognized during a period is based on the portion of the awards that are ultimately expected to vest. The Company accounts for forfeitures as they occur. Ultimately, the total expense recognized over the vesting period will only be for those awards that vest. The Company&#8217;s awards are <em style="font: inherit;">not</em> eligible to vest early in the event of retirement, however, the awards vest early in the event of a change in control.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">In determining the compensation cost of the options granted, the fair value of options granted has been estimated on the date of grant using the Black-Scholes option-pricing model.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Advertising costs</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Advertising is expensed as incurred and was approximately $11.5&#160;million, $13.0 million and $11.8 million for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, respectively.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Research and development</b></i></p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Research and development expenses consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements 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 <em style="font: inherit;">350</em>-<em style="font: inherit;">40,</em> <i>Intangibles - Goodwill and Other, Internal-Use Software</i>. Research and development costs were approximately $36.9&#160;million, $32.7 million and $28.7 million for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, respectively.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b/></i></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Foreign currency translation/transactions</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company translated the balance sheets of its foreign subsidiaries at period-end exchange rates and the income statement at the average exchange rates in effect throughout the period. The Company has recorded the translation adjustment as a separate component of consolidated shareholders&#8217; equity. Foreign currency transaction gains and losses are recognized in the consolidated statements of comprehensive income.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;">&#160;</p>


   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;"/>
   <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b/></i></p>
   <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Recently adopted accounting pronouncements</b></i></p> <p style="margin: 0 29.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">During the <em style="font: inherit;">first</em> quarter of <em style="font: inherit;">2020,</em> the Company adopted the Financial Accounting Standards Board (FASB) Accounting Standards Update (ASU) <em style="font: inherit;">2016</em>-<em style="font: inherit;">13,</em> <i>Financial Instruments &#8211; Credit Losses</i>, which is intended to provide financial statement users with more decision-useful information about the expected credit losses on financial instruments held by a reporting entity at each reporting date. The adoption of this guidance had <em style="font: inherit;">no</em> material impact on our consolidated financial statements.</p> <p style="margin: 0 29.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#160;</p> <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">During the <em style="font: inherit;">first</em> quarter of <em style="font: inherit;">2019,</em> the Company adopted the FASB ASU <em style="font: inherit;">2016</em>-<em style="font: inherit;">02,</em>&#160;<i>Leases&#160;</i>(ASC <em style="font: inherit;">842</em>), which introduces the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company has adopted the new lease standard using the new transition option issued under the amendments in ASU <em style="font: inherit;">2018</em>-<em style="font: inherit;">11,</em>&#160;<i>Leases</i>, which allowed the Company to continue to apply the legacy guidance in Accounting Standards Codification (ASC) <em style="font: inherit;">840,</em>&#160;<i>Leases</i>, in the comparative periods presented in the year of adoption.&#160;The Company elected the package of practical expedients permitted under the transition guidance within the new standard, which among other things, allowed the Company to carry forward the historical lease classification. The Company made an accounting policy election to keep leases with an initial term of <em style="font: inherit;">12</em> months or less off of the balance sheet. The Company will recognize those lease payments in the Consolidated Statements of Comprehensive Income on a straight-line basis over the lease term. The impact of the adoption was an increase to the Company&#8217;s operating lease assets and liabilities on <em style="font: inherit;"> January 1, 2019 </em>of $13.1 million.</p> <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#160;</p> <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Recently issued accounting pronouncements</b></i></p> <p style="margin: 0 29.7pt 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#160;</p> <p style="margin: 0 29.7pt 0 -3pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In <em style="font: inherit;"> December 2019, </em>the FASB issued ASU <em style="font: inherit;">2019</em>-<em style="font: inherit;">12,</em> <i>Income Taxes</i>, which is intended to simplify the accounting for income taxes. This guidance will be effective for fiscal years beginning after <em style="font: inherit;"> December 15, 2020 </em>and interim periods within those fiscal years with early adoption permitted. The Company is evaluating the impact of future adoption of this guidance on its consolidated financial statements, but does <em style="font: inherit;">not</em> expect the impact to be material.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:justify;text-indent:27pt;">&#160;</p>



   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <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://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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024198424">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Revenue<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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_RevenueFromContractWithCustomerTextBlock', window );">Revenue from Contract with Customer [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">3</em> &#8211; Revenue</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#160;accounts for revenue in accordance with ASC <em style="font: inherit;">606,</em> <i>Revenue from Contracts with Customers</i>. The Company provides quality, quick-turn prototyping and on-demand manufacturing services. As a result, the majority of revenue recognized in a reporting period is based on completed, invoiced contracts.&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">A performance obligation is a promise in a contract to transfer a distinct good or service to the customer, and is the unit of account in ASC <em style="font: inherit;">606.</em> The majority of the Company&#8217;s CNC machining, <em style="font: inherit;">3D</em> printing, and sheet metal contracts have a single performance obligation. The majority of the Company&#8217;s injection molding contracts have multiple performance obligations including <em style="font: inherit;">one</em> obligation to produce the mold and a <em style="font: inherit;">second</em> obligation to produce parts. For injection molding contracts with multiple performance obligations, we allocate revenue to each performance obligation based on its relative standalone selling price. We generally determine standalone selling price based on the price charged to customers.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company manufactures parts that have <em style="font: inherit;">no</em> alternative use to the Company since the parts are custom made to specific customer orders, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these <em style="font: inherit;">two</em> criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations using the estimated total time necessary to complete the parts per the customer's order and an estimate of inventory and production costs incurred to date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue by geographic region for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em> was as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 46%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Revenue:</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></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; margin-left: 18pt;">United States</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">345,708</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">360,205</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">350,535</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; margin-left: 18pt;">Europe</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">74,796</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">82,805</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">80,889</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; margin-left: 18pt;">Japan</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: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; 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);">13,891</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; 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);">15,718</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; 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);">14,172</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 18pt;">Total revenue</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: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">434,395</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">458,728</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">445,596</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue by product line for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em> was as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 46%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Revenue:</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></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; margin-left: 18pt;">Injection Molding</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">217,992</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">217,415</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">210,523</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; margin-left: 18pt;">CNC Machining</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">131,587</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">155,473</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">153,521</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; margin-left: 18pt;">3D Printing</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">62,502</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">61,352</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">53,342</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; margin-left: 18pt;">Sheet Metal</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">18,838</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21,000</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">24,998</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; margin-left: 18pt;">Other Revenue</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: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; 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);">3,476</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; 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);">3,488</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; 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);">3,212</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 18pt;">Total revenue</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: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">434,395</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">458,728</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">445,596</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#160;generally expenses sales commissions when incurred because the amortization period would have been <em style="font: inherit;">one</em> year or less. These costs are recorded within marketing and sales expenses. The value of unsatisfied performance obligations for contracts with an original expected length of <em style="font: inherit;">one</em> year or less is <em style="font: inherit;">not</em> material.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin-bottom:0pt;margin-left:22.2pt;margin-right:14.7pt;margin-top:0pt;text-align:center;">&#160;</p>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <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_RevenueFromContractWithCustomerTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts.</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 606<br> -URI http://asc.fasb.org/topic&amp;trid=49130388<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 10<br> -URI http://asc.fasb.org/extlink&amp;oid=121604090&amp;loc=SL49130551-203045<br><br>Reference 3: 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 13<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121604090&amp;loc=SL49130556-203045<br><br>Reference 4: 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 12<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121604090&amp;loc=SL49130554-203045<br><br>Reference 5: 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 9<br> -URI http://asc.fasb.org/extlink&amp;oid=121604090&amp;loc=SL49130550-203045<br><br>Reference 6: 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 12<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=121604090&amp;loc=SL49130554-203045<br><br>Reference 7: 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 12<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121604090&amp;loc=SL49130554-203045<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 12<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=121604090&amp;loc=SL49130554-203045<br><br>Reference 9: 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 15<br> -URI http://asc.fasb.org/extlink&amp;oid=121604090&amp;loc=SL49130558-203045<br><br>Reference 10: 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 12<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=121604090&amp;loc=SL49130554-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_RevenueFromContractWithCustomerTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407021710136">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Net Income Per Common Share<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">4</em> &#8211; Net Income Per Common Share</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">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 the 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 and other stock-based awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table presents the calculation of net income per basic and diluted share attributable to common shareholders:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></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; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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;">Net Income</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">50,867</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;">63,655</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;">76,588</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>&#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;, 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;">Basic - weighted-average shares outstanding:</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;">26,737,425</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;">26,866,985</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;">26,982,614</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;">Effect of dilutive securities:</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></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: 18pt;">Employee stock options and other</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">158,932</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">182,438</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">296,202</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Diluted - weighted-average shares outstanding:</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);">&#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: 3px double rgb(0, 0, 0);">26,896,357</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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);">&#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: 3px double rgb(0, 0, 0);">27,049,423</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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);">&#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: 3px double rgb(0, 0, 0);">27,278,816</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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;">Net income per share attributable to common shareholders:</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></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; margin-left: 18pt;">Basic</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: 1px solid rgb(0, 0, 0);">$</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: 1px solid rgb(0, 0, 0);">1.90</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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: 1px solid rgb(0, 0, 0);">2.37</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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: 1px solid rgb(0, 0, 0);">2.84</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 18pt;">Diluted</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">1.89</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">2.35</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">2.81</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#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=6371337&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=6371337&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>nonnum: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>26
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407031347752">
<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">12 Months Ended</th>
</tr>
<tr><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_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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">5</em> &#8211; Goodwill and Other Intangible Assets</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The changes in the carrying amount of goodwill for the years ended <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em> were as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 25%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Dec. 31, 2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Goodwill acquired during 2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" 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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Dec. 31, 2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Goodwill acquired during 2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Dec. 31, 2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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><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;, 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;">United States</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;">123,883</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: 12%; 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; margin-left: 0pt;">$</td><td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">123,883</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: 12%; 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; 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;">123,883</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;">Europe</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,239</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: 12%; 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 class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,239</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: 12%; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,239</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;">Japan</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);">&#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: 1px solid rgb(0, 0, 0);">630</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#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: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</td><td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" 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);">630</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#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: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#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: 1px solid rgb(0, 0, 0);">630</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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 goodwill</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: 3px double rgb(0, 0, 0);">$</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);">128,752</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" 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);">128,752</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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);">128,752</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Intangible assets other than goodwill for the years ended <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em> were as follows:&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table 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;, Times, serif; text-indent: 0px;"><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: 20%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31, 2020</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31, 2019</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#160;</b></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; width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Weighted Average Useful Life</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#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: 20%;"> <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: 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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Gross</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Accumulated Amortization</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Net</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Gross</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Accumulated Amortization</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Net</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Useful Life (in years)</em></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%;"><b><em style="font: inherit;">Remaining (in years)</em></b></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="background-color: rgb(204, 238, 255); vertical-align: bottom"><td colspan="4" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 22%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><em style="font: inherit;">Intangible Assets with finite lives:</em></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#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: 20%">Marketing assets</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$930</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$(620</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$310</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$930</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$(527</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$403</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">10.0</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">3.3</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#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: 20%">Non-compete agreement</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">270</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">(238</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">32</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">270</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">(222</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">48</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">2.0 - 5.0</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">2.3</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#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: 20%">Software technology</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">13,229</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">(3,645</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">9,584</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">13,229</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">(2,275</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">10,954</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">10.0</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">7.3</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#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: 20%">Customer relationships</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">10,070</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">(5,646</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">4,424</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">10,070</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">(4,106</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">5,964</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">6.0 - 9.0</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">2.8</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#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: 20%;"> <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%; 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);">$</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: 3px double rgb(0, 0, 0);">24,499</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(10,149</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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: 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">14,350</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">25,829</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(8,460</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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: 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,369</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><em style="font: inherit;">&#160;</em></td><td style="padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Amortization expense for intangible assets for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em> was $3.0 million, $3.5 million and $3.2 million, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets is as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <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: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 82%;"> <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: 1px solid rgb(0, 0, 0);"><b><em style="font: inherit;">Estimated Amortization Expense</em></b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt">2021</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">$</td><td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">3,016</td><td style="width: 1%; 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">2022</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">3,016</td><td style="width: 1%; 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">2023</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">2,813</td><td style="width: 1%; 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">2024</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">1,400</td><td style="width: 1%; 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">2025</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">1,369</td><td style="width: 1%; 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">Thereafter</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: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">2,736</td><td style="width: 1%; 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;"> <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: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">14,350</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;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_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>nonnum: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>27
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024072648">
<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">12 Months Ended</th>
</tr>
<tr><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_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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">6</em> &#8211; Fair Value Measurements</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">ASC <em style="font: inherit;">820,</em><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 which 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"><i>Level&#160;</i><em style="font: inherit;">1&#8212;Quoted</em> prices in active markets for identical assets or liabilities.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"><i>Level&#160;</i><em style="font: inherit;">2&#8212;Observable</em> inputs other than Level&#160;<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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;"><i>Level&#160;</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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 45pt; text-align: left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#8217;s cash equivalents measured at fair value as of <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em>, respectively, consist of money market mutual funds. The Company determines the fair value of these financial assets using Level&#160;<em style="font: inherit;">1</em> inputs.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following tables summarizes financial assets as of <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em> measured at fair value on a recurring basis:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2019</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 22%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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><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;, 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash and cash equivalents</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Money market mutual funds</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: 1px solid rgb(0, 0, 0);">$</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);">55,378</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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);">68,962</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 9pt;">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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">55,378</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">68,962</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <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=117815213&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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407119655528">
<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">12 Months Ended</th>
</tr>
<tr><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_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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">7</em> &#8211; Marketable Securities</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. The securities are categorized as held-to-maturity and are recorded at amortized cost. Categorization as held-to-maturity is based on the Company&#8217;s ability and intent to hold these securities to maturity. Information regarding the Company&#8217;s short-term and long-term marketable securities as of <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em> is as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; 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;, Times, serif; font-size: 10pt; width: 48%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Amortized Cost</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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;, 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; 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;">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; 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;">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; 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;">(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; 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;">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;">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: 10%; 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: 10%; 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: 10%; 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: 10%; 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. 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;">&#160;</td><td style="width: 10%; 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;">&#160;</td><td style="width: 10%; 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;">&#160;</td><td style="width: 10%; 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;">&#160;</td><td style="width: 10%; 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; padding: 0; margin: 0">Commercial paper</td><td 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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2,499</td><td 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: 10%; 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: 10%; 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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2,499</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;"> <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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">5,395</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">93</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">5,488</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Total marketable securities</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">93,445</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">393</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(23</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">93,815</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2019</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 48%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Amortized Cost</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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;, 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; 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;">6,274</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(7</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,268</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">26,944</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">80</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(12</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">27,012</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. 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;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,204</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(3</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,210</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">Commercial paper</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">3,491</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">-</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">-</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">3,491</td><td style="width: 1%; 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;"> <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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">1,484</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">22</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">1,506</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Total marketable securities</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">48,397</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">112</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(22</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">48,487</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">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. government agency securities, U.S. municipal securities, commercial paper and certificates of deposit are primarily determined using dealer quotes or quoted market prices for similar securities (Level <em style="font: inherit;">2</em>).</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt;">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.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The <em style="font: inherit;"> December 31, 2020</em>&#160;balance of held-to-maturity debt securities by contractual maturity is shown in the following table at amortized cost. 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#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;, Times, serif; text-indent: 0px;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 83%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: &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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">34,088</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">59,357</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Total marketable securities</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">93,445</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#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_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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024552184">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Property and Equipment<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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_PropertyPlantAndEquipmentDisclosureTextBlock', window );">Property, Plant and Equipment Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">8</em> &#8211; Property and Equipment</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Property and equipment consists of the following:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#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;, Times, serif; text-indent: 0px;"><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="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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 66%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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="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;">Land</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">14,028</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">14,098</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;">Buildings and improvements</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">77,285</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">75,843</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;">Machinery and equipment</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">221,301</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">208,954</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;">Computer hardware and software</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">79,207</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">24,953</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;">Leasehold improvements</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,821</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,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;">Construction in progress</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">33,780</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">54,313</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">433,422</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">385,502</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;">Accumulated depreciation and amortization</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(150,756</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(121,790</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">Property and equipment, net</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">282,666</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">263,712</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;Depreciation expense for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em> was $29.6 million, $27.4 million and $23.5 million, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;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_PropertyPlantAndEquipmentDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.</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 958<br> -SubTopic 360<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=120429125&amp;loc=d3e99893-112916<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -URI http://asc.fasb.org/topic&amp;trid=2155823<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 958<br> -SubTopic 360<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=120429125&amp;loc=SL120174063-112916<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 958<br> -SubTopic 360<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=120429125&amp;loc=d3e99779-112916<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>30
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407031549016">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Inventory<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">9</em> &#8211; Inventory</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Inventory consists primarily of raw materials, which are recorded at the lower of cost or market using the average-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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#8217;s inventory consists of the following:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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;, Times, serif; text-indent: 0px;"><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="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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 66%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Total inventory</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">11,122</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">10,319</td><td style="width: 1%; 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Allowance for obsolescence</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(260</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(244</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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">Inventory, net of allowance</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">10,862</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; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">10,075</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <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>nonnum: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>31
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024551064">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 10 - Financing Obligations<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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_DebtDisclosureTextBlock', window );">Debt Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">10</em> &#8211; Financing Obligations</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company had no financing obligations as of <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em>.<i>&#160;</i></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;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_DebtDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 information about short-term and long-term debt arrangements, which includes amounts of borrowings under each line of credit, note payable, commercial paper issue, bonds indenture, debenture issue, own-share lending arrangements and any other contractual agreement to repay funds, and about the underlying arrangements, rationale for a classification as long-term, including repayment terms, interest rates, collateral provided, restrictions on use of assets and activities, whether or not in compliance with debt covenants, and other matters important to users of the financial statements, such as the effects of refinancing and noncompliance with debt covenants.</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 470<br> -URI http://asc.fasb.org/topic&amp;trid=2208564<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>32
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407030390408">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Employee Benefit Plans<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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_PensionAndOtherPostretirementBenefitsDisclosureTextBlock', window );">Retirement Benefits [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">11</em> &#8211; Employee Benefit Plans</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company maintains a <em style="font: inherit;">401</em>(k) retirement plan that covers employees in the United States. Under the plan, a full-time or regular part-time (over 20 hours/week) employee becomes a participant after completing <span style="-sec-ix-hidden:c68815524">three</span> months of employment. Employees <em style="font: inherit;"> may </em>elect to contribute up to 50 percent of regular gross pay, subject to federal law limits on the dollar amount that participants <em style="font: inherit;"> may </em>contribute to the plan, each calendar year. The Company matches part of the employee contributions and <em style="font: inherit;"> may </em>make a discretionary contribution to the plan. Total employer contributions were approximately $3.3&#160;million, $3.1 million and $2.7 million for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018,</em> respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company also sponsors a defined contribution retirement plan that covers the employees in the United Kingdom. Total employer contributions were approximately $0.5&#160;million for the year ended <em style="font: inherit;"> December 31, 2020 </em>and approximately&#160;$0.3 million&#160;in each of the years ended <em style="font: inherit;"> December 31, 2019 </em>and <em style="font: inherit;">2018.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;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_PensionAndOtherPostretirementBenefitsDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 retirement 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/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 55<br> -Paragraph 17<br> -URI http://asc.fasb.org/extlink&amp;oid=118257860&amp;loc=d3e4179-114921<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section S99<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=21916913&amp;loc=d3e273930-122802<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=118255775&amp;loc=d3e1928-114920<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (o)<br> -URI http://asc.fasb.org/extlink&amp;oid=118255775&amp;loc=d3e1928-114920<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (p)<br> -URI http://asc.fasb.org/extlink&amp;oid=118255775&amp;loc=d3e1928-114920<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 70<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=49170846&amp;loc=d3e28014-114942<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -URI http://asc.fasb.org/topic&amp;trid=2235017<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 60<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=6414203&amp;loc=d3e39689-114964<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(iv)(03)<br> -URI http://asc.fasb.org/extlink&amp;oid=118255775&amp;loc=d3e1928-114920<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (q)<br> -URI http://asc.fasb.org/extlink&amp;oid=118255775&amp;loc=d3e1928-114920<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (r)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=118255775&amp;loc=d3e1928-114920<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=118255775&amp;loc=d3e1928-114920<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (l)<br> -URI http://asc.fasb.org/extlink&amp;oid=118255775&amp;loc=d3e1928-114920<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (r)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=118255775&amp;loc=d3e1928-114920<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>33
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024295896">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Stock-based Compensation<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">12</em> &#8211; Stock-Based Compensation</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has <em style="font: inherit;">two</em> equity incentive plans: the <em style="font: inherit;">2000</em> Stock Option Plan (<em style="font: inherit;">2000</em> Plan) and the <em style="font: inherit;">2012</em> Long-Term Incentive Plan (<em style="font: inherit;">2012</em> Plan). Upon the adoption of the <em style="font: inherit;">2012</em> Plan on <em style="font: inherit;"> February&#160;</em><em style="font: inherit;">21,</em> <em style="font: inherit;">2012,</em> all shares that were reserved but <em style="font: inherit;">not</em> issued under the <em style="font: inherit;">2000</em> Plan were assumed by the <em style="font: inherit;">2012</em> Plan. <em style="font: inherit;">No</em> additional&#160;awards will be issued under the <em style="font: inherit;">2000</em> Plan. Under the <em style="font: inherit;">2012</em> Plan, the Company has the ability to grant stock options, stock appreciation rights (SARs), restricted stock, performance stock, 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:c68815550">ten</span> years from the date of grant. The compensation committee of the board of directors <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. Restricted stock is valued at fair market value on the date of grant.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#160;</b></p>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">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 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:c68815556">six</span>-month offering periods with a single purchase period, and 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. The Company determines the fair value stock-based compensation related to its ESPP in accordance with ASC <em style="font: inherit;">718</em> using the component measurement approach and the Black-Scholes standard option pricing model.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Employees purchased 42,235 and 41,615 shares of common stock under the ESPP at an average exercise price of $85.85 and $86.70 during <em style="font: inherit;">2020</em>&#160;and <em style="font: inherit;">2019</em>, respectively. As of <em style="font: inherit;"> December 31, 2020</em>, 1,126,595&#160;shares remained available for future issuance under the ESPP.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company determines its stock-based compensation in accordance with ASC <em style="font: inherit;">718,</em> which requires the measurement and recognition of compensation expense for all share-based payment awards made to employees and non-employee directors based on fair value.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Determining the appropriate fair value model and calculating the fair value of stock option grants requires the input of subjective assumptions. The Company uses the Black-Scholes option pricing model to value its stock option awards. Stock-based compensation expense is calculated using the Company&#8217;s best estimates, which involve inherent uncertainties and the application of management&#8217;s judgment. Significant estimates include its expected term and&#160;stock price volatility.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The expected term of stock options is estimated from the vesting period of the award and represents the weighted average period that&#160;the Company's&#160;stock options are expected to be outstanding. The Company estimates the volatility of its stock price based on the historic volatility of its common stock. The Company bases the risk-free interest rate that it uses in the Black-Scholes option pricing model on U.S.&#160;Treasury instruments with maturities similar to the expected term of the award being valued. The Company has never paid and does <em style="font: inherit;">not</em> anticipate paying, any cash dividends in the foreseeable future and, therefore, the Company uses an expected dividend yield of <em style="font: inherit;">zero</em> in the option pricing model. The Company accounts for forfeitures as they occur. The Company allocates stock-based compensation expense on a straight-line basis over the requisite service period.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes stock-based compensation expense for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, respectively:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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;">Stock options and other</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">13,327</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,591</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,113</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;">Employee stock purchase plan</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,346</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,190</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; 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: 10pt; padding-bottom: 1px; 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;">Total stock-based compensation expense</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">14,673</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,781</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,928</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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></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;">Cost of revenue</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,451</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,056</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,543</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;">Operating expenses:</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="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="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="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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Marketing and sales</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,121</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,632</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,942</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; margin-left: 18pt;">Research and development</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,440</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,851</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,517</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; margin-left: 18pt;">General and administrative</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,661</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">4,242</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">5,926</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Total stock-based compensation expense</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">14,673</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,781</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,928</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Stock Options</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table provides the assumptions used in the Black-Scholes option pricing model for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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.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><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: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.35 - 2.58%</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: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.52 - 3.07%</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;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">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="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;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">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><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: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">42.52 - 42.74%</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: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">41.68 - 42.22%</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;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0%</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;">Weighted average grant date fair value</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;">&#160;</td><td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$45.32</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;">&#160;</td><td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$47.84</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;">&#160;</td><td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$50.08</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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes stock option activity and the weighted average exercise price for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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="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; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at January 1, 2018</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;">399,055</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;">51.13</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; margin-left: 9pt;">Granted</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;">36,600</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;">110.59</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; margin-left: 9pt;">Exercised</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;">(155,765</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">38.92</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; margin-left: 9pt;">Cancelled</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(27,274</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">74.35</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Options outstanding at December 31, 2018</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;">252,616</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;">64.71</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; margin-left: 9pt;">Granted</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;">53,708</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;">105.81</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; margin-left: 9pt;">Exercised</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;">(16,079</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">48.67</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; margin-left: 9pt;">Cancelled</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(13,979</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">89.50</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Options outstanding at December 31, 2019</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;">276,266</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;">72.38</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; margin-left: 9pt;">Granted</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;">60,065</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;">105.79</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; margin-left: 9pt;">Exercised</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;">(68,958</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">57.00</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; margin-left: 9pt;">Cancelled</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);">&#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: 1px solid rgb(0, 0, 0);">(37,842</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">67.92</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">229,531</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; padding-bottom: 3px; 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></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;">Exercisable 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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">94,318</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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;">69.36</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The outstanding options have a term of <span style="-sec-ix-hidden:c68815577">10</span> years. For employees, options that have been granted become exercisable ratably over the vesting period, which is generally a <span style="-sec-ix-hidden:c68815578">four</span>- or <span style="-sec-ix-hidden:c68815579">five</span>-year period, 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 directors, options generally become exercisable in full on the <em style="font: inherit;">first</em> anniversary of the grant date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The total intrinsic value of options exercised during the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, was $5.4 million, $0.9 million and $13.0 million, respectively. The aggregate intrinsic value represents the cumulative difference between the fair market value of the underlying common stock and the option exercise prices.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">For options outstanding at <em style="font: inherit;"> December 31, 2020</em>, the weighted-average remaining contractual term was 6.8 years and the aggregate intrinsic value was $15.4 million. For options exercisable at <em style="font: inherit;"> December 31, 2020</em>, the weighted-average remaining contractual term was 5.0 years and the aggregate intrinsic value was $7.9 million. Refer to the table below for additional information.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:18pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes information about stock options outstanding at <em style="font: inherit;"> December 31, 2020</em>:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 25%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="8" 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: 31%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Options Outstanding, Vested and Expected to Vest</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="5" 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Options Exercisable</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 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: 10pt; width: 25%; border-bottom: thin solid rgb(0, 0, 0);"><b>Range of Exercise Prices</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="1" 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%;"><b>Number Outstanding</b></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="1" 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%;"><b>Weighted Average Remaining Contractual Life</b></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%;"><b>Weighted Average Exercise Price ($)</b></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="1" 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%;"><b>Number Exercisable</b></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%;"><b>Weighted Average Exercise Price ($)</b></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="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr class="finHeading" 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: 25%">$7.76 to $31.43</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">5,964</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">1.35</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">30.58</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">5,964</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">30.58</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</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: 10pt; width: 25%">$31.44 to $66.87</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">78,482</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">4.81</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">57.51</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">56,032</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">57.18</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td></tr>
<tr class="finHeading" 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: 25%">$66.88 to $96.20</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">10,591</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">4.42</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">74.05</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">9,343</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">71.09</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</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: 10pt; width: 25%">$96.21 to $123.10</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">134,494</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">8.45</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">106.81</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">22,979</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">108.41</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td></tr>
</tbody></table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The fair value of share-based payment transactions is recognized in the consolidated statements of comprehensive income. As of <em style="font: inherit;"> December 31, 2020</em>, there was $4.2 million of total unrecognized compensation cost related to unvested stock options, which is expected to be recognized over a weighted average period of 2.6 years. The total fair value of options vested was $1.8 million, $1.5 million and $1.5 million for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Restricted Stock</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The <em style="font: inherit;">2012</em> Plan provides for the award of restricted stock or restricted stock units. Restricted stock awards are share settled and restrictions lapse ratably over the vesting period, which is generally a <span style="-sec-ix-hidden:c68815600">four</span>- or <span style="-sec-ix-hidden:c68815601">five</span>-year period, 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 directors, restrictions generally lapse in full on the <em style="font: inherit;">first</em> anniversary of the grant date.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes restricted stock activity for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>:&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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;, Times, serif; text-indent: 0px;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Stock Awards</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at January 1, 2018</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">334,831</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63.29</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; margin-left: 9pt;">Granted</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">106,855</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115.41</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; margin-left: 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(86,191</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63.64</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; margin-left: 9pt;">Forfeited</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);">&#160;</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: 1px solid rgb(0, 0, 0);">(31,574</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">68.67</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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, 2018</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">323,921</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">79.85</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; margin-left: 9pt;">Granted</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115,471</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">106.35</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; margin-left: 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(92,597</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">77.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="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; margin-left: 9pt;">Forfeited</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);">&#160;</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: 1px solid rgb(0, 0, 0);">(31,822</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">87.58</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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, 2019</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">314,973</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">89.55</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; margin-left: 9pt;">Granted</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">108,179</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">111.76</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; margin-left: 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(101,941</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">84.70</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; margin-left: 9pt;">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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(14,012</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">94.24</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">307,199</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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: 14%; 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; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#160;</p>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font: inherit;"> December 31, 2020</em>, there was $21.2 million of unrecognized compensation expense related to non-vested restricted stock, which is expected to be recognized over a weighted-average period of 2.4 years.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Performance Stock</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Performance Stock Units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between <span style="-sec-ix-hidden:c68815609">0</span> percent and 150 percent of that target number capable of being earned and vesting at the end of a <span style="-sec-ix-hidden:c68815611">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.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table summarizes performance stock activity for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>:&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt -9pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Stock Awards</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; 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;, 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="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="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; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at January 1, 2018</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;">25,707</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;">58.35</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; margin-left: 9pt;">Granted</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;">20,006</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;">105.75</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; margin-left: 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Performance change</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">6,427</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">58.35</td><td style="width: 1%; 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">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: 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; margin-left: 0pt; 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; 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="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, 2018</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;">52,140</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;">76.54</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; margin-left: 9pt;">Granted</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;">21,434</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;">104.99</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; margin-left: 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(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: 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;">(61,816</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">88.06</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; margin-left: 9pt;">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: 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; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">(2,375</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">105.37</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;">Performance stock at December 31, 2019</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;">9,383</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;">58.35</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; margin-left: 9pt;">Granted</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;">&#160;</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(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: 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;">(7,113</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58.35</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; margin-left: 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="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: 9pt;">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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(2,270</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">58.35</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">19,956</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">118.66</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font: inherit;"> December 31, 2020</em>, there was $1.7 million of unrecognized compensation expense related to non-vested performance stock, which is expected to be recognized over a weighted-average period of 2.1 years. Unrecognized stock-based compensation costs related to non-vested performance stock in <em style="font: inherit;">2020</em> when compared to <em style="font: inherit;">2019</em> increased $1.6 million driven by an increase in the number of shares expected to vest at the end of future performance periods.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Employee Stock Purchase Plan</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The following table presents the assumptions used to estimate the fair value of the ESPP during the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="7" style="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></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="1" 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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="1" 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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="1" 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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#160;</td><td>&#160;</td><td style="text-align: center;">&#160;</td><td style="text-align: center;">&#160;</td><td style="text-align: center;">&#160;</td><td style="text-align: center;">&#160;</td><td style="text-align: center;">&#160;</td><td style="text-align: center;">&#160;</td><td style="text-align: center;">&#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;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0.12 - 0.17%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">1.59 - 2.35%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">2.06 - 2.33%</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;">Expected life (months)</p> </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.00</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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.00</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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.00</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;">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: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">50.85 - 59.99%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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.63 - 53.57%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">31.50 - 37.36%</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;">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: 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; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#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>nonnum: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>34
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407026483496">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Leases<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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_LesseeOperatingLeasesAndFinancingLeasesTextBlock', window );">Lessee, Operating Leases and Financing Leases [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">13</em> &#8211; Leases</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for leases in accordance with ASC <em style="font: inherit;">842,</em> <i>Leases</i>.&#160;The Company has operating leases for office space, manufacturing facilities and certain company vehicles and equipment and finance leases for certain company equipment. The leases have remaining lease terms of <span style="-sec-ix-hidden:c68815624">one</span> year to <span style="-sec-ix-hidden:c68815625">eight</span> years. Leases with an initial term of <em style="font: inherit;">12</em> months or less are <em style="font: inherit;">not</em> recorded on the balance sheet; we recognize lease expense for these leases on a straight-line basis over the lease term. For purposes of calculating operating lease liabilities, lease terms <em style="font: inherit;"> may </em>be deemed to include options to extend or terminate the lease when it is reasonably certain that the Company will exercise that option. As of <em style="font: inherit;"> December 31, 2020</em>, the operating lease liability does <em style="font: inherit;">not</em> include any options to extend or terminate leases.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease assets, current operating lease liabilities and long-term operating lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date. Finance leases are included in finance lease assets, current finance lease liabilities and long-term finance lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date. The majority of the Company&#8217;s leases do <em style="font: inherit;">not</em> provide an implicit rate of return, therefore, the Company uses its incremental borrowing rate based on the information available at commencement date in determining the present value of lease payments. Lease agreements that contain non-lease components, with the exception of certain real estate leases, are accounted for as a single lease component.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Supplemental balance sheet information related to leases was as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 20%; margin-left: 27pt; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></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; width: 62%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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;">Operating lease 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;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,855</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,425</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>&#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;, 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;">Current operating lease liabilities</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,272</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,340</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;">Long-term operating lease liabilities</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);">&#160;</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: 1px solid rgb(0, 0, 0);">7,586</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">8,565</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">Total operating lease liabilities</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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">10,858</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">11,905</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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></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><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: &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;">Finance lease 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;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,396</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: 16%; 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>&#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(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;">Current finance lease liabilities</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">552</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: 16%; 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="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;">Long-term finance lease liabilities</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);">&#160;</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: 1px solid rgb(0, 0, 0);">1,919</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">Total finance lease liabilities</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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">2,471</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Lease expense is recognized on a straight-line basis over the lease term, with variable payments recognized in the period those payments are incurred. The components of lease expense for the periods reported were as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 15%; margin-left: 27pt; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr style="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="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><b>Twelve Months Ended December 31,</b></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="vertical-align: bottom;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 64%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><b>2020</b></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><b>2019</b></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><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;">Operating lease cost</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,191</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,960</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);"><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;">Finance lease cost:</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="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="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="vertical-align: bottom; background-color: rgb(204, 238, 255);"><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: 18pt;">Amortization of right-of-use 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;">$</td><td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">143</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: 15%; 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="vertical-align: bottom; background-color: rgb(255, 255, 255);"><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: 18pt;">Interest on lease obligations</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: 15%; 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;">&#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: 15%; 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="vertical-align: bottom; background-color: rgb(204, 238, 255);"><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;">Variable lease cost</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);">&#160;</td><td style="width: 15%; 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);">989</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</td><td style="width: 15%; 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);">1,039</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><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: 9pt;">Total lease cost</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: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">5,325</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">4,999</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 85%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p>


   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Maturities of operating and finance lease liabilities as of <em style="font: inherit;"> December 31, 2020</em> were as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 62%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Operating Leases</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Finance Leases</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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><span style="text-decoration: underline; ">Year Ending December 31,</span></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(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;">2021</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,915</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">561</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;">2022</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,246</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">561</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;">2023</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,460</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,371</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;">2024</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">540</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: 16%; 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="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;">2025</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">494</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: 16%; 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="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;">After 2025</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: 1px solid rgb(0, 0, 0);">&#160;</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: 1px solid rgb(0, 0, 0);">1,751</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Total future minimum lease payments</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,406</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,493</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Less interest</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: 1px solid rgb(0, 0, 0);">&#160;</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: 1px solid rgb(0, 0, 0);">(548</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px solid rgb(0, 0, 0);">&#160;</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: 1px solid rgb(0, 0, 0);">(22</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">Present value of lease liabilities</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">10,858</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">2,471</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font: inherit;"> December 31, 2020</em>, we have <em style="font: inherit;">no</em> operating or finance leases that have <em style="font: inherit;">not</em> yet commenced.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:28.8pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Weighted average remaining lease term and&#160;discount rate&#160;was as follows:&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr style="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="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b>December 31,</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b>2020</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b>2019</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 62%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Remaining Lease Term - operating leases (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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4.4</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4.8</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);"><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;">Weighted Average Remaining Lease Term - finance leases (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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><span style="-sec-ix-hidden:c68815085">2.5</span></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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></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);"><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;">Weighted Average Discount Rate - operating leases</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.6</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.6</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><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;">Weighted Average Discount Rate - finance leases</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><span style="-sec-ix-hidden:c68815089">0.5</span></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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><span style="-sec-ix-hidden:c68815090">-</span></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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Supplemental cash flow information related to leases was as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><em style="font: inherit;"><em style="font: inherit;">Twelve Months Ended December 31,</em></em></b></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; width: 62%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><em style="font: inherit;">2020</em></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><em style="font: inherit;">2019</em></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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;">Cash paid for amounts included in the measurement of lease liabilities:</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></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; margin-left: 9pt;">Operating cash flows from operating leases</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,426</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,020</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; margin-left: 9pt;">Operating cash flows from finance leases</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: 16%; 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;">&#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: 16%; 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="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: 9pt;">Financing cash flows from finance leases</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">154</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: 16%; 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>&#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(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;">Lease assets obtained in exchange for new operating lease liabilities</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,506</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,921</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;">Lease assets obtained in exchange for new financing lease liabilities</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,523</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 class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="width: 16%; 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>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:center;text-indent:28.8pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 80%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;">&#160;</p>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 operating leases of lessee and finance leases of lessee.</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_LesseeOperatingLeasesAndFinancingLeasesTextBlock</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>nonnum: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>35
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024147672">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 14 - Accumulated Other Comprehensive Loss<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">14</em> &#8211; Accumulated Other Comprehensive Loss</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Other comprehensive loss is comprised entirely of foreign currency translation adjustments. The following table presents the changes in accumulated other comprehensive loss balances for the years ending <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, respectively:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 55%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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;">Foreign currency translation adjustments</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></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; margin-left: 27pt; text-indent: -9pt;">Balance at beginning of period</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;">(7,018</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(8,492</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(5,234</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;">Other comprehensive (loss) income before reclassifications</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,598</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,474</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(3,258</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;">Amounts reclassified from accumulated other comprehensive income (loss)</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: 1px 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; 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: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; 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: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; 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: 10pt; padding-bottom: 1px; 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; margin-left: 27pt; text-indent: -9pt;">Net current-period other comprehensive (loss) income</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,598</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,474</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(3,258</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Balance at end of period</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">(3,420</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">(7,018</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">(8,492</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, 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_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>nonnum: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>36
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407031587608">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Income Taxes<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">15</em> &#8211; Income Taxes</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">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 years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, the Company recorded an income tax provision of $12.1 million, $17.5 million and $15.1 million, respectively. The effective income tax rate for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em> was 19.2 percent, 21.6 percent and 16.4 percent, respectively.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;"/>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The effective tax rate decreased by 2.4% for the year ended <em style="font: inherit;"> December 31, 2020</em>&#160;when compared&#160;to <em style="font: inherit;">2019</em> primarily due to an increase in tax benefits from the vesting of restricted stock and exercise of stock options and an increase in the research and development tax credit.&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The Tax Cuts and Jobs Act (the &#8220;Act&#8221;)&#160;was enacted on <em style="font: inherit;"> December 22, 2017. </em>The Act reduced the&#160;U.S. federal corporate tax rate from 35% to 21%, required companies to pay a transition tax on earnings of certain foreign subsidiaries that were previously tax deferred and creates new taxes on certain foreign sourced earnings. <em style="font: inherit;">No</em> additional income taxes have been provided for any remaining undistributed foreign earnings <em style="font: inherit;">not</em> subject to the transition tax, or any additional outside basis difference inherent in these entities, as these amounts continue to be indefinitely reinvested in foreign operations.&#160;</p>
   <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; 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; text-align: left; text-indent: 27pt;">The Coronavirus Aid, Relief, and Economic Security (CARES) Act was signed into law on <em style="font: inherit;"> March 27, 2020. </em>The CARES Act was meant to infuse companies with various income and payroll tax cash benefits to ease the impact of the pandemic. A technical correction to the Tax Cuts and Jobs Act of <em style="font: inherit;">2017</em> was included in the CARES Act allowing qualified improvement property to claim bonus depreciation for respective assets placed in service in <em style="font: inherit;">2018</em> and <em style="font: inherit;">2019.</em> The impact of the CARES Act to the Company was a $2.9 million reduction to income taxes payable and a corresponding increase to deferred tax liability. In addition, the Company has elected to defer deposits of the employer portion of the Social Security tax for the quarter ended <em style="font: inherit;"> March 31, 2020 </em>through the quarter ended <em style="font: inherit;"> December 31, 2020. </em>The Social Security taxes are being accrued for and will be paid in <em style="font: inherit;">2021.</em></p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The provision for income taxes is based on income before income taxes reported for financial statement purposes. The components of income before income taxes are as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></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; width: 55%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#160;</td><td>&#160;</td><td style="width: 17px;">&#160;</td><td style="width: 209px;">&#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;, 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;">Domestic</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 17px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 209px; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58,551</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">74,841</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">81,893</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;">Foreign</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 17px; 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: 209px; 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);">4,394</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,352</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">9,762</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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: 17px; 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: 209px; 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);">62,945</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">81,193</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">91,655</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>

   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#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 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Significant components of the provision for income taxes for the following periods are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 55%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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;">Current:</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></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; margin-left: 18pt;">Federal</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;">2,128</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,991</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(782</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">State</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,136</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,882</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,078</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; margin-left: 18pt;">Foreign</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,241</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,544</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,810</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;">Deferred</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></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; margin-left: 18pt;">Federal</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,904</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,121</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,325</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; margin-left: 18pt;">State</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(431</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">269</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">538</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; margin-left: 18pt;">Foreign</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">210</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(809</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(430</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Valuation Allowance</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">890</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,540</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">528</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">12,078</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">17,538</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">15,067</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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>


   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">A reconciliation of the federal statutory income tax rate to the effective tax rate is as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#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;, Times, serif; text-indent: 0px;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Federal tax statutory 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21.0</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21.0</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21.0</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">State tax (net of federal benefit)</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.1</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.1</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.0</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;">Share based compensation</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(1.3</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.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;">&#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: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.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(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;">Valuation allowance against deferred tax 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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1.4</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0.7</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;">Research and development credit</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(3.7</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.8</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.5</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Foreign rate differential</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.8</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.3</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.1</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Tax reserves</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1.4</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1.1</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.1</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">Provision to return difference</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">(1.4</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">)</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">-</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">-</td><td style="width: 1%; 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Miscellaneous</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.1</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.4</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.5</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Transition tax</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: 14%; 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: 14%; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.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="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;">Revaluation of deferred tax liability</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: 1px 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; 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: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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; border-bottom: 1px 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; 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: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(0.5</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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</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);">&#160;</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: 3px double rgb(0, 0, 0);">19.2</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</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);">&#160;</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: 3px double rgb(0, 0, 0);">21.6</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</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);">&#160;</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: 3px double rgb(0, 0, 0);">16.4</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Significant components of deferred tax assets and liabilities are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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;, Times, serif; text-indent: 0px;"><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="6" style="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></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; width: 66%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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="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;">Deferred tax assets:</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></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; margin-left: 18pt;">Accrued expenses</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,155</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,362</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: 0px; margin: 0px; text-indent: 18pt;">Leases</td><td 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,598</td><td 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,337</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Stock-based compensation</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,356</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,325</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; margin-left: 18pt;">Intangible 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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,693</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,171</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; margin-left: 18pt;">Inventories</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">172</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">169</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; margin-left: 18pt;">Other 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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,790</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,765</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; margin-left: 18pt;">Net operating loss</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,647</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,513</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; margin-left: 36pt;">Less valuation allowance</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: 1px 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(8,248</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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 deferred tax 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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,273</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,394</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;">Deferred tax liabilities:</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></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; margin-left: 18pt;">Depreciation</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(32,671</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(26,750</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Goodwill</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(7,858</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(5,590</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 0px; margin: 0px; text-indent: 18pt;">Leases</td><td 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);">(3,598</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: 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);">(3,337</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total deferred tax liabilities</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(44,127</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(35,677</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">Net deferred tax liability</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(33,854</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(26,283</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 auto;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has recorded no U.S. deferred taxes related to the undistributed earnings of its non-U.S. subsidiaries as of <em style="font: inherit;"> December 31, 2020</em>. Such amounts are intended to be reinvested outside of the United States indefinitely. It is <em style="font: inherit;">not</em> practicable to estimate the amount of additional tax that might be payable on the foreign earnings. As of <em style="font: inherit;"> December 31, 2020</em>, the Company had accumulated undistributed earnings in non-U.S. subsidiaries of $15.8 million.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">As of <em style="font: inherit;"> December 31, 2020</em>, the Company had estimated net operating loss carry forwards of $6.6 million for tax purposes. The net operating losses relate to operations in Japan and Germany. Japan losses can be carried forward for up to <span style="-sec-ix-hidden:c68815665">ten</span> years. The remaining Japan net operating losses begin to expire at various dates between <em style="font: inherit;">2021</em> and <em style="font: inherit;">2026.</em> The Company&#8217;s Japan operations are taxed both by local authorities and in the U.S. Germany net operating losses <em style="font: inherit;"> may </em>be carried forward without any time limitations but are limited to <em style="font: inherit;">&#8364;1</em> million, plus 60 percent&#160;of taxable income exceeding <em style="font: inherit;">&#8364;1</em> million.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company establishes valuation allowances for deferred tax assets when, after consideration of all positive and negative evidence, it is considered more-likely-than-<em style="font: inherit;">not</em> that a portion of the deferred tax assets will <em style="font: inherit;">not</em> be realized. The Company's valuation allowances of $9.1 million and $8.2 million at <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em>, respectively, reduce the carrying value of deferred tax assets associated with certain net operating loss carry forwards and other assets with insufficient positive evidence for recognition. The increase in the valuation allowance is primarily attributable to fluctuations in foreign currency and the net operating losses incurred in Germany in <em style="font: inherit;">2020.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company files a U.S. federal income tax return and income tax returns in various states and foreign jurisdictions. With a few exceptions, the Company is <em style="font: inherit;">no</em> longer subject to U.S. federal, state, or foreign income tax examinations by tax authorities for years before <em style="font: inherit;">2017.</em></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company has liabilities related to unrecognized tax benefits totaling $4.8 million and $4.6 million at <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em>, respectively, that if recognized would result in a reduction of the Company&#8217;s effective tax rate. The liabilities are classified as other long-term liabilities in the accompanying consolidated balance sheets. 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. Interest and penalties were immaterial for each of the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;"><b>&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">A reconciliation of the beginning and ending amount of unrecognized tax benefits is as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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; padding-bottom: 1px;">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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="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="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; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Balance at beginning of period</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,598</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,096</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;">Additions for tax positions of current year</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">324</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">592</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;">Additions for tax positions of prior 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">475</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: 14%; 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="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;">Decrease related to expiration of statutes of limitations</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(567</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(90</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">Balance at period end</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,830</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,598</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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=84230637&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=116825942&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=84230637&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=116825942&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=84230637&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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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>nonnum: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>37
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024138904">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Litigation<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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_LegalMattersAndContingenciesTextBlock', window );">Legal Matters and Contingencies [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">16</em> &#8211; Litigation</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">From time to time, the Company <em style="font: inherit;"> may </em>be subject to various legal proceedings and claims that arise in the ordinary course of its business.&#160;Although the results of litigation and claims cannot be predicted with certainty, the Company does <em style="font: inherit;">not</em> believe it is a party to any litigation the outcome of which, if determined adversely, would individually or in the aggregate be reasonably expected to have a material adverse effect on its business.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;<b>&#160;</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;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_LegalMattersAndContingenciesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 legal proceedings, legal contingencies, litigation, regulatory and environmental matters and other contingencies.</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 450<br> -URI http://asc.fasb.org/topic&amp;trid=2127136<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LegalMattersAndContingenciesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>38
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024178904">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Segment Reporting<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">17</em> &#8211; Segment Reporting</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company&#8217;s reportable segments are based on the internal reporting used by the Company&#8217;s CEO, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Company&#8217;s reportable segments are based upon geographic region, consisting of the United States and Europe. The Corporate Unallocated and Japan category includes non-reportable segments, as well as research and development and general and administrative costs that are global in nature and&#160;that the Company does <em style="font: inherit;">not</em> allocate directly to its operating segments.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue in the United States is derived from Injection Molding, CNC Machining, <em style="font: inherit;">3D</em> Printing and Sheet Metal product lines. Revenue in Europe is derived from Injection Molding, CNC Machining, and <em style="font: inherit;">3D</em> Printing product lines. Revenue in&#160;Japan is derived from Injection Molding and CNC Machining 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 and lathe-turned customer parts. <em style="font: inherit;">3D</em> Printing revenue consists of sales of <em style="font: inherit;">3D</em>-printed parts. Sheet Metal revenue consists of sales of fabricated sheet metal parts.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"/>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The accounting policies of the reportable segments are the same as those described in&#160;Note <em style="font: inherit;">2</em>&#160;&#8211;&#160;Summary of Significant Accounting Policies. 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.</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Beginning in&#160;<em style="font: inherit;">2020</em>, the Company's CODM made a decision to view certain research and development costs by geographic region. As a result, costs previously included in the Corporate Unallocated and Japan category have been included in the respective geographic regions. All periods presented have been restated to reflect this change.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Revenue and income from operations by reportable segment are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Revenue:</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></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; margin-left: 18pt;">United States</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">345,708</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">360,205</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">350,535</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; margin-left: 18pt;">Europe</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">74,796</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">82,805</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">80,889</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; margin-left: 18pt;">Japan</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);">&#160;</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: 1px solid rgb(0, 0, 0);">13,891</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">15,718</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">14,172</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">Total revenue</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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">434,395</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">458,728</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">445,596</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Income from Operations:</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></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; margin-left: 18pt;">United States</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">98,762</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">108,594</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115,710</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; margin-left: 18pt;">Europe</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,707</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">15,077</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,747</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; margin-left: 18pt;">Corporate Unallocated and Japan</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);">&#160;</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: 1px solid rgb(0, 0, 0);">(50,633</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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);">&#160;</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: 1px solid rgb(0, 0, 0);">(43,815</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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);">&#160;</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: 1px solid rgb(0, 0, 0);">(43,557</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 18pt;">Total income from operations</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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">59,836</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">79,856</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">88,898</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Total long-lived assets, expenditures for additions to long-lived assets and depreciation and amortization expense are as follows:</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>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><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;"> <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;">&#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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">215,721</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">210,171</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">185,979</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; margin-left: 18pt;">Europe</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">59,388</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">45,019</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">34,577</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; margin-left: 18pt;">Japan</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);">&#160;</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: 1px solid rgb(0, 0, 0);">7,557</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">8,522</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">7,445</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">282,666</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">263,712</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">228,001</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;text-indent:22.5pt;">&#160;&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Expenditures for additions to 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><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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;">&#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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">29,984</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">45,123</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">78,762</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;">Europe</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,574</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">14,743</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,576</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;">Japan</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);">&#160;</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: 1px solid rgb(0, 0, 0);">452</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">2,364</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">766</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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 expenditures for additions to 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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">47,010</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">62,230</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">87,104</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b/></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Depreciation and Amortization:</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></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; margin-left: 18pt;">United States</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25,744</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">24,767</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21,117</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; margin-left: 18pt;">Europe</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,024</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,746</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,679</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; margin-left: 18pt;">Japan</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);">&#160;</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: 1px solid rgb(0, 0, 0);">1,826</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">1,351</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">958</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">Total depreciation and amortization</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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">32,594</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">30,864</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">26,754</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <hr style="text-align: left;height: 1px; color: #000000; background-color: #000000; width: 90%; border: none; margin: 0 auto 0 27pt;"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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>nonnum: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>39
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407031556040">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 18 - Subsequent Events<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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_SubsequentEventsTextBlock', window );">Subsequent Events [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">18</em> &#8211; Subsequent Events</b></p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">On <em style="font: inherit;"> January 22, 2021, </em>the Company acquired <em style="font: inherit;">3D</em> Hubs, Inc. (<em style="font: inherit;">&#8220;3D</em> Hubs&#8221;), for $294.4 million, consisting of $127.7 million in cash and 863,995 shares of the Company's common stock valued at $166.7 million on the date of close.&#160; Up to an additional $52.8 million of contingent consideration is 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> after closing, 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. <em style="font: inherit;">3D</em> Hubs is a leading online manufacturing platform that provides customers with on-demand access to a global network of approximately <em style="font: inherit;">240</em> premium manufacturing partners. The completion of this transaction creates the world&#8217;s most comprehensive digital manufacturing offer for custom parts. The acquisition will be accounted for under the acquisition method of accounting in accordance with ASC <em style="font: inherit;">805.</em></p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">On <em style="font: inherit;"> February 3, 2021, </em>the Company announced the launch of its new digital quoting and design analysis platform to its U.S.-based customers, following a launch in the <em style="font: inherit;">fourth</em> quarter of <em style="font: inherit;">2020</em> to its European-based users. With the launch, <em style="font: inherit;">three</em> of the Company's services&#8212;injection molding, CNC machining, and <em style="font: inherit;">3D</em> printing&#8212;are now united in a single platform for a much easier quoting and ordering experience. The advanced e-commerce system is built to accelerate online quoting, design analysis and ordering.</p>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:27pt;">&#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_SubsequentEventsTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 significant events or transactions that occurred after the balance sheet date through the date the financial statements were issued or the date the financial statements were available to be issued. Examples include: the sale of a capital stock issue, purchase of a business, settlement of litigation, catastrophic loss, significant foreign exchange rate changes, loans to insiders or affiliates, and transactions not in the ordinary course of business.</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 855<br> -URI http://asc.fasb.org/topic&amp;trid=2122774<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 855<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6842918&amp;loc=SL6314017-165662<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SubsequentEventsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>40
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407031704216">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Significant Accounting Policies (Policies)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_AccountingPoliciesAbstract', window );"><strong>Accounting Policies [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConsolidationPolicyTextBlock', window );">Consolidation, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Principles of consolidation</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The consolidated financial statements include the accounts of the Company and its wholly-owned subsidiaries, as listed within &#8220;Organization and business&#8221; above. All intercompany accounts and transactions have been eliminated in consolidation.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><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_ComprehensiveIncomePolicyPolicyTextBlock', window );">Comprehensive Income, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Comprehensive income</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Components of comprehensive income include net income and foreign currency translation adjustments. Comprehensive income is disclosed in the accompanying consolidated statements of comprehensive income and consolidated statements of shareholders&#8217; equity.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p><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_UseOfEstimates', window );">Use of Estimates, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounting estimates</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S. GAAP) requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and related disclosures at the date of the financial statements and the reported amounts of revenues and expenses during the reporting period. Actual results could differ from those estimates.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><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_CashAndCashEquivalentsPolicyTextBlock', window );">Cash and Cash Equivalents, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Cash and cash equivalents</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Cash and cash equivalents include cash and other investments, including marketable securities, with maturities of <em style="font: inherit;">three</em> months or less at the date of purchase. The Company maintains its cash in bank deposit accounts, which, at times, <em style="font: inherit;"> may </em>exceed federally insured limits. The Company has <em style="font: inherit;">not</em> experienced any losses on such accounts.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><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_MarketableSecuritiesPolicy', window );">Marketable Securities, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Marketable securities</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Marketable securities include held-to-maturity debt securities recorded at amortized cost. Management determines the appropriate classification of debt securities at the time of purchase and reevaluates such designation as of each balance sheet date. Debt securities are classified as held-to-maturity when the Company has the positive intent and ability to hold the securities to maturity. Held-to-maturity securities are stated at amortized cost, adjusted for amortization of premiums and accretion of discounts to maturity computed under the effective interest method. Such amortization is included in other income, net. Interest on securities classified as held to maturity is included in other income, net. The classification of marketable securities as current or non-current is dependent upon the security&#8217;s maturity date. Securities with maturities of <em style="font: inherit;">three</em> months or less at the time of purchase are categorized as cash equivalents as described above. 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.</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p><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_TradeAndOtherAccountsReceivablePolicy', window );">Accounts Receivable [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounts receivable and allowance for doubtful accounts</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Accounts receivable are reported at the invoiced amount less an allowance for doubtful accounts. As of each balance sheet date, the Company evaluates its accounts receivable and establishes an allowance for doubtful accounts based on a combination of specific customer circumstances and credit conditions taking into account the history of write-offs and collections. A receivable is considered past due if payment has <em style="font: inherit;">not</em> been received within the period agreed upon in the invoice. Accounts receivable are written off after all collection efforts have been exhausted. Recoveries of trade receivables previously written off are recorded when received.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><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_InventoryPolicyTextBlock', window );">Inventory, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Inventory</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Inventory consists primarily of raw materials, which are recorded at the lower of cost or market, using the average 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><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_PropertyPlantAndEquipmentPolicyTextBlock', window );">Property, Plant and Equipment, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Property, equipment and leasehold improvements</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Property, equipment and leasehold improvements are stated at cost. Major improvements that substantially extend an asset&#8217;s useful life are capitalized. Repairs, maintenance and minor improvements are charged to operations as incurred. Depreciation, including amortization of leasehold improvements and assets recorded under capital leases, is calculated using the straight-line method over the estimated useful lives of the individual assets and ranges from 3 to 39&#160;years. Manufacturing equipment is depreciated over 3 to 15&#160;years, office furniture and equipment are depreciated over 3 to 7&#160;years, computer hardware and software are depreciated over 3 to 5&#160;years, building costs are depreciated over 39&#160;years, leasehold improvements are depreciated over the estimated lives of the related assets or the life of the lease, whichever is shorter, and building and land improvements are depreciated over 10 to 39 years. Assets <em style="font: inherit;">not</em> in service are <em style="font: inherit;">not</em> depreciated until the asset is put into use.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;text-indent:18pt;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company follows ASC&#160;<em style="font: inherit;">350</em>-<em style="font: inherit;">40,</em><i> Internal-Use Software</i>, in accounting for internally developed software. As of <em style="font: inherit;"> December 31, 2020 </em>and <em style="font: inherit;">2019</em>, respectively, $49.4 million and $32.7 million of software development costs were capitalized. Capitalized software development costs for the year ended <em style="font: inherit;"> December 31, 2020</em>&#160;were $16.7 million.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><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_GoodwillAndIntangibleAssetsGoodwillPolicy', window );">Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Goodwill</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company recognizes goodwill in accordance with ASC <em style="font: inherit;">350,</em> <i>Intangibles&#8212;Goodwill and Other</i>. Goodwill is the excess of cost of an acquired entity over the amounts assigned to assets acquired and liabilities assumed in a business combination. Goodwill is <em style="font: inherit;">not</em> amortized. Goodwill is tested for impairment annually in the <em style="font: inherit;">fourth</em> quarter of each year, and is tested for impairment between annual tests if an event occurs or circumstances change that would indicate the carrying amount <em style="font: inherit;"> may </em>be impaired. An impairment charge for goodwill is recognized only when the estimated fair value of a reporting unit, including goodwill, is less than its carrying amount. In <em style="font: inherit;">2020,</em> the Company performed a qualitative analysis based on the significance of the fair value over the carrying value in prior period assessments. As of <em style="font: inherit;"> December 31, 2020, </em>no impairment charges for goodwill have been recognized.</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p><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_InternalUseSoftwarePolicy', window );">Internal Use Software, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 7.2pt; text-align: left; text-indent: -9pt;"><i><b>Capitalized Software Costs</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#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 Company follows ASC <em style="font: inherit;">350</em>-<em style="font: inherit;">40,</em> <i>Intangibles &#8211; Goodwill and Other, Internal-Use Software</i>, in accounting for internally developed software. Costs for internal use software are evaluated by projected and capitalized where appropriate.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;&#160;</p><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_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy', window );">Goodwill and Intangible Assets, Intangible Assets, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Other Intangible Assets</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Other intangible assets include software technology, customer relationships and other intangible assets acquired from other independent parties. Other intangible assets with a definite life are amortized over a period ranging from <span style="-sec-ix-hidden:c68815405">two</span> to 10 years on a straight line basis, and are tested for impairment whenever events or circumstances indicate that the carrying amount of an asset (asset group) <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> be recoverable. An impairment loss is recognized when the carrying amount of an asset exceeds the estimated undiscounted cash flows generated by the asset. The amount of the impairment loss recorded is calculated by the excess of the asset&#8217;s carrying value over its fair value.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><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_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock', window );">Impairment or Disposal of Long-Lived Assets, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Accounting for long-lived assets</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company periodically reviews the carrying amount of its property, equipment and leasehold improvements to determine if circumstances exist indicating an impairment or if depreciation periods should be modified. If facts or circumstances indicate that an impairment <em style="font: inherit;"> may </em>exist, the Company will prepare a projection of the undiscounted future cash flows of the specific assets to determine if the assets are recoverable. If impairment exists based on these projections, an adjustment will be made to reduce the carrying amount of the specific assets to fair value.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><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_RevenueRecognitionPolicyTextBlock', window );">Revenue [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Revenue recognition</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company recognizes revenue in accordance with ASC <em style="font: inherit;">606,</em> <i>Revenue from Contracts with Customers</i>. The Company manufactures custom parts to specific customer orders that have <em style="font: inherit;">no</em> alternative use to the Company, and the Company believes there is a legally enforceable right to payment for performance completed to date on these manufactured parts. For manufactured parts that meet these <em style="font: inherit;">two</em> criteria, the Company will recognize revenue over time. Revenue is recognized over time using the input method based on time in production as a percentage of total estimated production time to measure progress toward satisfying performance obligations using the estimated total time necessary to complete the parts per the customer's order and an estimate of inventory and production costs incurred to date. The majority of the Company&#8217;s injection molding contracts have multiple performance obligations including <em style="font: inherit;">one</em> obligation to produce the mold and a <em style="font: inherit;">second</em> obligation to produce parts. For injection molding contracts with multiple performance obligations, the Company allocates revenue to each performance obligation based on its relative standalone selling price. The Company generally determines standalone selling price based on the price charged to customers.</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&#160;</p><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_LesseeLeasesPolicyTextBlock', window );">Lessee, Leases [Policy Text Block]</a></td>
<td class="text"><p style="margin: 0pt 0pt 0pt -27pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;"><i><b>Leases</b></i></p> <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">&#160;</p> <p style="margin: 0pt 7.2pt 0pt -2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;,Times,serif; font-size: 10pt;">The Company accounts for leases in accordance with ASC <em style="font: inherit;">842,</em> <i>Leases</i>, which requires the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating and finance leases. The Company determines if an arrangement is a lease at inception. Operating and finance leases are included in operating and finance lease assets, current operating and finance lease liabilities and long-term operating and finance lease liabilities in the Consolidated Balance Sheets and are recognized based on the present value of lease payments over the lease term at commencement date.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:left;">&#160;</p><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_IncomeTaxPolicyTextBlock', window );">Income Tax, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Income taxes</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for income taxes in accordance with ASC <em style="font: inherit;">740,</em><i> Income Taxes</i> (ASC <em style="font: inherit;">740</em>). Under this method, the Company determines tax assets and liabilities based upon the differences between the financial statement carrying amounts and the tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to affect taxable income. The tax consequences of most events recognized in the financial statements are included in determining income taxes currently payable. However, because tax laws and financial accounting standards differ in their recognition and measurement of assets, liabilities and equity, revenues, expenses, gains and losses, differences arise between the amount of taxable income and pretax financial income for a year and between the tax basis of assets or liabilities and their reported amounts in the financial statements. Because the Company assumes that the reported amounts of assets and liabilities will be recovered and settled, respectively, a difference between the tax basis of an asset or liability and its reported amount in the balance sheet will result in a taxable or a deductible amount in some future years when the related liabilities are settled or the reported amounts of the assets are recovered, giving rise to a deferred tax asset or liability. The Company establishes a valuation allowance for any portion of its deferred tax assets that the Company believes&#160;<em style="font: inherit;"> may </em><em style="font: inherit;">not</em> be recognized.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">ASC <em style="font: inherit;">740</em> also clarifies the accounting for uncertainty in income taxes recognized in an enterprise&#8217;s financial statements by requiring that individual tax positions are recorded only when they meet a more-likely-than-<em style="font: inherit;">not</em> criterion. The Company recognizes the effect of income tax positions only if sustaining those positions is more likely than <em style="font: inherit;">not.</em> The Company records penalties and interest related to unrecognized tax benefits in income taxes in the Company&#8217;s Consolidated Statements of Income.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><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_CompensationRelatedCostsPolicyTextBlock', window );">Compensation Related Costs, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Stock-based compensation</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company accounts for stock-based compensation in accordance with ASC <em style="font: inherit;">718,</em><i> Compensation&#8212;Stock Compensation</i> (ASC <em style="font: inherit;">718</em>). Under the fair value recognition provisions of ASC <em style="font: inherit;">718,</em> the Company measures stock-based compensation cost at the grant date fair value and recognizes the compensation expense over the requisite service period, which is the vesting period, using a straight-line attribution method. The amount of stock-based compensation expense recognized during a period is based on the portion of the awards that are ultimately expected to vest. The Company accounts for forfeitures as they occur. Ultimately, the total expense recognized over the vesting period will only be for those awards that vest. The Company&#8217;s awards are <em style="font: inherit;">not</em> eligible to vest early in the event of retirement, however, the awards vest early in the event of a change in control.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">In determining the compensation cost of the options granted, the fair value of options granted has been estimated on the date of grant using the Black-Scholes option-pricing model.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><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_AdvertisingCostsPolicyTextBlock', window );">Advertising Cost [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Advertising costs</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Advertising is expensed as incurred and was approximately $11.5&#160;million, $13.0 million and $11.8 million for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, respectively.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><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_ResearchAndDevelopmentExpensePolicy', window );">Research and Development Expense, Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Research and development</b></i></p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">Research and development expenses consist primarily of personnel and outside service costs related to the development of new processes and product lines, enhancements 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 <em style="font: inherit;">350</em>-<em style="font: inherit;">40,</em> <i>Intangibles - Goodwill and Other, Internal-Use Software</i>. Research and development costs were approximately $36.9&#160;million, $32.7 million and $28.7 million for the years ended <em style="font: inherit;"> December 31, 2020, </em><em style="font: inherit;">2019</em> and <em style="font: inherit;">2018</em>, respectively.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p><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_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock', window );">Foreign Currency Transactions and Translations Policy [Policy Text Block]</a></td>
<td class="text"><p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;"><i><b>Foreign currency translation/transactions</b></i></p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">The Company translated the balance sheets of its foreign subsidiaries at period-end exchange rates and the income statement at the average exchange rates in effect throughout the period. The Company has recorded the translation adjustment as a separate component of consolidated shareholders&#8217; equity. Foreign currency transaction gains and losses are recognized in the consolidated statements of comprehensive income.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 14.7pt;text-align:center;"/><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_NewAccountingPronouncementsPolicyPolicyTextBlock', window );">New Accounting Pronouncements, Policy [Policy Text Block]</a></td>
<td class="text"><p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Recently adopted accounting pronouncements</b></i></p> <p style="margin: 0 29.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#160;</p> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">During the <em style="font: inherit;">first</em> quarter of <em style="font: inherit;">2020,</em> the Company adopted the Financial Accounting Standards Board (FASB) Accounting Standards Update (ASU) <em style="font: inherit;">2016</em>-<em style="font: inherit;">13,</em> <i>Financial Instruments &#8211; Credit Losses</i>, which is intended to provide financial statement users with more decision-useful information about the expected credit losses on financial instruments held by a reporting entity at each reporting date. The adoption of this guidance had <em style="font: inherit;">no</em> material impact on our consolidated financial statements.</p> <p style="margin: 0 29.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#160;</p> <p style="margin: 0; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">During the <em style="font: inherit;">first</em> quarter of <em style="font: inherit;">2019,</em> the Company adopted the FASB ASU <em style="font: inherit;">2016</em>-<em style="font: inherit;">02,</em>&#160;<i>Leases&#160;</i>(ASC <em style="font: inherit;">842</em>), which introduces the balance sheet recognition of lease assets and lease liabilities by lessees for those leases classified as operating leases under previous guidance. The Company has adopted the new lease standard using the new transition option issued under the amendments in ASU <em style="font: inherit;">2018</em>-<em style="font: inherit;">11,</em>&#160;<i>Leases</i>, which allowed the Company to continue to apply the legacy guidance in Accounting Standards Codification (ASC) <em style="font: inherit;">840,</em>&#160;<i>Leases</i>, in the comparative periods presented in the year of adoption.&#160;The Company elected the package of practical expedients permitted under the transition guidance within the new standard, which among other things, allowed the Company to carry forward the historical lease classification. The Company made an accounting policy election to keep leases with an initial term of <em style="font: inherit;">12</em> months or less off of the balance sheet. The Company will recognize those lease payments in the Consolidated Statements of Comprehensive Income on a straight-line basis over the lease term. The impact of the adoption was an increase to the Company&#8217;s operating lease assets and liabilities on <em style="font: inherit;"> January 1, 2019 </em>of $13.1 million.</p> <p style="margin: 0 7.2pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#160;</p> <p style="margin: 0; text-align: left; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"><i><b>Recently issued accounting pronouncements</b></i></p> <p style="margin: 0 29.7pt 0 14.7pt; text-align: left; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">&#160;</p> <p style="margin: 0 29.7pt 0 -3pt; text-align: left; text-indent: 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">In <em style="font: inherit;"> December 2019, </em>the FASB issued ASU <em style="font: inherit;">2019</em>-<em style="font: inherit;">12,</em> <i>Income Taxes</i>, which is intended to simplify the accounting for income taxes. This guidance will be effective for fiscal years beginning after <em style="font: inherit;"> December 15, 2020 </em>and interim periods within those fiscal years with early adoption permitted. The Company is evaluating the impact of future adoption of this guidance on its consolidated financial statements, but does <em style="font: inherit;">not</em> expect the impact to be material.</p> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:justify;text-indent:27pt;">&#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_AccountingPoliciesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_AccountingPoliciesAbstract</td>
</tr>
<tr>
<td style="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_AdvertisingCostsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for advertising cost.</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 720<br> -SubTopic 35<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6420018&amp;loc=d3e36677-107848<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdvertisingCostsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_CashAndCashEquivalentsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for cash and cash equivalents, including the policy for determining which items are treated as cash equivalents. Other information that may be disclosed includes (1) the nature of any restrictions on the entity's use of its cash and cash equivalents, (2) whether the entity's cash and cash equivalents are insured or expose the entity to credit risk, (3) the classification of any negative balance accounts (overdrafts), and (4) the carrying basis of cash equivalents (for example, at cost) and whether the carrying amount of cash equivalents approximates 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 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=121583591&amp;loc=d3e4273-108586<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(1))<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 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_CompensationRelatedCostsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for salaries, bonuses, incentive awards, postretirement and postemployment benefits granted to employees, including equity-based arrangements; discloses methodologies for measurement, and the bases for recognizing related assets and liabilities and recognizing and reporting compensation expense.</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 (b),(f(1))<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 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18726-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CompensationRelatedCostsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_ComprehensiveIncomePolicyPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for comprehensive income.</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_ComprehensiveIncomePolicyPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_ConsolidationPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy regarding (1) the principles it follows in consolidating or combining the separate financial statements, including the principles followed in determining the inclusion or exclusion of subsidiaries or other entities in the consolidated or combined financial statements and (2) its treatment of interests (for example, common stock, a partnership interest or other means of exerting influence) in other entities, for example consolidation or use of the equity or cost methods of accounting.  The accounting policy may also address the accounting treatment for intercompany accounts and transactions, noncontrolling interest, and the income statement treatment in consolidation for issuances of stock by a subsidiary.</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 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<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 1<br> -URI http://asc.fasb.org/extlink&amp;oid=109239629&amp;loc=d3e5614-111684<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConsolidationPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for (1) transactions denominated in a currency other than the reporting enterprise's functional currency, (2) translating foreign currency financial statements that are incorporated into the financial statements of the reporting enterprise by consolidation, combination, or the equity method of accounting, and (3) remeasurement of the financial statements of a foreign reporting enterprise in a hyperinflationary economy.</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 830<br> -URI http://asc.fasb.org/topic&amp;trid=2175825<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_GoodwillAndIntangibleAssetsGoodwillPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for goodwill. This accounting policy also may address how an entity assesses and measures impairment of goodwill, how reporting units are determined, how goodwill is allocated to such units, and how the fair values of the reporting units are determined.</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 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for intangible assets. This accounting policy may address both intangible assets subject to amortization and those that are not. The following also may be disclosed: (1) a description of intangible assets (2) the estimated useful lives of those assets (3) the amortization method used (4) how the entity assesses and measures impairment of such assets (5) how future cash flows are estimated (6) how the fair values of such asset are determined.</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 1<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16265-109275<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for recognizing and measuring the impairment of long-lived assets. An entity also may disclose its accounting policy for long-lived assets to be sold. This policy excludes 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 360<br> -SubTopic 10<br> -Section 05<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=109226317&amp;loc=d3e202-110218<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.CC)<br> -URI http://asc.fasb.org/extlink&amp;oid=27011434&amp;loc=d3e125687-122742<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_IncomeTaxPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for income taxes, which may include its accounting policies for recognizing and measuring deferred tax assets and liabilities and related valuation allowances, recognizing investment tax credits, operating loss carryforwards, tax credit carryforwards, and other carryforwards, methodologies for determining its effective income tax rate and the characterization of interest and penalties in the financial statements.</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 25<br> -URI http://asc.fasb.org/extlink&amp;oid=120406818&amp;loc=d3e32247-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 20<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32847-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 954<br> -SubTopic 740<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6491622&amp;loc=d3e9504-115650<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<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 19<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32840-109319<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 1<br> -URI http://asc.fasb.org/extlink&amp;oid=116657188&amp;loc=SL116659661-227067<br><br>Reference 7: 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> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32639-109319<br><br>Reference 8: 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 28<br> -URI http://asc.fasb.org/extlink&amp;oid=120406818&amp;loc=d3e32280-109318<br><br>Reference 9: 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=84230637&amp;loc=d3e32809-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_IncomeTaxPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_InternalUseSoftwarePolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for costs incurred when both (1) the software is acquired, internally developed, or modified solely to meet the entity's internal needs, and (2) during the software's development or modification, no substantive plan exists or is being developed to market the software externally.</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 40<br> -Section 30<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=118172244&amp;loc=d3e17916-109280<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 50<br> -Section 25<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=16397303&amp;loc=d3e19379-109286<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InternalUseSoftwarePolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_InventoryPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 inventory accounting policy for inventory classes, including, but not limited to, basis for determining inventory amounts, methods by which amounts are added and removed from inventory classes, loss recognition on impairment of inventories, and situations in which inventories are stated above cost.</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> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=116847112&amp;loc=d3e4556-108314<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<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 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6361739&amp;loc=d3e7789-107766<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=116847112&amp;loc=d3e4492-108314<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 270<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=116846552&amp;loc=d3e543-108305<br><br>Reference 6: 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><br>Reference 7: 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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_LesseeLeasesPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for leasing arrangement entered into by lessee.</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 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918666-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_LesseeLeasesPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_MarketableSecuritiesPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for investment classified as marketable security.</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 320<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=120252992&amp;loc=d3e62652-112803<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MarketableSecuritiesPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_NewAccountingPronouncementsPolicyPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact.</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_NewAccountingPronouncementsPolicyPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_PropertyPlantAndEquipmentPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.</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 958<br> -SubTopic 360<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=120429125&amp;loc=d3e99779-112916<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.13(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 958<br> -SubTopic 360<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=120429125&amp;loc=d3e99893-112916<br><br>Reference 4: 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 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_ResearchAndDevelopmentExpensePolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for costs it has 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.</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 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br><br>Reference 2: 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_ResearchAndDevelopmentExpensePolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_RevenueRecognitionPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for revenue. Includes revenue from contract with customer and from other sources.</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 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18823-107790<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18823-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueRecognitionPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_TradeAndOtherAccountsReceivablePolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for accounts receivable.</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 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121611835&amp;loc=d3e4975-111524<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=121611835&amp;loc=d3e5212-111524<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11B<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121611835&amp;loc=SL6953423-111524<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121611835&amp;loc=d3e5093-111524<br><br>Reference 5: 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 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121611835&amp;loc=d3e5033-111524<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=84159169&amp;loc=d3e10133-111534<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TradeAndOtherAccountsReceivablePolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_UseOfEstimates">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accounting policy for the use of estimates in the preparation of financial statements in conformity with generally accepted accounting principles.</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 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6191-108592<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6161-108592<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6143-108592<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e5967-108592<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6061-108592<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6132-108592<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e5967-108592<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UseOfEstimates</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>41
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407031556728">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Revenue (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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_DisaggregationOfRevenueTableTextBlock', window );">Disaggregation of Revenue [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 46%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Revenue:</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></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; margin-left: 18pt;">United States</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">345,708</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">360,205</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">350,535</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; margin-left: 18pt;">Europe</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">74,796</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">82,805</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">80,889</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; margin-left: 18pt;">Japan</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: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; 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);">13,891</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; 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);">15,718</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; 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);">14,172</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 18pt;">Total revenue</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: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">434,395</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">458,728</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">445,596</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 46%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Revenue:</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></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; margin-left: 18pt;">Injection Molding</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">217,992</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">217,415</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">210,523</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; margin-left: 18pt;">CNC Machining</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">131,587</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">155,473</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">153,521</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; margin-left: 18pt;">3D Printing</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">62,502</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">61,352</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">53,342</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; margin-left: 18pt;">Sheet Metal</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">18,838</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21,000</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">24,998</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; margin-left: 18pt;">Other Revenue</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: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; 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);">3,476</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; 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);">3,488</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; 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);">3,212</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 18pt;">Total revenue</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: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">434,395</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">458,728</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">445,596</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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_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=121604090&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>nonnum: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>42
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024145080">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Net Income Per Common Share (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></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; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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;">Net Income</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">50,867</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;">63,655</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;">76,588</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>&#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;, 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;">Basic - weighted-average shares outstanding:</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;">26,737,425</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;">26,866,985</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;">26,982,614</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;">Effect of dilutive securities:</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></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: 18pt;">Employee stock options and other</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">158,932</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">182,438</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">296,202</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Diluted - weighted-average shares outstanding:</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);">&#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: 3px double rgb(0, 0, 0);">26,896,357</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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);">&#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: 3px double rgb(0, 0, 0);">27,049,423</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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);">&#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: 3px double rgb(0, 0, 0);">27,278,816</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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;">Net income per share attributable to common shareholders:</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></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; margin-left: 18pt;">Basic</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: 1px solid rgb(0, 0, 0);">$</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: 1px solid rgb(0, 0, 0);">1.90</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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: 1px solid rgb(0, 0, 0);">2.37</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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: 1px solid rgb(0, 0, 0);">2.84</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 18pt;">Diluted</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">1.89</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">2.35</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">2.81</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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=6371337&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>nonnum: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>43
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407130820120">
<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">12 Months Ended</th>
</tr>
<tr><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_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: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 25%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Dec. 31, 2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Goodwill acquired during 2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" 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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Dec. 31, 2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Goodwill acquired during 2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Dec. 31, 2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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><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;, 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;">United States</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;">123,883</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: 12%; 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; margin-left: 0pt;">$</td><td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">123,883</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: 12%; 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; 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;">123,883</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;">Europe</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,239</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: 12%; 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 class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,239</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: 12%; 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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,239</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;">Japan</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);">&#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: 1px solid rgb(0, 0, 0);">630</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#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: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</td><td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" 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);">630</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#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: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#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: 1px solid rgb(0, 0, 0);">630</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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 goodwill</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: 3px double rgb(0, 0, 0);">$</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);">128,752</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" 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);">128,752</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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);">128,752</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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 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;, Times, serif; text-indent: 0px;"><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: 20%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31, 2020</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 21%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31, 2019</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#160;</b></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; width: 1%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Weighted Average Useful Life</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#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: 20%;"> <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: 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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Gross</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Accumulated Amortization</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Net</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Gross</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Accumulated Amortization</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Net</em></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:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Useful Life (in years)</em></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%;"><b><em style="font: inherit;">Remaining (in years)</em></b></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="background-color: rgb(204, 238, 255); vertical-align: bottom"><td colspan="4" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 22%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><em style="font: inherit;">Intangible Assets with finite lives:</em></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#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: 20%">Marketing assets</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$930</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$(620</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$310</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$930</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$(527</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">$403</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">10.0</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">3.3</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#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: 20%">Non-compete agreement</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">270</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">(238</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">32</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">270</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">(222</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">48</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">2.0 - 5.0</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">2.3</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#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: 20%">Software technology</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">13,229</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">(3,645</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">9,584</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">13,229</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">(2,275</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right;">10,954</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">10.0</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">7.3</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#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: 20%">Customer relationships</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">10,070</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">(5,646</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">4,424</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">10,070</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">(4,106</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">)</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">5,964</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">6.0 - 9.0</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">2.8</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#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: 20%;"> <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%; 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);">$</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: 3px double rgb(0, 0, 0);">24,499</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(10,149</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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: 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">14,350</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">25,829</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(8,460</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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: 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,369</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><em style="font: inherit;">&#160;</em></td><td style="padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#160;</em></td><td style="padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#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_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="margin-right: 7.5%; margin-left: 7.5%; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 82%;"> <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: 1px solid rgb(0, 0, 0);"><b><em style="font: inherit;">Estimated Amortization Expense</em></b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt">2021</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">$</td><td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">3,016</td><td style="width: 1%; 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">2022</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">3,016</td><td style="width: 1%; 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">2023</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">2,813</td><td style="width: 1%; 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">2024</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">1,400</td><td style="width: 1%; 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">2025</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">1,369</td><td style="width: 1%; 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">Thereafter</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: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">2,736</td><td style="width: 1%; 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;"> <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: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">14,350</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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_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>nonnum: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>nonnum: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>nonnum: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>44
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407021710136">
<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">12 Months Ended</th>
</tr>
<tr><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_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="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2019</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 22%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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><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;, 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Cash and cash equivalents</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Money market mutual funds</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: 1px solid rgb(0, 0, 0);">$</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);">55,378</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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);">68,962</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">$</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; margin-left: 9pt;">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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">55,378</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">68,962</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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=117815213&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=117815213&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>nonnum: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>45
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407030476584">
<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">12 Months Ended</th>
</tr>
<tr><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_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_HeldToMaturitySecuritiesTextBlock', window );">Debt Securities, Held-to-maturity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; 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;, Times, serif; font-size: 10pt; width: 48%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Amortized Cost</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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;, 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; 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;">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; 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;">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; 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;">(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; 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;">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;">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: 10%; 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: 10%; 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: 10%; 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: 10%; 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. 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;">&#160;</td><td style="width: 10%; 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;">&#160;</td><td style="width: 10%; 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;">&#160;</td><td style="width: 10%; 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;">&#160;</td><td style="width: 10%; 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; padding: 0; margin: 0">Commercial paper</td><td 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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2,499</td><td 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: 10%; 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: 10%; 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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2,499</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;"> <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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">5,395</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">93</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">5,488</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Total marketable securities</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">93,445</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">393</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(23</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">93,815</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2019</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 48%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Amortized Cost</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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;, 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; 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;">6,274</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(7</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,268</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">26,944</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">80</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(12</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">27,012</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. 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;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,204</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(3</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,210</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">Commercial paper</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">3,491</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">-</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">-</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: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">3,491</td><td style="width: 1%; 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;"> <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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">1,484</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">22</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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);">1,506</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Total marketable securities</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">48,397</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">112</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(22</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">48,487</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 83%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: &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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">34,088</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">59,357</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Total marketable securities</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">93,445</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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_HeldToMaturitySecuritiesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 information about 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 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5B<br> -URI http://asc.fasb.org/extlink&amp;oid=121645371&amp;loc=SL120269825-111563<br><br>Reference 2: 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 5A<br> -URI http://asc.fasb.org/extlink&amp;oid=121645371&amp;loc=SL120269820-111563<br><br>Reference 3: 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 5<br> -URI http://asc.fasb.org/extlink&amp;oid=121645371&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_HeldToMaturitySecuritiesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>nonnum: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>46
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407120825240">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Property and Equipment (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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_PropertyPlantAndEquipmentTextBlock', window );">Property, Plant and Equipment [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;, Times, serif; text-indent: 0px;"><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="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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 66%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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="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;">Land</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">14,028</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">14,098</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;">Buildings and improvements</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">77,285</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">75,843</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;">Machinery and equipment</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">221,301</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">208,954</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;">Computer hardware and software</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">79,207</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">24,953</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;">Leasehold improvements</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,821</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,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;">Construction in progress</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">33,780</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">54,313</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">433,422</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">385,502</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;">Accumulated depreciation and amortization</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(150,756</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(121,790</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">Property and equipment, net</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">282,666</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">263,712</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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_PropertyPlantAndEquipmentTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation.</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(13))<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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>47
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407132326152">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Inventory (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 66%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Total inventory</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">11,122</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">10,319</td><td style="width: 1%; 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Allowance for obsolescence</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(260</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(244</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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">Inventory, net of allowance</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">10,862</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; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">10,075</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#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>nonnum: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>48
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407022776088">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Stock-based Compensation (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock', window );">Share-based Payment Arrangement, Cost by Plan [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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;">Stock options and other</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">13,327</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,591</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,113</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;">Employee stock purchase plan</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,346</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,190</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; 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: 10pt; padding-bottom: 1px; 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;">Total stock-based compensation expense</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">14,673</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,781</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,928</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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></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;">Cost of revenue</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,451</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,056</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,543</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;">Operating expenses:</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="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="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="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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Marketing and sales</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,121</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,632</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,942</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; margin-left: 18pt;">Research and development</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,440</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,851</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,517</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; margin-left: 18pt;">General and administrative</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,661</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">4,242</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">5,926</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Total stock-based compensation expense</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">14,673</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,781</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,928</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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 border="0" cellpadding="0" cellspacing="0" style="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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.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><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: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.35 - 2.58%</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: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.52 - 3.07%</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;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">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="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;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">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><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: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">42.52 - 42.74%</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: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">41.68 - 42.22%</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;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">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%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0%</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;">Weighted average grant date fair value</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;">&#160;</td><td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$45.32</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;">&#160;</td><td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$47.84</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;">&#160;</td><td style="width: 13%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$50.08</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_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="margin-right: 5%; margin-left: 18pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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="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; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at January 1, 2018</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;">399,055</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;">51.13</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; margin-left: 9pt;">Granted</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;">36,600</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;">110.59</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; margin-left: 9pt;">Exercised</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;">(155,765</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">38.92</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; margin-left: 9pt;">Cancelled</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(27,274</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">74.35</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Options outstanding at December 31, 2018</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;">252,616</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;">64.71</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; margin-left: 9pt;">Granted</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;">53,708</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;">105.81</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; margin-left: 9pt;">Exercised</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;">(16,079</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">48.67</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; margin-left: 9pt;">Cancelled</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(13,979</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">89.50</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Options outstanding at December 31, 2019</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;">276,266</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;">72.38</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; margin-left: 9pt;">Granted</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;">60,065</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;">105.79</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; margin-left: 9pt;">Exercised</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;">(68,958</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">57.00</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; margin-left: 9pt;">Cancelled</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);">&#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: 1px solid rgb(0, 0, 0);">(37,842</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">67.92</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">229,531</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; padding-bottom: 3px; 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></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;">Exercisable 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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">94,318</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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;">69.36</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock', window );">Share-based Payment Arrangement, Option, Exercise Price Range [Table Text Block]</a></td>
<td class="text">
    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 25%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="8" 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: 31%;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Options Outstanding, Vested and Expected to Vest</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="5" 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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b>Options Exercisable</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 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: 10pt; width: 25%; border-bottom: thin solid rgb(0, 0, 0);"><b>Range of Exercise Prices</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="1" 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%;"><b>Number Outstanding</b></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="1" 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%;"><b>Weighted Average Remaining Contractual Life</b></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%;"><b>Weighted Average Exercise Price ($)</b></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="1" 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%;"><b>Number Exercisable</b></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%;"><b>Weighted Average Exercise Price ($)</b></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="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 25%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%; text-align: center;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%; text-align: center;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 12%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td></tr>
<tr class="finHeading" 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: 25%">$7.76 to $31.43</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">5,964</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">1.35</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">30.58</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">5,964</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">30.58</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</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: 10pt; width: 25%">$31.44 to $66.87</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">78,482</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">4.81</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">57.51</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">56,032</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">57.18</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td></tr>
<tr class="finHeading" 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: 25%">$66.88 to $96.20</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">10,591</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">4.42</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">74.05</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">9,343</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">71.09</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</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: 10pt; width: 25%">$96.21 to $123.10</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">134,494</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%"></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">8.45</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">106.81</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#160;</td><td colspan="1" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">22,979</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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; width: 1%">108.41</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%">&#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="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Stock Awards</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; padding-bottom: 1px;">&#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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at January 1, 2018</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">334,831</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63.29</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; margin-left: 9pt;">Granted</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">106,855</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115.41</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; margin-left: 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(86,191</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">63.64</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; margin-left: 9pt;">Forfeited</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);">&#160;</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: 1px solid rgb(0, 0, 0);">(31,574</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">68.67</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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, 2018</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">323,921</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">79.85</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; margin-left: 9pt;">Granted</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115,471</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">106.35</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; margin-left: 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(92,597</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">77.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="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; margin-left: 9pt;">Forfeited</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);">&#160;</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: 1px solid rgb(0, 0, 0);">(31,822</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">87.58</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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, 2019</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">314,973</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">89.55</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; margin-left: 9pt;">Granted</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">108,179</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">111.76</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; margin-left: 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(101,941</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">84.70</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; margin-left: 9pt;">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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(14,012</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">94.24</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">307,199</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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: 14%; 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; padding-bottom: 3px; 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_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock', window );">Schedule of Nonvested Performance-based Units Activity [Table Text Block]</a></td>
<td class="text">
    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Stock Awards</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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; 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;, 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="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="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; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at January 1, 2018</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;">25,707</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;">58.35</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; margin-left: 9pt;">Granted</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;">20,006</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;">105.75</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; margin-left: 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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Performance change</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">6,427</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">58.35</td><td style="width: 1%; 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">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: 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; margin-left: 0pt; 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; 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="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, 2018</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;">52,140</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;">76.54</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; margin-left: 9pt;">Granted</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;">21,434</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;">104.99</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; margin-left: 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(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: 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;">(61,816</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">88.06</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; margin-left: 9pt;">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: 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; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);">(2,375</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">105.37</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;">Performance stock at December 31, 2019</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;">9,383</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;">58.35</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; margin-left: 9pt;">Granted</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;">&#160;</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(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: 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;">(7,113</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: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58.35</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; margin-left: 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="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: 9pt;">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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(2,270</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">58.35</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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; border-bottom: 3px double 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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">19,956</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">118.66</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#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" style="margin-right: 5%; margin-left: 27pt; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="7" style="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></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="1" 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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="1" 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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="1" 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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#160;</td><td>&#160;</td><td style="text-align: center;">&#160;</td><td style="text-align: center;">&#160;</td><td style="text-align: center;">&#160;</td><td style="text-align: center;">&#160;</td><td style="text-align: center;">&#160;</td><td style="text-align: center;">&#160;</td><td style="text-align: center;">&#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;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0.12 - 0.17%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">1.59 - 2.35%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">2.06 - 2.33%</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;">Expected life (months)</p> </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.00</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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.00</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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.00</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;">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: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">50.85 - 59.99%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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.63 - 53.57%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">31.50 - 37.36%</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;">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: 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; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;">&#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>
</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>nonnum: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_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 cost recognized for award under share-based payment arrangement by plan. Includes, but is not limited to, related tax benefit.</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 (h)(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_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>nonnum: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_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 option exercise prices, by grouped ranges, including the upper and lower limits of the price range, the number of shares under option, weighted average exercise price and remaining contractual option terms.</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_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>nonnum: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>nonnum: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>nonnum: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>49
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407019895624">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Leases (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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_AssetsAndLiabilitiesLesseeTableTextBlock', window );">Assets and Liabilities, Lessee [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 20%; margin-left: 27pt; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></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; width: 62%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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;">Operating lease 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;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,855</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,425</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>&#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;, 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;">Current operating lease liabilities</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,272</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,340</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;">Long-term operating lease liabilities</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);">&#160;</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: 1px solid rgb(0, 0, 0);">7,586</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">8,565</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">Total operating lease liabilities</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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">10,858</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">11,905</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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></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><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: &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;">Finance lease 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;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,396</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: 16%; 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>&#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(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;">Current finance lease liabilities</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">552</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: 16%; 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="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;">Long-term finance lease liabilities</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);">&#160;</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: 1px solid rgb(0, 0, 0);">1,919</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">Total finance lease liabilities</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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">2,471</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <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_ScheduleOfLeaseExpenseTableTextBlock', window );">Schedule of Lease Expense [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 15%; margin-left: 27pt; width: 85%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr style="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="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><b>Twelve Months Ended December 31,</b></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="vertical-align: bottom;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 64%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><b>2020</b></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><b>2019</b></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><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;">Operating lease cost</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,191</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: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,960</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);"><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;">Finance lease cost:</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="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="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="vertical-align: bottom; background-color: rgb(204, 238, 255);"><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: 18pt;">Amortization of right-of-use 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;">$</td><td style="width: 15%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">143</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: 15%; 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="vertical-align: bottom; background-color: rgb(255, 255, 255);"><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: 18pt;">Interest on lease obligations</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: 15%; 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;">&#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: 15%; 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="vertical-align: bottom; background-color: rgb(204, 238, 255);"><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;">Variable lease cost</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);">&#160;</td><td style="width: 15%; 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);">989</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</td><td style="width: 15%; 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);">1,039</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><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: 9pt;">Total lease cost</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: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">5,325</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 15%; 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);">4,999</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><em style="font: inherit;"><em style="font: inherit;">Twelve Months Ended December 31,</em></em></b></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; width: 62%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><em style="font: inherit;">2020</em></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b><em style="font: inherit;">2019</em></b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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;">Cash paid for amounts included in the measurement of lease liabilities:</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></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; margin-left: 9pt;">Operating cash flows from operating leases</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,426</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,020</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; margin-left: 9pt;">Operating cash flows from finance leases</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: 16%; 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;">&#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: 16%; 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="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: 9pt;">Financing cash flows from finance leases</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">154</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: 16%; 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>&#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(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;">Lease assets obtained in exchange for new operating lease liabilities</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,506</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,921</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;">Lease assets obtained in exchange for new financing lease liabilities</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,523</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 class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="width: 16%; 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>
</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_LesseeLeaseLiabilityMaturityTableTextBlock', window );">Lessee, Lease Liability, Maturity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 62%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Operating Leases</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">Finance Leases</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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><span style="text-decoration: underline; ">Year Ending December 31,</span></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(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;">2021</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,915</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">561</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;">2022</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,246</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">561</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;">2023</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,460</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,371</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;">2024</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">540</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: 16%; 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="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;">2025</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">494</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: 16%; 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="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;">After 2025</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: 1px solid rgb(0, 0, 0);">&#160;</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: 1px solid rgb(0, 0, 0);">1,751</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</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: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Total future minimum lease payments</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,406</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,493</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">Less interest</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: 1px solid rgb(0, 0, 0);">&#160;</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: 1px solid rgb(0, 0, 0);">(548</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px solid rgb(0, 0, 0);">&#160;</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: 1px solid rgb(0, 0, 0);">(22</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">Present value of lease liabilities</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">10,858</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">2,471</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#160;</td></tr>
</tbody></table>
   <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_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock', window );">Schedule of Lease Terms and Discount Rates [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 10%; width: 80%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr style="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="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b>December 31,</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b>2020</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><b>2019</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 62%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Weighted Average Remaining Lease Term - operating leases (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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4.4</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4.8</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);"><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;">Weighted Average Remaining Lease Term - finance leases (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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><span style="-sec-ix-hidden:c68815085">2.5</span></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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></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);"><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;">Weighted Average Discount Rate - operating leases</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.6</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.6</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><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;">Weighted Average Discount Rate - finance leases</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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><span style="-sec-ix-hidden:c68815089">0.5</span></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: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><span style="-sec-ix-hidden:c68815090">-</span></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>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_AssetsAndLiabilitiesLesseeTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 lessee's assets and liabilities.</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_AssetsAndLiabilitiesLesseeTableTextBlock</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>nonnum: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_prlb_LesseeLeaseLiabilityMaturityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted cash flows of operating and finance lease liability.</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_LesseeLeaseLiabilityMaturityTableTextBlock</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>nonnum: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_prlb_ScheduleOfLeaseExpenseTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 lease expenses incurred.</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_ScheduleOfLeaseExpenseTableTextBlock</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>nonnum: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_prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 weighted average remaining lease terms and discount 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;">prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock</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>nonnum: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>50
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024071032">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 14 - Accumulated Other Comprehensive Loss (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 55%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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;">Foreign currency translation adjustments</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></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; margin-left: 27pt; text-indent: -9pt;">Balance at beginning of period</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;">(7,018</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(8,492</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(5,234</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;">Other comprehensive (loss) income before reclassifications</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,598</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,474</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(3,258</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt; text-indent: -9pt;">Amounts reclassified from accumulated other comprehensive income (loss)</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: 1px 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; 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: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; 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: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; 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: 10pt; padding-bottom: 1px; 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; margin-left: 27pt; text-indent: -9pt;">Net current-period other comprehensive (loss) income</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,598</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,474</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(3,258</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Balance at end of period</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">(3,420</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">(7,018</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">(8,492</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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=121641772&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>nonnum: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>51
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407019831064">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Income Taxes (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock', window );">Schedule of Income before Income Tax, Domestic and Foreign [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;, Times, serif; text-indent: 0px;"><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: thin solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></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; width: 55%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#160;</td><td>&#160;</td><td style="width: 17px;">&#160;</td><td style="width: 209px;">&#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;, 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;">Domestic</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 17px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 209px; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">58,551</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">74,841</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">81,893</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;">Foreign</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 17px; 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: 209px; 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);">4,394</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,352</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">9,762</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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: 17px; 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: 209px; 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);">62,945</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">81,193</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">91,655</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock', window );">Schedule of Components of Income Tax Expense (Benefit) [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;, Times, serif; text-indent: 0px;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 55%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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;">Current:</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></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; margin-left: 18pt;">Federal</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;">2,128</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,991</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(782</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">State</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,136</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,882</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,078</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; margin-left: 18pt;">Foreign</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,241</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,544</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,810</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;">Deferred</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></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; margin-left: 18pt;">Federal</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,904</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,121</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,325</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; margin-left: 18pt;">State</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(431</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">269</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">538</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; margin-left: 18pt;">Foreign</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">210</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(809</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: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(430</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Valuation Allowance</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">890</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,540</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">528</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; 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;">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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">12,078</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">17,538</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</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);">15,067</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock', window );">Schedule of Effective Income Tax Rate Reconciliation [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;, Times, serif; text-indent: 0px;"><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; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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></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: 49%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Federal tax statutory 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21.0</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21.0</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21.0</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">State tax (net of federal benefit)</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.1</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.1</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.0</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;">Share based compensation</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(1.3</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.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;">&#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: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.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(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;">Valuation allowance against deferred tax 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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2.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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1.4</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0.7</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;">Research and development credit</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(3.7</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.8</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2.5</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Foreign rate differential</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.8</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.3</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.1</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Tax reserves</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1.4</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1.1</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.1</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">Provision to return difference</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">(1.4</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">)</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">-</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">-</td><td style="width: 1%; 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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Miscellaneous</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.1</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.4</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.5</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Transition tax</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: 14%; 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: 14%; 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(0.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="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;">Revaluation of deferred tax liability</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: 1px 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; 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: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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; border-bottom: 1px 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; 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: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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; border-bottom: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(0.5</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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</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);">&#160;</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: 3px double rgb(0, 0, 0);">19.2</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</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);">&#160;</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: 3px double rgb(0, 0, 0);">21.6</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</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);">&#160;</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: 3px double rgb(0, 0, 0);">16.4</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">%</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_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock', window );">Schedule of Deferred Tax Assets and Liabilities [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;, Times, serif; text-indent: 0px;"><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="6" style="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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></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; width: 66%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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="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;">Deferred tax assets:</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></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; margin-left: 18pt;">Accrued expenses</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2,155</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,362</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: 0px; margin: 0px; text-indent: 18pt;">Leases</td><td 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,598</td><td 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,337</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Stock-based compensation</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,356</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3,325</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; margin-left: 18pt;">Intangible 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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,693</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,171</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; margin-left: 18pt;">Inventories</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">172</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">169</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; margin-left: 18pt;">Other 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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,790</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">1,765</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; margin-left: 18pt;">Net operating loss</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,647</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6,513</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; margin-left: 36pt;">Less valuation allowance</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: 1px 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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(8,248</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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 deferred tax 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;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">10,273</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9,394</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;">Deferred tax liabilities:</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></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; margin-left: 18pt;">Depreciation</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(32,671</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(26,750</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Goodwill</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(7,858</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(5,590</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 0px; margin: 0px; text-indent: 18pt;">Leases</td><td 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);">(3,598</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: 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);">(3,337</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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total deferred tax liabilities</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(44,127</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(35,677</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">Net deferred tax liability</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(33,854</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(26,283</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">)</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_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock', window );">Schedule of Unrecognized Tax Benefits Roll Forward [Table Text Block]</a></td>
<td class="text">
    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: auto; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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; padding-bottom: 1px;">&#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);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;">December 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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="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="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; width: 66%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Balance at beginning of period</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,598</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,096</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;">Additions for tax positions of current year</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">324</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">592</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;">Additions for tax positions of prior 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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">475</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: 14%; 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="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;">Decrease related to expiration of statutes of limitations</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(567</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 1px 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; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(90</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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;">Balance at period end</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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,830</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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; 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;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,598</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 3px;">&#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_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 components of income tax expense attributable to continuing operations for each year presented including, but not limited to: current tax expense (benefit), deferred tax expense (benefit), investment tax credits, government grants, the benefits of operating loss carryforwards, tax expense that results from allocating certain tax benefits either directly to contributed capital or to reduce goodwill or other noncurrent intangible assets of an acquired entity, adjustments of a deferred tax liability or asset for enacted changes in tax laws or rates or a change in the tax status of the entity, and adjustments of the beginning-of-the-year balances of a valuation allowance because of a change in circumstances that causes a change in judgment about the realizability of the related deferred tax asset in future years.</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 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&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_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 components of net deferred tax asset or liability recognized in an entity's statement of financial position, including the following: the total of all deferred tax liabilities, the total of all deferred tax assets, the total valuation allowance recognized for deferred tax 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 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32537-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_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 reconciliation using percentage or dollar amounts of the reported amount of income tax expense attributable to continuing operations for the year to the amount of income tax expense that would result from applying domestic federal statutory tax rates to pretax 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://fasb.org/us-gaap/role/ref/legacyRef<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=84230637&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_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 before income tax between domestic and foreign jurisdictions.</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 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08.(h)(1)(i))<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_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 change in 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/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 55<br> -Paragraph 217<br> -URI http://asc.fasb.org/extlink&amp;oid=121610041&amp;loc=d3e36027-109320<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&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_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>52
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407022785864">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Segment Reporting (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Income from Operations:</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></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; margin-left: 18pt;">United States</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">98,762</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">108,594</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">115,710</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; margin-left: 18pt;">Europe</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">11,707</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">15,077</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,747</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; margin-left: 18pt;">Corporate Unallocated and Japan</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);">&#160;</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: 1px solid rgb(0, 0, 0);">(50,633</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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);">&#160;</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: 1px solid rgb(0, 0, 0);">(43,815</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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);">&#160;</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: 1px solid rgb(0, 0, 0);">(43,557</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">)</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: 18pt;">Total income from operations</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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">59,836</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">79,856</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">88,898</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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><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="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><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="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>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><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;"> <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;">&#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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">215,721</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">210,171</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">185,979</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; margin-left: 18pt;">Europe</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">59,388</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">45,019</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">34,577</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; margin-left: 18pt;">Japan</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);">&#160;</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: 1px solid rgb(0, 0, 0);">7,557</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">8,522</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">7,445</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">282,666</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">263,712</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">228,001</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#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_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock', window );">Expenditures for Additions to Long-lived Assets by Geographic Region [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Expenditures for additions to 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><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;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; 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;">&#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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">29,984</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">45,123</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">78,762</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;">Europe</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,574</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">14,743</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,576</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;">Japan</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);">&#160;</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: 1px solid rgb(0, 0, 0);">452</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">2,364</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">766</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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 expenditures for additions to 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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">47,010</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">62,230</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">87,104</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <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_DepreciationAndAmortizationByGeographicRegionTableTextBlock', window );">Depreciation and Amortization by Geographic Region [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Depreciation and Amortization:</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></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; margin-left: 18pt;">United States</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25,744</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">24,767</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">21,117</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; margin-left: 18pt;">Europe</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,024</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,746</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">4,679</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; margin-left: 18pt;">Japan</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);">&#160;</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: 1px solid rgb(0, 0, 0);">1,826</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">1,351</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">958</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">Total depreciation and amortization</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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">32,594</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">30,864</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">26,754</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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="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_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="margin-right: 10%; margin-left: 27pt; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Year Ended December 31,</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, Times, serif; font-size: 10pt; width: 49%;"> <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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2019</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#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: 1px solid rgb(0, 0, 0);"> <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:center;"><b><em style="font: inherit;">2018</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; 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;, 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>Revenue:</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></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; margin-left: 18pt;">United States</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">345,708</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">360,205</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">350,535</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; margin-left: 18pt;">Europe</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">74,796</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">82,805</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: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">80,889</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; margin-left: 18pt;">Japan</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);">&#160;</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: 1px solid rgb(0, 0, 0);">13,891</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">15,718</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; padding-bottom: 1px;">&#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);">&#160;</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: 1px solid rgb(0, 0, 0);">14,172</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; 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;, 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;">Total revenue</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: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">434,395</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">458,728</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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; border-bottom: 3px double rgb(0, 0, 0);">$</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: 3px double rgb(0, 0, 0);">445,596</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px; 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_DepreciationAndAmortizationByGeographicRegionTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 depreciation and amortization by geographic region.</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_DepreciationAndAmortizationByGeographicRegionTableTextBlock</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>nonnum: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_prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 expenditures for additions to long-lived assets by geographic region.</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_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock</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>nonnum: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_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>nonnum: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=120311839&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>nonnum: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=120311839&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>nonnum: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>53
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407027054920">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 2 - Summary of Significant Accounting Policies (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Jan. 01, 2019</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_CapitalizedComputerSoftwareNet', window );">Capitalized Computer Software, Net, Ending Balance</a></td>
<td class="nump">$ 49,400<span></span>
</td>
<td class="nump">$ 32,700<span></span>
</td>
<td class="nump">$ 16,700<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_GoodwillImpairmentLoss', window );">Goodwill, Impairment Loss</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>
</tr>
<tr 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_AdvertisingExpense', window );">Advertising Expense</a></td>
<td class="nump">11,500<span></span>
</td>
<td class="nump">13,000<span></span>
</td>
<td class="nump">11,800<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_ResearchAndDevelopmentExpense', window );">Research and Development Expense, Total</a></td>
<td class="nump">36,940<span></span>
</td>
<td class="nump">32,692<span></span>
</td>
<td class="nump">$ 28,735<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_OperatingLeaseRightOfUseAsset', window );">Operating Lease, Right-of-Use Asset</a></td>
<td class="nump">9,855<span></span>
</td>
<td class="nump">11,425<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_OperatingLeaseLiability', window );">Operating Lease, Liability, Total</a></td>
<td class="nump">$ 10,858<span></span>
</td>
<td class="nump">$ 11,905<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_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201602Member', window );">Accounting Standards Update 2016-02 [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_OperatingLeaseRightOfUseAsset', window );">Operating Lease, Right-of-Use Asset</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="nump">$ 13,100<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_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember', window );">Building [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_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">39 years<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_srt_RangeAxis=srt_MinimumMember', window );">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_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">3 years<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_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life (Year)</a></td>
<td class="text">2 years<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_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member] | Equipment [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_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">3 years<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_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member] | Office Furniture And Equipment [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_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">3 years<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_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member] | Computer Equipment [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_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">3 years<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_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member] | Land, Buildings and Improvements [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_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">10 years<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_srt_RangeAxis=srt_MaximumMember', window );">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_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">39 years<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_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life (Year)</a></td>
<td class="text">10 years<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_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member] | Equipment [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_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">15 years<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_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member] | Office Furniture And Equipment [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_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">7 years<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_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member] | Computer Equipment [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_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">5 years<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_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member] | Land, Buildings and Improvements [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_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life (Year)</a></td>
<td class="text">39 years<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_AdvertisingExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 charged to advertising expense for the period, which are expenses incurred with the objective of increasing revenue for a specified brand, 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://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 720<br> -SubTopic 35<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6420018&amp;loc=d3e36677-107848<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdvertisingExpense</td>
</tr>
<tr>
<td style="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_CapitalizedComputerSoftwareNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 carrying amount of capitalized computer software costs net of accumulated amortization 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://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 985<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6501960&amp;loc=d3e128462-111756<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CapitalizedComputerSoftwareNet</td>
</tr>
<tr>
<td style="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_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_GoodwillImpairmentLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 loss from the write-down 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 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13854-109267<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=121586364&amp;loc=d3e3602-108585<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 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13816-109267<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 2<br> -URI http://asc.fasb.org/extlink&amp;oid=99380562&amp;loc=d3e13777-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_GoodwillImpairmentLoss</td>
</tr>
<tr>
<td style="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_OperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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.</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=121603541&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_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="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=121603541&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_PropertyPlantAndEquipmentUsefulLife">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 long lived, physical assets used in the normal conduct of business and not intended for resale, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days. Examples include, but not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment.</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_PropertyPlantAndEquipmentUsefulLife</td>
</tr>
<tr>
<td style="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_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://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 2: 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_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201602Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_AdjustmentsForNewAccountingPronouncementsAxis=us-gaap_AccountingStandardsUpdate201602Member</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_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember</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_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember</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_PropertyPlantAndEquipmentByTypeAxis=prlb_OfficeFurnitureAndEquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_PropertyPlantAndEquipmentByTypeAxis=prlb_OfficeFurnitureAndEquipmentMember</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_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerEquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_PropertyPlantAndEquipmentByTypeAxis=us-gaap_ComputerEquipmentMember</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_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandBuildingsAndImprovementsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandBuildingsAndImprovementsMember</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>54
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407026807096">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Revenue - Disaggregation of Revenue (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></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">$ 434,395<span></span>
</td>
<td class="nump">$ 458,728<span></span>
</td>
<td class="nump">$ 445,596<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>
</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_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></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">217,992<span></span>
</td>
<td class="nump">217,415<span></span>
</td>
<td class="nump">210,523<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>
</tr>
<tr 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_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></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">131,587<span></span>
</td>
<td class="nump">155,473<span></span>
</td>
<td class="nump">153,521<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>
</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_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></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">62,502<span></span>
</td>
<td class="nump">61,352<span></span>
</td>
<td class="nump">53,342<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>
</tr>
<tr 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_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></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">18,838<span></span>
</td>
<td class="nump">21,000<span></span>
</td>
<td class="nump">24,998<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>
</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_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></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,476<span></span>
</td>
<td class="nump">3,488<span></span>
</td>
<td class="nump">3,212<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_StatementGeographicalAxis=country_US', window );">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>
</tr>
<tr 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_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></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">345,708<span></span>
</td>
<td class="nump">360,205<span></span>
</td>
<td class="nump">350,535<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_StatementGeographicalAxis=srt_EuropeMember', window );">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>
</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_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></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">74,796<span></span>
</td>
<td class="nump">82,805<span></span>
</td>
<td class="nump">80,889<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_StatementGeographicalAxis=country_JP', window );">JAPAN</a></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_DisaggregationOfRevenueAbstract', window );"><strong>Revenue:</strong></a></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">$ 13,891<span></span>
</td>
<td class="nump">$ 15,718<span></span>
</td>
<td class="nump">$ 14,172<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_DisaggregationOfRevenueAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_DisaggregationOfRevenueAbstract</td>
</tr>
<tr>
<td style="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_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=120311839&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=121604090&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=121604090&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=120311839&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=120311839&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>
<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>
<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_JP">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_JP</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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407026493992">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - 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="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">$ 50,867<span></span>
</td>
<td class="nump">$ 63,655<span></span>
</td>
<td class="nump">$ 76,588<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">26,737,425<span></span>
</td>
<td class="nump">26,866,985<span></span>
</td>
<td class="nump">26,982,614<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">158,932<span></span>
</td>
<td class="nump">182,438<span></span>
</td>
<td class="nump">296,202<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">26,896,357<span></span>
</td>
<td class="nump">27,049,423<span></span>
</td>
<td class="nump">27,278,816<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">$ 1.90<span></span>
</td>
<td class="nump">$ 2.37<span></span>
</td>
<td class="nump">$ 2.84<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">$ 1.89<span></span>
</td>
<td class="nump">$ 2.35<span></span>
</td>
<td class="nump">$ 2.81<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 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22583-107794<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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-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 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1448-109256<br><br>Reference 4: 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=109234566&amp;loc=d3e22595-107794<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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1337-109256<br><br>Reference 7: 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=120380238&amp;loc=d3e4984-109258<br><br>Reference 8: 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 9: 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=120380238&amp;loc=d3e3842-109258<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 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22644-107794<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=6371337&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 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=120395209&amp;loc=SL114868664-224227<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 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1252-109256<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 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=SL5780133-109256<br><br>Reference 15: 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>num: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=120380238&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=109234566&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=120380238&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=121326447&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=109234566&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=109234566&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=109234566&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=121326447&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 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 10: 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=6371337&amp;loc=d3e3550-109257<br><br>Reference 11: 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 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 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-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 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1337-109256<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=120395209&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>num: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=121326447&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=6371337&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=121326447&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=121326447&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://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=121641772&amp;loc=SL7669619-108580<br><br>Reference 2: 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=120311839&amp;loc=d3e8924-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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<br><br>Reference 4: 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 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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 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 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 4<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22595-107794<br><br>Reference 9: 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=121641772&amp;loc=SL7669625-108580<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=120311839&amp;loc=d3e8736-108599<br><br>Reference 11: 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 12: 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=120395209&amp;loc=SL114868664-224227<br><br>Reference 13: 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=121586364&amp;loc=d3e3602-108585<br><br>Reference 14: 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=109234566&amp;loc=d3e22499-107794<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=109234566&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 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=75031198&amp;loc=d3e14064-108612<br><br>Reference 17: 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=120311839&amp;loc=d3e8906-108599<br><br>Reference 18: 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=109234566&amp;loc=d3e22583-107794<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://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=121326447&amp;loc=SL5780133-109256<br><br>Reference 21: 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 22: 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=120311839&amp;loc=d3e8933-108599<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=109234566&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_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=6371337&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=121326447&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=6371337&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=121326447&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>56
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024549624">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Goodwill and Other Intangible Assets (Details Textual) - USD ($)<br> $ in Millions</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_AmortizationOfIntangibleAssets', window );">Amortization of Intangible Assets, Total</a></td>
<td class="nump">$ 3.0<span></span>
</td>
<td class="nump">$ 3.5<span></span>
</td>
<td class="nump">$ 3.2<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=121586364&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></div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>57
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407031687704">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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, balance as of the beginning of the period</a></td>
<td class="nump">$ 128,752<span></span>
</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">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_Goodwill', window );">Goodwill, balance as of the end of the period</a></td>
<td class="nump">128,752<span></span>
</td>
<td class="nump">128,752<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_StatementGeographicalAxis=country_US', window );">UNITED STATES</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_Goodwill', window );">Goodwill, balance as of the beginning of the period</a></td>
<td class="nump">123,883<span></span>
</td>
<td class="nump">123,883<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">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_Goodwill', window );">Goodwill, balance as of the end of the period</a></td>
<td class="nump">123,883<span></span>
</td>
<td class="nump">123,883<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_StatementGeographicalAxis=srt_EuropeMember', window );">Europe [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_Goodwill', window );">Goodwill, balance as of the beginning of the period</a></td>
<td class="nump">4,239<span></span>
</td>
<td class="nump">4,239<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">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_Goodwill', window );">Goodwill, balance as of the end of the period</a></td>
<td class="nump">4,239<span></span>
</td>
<td class="nump">4,239<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_StatementGeographicalAxis=country_JP', window );">JAPAN</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_Goodwill', window );">Goodwill, balance as of the beginning of the period</a></td>
<td class="nump">630<span></span>
</td>
<td class="nump">630<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">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_Goodwill', window );">Goodwill, balance as of the end of the period</a></td>
<td class="nump">$ 630<span></span>
</td>
<td class="nump">$ 630<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://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_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>
<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_JP">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_JP</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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407027909112">
<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">12 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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">$ 24,499<span></span>
</td>
<td class="nump">$ 25,829<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">(10,149)<span></span>
</td>
<td class="num">(8,460)<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">$ 14,350<span></span>
</td>
<td class="nump">17,369<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_RangeAxis=srt_MinimumMember', window );">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">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_srt_RangeAxis=srt_MaximumMember', 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_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="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">620<span></span>
</td>
<td class="nump">527<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">$ 310<span></span>
</td>
<td class="nump">403<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">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]</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">$ 270<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">(238)<span></span>
</td>
<td class="num">(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_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 32<span></span>
</td>
<td class="nump">48<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 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">(3,645)<span></span>
</td>
<td class="num">(2,275)<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">$ 9,584<span></span>
</td>
<td class="nump">10,954<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 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]</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">$ 10,070<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">(5,646)<span></span>
</td>
<td class="num">(4,106)<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">$ 4,424<span></span>
</td>
<td class="nump">$ 5,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_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_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">6 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_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_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_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=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>59
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407027103000">
<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>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths', window );">2021</a></td>
<td class="nump">$ 3,016<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_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo', window );">2022</a></td>
<td class="nump">3,016<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_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree', window );">2023</a></td>
<td class="nump">2,813<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_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour', window );">2024</a></td>
<td class="nump">1,400<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_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive', window );">2025</a></td>
<td class="nump">1,369<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_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive', window );">Thereafter</a></td>
<td class="nump">2,736<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">$ 14,350<span></span>
</td>
<td class="nump">$ 17,369<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_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 fifth 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;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive</td>
</tr>
<tr>
<td style="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_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_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 fifth 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_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive</td>
</tr>
<tr>
<td style="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>60
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407031262680">
<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) - Fair Value, Recurring [Member] - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">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="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_MoneyMarketFundsAtCarryingValue', window );">Money market mutual funds</a></td>
<td class="nump">$ 55,378<span></span>
</td>
<td class="nump">$ 68,962<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_AssetsFairValueDisclosure', window );">Total</a></td>
<td class="nump">55,378<span></span>
</td>
<td class="nump">68,962<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, 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_MoneyMarketFundsAtCarryingValue', window );">Money market mutual funds</a></td>
<td class="nump">0<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_AssetsFairValueDisclosure', 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, Inputs, Level 3 [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_MoneyMarketFundsAtCarryingValue', window );">Money market mutual funds</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_AssetsFairValueDisclosure', window );">Total</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=117815213&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_MoneyMarketFundsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Investment in short-term money-market instruments (such as commercial paper, banker's acceptances, repurchase agreements, government securities, certificates of deposit, and so forth) which are highly liquid (that is, readily convertible to known amounts of cash) and so near their maturity that they present an insignificant risk of changes in value because of changes in interest rates. Generally, only investments with original maturities of three months or less qualify as cash equivalents by definition. Original maturity means an original maturity to the entity holding the investment. For example, both a three-month US Treasury bill and a three-year Treasury note purchased three months from maturity qualify as cash equivalents. However, a Treasury note purchased three-years ago does not become a cash equivalent when its remaining maturity is three months.</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_MoneyMarketFundsAtCarryingValue</td>
</tr>
<tr>
<td style="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_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_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>61
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407027874888">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 7 - Marketable Securities - Short-term and Long-term Marketable Securities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="nump">$ 93,445<span></span>
</td>
<td class="nump">$ 48,397<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="nump">393<span></span>
</td>
<td class="nump">112<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="num">(23)<span></span>
</td>
<td class="num">(22)<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="nump">93,815<span></span>
</td>
<td class="nump">48,487<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_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="nump">5,395<span></span>
</td>
<td class="nump">1,484<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="nump">93<span></span>
</td>
<td class="nump">22<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="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_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="nump">5,488<span></span>
</td>
<td class="nump">1,506<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_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="nump">18,500<span></span>
</td>
<td class="nump">6,274<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="nump">6<span></span>
</td>
<td class="nump">1<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="num">(10)<span></span>
</td>
<td class="num">(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_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="nump">18,496<span></span>
</td>
<td class="nump">6,268<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_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="nump">42,048<span></span>
</td>
<td class="nump">26,944<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="nump">211<span></span>
</td>
<td class="nump">80<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="num">(11)<span></span>
</td>
<td class="num">(12)<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="nump">42,248<span></span>
</td>
<td class="nump">27,012<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_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="nump">25,003<span></span>
</td>
<td class="nump">10,204<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="nump">83<span></span>
</td>
<td class="nump">9<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="num">(2)<span></span>
</td>
<td class="num">(3)<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="nump">25,084<span></span>
</td>
<td class="nump">10,210<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="nump">2,499<span></span>
</td>
<td class="nump">3,491<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="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_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss', window );">Unrealized Losses</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_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="nump">$ 2,499<span></span>
</td>
<td class="nump">$ 3,491<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_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 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/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=121553693&amp;loc=d3e26610-111562<br><br>Reference 2: 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=121645371&amp;loc=d3e27232-111563<br><br>Reference 3: 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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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=121645371&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=121645371&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=121645371&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=121645371&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=121645371&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=121645371&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_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_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_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_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>62
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407222247464">
<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) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount', window );">Due in one year or less</a></td>
<td class="nump">$ 34,088<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_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount', window );">Due after one year through five years</a></td>
<td class="nump">59,357<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_HeldToMaturitySecurities', window );">Total marketable securities</a></td>
<td class="nump">$ 93,445<span></span>
</td>
<td class="nump">$ 48,397<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_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 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/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=121553693&amp;loc=d3e26610-111562<br><br>Reference 2: 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=121645371&amp;loc=d3e27232-111563<br><br>Reference 3: 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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 amortized cost (held-to-maturity), with single maturity date and allocated without single maturity date, maturing in second through fifth 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://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 5<br> -Subparagraph (f)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121645371&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 320<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120252992&amp;loc=d3e62586-112803<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount</td>
</tr>
<tr>
<td style="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_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 amortized cost (held-to-maturity), with single maturity date and allocated without single maturity date, maturing 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://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 320<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=120252992&amp;loc=d3e62586-112803<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 5<br> -Subparagraph (f)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=121645371&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_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount</td>
</tr>
<tr>
<td style="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>63
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407122100328">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Property and Equipment (Details Textual) - USD ($)<br> $ in Millions</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_Depreciation', window );">Depreciation, Total</a></td>
<td class="nump">$ 29.6<span></span>
</td>
<td class="nump">$ 27.4<span></span>
</td>
<td class="nump">$ 23.5<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_Depreciation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives. Includes production and non-production related depreciation.</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 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<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=121586364&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_Depreciation</td>
</tr>
<tr>
<td style="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>64
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407025598952">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 8 - Property and Equipment - Components of Property and Equipment (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_Land', window );">Land</a></td>
<td class="nump">$ 14,028<span></span>
</td>
<td class="nump">$ 14,098<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_BuildingsAndImprovementsGross', window );">Buildings and improvements</a></td>
<td class="nump">77,285<span></span>
</td>
<td class="nump">75,843<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_MachineryAndEquipmentGross', window );">Machinery and equipment</a></td>
<td class="nump">221,301<span></span>
</td>
<td class="nump">208,954<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_ComputerHardwareAndSoftwareGross', window );">Computer hardware and software</a></td>
<td class="nump">79,207<span></span>
</td>
<td class="nump">24,953<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_LeaseholdImprovementsGross', window );">Leasehold improvements</a></td>
<td class="nump">7,821<span></span>
</td>
<td class="nump">7,341<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_ConstructionInProgressGross', window );">Construction in progress</a></td>
<td class="nump">33,780<span></span>
</td>
<td class="nump">54,313<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_PropertyPlantAndEquipmentGross', window );">Total</a></td>
<td class="nump">433,422<span></span>
</td>
<td class="nump">385,502<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_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment', window );">Accumulated depreciation and amortization</a></td>
<td class="num">(150,756)<span></span>
</td>
<td class="num">(121,790)<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_PropertyPlantAndEquipmentNet', window );">Property and equipment, net</a></td>
<td class="nump">$ 282,666<span></span>
</td>
<td class="nump">$ 263,712<span></span>
</td>
<td class="nump">$ 228,001<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_ComputerHardwareAndSoftwareGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 gross amount of computer hardware and software 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>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_ComputerHardwareAndSoftwareGross</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_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce 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 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<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.14)<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_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="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_BuildingsAndImprovementsGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accumulated depreciation of building structures held for productive use including addition, improvement, or renovation to the structure, including, but not limited to, interior masonry, interior flooring, electrical, and plumbing.</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 4<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=121566466&amp;loc=d3e6812-107765<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> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BuildingsAndImprovementsGross</td>
</tr>
<tr>
<td style="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_ConstructionInProgressGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 structure or a modification to a structure under construction. Includes recently completed structures or modifications to structures that have not been placed into service.</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 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConstructionInProgressGross</td>
</tr>
<tr>
<td style="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_Land">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accumulated depletion of real estate held for productive use, excluding land held 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 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 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 4<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=121566466&amp;loc=d3e6812-107765<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Land</td>
</tr>
<tr>
<td style="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_LeaseholdImprovementsGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accumulated depreciation of additions or improvements to assets held under a lease 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 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=121566466&amp;loc=d3e6812-107765<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> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LeaseholdImprovementsGross</td>
</tr>
<tr>
<td style="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_MachineryAndEquipmentGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accumulated depreciation of tangible personal property used to produce goods and services, including, but is not limited to, tools, dies and molds, computer and office equipment.</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 4<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=121566466&amp;loc=d3e6812-107765<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> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MachineryAndEquipmentGross</td>
</tr>
<tr>
<td style="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_PropertyPlantAndEquipmentGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business 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 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<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.13)<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_PropertyPlantAndEquipmentGross</td>
</tr>
<tr>
<td style="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://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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>65
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407130820120">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 9 - Inventory - Inventory (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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">$ 11,122<span></span>
</td>
<td class="nump">$ 10,319<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">(260)<span></span>
</td>
<td class="num">(244)<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">$ 10,862<span></span>
</td>
<td class="nump">$ 10,075<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=121566466&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.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 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09)<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<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_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>66
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024279240">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 10 - Financing Obligations (Details Textual)<br> $ in Thousands</strong></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_LineOfCredit', window );">Long-term Line of Credit, Total</a></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_LineOfCredit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 carrying value as of the balance sheet date of the current and noncurrent portions of long-term obligations drawn from a line of credit, which is a bank's commitment to make loans up to a specific amount. Examples of items that might be included in the application of this element may consist of letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to a maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line. Includes short-term obligations that would normally be classified as current liabilities but for which (a) postbalance sheet date issuance of a long term obligation to refinance the short term obligation on a long term basis, or (b) the enterprise has entered into a financing agreement that clearly permits the enterprise to refinance the short-term obligation on a long term basis and the following conditions are met (1) the agreement does not expire within 1 year and is not cancelable by the lender except for violation of an objectively determinable provision, (2) no violation exists at the BS date, and (3) the lender has entered into the financing agreement is expected to be financially capable of honoring the agreement.</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(22))<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 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(16))<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 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(16))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LineOfCredit</td>
</tr>
<tr>
<td style="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>67
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407027488008">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Employee Benefit Plans (Details Textual) - 401(k) Retirement Plan [Member]<br> $ in Millions</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2018 </div>
<div>USD ($)</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_RetirementPlanTypeAxis=prlb_The401KRetirementPlanMember', window );">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>
</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_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan', window );">Minimum Number Of Employee Working Hours Required To Be Eligible To Participate In 401K Plan</a></td>
<td class="nump">20<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_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan', window );">Minimum Service Period Of Employees To Avail Benefit Under Defined Contribution Benefit Plan (Month)</a></td>
<td class="text">3 months<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_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent', window );">Defined Contribution Plan, Maximum Annual Contributions Per Employee, Percent</a></td>
<td class="nump">50.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_DefinedContributionPlanEmployerDiscretionaryContributionAmount', window );">Defined Contribution Plan, Employer Discretionary Contribution Amount</a></td>
<td class="nump">$ 3.3<span></span>
</td>
<td class="nump">$ 3.1<span></span>
</td>
<td class="nump">$ 2.7<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_RetirementPlanTypeAxis=prlb_The401KRetirementPlanMember', window );">Foreign Plan [Member]</a></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_DefinedContributionPlanEmployerDiscretionaryContributionAmount', window );">Defined Contribution Plan, Employer Discretionary Contribution Amount</a></td>
<td class="nump">$ 0.5<span></span>
</td>
<td class="nump">$ 0.3<span></span>
</td>
<td class="nump">$ 0.3<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Minimum Number of Employee Working Hours Required to be Eligible to Participate in 401(k) 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_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan</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:integerItemType</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_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Minimum Service Period Of Employees To Avail Benefit Under Defined Contribution Benefit 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_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan</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_us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 discretionary contributions made by an employer to a defined contribution 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;">us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount</td>
</tr>
<tr>
<td style="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_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Maximum percentage of employee gross pay the employee may contribute to a defined contribution 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;">us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num: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_RetirementPlanTypeAxis=prlb_The401KRetirementPlanMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_RetirementPlanTypeAxis=prlb_The401KRetirementPlanMember</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_RetirementPlanSponsorLocationAxis=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;">us-gaap_RetirementPlanSponsorLocationAxis=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>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetirementPlanSponsorLocationAxis=us-gaap_ForeignPlanMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_RetirementPlanSponsorLocationAxis=us-gaap_ForeignPlanMember</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>68
<FILENAME>R53.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407030526408">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Stock-based Compensation (Details Textual) - USD ($)<br> $ in Millions</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue', window );">Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercises in Period, Intrinsic Value</a></td>
<td class="nump">$ 5.4<span></span>
</td>
<td class="nump">$ 0.9<span></span>
</td>
<td class="nump">$ 13.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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2', window );">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term (Year)</a></td>
<td class="text">6 years 9 months 18 days<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue', window );">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Intrinsic Value</a></td>
<td class="nump">$ 15.4<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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Weighted Average Remaining Contractual Term (Year)</a></td>
<td class="text">5 years<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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Intrinsic Value</a></td>
<td class="nump">$ 7.9<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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested in Period, Fair Value</a></td>
<td class="nump">$ 1.8<span></span>
</td>
<td class="nump">$ 1.5<span></span>
</td>
<td class="nump">$ 1.5<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>
</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="nump">15.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 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">6 months<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_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent', window );">Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Percent</a></td>
<td class="nump">85.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_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Shares Issued, Shares, Share-based Payment Arrangement, after Forfeiture, Total (in shares)</a></td>
<td class="nump">42,235<span></span>
</td>
<td class="nump">41,615<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_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased', window );">Employee Stock Purchase Plan, Weighted Average Purchase Price of Shares Purchased (in shares)</a></td>
<td class="nump">85.85<span></span>
</td>
<td class="nump">86.70<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant', window );">Share-based Compensation Arrangement by Share-based Payment Award, Number of Shares Available for Grant (in shares)</a></td>
<td class="nump">1,126,595<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_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>
</tr>
<tr 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">10 years<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">$ 4.2<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_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)</a></td>
<td class="text">2 years 7 months 6 days<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_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>
</tr>
<tr 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">4 years<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_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>
</tr>
<tr 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">5 years<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_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>
</tr>
<tr 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">$ 21.2<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_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)</a></td>
<td class="text">2 years 4 months 24 days<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_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>
</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">4 years<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_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>
</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">5 years<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_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>
</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">3 years<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_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total</a></td>
<td class="nump">$ 1.7<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_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)</a></td>
<td class="text">2 years 1 month 6 days<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_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="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_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="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_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Change in Amount</a></td>
<td class="nump">$ 1.6<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_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>
</tr>
<tr 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">10 years<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_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_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 purchase price of shares purchased 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_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased</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_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>num: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>num: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_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 change in 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>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_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount</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>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>num: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_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 difference between the maximum number of shares (or other type of equity) authorized for issuance under the plan (including the effects of amendments and adjustments), and the sum of: 1) the number of shares (or other type of equity) already issued upon exercise of options or other equity-based awards under the plan; and 2) shares (or other type of equity) reserved for issuance on granting of outstanding awards, net of cancellations and forfeitures, if 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 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_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant</td>
</tr>
<tr>
<td style="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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 difference between fair value of underlying shares on dates of exercise and exercise price on options exercised (or share units converted) into 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 (d)(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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue</td>
</tr>
<tr>
<td style="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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 by which the current fair value of the underlying stock exceeds the exercise price of options outstanding.</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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue</td>
</tr>
<tr>
<td style="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_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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 difference between fair value of the underlying shares reserved for issuance and exercise price of vested portions of options outstanding and currently exercisable.</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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1</td>
</tr>
<tr>
<td style="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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 remaining contractual term for vested portions of options outstanding and currently exercisable or convertible, 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> -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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1</td>
</tr>
<tr>
<td style="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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 remaining contractual term for option awards outstanding, 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 (e)(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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2</td>
</tr>
<tr>
<td style="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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 options vested. Excludes equity instruments other than options, for example, but not limited to, share units, stock appreciation rights, restricted 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 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1</td>
</tr>
<tr>
<td style="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_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>num: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_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=109259400&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_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>69
<FILENAME>R54.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407031312232">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Stock-based Compensation - Stock-based Compensation Expense (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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 );">Allocated share-based compensation expense</a></td>
<td class="nump">$ 14,673<span></span>
</td>
<td class="nump">$ 10,781<span></span>
</td>
<td class="nump">$ 10,928<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_IncomeStatementLocationAxis=us-gaap_CostOfSalesMember', window );">Cost of Sales [Member]</a></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_AllocatedShareBasedCompensationExpense', window );">Allocated share-based compensation expense</a></td>
<td class="nump">2,451<span></span>
</td>
<td class="nump">2,056<span></span>
</td>
<td class="nump">1,543<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_IncomeStatementLocationAxis=us-gaap_SellingAndMarketingExpenseMember', window );">Selling and Marketing Expense [Member]</a></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_AllocatedShareBasedCompensationExpense', window );">Allocated share-based compensation expense</a></td>
<td class="nump">3,121<span></span>
</td>
<td class="nump">2,632<span></span>
</td>
<td class="nump">1,942<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_IncomeStatementLocationAxis=us-gaap_ResearchAndDevelopmentExpenseMember', window );">Research and Development Expense [Member]</a></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_AllocatedShareBasedCompensationExpense', window );">Allocated share-based compensation expense</a></td>
<td class="nump">2,440<span></span>
</td>
<td class="nump">1,851<span></span>
</td>
<td class="nump">1,517<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_IncomeStatementLocationAxis=us-gaap_GeneralAndAdministrativeExpenseMember', window );">General and Administrative Expense [Member]</a></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_AllocatedShareBasedCompensationExpense', window );">Allocated share-based compensation expense</a></td>
<td class="nump">6,661<span></span>
</td>
<td class="nump">4,242<span></span>
</td>
<td class="nump">5,926<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_StockOptionsRestrictedStockAndOtherMember', window );">Stock Options, Restricted Stock, and Other [Member]</a></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_AllocatedShareBasedCompensationExpense', window );">Allocated share-based compensation expense</a></td>
<td class="nump">13,327<span></span>
</td>
<td class="nump">9,591<span></span>
</td>
<td class="nump">10,113<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>
</tr>
<tr 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 );">Allocated share-based compensation expense</a></td>
<td class="nump">$ 1,346<span></span>
</td>
<td class="nump">$ 1,190<span></span>
</td>
<td class="nump">$ 815<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_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=115993241&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_IncomeStatementLocationAxis=us-gaap_CostOfSalesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_IncomeStatementLocationAxis=us-gaap_CostOfSalesMember</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_IncomeStatementLocationAxis=us-gaap_SellingAndMarketingExpenseMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_IncomeStatementLocationAxis=us-gaap_SellingAndMarketingExpenseMember</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_IncomeStatementLocationAxis=us-gaap_ResearchAndDevelopmentExpenseMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_IncomeStatementLocationAxis=us-gaap_ResearchAndDevelopmentExpenseMember</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_IncomeStatementLocationAxis=us-gaap_GeneralAndAdministrativeExpenseMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_IncomeStatementLocationAxis=us-gaap_GeneralAndAdministrativeExpenseMember</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=prlb_StockOptionsRestrictedStockAndOtherMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_StockOptionsRestrictedStockAndOtherMember</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=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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>70
<FILENAME>R55.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407113039496">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details) - Share-based Payment Arrangement, Option [Member] - $ / shares<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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>
<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>
<td class="nump">0.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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Weighted average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 45.32<span></span>
</td>
<td class="nump">$ 47.84<span></span>
</td>
<td class="nump">$ 50.08<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>
<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.50%<span></span>
</td>
<td class="nump">2.35%<span></span>
</td>
<td class="nump">2.52%<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">42.40%<span></span>
</td>
<td class="nump">42.52%<span></span>
</td>
<td class="nump">41.68%<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>
<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">1.47%<span></span>
</td>
<td class="nump">2.58%<span></span>
</td>
<td class="nump">3.07%<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">43.83%<span></span>
</td>
<td class="nump">42.74%<span></span>
</td>
<td class="nump">42.22%<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>num: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>num: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>num: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>num: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_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=115993241&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>71
<FILENAME>R56.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407026634680">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Stock-based Compensation - Stock Option Activity (Details) - $ / shares<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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)</a></td>
<td class="nump">276,266<span></span>
</td>
<td class="nump">252,616<span></span>
</td>
<td class="nump">399,055<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)</a></td>
<td class="nump">$ 72.38<span></span>
</td>
<td class="nump">$ 64.71<span></span>
</td>
<td class="nump">$ 51.13<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)</a></td>
<td class="nump">60,065<span></span>
</td>
<td class="nump">53,708<span></span>
</td>
<td class="nump">36,600<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)</a></td>
<td class="nump">$ 105.79<span></span>
</td>
<td class="nump">$ 105.81<span></span>
</td>
<td class="nump">$ 110.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_StockIssuedDuringPeriodSharesStockOptionsExercised', window );">Exercised (in shares)</a></td>
<td class="num">(68,958)<span></span>
</td>
<td class="num">(16,079)<span></span>
</td>
<td class="num">(155,765)<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)</a></td>
<td class="nump">$ 57.00<span></span>
</td>
<td class="nump">$ 48.67<span></span>
</td>
<td class="nump">$ 38.92<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 );">Cancelled (in shares)</a></td>
<td class="num">(37,842)<span></span>
</td>
<td class="num">(13,979)<span></span>
</td>
<td class="num">(27,274)<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 );">Cancelled, weighted-average exercise price (in dollars per share)</a></td>
<td class="nump">$ 67.92<span></span>
</td>
<td class="nump">$ 89.50<span></span>
</td>
<td class="nump">$ 74.35<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)</a></td>
<td class="nump">229,531<span></span>
</td>
<td class="nump">276,266<span></span>
</td>
<td class="nump">252,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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, weighted-average exercise price (in dollars per share)</a></td>
<td class="nump">$ 86.46<span></span>
</td>
<td class="nump">$ 72.38<span></span>
</td>
<td class="nump">$ 64.71<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)</a></td>
<td class="nump">94,318<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice', window );">Options exercisable, weighted-average exercise price (in dollars per share)</a></td>
<td class="nump">$ 69.36<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_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>num: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>num: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>num: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>num: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>num: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=109259400&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>72
<FILENAME>R57.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407030631576">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Stock-based Compensation - Information about Stock Options Outstanding (Details) - $ / shares<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</div></th>
<th class="th"><div>Dec. 31, 2017</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, vested and expected to vest, number outstanding (in shares)</a></td>
<td class="nump">229,531<span></span>
</td>
<td class="nump">276,266<span></span>
</td>
<td class="nump">252,616<span></span>
</td>
<td class="nump">399,055<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, vested and expected to vest, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 86.46<span></span>
</td>
<td class="nump">$ 72.38<span></span>
</td>
<td class="nump">$ 64.71<span></span>
</td>
<td class="nump">$ 51.13<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeOneMember', window );">Exercise Price Range One [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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit', window );">Range of exercise prices, lower limit (in dollars per share)</a></td>
<td class="text"> <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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Options outstanding, vested and expected to vest, number outstanding (in shares)</a></td>
<td class="nump">5,964<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit', window );">Range of exercise prices, upper limit (in dollars per share)</a></td>
<td class="text"> <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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1', window );">Options outstanding, vested and expected to vest, weighted average remaining contractual life (Year)</a></td>
<td class="text">1 year 4 months 6 days<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, vested and expected to vest, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 30.58<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions', window );">Options exercisable, number exercisable (in shares)</a></td>
<td class="nump">5,964<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_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1', window );">Options exercisable, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 30.58<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeTwoMember', window );">Exercise Price Range Two [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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit', window );">Range of exercise prices, lower limit (in dollars per share)</a></td>
<td class="text"> <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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Options outstanding, vested and expected to vest, number outstanding (in shares)</a></td>
<td class="nump">78,482<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit', window );">Range of exercise prices, upper limit (in dollars per share)</a></td>
<td class="text"> <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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1', window );">Options outstanding, vested and expected to vest, weighted average remaining contractual life (Year)</a></td>
<td class="text">4 years 9 months 21 days<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, vested and expected to vest, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 57.51<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions', window );">Options exercisable, number exercisable (in shares)</a></td>
<td class="nump">56,032<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_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1', window );">Options exercisable, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 57.18<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeThreeMember', window );">Exercise Price Range Three [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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit', window );">Range of exercise prices, lower limit (in dollars per share)</a></td>
<td class="text"> <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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Options outstanding, vested and expected to vest, number outstanding (in shares)</a></td>
<td class="nump">10,591<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit', window );">Range of exercise prices, upper limit (in dollars per share)</a></td>
<td class="text"> <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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1', window );">Options outstanding, vested and expected to vest, weighted average remaining contractual life (Year)</a></td>
<td class="text">4 years 5 months 1 day<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, vested and expected to vest, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 74.05<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions', window );">Options exercisable, number exercisable (in shares)</a></td>
<td class="nump">9,343<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_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1', window );">Options exercisable, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 71.09<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeFourMember', window );">Exercise Price Range Four [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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit', window );">Range of exercise prices, lower limit (in dollars per share)</a></td>
<td class="text"> <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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Options outstanding, vested and expected to vest, number outstanding (in shares)</a></td>
<td class="nump">134,494<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit', window );">Range of exercise prices, upper limit (in dollars per share)</a></td>
<td class="text"> <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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1', window );">Options outstanding, vested and expected to vest, weighted average remaining contractual life (Year)</a></td>
<td class="text">8 years 5 months 12 days<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, vested and expected to vest, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 106.81<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions', window );">Options exercisable, number exercisable (in shares)</a></td>
<td class="nump">22,979<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_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1', window );">Options exercisable, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 108.41<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_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>num: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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 floor of a customized range of exercise prices for purposes of disclosing shares potentially issuable under outstanding stock option awards on all stock option plans and other required information pertaining to awards in the customized range.</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 (g)<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num: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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 ceiling of a customized range of exercise prices for purposes of disclosing shares potentially issuable under outstanding stock option awards on all stock option plans and other required information pertaining to awards in the customized range.</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 (g)<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num: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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 remaining contractual term for fully vested and expected to vest options outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.</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 (e)(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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1</td>
</tr>
<tr>
<td style="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_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 exercise price as of the balance sheet date for those equity-based payment arrangements exercisable and outstanding.</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_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num: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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeOneMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeOneMember</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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeTwoMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeTwoMember</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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeThreeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeThreeMember</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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeFourMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis=prlb_ExercisePriceRangeFourMember</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>73
<FILENAME>R58.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407122407560">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Stock-based Compensation - Restricted Stock Options (Details) - Restricted Stock [Member] - $ / shares<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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)</a></td>
<td class="nump">314,973<span></span>
</td>
<td class="nump">323,921<span></span>
</td>
<td class="nump">334,831<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)</a></td>
<td class="nump">$ 89.55<span></span>
</td>
<td class="nump">$ 79.85<span></span>
</td>
<td class="nump">$ 63.29<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)</a></td>
<td class="nump">108,179<span></span>
</td>
<td class="nump">115,471<span></span>
</td>
<td class="nump">106,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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Granted, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 111.76<span></span>
</td>
<td class="nump">$ 106.35<span></span>
</td>
<td class="nump">$ 115.41<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)</a></td>
<td class="num">(101,941)<span></span>
</td>
<td class="num">(92,597)<span></span>
</td>
<td class="num">(86,191)<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)</a></td>
<td class="nump">$ 84.70<span></span>
</td>
<td class="nump">$ 77.25<span></span>
</td>
<td class="nump">$ 63.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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod', window );">Forfeited (in shares)</a></td>
<td class="num">(14,012)<span></span>
</td>
<td class="num">(31,822)<span></span>
</td>
<td class="num">(31,574)<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)</a></td>
<td class="nump">$ 94.24<span></span>
</td>
<td class="nump">$ 87.58<span></span>
</td>
<td class="nump">$ 68.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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber', window );">Restricted stock (in shares)</a></td>
<td class="nump">307,199<span></span>
</td>
<td class="nump">314,973<span></span>
</td>
<td class="nump">323,921<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)</a></td>
<td class="nump">$ 98.87<span></span>
</td>
<td class="nump">$ 89.55<span></span>
</td>
<td class="nump">$ 79.85<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>num: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>num: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>num: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>num: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>74
<FILENAME>R59.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407026341848">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Stock-based Compensation - Performance Stock (Details) - Performance Shares [Member] - $ / shares<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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)</a></td>
<td class="nump">9,383<span></span>
</td>
<td class="nump">52,140<span></span>
</td>
<td class="nump">25,707<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)</a></td>
<td class="nump">$ 58.35<span></span>
</td>
<td class="nump">$ 76.54<span></span>
</td>
<td class="nump">$ 58.35<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)</a></td>
<td class="nump">19,956<span></span>
</td>
<td class="nump">21,434<span></span>
</td>
<td class="nump">20,006<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)</a></td>
<td class="nump">$ 118.66<span></span>
</td>
<td class="nump">$ 104.99<span></span>
</td>
<td class="nump">$ 105.75<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)</a></td>
<td class="num">(7,113)<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue', window );">Restrictions lapsed, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 58.35<span></span>
</td>
<td class="nump">$ 0<span></span>
</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)</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">(61,816)<span></span>
</td>
<td class="nump">6,427<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)</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 88.06<span></span>
</td>
<td class="nump">$ 58.35<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)</a></td>
<td class="num">(2,270)<span></span>
</td>
<td class="num">(2,375)<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue', window );">Forfeited, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 58.35<span></span>
</td>
<td class="nump">$ 105.37<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod', window );">Granted (in shares)</a></td>
<td class="nump">19,956<span></span>
</td>
<td class="nump">21,434<span></span>
</td>
<td class="nump">20,006<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod', window );">Restrictions lapsed (in shares)</a></td>
<td class="nump">7,113<span></span>
</td>
<td class="nump">0<span></span>
</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_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue', window );">Performance change, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 88.06<span></span>
</td>
<td class="nump">$ 58.35<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod', window );">Forfeited (in shares)</a></td>
<td class="num">(2,270)<span></span>
</td>
<td class="num">(2,375)<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod', window );">Restrictions lapsed (in shares)</a></td>
<td class="num">(7,113)<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_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions', window );">Performance stock (in shares)</a></td>
<td class="nump">19,956<span></span>
</td>
<td class="nump">9,383<span></span>
</td>
<td class="nump">52,140<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Restricted stock, weighted-average grant date fair value (in dollars per share)</a></td>
<td class="nump">$ 118.66<span></span>
</td>
<td class="nump">$ 58.35<span></span>
</td>
<td class="nump">$ 76.54<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>num: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>num: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>num: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>num: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>num: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>75
<FILENAME>R60.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407025593208">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Stock-based Compensation - Assumptions Used in the Valuation of Performance Stock (Details) - Performance Shares [Member]<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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<span></span>
</td>
<td class="text">6 years<span></span>
</td>
<td class="text">6 years<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>
<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_PerformanceSharesMember', window );">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>
</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.12%<span></span>
</td>
<td class="nump">1.59%<span></span>
</td>
<td class="nump">2.06%<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>
<td class="nump">31.50%<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 );">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>
</tr>
<tr 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.17%<span></span>
</td>
<td class="nump">2.35%<span></span>
</td>
<td class="nump">2.33%<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">59.99%<span></span>
</td>
<td class="nump">53.57%<span></span>
</td>
<td class="nump">37.36%<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>num: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>num: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>num: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=115993241&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>
<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>76
<FILENAME>R61.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024136968">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 13 - Leases (Details Textual) - Office Space, Manufacturing Facilities, and Certain Company Vehicles and Equipment [Member]<br></strong></div></th>
<th class="th"><div>Dec. 31, 2020</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_srt_RangeAxis=srt_MinimumMember', window );">Minimum [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_LesseeOperatingLeaseTermOfContract', window );">Lessee, Operating Lease, Term of Contract (Year)</a></td>
<td class="text">1 year<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_RangeAxis=srt_MaximumMember', window );">Maximum [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_LesseeOperatingLeaseTermOfContract', window );">Lessee, Operating Lease, Term of Contract (Year)</a></td>
<td class="text">8 years<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_LesseeOperatingLeaseTermOfContract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Term of lessee's operating lease, 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://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918673-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_LesseeOperatingLeaseTermOfContract</td>
</tr>
<tr>
<td style="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>instant</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_us-gaap_LeaseContractualTermAxis=prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_LeaseContractualTermAxis=prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember</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>77
<FILENAME>R62.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407020055016">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 13 - Leases - Balance Sheet Information (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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_OperatingLeaseRightOfUseAsset', window );">Operating lease assets</a></td>
<td class="nump">$ 9,855<span></span>
</td>
<td class="nump">$ 11,425<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">3,272<span></span>
</td>
<td class="nump">3,340<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,586<span></span>
</td>
<td class="nump">8,565<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_OperatingLeaseLiability', window );">Total operating lease liabilities</a></td>
<td class="nump">10,858<span></span>
</td>
<td class="nump">11,905<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_FinanceLeaseRightOfUseAsset', window );">Finance lease assets</a></td>
<td class="nump">2,396<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_FinanceLeaseLiabilityCurrent', window );">Current finance lease liabilities</a></td>
<td class="nump">552<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_FinanceLeaseLiabilityNoncurrent', window );">Long-term finance lease liabilities</a></td>
<td class="nump">1,919<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_FinanceLeaseLiability', window );">Total finance lease liabilities</a></td>
<td class="nump">$ 2,471<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_FinanceLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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.</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 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-209980<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 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121603541&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_FinanceLeaseLiability</td>
</tr>
<tr>
<td style="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=121603541&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=121603541&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=121603541&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_OperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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.</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=121603541&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_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="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_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=121603541&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=121603541&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=121603541&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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>78
<FILENAME>R63.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407025385384">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Leases - Lease Expense (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_OperatingLeaseCost', window );">Operating lease cost</a></td>
<td class="nump">$ 4,191<span></span>
</td>
<td class="nump">$ 3,960<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_FinanceLeaseRightOfUseAssetAmortization', window );">Amortization of right-of-use assets</a></td>
<td class="nump">143<span></span>
</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_FinanceLeaseInterestExpense', window );">Interest on lease obligations</a></td>
<td class="nump">2<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_VariableLeaseCost', window );">Variable lease cost</a></td>
<td class="nump">989<span></span>
</td>
<td class="nump">1,039<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_LeaseCost', window );">Total lease cost</a></td>
<td class="nump">5,325<span></span>
</td>
<td class="nump">4,999<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_OperatingLeasePayments', window );">Operating cash flows from operating leases</a></td>
<td class="nump">4,426<span></span>
</td>
<td class="nump">5,020<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_FinanceLeaseInterestPaymentOnLiability', window );">Operating cash flows from finance leases</a></td>
<td class="nump">2<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_FinanceLeasePrincipalPayments', window );">Financing cash flows from finance leases</a></td>
<td class="nump">154<span></span>
</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_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability', window );">Lease assets obtained in exchange for new operating lease liabilities</a></td>
<td class="nump">1,506<span></span>
</td>
<td class="nump">1,921<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_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability', window );">Lease assets obtained in exchange for new financing lease liabilities</a></td>
<td class="nump">$ 2,523<span></span>
</td>
<td class="nump">$ 0<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_FinanceLeaseInterestExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 interest expense on finance lease liability.</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 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918686-209980<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 45<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121603541&amp;loc=SL77918638-209977<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=121568110&amp;loc=SL77918982-209971<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseInterestExpense</td>
</tr>
<tr>
<td style="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_FinanceLeaseInterestPaymentOnLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 interest paid on finance lease liability.</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 50<br> -Paragraph 4<br> -Subparagraph (g)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918686-209980<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 45<br> -Paragraph 5<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121603541&amp;loc=SL77918643-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_FinanceLeaseInterestPaymentOnLiability</td>
</tr>
<tr>
<td style="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_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=121603541&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=121609121&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_FinanceLeaseRightOfUseAssetAmortization">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 expense attributable to 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 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918686-209980<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 45<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121603541&amp;loc=SL77918638-209977<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=121568110&amp;loc=SL77918982-209971<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseRightOfUseAssetAmortization</td>
</tr>
<tr>
<td style="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_LeaseCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 lease cost recognized by lessee for lease contract.</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 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918686-209980<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=121568110&amp;loc=SL77918982-209971<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LeaseCost</td>
</tr>
<tr>
<td style="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_OperatingLeaseCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 single lease cost, calculated by allocation of remaining cost of lease over remaining lease term. Includes, but is not limited to, single lease cost, after impairment of right-of-use asset, calculated by amortization of remaining right-of-use asset and accretion of lease liability.</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 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=121568110&amp;loc=SL77918982-209971<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 (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&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_OperatingLeaseCost</td>
</tr>
<tr>
<td style="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_OperatingLeasePayments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 from operating lease, excluding payments to bring another asset to condition and location necessary for its intended 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/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 (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=121603541&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=121609121&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_OperatingLeasePayments</td>
</tr>
<tr>
<td style="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_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 right-of-use asset obtained in exchange for finance lease liability.</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 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=121568110&amp;loc=SL77918982-209971<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)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&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_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability</td>
</tr>
<tr>
<td style="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_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 right-of-use asset obtained in exchange for operating lease liability.</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 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=121568110&amp;loc=SL77918982-209971<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)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&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_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability</td>
</tr>
<tr>
<td style="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_VariableLeaseCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 variable lease cost, excluded from lease liability, recognized when obligation for payment is incurred for finance and operating leases.</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 50<br> -Paragraph 4<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918686-209980<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=121568110&amp;loc=SL77918982-209971<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_VariableLeaseCost</td>
</tr>
<tr>
<td style="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>79
<FILENAME>R64.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407031602488">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 13 - Leases - Maturities of Operating Lease Liabilities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths', window );">2021, operating lease</a></td>
<td class="nump">$ 3,915<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_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths', window );">2021, finance lease</a></td>
<td class="nump">561<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_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo', window );">2022, operating lease</a></td>
<td class="nump">3,246<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_FinanceLeaseLiabilityPaymentsDueYearTwo', window );">2022, finance lease</a></td>
<td class="nump">561<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_LesseeOperatingLeaseLiabilityPaymentsDueYearThree', window );">2023, operating lease</a></td>
<td class="nump">1,460<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_FinanceLeaseLiabilityPaymentsDueYearThree', window );">2023, finance lease</a></td>
<td class="nump">1,371<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_LesseeOperatingLeaseLiabilityPaymentsDueYearFour', window );">2024, operating lease</a></td>
<td class="nump">540<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_FinanceLeaseLiabilityPaymentsDueYearFour', window );">2024, finance lease</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_LesseeOperatingLeaseLiabilityPaymentsDueYearFive', window );">2025, operating lease</a></td>
<td class="nump">494<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_FinanceLeaseLiabilityPaymentsDueYearFive', window );">2025, finance lease</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_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive', window );">After 2025, operating lease</a></td>
<td class="nump">1,751<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_FinanceLeaseLiabilityPaymentsDueAfterYearFive', window );">After 2025, finance lease</a></td>
<td class="nump">0<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_LesseeOperatingLeaseLiabilityPaymentsDue', window );">Total future minimum lease payments, operating lease</a></td>
<td class="nump">11,406<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_FinanceLeaseLiabilityPaymentsDue', window );">Total future minimum lease payments, finance lease</a></td>
<td class="nump">2,493<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_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount', window );">Less interest, operating lease</a></td>
<td class="num">(548)<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_FinanceLeaseLiabilityUndiscountedExcessAmount', window );">Less interest, finance lease</a></td>
<td class="num">(22)<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_OperatingLeaseLiability', window );">Present value of lease liabilities, operating lease</a></td>
<td class="nump">10,858<span></span>
</td>
<td class="nump">$ 11,905<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_FinanceLeaseLiability', window );">Present value of lease liabilities</a></td>
<td class="nump">$ 2,471<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_FinanceLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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.</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 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-209980<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 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121603541&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_FinanceLeaseLiability</td>
</tr>
<tr>
<td style="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_FinanceLeaseLiabilityPaymentsDue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payments for 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 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_FinanceLeaseLiabilityPaymentsDue</td>
</tr>
<tr>
<td style="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_FinanceLeaseLiabilityPaymentsDueAfterYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payment for finance lease to be paid after fifth 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://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 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_FinanceLeaseLiabilityPaymentsDueAfterYearFive</td>
</tr>
<tr>
<td style="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_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payment for finance lease to be paid 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://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 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths</td>
</tr>
<tr>
<td style="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_FinanceLeaseLiabilityPaymentsDueYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payment for finance lease to be paid in fifth 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://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 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_FinanceLeaseLiabilityPaymentsDueYearFive</td>
</tr>
<tr>
<td style="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_FinanceLeaseLiabilityPaymentsDueYearFour">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payment for finance lease to be paid 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://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 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_FinanceLeaseLiabilityPaymentsDueYearFour</td>
</tr>
<tr>
<td style="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_FinanceLeaseLiabilityPaymentsDueYearThree">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payment for finance lease to be paid 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://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 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_FinanceLeaseLiabilityPaymentsDueYearThree</td>
</tr>
<tr>
<td style="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_FinanceLeaseLiabilityPaymentsDueYearTwo">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payment for finance lease to be paid 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://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 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_FinanceLeaseLiabilityPaymentsDueYearTwo</td>
</tr>
<tr>
<td style="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_FinanceLeaseLiabilityUndiscountedExcessAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payments in excess of discounted obligation for lease payments for 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 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_FinanceLeaseLiabilityUndiscountedExcessAmount</td>
</tr>
<tr>
<td style="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_LesseeOperatingLeaseLiabilityPaymentsDue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payment for 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 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_LesseeOperatingLeaseLiabilityPaymentsDue</td>
</tr>
<tr>
<td style="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_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payment for operating lease due after fifth 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://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 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive</td>
</tr>
<tr>
<td style="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_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payment for operating lease to be paid 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://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 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths</td>
</tr>
<tr>
<td style="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_LesseeOperatingLeaseLiabilityPaymentsDueYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payment for operating lease to be paid in fifth 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://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 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_LesseeOperatingLeaseLiabilityPaymentsDueYearFive</td>
</tr>
<tr>
<td style="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_LesseeOperatingLeaseLiabilityPaymentsDueYearFour">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payment for operating lease to be paid 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://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 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_LesseeOperatingLeaseLiabilityPaymentsDueYearFour</td>
</tr>
<tr>
<td style="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_LesseeOperatingLeaseLiabilityPaymentsDueYearThree">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payment for operating lease to be paid 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://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 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_LesseeOperatingLeaseLiabilityPaymentsDueYearThree</td>
</tr>
<tr>
<td style="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_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payment for operating lease to be paid 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://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 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo</td>
</tr>
<tr>
<td style="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_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undiscounted obligation for lease payments in excess of discounted obligation for lease payments for 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 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918701-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_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount</td>
</tr>
<tr>
<td style="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_OperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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.</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=121603541&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_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="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>80
<FILENAME>R65.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024608408">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 13 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)<br></strong></div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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_OperatingLeaseWeightedAverageRemainingLeaseTerm1', window );">Weighted Average Remaining Lease Term - operating leases (years) (Year)</a></td>
<td class="text">4 years 4 months 24 days<span></span>
</td>
<td class="text">4 years 9 months 18 days<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_FinanceLeaseWeightedAverageRemainingLeaseTerm1', window );">Weighted Average Remaining Lease Term - finance leases (years) (Year)</a></td>
<td class="text">2 years 6 months<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_OperatingLeaseWeightedAverageDiscountRatePercent', window );">Weighted Average Discount Rate - operating leases</a></td>
<td class="nump">2.60%<span></span>
</td>
<td class="nump">2.60%<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_FinanceLeaseWeightedAverageDiscountRatePercent', window );">Weighted Average Discount Rate - finance leases</a></td>
<td class="nump">0.50%<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_FinanceLeaseWeightedAverageDiscountRatePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 discount rate for finance lease calculated at point in time.</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 50<br> -Paragraph 4<br> -Subparagraph (g)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918686-209980<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=121568110&amp;loc=SL77918982-209971<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num: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_FinanceLeaseWeightedAverageRemainingLeaseTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 remaining lease term for finance lease, 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://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)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918686-209980<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=121568110&amp;loc=SL77918982-209971<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1</td>
</tr>
<tr>
<td style="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>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_OperatingLeaseWeightedAverageDiscountRatePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 discount rate for operating lease calculated at point in time.</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 50<br> -Paragraph 4<br> -Subparagraph (g)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&amp;loc=SL77918686-209980<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=121568110&amp;loc=SL77918982-209971<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num: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_OperatingLeaseWeightedAverageRemainingLeaseTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 remaining lease term for operating lease, 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://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=121568110&amp;loc=SL77918982-209971<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)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=121609121&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_OperatingLeaseWeightedAverageRemainingLeaseTerm1</td>
</tr>
<tr>
<td style="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>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>81
<FILENAME>R66.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407027438264">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 14 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">$ 585,790<span></span>
</td>
<td class="nump">$ 541,497<span></span>
</td>
<td class="nump">$ 461,215<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">644,356<span></span>
</td>
<td class="nump">585,790<span></span>
</td>
<td class="nump">541,497<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>
</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">(7,018)<span></span>
</td>
<td class="num">(8,492)<span></span>
</td>
<td class="num">(5,234)<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_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax', window );">Other comprehensive (loss) income before reclassifications</a></td>
<td class="nump">3,598<span></span>
</td>
<td class="nump">1,474<span></span>
</td>
<td class="num">(3,258)<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_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax', window );">Amounts reclassified from accumulated other comprehensive income (loss)</a></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_OtherComprehensiveIncomeLossNetOfTax', window );">Net current-period other comprehensive (loss) income</a></td>
<td class="nump">3,598<span></span>
</td>
<td class="nump">1,474<span></span>
</td>
<td class="num">(3,258)<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">$ (3,420)<span></span>
</td>
<td class="num">$ (7,018)<span></span>
</td>
<td class="num">$ (8,492)<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_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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).</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 830<br> -SubTopic 30<br> -Section 45<br> -Paragraph 17<br> -URI http://asc.fasb.org/extlink&amp;oid=118261656&amp;loc=d3e32136-110900<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6450520&amp;loc=d3e32583-110901<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 14A<br> -URI http://asc.fasb.org/extlink&amp;oid=121641772&amp;loc=SL7669686-108580<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 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=121640130&amp;loc=d3e1436-108581<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 45<br> -Paragraph 20<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118261656&amp;loc=d3e32211-110900<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax</td>
</tr>
<tr>
<td style="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_OtherComprehensiveIncomeLossNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 other comprehensive 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 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121641772&amp;loc=SL7669619-108580<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 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=109259400&amp;loc=d3e21463-112644<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 45<br> -Paragraph 17<br> -URI http://asc.fasb.org/extlink&amp;oid=118261656&amp;loc=d3e32136-110900<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 S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(21))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395209&amp;loc=SL114868664-224227<br><br>Reference 5: 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=121640130&amp;loc=d3e1436-108581<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 45<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=118261656&amp;loc=d3e32211-110900<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6450520&amp;loc=d3e32583-110901<br><br>Reference 8: 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=121641772&amp;loc=SL7669625-108580<br><br>Reference 9: 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(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<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(19))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossNetOfTax</td>
</tr>
<tr>
<td style="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_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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).</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 17B<br> -URI http://asc.fasb.org/extlink&amp;oid=121641772&amp;loc=SL34724394-108580<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 45<br> -Paragraph 17<br> -URI http://asc.fasb.org/extlink&amp;oid=118261656&amp;loc=d3e32136-110900<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 45<br> -Paragraph 20<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=118261656&amp;loc=d3e32211-110900<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6450520&amp;loc=d3e32583-110901<br><br>Reference 5: 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=121641772&amp;loc=SL7669686-108580<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 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=121640130&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_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax</td>
</tr>
<tr>
<td style="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://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=27010918&amp;loc=d3e74512-122707<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(31))<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 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 6: 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=75031198&amp;loc=d3e14064-108612<br><br>Reference 7: 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_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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>82
<FILENAME>R67.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407113024744">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Income Taxes (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 22, 2017</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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="text">&#160;<span></span>
</td>
<td class="nump">$ 12,078<span></span>
</td>
<td class="nump">$ 17,538<span></span>
</td>
<td class="nump">$ 15,067<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="text">&#160;<span></span>
</td>
<td class="nump">19.20%<span></span>
</td>
<td class="nump">21.60%<span></span>
</td>
<td class="nump">16.40%<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="text">&#160;<span></span>
</td>
<td class="nump">2.40%<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="nump">35.00%<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">21.00%<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_IncreaseDecreaseInIncomeTaxesPayableCaresAct', window );">Increase (Decrease) in Income Taxes Payable, CARES Act</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (2,900)<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_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries', window );">Deferred Tax Liability Not Recognized, Amount of Unrecognized Deferred Tax Liability, Undistributed Earnings of Foreign Subsidiaries</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<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_UndistributedEarningsOfForeignSubsidiaries', window );">Undistributed Earnings of Foreign Subsidiaries</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">15,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_OperatingLossCarryforwards', window );">Operating Loss Carryforwards, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 6,600<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_OperatingLossCarryforwardsExpirationPeriod', window );">Operating Loss Carryforwards, Expiration Period (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">10 years<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_OperatingLossCarryforwardsPercentageOfTaxableIncome', window );">Operating Loss Carryforwards, Percentage of Taxable Income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">60.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_DeferredTaxAssetsValuationAllowance', window );">Deferred Tax Assets, Valuation Allowance, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 9,138<span></span>
</td>
<td class="nump">$ 8,248<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_UnrecognizedTaxBenefits', window );">Unrecognized Tax Benefits, Ending Balance</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4,830<span></span>
</td>
<td class="nump">$ 4,598<span></span>
</td>
<td class="nump">$ 4,096<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_DeferredTaxLiabilityCaresAct', window );">Deferred Tax Liability, CARES Act</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 2,900<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_DeferredTaxLiabilityCaresAct">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 deferred tax liability related to CARES act.</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_DeferredTaxLiabilityCaresAct</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_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>num: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_prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 increase (decrease) in income taxes payable related to CARES Act.</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_IncreaseDecreaseInIncomeTaxesPayableCaresAct</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>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_OperatingLossCarryforwardsExpirationPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 expiration period of operating loss carryforwards.</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_OperatingLossCarryforwardsExpirationPeriod</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_OperatingLossCarryforwardsPercentageOfTaxableIncome">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 operating loss carryforwards percentage of taxable income limit.</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_OperatingLossCarryforwardsPercentageOfTaxableIncome</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>num: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_DeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 assets for which it is more likely than not that a tax benefit will not be realized.</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 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32537-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_DeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="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_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 not recognized because of the exceptions to comprehensive recognition of deferred taxes related to undistributed earnings of foreign subsidiaries.</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 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=6424122&amp;loc=d3e41874-109331<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries</td>
</tr>
<tr>
<td style="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_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=84230637&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>num: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=116825942&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 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&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>num: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=116825942&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=84230637&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=120311839&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=109234566&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=120385591&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=109234566&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_OperatingLossCarryforwards">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 operating loss carryforward, before tax effects, available to reduce future taxable income under enacted tax laws.</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 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32559-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_OperatingLossCarryforwards</td>
</tr>
<tr>
<td style="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_UndistributedEarningsOfForeignSubsidiaries">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 undistributed earnings of foreign subsidiaries intended to be permanently reinvested outside the country of domicile.</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 740<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6487024&amp;loc=d3e29054-158556<br><br>Reference 2: 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 (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6424122&amp;loc=d3e41874-109331<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 740<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6479915&amp;loc=d3e66715-112838<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 25<br> -Paragraph 3<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=121573983&amp;loc=d3e28200-109314<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UndistributedEarningsOfForeignSubsidiaries</td>
</tr>
<tr>
<td style="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_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=120406818&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=84230637&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>83
<FILENAME>R68.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407022639736">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic', window );">Domestic</a></td>
<td class="nump">$ 58,551<span></span>
</td>
<td class="nump">$ 74,841<span></span>
</td>
<td class="nump">$ 81,893<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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign', window );">Foreign</a></td>
<td class="nump">4,394<span></span>
</td>
<td class="nump">6,352<span></span>
</td>
<td class="nump">9,762<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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest', window );">Income before income taxes</a></td>
<td class="nump">$ 62,945<span></span>
</td>
<td class="nump">$ 81,193<span></span>
</td>
<td class="nump">$ 91,655<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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 earnings or loss from continuing operations before income taxes that is attributable to domestic 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 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08.(h)(1)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<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.3)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic</td>
</tr>
<tr>
<td style="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=120311839&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=120311839&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=120311839&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=68072869&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=120311839&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=120395209&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=120311839&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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 earnings or loss from continuing operations before income taxes that is attributable to foreign operations, which is defined as Income or Loss generated from operations located outside the entity's country of domicile.</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 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08.(h)(1)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<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.3)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign</td>
</tr>
<tr>
<td style="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>84
<FILENAME>R69.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407027395336">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Income Taxes - Significant Components of Provision for Income Taxes (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract', window );"><strong>Current:</strong></a></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_CurrentFederalTaxExpenseBenefit', window );">Federal</a></td>
<td class="nump">$ 2,128<span></span>
</td>
<td class="nump">$ 6,991<span></span>
</td>
<td class="num">$ (782)<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_CurrentStateAndLocalTaxExpenseBenefit', window );">State</a></td>
<td class="nump">1,136<span></span>
</td>
<td class="nump">2,882<span></span>
</td>
<td class="nump">2,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_CurrentForeignTaxExpenseBenefit', window );">Foreign</a></td>
<td class="nump">1,241<span></span>
</td>
<td class="nump">1,544<span></span>
</td>
<td class="nump">1,810<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_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract', window );"><strong>Deferred</strong></a></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_DeferredFederalIncomeTaxExpenseBenefit', window );">Federal</a></td>
<td class="nump">6,904<span></span>
</td>
<td class="nump">5,121<span></span>
</td>
<td class="nump">11,325<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_DeferredStateAndLocalIncomeTaxExpenseBenefit', window );">State</a></td>
<td class="num">(431)<span></span>
</td>
<td class="nump">269<span></span>
</td>
<td class="nump">538<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_DeferredForeignIncomeTaxExpenseBenefit', window );">Foreign</a></td>
<td class="nump">210<span></span>
</td>
<td class="num">(809)<span></span>
</td>
<td class="num">(430)<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_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance', window );">Valuation Allowance</a></td>
<td class="nump">890<span></span>
</td>
<td class="nump">1,540<span></span>
</td>
<td class="nump">528<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_IncomeTaxExpenseBenefit', window );">Total</a></td>
<td class="nump">$ 12,078<span></span>
</td>
<td class="nump">$ 17,538<span></span>
</td>
<td class="nump">$ 15,067<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_CurrentFederalTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 federal 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=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<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 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&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_CurrentFederalTaxExpenseBenefit</td>
</tr>
<tr>
<td style="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_CurrentForeignTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 foreign 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://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32639-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentForeignTaxExpenseBenefit</td>
</tr>
<tr>
<td style="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_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract</td>
</tr>
<tr>
<td style="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_CurrentStateAndLocalTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 state and local 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 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 2: 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=116825942&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 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&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_CurrentStateAndLocalTaxExpenseBenefit</td>
</tr>
<tr>
<td style="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_DeferredFederalIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 federal 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 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 2: 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=116825942&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 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&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_DeferredFederalIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="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_DeferredForeignIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 foreign 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=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<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 3: http://www.xbrl.org/2009/role/commonPracticeRef<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=84230637&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_DeferredForeignIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="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_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract</td>
</tr>
<tr>
<td style="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_DeferredStateAndLocalIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 state and local 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://www.xbrl.org/2009/role/commonPracticeRef<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=84230637&amp;loc=d3e32639-109319<br><br>Reference 2: 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=116825942&amp;loc=d3e330036-122817<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="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_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=116825942&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=84230637&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=120311839&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=109234566&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=120385591&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=109234566&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_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to increase (decrease) in the valuation allowance for deferred tax 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/2009/role/commonPracticeRef<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=84230637&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_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="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>85
<FILENAME>R70.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407026285224">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)<br></strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 22, 2017</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate', window );">Federal tax statutory rate</a></td>
<td class="nump">35.00%<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">21.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_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes', window );">State tax (net of federal benefit)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2.10%<span></span>
</td>
<td class="nump">2.10%<span></span>
</td>
<td class="nump">2.00%<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_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection', window );">Share based compensation</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(1.30%)<span></span>
</td>
<td class="num">(0.50%)<span></span>
</td>
<td class="num">(2.80%)<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_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance', window );">Valuation allowance against deferred tax assets</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2.00%<span></span>
</td>
<td class="nump">1.40%<span></span>
</td>
<td class="nump">0.70%<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_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch', window );">Research and development credit</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(3.70%)<span></span>
</td>
<td class="num">(2.80%)<span></span>
</td>
<td class="num">(2.50%)<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_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential', window );">Foreign rate differential</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(0.80%)<span></span>
</td>
<td class="num">(0.30%)<span></span>
</td>
<td class="num">(0.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_EffectiveIncomeTaxRateReconciliationTaxContingencies', window );">Tax reserves</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1.40%<span></span>
</td>
<td class="nump">1.10%<span></span>
</td>
<td class="num">(0.10%)<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_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent', window );">Provision to return difference</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(1.40%)<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.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_EffectiveIncomeTaxRateReconciliationOtherAdjustments', window );">Miscellaneous</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(0.10%)<span></span>
</td>
<td class="num">(0.40%)<span></span>
</td>
<td class="num">(0.50%)<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_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent', window );">Transition tax</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="num">(0.80%)<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_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability', window );">Revaluation of deferred tax liability</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="num">(0.50%)<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_EffectiveIncomeTaxRateContinuingOperations', window );">Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">19.20%<span></span>
</td>
<td class="nump">21.60%<span></span>
</td>
<td class="nump">16.40%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to provision to return difference.</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_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent</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>num: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_prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Qualified subsidiary election.</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_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection</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>num: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_prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to the revaluation of deferred tax liability.</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_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability</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>num: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_prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to a one time transition tax.</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_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent</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>num: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=84230637&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>num: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=116825942&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 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&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>num: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_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to changes in the valuation allowance for deferred tax 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/2009/role/commonPracticeRef<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=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<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=84230637&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_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num: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_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to statutory income tax expense (benefit) outside of the country of domicile.</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 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<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=116825942&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num: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_EffectiveIncomeTaxRateReconciliationOtherAdjustments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to other adjustments.</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 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<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=116825942&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num: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_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to state and local income tax expense (benefit), net of federal tax expense (benefit).</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 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=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<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=84230637&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_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num: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_EffectiveIncomeTaxRateReconciliationTaxContingencies">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to income tax contingencies. Includes, but not limited to, domestic tax contingency, foreign tax contingency, state and local tax contingency, and other contingencies.</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 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=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<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=84230637&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_EffectiveIncomeTaxRateReconciliationTaxContingencies</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num: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_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to research tax 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/2009/role/commonPracticeRef<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=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<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=84230637&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_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>num: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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>86
<FILENAME>R71.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407027698952">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 15 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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_DeferredTaxAssetsNetAbstract', window );"><strong>Deferred tax 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_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities', window );">Accrued expenses</a></td>
<td class="nump">$ 2,155<span></span>
</td>
<td class="nump">$ 1,362<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_DeferredTaxAssetsRightOfUseLeases', window );">Leases</a></td>
<td class="nump">3,598<span></span>
</td>
<td class="nump">3,337<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_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost', window );">Stock-based compensation</a></td>
<td class="nump">3,356<span></span>
</td>
<td class="nump">3,325<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_DeferredTaxAssetsGoodwillAndIntangibleAssets', window );">Intangible assets</a></td>
<td class="nump">1,693<span></span>
</td>
<td class="nump">1,171<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_DeferredTaxAssetsInventory', window );">Inventories</a></td>
<td class="nump">172<span></span>
</td>
<td class="nump">169<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_DeferredTaxAssetsOther', window );">Other assets</a></td>
<td class="nump">1,790<span></span>
</td>
<td class="nump">1,765<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_DeferredTaxAssetsOperatingLossCarryforwards', window );">Net operating loss</a></td>
<td class="nump">6,647<span></span>
</td>
<td class="nump">6,513<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_DeferredTaxAssetsValuationAllowance', window );">Less valuation allowance</a></td>
<td class="num">(9,138)<span></span>
</td>
<td class="num">(8,248)<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_DeferredTaxAssetsNet', window );">Total deferred tax assets</a></td>
<td class="nump">10,273<span></span>
</td>
<td class="nump">9,394<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_DeferredTaxLiabilitiesNetAbstract', window );"><strong>Deferred tax 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_DeferredTaxLiabilitiesPropertyPlantAndEquipment', window );">Depreciation</a></td>
<td class="num">(32,671)<span></span>
</td>
<td class="num">(26,750)<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_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill', window );">Goodwill</a></td>
<td class="num">(7,858)<span></span>
</td>
<td class="num">(5,590)<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_DeferredTaxLiabilitiesLeasingArrangements', window );">Leases</a></td>
<td class="num">(3,598)<span></span>
</td>
<td class="num">(3,337)<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_DeferredIncomeTaxLiabilities', window );">Total deferred tax liabilities</a></td>
<td class="num">(44,127)<span></span>
</td>
<td class="num">(35,677)<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_DeferredTaxLiabilities', window );">Net deferred tax liability</a></td>
<td class="num">$ (33,854)<span></span>
</td>
<td class="num">$ (26,283)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_DeferredTaxAssetsRightOfUseLeases">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from right of use lease assets.</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_DeferredTaxAssetsRightOfUseLeases</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_DeferredIncomeTaxLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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.</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(26)(b))<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 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32537-109319<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(15)(b)(2))<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 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(15)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<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(26)(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_DeferredIncomeTaxLiabilities</td>
</tr>
<tr>
<td style="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_DeferredTaxAssetsGoodwillAndIntangibleAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from intangible assets including goodwill.</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_DeferredTaxAssetsGoodwillAndIntangibleAssets</td>
</tr>
<tr>
<td style="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_DeferredTaxAssetsInventory">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from 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 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-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_DeferredTaxAssetsInventory</td>
</tr>
<tr>
<td style="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_DeferredTaxAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards.</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 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32537-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_DeferredTaxAssetsNet</td>
</tr>
<tr>
<td style="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_DeferredTaxAssetsNetAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_DeferredTaxAssetsNetAbstract</td>
</tr>
<tr>
<td style="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_DeferredTaxAssetsOperatingLossCarryforwards">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 allocation of valuation allowances of deferred tax asset attributable to deductible operating loss carryforwards.</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 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-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_DeferredTaxAssetsOperatingLossCarryforwards</td>
</tr>
<tr>
<td style="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_DeferredTaxAssetsOther">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 allocation of valuation allowance, of deferred tax asset attributable to deductible temporary differences, 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://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-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_DeferredTaxAssetsOther</td>
</tr>
<tr>
<td style="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_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from share-based compensation.</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 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-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_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost</td>
</tr>
<tr>
<td style="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_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from accrued liabilities.</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 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-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_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities</td>
</tr>
<tr>
<td style="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_DeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 assets for which it is more likely than not that a tax benefit will not be realized.</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 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32537-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_DeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="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_DeferredTaxLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 without jurisdictional netting.</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 45<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=120406818&amp;loc=d3e31931-109318<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32537-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_DeferredTaxLiabilities</td>
</tr>
<tr>
<td style="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_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 from goodwill.</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 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-109319<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 740<br> -Section 25<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=121554379&amp;loc=d3e9972-128506<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 740<br> -Section 25<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=121554379&amp;loc=d3e9979-128506<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill</td>
</tr>
<tr>
<td style="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_DeferredTaxLiabilitiesLeasingArrangements">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 from leasing arrangements.</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 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-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_DeferredTaxLiabilitiesLeasingArrangements</td>
</tr>
<tr>
<td style="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_DeferredTaxLiabilitiesNetAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_DeferredTaxLiabilitiesNetAbstract</td>
</tr>
<tr>
<td style="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_DeferredTaxLiabilitiesPropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 from property, plant, and equipment.</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 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32621-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32632-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_DeferredTaxLiabilitiesPropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="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>87
<FILENAME>R72.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407024098712">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</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_UnrecognizedTaxBenefits', window );">Balance</a></td>
<td class="nump">$ 4,598<span></span>
</td>
<td class="nump">$ 4,096<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_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions', window );">Additions for tax positions of current year</a></td>
<td class="nump">324<span></span>
</td>
<td class="nump">592<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_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions', window );">Additions for tax positions of prior years</a></td>
<td class="nump">475<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_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations', window );">Decrease related to expiration of statutes of limitations</a></td>
<td class="num">(567)<span></span>
</td>
<td class="num">(90)<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 );">Balance</a></td>
<td class="nump">$ 4,830<span></span>
</td>
<td class="nump">$ 4,598<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_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=120406818&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=84230637&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>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 unrecognized tax benefits resulting from tax positions that have been or will be taken in current period tax return.</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 15A<br> -Subparagraph (a)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&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_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions</td>
</tr>
<tr>
<td style="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_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 unrecognized tax benefits resulting from tax positions taken in prior period tax returns.</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 15A<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&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_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions</td>
</tr>
<tr>
<td style="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_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 decrease in unrecognized tax benefits resulting from lapses of applicable statutes of limitations.</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 15A<br> -Subparagraph (a)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&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_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations</td>
</tr>
<tr>
<td style="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>88
<FILENAME>R73.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407027399752">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Segment Reporting - Revenue From Operations by Reportable Segment (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">$ 434,395<span></span>
</td>
<td class="nump">$ 458,728<span></span>
</td>
<td class="nump">$ 445,596<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>
</tr>
<tr 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">434,395<span></span>
</td>
<td class="nump">458,728<span></span>
</td>
<td class="nump">445,596<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>
</tr>
<tr 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">345,708<span></span>
</td>
<td class="nump">360,205<span></span>
</td>
<td class="nump">350,535<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>
</tr>
<tr 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">74,796<span></span>
</td>
<td class="nump">82,805<span></span>
</td>
<td class="nump">80,889<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>
</tr>
<tr 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">$ 13,891<span></span>
</td>
<td class="nump">$ 15,718<span></span>
</td>
<td class="nump">$ 14,172<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=120311839&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=121604090&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=121604090&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=120311839&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=120311839&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>89
<FILENAME>R74.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407027836200">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Segment Reporting - Income From Operations (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">$ 59,836<span></span>
</td>
<td class="nump">$ 79,856<span></span>
</td>
<td class="nump">$ 88,898<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>
</tr>
<tr 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">98,762<span></span>
</td>
<td class="nump">108,594<span></span>
</td>
<td class="nump">115,710<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>
</tr>
<tr 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">11,707<span></span>
</td>
<td class="nump">15,077<span></span>
</td>
<td class="nump">16,747<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] | Corporate Unallocated and 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>
</tr>
<tr 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">$ (50,633)<span></span>
</td>
<td class="num">$ (43,815)<span></span>
</td>
<td class="num">$ (43,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_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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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_CorporateUnallocatedAndJapanSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_CorporateUnallocatedAndJapanSegmentMember</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>90
<FILENAME>R75.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407112519480">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 17 - Segment Reporting - Long-lived Assets by Geographic Region (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">$ 282,666<span></span>
</td>
<td class="nump">$ 263,712<span></span>
</td>
<td class="nump">$ 228,001<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>
</tr>
<tr 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">215,721<span></span>
</td>
<td class="nump">210,171<span></span>
</td>
<td class="nump">185,979<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>
</tr>
<tr 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">59,388<span></span>
</td>
<td class="nump">45,019<span></span>
</td>
<td class="nump">34,577<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>
</tr>
<tr 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">$ 7,557<span></span>
</td>
<td class="nump">$ 8,522<span></span>
</td>
<td class="nump">$ 7,445<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://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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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>91
<FILENAME>R76.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407025599080">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_PaymentsToAcquirePropertyPlantAndEquipment', window );">Expenditures for additions to long-lived assets</a></td>
<td class="nump">$ 47,010<span></span>
</td>
<td class="nump">$ 62,230<span></span>
</td>
<td class="nump">$ 87,104<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_StatementGeographicalAxis=country_US', window );">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>
</tr>
<tr 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_PaymentsToAcquirePropertyPlantAndEquipment', window );">Expenditures for additions to long-lived assets</a></td>
<td class="nump">29,984<span></span>
</td>
<td class="nump">45,123<span></span>
</td>
<td class="nump">78,762<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_StatementGeographicalAxis=srt_EuropeMember', window );">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>
</tr>
<tr 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_PaymentsToAcquirePropertyPlantAndEquipment', window );">Expenditures for additions to long-lived assets</a></td>
<td class="nump">16,574<span></span>
</td>
<td class="nump">14,743<span></span>
</td>
<td class="nump">7,576<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_StatementGeographicalAxis=country_JP', window );">JAPAN</a></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_PaymentsToAcquirePropertyPlantAndEquipment', window );">Expenditures for additions to long-lived assets</a></td>
<td class="nump">$ 452<span></span>
</td>
<td class="nump">$ 2,364<span></span>
</td>
<td class="nump">$ 766<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_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=121586364&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_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>
<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_JP">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_JP</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>92
<FILENAME>R77.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407025865592">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 17 - Segment Reporting - Depreciation and Amortization (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_DepreciationDepletionAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">$ 32,594<span></span>
</td>
<td class="nump">$ 30,864<span></span>
</td>
<td class="nump">$ 26,754<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_StatementGeographicalAxis=country_US', window );">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>
</tr>
<tr 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_DepreciationDepletionAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">25,744<span></span>
</td>
<td class="nump">24,767<span></span>
</td>
<td class="nump">21,117<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_StatementGeographicalAxis=srt_EuropeMember', window );">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>
</tr>
<tr 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_DepreciationDepletionAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">5,024<span></span>
</td>
<td class="nump">4,746<span></span>
</td>
<td class="nump">4,679<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_StatementGeographicalAxis=country_JP', window );">JAPAN</a></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_DepreciationDepletionAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">$ 1,826<span></span>
</td>
<td class="nump">$ 1,351<span></span>
</td>
<td class="nump">$ 958<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_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=120311839&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=121586364&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_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>
<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_JP">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_JP</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>93
<FILENAME>R78.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140407027786568">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 18 - Subsequent Events (Details Textual) - Acquired 3D Hubs [Member] - USD ($)<br> $ in Millions</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="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 );">Forecast [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_PaymentsToAcquireBusinessesGross', window );">Payments to Acquire Businesses, Gross</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 25.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_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="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_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable', window );">Business Combination, Consideration Transferred, Equity Interests Issued and Issuable</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 27.8<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 );">Subsequent Event [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_BusinessCombinationConsiderationTransferred1', window );">Business Combination, Consideration Transferred, Total</a></td>
<td class="nump">$ 294.4<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">$ 127.7<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.7<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.8<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_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_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_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=121586364&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_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>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SubsequentEventTypeAxis=us-gaap_SubsequentEventMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_SubsequentEventTypeAxis=us-gaap_SubsequentEventMember</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>94
<FILENAME>Financial_Report.xlsx
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 Financial_Report.xlsx
M4$L#!!0    ( ,)\4U('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    " #"?%-2__IHB.\    K @  $0   &1O8U!R;W!S+V-O<F4N>&ULS9+!
M3L,P#(9?!>7>NFD9B*C+!<0))"0F@;A%B;=%:]HH,6KW]J1AZX3@ 3C&_O/Y
ML^16>Z&'@"]A\!C(8KR:7-='H?V:[8F\ (AZCT[%,B7ZU-P.P2E*S[ #K_1!
M[1#JJKH!AZ2,(@4SL/ +D<G6:*$#*AK""6_T@O>?H<LPHP$[=-A3!%YR8'*>
MZ(]3U\(%,,,(@XO?!30+,5?_Q.8.L%-RBG9)C>-8CDW.I1TXO#\_O>9U"]M'
M4KW&]"M:04>/:W:>_-;</VP>F:RKFA=57?"[#5^)YE9<KSYFUQ]^%V$W&+NU
M_]CX+"A;^'47\@M02P,$%     @ PGQ34IE<G",0!@  G"<  !,   !X;"]T
M:&5M92]T:&5M93$N>&UL[5I;<]HX%'[OK]!X9_9M"\8V@;:T$W-I=MNTF83M
M3A^%$5B-;'EDD81_OT<V$,N6#>V23;J;/ 0LZ?O.14?GZ#AY\^XN8NB&B)3R
M>&#9+]O6N[<OWN!7,B0103 9IZ_PP JE3%ZU6FD PSA]R1,2P]R"BPA+>!3+
MUES@6QHO(];JM-O=5H1I;*$81V1@?5XL:$#05%%:;U\@M.4?,_@5RU2-9:,!
M$U=!)KF(M/+Y;,7\VMX^9<_I.ATR@6XP&U@@?\YOI^1.6HCA5,+$P&IG/U9K
MQ]'22(""R7V4!;I)]J/3%0@R#3LZG5C.=GSVQ.V?C,K:=#1M&N#C\7@XMLO2
MBW <!.!1NY["G?1LOZ1!";2C:=!DV/;:KI&FJHU33]/W?=_KFVB<"HU;3]-K
M=]W3CHG&K=!X#;[Q3X?#KHG&J]!TZVDF)_VN:Z3I%FA"1N/K>A(5M>5 TR
M6'!VULS2 Y9>*?IUE!K9';O=05SP6.XYB1'^QL4$UFG2&98T1G*=D 4. #?$
MT4Q0?*]!MHK@PI+27)#6SRFU4!H(FLB!]4>"(<7<K_WUE[O)I#-ZG7TZSFN4
M?VFK :?MNYO/D_QSZ.2?IY/734+.<+PL"?'[(UMAAR=N.Q-R.AQG0GS/]O:1
MI24RS^_Y"NM./&<?5I:P7<_/Y)Z,<B.[W?98??9/1VXCUZG LR+7E$8D19_(
M+;KD$3BU20TR$S\(G8:8:E < J0),9:AAOBTQJP1X!-]M[X(R-^-B/>K;YH]
M5Z%82=J$^!!&&N*<<^9ST6S[!Z5&T?95O-RCEU@5 9<8WS2J-2S%UGB5P/&M
MG#P=$Q+-E L&08:7)"82J3E^34@3_BNEVOZ<TT#PE"\D^DJ1CVFS(Z=T)LWH
M,QK!1J\;=8=HTCQZ_@7YG#4*')$;'0)G&[-&(81IN_ >KR2.FJW"$2M"/F(9
M-AIRM1:!MG&IA&!:$L;1>$[2M!'\6:PUDSY@R.S-D77.UI$.$9)>-T(^8LZ+
MD!&_'H8X2IKMHG%8!/V>7L-)P>B"RV;]N'Z&U3-L+([W1]072N0/)J<_Z3(T
M!Z.:60F]A%9JGZJ'-#ZH'C(*!?&Y'C[E>G@*-Y;&O%"N@GL!_]':-\*K^(+
M.7\N?<^E[[GT/:'2MS<C?6?!TXM;WD9N6\3[KC':US0N*&-7<LW(QU2ODRG8
M.9_ [/UH/I[Q[?K9)(2OFEDM(Q:02X&S022X_(O*\"K$">AD6R4)RU3393>*
M$IY"&V[I4_5*E=?EK[DHN#Q;Y.FOH70^+,_Y/%_GM,T+,T.W<DOJMI2^M28X
M2O2QS'!.'LL,.V<\DAVV=Z =-?OV77;D(Z4P4Y=#N!I"O@-MNIW<.CB>F)&Y
M"M-2D&_#^>G%>!KB.=D$N7V85VWGV-'1^^?!4;"C[SR6'<>(\J(A[J&&F,_#
M0X=Y>U^89Y7&4#04;6RL)"Q&MV"XU_$L%.!D8"V@!X.O40+R4E5@,5O& RN0
MHGQ,C$7H<.>77%_CT9+CVZ9EM6ZO*7<9;2)2.<)IF!-GJ\K>9;'!51W/55OR
ML+YJ/;053L_^6:W(GPP13A8+$DACE!>F2J+S&5.^YRM)Q%4XOT4SMA*7&+SC
MYL=Q3E.X$G:V#P(RN;LYJ7IE,6>F\M\M# DL6XA9$N)-7>W5YYN<KGHB=OJ7
M=\%@\OUPR4</Y3OG7_1=0ZY^]MWC^FZ3.TA,G'G%$0%T10(CE1P&%A<RY%#N
MDI &$P'-E,E$\ *"9*8<@)CZ"[WR#+DI%<ZM/CE_12R#ADY>TB42%(JP# 4A
M%W+C[^^3:G>,U_HL@6V$5#)DU1?*0XG!/3-R0]A4)?.NVB8+A=OB5,V[&KXF
M8$O#>FZ=+2?_VU[4/;07/4;SHYG@'K.'<YMZN,)%K/]8UA[Y,M\Y<-LZW@->
MYA,L0Z1^P7V*BH 1JV*^NJ]/^26<.[1[\8$@F_S6VZ3VW> ,?-2K6J5D*Q$_
M2P=\'Y(&8XQ;]#1?CQ1BK::QK<;:,0QY@%CS#*%F.-^'19H:,]6+K#F-"F]!
MU4#E/]O4#6CV#30<D05>,9FV-J/D3@H\W/[O#;#"Q([A[8N_ 5!+ P04
M" #"?%-24_I6/J<%  "J%P  &    'AL+W=O<FMS:&5E=',O<VAE970Q+GAM
M;*6846^;2!#'GWN?8F7UH97J  NVX\JQY-AQ+]<DM>*T5>YT#VM8VRC ^G:7
M./GV-RP8W @/G*X/#6#FOS]FEO\L.]H+^:2VG&OR$D>)NNALM=Y]MBSE;WG,
MU)G8\01^60L9,PVG<F.IG>0L,$%Q9%';[ELQ"Y/.>&2N+>1X)%(=A0E?2*+2
M.&;R]9)'8G_1<3J'"_?A9JNS"]9XM&,;ON3Z^VXAX<PJ58(PYHD*14(D7U]T
M)L[GF=O+ LP=/T*^5T?')'N4E1!/V<EU<-&Q,R(><5]G$@S^//,ICZ),"3C^
M*40[Y9A9X/'Q07UN'AX>9L44GXKH9QCH[47GO$,"OF9II._%_G=>/) !]$6D
MS/]DG]_K>1WBITJ+N @&@CA,\K_LI4C$<8!S(H 6 ?1-@'-J!+<(<-\&#$X$
M>$6 9S*3/XK)PXQI-AY)L2<RNQO4L@.33!,-CQ\F6=V76L*O(<3I\4SX*911
MDTD2D*M$A_J57"?Y?,KJTB7?ES/RX?W'D:5AN"S(\@OIRUR:GI!V*+D5B=XJ
MT UX\*N !9PE+#W 7E)4<<;],^(ZGPBUJ5T#-,7#YWQU1AS;A#LUX3,\_(\T
M@='MNM%_>1JW3+UK]-RFU!_G^Z\;N(M<:QZKOY$QO'(,SXSAG1BCJ.@4AI$L
M@I$"_D*^\M>Z:N)*MFT[GN?V^T,$JU=B]=I@W?--J  ,<G#'8EX'A>LLI-""
MW+"5@D?S$;!^"=9'!2=0D, 491ZQ31T0'K]FD>((QZ#D&* ZTU1*0Q$J'^KV
MR)G,WB("[WAMFG"U;M>A7==!N,Y+KG-4J9RS!=B"RU $9 Z751T7KC9_1)"&
M)=+P/R&97)T$PK4:WFS'KES5;@?U\+JK+5A#O&-WOV(@1_;NM .9)$D*V;GG
M.R%U+1$NI&6*36R'5D2T'5$Q=[!IW215](/?WKUKJEQERH[;LG+@2RHTIHPD
M#1=KL@.G\G&GE9'/PXB3NS1><5F+T^3A3M?M>6X/0ZH\W&EEXF"\0D)^3/_Z
M1)8::DF$)%.10M.!WB."^MKBZK=W&&3EYPYNR 7D WLAUP&4-5R'?MYID2SB
MDI[3=8;NL$_/,<+*Z1W<G O"21!(KM2GPP$Q"X%O27WN<,E>S[/) AZ2<ZB#
MY/R)S"0LKS'>J@,XN&F_Y9UF9U#O![%/:EEQN5NV@RF]B. 3!<.KNH&#6_A;
MO'(^PEKA.4S\^GSBFNA<I%53H+BIOT5;"*7!DO\,=R=?D@;%7L_M8>LQ6O4)
MBMN[J>($OAQ/H^ "@[Z+@53M@>*>?B/,NF(+DQ=Y11M$O,&PZ_;/L8Y JXY
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
MQ0SN.T0: ^C?"*'?*N9(;6Y0\[]02P,$%     @ PGQ34F4RW:UJ!0  !!4
M !@   !X;"]W;W)K<VAE971S+W-H965T-"YX;6R56%USVR@4_2N,IP_-3!L+
MD!!D',\T]G:W,]MMIFEWGQ4+V]I*P@O82?_]HH](#B"2OE@?/O?JGGLO'&#Q
M(.0/M>=<@\>JK-7U;*_UX6H^5YL]KS)U*0Z\-O]LA:PR;1[E;JX.DF=Y:U25
M<Q1%9%YE13U;+MIWMW*Y$$==%C6_E4 =JRJ3/V]X*1ZN9W#V].)KL=OKYL5\
MN3AD.W[']??#K31/\\%+7E2\5H6H@>3;Z]D'>+5&26/0(OXN^(,ZNP<-E7LA
M?C0/G_+K6=1$Q$N^T8V+S%Q.?,7+LO%DXOBO=SH;OMD8GM\_>?_8DC=D[C/%
M5Z+\I\CU_GI&9R#GV^Q8ZJ_BX0_>$VH#W(A2M;_@H<.F> 8V1Z5%U1N;"*JB
M[J[98Y^(,P-()@Q0;X!L@WC" /<&^+4&<6\0MYGIJ+1Y6&<Z6RZD> "R01MO
MS4V;S-;:T"_JINYW6II_"V.GERM1*U$6>:9Y#NZTN9BB:@7$%JQ$95IIW]3X
MQ,&G>B,J#MZ#[W=K\/;-!7@#BAI\VXNCRNI<+>;:1-/XG&_Z+]]T7T837X8(
M?!:UWBOP6YWS_+F#N:$Q<$%/7&Y0T..:;RX!AN\ BE#D"6CU:G/(/.;KUYO3
M !L\5 :W_O"$O^?%^'+@,FM&BKH*^(X'WW'K.Y[P_96?>'WDOJ)UADEKV$P:
MIV6,8\R2Q?QTGDH/+*$IHL]A:P\L3A)&!MBS\),A_"08_DHHW21%3M/H')"S
M#R-($F+%M_+ D*%KT_# (L)@ZJ=!!AHD2.-W*90"!RFVA?9Q(!X.*46IQ<$#
MPPEBD<7!!Z,D97X.Z< A#79IWY?U#O!'HT6*JT![TL$I#2;F<R9_\-:IF5J
MRDK;:Y<?ZC B#$?,2H^+2A%+B94=CR^:8.Q/#AMXL!>&F>*9W.Q;&KEIUE(<
MFA'M(\.< #!AL57$E0>%"$,6&1>%:(H3/QD8C5(1A?N5UZ;89<LFRXT8%4HW
MQ3]Y1V#O[#R*!*:Q%>O* XM->>SZ^+RA!$X4")[)'PQR^B:T821>Z.*>$71B
M@$G*&+0I^7")F49M3AZ<X4[A!"DTDD)!4KU6;Z6HGJ@9X?!20FY:&<7$9N3"
M4D83IT@NC%+*Z 2?40DA#O+YHO=<FN5&P^H=J+EW /4^GHT-Z,P&'A3$.+6)
MN"B4)A/3/1Q5%X9EMZ_+/3?K==[S 3I[G&BWV)V3$(MM)?; *(0,VY1<&#.*
M.#4IC%(,PUI\*\6I:'<!AM3+G%PEA2A*;5GVP=+$D64?+(G(5)U&789A8?[+
M[+<Z)EX.Q%G4)!$EMBQ[8 2?)[SGX,)2DM"I,3/J,@P+\\@!F!D J'TF>6CI
M"$=QAF%UOLE4L0%OS>H_%V69235^X,*;K\X=/:_2I3,N71"Z=,>E#T7CB5R-
M,@W#.KTNRF.S__D%3LS#B3JD7)0AY72 #S4E FA4:Q2%]P]-\ H<E2&F!3"=
M<# DF]GSE_H"C5**PE(Z]D7K5'D3AUS-0R3%9EU@SVM>)"7$Z(Z50"^2443@
M1&>@44E16$G/.R/$RA4^$RLC.+%G!1\RC6(6(WO"]B)12BF<V#VA44]1>&O9
MZ:EW?__V3[,GN6A%MMEAF8D\U!NC\J&P\GTT@E?L:K Y2LGKS4]@%HZU*K/N
M["?_]ZATN]7U)M?=1.*$V9+A0<$XM9=<'M1[C)*)V1:-*HA>VI&>YW):.WHW
MS[0CCHG3^RZ,)! QFXT+2S'&D<5F?G8\5'&Y:X_9E)D1CK7N3E>&M\-1WH?V
M ,MZ?P.OUMV!W.BF.Q\T.[9=42M0\JUQ&5VF)B;9';EU#UH<VD.H>Z&UJ-K;
M/<]R+AN ^7\KA'YZ:#XP''PN_P=02P,$%     @ PGQ34D#$LLH1!P  +"<
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
MLMVK6;L3P3?E&S4W7 B^+@]7+(Q85@CD]TO.Q>-)\9)._8+<^%]02P,$%
M  @ PGQ34C(KX&H$"   P"(  !@   !X;"]W;W)K<VAE971S+W-H965T-BYX
M;6R56EUSXR@6_2N4:QYVJ]IM ?KL2E+5;4_O]L/,I#H[,\^RA&.V9>%!.!_[
MZQ>0(MEPA3,OB2P?KC@7N.> =?,LY(]NSYA"+X>F[6X7>Z6.GU:KKMJS0]E]
M%$?6ZF]V0AY*I3_*QU5WE*RL;:-#LR)1E*X.)6\7=S?VWKV\NQ$GU?"6W4O4
MG0Z'4KY^88UXOEW@Q=N-[_QQK\R-U=W-L7QD#TS]?KR7^M-JC%+S VL[+EHD
MV>YV\1E_VL2V@47\P=ES=W:-#)6M$#_,AV_U[2(R/6(-JY0)4>I_3VS-FL9$
MTOWX:PBZ&)]I&IY?OT7_:LEK,MNR8VO1_,EKM;]=Y M4LUUY:M1W\?QO-A!*
M3+Q*-)W]BYX';+1 U:E3XC TUCTX\+;_7[X,B3AK@-.9!F1H0-P&\4P#.C2@
M[VT0#PUBFYF>BLW#IE3EW8T4ST@:M(YF+FPR;6M-G[=FW!^4U-]RW4[=K47;
MB8;7I6(U>E#ZGQY4U2&Q0^NRVZ.O>F)T:(E^?]B@?_ST3_03XBWZSUZ<NK*M
MNYN5TGTPD5;5\+PO_?/(S/,P0;^(5NT[]'-;L_HRP$IW?F1 WAA\(<&(&U9]
M1!1_0"0B$="A];N;XP)HOGE_\SS AH[C06T\.A/OMR.3I>+M8[\BN.*L"X2-
MQ["Q#1O/A/U55Q#>5N+ H"'KVR:VK2D43W=)E*?9S>KI/(\^*J5IDERB-CXJ
M2Y,\'U$7W4_&[B?!K'RN_ZN70C\SE=#UIA)MQ1N&VI&7N6\^56;6'J5XXGIZ
MH>TK$D!&/P52FHY]2H,IW3!=:"M>]N6KK5%Y$%+Q_]D;4);[<.E99BA)BMC)
M,H#28^&@-CZ*I%D2PUG.1D99D-&#$M6/I:FB-=(IU=+2]>S8B[D&IT[F=03'
M:48=4@ JRG+LD()0!9F9.OE(*K\R3#LFI6:DRA=W*?44<N^Q69*YD]\'I3A*
M'0(^".."IC"!8B10! G\2XLWTH/0E7J^Z[*\/74:T74PF<+K0N0PN8K8^(AE
MFF&8!8XFH8F"/#Z?+0_#8\^:>JG$4FOW27+UBCI6F0NOX VR$GF]BK%3?-8
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
MA<F11\>1/=:YEM2++N8(XY.X'+C4.<Z!Q9">REQ4PNCM@9H<_$,^F8/*C?2
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
M6(#.=YJ>MVG!!HY_4];_ E!+ P04    " #"?%-2S6Q3UR$$  "A"0  &0
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
M09,>*LM YTM)#TJWL0KZV7'^'U!+ P04    " #"?%-2H>)SF^\"  "=!@
M&0   'AL+W=O<FMS:&5E=',O<VAE970Q,BYX;6R%55%OVC 0_BNG;)HVJ6U"
MH)0R0"ITU2:M6U?:[F':@TDNQ,*QJ>U NU^_LQ-2NE+VD.1\OOONNSO[,E@K
MO3 YHH6'0D@S#')KE_TP-$F.!3-':HF2=C*E"V9IJ>>A66IDJ7<J1!A'43<L
M&)?!:.!U5WHT4*457.*5!E,6!=./8Q1J/0Q:P49QS>>Y=8IP-%BR.4[1WBZO
M-*W"!B7E!4K#E02-V3 X:_7''6?O#>XXKLV6#"Z3F5(+M_B2#H/($4*!B74(
MC#XKG* 0#HAHW->801/2.6[+&_0+GSOE,F,&)TK\Y*G-AT$O@!0S5@I[K=:?
ML<[GV.$E2AC_AG5EV^X&D)3&JJ)V)@8%E]67/=1UV'+H1:\XQ+5#['E7@3S+
M<V;9:*#5&K2S)C0G^%2]-Y'CTC5E:C7M<O*SHV_*(G3A$"X8UW#'1(EPB<R4
M&JGTU@Q"2U&<;9C4B.,*,7X%L17#I9(V-_!)II@^!PB)7L,QWG <QWL1SS$Y
M@G;K .(HCO;@M9N<VQZOO2=G U;!!9=,)IP)F%IF=R7\#+_3X'<\?N<5_*U2
MGG.3".6J:>#7#3Y8& N5+'[O*NM>4'<Y^V;)$AP&=/L,ZA4&F^Z=32?0BZ.#
MW4UT6_ZQN4:DP_,(7W&% EKOWO3B5OSQ1TDP::V,:^7WF8O!9@*A!5+9>KM=
M;]]*]60@%=SD"!-5+)E\]!8G'PTDS.2 ]R5?,>%*"T7%*05F(7-45YXJ,Z R
MH"YC,4/==)I>K5,*[J S)6A\<#D'ZR*:>HCP/R1F31>9,4AA]N*]5/^C(9OW
M7%*Q5&F83,V'3;4V!=I4XE7]T[$Z\X3Z,'&5(+"7):&K@H_4$[V@ 5R4MB2O
MK*2P\!:.CP_:)ST2#NNGVSLX[<:-XD99LOZ_W:XC'6Z-C +UW ]&:IDJI:VF
M1Z-M9N]9-7*>S*O!?<GTG$L# C-RC8Y.C@/0U3"L%E8M_0":*4OCS(LY_3]0
M.P/:SQ2=OWKA C1_I-%?4$L#!!0    ( ,)\4U)D()*BP@0  %8+   9
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
M>0 E0%"@H>0<VYV-O OVG$>1D\01.V1!ZF8^>TW]5%71(S]Q_"3$DR0DMW@
MP8Z2P.!'B&D>LSAT$SXBB (GP29P#PTBWT(0.UZ204R8NG$R!8"\EYDG:49.
M^D0 L&\2.WX<LP3NG(X 8L_QH"@!2+9,$*=.%J40$R4N;#0!$"1.BB0"/T_(
M-D\#0%'G(U,'E#[0 R,+]\*,Q^U=D(5. ,L=L#AS@]AXZE3(4!06@CK+L3IR
M#V[7*;3ZN&W[?7ND]=KD/,0ZVN^6FH.AG1V8R=$"?8O^0^Z+X7SD]%U[[&_Y
M'XG%LK8O/DPH7H/_3E_U78G#5GW8$#KL,Y*>M!W"^:0IH]N[86< 7=+D2";;
MCL66O>^,M GS36(:HOE2TLL9>O0:4[E"0NFP'_^@['F/=B?6GQ\<#B*F<)ZR
M["!QDYB4.@B0T0.J?W&(Y([X#1#Z:7_#GAN:T%#'L9LF+$F=,/592!&*8$"Q
MC1"<2*2X(/<DJM309\CW'A5':DA"%T&").%%Z% "2$VXZV66B!MR[@<NO)4'
MH1-F(4O=D (Q)CF^;X*<>[C)K5]L3U^3H7[5#_4P)VIW/G;X2N8-IHIOFT*;
MXTE3E85I^]OQ)4,_WJ*Y7] ;+C/9X%JZ[-0\>X+K3H, _0K"R_B13=X$WTS@
M#\?E(UZO-NRLNX]5Z"=4%Y,&V1LJE!/8;\G6GXVMK0:G9K!D%^!K7J=,B7M0
M>ZH.]C4U^2X.7#\;4RZV&"T;MII'M+D#*[-ME5B9[)O&:%$YY=C A6<BK\QE
MJ4WV1:=GZD]L"L,^(/>+3^"C:,#KDHS>0XQ >.2$*$;D<PB%O4 R'\Z<4+E+
MJ)?9!I+Z5 ;2A,+F*4 RG(1P[,#4K@D0+W4XN3OG%*A[@7"/NF$R21K2&Y0)
M$O D[SI$P7#]\"E(X,*!E\#$&<T/*47Y0ZZ./3=9EUZH6&>X?^=336/E\XNK
M3^C^^ND6;CNTN"A,ACEJE% W4K/:IC'<HB6.'0 QM:WI?0*&.KV6LF8>G)LZ
MT^_$QVH"Y_\:(%.]OQ\A%_=AW0\1'VV61S-<E)('#OX 4)X7VZ9DOU\>X=]4
M D8\JDJQ$V(DM,PV#K)+_$B@H$GC:,R3V(W"#1SNA 'JA1>Z<)@?@/,\1HR@
MYX//IBX4FOBL[P0)]9>D8Y \#5Y&A20-=HS%,S1J,!9'/G@@=A(S&!_V"_<
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
M?S")>Z[>-Q]&5O:*.),&+YSV=8DW?*YH /;/)=XPZ@\RT/[/X/Q?4$L#!!0
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
M,1Z%&O^<*PG_H 'X/C7&IP=BT-RX/O\?4$L#!!0    ( ,)\4U)3**Q0  ,
M %D&   9    >&PO=V]R:W-H965T<R]S:&5E=#(V+GAM;*5546_C-@S^*X1Q
M#W> 5]N2'2M%$N#2WK ;D%O1]C8,PQX4F[&]VE(F*4WW[T?)B=<!UP##7B1*
M(C]^'V,RBZ,V3[9%=/ R],HNH]:Y_762V*K%0=HKO4=%+SMM!NGH:)K$[@W*
M.@0-?<+2=)8,LE/1:A'N[LQJH0^N[Q3>&;"'89#FKS7V^KB,LNA\<=\UK?,7
MR6JQEPT^H/NZOS-T2B:4NAM0V4XK,+A;1A^SZW7N_8/#SQT>[2L;O)*MUD_^
M\+E>1JDGA#U6SB-(VI[Q!OO> Q&-/T^8T932![ZVS^C?!^VD92LMWNC^EZYV
M[3(2$=2XDX?>W>OC#WC24WB\2O<VK' <??,B@NI@G1Y.P<1@Z-2XRY=3'5X%
MB/2- '8*8('WF"BPO)5.KA9&'\%X;T+S1I :HHE<I_R/\N ,O784YU9?M$/@
M\!W<XS.J \+[1[GMT7Y8)([@O5-2G:#6(Q1[ RICL-'*M18^J1KK?P,DQ&LB
MQ\[DUNPBXBU65\"S&%C*T@MX?!++ QZ_(-;"*/ "7#[!Y0$N?XM>9V73&&QD
M^,#T;BKB;R$'/.*+@W6OJZ??OU7.B^B^&Z_M7E:XC*C=+)IGC%:_HC1C>8&*
M@\,632C0^TZ!:_7!2E7;#Z%>M&1SOX@SK6OXJCI'H0].^D*\ YX7<9D*;\W2
MF*6%MXHT+G@!GPZ&6A_*/"[G,Q L%O0LTEB(.?PH]U)!QF,QSR C#$J2Y7%6
M,GC43O;4KF,AWD'.\YC//7!>B+AD/EE.:0L"_9]J/JL_3KV]T7W=J8:@65;&
M\SD[67E6!(L4,0XW7VY@(ZNV4]XWHTR%*(E^$><EIYV35P;\%NY,IYSWF;&X
M2!G,LI@7#,B!YPP>PK#<H->9B5AP01GB-"6..>46\)-K2<CY6^"$/O.K$+2R
M[+^5Z%N?:?*JW0<T31AJ%BI]4&[L_.EVFIL?QW'QC_LX=#?2-)VRT...0M.K
MDL:4&0?9>'!Z'X;'5CL:1<%L:?:C\0[TOM/44Z>#3S#]FZS^!E!+ P04
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
M_#_UBPN7C6F(VC=[Z.*97AH:]VRFG;GL=4A>:".J7[?R)@UJ,9_X"5S/CZW
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
MLPS* &K<\4':C^KP#H]Z<H=7*6G\"H?1-YL'4 W&JO883 Q:T8U?_G"LPY.
M,GXA@!T#F.<])O(L7W/+5PNM#J"=-Z$YPTOUT41.=.ZG?+*:;@7%V=4'91%*
M^ \VFGZTMC^!=S6\^3&(GDIOX>R6;R6:\T5D*9N+B:HC\GI$9B\@)PQN5&<;
M V^Z&NOG !'1G+BR1ZYK=A+Q-587D"8AL)C%)_#227OJ\=(3V@V, D_ 91-<
MYN&R%^ >*QC"1G(JW?-"?O-YX!8?+*REJNZ^_ZND)S.X!KTT/:]P&5 '&M3W
M&+BJ8+M%[2MS)CJPC1H,)3?GOE"T)'-X[]B\@B0+8U8>C7D)ZT'(6G1[X]F*
MMM?J'AU? T41LC*'(@_++(4;7C7$1H_O R=9C"5A&B>4I SG>0;7JNT'2VP:
MKNL#U^C]C=I9ORGF(8L+8!DYI_ >J9\:)?_.')8LH37-$L+KC-7#V,(DCMSV
M)-U FH9%&4.>A6F2PJVR7$)&AQECD)9YF,<,KJIJ: ?)+=;4J52R2O!Q%A G
MWBIMQ:_QX"S)X[#(9W!.)DDJYC&9SWIBTAQ"1\/R%;"2A;/9S%DS(D/O_5^/
M*'K2FRWJO9] !BHU='9LT^ET&G)78V__<1\GY W7>]$9D+BCT/BBR /0X]09
M-U;UOM.WRM+<\&9#@QJU<Z#[G:(7?]RX!-/H7_T&4$L#!!0    ( ,)\4U(D
MVNF,7P(   H%   9    >&PO=V]R:W-H965T<R]S:&5E=#,R+GAM;'U436_;
M, S]*X2P0PMDM:TD_4(2H&DWK(<.1=MMAV$'Q69BH[+H27+3_OM1LNMF0)N+
M15+D(Q]-:K8E^^A*1 _/M39N+DKOF_,D<7F)M7)'U*#AFS796GE6[29QC455
MQ*!:)S)-CY-:548L9M%V:Q<S:KVN#-Y:<&U=*_NR1$W;N<C$J^&NVI0^&)+%
MK%$;O$?_H[FUK"4#2E'5:%Q%!BRNY^(B.U].@G]T^%GAUNW($)BLB!Z#<EW,
M11H*0HVY#PB*CR>\1*T#$)?QM\<40\H0N"N_HG^-W)G+2CF\)/VK*GPY%Z<"
M"ERK5OL[VG[#GL\TX.6D7?S"MO.=I@+RUGFJ^V"NH*Y,=ZKGO@\[ :<?!<@^
M0,:ZNT2QRBOEU6)F:0LV>#-:$"+5&,W%52;\E'MO^;;B.+_X3A[A##[#M7E"
MX\F^P,&#6FETA[/$<X+@EN0]V+(#DQ^ 91)NR/C2P1=38/$_0,*5#>7)U_*6
M<B_B%>9',,Y&(%.9[L$;#W3'$6^\AZZ#CN >N,D -XEPDP_@[GE'BE8CT/JM
M@2.X;*UE&7['1/" SQZ6FO+'/^_U=&^*L)3GKE$YS@5OG4/[A"*T!>L5VMB:
M@\J +ZEURA3N,':*/]D9/)!7&JKAQV;9*),2LG0TYML+S0NI3([ JPVT<L0]
MR3$8#N1Q"H=\3"9\[! S_$HP536$?@IHI\>R$]*3*;S7U61G/FNTF[B%#G)J
MC>]&=; .BW[1S?>;>_=*W"B[J8P#C6L.38].I@)LMWF=XJF)T[XBS[L3Q9(?
M*[3!@>_7Q"/0*R'!\/PM_@%02P,$%     @ PGQ34E**9<B3!P  !Q8  !D
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
M:9C$3T!X'"BD<V('2+L32"I .T,;AJ%JXCF01% B30P1?!\@*5X4*"A]]A\
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
MM(H[E()+5)9K!0;+670Q.E]DWC\X_."XL5LV^$J66C_ZQ9=B%@T](128.X_
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
M;"]W;W)K<VAE971S+W-H965T,S<N>&ULK5?;;N,V$/V5@9"'!.#&%'6C MN
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
M1/638>ONVE5(9)3EXEJI7E<AN/IR#;Z C(*7E)4BHHF8F%(55:4VX[: NZ8
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
MY9_98=+V_C^:=A)=,[WBTH# I:6,!A^M+MUV=VN06OOWOE!DN\<O*SL04;L
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
M [V_XKI!]1/3[X;KK?@+4$L#!!0    ( ,)\4U*+Y1@HJ (  )X(   9
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
MR 7Z]S7GZODD_S)5?8F<_ ]02P,$%     @ PGQ34GT#R?Y7 @  ; 4  !D
M  !X;"]W;W)K<VAE971S+W-H965T-#<N>&ULC5113]LP$/XKIX@'D$:3)BFT
M*(TT6DWL81.BL#V[R:6Q<.S.=BC]]SL[(72C;+PDOO-]G[^[\SG;*?UH:D0+
MSXV09A[4UFZOPM 4-3;,C-06)>U42C?,DJDWH=EJ9*4'-2*,H^@B;!B709YY
MWZW.,]5:P27>:C!MTS"]OT:A=O-@'+PX[OBFMLX1YMF6;7"%]F%[J\D*!Y:2
M-R@-5Q(T5O/@\_AJD;IX'_"#X\X<K,%ELE;JT1E?RWD0.4$HL+".@='O"1<H
MA",B&;]ZSF XT@$/UR_L7WSNE,N:&5PH\9.7MIX'TP!*K%@K[)W:W6"?S\3Q
M%4H8_X5='QL%4+3&JJ8'DX*&R^[/GOLZ' #&Z3N N ?$'P4D/2#QB7;*?%I+
M9EF>:;4#[:*)S2U\;3R:LN'2=7%E->URPMG\N[((EW .WYA^1,O6 F&%1:NY
MY6C(?\T$DP6"JN &17ENU3D5S^WO88EK>QB]WL-"2:NI-RT31-G'G2Z)F0MS
M1GP/JR6<GIS!"7 )][5J#9.ER4)+R3A)8=$+O^Z$Q^\(7V(Q@F3\">(HCH[
M%Q^&CV=_PD,JX5#'>*AC[/G2]_A:= DIB;!'ID%I$&B.YM4133R1&[*G/$FC
MZ30+GXZ<GPSG)_\]GU46]:L$6VO5;FJH:$Z\YZB:CO;B0,UDEDPNCZM)!S7I
M/]7<*TO];UZOE!DNR3$-Z9N*S)(TG0P:NH:^C4JGR>QOI>'!++AWB.[UADM#
MW:@(%XTNB4!WL]T95FW]>*R5I6'SRYJ>0]0N@/8K12/2&V[BA@<V_PU02P,$
M%     @ PGQ34FE[1,P] @  4 4  !D   !X;"]W;W)K<VAE971S+W-H965T
M-#@N>&ULC53;3N,P$/V54<0#2&S3)FVY*(U$":O=AZXJ+KO/)IDV%HX=[ DM
M?X_MA&Q!+>(E\>6<,SXS'B<;I9],B4BPK80TLZ DJB_#T.0E5LP,5(W2[JR4
MKAC9J5Z'IM;("D^J1!@-A].P8EP&:>+7ECI-5$."2UQJ,$U5,?TZ1Z$VLV 4
MO"_<\G5);B%,DYJM\0[IH5YJ.PM[E8)7* U7$C2N9L'5Z#*+'=X#_G+<F)TQ
M.">/2CVYR>]B%@S=@5!@3DZ!V=\+7J,03L@>X[G3#/J0CK@[?E?_Z;U;+X_,
MX+42_WA!Y2PX#Z# %6L$W:K-+^S\3)Q>KH3Q7]BTV+-Q 'EC2%4=V9Z@XK+]
MLVV7AQW":'J $'6$Z#/A4(2X(\3?)8P[PMAGIK7B\Y Q8FFBU0:T0ULU-_#)
M]&QKGTM7]CO2=I=;'J5_%"&<PP]8:GN5-+T"DP7</#>\ML4E.,Z0&!<&[G%+
M#1,G%OIPE\'QT0D< 9>PX$+8 IHD)'L<)QKF7>AY&SHZ$'H4P4))*@W<R *+
MCP*A]=&;B=[-S*,O%3/,!Q"/3B$:1L,]![K^-GUTL8>>?9]^_H6;N"]-[/7&
M!_5L(^><N?XXA7M%3.Q+<BMRX45<D[^DT<5@FH0ON\;W@,X&XX^@; \H'DQZ
M4&LBW+EK%>JU[UD#N6HDM97J5_MGX<IWPZ?UN7TNVN[^+].^-0NFUUP:$+BR
MDL/!V20 W?9O.R%5^QO]J,CVAQ^6]LE#[0!V?Z7LK>XF+D#_B*9O4$L#!!0
M   ( ,)\4U(-96[<-@,   P*   9    >&PO=V]R:W-H965T<R]S:&5E=#0Y
M+GAM;(V676^;,!2&_XJ%>K%*;3'FNTHBK<VF3=JF:NVV:Q><8 TPM4W3[=?O
M&"A-P<EZD]CF?8\?'QN.%SLA?ZN",8V>JK)62Z?0NKET7945K*+J0C2LAB<;
M(2NJH2NWKFHDHWEGJDJ78!RY%>6ULUIT8S=RM1"M+GG-;B12;551^>>*E6*W
M=#SG>> [WQ;:#+BK14.W[);I'\V-A)X[1LEYQ6K%18TDVRR=]][EVL/&T"E^
M<K93>VUDEG(OQ&_3^9PO'6R(6,DR;4)0^'MDUZPL323@>!B".N.<QKC??H[^
ML5L\+.:>*G8MRE\\U\7221R4LPUM2_U=[#ZQ84&AB9>)4G6_:#=HL8.R5FE1
M#68@J'C=_].G(1%[!B\X8""#@;S5X \&_ZV&8# $76;ZI71Y6%--5PLI=D@:
M-40SC2Z9G1N6SVNS[[=:PE,./KWZ)C1#"3I'-Q+.DM1_$*US].&AY0WLKH8'
MUZ)J1 UMA<3FD.S=FFG*2W4*AA^W:_3NY!2=(%ZCNT*T"K1JX6K -9.ZV8!V
MU:.1 VAKEET@WSM#!!-LL5^_V>ZE%OOZ[?;DM=V%'(^))F.B21<O.!#O"R3!
MEH/>%78N\Y(^KKP $YCQ<7^I5E7ZHGJ%Y(](_E&DJY:7.:^WJMM,7C52/#*S
MG=;-ZF-%>PAQ3))P FI1A4G@VT&#$30X"OJ59@4,R?[4L>=39Z,,9O,3XOG8
MFV!:9#A)P\#.&8Z<X5%.\ZJTFDE44)GOJ&0=KQ(;;3HVW'">KI3@>$([5Y$@
M#0\D-1IAH^,'DL'GLA#E_W<^FD,F9)I1B\@//#MB/"+&_\EGK;1L^PH!'Q/
MW$JFK)#Q;'[?CQ,\H9RKPL#W#F0R&3&3HYAW0M/2QI3,9@M\/R!D C67^4D8
M8F*G2D>J]"C5^RQKJ[:DFN50".%2D'':EUHXD[024O._W8"-/)TAG7LACL-H
M@F[3$2].L9W=PR]E"1^E?U5GQC?^#-7,^MH/T?8_D"0A433EM>DB/_8F6[*V
MZ4B"\?1 NWN5U]R3OE*YY;5")=N $5_$$$'V5X^^HT73%>-[H:&T=\T"KFM,
M&@$\WP@HR$/'U/?Q KCZ!U!+ P04    " #"?%-2E54I[R\"  !=!0  &0
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
M,>!."8.;,KAU&3HI0R>V3*)*;(<9570\$GR/A*:&U?27V)@Q-ZCO1]KOMTK
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
MJ8QX=3&O.I)MS%7UF4EU\37-5'W, -< -;]BZKI:=_0"S>?1[']02P,$%
M  @ PGQ34N5://J1 P  I P  !D   !X;"]W;W)K<VAE971S+W-H965T-34N
M>&ULK5==;]LV%/TKA+ !+=#HV[92V ;BN,/ZX,U(T!;%L =&NK:(4*)&TG;\
M[W=)*:J=*I*W]L7FQSV'/$>7U-7T(.2CR@$T>2IXJ69.KG7UWO-4FD-!E2LJ
M*'%F(V1!-7;EUE.5!)I94,&]T/?'7D%9Z<RG=FPMYU.QTYR5L)9$[8J"RN,"
MN#C,G,!Y'KACVUR; 6\^K>@6[D%_JM82>U[+DK$"2L5$221L9LY-\'X96("-
M^,S@H$[:Q$AY$.+1=#YF,\<W.P(.J384%/_V< N<&R;<QS\-J=.N:8"G[6?V
MWZQX%/- %=P*_H5E.I\YB4,RV- =UW?B\#LT@D:&+Q5<V5]R:&)]AZ0[I471
M@'$'!2OK?_K4&'$""":O ,(&$%X*B!I ="D@;@"Q=::68GU84DWG4RD.1)IH
M9#,-:Z9%HWQ6FN=^KR7.,L3I^1]" PE"<D7NM4@?KXR'&;D5!2:6HO;17)$;
MA6E1F8XBG\P\*XG.@2PX1<A]F@L.BOQI(\A:LI256[(2&7#R9@F:,J[>FA5R
M*J%984V/F#V:W$A)RRV8]KMGAK]64#R _!LAOQ"/* -34T^C7+-I+VVD+6II
MX2O24-5*E#I7Y$.9079.X*%/K5GALUF+L)=Q":E+HN ="?W0[]C0[<7PX+H#
MOKP<GO2HB=I''UF^^!6^#T\5'CY\%IQM@+SY"E2^[7*YGV5,C@A4)"*%-;O+
MEA]F6/X(PYDY<6M.?)DY&=NS#,J,'!GPK,N??B+?]?U?NTSY?[#E?X:=R1^U
M\D>]/%_L?8GRZ1XDWO]DB\=4DXSB;;&A3)(]Y3M,&KP(,L&Y,;\"61_5SB2J
METOL<N9=M)_'(S<*I][^U)..J(F;Q.=1R^^C1J@[::/.%(];Q>->Q2M6LF)7
MM)=/CXF3EG+22WG'U./51@+@?:D![S!-)!K894\_D>^.NG.H'Q:ZT:@SAX9@
MH[ OAY)6?G+9$=H+CF\2SO2Q2WH_21RZ<;?V0=QW*FKQ [C '2=]ZJ];]=?]
M^42?+LVGP/_VLO9_5D8-, 5N/.FT=0"'MKZTI[9U !>Y_LOUSCTX*5B"GY%6
M RQQY"91MP$#P-"=Q-T.# +#[G/EG91O!<BM+8,52<6NU'5QTHZVI?:-+3!?
MC"],"6[+PF\T=?V^HG++L'KCL$%*WYW@'2KKDKCN:%'9(O%!:"PY;3/'SPB0
M)@#G-P(+Q:9C%F@_3.;_ E!+ P04    " #"?%-2DM'D,]0#   %#P  &0
M 'AL+W=O<FMS:&5E=',O<VAE970U-BYX;6S%5UV/FS@4_2L6VH=6Z@ VWU42
M:29T=_O0W5%'[3Y[P$G0 *:V,YG^^]J&(7PXF:P4J?,PP7#.]3WG@NV[.%#V
MQ'>$"/!2E35?6CLAFH^.P[,=J3"W:4-J^61#686%'+*MPQM&<*Y)5>D@UPV=
M"A>UM5KH>_=LM:![418UN6> [ZL*LY]WI*2'I06MUQM?B^U.J!O.:M'@+7D@
MXEMSS^3(Z:/D145J7M :,+)96K?P8PI]1="([P4Y\,$U4%(>*7U2@\_YTG)5
M1J0DF5 AL/QY)FM2EBJ2S.-'%]3JYU3$X?5K]#^U>"GF$7.RIN5_12YV2RNV
M0$XV>%^*K_3P-^D$!2I>1DNN_X-#AW4MD.VYH%5'EAE41=W^XI?.B $!AB<(
MJ".@*<$_0? Z@G<IP>\(VFJGE:)]2+' JP6C!\ 46D93%]I,S9;RBUK5_4$P
M^;20/+'ZAPH"( (WX$'0[.E&>9B#-:WDB\6Q+DWW"/S;Z.&MJE0A?H)W*1&X
M*/E[B?@#.(#O,"-\X0B9E@KN9%T*=VT*Z$0*<O8OM!8[#C[5.<G' 1RIIQ>%
M7D7=H;,14Y+9P(,? '*1:TAH?3$=)@9Z>CD]/J/&ZTODZ7C^B7BM[QS(KY8+
M7.=%O07OBKKS^[W)\#9@J .J+_]YA:(0A>'">1[:8( %*(036#J'>4GB!D$/
M&\GR>UG^_Y7U 1ST=TKR&_Q,F%QW 'DA+"LX 0TK,J)UY[0L,>.@(:SUP&A!
M.WD\2#I"MA=/')BC0M^.W&3P-S%CS@B@#3VS%T'O17#6B[\8KJ7JM\H:S H1
MRN4]F&B:HP(O<B?*TSG*"V4TLXZPUQ%>HN.:=0QG?D,WL*-)6=9F6 PGJ@TP
MZ-I!8I8=];*CL[(_=>+>+& T,_TFC)-@^E8:8#!TIYI3$RP(HO#$AQGW:N++
MU%RSC.V4P?"EC":JXUEM_-@.)ZATCO)B.T%FR4DO.3DK>8WK3!X]WBY@,K?<
MBV(?3:088-!+9@4TP%"$(M\L!KK'/=V]3,XU*]C-.5HKHZ'SK70#+$[LR1J5
M&E"1;WN^<>$=NS XV<!K[YM=Q-&.B)+ @U.1!IQA@TU-N/$..]:&CMK0[]P\
MN]E'10QM/SB]+ZX-%,.&FQI@IW?<L3G'\Q*\[,#4R<>/)7FS\/,S3N)[,#Z1
MRO&, R\[Y Q2N6J=#.>7Q/:FKY<SZ \JPK:ZS^(@H_M:M*?J_F[?R]WJ#F9R
M_T[U>+KO.(9I&\0OF&T+*;0D&QG2M2.YU+.VYVH'@C:Z"WFD0O8T^G(G^U3"
M%$ ^WU#9B70#-4'?^:Y^ 5!+ P04    " #"?%-2EAB?644%  #-'@  &0
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
MK0M* \(VNW#I>#T?#%&!O_1<J_F#/7_<TMOQAU?[PYOTQZ^2K'#&C;!Z@UC
M*/+\'J<A2H35<7L\-"C!UM?S\&L>_AP>[Q!.?^!V",.EW^>N@5GN,HIZY'4P
M;QF,1#&HV0>S5K5(I@QDZ,1N1S081&$10-C?J4-4?Y=.(3I<PII+^%8N[Q#5
M<-8F+5'>!/TI1(=^5-./9F?<^(B* [X5R>A6C+9#Q,*'(>PMX=T0YKOV2+Z%
M5G/\6V\D] [AK&R8B-2V@K1#'H9+J^\$#6PBS<)6%00GW2!JR#U.9Z3:2D\G
M6K8=#.CH8$[@]>D,82,+%-H-%7L>E?<(I#UK8VI@,H\Z09^^/7=_PJ8D@M,U
MT<PC$P[K%]V9J8'I#DT=;/S4A$TY!.?50V\X.2J-;5,T)X<&U<^=DY NGZ:<
M@=/US(_)-M[M;./-RS9#V%2V::HA.%T.S<\V_KQLHX-ILLT0-A;1IK2!_WMM
M ^<5-QK88(G.+F]@4]_ Z0+GS7>J2M_-3#*$#>]>.PVJ>_GJLFK*%CA=M_R
MBU5EP<U27(/3G"$[#6S\"E9ZQ6RU07),#ZJ=Q$!,S@4O6P3U;-VR^J(:-;WY
M.]G*4NV51DW9![M'])#*E8[W0J4EK@8&H&5KJ1QP<E+-EF?".<G5XQ&C!%,)
M$._WA/#7@?Q W>#;_ =02P,$%     @ PGQ34E*<6TD? P  ; L  !D   !X
M;"]W;W)K<VAE971S+W-H965T-C N>&ULK59K:]LP%/TKPC!H8?4SSY($VGAC
M^Y!16MHQQCXH]DTL*EN9I#3)OY\DNVY2%#4K_9+H=8[O.;K7OJ,-XX^B )!H
M6])*C+U"RM5E$(BL@!(+GZV@4CL+QDLLU90O ['B@',#*FD0AV$O*#&IO,G(
MK-WPR8BM)245W' DUF6)^>X:*-N,O<A[7K@ERT+JA6 R6N$EW(&\7]UP-0M:
MEIR44 G"*L1A,?:NHLLT"C7 G'@@L!%[8Z2ES!E[U)/O^=@+=41 (9.: JN_
M)Y@"I9I)Q?&W(?7:9VK@_OB9_:L1K\3,L8 IHS])+HNQ-_!0#@N\IO*6;;Y!
M(ZBK^3)&A?E%F^9LZ*%L+20K&["*H"15_8^WC1%[@*AW!! W@/@UH',$D#2
MY%1 IP%TC#.U%.-#BB6>C#C;(*Y/*S8],&8:M))/*GWO=Y*K7:)P<O*#24!1
MC"[0G639XX7V,$=35JK$$MA<S06Z$BHM5GHBT+W>)Q62!: '3-?U&;9 -\!-
M&E89U%SH+ 6)"17GBN)@M\ <!/H]@W(._,\HD$J(#B?(FJ"OZZ#C(T&K>&>L
MDH5 7ZH<\D."0#G0VA _VW =.QE3R'R41)]1',:A):#IR?!H:(&GI\,'#C5)
M>ZF)X>L<X?NR7:FR4O=$R0+0V2_ _-SFLINEAW8**&QNO!>8O@-XX$"G=:!S
MF@,Y>2(Y5#G:$:"YS00W4>B'X2>;!>^#I?\-.Y#?;>5WG3PS4I%R71XIL0/*
M7DO9<U+>$O%XL>  JO@EJ/J5B&,)-D?=1*$?Q59'W;#([PZMCKIAL1_V7([V
M6_G]TQ+JB5'URJ-$[FS2W23=T!]TK=K=N$[L]Q*K>#<N4:8Y\VG0JA^X\PEO
M3\VG84LY_*A\<A.I?.I;/77#8C^Q7D7Z)NSU31S(C\*7#V_X$1GU!DMWZ ^M
M=3%]"YCX7:MOZ1O I.\G]I(*]MJ0$OC2M',"96Q=R?I3W*ZV+>.5:91>K5_K
M5M*T-R\T=1\ZPWQ)5!="8:$H0[^OWH.\;NWJB60KT^S,F52MDQD6JAT&K@^H
M_053#4\ST0]H&^S)/U!+ P04    " #"?%-29L)K%C8"   Z!0  &0   'AL
M+W=O<FMS:&5E=',O<VAE970V,2YX;6RU5%UOVC 4_2M7>6HEUGP 6U5!I &K
M-JFLJ&R=IFD/)MP0J_Y(;6? O]^U22,J%;27O<2^ML_Q.2>Z'FVU>;(5HH.=
M%,J.H\JY^B:.;5&A9/9*UZAHI]1&,D>EV<2V-LC6 21%G"7)^U@RKJ)\%-86
M)A_IQ@FN<&' -E(RLY^@T-MQE$8O"P]\4SF_$.>CFFUPB>Y[O3!4Q1W+FDM4
MEFL%!LMQ]#&]F0S]^7#@D>/6'LW!.UEI_>2++^MQE'A!*+!PGH'1\ >G*(0G
M(AG/+6?47>F!Q_,7]MO@G;RLF,6I%C_XVE7CZ#J"-9:L$>Y!;S]CZR<(++2P
MX0O;]FP20=%8IV4+)@62J\/(=FT.1X!T< *0M8 LZ#Y<%%3.F&/YR.@M&'^:
MV/PD6 UH$L>5_RE+9VB7$\[E7[5#2/OP#NZ0S%FXF*%C7%CXACO7,'%)6_=E
MR0N$9<T*[,&<J::D-!O#U09N6<$%=QQM#YA:PQ0-X15,M:R9VL,C5KP01.PW
M/STWO*9?ZN#7'.4*S>]1[,B%UQ(7K>+)07%V0O$,BROHISW(DBQY#8_)?)=
MUB60!;[!";XY5UPV\H2B5Y3]CK)_EO(.K45*ZKY&PYQ/*83;HTR-!%U2.,H9
MBA N?B(SEV^%</Z&%/8$/"-UT$D=G'?/=O_J?MA1#O^[^_,W7 ?W]BVM\5$K
M^%=ESLR&*PL"2Z)*KCX0LSETZJ%PN@[=L=*.>BU,*WK<T/@#M%]JZI"V\ W7
M/9?Y7U!+ P04    " #"?%-2'+9N[[8"  #0"   &0   'AL+W=O<FMS:&5E
M=',O<VAE970V,BYX;6R5EF]OVC 0QK^*%?5%*ZW-?TBJ@+2"JE7J-E3:[;4)
M!UAU;&:;TGW[V4Z:04(HO $[>9[+[RZ77+(M%Z]R!:#0>T&9'#@KI=:WKBOS
M%118WO U,'UFP46!E=Z*I2O7 O#<F@KJ!I[7<PM,F#/,[+&)&&9\HRAA,!%(
M;HH"B[]W0/EVX/C.QX$GLEPI<\ =9FN\A"FHE_5$Z)U;1YF3 I@DG"$!BX'S
MU;\=I49O!;\(;.7.&IE,9IR_FLW#?.!X!@@HY,I$P/KO#49 J0FD,?Y4,9WZ
MDL:XN_Z(?F]SU[G,L(01I[_)7*T&3N*@.2SPAJHGOOT&53ZQB9=S*NTOVE9:
MST'Y1BI>5&9-4!!6_N/WJ@X[!C_J, 25(3C5$%:&T"9:DMFTQECA82;X%@FC
MUM',PM;&NG4VA)F[.%5"GR7:IX8_N +DA^@:/8*NAM2+.TPQRP%-;1<]L+)5
M3,TOQZ PH?)*JUZF8W1Y<84N$&'H><4W$K.YS%REH4QH-Z\ [DJ H -@#/D-
M"OTO*/ "[X!]=++=3_?MKBY%78^@KD=@XT4=\7ZN0>ADV1)14P^$I01U,*TR
M3FSCF&?E;9@F<9RY;[OP;9'O1\%_U1YC6#.&1QE'&R& *<0;K)3@&:%$$3@(
M7 ;M[;"$03]H !\0A9%WF#>J>:.CO(^<+:\5B.)<XJ@%TX^37H.X+4KB7D>%
MXYHX/DK\S!6FY]+&+1#?2^*D@7M Y:=>!V^OYNT=Y;TGS#ZRG_5LKW7Q($R;
M!6V+.NY_OZ;KG]2OBSW*3ZK9;U'$<;-9VYH.TJ0F34[LU+-8D_8]3<W;: ^V
M+>J 36O8](0F/0LT;;V.@JCO-T#;HB:HNS-OS*S_CL62,*D9%MKCW?2U693S
ML]PHOK8C:,:5'FAVN=*?'"",0)]?<#V&JHV9:O5'S/ ?4$L#!!0    ( ,)\
M4U*K7]T+:0,  )H+   9    >&PO=V]R:W-H965T<R]S:&5E=#8S+GAM;*V6
M6V_;-A3'OPHA]*$%EDBB)-LJ; -)W&(%VBUHVNZ9EHXLHA3ID72<[=./I!3%
MUBU&L1>)EW,.?W]>S_(HY$]5 FCT5#&N5EZI]?Z][ZNLA(JH:[$';GH*(2NB
M357N?+670'+G5#$?!\',KPCEWGKIVN[E>BD.FE$.]Q*I0U41^<\M,'%<>:'W
MW/"5[DIM&_SU<D]V\ #Z^_Y>FIK?1LEI!5Q1P9&$8N7=A.\W(;8.SN('A:,Z
M*2,K92O$3UOYE*^\P!(!@TS;$,3\'N$.&+.1#,??35"O'=,ZGI:?HW]TXHV8
M+5%P)]A?--?EREMX*(>"')C^*HZ_0R,HL?$RP93[HF-M.P\\E!V4%E7C; @J
MRNL_>6HFXL0AG(TXX,8!=QWB$8>H<8@N=8@;A]C-3"W%S<.&:+)>2G%$TEJ;
M:+;@)M-Y&_F4VW5_T-+T4N.GUW\(#2B,T!7Z#&;ZU',!?7@R6\O\WVY $\K4
M.]/S_6&#WKYYA]X@RM&W4AP4X;E:^MJ V'!^U@QZ6P^*1P8-,?HBN"X5^L!S
MR,\#^$9!*P,_R[C%DQ$WD%VC*/P-X0 ' T!W%[N'Z8#[YG+WQ82:J%V4R,6+
M1^+]N0=)-.4[Q-Q:9$+IH5FNHR0NBCW@C^LX3,.E_WBJO&\4I;.@-3H#C%O
M>!+PIA)2TW^).[JB0-*>KBM17!T,+5$*]."NJ(/.3E#"..K@]FU&6).6-9ED
M_<0U2% :&=1Z.L66T9UC'Z1,>@2XP]BW&&&<M8RS2<8?1%*R9?#*>L]ZXZ:+
MM,/6MPF#*!W&F[=X\TF\;T(3]@K;O#=N$N&D ]<WBM-T!&[1PBTN/"P9424J
MS$NF4"%%A<3Y,1I<[$6?*,:S#G;?*''7S!!VVF*GOXA=4$YX!A/0Z:L[M&\Q
M@AL&+P]%, G\T6']&G 3^FQ7)G&'>< H.#?9-";)!;I.'L!P4E?]W-67EKD:
MS&/'(;</'#QE)>$[0":[0MQD,)W]A)@YLY1134=$AP.B@^[>&K)*<3BB"K^H
MPO^3JJ)=U\M4X=X2X 1W;_$!J^Y"^2=)2P5RYY(_9>Z7 ]?UP]^VM@GFC4NK
M.NVW-O%TR=!+F#IK_4+DCG)EA!4F9' ]-SRR3@3KBA9[EQIMA3:)EBN6)GD&
M:0U,?R%,>M14[ !M.K[^#U!+ P04    " #"?%-2M&C2L5(#   J#0  &0
M 'AL+W=O<FMS:&5E=',O<VAE970V-"YX;6R-5UUOFS 4_2L6VD,KK07SE5 E
MD=I$TR:U6]2/[=E)3&+58&:;I/WWLX$"*P'\$FSL>\\YEW!\F9T8?Q4'C"5X
M2V@JYM9!RNS&ML7V@!,DKEF&4[42,YX@J:9\;XN,8[0K@A)JNXX3V@DBJ;68
M%??6?#%CN:0DQ6L.1)XDB+_?8<I.<PM:'S<>R?X@]0U[,<O0'C]A^9*MN9K9
M=98=27 J"$L!Q_'<NH4W2QCI@&+';X)/HC4&6LJ&L5<]^;&;6XYFA"G>2IT"
MJ<L1+S&E.I/B\;=*:M68.K ]_LC^K1"OQ&R0P$M&_Y"=/,RMJ05V.$8YE8_L
M]!U7@@*=;\NH*'[!J=KK6&";"\F2*E@Q2$A:7M%;58A6 /1[ MPJP#4-\*H
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
M6X(G3Y$92\'_@>2.##.9"T/D@CP+53TG;O0=&B5<&\7GN<&7$Z8$;@1MX=A
M8'L@R"R?:YYPICBX3JG1CG5T$.R%0+M5H-W:0-]/J7M&B8;=2_KW*EJ]6EIE
M"<$R\55J349,J2UVF!NF$EU3=7MGN1!%EZA0?]]N^.\@@T<@WY6[LIR1F[^
MJ5MGEU"_$/7)%J&Z9G_1@R:)OH-U6:FPK[;?&O/4[K1R^SF9UR\6^6_4!;IO
M+FA]=W&T>89:@T&ZWUB:[S0>IGA/8"*&FC2@Y^U!CY[V$&.'53=H=R]DR[Z)
MH/5G[5$EL#&4K9%-%=QL^#T>6&H#<#)OG>VF=K?EGS)OG3%OA[W3'LEEY?>B
M"_'M.P!:?_9>*FZU1;KT><C%4:2]@SN!O?+]QM228Q>1P@)A?K.#>+6[1>TF
M1JZ+:\)<&KQT%,,5WCQ!60-\OY!X52@G]N91W64'_P)02P,$%     @ PGQ3
M4KI]/WV8 @  \@8  !D   !X;"]W;W)K<VAE971S+W-H965T-C@N>&ULC55=
M;YLP%/TK%NI#*ZWEFY**(#5ATRJM4]6/[=F!FV 5;&8[3??O9QO"*"117\#7
M/N?ZG N^3G:,OXH20*+WNJ)B;I52-C>V+?(2:BRN6 -4K:P9K[%4(=_8HN&
M"T.J*]MSG,BN,:%6FIBY!YXF;"LK0N&!([&M:\S_+J!BN[GE6ON)1[(II9ZP
MTZ3!&W@"^=(\<!79?9:"U$ %811Q6,^M6_<F"S7> 'X1V(G!&&DG*\9>=7!7
MS"U'"X(*<JDS8/5Z@R54E4ZD9/SI<EK]EIHX'.^S?S/>E9<5%K!DU6]2R')N
MQ18J8(VWE7QDN^_0^3$"<U8)\T2[#NM8*-\*R>J.K!34A+9O_-[584!PHR,$
MKR-X8T)PA.!W!/^SA* C!*8RK153APQ+G":<[1#7:)5-#TPQ#5O9)U1_]B?)
MU2I1/)G^9!*0&Z)+=$=S5@-ZQN\@5+AD=<,H4"D06^\7SW\P(2[0 M3_!A\9
MYQE(3"JU>HE>GC)T?G:!SA"AZ+ED6X%I(1);*L%Z6SOOQ"U:<=X1<:Z'[AF5
MI4!?:0'%QP2V<MK;]?9V%][)C!GD5\AWOR#/\9P#@I:?IKNS _3L\_3XA!N_
M_WB^R1<<RZ?*+R3)#U6V98:&J<_^6QK&8>@F]MO0[A1U'<3!")5-4;$;S_P>
M]4%\T(L/3HI7QU8=2GI(>TN,!OL%_BP829^"(C_T1LJGH-EUY!T6'O;"PY/"
MN]]^U1X"TD92'X)#7L))[2)O%H0C,U-4[+J#"K=NIJB9&X7AR(X]Z 8U\(WI
MJ@+E;$ME>U+ZV;YQWYI^-9I?J(;>]M__:=K;X![S#:$"5;!6*9VK:Z6)MQVV
M#21K3,]9,:DZF!F6ZE("K@%J?<U4W^D"O4%_S:7_ %!+ P04    " #"?%-2
M0Z6=VU,#   E"P  &0   'AL+W=O<FMS:&5E=',O<VAE970V.2YX;6R=5M]O
MFSH4_E<LM(=-NBW8_ A42:0VV;0][*I:NMUG%TX2-+!S;:?I_OO9AE("#JKZ
MDMCF^SY_Y_A@SOS$Q6^Y!U#HN:Z87'A[I0XWOB_S/=147O,#,/UDRT5-E9Z*
MG2\/ FAA277EDR!(_)J6S%O.[=J]6,[Y454E@WN!Y+&NJ?AS!Q4_+3SLO2S\
M*'=[91;\Y?Q =[ !]?-P+_3,[U2*L@8F2\Z0@.W"N\4W:TP,P2)^E7"2O3$R
MH3QR_MM,OA4++S".H()<&0FJ_YY@!55EE+2/_UM1K]O3$/OC%_4O-G@=S".5
ML.+5?V6A]@LO]5 !6WJLU ]^^@IM0+'1RWDE[2\ZM=C 0_E1*EZW9.V@+EGS
M3Y_;1/0(.+E ("V!# G1!4+8$L*W$J*6$-G,-*'8/*RIHLNYX"<D#%JKF8%-
MIF7K\$MFSGVCA'Y::IY:_LL5(!RC*_2-Y;P&]$"?0>KIIMRQ<EOFE"FTXO6!
M,V!*(KY%]X(_E?;<==F=TSZN0=&RDI^TP,_-&GW\\ E]0"5##WM^E)05<NXK
M[=KL[>>MP[O&(;G@$!/TG3.UE^@S*Z X%_!UN%W,Y"7F.S*IN(;\&H7X'T0"
M$C@,K=Y,QYF#OGX[/9V()NQ.,+1ZX06]U5$(?30W$U)1)Q59J>B"U!<H0-#*
M=48-,;9$<Y<\+0DFVOY3/V]C4))E^!RT'H.N9BGI0&?&X\YX/&E\HZ@"E^V&
MEO0VPSA,!K;'()+V'#6V':!@EKIM)YWM9#K?7.A[B;F,)V/C)!JD<N4 Q5$T
M,.X I3AP&Y]UQF>3-;>&+>BJFWH9TTXJ?6_-I2/G218,PEN-03$FPYH;@W09
MD-B=A*QSGKVOZ++1;E=1.#R[,8@DV<#V&!.'%TH.!Z\7?O#>HFN99Z9ZI=(8
M=X"NTF!HW86*P@MEAWM?*SQI_A>MCM0V#+>5;EDHRYTGT*KT=T^S42!CD'Y]
M@F$@8U1,+AT">8V#3,;QP)6[YEM>?/;B]R^:UKL#-NL71VO> 8N#9#:P[_?Z
MAQK$SO9A$N7\R%3S6>U6NU[OUG8X@_4[TP/:ON15IFD@OU.Q*YE$%6RU9' ]
MTYY$TY,U$\4/MDMYY$KW/':XUWTL" /0S[=<=RKMQ&S0=<;+OU!+ P04
M" #"?%-2:N6-\^$#  #V$   &0   'AL+W=O<FMS:&5E=',O<VAE970W,"YX
M;6R=F&^/VC@0QK^*%:D2E>Z2./Q9M@*D%E)=7_2T8GN]UR9,P&H2<[:!W6]_
M8R>;!:WCT'T#2<COB>?QQ#-F=A;RE]H#:/)4%I6:!WNM#Y^B2&5[*)D*Q0$J
M_"47LF0:3^4N4@<);&NALHB2.)Y$)>-5L)C9:P]R,1-'7? *'B11Q[)D\OD+
M%.(\#VCP<F'-=WMM+D2+V8'MX!'T/X<'B6=1J[+E)52*BXI(R.?!9_HII4,#
MV#M^<CBKBV-B0MD(\<N<?-O.@]B," K(M)%@^'6")12%4<)Q_->(!NTS#7AY
M_*+^U0:/P6R8@J4H_N5;O9\'TX!L(6?'0J_%^2]H AH;O4P4RGZ2<W-O')#L
MJ+0H&QA'4/*J_F9/C1$7 !UU $D#)+<"PP88W@J,&F!T*S!N !MZ5,=NC5LQ
MS18S*<Y$FKM1S1Q8]RV-?O'*),JCEO@K1TXO_A8:"!V3/\FW*A,ED!_L"12>
MKB$35<8+SNR$BIQ\A2U(5I!'S?11"_E\@9 U0QTM2)KG8.?^]>I@!9KQ0GV<
M11I';)X;9<WHOM2C2SI&MX(L)$GR!TEB>N? ES?@0VKP)';@JYMQ>N_ T]OQ
MZ34>X2RU4Y6T4Y58O5&'WHO_&HU5[1Q(M-AEK%]K. [C^(/+43^7T YN]4XN
M_7WNRKQA:][0*V22%JQU@PJ77TSGO+%S Q7D7+NR<^G73$+J]N)]6-J'^9T8
MM4Z,_$[LF02[N&X)OKY8<91]Q5WQ^Y4&-!S&'US&K7K .!R[P;0'3,+I&_#*
MA7'KPMBK]),5QWIE8P462U9E0-@."ZO2ILZ E&B/21>F%&CE,L?_ ,=TU=;X
M,1J.W,GAQ^+PSIL<D]:6B5=G#0J8S/:$55OTX82-Q '; DTR](-KEPU^P<'0
MC,R9(SV@:ZIK*WK!M\EU9<9=:\:=?\$5$ON,RBZQ9,NQLDFT@K/"98-?"C.^
M(YI5+]CQCJ6](/7;,&UMF'J53"&7F!?R!,[WP$]W)?2J#^M8)/U8?]3W;=3W
M7J4'*4[<ML/8U4C01UFU.9"Y*N[2KS>P1C@SP _&797SM[$K'VC\VB'&7J7O
M7&78R+,*Q-&9 #V\<TZ:_JN7[/ L[2=[%@%ZT2%3?_Y+AOLB6RNP(#@-\ MT
MS>#JG5S:PSD7F^O@7WM.ZF_ UG!J*R4V35>E$?<&&]P@Z&>G)W[=;D_>QZ4]
MW T)\=I*4G\G]D-H=PWHX>A]F'0$W=/ZT7#2$77/$R=O5]\ZZ.ABRVC^$?C.
MY Z;'U) CDK83F"_(>M-=GVBQ<'N(C="XY[4'NZ!80MM;L#?<X$[R>;$;$S;
MOSH6_P-02P,$%     @ PGQ34G4GVMW! P  *@T  !D   !X;"]W;W)K<VAE
M971S+W-H965T-S$N>&ULE9=MC]LH$,>_"K+ZHI4N:^-GKY)(VT1WMU*OMVJV
M=Z^),TG08L@!2;;?ON"X3M;&;N]-8O!_AA\#S.#I6<@7M0?0Z+5B7,V\O=:'
M>]]7Y1XJHN[$ ;AYLQ6R(MHTY<Y7!PED4QM5S ^#(/4K0KDWG]9]3W(^%4?-
M*(<GB=2QJHC\]A&8.,\\[/WH^$)W>VT[_/GT0':P OWU\"1-RV^];&@%7%'!
MD83MS'O ]PN<68-:\0^%L[IY1G8J:R%>;.-Q,_,"2P0,2FU=$/-W@@4P9CT9
MCO\:IUX[IC6\??[A_?=Z\F8R:Z)@(=B_=*/W,R_WT :VY,CT%W'^$YH))=9?
M*9BJ?]&YT08>*H]*BZHQ-@05Y9=_\MH$XL8 QP,&86,0_JI!U!A$]40O9/6T
MED23^52*,Y)6;;S9ASHVM;69#>5V&5=:FK?4V.GY9Z$!X01-T",O107HF;R"
M,LT5W7&ZI27A&BU$=1 <N%9(;-$2MB E;*P4/2@%IIOP#?I$R9HRJJFQ?[\$
M32A3'XRGKZLE>O_N WJ'*$?/>W%41JVFOC;X%L(O&]2/%]1P '4)Y1V*\&\H
M#,+ 8;[X97-<O#7W3=#:R(5MY,+:7S3HKPF#-F$@=1CN1]Q&K=NH=AL/N'TH
M2WDT7N'5G%0%SCA=/"2U!WM.3_,0)\G4/]U&HR_"41JVHC=P<0L7C\)] C*
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
M4()7$SSM3)6*]F&,!1[V&5TCIM RFAIH,S5;II\2=>Y3P>3;5/+$\"L5@.P
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
M(/>W5#:4:J(>4+^_3/X#4$L#!!0    ( ,)\4U*V3$_A,0,  ,X)   9
M>&PO=V]R:W-H965T<R]S:&5E=#<X+GAM;,U636_;.!#]*P.AAP3P6I;DS\(V
M$-OM)@ND&\1I>UCT0,MCFRA%.B05)\#^^!U2LNK6LA$47: 7:4CQ#=\;SF@X
MW"G]U6P0+3QG0II1L+%V^S8,3;K!C)FFVJ*D+RNE,V9IJ->AV6ID2P_*1!BW
M6MTP8UP&XZ&?N]/CH<JMX!+O-)@\RYA^F:!0NU$0!?N)>[[>6#<1CH=;ML8Y
MVH_;.TVCL/*RY!E*PY4$C:M1<!6]G48>X%=\XK@S!S8X*0NEOKK!S7(4M!PC
M%)A:YX+1ZPFG*(3S1#P>2Z=!M:<#'MI[[^^]>!*S8 :G2GSF2[L9!?T EKAB
MN;#W:G>-I:".\Y<J8?P3=N7:5@!I;JS*2C QR+@LWNRY#,0!(&J? ,0E('XM
M("D!B1=:,/.R9LRR\5"K'6BWFKPYP\?&HTD-E^X8YU;35TXX._Z@+$+4AS]@
MGB\,/N8H+;Q[HJ>!BQE:QH6!!WRV.1.7M.HJ?<RYQB4D,[@F!/QSB]D"]1?Z
M]G$^@XLWE_ &N(1;+@2=DQF&EFBZS<*TI#0I*,4G*/W%9!/BN %Q*XYJX-/S
M\!FF34BB.GA(P:DB%%<1BKV_]@E_E"V8,F._*?T7;MDSS_*LFCJS35)MDYS=
MYHZ]9#[J5NV##)/<T"ICT#3@3ZU,73"GA=N.=^N*]FD<=X;A4PV5=D6E?9;*
M?MN"A^&NWAKPCFS[ C?2HD8*QXTQ.>6!TMYB"X$-^)"[<(!:P7S#:!5<4"88
M;U[6<2]X= ^X1^UDT$_J^7<J_IW7\9^J;,$E*_A/*1GY$K4?PH-FTJQ04RH?
M23-[;4PN*W%U] L:@\/0]YK]>O+=BGSW+/D?R_ U.=:K?/=^;6 >E&6BKH)[
MQ\H'[6:[7GJ_HM?_7TI@TC]B$]%!].K9#"HV@]^C"B:#HRKH=Y/!X$051ZUO
MO_;6;U$'DY+'=P?0[9XZ@.B@-T4_)\!RN7:U\;V6*TUBUNASJ 'WSG:'\'=N
M4Y6Y!/K$1$[G<TVMO59&="2C$Q_5<WC0;-U-YY;I-9<&!*X(UFKVZ*^@B\M#
M,;!JZ_OO0EGJYM[<T(4+M5M WU>*>G Y<"V]NL*-_P-02P,$%     @ PGQ3
M4EL2:V)$ @  ?@L   T   !X;"]S='EL97,N>&ULU99;:]LP%,>_BE#&:&'4
M=M*F=+4-6Z$PV$:A>=A;4>QC6Z"+)\M9TD\_R7)L)ZU+Z,.6O$3G(OW.7Q='
M"BN]8?!8 &BTYDQ4$2ZT+C][7I44P$EU(4L0)I-)Q8DVKLJ]JE1 TLH.XLR;
M^O[<XX0*'(>BYO=<5RB1M= 1ONQ"R#7?T@@'\TN,'.Y.IA#AI[./OVNI;S\@
MUTX^32;^T_GM?ORL29QC[U7HU0'0"]\?!]OD&'Q^&/PM]ACZ^B#T&^0&[+4K
M'X>9%/T&S+ +F,J$ UH1%N$[PNA243LJ(YRRC0M/;2"13"JDS<X;*8&-5,\N
M'3C/'HJ6PZF0JJGM*KC?9=M]+['UK$#*6"=PBET@#DNB-2AQ;YRF<Q-\D4*M
MO=B41F&NR":87N%^0-.8(DNI4E!=F0!O0W'((+-R%,T+VVI9>C:IM>3&2"G)
MI2"-ANV(UC#8!!A[M%_,KVR'O<X&>^K;'16=:02UIL,XQ_*'-,<>8M_'125=
M2?VU-M,1C6_/"CPHR.BZ\==9)V",'HS325FRS1=&<\'!3?[@@G%(MN-0(15]
M-M7L44E, !1&*U":)L/('T7*!:SU]CBMLW'-TQ/4_&_7.0<!BK"A:'/VCWF5
MWZVXO6+^A^;F;V5?\:LB9]?'K[&]5H]=Y/P41)[ =L]NCE*CUUZ-@_MWY_;M
MHLB^<B+\T[ZG6%\4+6O*-!6M5] T!?'B$C9X39;F,;S#-_U3R$C-]*)+1KBW
M?T!*:W[3]7JP"]'VZNWO=GK!O"G8O[CCOU!+ P04    " #"?%-2EXJ[',
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
M\26?S7]ZOOX-4$L! A0#%     @ PGQ34@=!36*!    L0   !
M     ( !     &1O8U!R;W!S+V%P<"YX;6Q02P$"% ,4    " #"?%-2__IH
MB.\    K @  $0              @ &O    9&]C4')O<',O8V]R92YX;6Q0
M2P$"% ,4    " #"?%-2F5R<(Q &  "<)P  $P              @ '- 0
M>&PO=&AE;64O=&AE;64Q+GAM;%!+ 0(4 Q0    ( ,)\4U)3^E8^IP4  *H7
M   8              " @0X(  !X;"]W;W)K<VAE971S+W-H965T,2YX;6Q0
M2P$"% ,4    " #"?%-272+^:Z<&  "@'   &               @('K#0
M>&PO=V]R:W-H965T<R]S:&5E=#(N>&UL4$L! A0#%     @ PGQ34E=?<*/1
M @  30D  !@              ("!R!0  'AL+W=O<FMS:&5E=',O<VAE970S
M+GAM;%!+ 0(4 Q0    ( ,)\4U)E,MVM:@4   05   8              "
M@<\7  !X;"]W;W)K<VAE971S+W-H965T-"YX;6Q02P$"% ,4    " #"?%-2
M0,2RRA$'   L)P  &               @(%O'0  >&PO=V]R:W-H965T<R]S
M:&5E=#4N>&UL4$L! A0#%     @ PGQ34C(KX&H$"   P"(  !@
M     ("!MB0  'AL+W=O<FMS:&5E=',O<VAE970V+GAM;%!+ 0(4 Q0    (
M ,)\4U*71J@$) ,  *L&   8              " @? L  !X;"]W;W)K<VAE
M971S+W-H965T-RYX;6Q02P$"% ,4    " #"?%-2+5U\@W0+  !Q'P  &
M            @(%*,   >&PO=V]R:W-H965T<R]S:&5E=#@N>&UL4$L! A0#
M%     @ PGQ34L)H9>,/!   L@@  !@              ("!]#L  'AL+W=O
M<FMS:&5E=',O<VAE970Y+GAM;%!+ 0(4 Q0    ( ,)\4U+-;%/7(00  *$)
M   9              " @3E   !X;"]W;W)K<VAE971S+W-H965T,3 N>&UL
M4$L! A0#%     @ PGQ34L?%(6MK!   1PH  !D              ("!D40
M 'AL+W=O<FMS:&5E=',O<VAE970Q,2YX;6Q02P$"% ,4    " #"?%-2H>)S
MF^\"  "=!@  &0              @($S20  >&PO=V]R:W-H965T<R]S:&5E
M=#$R+GAM;%!+ 0(4 Q0    ( ,)\4U)D()*BP@0  %8+   9
M  " @5E,  !X;"]W;W)K<VAE971S+W-H965T,3,N>&UL4$L! A0#%     @
MPGQ34B=9L1TR P  D@8  !D              ("!4E$  'AL+W=O<FMS:&5E
M=',O<VAE970Q-"YX;6Q02P$"% ,4    " #"?%-2*4T)OM("  #A!0  &0
M            @(&[5   >&PO=V]R:W-H965T<R]S:&5E=#$U+GAM;%!+ 0(4
M Q0    ( ,)\4U*1W$C&+0(  +T$   9              " @<17  !X;"]W
M;W)K<VAE971S+W-H965T,38N>&UL4$L! A0#%     @ PGQ34GZIV[F? @
MM 4  !D              ("!*%H  'AL+W=O<FMS:&5E=',O<VAE970Q-RYX
M;6Q02P$"% ,4    " #"?%-23/X.26T*  !!'   &0              @('^
M7   >&PO=V]R:W-H965T<R]S:&5E=#$X+GAM;%!+ 0(4 Q0    ( ,)\4U+:
M;_SFT04  #\0   9              " @:)G  !X;"]W;W)K<VAE971S+W-H
M965T,3DN>&UL4$L! A0#%     @ PGQ34J>I<%TN P  10<  !D
M     ("!JFT  'AL+W=O<FMS:&5E=',O<VAE970R,"YX;6Q02P$"% ,4
M" #"?%-2O+J[^?$'  #/$@  &0              @($/<0  >&PO=V]R:W-H
M965T<R]S:&5E=#(Q+GAM;%!+ 0(4 Q0    ( ,)\4U(C*[(&* (  *,$   9
M              " @3=Y  !X;"]W;W)K<VAE971S+W-H965T,C(N>&UL4$L!
M A0#%     @ PGQ34KF2V.9S!0  & T  !D              ("!EGL  'AL
M+W=O<FMS:&5E=',O<VAE970R,RYX;6Q02P$"% ,4    " #"?%-2=A!0ICT"
M  #7!   &0              @(% @0  >&PO=V]R:W-H965T<R]S:&5E=#(T
M+GAM;%!+ 0(4 Q0    ( ,)\4U)7DTV[7PT  'TM   9              "
M@;2#  !X;"]W;W)K<VAE971S+W-H965T,C4N>&UL4$L! A0#%     @ PGQ3
M4E,HK%   P  608  !D              ("!2I$  'AL+W=O<FMS:&5E=',O
M<VAE970R-BYX;6Q02P$"% ,4    " #"?%-2R. >W",#  !\!@  &0
M        @(&!E   >&PO=V]R:W-H965T<R]S:&5E=#(W+GAM;%!+ 0(4 Q0
M   ( ,)\4U(&.4&P)@0  $L*   9              " @=N7  !X;"]W;W)K
M<VAE971S+W-H965T,C@N>&UL4$L! A0#%     @ PGQ34A9*Y(6" @  @ 4
M !D              ("!.)P  'AL+W=O<FMS:&5E=',O<VAE970R.2YX;6Q0
M2P$"% ,4    " #"?%-2MO.G;+L#   %"0  &0              @('QG@
M>&PO=V]R:W-H965T<R]S:&5E=#,P+GAM;%!+ 0(4 Q0    ( ,)\4U("J!=:
M] (   8&   9              " @>.B  !X;"]W;W)K<VAE971S+W-H965T
M,S$N>&UL4$L! A0#%     @ PGQ34B3:Z8Q? @  "@4  !D
M ("!#J8  'AL+W=O<FMS:&5E=',O<VAE970S,BYX;6Q02P$"% ,4    " #"
M?%-24HIER),'   '%@  &0              @(&DJ   >&PO=V]R:W-H965T
M<R]S:&5E=#,S+GAM;%!+ 0(4 Q0    ( ,)\4U(+@B(AJ 0  #L-   9
M          " @6ZP  !X;"]W;W)K<VAE971S+W-H965T,S0N>&UL4$L! A0#
M%     @ PGQ34N1+5P31 @  ,P8  !D              ("!3;4  'AL+W=O
M<FMS:&5E=',O<VAE970S-2YX;6Q02P$"% ,4    " #"?%-2U:K3-N$%  "_
M#@  &0              @(%5N   >&PO=V]R:W-H965T<R]S:&5E=#,V+GAM
M;%!+ 0(4 Q0    ( ,)\4U)H:EB#C 0  #D-   9              " @6V^
M  !X;"]W;W)K<VAE971S+W-H965T,S<N>&UL4$L! A0#%     @ PGQ34O?A
M&8\:!0  *1@  !D              ("!,,,  'AL+W=O<FMS:&5E=',O<VAE
M970S."YX;6Q02P$"% ,4    " #"?%-2D/?V$A0$  #?$   &0
M    @(&!R   >&PO=V]R:W-H965T<R]S:&5E=#,Y+GAM;%!+ 0(4 Q0    (
M ,)\4U(UPO1U30,   0*   9              " @<S,  !X;"]W;W)K<VAE
M971S+W-H965T-# N>&UL4$L! A0#%     @ PGQ34HNY'5U) @  ;@4  !D
M             ("!4-   'AL+W=O<FMS:&5E=',O<VAE970T,2YX;6Q02P$"
M% ,4    " #"?%-29'66SVD#  #N#0  &0              @('0T@  >&PO
M=V]R:W-H965T<R]S:&5E=#0R+GAM;%!+ 0(4 Q0    ( ,)\4U+ZQ4)_#P4
M .P8   9              " @7#6  !X;"]W;W)K<VAE971S+W-H965T-#,N
M>&UL4$L! A0#%     @ PGQ34F,_&P9_ @  Z@8  !D              ("!
MMML  'AL+W=O<FMS:&5E=',O<VAE970T-"YX;6Q02P$"% ,4    " #"?%-2
MB^48**@"  ">"   &0              @(%LW@  >&PO=V]R:W-H965T<R]S
M:&5E=#0U+GAM;%!+ 0(4 Q0    ( ,)\4U+:T.P?>P0  )44   9
M      " @4OA  !X;"]W;W)K<VAE971S+W-H965T-#8N>&UL4$L! A0#%
M  @ PGQ34GT#R?Y7 @  ; 4  !D              ("!_>4  'AL+W=O<FMS
M:&5E=',O<VAE970T-RYX;6Q02P$"% ,4    " #"?%-2:7M$S#T"  !0!0
M&0              @(&+Z   >&PO=V]R:W-H965T<R]S:&5E=#0X+GAM;%!+
M 0(4 Q0    ( ,)\4U(-96[<-@,   P*   9              " @?_J  !X
M;"]W;W)K<VAE971S+W-H965T-#DN>&UL4$L! A0#%     @ PGQ34I55*>\O
M @  704  !D              ("!;.X  'AL+W=O<FMS:&5E=',O<VAE970U
M,"YX;6Q02P$"% ,4    " #"?%-2$O0(<^$!  "( P  &0
M@('2\   >&PO=V]R:W-H965T<R]S:&5E=#4Q+GAM;%!+ 0(4 Q0    ( ,)\
M4U(G7'NJ5 ,  +0)   9              " @>KR  !X;"]W;W)K<VAE971S
M+W-H965T-3(N>&UL4$L! A0#%     @ PGQ34CE;? A3!@  02$  !D
M         ("!=?8  'AL+W=O<FMS:&5E=',O<VAE970U,RYX;6Q02P$"% ,4
M    " #"?%-2K8O0M)0#   J#0  &0              @('__   >&PO=V]R
M:W-H965T<R]S:&5E=#4T+GAM;%!+ 0(4 Q0    ( ,)\4U+E6CSZD0,  *0,
M   9              " @<H  0!X;"]W;W)K<VAE971S+W-H965T-34N>&UL
M4$L! A0#%     @ PGQ34I+1Y#/4 P  !0\  !D              ("!D@0!
M 'AL+W=O<FMS:&5E=',O<VAE970U-BYX;6Q02P$"% ,4    " #"?%-2EAB?
M644%  #-'@  &0              @(&=" $ >&PO=V]R:W-H965T<R]S:&5E
M=#4W+GAM;%!+ 0(4 Q0    ( ,)\4U*:M0WYN0,   <.   9
M  " @1D. 0!X;"]W;W)K<VAE971S+W-H965T-3@N>&UL4$L! A0#%     @
MPGQ34J8W$&,^!   [!,  !D              ("!"1(! 'AL+W=O<FMS:&5E
M=',O<VAE970U.2YX;6Q02P$"% ,4    " #"?%-24IQ;21\#  !L"P  &0
M            @(%^%@$ >&PO=V]R:W-H965T<R]S:&5E=#8P+GAM;%!+ 0(4
M Q0    ( ,)\4U)FPFL6-@(  #H%   9              " @=09 0!X;"]W
M;W)K<VAE971S+W-H965T-C$N>&UL4$L! A0#%     @ PGQ34ARV;N^V @
MT @  !D              ("!01P! 'AL+W=O<FMS:&5E=',O<VAE970V,BYX
M;6Q02P$"% ,4    " #"?%-2JU_="VD#  ":"P  &0              @($N
M'P$ >&PO=V]R:W-H965T<R]S:&5E=#8S+GAM;%!+ 0(4 Q0    ( ,)\4U*T
M:-*Q4@,  "H-   9              " @<XB 0!X;"]W;W)K<VAE971S+W-H
M965T-C0N>&UL4$L! A0#%     @ PGQ34@OJ[5-6 @  )P<  !D
M     ("!5R8! 'AL+W=O<FMS:&5E=',O<VAE970V-2YX;6Q02P$"% ,4
M" #"?%-2 5_Z:VL#  #X"@  &0              @('D* $ >&PO=V]R:W-H
M965T<R]S:&5E=#8V+GAM;%!+ 0(4 Q0    ( ,)\4U)2_B0,,00  -<.   9
M              " @88L 0!X;"]W;W)K<VAE971S+W-H965T-C<N>&UL4$L!
M A0#%     @ PGQ34KI]/WV8 @  \@8  !D              ("![C ! 'AL
M+W=O<FMS:&5E=',O<VAE970V."YX;6Q02P$"% ,4    " #"?%-20Z6=VU,#
M   E"P  &0              @(&],P$ >&PO=V]R:W-H965T<R]S:&5E=#8Y
M+GAM;%!+ 0(4 Q0    ( ,)\4U)JY8WSX0,  /80   9              "
M@4<W 0!X;"]W;W)K<VAE971S+W-H965T-S N>&UL4$L! A0#%     @ PGQ3
M4G4GVMW! P  *@T  !D              ("!7SL! 'AL+W=O<FMS:&5E=',O
M<VAE970W,2YX;6Q02P$"% ,4    " #"?%-25_CE\> "  "N!P  &0
M        @(%7/P$ >&PO=V]R:W-H965T<R]S:&5E=#<R+GAM;%!+ 0(4 Q0
M   ( ,)\4U+>>ESX#P,  #D*   9              " @6Y" 0!X;"]W;W)K
M<VAE971S+W-H965T-S,N>&UL4$L! A0#%     @ PGQ34@:SB=<! P  40D
M !D              ("!M$4! 'AL+W=O<FMS:&5E=',O<VAE970W-"YX;6Q0
M2P$"% ,4    " #"?%-2,;?K&,$"  "-"   &0              @('L2 $
M>&PO=V]R:W-H965T<R]S:&5E=#<U+GAM;%!+ 0(4 Q0    ( ,)\4U*0;(/G
M[P(  "8)   9              " @>1+ 0!X;"]W;W)K<VAE971S+W-H965T
M-S8N>&UL4$L! A0#%     @ PGQ34K(V%M[5 @  RP@  !D
M ("!"D\! 'AL+W=O<FMS:&5E=',O<VAE970W-RYX;6Q02P$"% ,4    " #"
M?%-2MDQ/X3$#  #."0  &0              @($64@$ >&PO=V]R:W-H965T
M<R]S:&5E=#<X+GAM;%!+ 0(4 Q0    ( ,)\4U);$FMB1 (  'X+   -
M          "  7Y5 0!X;"]S='EL97,N>&UL4$L! A0#%     @ PGQ34I>*
MNQS     $P(   L              ( ![5<! %]R96QS+RYR96QS4$L! A0#
M%     @ PGQ34L43Q@_'!0  !S0   \              ( !UE@! 'AL+W=O
M<FMB;V]K+GAM;%!+ 0(4 Q0    ( ,)\4U)Z! -=7 (  "$N   :
M      "  <I> 0!X;"]?<F5L<R]W;W)K8F]O:RYX;6PN<F5L<U!+ 0(4 Q0
M   ( ,)\4U(N* K8%0(  /PL   3              "  5YA 0!;0V]N=&5N
B=%]4>7!E<UTN>&UL4$L%!@    !6 %8 D1<  *1C 0    $!

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>95
<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>96
<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>97
<FILENAME>FilingSummary.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version='1.0' encoding='utf-8'?>
<FilingSummary>
  <Version>3.20.4</Version>
  <ProcessingTime/>
  <ReportFormat>html</ReportFormat>
  <ContextCount>222</ContextCount>
  <ElementCount>439</ElementCount>
  <EntityCount>1</EntityCount>
  <FootnotesReported>false</FootnotesReported>
  <SegmentCount>62</SegmentCount>
  <ScenarioCount>0</ScenarioCount>
  <TuplesReported>false</TuplesReported>
  <UnitCount>7</UnitCount>
  <MyReports>
    <Report instance="prlb20201119_10k.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/20201231/role/statement-document-and-entity-information</Role>
      <ShortName>Document And Entity Information</ShortName>
      <MenuCategory>Cover</MenuCategory>
      <Position>1</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R2.htm</HtmlFileName>
      <LongName>001 - Statement - Consolidated Balance Sheets</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets</Role>
      <ShortName>Consolidated Balance Sheets</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>2</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R3.htm</HtmlFileName>
      <LongName>002 - Statement - Consolidated Balance Sheets (Parentheticals)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals</Role>
      <ShortName>Consolidated Balance Sheets (Parentheticals)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>3</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R4.htm</HtmlFileName>
      <LongName>003 - Statement - Consolidated Statements of Comprehensive Income</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income</Role>
      <ShortName>Consolidated Statements of Comprehensive Income</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>4</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R5.htm</HtmlFileName>
      <LongName>004 - Statement - Consolidated Statements of Shareholders' Equity</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity</Role>
      <ShortName>Consolidated Statements of Shareholders' Equity</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>5</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R6.htm</HtmlFileName>
      <LongName>005 - Statement - Consolidated Statements of Cash Flows</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows</Role>
      <ShortName>Consolidated Statements of Cash Flows</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>6</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R7.htm</HtmlFileName>
      <LongName>006 - Disclosure - Note 1 - Nature of Business</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-1-nature-of-business</Role>
      <ShortName>Note 1 - Nature of Business</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>7</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R8.htm</HtmlFileName>
      <LongName>007 - Disclosure - Note 2 - Summary of Significant Accounting Policies</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-</Role>
      <ShortName>Note 2 - Summary of Significant Accounting Policies</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>8</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R9.htm</HtmlFileName>
      <LongName>008 - Disclosure - Note 3 - Revenue</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-3-revenue</Role>
      <ShortName>Note 3 - Revenue</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>9</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R10.htm</HtmlFileName>
      <LongName>009 - Disclosure - Note 4 - Net Income Per Common Share</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share</Role>
      <ShortName>Note 4 - Net Income Per Common Share</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>10</Position>
    </Report>
    <Report instance="prlb20201119_10k.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/20201231/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="prlb20201119_10k.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/20201231/role/statement-note-6-fair-value-measurements</Role>
      <ShortName>Note 6 - Fair Value Measurements</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>12</Position>
    </Report>
    <Report instance="prlb20201119_10k.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/20201231/role/statement-note-7-marketable-securities</Role>
      <ShortName>Note 7 - Marketable Securities</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>13</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R14.htm</HtmlFileName>
      <LongName>013 - Disclosure - Note 8 - Property and Equipment</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment</Role>
      <ShortName>Note 8 - Property and Equipment</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>14</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R15.htm</HtmlFileName>
      <LongName>014 - Disclosure - Note 9 - Inventory</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-9-inventory</Role>
      <ShortName>Note 9 - Inventory</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>15</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R16.htm</HtmlFileName>
      <LongName>015 - Disclosure - Note 10 - Financing Obligations</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations</Role>
      <ShortName>Note 10 - Financing Obligations</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>16</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R17.htm</HtmlFileName>
      <LongName>016 - Disclosure - Note 11 - Employee Benefit Plans</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans</Role>
      <ShortName>Note 11 - Employee Benefit Plans</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>17</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R18.htm</HtmlFileName>
      <LongName>017 - Disclosure - Note 12 - Stock-based Compensation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation</Role>
      <ShortName>Note 12 - Stock-based Compensation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>18</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R19.htm</HtmlFileName>
      <LongName>018 - Disclosure - Note 13 - Leases</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-13-leases</Role>
      <ShortName>Note 13 - Leases</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>19</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R20.htm</HtmlFileName>
      <LongName>019 - Disclosure - Note 14 - Accumulated Other Comprehensive Loss</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss</Role>
      <ShortName>Note 14 - Accumulated Other Comprehensive Loss</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>20</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R21.htm</HtmlFileName>
      <LongName>020 - Disclosure - Note 15 - Income Taxes</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-15-income-taxes</Role>
      <ShortName>Note 15 - Income Taxes</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>21</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R22.htm</HtmlFileName>
      <LongName>021 - Disclosure - Note 16 - Litigation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-16-litigation</Role>
      <ShortName>Note 16 - Litigation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>22</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R23.htm</HtmlFileName>
      <LongName>022 - Disclosure - Note 17 - Segment Reporting</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting</Role>
      <ShortName>Note 17 - Segment Reporting</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>23</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R24.htm</HtmlFileName>
      <LongName>023 - Disclosure - Note 18 - Subsequent Events</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events</Role>
      <ShortName>Note 18 - Subsequent Events</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>24</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R25.htm</HtmlFileName>
      <LongName>024 - Disclosure - Significant Accounting Policies (Policies)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies</Role>
      <ShortName>Significant Accounting Policies (Policies)</ShortName>
      <MenuCategory>Policies</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-</ParentRole>
      <Position>25</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R26.htm</HtmlFileName>
      <LongName>025 - Disclosure - Note 3 - Revenue (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-3-revenue-tables</Role>
      <ShortName>Note 3 - Revenue (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-3-revenue</ParentRole>
      <Position>26</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R27.htm</HtmlFileName>
      <LongName>026 - Disclosure - Note 4 - Net Income Per Common Share (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-tables</Role>
      <ShortName>Note 4 - Net Income Per Common Share (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share</ParentRole>
      <Position>27</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R28.htm</HtmlFileName>
      <LongName>027 - Disclosure - Note 5 - Goodwill and Other Intangible Assets (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/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/20201231/role/statement-note-5-goodwill-and-other-intangible-assets</ParentRole>
      <Position>28</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R29.htm</HtmlFileName>
      <LongName>028 - Disclosure - Note 6 - Fair Value Measurements (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/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/20201231/role/statement-note-6-fair-value-measurements</ParentRole>
      <Position>29</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R30.htm</HtmlFileName>
      <LongName>029 - Disclosure - Note 7 - Marketable Securities (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-tables</Role>
      <ShortName>Note 7 - Marketable Securities (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities</ParentRole>
      <Position>30</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R31.htm</HtmlFileName>
      <LongName>030 - Disclosure - Note 8 - Property and Equipment (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-tables</Role>
      <ShortName>Note 8 - Property and Equipment (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment</ParentRole>
      <Position>31</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R32.htm</HtmlFileName>
      <LongName>031 - Disclosure - Note 9 - Inventory (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-9-inventory-tables</Role>
      <ShortName>Note 9 - Inventory (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-9-inventory</ParentRole>
      <Position>32</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R33.htm</HtmlFileName>
      <LongName>032 - Disclosure - Note 12 - Stock-based Compensation (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables</Role>
      <ShortName>Note 12 - Stock-based Compensation (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation</ParentRole>
      <Position>33</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R34.htm</HtmlFileName>
      <LongName>033 - Disclosure - Note 13 - Leases (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-13-leases-tables</Role>
      <ShortName>Note 13 - Leases (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-13-leases</ParentRole>
      <Position>34</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R35.htm</HtmlFileName>
      <LongName>034 - Disclosure - Note 14 - Accumulated Other Comprehensive Loss (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-tables</Role>
      <ShortName>Note 14 - Accumulated Other Comprehensive Loss (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss</ParentRole>
      <Position>35</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R36.htm</HtmlFileName>
      <LongName>035 - Disclosure - Note 15 - Income Taxes (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables</Role>
      <ShortName>Note 15 - Income Taxes (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-15-income-taxes</ParentRole>
      <Position>36</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R37.htm</HtmlFileName>
      <LongName>036 - Disclosure - Note 17 - Segment Reporting (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables</Role>
      <ShortName>Note 17 - Segment Reporting (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting</ParentRole>
      <Position>37</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R38.htm</HtmlFileName>
      <LongName>037 - Disclosure - Note 2 - Summary of Significant Accounting Policies (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual</Role>
      <ShortName>Note 2 - Summary of Significant Accounting Policies (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>38</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R39.htm</HtmlFileName>
      <LongName>038 - Disclosure - Note 3 - Revenue - Disaggregation of Revenue (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details</Role>
      <ShortName>Note 3 - Revenue - Disaggregation of Revenue (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>39</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R40.htm</HtmlFileName>
      <LongName>039 - Disclosure - Note 4 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details</Role>
      <ShortName>Note 4 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>40</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R41.htm</HtmlFileName>
      <LongName>040 - Disclosure - Note 5 - Goodwill and Other Intangible Assets (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/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/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables</ParentRole>
      <Position>41</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R42.htm</HtmlFileName>
      <LongName>041 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details</Role>
      <ShortName>Note 5 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>42</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R43.htm</HtmlFileName>
      <LongName>042 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/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>43</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R44.htm</HtmlFileName>
      <LongName>043 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/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>44</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R45.htm</HtmlFileName>
      <LongName>044 - 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/20201231/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>45</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R46.htm</HtmlFileName>
      <LongName>045 - Disclosure - Note 7 - Marketable Securities - Short-term and Long-term Marketable Securities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details</Role>
      <ShortName>Note 7 - Marketable Securities - Short-term and Long-term Marketable Securities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>46</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R47.htm</HtmlFileName>
      <LongName>046 - 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/20201231/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>47</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R48.htm</HtmlFileName>
      <LongName>047 - Disclosure - Note 8 - Property and Equipment (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-details-textual</Role>
      <ShortName>Note 8 - Property and Equipment (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-tables</ParentRole>
      <Position>48</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R49.htm</HtmlFileName>
      <LongName>048 - Disclosure - Note 8 - Property and Equipment - Components of Property and Equipment (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details</Role>
      <ShortName>Note 8 - Property and Equipment - Components of Property and Equipment (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>49</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R50.htm</HtmlFileName>
      <LongName>049 - Disclosure - Note 9 - Inventory - Inventory (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details</Role>
      <ShortName>Note 9 - Inventory - Inventory (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>50</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R51.htm</HtmlFileName>
      <LongName>050 - Disclosure - Note 10 - Financing Obligations (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations-details-textual</Role>
      <ShortName>Note 10 - Financing Obligations (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations</ParentRole>
      <Position>51</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R52.htm</HtmlFileName>
      <LongName>051 - Disclosure - Note 11 - Employee Benefit Plans (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual</Role>
      <ShortName>Note 11 - Employee Benefit Plans (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans</ParentRole>
      <Position>52</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R53.htm</HtmlFileName>
      <LongName>052 - Disclosure - Note 12 - Stock-based Compensation (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual</Role>
      <ShortName>Note 12 - Stock-based Compensation (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables</ParentRole>
      <Position>53</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R54.htm</HtmlFileName>
      <LongName>053 - Disclosure - Note 12 - Stock-based Compensation - Stock-based Compensation Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details</Role>
      <ShortName>Note 12 - Stock-based Compensation - Stock-based Compensation Expense (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>54</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R55.htm</HtmlFileName>
      <LongName>054 - Disclosure - Note 12 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details</Role>
      <ShortName>Note 12 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>55</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R56.htm</HtmlFileName>
      <LongName>055 - Disclosure - Note 12 - Stock-based Compensation - Stock Option Activity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details</Role>
      <ShortName>Note 12 - Stock-based Compensation - Stock Option Activity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>56</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R57.htm</HtmlFileName>
      <LongName>056 - Disclosure - Note 12 - Stock-based Compensation - Information about Stock Options Outstanding (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details</Role>
      <ShortName>Note 12 - Stock-based Compensation - Information about Stock Options Outstanding (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>57</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R58.htm</HtmlFileName>
      <LongName>057 - Disclosure - Note 12 - Stock-based Compensation - Restricted Stock Options (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details</Role>
      <ShortName>Note 12 - Stock-based Compensation - Restricted Stock Options (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>58</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R59.htm</HtmlFileName>
      <LongName>058 - Disclosure - Note 12 - Stock-based Compensation - Performance Stock (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details</Role>
      <ShortName>Note 12 - Stock-based Compensation - Performance Stock (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>59</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R60.htm</HtmlFileName>
      <LongName>059 - Disclosure - Note 12 - Stock-based Compensation - Assumptions Used in the Valuation of Performance Stock (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details</Role>
      <ShortName>Note 12 - Stock-based Compensation - Assumptions Used in the Valuation of Performance Stock (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>60</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R61.htm</HtmlFileName>
      <LongName>060 - Disclosure - Note 13 - Leases (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual</Role>
      <ShortName>Note 13 - Leases (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-13-leases-tables</ParentRole>
      <Position>61</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R62.htm</HtmlFileName>
      <LongName>061 - Disclosure - Note 13 - Leases - Balance Sheet Information (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details</Role>
      <ShortName>Note 13 - Leases - Balance Sheet Information (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>62</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R63.htm</HtmlFileName>
      <LongName>062 - Disclosure - Note 13 - Leases - Lease Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details</Role>
      <ShortName>Note 13 - Leases - Lease Expense (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>63</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R64.htm</HtmlFileName>
      <LongName>063 - Disclosure - Note 13 - Leases - Maturities of Operating Lease Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details</Role>
      <ShortName>Note 13 - Leases - Maturities of Operating Lease Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>64</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R65.htm</HtmlFileName>
      <LongName>064 - Disclosure - Note 13 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details</Role>
      <ShortName>Note 13 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>65</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R66.htm</HtmlFileName>
      <LongName>065 - Disclosure - Note 14 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details</Role>
      <ShortName>Note 14 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>66</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R67.htm</HtmlFileName>
      <LongName>066 - Disclosure - Note 15 - Income Taxes (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual</Role>
      <ShortName>Note 15 - Income Taxes (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables</ParentRole>
      <Position>67</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R68.htm</HtmlFileName>
      <LongName>067 - Disclosure - Note 15 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details</Role>
      <ShortName>Note 15 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>68</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R69.htm</HtmlFileName>
      <LongName>068 - Disclosure - Note 15 - Income Taxes - Significant Components of Provision for Income Taxes (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details</Role>
      <ShortName>Note 15 - Income Taxes - Significant Components of Provision for Income Taxes (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>69</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R70.htm</HtmlFileName>
      <LongName>069 - Disclosure - Note 15 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details</Role>
      <ShortName>Note 15 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>70</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R71.htm</HtmlFileName>
      <LongName>070 - Disclosure - Note 15 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details</Role>
      <ShortName>Note 15 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>71</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R72.htm</HtmlFileName>
      <LongName>071 - Disclosure - Note 15 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details</Role>
      <ShortName>Note 15 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>72</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R73.htm</HtmlFileName>
      <LongName>072 - Disclosure - Note 17 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details</Role>
      <ShortName>Note 17 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>73</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R74.htm</HtmlFileName>
      <LongName>073 - Disclosure - Note 17 - Segment Reporting - Income From Operations (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details</Role>
      <ShortName>Note 17 - Segment Reporting - Income From Operations (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>74</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R75.htm</HtmlFileName>
      <LongName>074 - Disclosure - Note 17 - Segment Reporting - Long-lived Assets by Geographic Region (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details</Role>
      <ShortName>Note 17 - Segment Reporting - Long-lived Assets by Geographic Region (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>75</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R76.htm</HtmlFileName>
      <LongName>075 - Disclosure - Note 17 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details</Role>
      <ShortName>Note 17 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>76</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R77.htm</HtmlFileName>
      <LongName>076 - Disclosure - Note 17 - Segment Reporting - Depreciation and Amortization (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details</Role>
      <ShortName>Note 17 - Segment Reporting - Depreciation and Amortization (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>77</Position>
    </Report>
    <Report instance="prlb20201119_10k.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R78.htm</HtmlFileName>
      <LongName>077 - Disclosure - Note 18 - Subsequent Events (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual</Role>
      <ShortName>Note 18 - Subsequent Events (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events</ParentRole>
      <Position>78</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-K" original="prlb20201119_10k.htm">prlb20201119_10k.htm</File>
    <File>ex_215172.htm</File>
    <File>ex_215173.htm</File>
    <File>ex_215174.htm</File>
    <File>ex_215175.htm</File>
    <File>ex_215176.htm</File>
    <File>ex_215177.htm</File>
    <File>prlb-20201231.xsd</File>
    <File>prlb-20201231_cal.xml</File>
    <File>prlb-20201231_def.xml</File>
    <File>prlb-20201231_lab.xml</File>
    <File>prlb-20201231_pre.xml</File>
  </InputFiles>
  <SupplementalFiles>
    <File>image02.jpg</File>
    <File>performancegraph.jpg</File>
  </SupplementalFiles>
  <BaseTaxonomies>
    <BaseTaxonomy>http://fasb.org/us-gaap/2020-01-31</BaseTaxonomy>
    <BaseTaxonomy>http://xbrl.sec.gov/dei/2019-01-31</BaseTaxonomy>
    <BaseTaxonomy>http://xbrl.sec.gov/country/2020-01-31</BaseTaxonomy>
    <BaseTaxonomy>http://fasb.org/srt/2020-01-31</BaseTaxonomy>
  </BaseTaxonomies>
  <HasPresentationLinkbase>true</HasPresentationLinkbase>
  <HasCalculationLinkbase>true</HasCalculationLinkbase>
</FilingSummary>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>JSON
<SEQUENCE>100
<FILENAME>MetaLinks.json
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
{
 "instance": {
  "prlb20201119_10k.htm": {
   "axisCustom": 0,
   "axisStandard": 24,
   "contextCount": 222,
   "dts": {
    "calculationLink": {
     "local": [
      "prlb-20201231_cal.xml"
     ]
    },
    "definitionLink": {
     "local": [
      "prlb-20201231_def.xml"
     ],
     "remote": [
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-eedm-def-2020-01-31.xml",
      "http://xbrl.fasb.org/srt/2020/elts/srt-eedm1-def-2020-01-31.xml"
     ]
    },
    "inline": {
     "local": [
      "prlb20201119_10k.htm"
     ]
    },
    "labelLink": {
     "local": [
      "prlb-20201231_lab.xml"
     ],
     "remote": [
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-doc-2020-01-31.xml",
      "https://xbrl.sec.gov/dei/2019/dei-doc-2019-01-31.xml"
     ]
    },
    "presentationLink": {
     "local": [
      "prlb-20201231_pre.xml"
     ]
    },
    "referenceLink": {
     "remote": [
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-ref-2020-01-31.xml",
      "https://xbrl.sec.gov/dei/2019/dei-ref-2019-01-31.xml"
     ]
    },
    "schema": {
     "local": [
      "prlb-20201231.xsd"
     ],
     "remote": [
      "https://xbrl.sec.gov/sic/2020/sic-2020-01-31.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",
      "http://www.xbrl.org/dtr/type/nonNumeric-2009-12-16.xsd",
      "https://xbrl.sec.gov/exch/2020/exch-2020-01-31.xsd",
      "http://xbrl.sec.gov/naics/2011/naics-2011-01-31.xsd",
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd",
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-roles-2020-01-31.xsd",
      "http://www.xbrl.org/2005/xbrldt-2005.xsd",
      "http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd",
      "http://www.xbrl.org/dtr/type/numeric-2009-12-16.xsd",
      "http://www.xbrl.org/2006/ref-2006-02-27.xsd",
      "http://xbrl.fasb.org/srt/2020/elts/srt-types-2020-01-31.xsd",
      "http://xbrl.fasb.org/srt/2020/elts/srt-roles-2020-01-31.xsd",
      "https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd",
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-types-2020-01-31.xsd",
      "https://xbrl.sec.gov/stpr/2018/stpr-2018-01-31.xsd",
      "https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd",
      "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/net-2009-12-16.xsd",
      "https://xbrl.sec.gov/dei/2019/dei-2019-01-31.xsd",
      "http://www.xbrl.org/lrr/role/reference-2009-12-16.xsd",
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-parts-codification-2020-01-31.xsd",
      "http://www.xbrl.org/lrr/role/deprecated-2009-12-16.xsd"
     ]
    }
   },
   "elementCount": 566,
   "entityCount": 1,
   "hidden": {
    "http://fasb.org/us-gaap/2020-01-31": 32,
    "http://www.protolabs.com/20201231": 5,
    "http://xbrl.sec.gov/dei/2019-01-31": 6,
    "total": 43
   },
   "keyCustom": 29,
   "keyStandard": 410,
   "memberCustom": 20,
   "memberStandard": 41,
   "nsprefix": "prlb",
   "nsuri": "http://www.protolabs.com/20201231",
   "report": {
    "R1": {
     "firstAnchor": {
      "ancestors": [
       "b",
       "p",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "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/20201231/role/statement-document-and-entity-information",
     "shortName": "Document And Entity Information",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "b",
       "p",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:DocumentType",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R10": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "009 - Disclosure - Note 4 - Net Income Per Common Share",
     "role": "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share",
     "shortName": "Note 4 - Net Income Per Common Share",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R11": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "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/20201231/role/statement-note-5-goodwill-and-other-intangible-assets",
     "shortName": "Note 5 - Goodwill and Other Intangible Assets",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "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": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "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/20201231/role/statement-note-6-fair-value-measurements",
     "shortName": "Note 6 - Fair Value Measurements",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "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": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "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/20201231/role/statement-note-7-marketable-securities",
     "shortName": "Note 7 - Marketable Securities",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "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": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "013 - Disclosure - Note 8 - Property and Equipment",
     "role": "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment",
     "shortName": "Note 8 - Property and Equipment",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R15": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "014 - Disclosure - Note 9 - Inventory",
     "role": "http://www.protolabs.com/20201231/role/statement-note-9-inventory",
     "shortName": "Note 9 - Inventory",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R16": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "015 - Disclosure - Note 10 - Financing Obligations",
     "role": "http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations",
     "shortName": "Note 10 - Financing Obligations",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R17": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "016 - Disclosure - Note 11 - Employee Benefit Plans",
     "role": "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
     "shortName": "Note 11 - Employee Benefit Plans",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R18": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "017 - Disclosure - Note 12 - Stock-based Compensation",
     "role": "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
     "shortName": "Note 12 - Stock-based Compensation",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R19": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "prlb:LesseeOperatingLeasesAndFinancingLeasesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "018 - Disclosure - Note 13 - Leases",
     "role": "http://www.protolabs.com/20201231/role/statement-note-13-leases",
     "shortName": "Note 13 - Leases",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "prlb:LesseeOperatingLeasesAndFinancingLeasesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R2": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "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",
     "role": "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
     "shortName": "Consolidated Balance Sheets",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R20": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfReclassificationAmountTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "019 - Disclosure - Note 14 - Accumulated Other Comprehensive Loss",
     "role": "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss",
     "shortName": "Note 14 - Accumulated Other Comprehensive Loss",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfReclassificationAmountTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R21": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "020 - Disclosure - Note 15 - Income Taxes",
     "role": "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes",
     "shortName": "Note 15 - Income Taxes",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R22": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LegalMattersAndContingenciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "021 - Disclosure - Note 16 - Litigation",
     "role": "http://www.protolabs.com/20201231/role/statement-note-16-litigation",
     "shortName": "Note 16 - Litigation",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LegalMattersAndContingenciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R23": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "022 - Disclosure - Note 17 - Segment Reporting",
     "role": "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting",
     "shortName": "Note 17 - Segment Reporting",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R24": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SubsequentEventsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "023 - Disclosure - Note 18 - Subsequent Events",
     "role": "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
     "shortName": "Note 18 - Subsequent Events",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SubsequentEventsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R25": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ConsolidationPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "024 - Disclosure - Significant Accounting Policies (Policies)",
     "role": "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies",
     "shortName": "Significant Accounting Policies (Policies)",
     "subGroupType": "policies",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ConsolidationPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R26": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisaggregationOfRevenueTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "025 - Disclosure - Note 3 - Revenue (Tables)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-3-revenue-tables",
     "shortName": "Note 3 - Revenue (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisaggregationOfRevenueTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R27": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "026 - Disclosure - Note 4 - Net Income Per Common Share (Tables)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-tables",
     "shortName": "Note 4 - Net Income Per Common Share (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R28": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfGoodwillTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "027 - Disclosure - Note 5 - Goodwill and Other Intangible Assets (Tables)",
     "role": "http://www.protolabs.com/20201231/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": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfGoodwillTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R29": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:FairValueDisclosuresTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "028 - Disclosure - Note 6 - Fair Value Measurements (Tables)",
     "role": "http://www.protolabs.com/20201231/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": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R3": {
     "firstAnchor": null,
     "groupType": "statement",
     "isDefault": "false",
     "longName": "002 - Statement - Consolidated Balance Sheets (Parentheticals)",
     "role": "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals",
     "shortName": "Consolidated Balance Sheets (Parentheticals)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": null
    },
    "R30": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:HeldToMaturitySecuritiesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "029 - Disclosure - Note 7 - Marketable Securities (Tables)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-tables",
     "shortName": "Note 7 - Marketable Securities (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:HeldToMaturitySecuritiesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R31": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "030 - Disclosure - Note 8 - Property and Equipment (Tables)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-tables",
     "shortName": "Note 8 - Property and Equipment (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R32": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "031 - Disclosure - Note 9 - Inventory (Tables)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-9-inventory-tables",
     "shortName": "Note 9 - Inventory (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R33": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "032 - Disclosure - Note 12 - Stock-based Compensation (Tables)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables",
     "shortName": "Note 12 - Stock-based Compensation (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R34": {
     "firstAnchor": {
      "ancestors": [
       "prlb:LesseeOperatingLeasesAndFinancingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "prlb:AssetsAndLiabilitiesLesseeTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "033 - Disclosure - Note 13 - Leases (Tables)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-13-leases-tables",
     "shortName": "Note 13 - Leases (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "prlb:LesseeOperatingLeasesAndFinancingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "prlb:AssetsAndLiabilitiesLesseeTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R35": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:DisclosureOfReclassificationAmountTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "034 - Disclosure - Note 14 - Accumulated Other Comprehensive Loss (Tables)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-tables",
     "shortName": "Note 14 - Accumulated Other Comprehensive Loss (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:DisclosureOfReclassificationAmountTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R36": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "035 - Disclosure - Note 15 - Income Taxes (Tables)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables",
     "shortName": "Note 15 - Income Taxes (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R37": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "prlb:IncomeFromOperationsByGeographicAreaTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "036 - Disclosure - Note 17 - Segment Reporting (Tables)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables",
     "shortName": "Note 17 - Segment Reporting (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "prlb:IncomeFromOperationsByGeographicAreaTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R38": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:CapitalizedComputerSoftwareNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "037 - Disclosure - Note 2 - Summary of Significant Accounting Policies (Details Textual)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
     "shortName": "Note 2 - Summary of Significant Accounting Policies (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:CapitalizedComputerSoftwareNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R39": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "038 - Disclosure - Note 3 - Revenue - Disaggregation of Revenue (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
     "shortName": "Note 3 - Revenue - Disaggregation of Revenue (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "ix:continuation",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31_ProductOrServiceAxis-InjectionMoldingProtomoldMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R4": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "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",
     "role": "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
     "shortName": "Consolidated Statements of Comprehensive Income",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:CostOfGoodsAndServicesSold",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R40": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "039 - Disclosure - Note 4 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
     "shortName": "Note 4 - 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": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R41": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-6",
      "first": true,
      "lang": null,
      "name": "us-gaap:AmortizationOfIntangibleAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "040 - Disclosure - Note 5 - Goodwill and Other Intangible Assets (Details Textual)",
     "role": "http://www.protolabs.com/20201231/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": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-6",
      "first": true,
      "lang": null,
      "name": "us-gaap:AmortizationOfIntangibleAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R42": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "041 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details",
     "shortName": "Note 5 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfGoodwillTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2018-12-31",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R43": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "042 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)",
     "role": "http://www.protolabs.com/20201231/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": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R44": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "043 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)",
     "role": "http://www.protolabs.com/20201231/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": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R45": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock",
       "us-gaap:FairValueDisclosuresTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:MoneyMarketFundsAtCarryingValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "044 - Disclosure - Note 6 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)",
     "role": "http://www.protolabs.com/20201231/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": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:MoneyMarketFundsAtCarryingValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R46": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:HeldToMaturitySecuritiesTextBlock",
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:HeldToMaturitySecurities",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "045 - Disclosure - Note 7 - Marketable Securities - Short-term and Long-term Marketable Securities (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details",
     "shortName": "Note 7 - Marketable Securities - Short-term and Long-term Marketable Securities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:HeldToMaturitySecuritiesTextBlock",
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R47": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock",
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "046 - Disclosure - Note 7 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)",
     "role": "http://www.protolabs.com/20201231/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": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R48": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:Depreciation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "047 - Disclosure - Note 8 - Property and Equipment (Details Textual)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-details-textual",
     "shortName": "Note 8 - Property and Equipment (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:Depreciation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R49": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Land",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "048 - Disclosure - Note 8 - Property and Equipment - Components of Property and Equipment (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details",
     "shortName": "Note 8 - Property and Equipment - Components of Property and Equipment (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Land",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R5": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2017-12-31_StatementEquityComponentsAxis-CommonStockMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:CommonStockSharesOutstanding",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "004 - Statement - Consolidated Statements of Shareholders' Equity",
     "role": "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity",
     "shortName": "Consolidated Statements of Shareholders' Equity",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2017-12-31_StatementEquityComponentsAxis-CommonStockMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:CommonStockSharesOutstanding",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R50": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:InventoryGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "049 - Disclosure - Note 9 - Inventory - Inventory (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details",
     "shortName": "Note 9 - Inventory - Inventory (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:InventoryGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R51": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:DebtDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:LineOfCredit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "050 - Disclosure - Note 10 - Financing Obligations (Details Textual)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations-details-textual",
     "shortName": "Note 10 - Financing Obligations (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:DebtDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:LineOfCredit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R52": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "prlb:MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Pure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "051 - Disclosure - Note 11 - Employee Benefit Plans (Details Textual)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual",
     "shortName": "Note 11 - Employee Benefit Plans (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31_RetirementPlanSponsorLocationAxis-US_RetirementPlanTypeAxis-The401KRetirementPlanMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "prlb:MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Pure",
      "xsiNil": "false"
     }
    },
    "R53": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "052 - Disclosure - Note 12 - Stock-based Compensation (Details Textual)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
     "shortName": "Note 12 - Stock-based Compensation (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R54": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "053 - Disclosure - Note 12 - Stock-based Compensation - Stock-based Compensation Expense (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details",
     "shortName": "Note 12 - Stock-based Compensation - Stock-based Compensation Expense (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R55": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31_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": "054 - Disclosure - Note 12 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
     "shortName": "Note 12 - 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": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31_AwardTypeAxis-EmployeeStockOptionMember",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R56": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "reportCount": 1,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "055 - Disclosure - Note 12 - Stock-based Compensation - Stock Option Activity (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details",
     "shortName": "Note 12 - Stock-based Compensation - Stock Option Activity (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R57": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "reportCount": 1,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "056 - Disclosure - Note 12 - Stock-based Compensation - Information about Stock Options Outstanding (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details",
     "shortName": "Note 12 - Stock-based Compensation - Information about Stock Options Outstanding (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis-ExercisePriceRangeOneMember",
      "decimals": null,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USDPerShare",
      "xsiNil": "true"
     }
    },
    "R58": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2019-12-31_AwardTypeAxis-RestrictedStockMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "reportCount": 1,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "057 - Disclosure - Note 12 - Stock-based Compensation - Restricted Stock Options (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details",
     "shortName": "Note 12 - Stock-based Compensation - Restricted Stock Options (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2017-12-31_AwardTypeAxis-RestrictedStockMember",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R59": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2019-12-31_AwardTypeAxis-PerformanceSharesMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions",
      "reportCount": 1,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "058 - Disclosure - Note 12 - Stock-based Compensation - Performance Stock (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
     "shortName": "Note 12 - Stock-based Compensation - Performance Stock (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2017-12-31_AwardTypeAxis-PerformanceSharesMember",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R6": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "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",
     "role": "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows",
     "shortName": "Consolidated Statements of Cash Flows",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:ShareBasedCompensation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R60": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "059 - Disclosure - Note 12 - Stock-based Compensation - Assumptions Used in the Valuation of Performance Stock (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
     "shortName": "Note 12 - 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": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31_AwardTypeAxis-PerformanceSharesMember",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R61": {
     "firstAnchor": null,
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "060 - Disclosure - Note 13 - Leases (Details Textual)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual",
     "shortName": "Note 13 - Leases (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": null
    },
    "R62": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingLeaseRightOfUseAsset",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "061 - Disclosure - Note 13 - Leases - Balance Sheet Information (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details",
     "shortName": "Note 13 - Leases - Balance Sheet Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": null
    },
    "R63": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:ScheduleOfLeaseExpenseTableTextBlock",
       "prlb:LesseeOperatingLeasesAndFinancingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingLeaseCost",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "062 - Disclosure - Note 13 - Leases - Lease Expense (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details",
     "shortName": "Note 13 - Leases - Lease Expense (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:ScheduleOfLeaseExpenseTableTextBlock",
       "prlb:LesseeOperatingLeasesAndFinancingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingLeaseCost",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R64": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:LesseeLeaseLiabilityMaturityTableTextBlock",
       "prlb:LesseeOperatingLeasesAndFinancingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "063 - Disclosure - Note 13 - Leases - Maturities of Operating Lease Liabilities (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details",
     "shortName": "Note 13 - Leases - Maturities of Operating Lease Liabilities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:LesseeLeaseLiabilityMaturityTableTextBlock",
       "prlb:LesseeOperatingLeasesAndFinancingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R65": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock",
       "prlb:LesseeOperatingLeasesAndFinancingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "064 - Disclosure - Note 13 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details",
     "shortName": "Note 13 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock",
       "prlb:LesseeOperatingLeasesAndFinancingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R66": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-4",
      "first": true,
      "lang": null,
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "065 - Disclosure - Note 14 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
     "shortName": "Note 14 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock",
       "us-gaap:DisclosureOfReclassificationAmountTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2017-12-31_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R67": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:IncomeTaxExpenseBenefit",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "066 - Disclosure - Note 15 - Income Taxes (Details Textual)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual",
     "shortName": "Note 15 - Income Taxes (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "3",
      "lang": null,
      "name": "prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Pure",
      "xsiNil": "false"
     }
    },
    "R68": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "067 - Disclosure - Note 15 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details",
     "shortName": "Note 15 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R69": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CurrentFederalTaxExpenseBenefit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "068 - Disclosure - Note 15 - Income Taxes - Significant Components of Provision for Income Taxes (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details",
     "shortName": "Note 15 - Income Taxes - Significant Components of Provision for Income Taxes (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CurrentFederalTaxExpenseBenefit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R7": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "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 - Nature of Business",
     "role": "http://www.protolabs.com/20201231/role/statement-note-1-nature-of-business",
     "shortName": "Note 1 - Nature of Business",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R70": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2017-12-22_2017-12-22",
      "decimals": "2",
      "first": true,
      "lang": null,
      "name": "us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate",
      "reportCount": 1,
      "unitRef": "Pure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "069 - Disclosure - Note 15 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details",
     "shortName": "Note 15 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "3",
      "lang": null,
      "name": "us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Pure",
      "xsiNil": "false"
     }
    },
    "R71": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "070 - Disclosure - Note 15 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details",
     "shortName": "Note 15 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R72": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2019-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:UnrecognizedTaxBenefits",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "071 - Disclosure - Note 15 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details",
     "shortName": "Note 15 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R73": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "072 - Disclosure - Note 17 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details",
     "shortName": "Note 17 - 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": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R74": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingIncomeLoss",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "073 - Disclosure - Note 17 - Segment Reporting - Income From Operations (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details",
     "shortName": "Note 17 - Segment Reporting - Income From Operations (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:IncomeFromOperationsByGeographicAreaTableTextBlock",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:OperatingIncomeLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R75": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PropertyPlantAndEquipmentNet",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "074 - Disclosure - Note 17 - Segment Reporting - Long-lived Assets by Geographic Region (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
     "shortName": "Note 17 - 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": "prlb20201119_10k.htm",
      "contextRef": "i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:PropertyPlantAndEquipmentNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R76": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-4",
      "first": true,
      "lang": null,
      "name": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "075 - Disclosure - Note 17 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
     "shortName": "Note 17 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31_StatementGeographicalAxis-US",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:PaymentsToAcquirePropertyPlantAndEquipment",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R77": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DepreciationDepletionAndAmortization",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "076 - Disclosure - Note 17 - Segment Reporting - Depreciation and Amortization (Details)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details",
     "shortName": "Note 17 - Segment Reporting - Depreciation and Amortization (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:DepreciationAndAmortizationByGeographicRegionTableTextBlock",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31_StatementGeographicalAxis-US",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:DepreciationDepletionAndAmortization",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R78": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:SubsequentEventsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember",
      "decimals": "-6",
      "first": true,
      "lang": null,
      "name": "us-gaap:PaymentsToAcquireBusinessesGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "077 - Disclosure - Note 18 - Subsequent Events (Details Textual)",
     "role": "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual",
     "shortName": "Note 18 - Subsequent Events (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:SubsequentEventsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember",
      "decimals": "-6",
      "first": true,
      "lang": null,
      "name": "us-gaap:PaymentsToAcquireBusinessesGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R8": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "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 - Summary of Significant Accounting Policies",
     "role": "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
     "shortName": "Note 2 - Summary of Significant Accounting Policies",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "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": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "008 - Disclosure - Note 3 - Revenue",
     "role": "http://www.protolabs.com/20201231/role/statement-note-3-revenue",
     "shortName": "Note 3 - Revenue",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20201119_10k.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    }
   },
   "segmentCount": 62,
   "tag": {
    "country_JP": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "JAPAN"
       }
      }
     },
     "localname": "JP",
     "nsuri": "http://xbrl.sec.gov/country/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "country_US": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "UNITED STATES"
       }
      }
     },
     "localname": "US",
     "nsuri": "http://xbrl.sec.gov/country/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details"
     ],
     "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "gMonthDayItemType"
    },
    "dei_DocumentAnnualReport": {
     "auth_ref": [
      "r648"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true only for a form used as an annual report.",
        "label": "Document Annual Report"
       }
      }
     },
     "localname": "DocumentAnnualReport",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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 CCYY 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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "xbrltype": "stringItemType"
    },
    "dei_DocumentPeriodEndDate": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The end date of the period reflected on the cover page if a periodic report. For all other reports and registration statements containing historical data, it is the date up through which that historical data is presented.  If there is no historical data in the report, use the filing date. The format of the date is CCYY-MM-DD.",
        "label": "Document Period End Date"
       }
      }
     },
     "localname": "DocumentPeriodEndDate",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "dateItemType"
    },
    "dei_DocumentTransitionReport": {
     "auth_ref": [
      "r647"
     ],
     "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "stateOrProvinceItemType"
    },
    "dei_EntityCentralIndexKey": {
     "auth_ref": [
      "r649"
     ],
     "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information",
      "http://www.protolabs.com/20201231/role/statement-note-1-nature-of-business",
      "http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations",
      "http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-tables",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-tables",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables",
      "http://www.protolabs.com/20201231/role/statement-note-16-litigation",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-tables",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-tables",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-tables",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-tables",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-tables",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory-tables",
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "domainItemType"
    },
    "dei_EntityEmergingGrowthCompany": {
     "auth_ref": [
      "r649"
     ],
     "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "fileNumberItemType"
    },
    "dei_EntityFilerCategory": {
     "auth_ref": [
      "r649"
     ],
     "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "edgarStateCountryItemType"
    },
    "dei_EntityInteractiveDataCurrent": {
     "auth_ref": [
      "r650"
     ],
     "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityPublicFloat": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate market value of the voting and non-voting common equity held by non-affiliates computed by reference to the price at which the common equity was last sold, or the average bid and asked price of such common equity, as of the last business day of the registrant's most recently completed second fiscal quarter.",
        "label": "Entity Public Float"
       }
      }
     },
     "localname": "EntityPublicFloat",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "monetaryItemType"
    },
    "dei_EntityRegistrantName": {
     "auth_ref": [
      "r649"
     ],
     "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityShellCompany": {
     "auth_ref": [
      "r649"
     ],
     "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntitySmallBusiness": {
     "auth_ref": [
      "r649"
     ],
     "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntityTaxIdentificationNumber": {
     "auth_ref": [
      "r649"
     ],
     "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "employerIdItemType"
    },
    "dei_EntityVoluntaryFilers": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate 'Yes' or 'No' if the registrant is not required to file reports pursuant to Section 13 or Section 15(d) of the Act.",
        "label": "Entity Voluntary Filers"
       }
      }
     },
     "localname": "EntityVoluntaryFilers",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityWellKnownSeasonedIssuer": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate 'Yes' or 'No' if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Is used on Form Type: 10-K, 10-Q, 8-K, 20-F, 6-K, 10-K/A, 10-Q/A, 20-F/A, 6-K/A, N-CSR, N-Q, N-1A.",
        "label": "Entity Well-known Seasoned Issuer"
       }
      }
     },
     "localname": "EntityWellKnownSeasonedIssuer",
     "nsuri": "http://xbrl.sec.gov/dei/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "yesNoItemType"
    },
    "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information",
      "http://www.protolabs.com/20201231/role/statement-note-1-nature-of-business",
      "http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations",
      "http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-tables",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-tables",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables",
      "http://www.protolabs.com/20201231/role/statement-note-16-litigation",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-tables",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-tables",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-tables",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-tables",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-tables",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory-tables",
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_Security12bTitle": {
     "auth_ref": [
      "r645"
     ],
     "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-document-and-entity-information"
     ],
     "xbrltype": "securityTitleItemType"
    },
    "dei_SecurityExchangeName": {
     "auth_ref": [
      "r646"
     ],
     "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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2019-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_AssetsAndLiabilitiesLesseeTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of lessee's assets and liabilities.",
        "label": "Assets and Liabilities, Lessee [Table Text Block]"
       }
      }
     },
     "localname": "AssetsAndLiabilitiesLesseeTableTextBlock",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ComputerHardwareAndSoftwareGross": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 2.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The gross amount of computer hardware and software as of the balance sheet date.",
        "label": "Computer hardware and software"
       }
      }
     },
     "localname": "ComputerHardwareAndSoftwareGross",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_CorporateUnallocatedAndJapanSegmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Segment for corporate unallocated expenses and Japan.",
        "label": "Corporate Unallocated and Japan Segment[Member]"
       }
      }
     },
     "localname": "CorporateUnallocatedAndJapanSegmentMember",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_DeferredTaxAssetsRightOfUseLeases": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 6.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from right of use lease assets.",
        "label": "prlb_DeferredTaxAssetsRightOfUseLeases",
        "terseLabel": "Leases"
       }
      }
     },
     "localname": "DeferredTaxAssetsRightOfUseLeases",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_DeferredTaxLiabilityCaresAct": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents deferred tax liability related to CARES act.",
        "label": "prlb_DeferredTaxLiabilityCaresAct",
        "terseLabel": "Deferred Tax Liability, CARES Act"
       }
      }
     },
     "localname": "DeferredTaxLiabilityCaresAct",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_DepreciationAndAmortizationByGeographicRegionTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of depreciation and amortization by geographic region.",
        "label": "Depreciation and Amortization by Geographic Region [Table Text Block]"
       }
      }
     },
     "localname": "DepreciationAndAmortizationByGeographicRegionTableTextBlock",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "prlb_ESPPMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "ESPP [member",
        "label": "ESPP [Member]"
       }
      }
     },
     "localname": "ESPPMember",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 6.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to provision to return difference.",
        "label": "Provision to return difference"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationProvisionToReturnDifferencePercent",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 7.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Qualified subsidiary election.",
        "label": "Share based compensation"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationQualifiedSubsidiaryElection",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 0.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to the revaluation of deferred tax liability.",
        "label": "Revaluation of deferred tax liability"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationRevaluationOfDeferredTaxLiability",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_EffectiveIncomeTaxRateReconciliationTransitionTaxPercent": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 1.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to a one time transition tax.",
        "label": "Transition tax"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationTransitionTaxPercent",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The weighted average purchase price of shares purchased through the Employee Stock Purchase Plan.",
        "label": "prlb_EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased",
        "terseLabel": "Employee Stock Purchase Plan, Weighted Average Purchase Price of Shares Purchased (in shares)"
       }
      }
     },
     "localname": "EmployeeStockPurchasePlanWeightedAveragePurchasePriceOfSharesPurchased",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "sharesItemType"
    },
    "prlb_EuropeSegmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Operating segment for Europe",
        "label": "Europe Segment [Member]"
       }
      }
     },
     "localname": "EuropeSegmentMember",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ExercisePriceRangeFourMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Exercise price range four [member",
        "label": "Exercise Price Range Four [Member]"
       }
      }
     },
     "localname": "ExercisePriceRangeFourMember",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ExercisePriceRangeOneMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Exercise price range one [member",
        "label": "Exercise Price Range One [Member]"
       }
      }
     },
     "localname": "ExercisePriceRangeOneMember",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ExercisePriceRangeThreeMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Exercise price range three [member]",
        "label": "Exercise Price Range Three [Member]"
       }
      }
     },
     "localname": "ExercisePriceRangeThreeMember",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ExercisePriceRangeTwoMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Exercise price range two [member]",
        "label": "Exercise Price Range Two [Member]"
       }
      }
     },
     "localname": "ExercisePriceRangeTwoMember",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of expenditures for additions to long-lived assets by geographic region.",
        "label": "Expenditures for Additions to Long-lived Assets by Geographic Region [Table Text Block]"
       }
      }
     },
     "localname": "ExpendituresForAdditionsToLonglivedAssetsByGeographicRegionTableTextBlock",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents increase (decrease) in income taxes payable related to CARES Act.",
        "label": "prlb_IncreaseDecreaseInIncomeTaxesPayableCaresAct",
        "terseLabel": "Increase (Decrease) in Income Taxes Payable, CARES Act"
       }
      }
     },
     "localname": "IncreaseDecreaseInIncomeTaxesPayableCaresAct",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_LesseeLeaseLiabilityMaturityTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of undiscounted cash flows of operating and finance lease liability.",
        "label": "Lessee, Lease Liability, Maturity [Table Text Block]"
       }
      }
     },
     "localname": "LesseeLeaseLiabilityMaturityTableTextBlock",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "prlb_LesseeOperatingLeasesAndFinancingLeasesTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for operating leases of lessee and finance leases of lessee.",
        "label": "Lessee, Operating Leases and Financing Leases [Text Block]"
       }
      }
     },
     "localname": "LesseeOperatingLeasesAndFinancingLeasesTextBlock",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases"
     ],
     "xbrltype": "textBlockItemType"
    },
    "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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Minimum Number of Employee Working Hours Required to be Eligible to Participate in 401(k) Plan",
        "label": "prlb_MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan",
        "terseLabel": "Minimum Number Of Employee Working Hours Required To Be Eligible To Participate In 401K Plan"
       }
      }
     },
     "localname": "MinimumNumberOfEmployeeWorkingHoursRequiredToBeEligibleToParticipateInFourZeroOneKPlan",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "integerItemType"
    },
    "prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Minimum Service Period Of Employees To Avail Benefit Under Defined Contribution Benefit Plan",
        "label": "prlb_MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan",
        "terseLabel": "Minimum Service Period Of Employees To Avail Benefit Under Defined Contribution Benefit Plan (Month)"
       }
      }
     },
     "localname": "MinimumServicePeriodOfEmployeesToAvailBenefitUnderDefinedContributionBenefitPlan",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "prlb_NoteToFinancialStatementDetailsTextual": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note To Financial Statement Details Textual"
       }
      }
     },
     "localname": "NoteToFinancialStatementDetailsTextual",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_NotesToFinancialStatementsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Notes To Financial Statements [Abstract]"
       }
      }
     },
     "localname": "NotesToFinancialStatementsAbstract",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_OfficeFurnitureAndEquipmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Office furniture and equipment [member",
        "label": "Office Furniture And Equipment [Member]"
       }
      }
     },
     "localname": "OfficeFurnitureAndEquipmentMember",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information pertaining to office space, manufacturing facilities, and certain company vehicles and equipment.",
        "label": "Office Space, Manufacturing Facilities, and Certain Company Vehicles and Equipment [Member]"
       }
      }
     },
     "localname": "OfficeSpaceManufacturingFacilitiesAndCertainCompanyVehiclesAndEquipmentMember",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_OperatingLossCarryforwardsExpirationPeriod": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The expiration period of operating loss carryforwards.",
        "label": "prlb_OperatingLossCarryforwardsExpirationPeriod",
        "terseLabel": "Operating Loss Carryforwards, Expiration Period (Year)"
       }
      }
     },
     "localname": "OperatingLossCarryforwardsExpirationPeriod",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents the operating loss carryforwards percentage of taxable income limit.",
        "label": "prlb_OperatingLossCarryforwardsPercentageOfTaxableIncome",
        "terseLabel": "Operating Loss Carryforwards, Percentage of Taxable Income"
       }
      }
     },
     "localname": "OperatingLossCarryforwardsPercentageOfTaxableIncome",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_OtherProductsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents other products.",
        "label": "Other Products [Member]"
       }
      }
     },
     "localname": "OtherProductsMember",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_ScheduleOfLeaseExpenseTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of lease expenses incurred.",
        "label": "Schedule of Lease Expense [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfLeaseExpenseTableTextBlock",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "prlb_ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the weighted average remaining lease terms and discount rates.",
        "label": "Schedule of Lease Terms and Discount Rates [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfLeaseTermsAndDiscountRatesTableTextBlock",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-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)",
        "verboseLabel": "Performance change, weighted-average grant date fair value (in dollars per share)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of change in cost not yet recognized for nonvested award under share-based payment arrangement.",
        "label": "prlb_SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount",
        "terseLabel": "Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Change in Amount"
       }
      }
     },
     "localname": "SharebasedPaymentArrangementNonvestedAwardCostNotYetRecognizedChangeInAmount",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_StockOptionsRestrictedStockAndOtherMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Equity awards of stock options, restricted stock, and equity instruments not otherwise classified.",
        "label": "Stock Options, Restricted Stock, and Other [Member]"
       }
      }
     },
     "localname": "StockOptionsRestrictedStockAndOtherMember",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_The401KRetirementPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A company sponsored 401(k) defined contribution plan.",
        "label": "401(k) Retirement Plan [Member]"
       }
      }
     },
     "localname": "The401KRetirementPlanMember",
     "nsuri": "http://www.protolabs.com/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual"
     ],
     "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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-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/20201231",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)"
       }
      }
     },
     "localname": "statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Stock-based Compensation - Assumptions Used in the Valuation of Performance Stock (Details)"
       }
      }
     },
     "localname": "statement-statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Stock-based Compensation - Information about Stock Options Outstanding (Details)"
       }
      }
     },
     "localname": "statement-statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-12-stockbased-compensation-performance-stock-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Stock-based Compensation - Performance Stock (Details)"
       }
      }
     },
     "localname": "statement-statement-note-12-stockbased-compensation-performance-stock-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-12-stockbased-compensation-restricted-stock-options-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Stock-based Compensation - Restricted Stock Options (Details)"
       }
      }
     },
     "localname": "statement-statement-note-12-stockbased-compensation-restricted-stock-options-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-12-stockbased-compensation-stock-option-activity-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Stock-based Compensation - Stock Option Activity (Details)"
       }
      }
     },
     "localname": "statement-statement-note-12-stockbased-compensation-stock-option-activity-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-12-stockbased-compensation-stockbased-compensation-expense-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Stock-based Compensation - Stock-based Compensation Expense (Details)"
       }
      }
     },
     "localname": "statement-statement-note-12-stockbased-compensation-stockbased-compensation-expense-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-12-stockbased-compensation-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Stock-based Compensation"
       }
      }
     },
     "localname": "statement-statement-note-12-stockbased-compensation-tables",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-13-leases-balance-sheet-information-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 13 - Leases - Balance Sheet Information (Details)"
       }
      }
     },
     "localname": "statement-statement-note-13-leases-balance-sheet-information-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-13-leases-lease-expense-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 13 - Leases - Lease Expense (Details)"
       }
      }
     },
     "localname": "statement-statement-note-13-leases-lease-expense-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 13 - Leases - Maturities of Operating Lease Liabilities (Details)"
       }
      }
     },
     "localname": "statement-statement-note-13-leases-maturities-of-operating-lease-liabilities-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-13-leases-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 13 - Leases"
       }
      }
     },
     "localname": "statement-statement-note-13-leases-tables",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 13 - Leases - Weighted Average Remaining Terms and Discount Rates (Details)"
       }
      }
     },
     "localname": "statement-statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 14 - Accumulated Other Comprehensive Loss - Other Comprehensive Loss (Details)"
       }
      }
     },
     "localname": "statement-statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-14-accumulated-other-comprehensive-loss-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 14 - Accumulated Other Comprehensive Loss"
       }
      }
     },
     "localname": "statement-statement-note-14-accumulated-other-comprehensive-loss-tables",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 15 - Income Taxes - Components of Income (Loss) Before Income Taxes (Details)"
       }
      }
     },
     "localname": "statement-statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 15 - Income Taxes - Reconciliation of Beginning and Ending Amount of Unrecognized Tax Benefits (Details)"
       }
      }
     },
     "localname": "statement-statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 15 - Income Taxes - Reconciliation of Federal Statutory Income Tax Rate to Effective Tax Rate (Details)"
       }
      }
     },
     "localname": "statement-statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 15 - Income Taxes - Significant Components of Deferred Tax Assets and Liabilities (Details)"
       }
      }
     },
     "localname": "statement-statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 15 - Income Taxes - Significant Components of Provision for Income Taxes (Details)"
       }
      }
     },
     "localname": "statement-statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-15-income-taxes-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 15 - Income Taxes"
       }
      }
     },
     "localname": "statement-statement-note-15-income-taxes-tables",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-17-segment-reporting-depreciation-and-amortization-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 17 - Segment Reporting - Depreciation and Amortization (Details)"
       }
      }
     },
     "localname": "statement-statement-note-17-segment-reporting-depreciation-and-amortization-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 17 - Segment Reporting - Expenditures for Additions to Long-lived Assets (Details)"
       }
      }
     },
     "localname": "statement-statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-17-segment-reporting-income-from-operations-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 17 - Segment Reporting - Income From Operations (Details)"
       }
      }
     },
     "localname": "statement-statement-note-17-segment-reporting-income-from-operations-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 17 - Segment Reporting - Long-lived Assets by Geographic Region (Details)"
       }
      }
     },
     "localname": "statement-statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 17 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)"
       }
      }
     },
     "localname": "statement-statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-17-segment-reporting-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 17 - Segment Reporting"
       }
      }
     },
     "localname": "statement-statement-note-17-segment-reporting-tables",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-3-revenue-disaggregation-of-revenue-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 3 - Revenue - Disaggregation of Revenue (Details)"
       }
      }
     },
     "localname": "statement-statement-note-3-revenue-disaggregation-of-revenue-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-3-revenue-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 3 - Revenue"
       }
      }
     },
     "localname": "statement-statement-note-3-revenue-tables",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 4 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)"
       }
      }
     },
     "localname": "statement-statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-4-net-income-per-common-share-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 4 - Net Income Per Common Share"
       }
      }
     },
     "localname": "statement-statement-note-4-net-income-per-common-share-tables",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 5 - Goodwill and Other Intangible Assets - Changes in Carrying Amount of Goodwill (Details)"
       }
      }
     },
     "localname": "statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 7 - Marketable Securities - Short-term and Long-term Marketable Securities (Details)"
       }
      }
     },
     "localname": "statement-statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "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/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-8-property-and-equipment-components-of-property-and-equipment-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 8 - Property and Equipment - Components of Property and Equipment (Details)"
       }
      }
     },
     "localname": "statement-statement-note-8-property-and-equipment-components-of-property-and-equipment-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-8-property-and-equipment-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 8 - Property and Equipment"
       }
      }
     },
     "localname": "statement-statement-note-8-property-and-equipment-tables",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-9-inventory-inventory-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Inventory - Inventory (Details)"
       }
      }
     },
     "localname": "statement-statement-note-9-inventory-inventory-details",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-9-inventory-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Inventory"
       }
      }
     },
     "localname": "statement-statement-note-9-inventory-tables",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-significant-accounting-policies-policies": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Significant Accounting Policies"
       }
      }
     },
     "localname": "statement-statement-significant-accounting-policies-policies",
     "nsuri": "http://www.protolabs.com/20201231",
     "xbrltype": "stringItemType"
    },
    "srt_ConsolidationItemsAxis": {
     "auth_ref": [
      "r153",
      "r165",
      "r166",
      "r167",
      "r168",
      "r169",
      "r171",
      "r175"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Consolidation Items [Axis]"
       }
      }
     },
     "localname": "ConsolidationItemsAxis",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ConsolidationItemsDomain": {
     "auth_ref": [
      "r153",
      "r165",
      "r166",
      "r167",
      "r168",
      "r169",
      "r171",
      "r175"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Consolidation Items [Domain]"
       }
      }
     },
     "localname": "ConsolidationItemsDomain",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember": {
     "auth_ref": [
      "r111",
      "r118",
      "r217",
      "r416",
      "r417",
      "r418",
      "r458",
      "r459"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cumulative Effect, Period of Adoption, Adjustment [Member]"
       }
      }
     },
     "localname": "CumulativeEffectPeriodOfAdoptionAdjustmentMember",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_CumulativeEffectPeriodOfAdoptionAxis": {
     "auth_ref": [
      "r111",
      "r118",
      "r217",
      "r416",
      "r417",
      "r418",
      "r458",
      "r459"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cumulative Effect, Period of Adoption [Axis]"
       }
      }
     },
     "localname": "CumulativeEffectPeriodOfAdoptionAxis",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_CumulativeEffectPeriodOfAdoptionDomain": {
     "auth_ref": [
      "r111",
      "r118",
      "r217",
      "r416",
      "r417",
      "r418",
      "r458",
      "r459"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cumulative Effect, Period of Adoption [Domain]"
       }
      }
     },
     "localname": "CumulativeEffectPeriodOfAdoptionDomain",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_EuropeMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Europe [Member]"
       }
      }
     },
     "localname": "EuropeMember",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MaximumMember": {
     "auth_ref": [
      "r366",
      "r372",
      "r543",
      "r544",
      "r545",
      "r546",
      "r547",
      "r548",
      "r567",
      "r611",
      "r614"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Maximum [Member]"
       }
      }
     },
     "localname": "MaximumMember",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MinimumMember": {
     "auth_ref": [
      "r366",
      "r372",
      "r543",
      "r544",
      "r545",
      "r546",
      "r547",
      "r548",
      "r567",
      "r611",
      "r614"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Minimum [Member]"
       }
      }
     },
     "localname": "MinimumMember",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ProductOrServiceAxis": {
     "auth_ref": [
      "r177",
      "r279",
      "r281",
      "r568",
      "r610",
      "r612"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Product and Service [Axis]"
       }
      }
     },
     "localname": "ProductOrServiceAxis",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ProductsAndServicesDomain": {
     "auth_ref": [
      "r177",
      "r279",
      "r281",
      "r568",
      "r610",
      "r612"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Product and Service [Domain]"
       }
      }
     },
     "localname": "ProductsAndServicesDomain",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_RangeAxis": {
     "auth_ref": [
      "r309",
      "r366",
      "r372",
      "r543",
      "r544",
      "r545",
      "r546",
      "r547",
      "r548",
      "r567",
      "r611",
      "r614"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statistical Measurement [Axis]"
       }
      }
     },
     "localname": "RangeAxis",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_RangeMember": {
     "auth_ref": [
      "r309",
      "r366",
      "r372",
      "r543",
      "r544",
      "r545",
      "r546",
      "r547",
      "r548",
      "r567",
      "r611",
      "r614"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statistical Measurement [Domain]"
       }
      }
     },
     "localname": "RangeMember",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ScenarioForecastMember": {
     "auth_ref": [
      "r367"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Forecast [Member]"
       }
      }
     },
     "localname": "ScenarioForecastMember",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ScenarioUnspecifiedDomain": {
     "auth_ref": [
      "r367"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Scenario [Domain]"
       }
      }
     },
     "localname": "ScenarioUnspecifiedDomain",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_SegmentGeographicalDomain": {
     "auth_ref": [
      "r178",
      "r179",
      "r279",
      "r282",
      "r613",
      "r634",
      "r635",
      "r636",
      "r637",
      "r638",
      "r639",
      "r640",
      "r641"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Geographical [Domain]"
       }
      }
     },
     "localname": "SegmentGeographicalDomain",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_StatementGeographicalAxis": {
     "auth_ref": [
      "r178",
      "r179",
      "r279",
      "r282",
      "r613",
      "r629",
      "r634",
      "r635",
      "r636",
      "r637",
      "r638",
      "r639",
      "r640",
      "r641",
      "r642"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Geographical [Axis]"
       }
      }
     },
     "localname": "StatementGeographicalAxis",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_StatementScenarioAxis": {
     "auth_ref": [
      "r265",
      "r367",
      "r535"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Scenario [Axis]"
       }
      }
     },
     "localname": "StatementScenarioAxis",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountingPoliciesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accounting Policies [Abstract]"
       }
      }
     },
     "localname": "AccountingPoliciesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountingStandardsUpdate201409Member": {
     "auth_ref": [
      "r283"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accounting Standards Update 2014-09 Revenue from Contracts with Customers (Topic 606).",
        "label": "Accounting Standards Update 2014-09 [Member]"
       }
      }
     },
     "localname": "AccountingStandardsUpdate201409Member",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccountingStandardsUpdate201602Member": {
     "auth_ref": [
      "r513"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accounting Standards Update 2016-02 Leases (Topic 842).",
        "label": "Accounting Standards Update 2016-02 [Member]"
       }
      }
     },
     "localname": "AccountingStandardsUpdate201602Member",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccountsPayableCurrent": {
     "auth_ref": [
      "r40"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 5.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccountsReceivableNetCurrent": {
     "auth_ref": [
      "r5",
      "r21",
      "r185",
      "r186"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 0.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,781 and $952 as of December 31, 2020 and December 31, 2019, respectively"
       }
      }
     },
     "localname": "AccountsReceivableNetCurrent",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments": {
     "auth_ref": [
      "r93"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 12.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 held-to-maturity securities"
       }
      }
     },
     "localname": "AccretionAmortizationOfDiscountsAndPremiumsInvestments",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedIncomeTaxesCurrent": {
     "auth_ref": [
      "r15",
      "r577",
      "r598"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 2.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedLiabilitiesAndOtherLiabilities": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 1.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment": {
     "auth_ref": [
      "r38",
      "r257"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 0.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of accumulated depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce goods and services.",
        "label": "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
        "negatedLabel": "Accumulated depreciation and amortization"
       }
      }
     },
     "localname": "AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": {
     "auth_ref": [
      "r24",
      "r55",
      "r56",
      "r57",
      "r599",
      "r622",
      "r626"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 4.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeMember": {
     "auth_ref": [
      "r54",
      "r57",
      "r58",
      "r108",
      "r109",
      "r110",
      "r491",
      "r617",
      "r618"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccumulatedTranslationAdjustmentMember": {
     "auth_ref": [
      "r53",
      "r57",
      "r58",
      "r491",
      "r505",
      "r506",
      "r507",
      "r508",
      "r510"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AdditionalPaidInCapitalCommonStock": {
     "auth_ref": [
      "r22"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 3.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdditionalPaidInCapitalMember": {
     "auth_ref": [
      "r108",
      "r109",
      "r110",
      "r416",
      "r417",
      "r418"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AdjustmentsForNewAccountingPronouncementsAxis": {
     "auth_ref": [
      "r112",
      "r113",
      "r114",
      "r115",
      "r214",
      "r215",
      "r216",
      "r217",
      "r218",
      "r219",
      "r412",
      "r413",
      "r414",
      "r415",
      "r416",
      "r417",
      "r418",
      "r419",
      "r456",
      "r457",
      "r458",
      "r459",
      "r570",
      "r571",
      "r572",
      "r615",
      "r616",
      "r617",
      "r618",
      "r619",
      "r620",
      "r621",
      "r622",
      "r623",
      "r624",
      "r625",
      "r626"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by amendment to accounting standards.",
        "label": "Accounting Standards Update [Axis]"
       }
      }
     },
     "localname": "AdjustmentsForNewAccountingPronouncementsAxis",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue": {
     "auth_ref": [
      "r374",
      "r376",
      "r422",
      "r423"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AdvertisingCostsPolicyTextBlock": {
     "auth_ref": [
      "r425"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for advertising cost.",
        "label": "Advertising Cost [Policy Text Block]"
       }
      }
     },
     "localname": "AdvertisingCostsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_AdvertisingExpense": {
     "auth_ref": [
      "r426"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount charged to advertising expense for the period, which are expenses incurred with the objective of increasing revenue for a specified brand, product or product line.",
        "label": "us-gaap_AdvertisingExpense",
        "terseLabel": "Advertising Expense"
       }
      }
     },
     "localname": "AdvertisingExpense",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllocatedShareBasedCompensationExpense": {
     "auth_ref": [
      "r376",
      "r408",
      "r421"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expense for award under share-based payment arrangement. Excludes amount capitalized.",
        "label": "Allocated share-based compensation expense"
       }
      }
     },
     "localname": "AllocatedShareBasedCompensationExpense",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent": {
     "auth_ref": [
      "r28",
      "r191",
      "r220"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AmortizationOfIntangibleAssets": {
     "auth_ref": [
      "r92",
      "r242",
      "r248"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_Assets": {
     "auth_ref": [
      "r102",
      "r161",
      "r167",
      "r173",
      "r211",
      "r488",
      "r493",
      "r502",
      "r576",
      "r597"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AssetsCurrent": {
     "auth_ref": [
      "r7",
      "r8",
      "r50",
      "r102",
      "r211",
      "r488",
      "r493",
      "r502"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AssetsCurrentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current assets"
       }
      }
     },
     "localname": "AssetsCurrentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AssetsFairValueDisclosure": {
     "auth_ref": [
      "r496"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/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": "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",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "AssetsFairValueDisclosure",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AwardTypeAxis": {
     "auth_ref": [
      "r377",
      "r410"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BankTimeDepositsMember": {
     "auth_ref": [
      "r588"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BuildingMember": {
     "auth_ref": [
      "r256"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Facility held for productive use including, but not limited to, office, production, storage and distribution facilities.",
        "label": "Building [Member]"
       }
      }
     },
     "localname": "BuildingMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BuildingsAndImprovementsGross": {
     "auth_ref": [
      "r10",
      "r256"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 0.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before accumulated depreciation of building structures held for productive use including addition, improvement, or renovation to the structure, including, but not limited to, interior masonry, interior flooring, electrical, and plumbing.",
        "label": "Buildings and improvements"
       }
      }
     },
     "localname": "BuildingsAndImprovementsGross",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessAcquisitionAcquireeDomain": {
     "auth_ref": [
      "r362",
      "r368"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BusinessAcquisitionAxis": {
     "auth_ref": [
      "r362",
      "r368",
      "r474",
      "r475"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued": {
     "auth_ref": [
      "r484"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_BusinessCombinationConsiderationTransferred1": {
     "auth_ref": [
      "r480",
      "r481",
      "r482"
     ],
     "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"
       }
      }
     },
     "localname": "BusinessCombinationConsiderationTransferred1",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable": {
     "auth_ref": [
      "r480",
      "r481"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh": {
     "auth_ref": [
      "r485"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CapitalizedComputerSoftwareNet": {
     "auth_ref": [
      "r643"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The carrying amount of capitalized computer software costs net of accumulated amortization as of the balance sheet date.",
        "label": "us-gaap_CapitalizedComputerSoftwareNet",
        "terseLabel": "Capitalized Computer Software, Net, Ending Balance"
       }
      }
     },
     "localname": "CapitalizedComputerSoftwareNet",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsAtCarryingValue": {
     "auth_ref": [
      "r3",
      "r34",
      "r94"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 5.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CashAndCashEquivalentsPolicyTextBlock": {
     "auth_ref": [
      "r12",
      "r95",
      "r99"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for cash and cash equivalents, including the policy for determining which items are treated as cash equivalents. Other information that may be disclosed includes (1) the nature of any restrictions on the entity's use of its cash and cash equivalents, (2) whether the entity's cash and cash equivalents are insured or expose the entity to credit risk, (3) the classification of any negative balance accounts (overdrafts), and (4) the carrying basis of cash equivalents (for example, at cost) and whether the carrying amount of cash equivalents approximates fair value.",
        "label": "Cash and Cash Equivalents, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "CashAndCashEquivalentsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": {
     "auth_ref": [
      "r87",
      "r94",
      "r97"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": {
     "auth_ref": [
      "r87",
      "r503"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "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 increase in cash and cash equivalents"
       }
      }
     },
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember": {
     "auth_ref": [
      "r310",
      "r500"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CommonStockMember": {
     "auth_ref": [
      "r108",
      "r109"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CommonStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r20"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_CommonStockSharesAuthorized": {
     "auth_ref": [
      "r20"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesIssued": {
     "auth_ref": [
      "r20"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesOutstanding": {
     "auth_ref": [
      "r20",
      "r268"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockValue": {
     "auth_ref": [
      "r20"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 0.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 26,776,796 and 26,786,459 shares as of December 31, 2020 and December 31, 2019, respectively"
       }
      }
     },
     "localname": "CommonStockValue",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CompensationRelatedCostsPolicyTextBlock": {
     "auth_ref": [
      "r98",
      "r381"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for salaries, bonuses, incentive awards, postretirement and postemployment benefits granted to employees, including equity-based arrangements; discloses methodologies for measurement, and the bases for recognizing related assets and liabilities and recognizing and reporting compensation expense.",
        "label": "Compensation Related Costs, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "CompensationRelatedCostsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ComprehensiveIncomeNetOfTax": {
     "auth_ref": [
      "r61",
      "r63",
      "r64",
      "r70",
      "r586",
      "r606"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "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",
        "totalLabel": "Comprehensive income"
       }
      }
     },
     "localname": "ComprehensiveIncomeNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ComprehensiveIncomeNetOfTaxAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other Comprehensive Income (Loss), net of tax"
       }
      }
     },
     "localname": "ComprehensiveIncomeNetOfTaxAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ComprehensiveIncomePolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for comprehensive income.",
        "label": "Comprehensive Income, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "ComprehensiveIncomePolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ComputerEquipmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Long lived, depreciable assets that are used in the creation, maintenance and utilization of information systems.",
        "label": "Computer Equipment [Member]"
       }
      }
     },
     "localname": "ComputerEquipmentMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ComputerSoftwareIntangibleAssetMember": {
     "auth_ref": [
      "r243",
      "r246",
      "r479"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ConsolidationPolicyTextBlock": {
     "auth_ref": [
      "r99",
      "r490"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy regarding (1) the principles it follows in consolidating or combining the separate financial statements, including the principles followed in determining the inclusion or exclusion of subsidiaries or other entities in the consolidated or combined financial statements and (2) its treatment of interests (for example, common stock, a partnership interest or other means of exerting influence) in other entities, for example consolidation or use of the equity or cost methods of accounting.  The accounting policy may also address the accounting treatment for intercompany accounts and transactions, noncontrolling interest, and the income statement treatment in consolidation for issuances of stock by a subsidiary.",
        "label": "Consolidation, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "ConsolidationPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ConstructionInProgressGross": {
     "auth_ref": [
      "r256"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 4.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of structure or a modification to a structure under construction. Includes recently completed structures or modifications to structures that have not been placed into service.",
        "label": "Construction in progress"
       }
      }
     },
     "localname": "ConstructionInProgressGross",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CorporateDebtSecuritiesMember": {
     "auth_ref": [
      "r310",
      "r356",
      "r628"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CostOfGoodsAndServicesSold": {
     "auth_ref": [
      "r74",
      "r568"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CostOfSalesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Primary financial statement caption encompassing cost of sales.",
        "label": "Cost of Sales [Member]"
       }
      }
     },
     "localname": "CostOfSalesMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CurrentFederalTaxExpenseBenefit": {
     "auth_ref": [
      "r103",
      "r452",
      "r462"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 3.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current federal tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Federal"
       }
      }
     },
     "localname": "CurrentFederalTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentForeignTaxExpenseBenefit": {
     "auth_ref": [
      "r105",
      "r452"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 4.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Foreign"
       }
      }
     },
     "localname": "CurrentForeignTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current:"
       }
      }
     },
     "localname": "CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CurrentStateAndLocalTaxExpenseBenefit": {
     "auth_ref": [
      "r103",
      "r452",
      "r462"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 5.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current state and local tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "State"
       }
      }
     },
     "localname": "CurrentStateAndLocalTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CustomerRelationshipsMember": {
     "auth_ref": [
      "r478"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_DebtDisclosureTextBlock": {
     "auth_ref": [
      "r267"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for information about short-term and long-term debt arrangements, which includes amounts of borrowings under each line of credit, note payable, commercial paper issue, bonds indenture, debenture issue, own-share lending arrangements and any other contractual agreement to repay funds, and about the underlying arrangements, rationale for a classification as long-term, including repayment terms, interest rates, collateral provided, restrictions on use of assets and activities, whether or not in compliance with debt covenants, and other matters important to users of the financial statements, such as the effects of refinancing and noncompliance with debt covenants.",
        "label": "Debt Disclosure [Text Block]"
       }
      }
     },
     "localname": "DebtDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DeferredFederalIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r103",
      "r453",
      "r462"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 6.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred federal income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "us-gaap_DeferredFederalIncomeTaxExpenseBenefit",
        "verboseLabel": "Federal"
       }
      }
     },
     "localname": "DeferredFederalIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredForeignIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r103",
      "r453",
      "r462"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 2.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "us-gaap_DeferredForeignIncomeTaxExpenseBenefit",
        "verboseLabel": "Foreign"
       }
      }
     },
     "localname": "DeferredForeignIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r92",
      "r103",
      "r453",
      "r462",
      "r463",
      "r464"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 2.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred"
       }
      }
     },
     "localname": "DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredIncomeTaxLiabilities": {
     "auth_ref": [
      "r17",
      "r18",
      "r444",
      "r578",
      "r595"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 0.0,
       "parentTag": "us-gaap_DeferredTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences.",
        "label": "us-gaap_DeferredIncomeTaxLiabilities",
        "negatedTotalLabel": "Total deferred tax liabilities"
       }
      }
     },
     "localname": "DeferredIncomeTaxLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxLiabilitiesNet": {
     "auth_ref": [
      "r432",
      "r433"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 3.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r103",
      "r453",
      "r462"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 0.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred state and local tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit",
        "verboseLabel": "State"
       }
      }
     },
     "localname": "DeferredStateAndLocalIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsGoodwillAndIntangibleAssets": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 0.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from intangible assets including goodwill.",
        "label": "Intangible assets"
       }
      }
     },
     "localname": "DeferredTaxAssetsGoodwillAndIntangibleAssets",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsInventory": {
     "auth_ref": [
      "r450",
      "r451"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 3.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from inventory.",
        "label": "Inventories"
       }
      }
     },
     "localname": "DeferredTaxAssetsInventory",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsNet": {
     "auth_ref": [
      "r446"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredTaxLiabilities",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards.",
        "label": "us-gaap_DeferredTaxAssetsNet",
        "totalLabel": "Total deferred tax assets"
       }
      }
     },
     "localname": "DeferredTaxAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsNetAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred tax assets:"
       }
      }
     },
     "localname": "DeferredTaxAssetsNetAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredTaxAssetsOperatingLossCarryforwards": {
     "auth_ref": [
      "r450",
      "r451"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 5.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible operating loss carryforwards.",
        "label": "Net operating loss"
       }
      }
     },
     "localname": "DeferredTaxAssetsOperatingLossCarryforwards",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsOther": {
     "auth_ref": [
      "r450",
      "r451"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, before allocation of valuation allowance, of deferred tax asset attributable to deductible temporary differences, classified as other.",
        "label": "Other assets"
       }
      }
     },
     "localname": "DeferredTaxAssetsOther",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost": {
     "auth_ref": [
      "r450",
      "r451"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from share-based compensation.",
        "label": "Stock-based compensation"
       }
      }
     },
     "localname": "DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities": {
     "auth_ref": [
      "r450",
      "r451"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 7.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from accrued liabilities.",
        "label": "Accrued expenses"
       }
      }
     },
     "localname": "DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsValuationAllowance": {
     "auth_ref": [
      "r445"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 4.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized.",
        "label": "us-gaap_DeferredTaxAssetsValuationAllowance",
        "negatedLabel": "Less valuation allowance",
        "terseLabel": "Deferred Tax Assets, Valuation Allowance, Total"
       }
      }
     },
     "localname": "DeferredTaxAssetsValuationAllowance",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilities": {
     "auth_ref": [
      "r433",
      "r446"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences without jurisdictional netting.",
        "label": "us-gaap_DeferredTaxLiabilities",
        "negatedTotalLabel": "Net deferred tax liability"
       }
      }
     },
     "localname": "DeferredTaxLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill": {
     "auth_ref": [
      "r450",
      "r451",
      "r486",
      "r487"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from goodwill.",
        "label": "us-gaap_DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill",
        "negatedLabel": "Goodwill"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesGoodwillAndIntangibleAssetsGoodwill",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesLeasingArrangements": {
     "auth_ref": [
      "r450",
      "r451"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 0.0,
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from leasing arrangements.",
        "label": "us-gaap_DeferredTaxLiabilitiesLeasingArrangements",
        "negatedTerseLabel": "Leases"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesLeasingArrangements",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesNetAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred tax liabilities:"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesNetAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment": {
     "auth_ref": [
      "r450",
      "r451"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from property, plant, and equipment.",
        "label": "us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment",
        "negatedLabel": "Depreciation"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries": {
     "auth_ref": [
      "r472"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability not recognized because of the exceptions to comprehensive recognition of deferred taxes related to undistributed earnings of foreign subsidiaries.",
        "label": "us-gaap_DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries",
        "terseLabel": "Deferred Tax Liability Not Recognized, Amount of Unrecognized Deferred Tax Liability, Undistributed Earnings of Foreign Subsidiaries"
       }
      }
     },
     "localname": "DeferredTaxLiabilityNotRecognizedAmountOfUnrecognizedDeferredTaxLiabilityUndistributedEarningsOfForeignSubsidiaries",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of discretionary contributions made by an employer to a defined contribution plan.",
        "label": "us-gaap_DefinedContributionPlanEmployerDiscretionaryContributionAmount",
        "terseLabel": "Defined Contribution Plan, Employer Discretionary Contribution Amount"
       }
      }
     },
     "localname": "DefinedContributionPlanEmployerDiscretionaryContributionAmount",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Maximum percentage of employee gross pay the employee may contribute to a defined contribution plan.",
        "label": "us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent",
        "terseLabel": "Defined Contribution Plan, Maximum Annual Contributions Per Employee, Percent"
       }
      }
     },
     "localname": "DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_Depreciation": {
     "auth_ref": [
      "r92",
      "r255"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives. Includes production and non-production related depreciation.",
        "label": "us-gaap_Depreciation",
        "terseLabel": "Depreciation, Total"
       }
      }
     },
     "localname": "Depreciation",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DepreciationDepletionAndAmortization": {
     "auth_ref": [
      "r92",
      "r156"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "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",
        "terseLabel": "Depreciation and amortization"
       }
      }
     },
     "localname": "DepreciationDepletionAndAmortization",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DisaggregationOfRevenueAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revenue:"
       }
      }
     },
     "localname": "DisaggregationOfRevenueAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DisaggregationOfRevenueTableTextBlock": {
     "auth_ref": [
      "r279"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock": {
     "auth_ref": [
      "r424"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DisclosureOfReclassificationAmountTextBlock": {
     "auth_ref": [
      "r77"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-1-nature-of-business",
      "http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes",
      "http://www.protolabs.com/20201231/role/statement-note-16-litigation",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DomesticPlanMember": {
     "auth_ref": [
      "r361",
      "r365",
      "r371"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Location of employer sponsoring plan, designed to provide retirement benefits, determined as principal place of business. Includes, but is not limited to, defined benefit and defined contribution plans.",
        "label": "Domestic Plan [Member]"
       }
      }
     },
     "localname": "DomesticPlanMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EarningsPerShareAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Net income per share:"
       }
      }
     },
     "localname": "EarningsPerShareAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareBasic": {
     "auth_ref": [
      "r71",
      "r116",
      "r117",
      "r118",
      "r119",
      "r120",
      "r124",
      "r126",
      "r131",
      "r132",
      "r133",
      "r137",
      "r138",
      "r587",
      "r607"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerShareDiluted": {
     "auth_ref": [
      "r71",
      "r116",
      "r117",
      "r118",
      "r119",
      "r120",
      "r126",
      "r131",
      "r132",
      "r133",
      "r137",
      "r138",
      "r587",
      "r607"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerShareTextBlock": {
     "auth_ref": [
      "r134",
      "r135",
      "r136",
      "r139"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": {
     "auth_ref": [
      "r503"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 2.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateContinuingOperations": {
     "auth_ref": [
      "r435"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "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",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateContinuingOperations",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate": {
     "auth_ref": [
      "r435",
      "r466"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 5.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of domestic federal statutory tax rate applicable to pretax income (loss).",
        "label": "Federal tax statutory rate",
        "terseLabel": "Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance": {
     "auth_ref": [
      "r435",
      "r466"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 9.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to changes in the valuation allowance for deferred tax assets.",
        "label": "Valuation allowance against deferred tax assets"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential": {
     "auth_ref": [
      "r435",
      "r466"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 4.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to statutory income tax expense (benefit) outside of the country of domicile.",
        "label": "Foreign rate differential"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments": {
     "auth_ref": [
      "r435",
      "r466"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 10.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to other adjustments.",
        "label": "Miscellaneous"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationOtherAdjustments",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes": {
     "auth_ref": [
      "r435",
      "r466"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 8.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to state and local income tax expense (benefit), net of federal tax expense (benefit).",
        "label": "State tax (net of federal benefit)"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationTaxContingencies": {
     "auth_ref": [
      "r435",
      "r466"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 3.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to income tax contingencies. Includes, but not limited to, domestic tax contingency, foreign tax contingency, state and local tax contingency, and other contingencies.",
        "label": "Tax reserves"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationTaxContingencies",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch": {
     "auth_ref": [
      "r435",
      "r466"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details": {
       "order": 2.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to research tax credit.",
        "label": "us-gaap_EffectiveIncomeTaxRateReconciliationTaxCreditsResearch",
        "negatedLabel": "Research and development credit"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationTaxCreditsResearch",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EmployeeRelatedLiabilitiesCurrent": {
     "auth_ref": [
      "r43"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 4.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized": {
     "auth_ref": [
      "r409"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1": {
     "auth_ref": [
      "r409"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_EmployeeStockOptionMember": {
     "auth_ref": [
      "r406"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EquipmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tangible personal property used to produce goods and services.",
        "label": "Equipment [Member]"
       }
      }
     },
     "localname": "EquipmentMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EquityComponentDomain": {
     "auth_ref": [
      "r108",
      "r109",
      "r110",
      "r113",
      "r121",
      "r123",
      "r141",
      "r217",
      "r268",
      "r269",
      "r416",
      "r417",
      "r418",
      "r458",
      "r459",
      "r504",
      "r505",
      "r506",
      "r507",
      "r508",
      "r510",
      "r617",
      "r618",
      "r619"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock": {
     "auth_ref": [
      "r496",
      "r497"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FairValueByFairValueHierarchyLevelAxis": {
     "auth_ref": [
      "r310",
      "r312",
      "r313",
      "r314",
      "r315",
      "r316",
      "r317",
      "r356",
      "r497",
      "r540",
      "r541",
      "r542"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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": [
      "r496",
      "r497",
      "r498",
      "r499",
      "r501"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by measurement frequency.",
        "label": "Measurement Frequency [Axis]"
       }
      }
     },
     "localname": "FairValueByMeasurementFrequencyAxis",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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": [
      "r500"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FairValueInputsLevel1Member": {
     "auth_ref": [
      "r310",
      "r312",
      "r317",
      "r356",
      "r497",
      "r540"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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": [
      "r310",
      "r312",
      "r317",
      "r356",
      "r497",
      "r541"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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": [
      "r310",
      "r312",
      "r313",
      "r314",
      "r315",
      "r316",
      "r317",
      "r356",
      "r497",
      "r542"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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": [
      "r310",
      "r312",
      "r313",
      "r314",
      "r315",
      "r316",
      "r317",
      "r356",
      "r540",
      "r541",
      "r542"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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": [
      "r500",
      "r501"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FinanceLeaseInterestExpense": {
     "auth_ref": [
      "r516",
      "r523",
      "r532"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details": {
       "order": 1.0,
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of interest expense on finance lease liability.",
        "label": "Interest on lease obligations"
       }
      }
     },
     "localname": "FinanceLeaseInterestExpense",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseInterestPaymentOnLiability": {
     "auth_ref": [
      "r518",
      "r526"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of interest paid on finance lease liability.",
        "label": "Operating cash flows from finance leases"
       }
      }
     },
     "localname": "FinanceLeaseInterestPaymentOnLiability",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseLiability": {
     "auth_ref": [
      "r515",
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from finance lease.",
        "label": "Present value of lease liabilities",
        "totalLabel": "Total finance lease liabilities"
       }
      }
     },
     "localname": "FinanceLeaseLiability",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseLiabilityCurrent": {
     "auth_ref": [
      "r515"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 3.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      },
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details": {
       "order": 1.0,
       "parentTag": "us-gaap_FinanceLeaseLiability",
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseLiabilityNoncurrent": {
     "auth_ref": [
      "r515"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 4.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      },
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details": {
       "order": 0.0,
       "parentTag": "us-gaap_FinanceLeaseLiability",
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDue": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for finance lease.",
        "label": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
        "totalLabel": "Total future minimum lease payments, finance lease"
       }
      }
     },
     "localname": "FinanceLeaseLiabilityPaymentsDue",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 4.0,
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid after fifth 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": "After 2025, finance lease"
       }
      }
     },
     "localname": "FinanceLeaseLiabilityPaymentsDueAfterYearFive",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 1.0,
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid 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": "2021, finance lease"
       }
      }
     },
     "localname": "FinanceLeaseLiabilityPaymentsDueNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 5.0,
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in fifth 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": "2025, finance lease"
       }
      }
     },
     "localname": "FinanceLeaseLiabilityPaymentsDueYearFive",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 2.0,
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid 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": "2024, finance lease"
       }
      }
     },
     "localname": "FinanceLeaseLiabilityPaymentsDueYearFour",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 3.0,
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid 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": "2023, finance lease"
       }
      }
     },
     "localname": "FinanceLeaseLiabilityPaymentsDueYearThree",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 0.0,
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid 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": "2022, finance lease"
       }
      }
     },
     "localname": "FinanceLeaseLiabilityPaymentsDueYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount": {
     "auth_ref": [
      "r531"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for finance lease.",
        "label": "us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount",
        "negatedLabel": "Less interest, finance lease"
       }
      }
     },
     "localname": "FinanceLeaseLiabilityUndiscountedExcessAmount",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeasePrincipalPayments": {
     "auth_ref": [
      "r517",
      "r526"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 1.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": "Financing cash flows from finance leases",
        "negatedLabel": "Principal repayments of finance lease obligations"
       }
      }
     },
     "localname": "FinanceLeasePrincipalPayments",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseRightOfUseAsset": {
     "auth_ref": [
      "r514"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 2.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseRightOfUseAssetAmortization": {
     "auth_ref": [
      "r516",
      "r523",
      "r532"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details": {
       "order": 2.0,
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization expense attributable to right-of-use asset from finance lease.",
        "label": "Amortization of right-of-use assets"
       }
      }
     },
     "localname": "FinanceLeaseRightOfUseAssetAmortization",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent": {
     "auth_ref": [
      "r529",
      "r532"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average discount rate for finance lease calculated at point in time.",
        "label": "Weighted Average Discount Rate - finance leases"
       }
      }
     },
     "localname": "FinanceLeaseWeightedAverageDiscountRatePercent",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1": {
     "auth_ref": [
      "r528",
      "r532"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining lease term for finance lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Weighted Average Remaining Lease Term - finance leases (years) (Year)"
       }
      }
     },
     "localname": "FinanceLeaseWeightedAverageRemainingLeaseTerm1",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_FinancialInstrumentAxis": {
     "auth_ref": [
      "r203",
      "r207",
      "r221",
      "r222",
      "r223",
      "r224",
      "r225",
      "r226",
      "r227",
      "r228",
      "r229",
      "r537",
      "r538",
      "r539",
      "r540",
      "r541",
      "r542",
      "r543",
      "r544",
      "r545",
      "r546",
      "r547",
      "r548",
      "r549",
      "r550",
      "r551",
      "r552",
      "r553",
      "r554",
      "r555",
      "r556",
      "r557",
      "r558",
      "r559",
      "r560",
      "r561",
      "r562",
      "r563",
      "r564",
      "r565",
      "r566"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of financial instrument.",
        "label": "Financial Instrument [Axis]"
       }
      }
     },
     "localname": "FinancialInstrumentAxis",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-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)",
        "terseLabel": "Finite-Lived Intangible Asset, Useful Life (Year)"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization": {
     "auth_ref": [
      "r247"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/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 asset, excluding financial asset and goodwill, lacking physical substance with finite life expected to be recognized after fifth 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_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive",
        "terseLabel": "Thereafter"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths": {
     "auth_ref": [
      "r249"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/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 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": "2021"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive": {
     "auth_ref": [
      "r249"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/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 assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in fifth 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_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive",
        "terseLabel": "2025"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFive",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour": {
     "auth_ref": [
      "r249"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/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 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": "2024"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFour",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree": {
     "auth_ref": [
      "r249"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/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 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": "2023"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearThree",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo": {
     "auth_ref": [
      "r249"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/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 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": "2022"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": {
     "auth_ref": [
      "r243",
      "r244",
      "r247",
      "r250",
      "r569",
      "r573"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsGross": {
     "auth_ref": [
      "r247",
      "r573"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain": {
     "auth_ref": [
      "r243",
      "r246"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsNet": {
     "auth_ref": [
      "r247",
      "r569"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1": {
     "auth_ref": [
      "r569"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock": {
     "auth_ref": [
      "r99",
      "r512"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for (1) transactions denominated in a currency other than the reporting enterprise's functional currency, (2) translating foreign currency financial statements that are incorporated into the financial statements of the reporting enterprise by consolidation, combination, or the equity method of accounting, and (3) remeasurement of the financial statements of a foreign reporting enterprise in a hyperinflationary economy.",
        "label": "Foreign Currency Transactions and Translations Policy [Policy Text Block]"
       }
      }
     },
     "localname": "ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ForeignPlanMember": {
     "auth_ref": [
      "r361",
      "r365",
      "r371"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Location of employer sponsoring plan, designed to provide retirement benefits, not determined as principal place of business. Includes, but is not limited to, defined benefit and defined contribution plans.",
        "label": "Foreign Plan [Member]"
       }
      }
     },
     "localname": "ForeignPlanMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_GainLossOnSaleOfBusiness": {
     "auth_ref": [
      "r92",
      "r492"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 11.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of gain (loss) from sale and disposal of integrated set of activities and assets capable of being conducted and managed for purpose of providing return in form of dividend, lower cost, or other economic benefit to investor, owner, member and participant.",
        "label": "us-gaap_GainLossOnSaleOfBusiness",
        "negatedLabel": "Gain on sale of businesses"
       }
      }
     },
     "localname": "GainLossOnSaleOfBusiness",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GeneralAndAdministrativeExpense": {
     "auth_ref": [
      "r75"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 2.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GeneralAndAdministrativeExpenseMember": {
     "auth_ref": [
      "r72"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Primary financial statement caption encompassing general and administrative expense.",
        "label": "General and Administrative Expense [Member]"
       }
      }
     },
     "localname": "GeneralAndAdministrativeExpenseMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_Goodwill": {
     "auth_ref": [
      "r234",
      "r236",
      "r575"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 6.0,
       "parentTag": "us-gaap_Assets",
       "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, balance as of the end of the period",
        "periodStartLabel": "Goodwill, balance as of the beginning of the period"
       }
      }
     },
     "localname": "Goodwill",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillAcquiredDuringPeriod": {
     "auth_ref": [
      "r237"
     ],
     "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"
       }
      }
     },
     "localname": "GoodwillAcquiredDuringPeriod",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock": {
     "auth_ref": [
      "r253"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy": {
     "auth_ref": [
      "r99",
      "r239"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for goodwill. This accounting policy also may address how an entity assesses and measures impairment of goodwill, how reporting units are determined, how goodwill is allocated to such units, and how the fair values of the reporting units are determined.",
        "label": "Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "GoodwillAndIntangibleAssetsGoodwillPolicy",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsIntangibleAssetsPolicy": {
     "auth_ref": [
      "r99",
      "r245"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for intangible assets. This accounting policy may address both intangible assets subject to amortization and those that are not. The following also may be disclosed: (1) a description of intangible assets (2) the estimated useful lives of those assets (3) the amortization method used (4) how the entity assesses and measures impairment of such assets (5) how future cash flows are estimated (6) how the fair values of such asset are determined.",
        "label": "Goodwill and Intangible Assets, Intangible Assets, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "GoodwillAndIntangibleAssetsIntangibleAssetsPolicy",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GoodwillImpairmentLoss": {
     "auth_ref": [
      "r92",
      "r235",
      "r238",
      "r240"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of loss from the write-down 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_GoodwillImpairmentLoss",
        "terseLabel": "Goodwill, Impairment Loss"
       }
      }
     },
     "localname": "GoodwillImpairmentLoss",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GrossProfit": {
     "auth_ref": [
      "r73",
      "r102",
      "r161",
      "r166",
      "r169",
      "r172",
      "r175",
      "r211",
      "r502"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 1.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecurities": {
     "auth_ref": [
      "r195",
      "r197",
      "r581"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/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 amortized cost (held-to-maturity).",
        "label": "Amortized Cost",
        "totalLabel": "Total marketable securities"
       }
      }
     },
     "localname": "HeldToMaturitySecurities",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain": {
     "auth_ref": [
      "r199",
      "r205"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss": {
     "auth_ref": [
      "r200",
      "r206"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount": {
     "auth_ref": [
      "r202",
      "r592"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details": {
       "order": 1.0,
       "parentTag": "us-gaap_HeldToMaturitySecurities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of investment in debt security measured at amortized cost (held-to-maturity), with single maturity date and allocated without single maturity date, maturing in second through fifth 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": "Due after one year through five years"
       }
      }
     },
     "localname": "HeldToMaturitySecuritiesDebtMaturitiesAfterOneThroughFiveYearsNetCarryingAmount",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount": {
     "auth_ref": [
      "r201",
      "r591"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details": {
       "order": 0.0,
       "parentTag": "us-gaap_HeldToMaturitySecurities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of investment in debt security measured at amortized cost (held-to-maturity), with single maturity date and allocated without single maturity date, maturing 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": "Due in one year or less"
       }
      }
     },
     "localname": "HeldToMaturitySecuritiesDebtMaturitiesWithinOneYearNetCarryingAmount",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesFairValue": {
     "auth_ref": [
      "r198",
      "r204",
      "r581"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesTextBlock": {
     "auth_ref": [
      "r203",
      "r207",
      "r208"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of information about investment in debt security measured at amortized cost (held-to-maturity).",
        "label": "Debt Securities, Held-to-maturity [Table Text Block]"
       }
      }
     },
     "localname": "HeldToMaturitySecuritiesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock": {
     "auth_ref": [
      "r99",
      "r254",
      "r261"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for recognizing and measuring the impairment of long-lived assets. An entity also may disclose its accounting policy for long-lived assets to be sold. This policy excludes goodwill and intangible assets.",
        "label": "Impairment or Disposal of Long-Lived Assets, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic": {
     "auth_ref": [
      "r104",
      "r465"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details": {
       "order": 0.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The portion of earnings or loss from continuing operations before income taxes that is attributable to domestic operations.",
        "label": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
        "terseLabel": "Domestic"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest": {
     "auth_ref": [
      "r67",
      "r161",
      "r166",
      "r169",
      "r172",
      "r175",
      "r574",
      "r583",
      "r589",
      "r608"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 0.0,
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": 1.0
      },
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign": {
     "auth_ref": [
      "r104",
      "r465"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The portion of earnings or loss from continuing operations before income taxes that is attributable to foreign operations, which is defined as Income or Loss generated from operations located outside the entity's country of domicile.",
        "label": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign",
        "terseLabel": "Foreign"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeStatementAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Statement [Abstract]"
       }
      }
     },
     "localname": "IncomeStatementAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationAxis": {
     "auth_ref": [
      "r259"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by location in the income statement.",
        "label": "Income Statement Location [Axis]"
       }
      }
     },
     "localname": "IncomeStatementLocationAxis",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Location in the income statement.",
        "label": "Income Statement Location [Domain]"
       }
      }
     },
     "localname": "IncomeStatementLocationDomain",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeTaxDisclosureTextBlock": {
     "auth_ref": [
      "r436",
      "r442",
      "r448",
      "r460",
      "r467",
      "r469",
      "r470",
      "r473"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r103",
      "r122",
      "r123",
      "r159",
      "r434",
      "r461",
      "r468",
      "r609"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 1.0,
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": -1.0
      },
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "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",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "IncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxPolicyTextBlock": {
     "auth_ref": [
      "r65",
      "r99",
      "r430",
      "r431",
      "r442",
      "r443",
      "r447",
      "r454",
      "r630"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for income taxes, which may include its accounting policies for recognizing and measuring deferred tax assets and liabilities and related valuation allowances, recognizing investment tax credits, operating loss carryforwards, tax credit carryforwards, and other carryforwards, methodologies for determining its effective income tax rate and the characterization of interest and penalties in the financial statements.",
        "label": "Income Tax, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "IncomeTaxPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance": {
     "auth_ref": [
      "r435"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to increase (decrease) in the valuation allowance for deferred tax assets.",
        "label": "Valuation Allowance"
       }
      }
     },
     "localname": "IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxesPaid": {
     "auth_ref": [
      "r89",
      "r96"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of cash paid during the current period to foreign, federal, state, and local authorities as taxes on income.",
        "label": "Cash paid for taxes"
       }
      }
     },
     "localname": "IncomeTaxesPaid",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxesReceivable": {
     "auth_ref": [
      "r47",
      "r582",
      "r603"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsPayable": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 6.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsReceivable": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 8.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 7.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInInventories": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 10.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInOperatingCapitalAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Changes in operating assets and liabilities, net of acquisitions:"
       }
      }
     },
     "localname": "IncreaseDecreaseInOperatingCapitalAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncreaseDecreaseInOtherOperatingLiabilities": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 0.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements": {
     "auth_ref": [
      "r127",
      "r128",
      "r129",
      "r133"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-4-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_InterestPaidNet": {
     "auth_ref": [
      "r86",
      "r88",
      "r96"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash paid for interest, excluding capitalized interest, classified as operating activity. Includes, but is not limited to, payment to settle zero-coupon bond for accreted interest of debt discount and debt instrument with insignificant coupon interest rate in relation to effective interest rate of borrowing attributable to accreted interest of debt discount.",
        "label": "Cash paid for interest"
       }
      }
     },
     "localname": "InterestPaidNet",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InternalUseSoftwarePolicy": {
     "auth_ref": [
      "r99",
      "r251",
      "r252"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for costs incurred when both (1) the software is acquired, internally developed, or modified solely to meet the entity's internal needs, and (2) during the software's development or modification, no substantive plan exists or is being developed to market the software externally.",
        "label": "Internal Use Software, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "InternalUseSoftwarePolicy",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InventoryDisclosureTextBlock": {
     "auth_ref": [
      "r233"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InventoryGross": {
     "auth_ref": [
      "r48"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-9-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryNet": {
     "auth_ref": [
      "r4",
      "r48"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 3.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      },
      "http://www.protolabs.com/20201231/role/statement-note-9-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryPolicyTextBlock": {
     "auth_ref": [
      "r11",
      "r49",
      "r99",
      "r140",
      "r230",
      "r231",
      "r233"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of inventory accounting policy for inventory classes, including, but not limited to, basis for determining inventory amounts, methods by which amounts are added and removed from inventory classes, loss recognition on impairment of inventories, and situations in which inventories are stated above cost.",
        "label": "Inventory, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "InventoryPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InventoryValuationReserves": {
     "auth_ref": [
      "r48",
      "r106",
      "r232"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-9-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InvestmentTextBlock": {
     "auth_ref": [
      "r209",
      "r210",
      "r212",
      "r213"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for investment.",
        "label": "Investment [Text Block]"
       }
      }
     },
     "localname": "InvestmentTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_Land": {
     "auth_ref": [
      "r9",
      "r37"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 1.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before accumulated depletion of real estate held for productive use, excluding land held for sale.",
        "label": "Land"
       }
      }
     },
     "localname": "Land",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LandBuildingsAndImprovementsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Real estate held and additions or improvements to real estate held and structures used in the conduct of business.",
        "label": "Land, Buildings and Improvements [Member]"
       }
      }
     },
     "localname": "LandBuildingsAndImprovementsMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_LeaseContractualTermAxis": {
     "auth_ref": [
      "r522"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by contractual term of lease arrangement.",
        "label": "Lease Contractual Term [Axis]"
       }
      }
     },
     "localname": "LeaseContractualTermAxis",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LeaseContractualTermDomain": {
     "auth_ref": [
      "r522"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Contractual term of lease arrangement.",
        "label": "Lease Contractual Term [Domain]"
       }
      }
     },
     "localname": "LeaseContractualTermDomain",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_LeaseCost": {
     "auth_ref": [
      "r530",
      "r532"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lease cost recognized by lessee for lease contract.",
        "label": "us-gaap_LeaseCost",
        "totalLabel": "Total lease cost"
       }
      }
     },
     "localname": "LeaseCost",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LeaseholdImprovementsGross": {
     "auth_ref": [
      "r10",
      "r256"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 5.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before accumulated depreciation of additions or improvements to assets held under a lease arrangement.",
        "label": "Leasehold improvements"
       }
      }
     },
     "localname": "LeaseholdImprovementsGross",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LegalMattersAndContingenciesTextBlock": {
     "auth_ref": [
      "r266"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for legal proceedings, legal contingencies, litigation, regulatory and environmental matters and other contingencies.",
        "label": "Legal Matters and Contingencies [Text Block]"
       }
      }
     },
     "localname": "LegalMattersAndContingenciesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-16-litigation"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LesseeLeasesPolicyTextBlock": {
     "auth_ref": [
      "r520"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for leasing arrangement entered into by lessee.",
        "label": "Lessee, Leases [Policy Text Block]"
       }
      }
     },
     "localname": "LesseeLeasesPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease.",
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
        "totalLabel": "Total future minimum lease payments, operating lease"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDue",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 4.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease due after fifth 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": "After 2025, operating lease"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 1.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid 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": "2021, operating lease"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 5.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fifth 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": "2025, operating lease"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFive",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 2.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid 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": "2024, operating lease"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFour",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 3.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid 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": "2023, operating lease"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details": {
       "order": 0.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid 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": "2022, operating lease"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount": {
     "auth_ref": [
      "r531"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease.",
        "label": "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount",
        "negatedLabel": "Less interest, operating lease"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityUndiscountedExcessAmount",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseTermOfContract": {
     "auth_ref": [
      "r521"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Term of lessee's operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "us-gaap_LesseeOperatingLeaseTermOfContract",
        "terseLabel": "Lessee, Operating Lease, Term of Contract (Year)"
       }
      }
     },
     "localname": "LesseeOperatingLeaseTermOfContract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_Liabilities": {
     "auth_ref": [
      "r41",
      "r102",
      "r168",
      "r211",
      "r489",
      "r493",
      "r494",
      "r502"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 0.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesAndStockholdersEquity": {
     "auth_ref": [
      "r27",
      "r102",
      "r211",
      "r502",
      "r580",
      "r601"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesCurrent": {
     "auth_ref": [
      "r44",
      "r102",
      "r211",
      "r489",
      "r493",
      "r494",
      "r502"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 2.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesCurrentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current liabilities"
       }
      }
     },
     "localname": "LiabilitiesCurrentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LineOfCredit": {
     "auth_ref": [
      "r16",
      "r579",
      "r596"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The carrying value as of the balance sheet date of the current and noncurrent portions of long-term obligations drawn from a line of credit, which is a bank's commitment to make loans up to a specific amount. Examples of items that might be included in the application of this element may consist of letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to a maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line. Includes short-term obligations that would normally be classified as current liabilities but for which (a) postbalance sheet date issuance of a long term obligation to refinance the short term obligation on a long term basis, or (b) the enterprise has entered into a financing agreement that clearly permits the enterprise to refinance the short-term obligation on a long term basis and the following conditions are met (1) the agreement does not expire within 1 year and is not cancelable by the lender except for violation of an objectively determinable provision, (2) no violation exists at the BS date, and (3) the lender has entered into the financing agreement is expected to be financially capable of honoring the agreement.",
        "label": "us-gaap_LineOfCredit",
        "terseLabel": "Long-term Line of Credit, Total"
       }
      }
     },
     "localname": "LineOfCredit",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock": {
     "auth_ref": [
      "r181"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_MachineryAndEquipmentGross": {
     "auth_ref": [
      "r10",
      "r256"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 3.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before accumulated depreciation of tangible personal property used to produce goods and services, including, but is not limited to, tools, dies and molds, computer and office equipment.",
        "label": "Machinery and equipment"
       }
      }
     },
     "localname": "MachineryAndEquipmentGross",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_MarketableSecuritiesCurrent": {
     "auth_ref": [
      "r6",
      "r42"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 1.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_MarketableSecuritiesNoncurrent": {
     "auth_ref": [
      "r35"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_MarketableSecuritiesPolicy": {
     "auth_ref": [
      "r593"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for investment classified as marketable security.",
        "label": "Marketable Securities, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "MarketableSecuritiesPolicy",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_MarketingRelatedIntangibleAssetsMember": {
     "auth_ref": [
      "r476"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_MoneyMarketFundsAtCarryingValue": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details": {
       "order": 0.0,
       "parentTag": "us-gaap_AssetsFairValueDisclosure",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Investment in short-term money-market instruments (such as commercial paper, banker's acceptances, repurchase agreements, government securities, certificates of deposit, and so forth) which are highly liquid (that is, readily convertible to known amounts of cash) and so near their maturity that they present an insignificant risk of changes in value because of changes in interest rates. Generally, only investments with original maturities of three months or less qualify as cash equivalents by definition. Original maturity means an original maturity to the entity holding the investment. For example, both a three-month US Treasury bill and a three-year Treasury note purchased three months from maturity qualify as cash equivalents. However, a Treasury note purchased three-years ago does not become a cash equivalent when its remaining maturity is three months.",
        "label": "Money market mutual funds"
       }
      }
     },
     "localname": "MoneyMarketFundsAtCarryingValue",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivities": {
     "auth_ref": [
      "r87"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 3.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Financing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInFinancingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivities": {
     "auth_ref": [
      "r87"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 1.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Investing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInInvestingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivities": {
     "auth_ref": [
      "r87",
      "r90",
      "r93"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 0.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInOperatingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetIncomeLoss": {
     "auth_ref": [
      "r1",
      "r59",
      "r62",
      "r68",
      "r93",
      "r102",
      "r112",
      "r116",
      "r117",
      "r118",
      "r119",
      "r122",
      "r123",
      "r130",
      "r161",
      "r166",
      "r169",
      "r172",
      "r175",
      "r211",
      "r502",
      "r584",
      "r604"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 5.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      },
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 1.0,
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0
      }
     },
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact.",
        "label": "New Accounting Pronouncements, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "NewAccountingPronouncementsPolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_NoncompeteAgreementsMember": {
     "auth_ref": [
      "r477"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OperatingExpenses": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 0.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingExpensesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating expenses"
       }
      }
     },
     "localname": "OperatingExpensesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_OperatingIncomeLoss": {
     "auth_ref": [
      "r161",
      "r166",
      "r169",
      "r172",
      "r175"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "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": "us-gaap_OperatingIncomeLoss",
        "terseLabel": "Income from operations",
        "totalLabel": "Income from operations"
       }
      }
     },
     "localname": "OperatingIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseCost": {
     "auth_ref": [
      "r524",
      "r532"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details": {
       "order": 0.0,
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of single lease cost, calculated by allocation of remaining cost of lease over remaining lease term. Includes, but is not limited to, single lease cost, after impairment of right-of-use asset, calculated by amortization of remaining right-of-use asset and accretion of lease liability.",
        "label": "Operating lease cost"
       }
      }
     },
     "localname": "OperatingLeaseCost",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiability": {
     "auth_ref": [
      "r515"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease.",
        "label": "Present value of lease liabilities, operating lease",
        "terseLabel": "Operating Lease, Liability, Total",
        "totalLabel": "Total operating lease liabilities"
       }
      }
     },
     "localname": "OperatingLeaseLiability",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityCurrent": {
     "auth_ref": [
      "r515"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 0.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      },
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details": {
       "order": 1.0,
       "parentTag": "us-gaap_OperatingLeaseLiability",
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityNoncurrent": {
     "auth_ref": [
      "r515"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 1.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      },
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details": {
       "order": 0.0,
       "parentTag": "us-gaap_OperatingLeaseLiability",
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeasePayments": {
     "auth_ref": [
      "r519",
      "r526"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use.",
        "label": "Operating cash flows from operating leases"
       }
      }
     },
     "localname": "OperatingLeasePayments",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseRightOfUseAsset": {
     "auth_ref": [
      "r514"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 3.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",
        "terseLabel": "Operating Lease, Right-of-Use Asset"
       }
      }
     },
     "localname": "OperatingLeaseRightOfUseAsset",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent": {
     "auth_ref": [
      "r529",
      "r532"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average discount rate for operating lease calculated at point in time.",
        "label": "Weighted Average Discount Rate - operating leases"
       }
      }
     },
     "localname": "OperatingLeaseWeightedAverageDiscountRatePercent",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1": {
     "auth_ref": [
      "r528",
      "r532"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Weighted Average Remaining Lease Term - operating leases (years) (Year)"
       }
      }
     },
     "localname": "OperatingLeaseWeightedAverageRemainingLeaseTerm1",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_OperatingLossCarryforwards": {
     "auth_ref": [
      "r449"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of operating loss carryforward, before tax effects, available to reduce future taxable income under enacted tax laws.",
        "label": "us-gaap_OperatingLossCarryforwards",
        "terseLabel": "Operating Loss Carryforwards, Total"
       }
      }
     },
     "localname": "OperatingLossCarryforwards",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingSegmentsMember": {
     "auth_ref": [
      "r165",
      "r166",
      "r167",
      "r168",
      "r169",
      "r175"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock": {
     "auth_ref": [
      "r2",
      "r495"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-1-nature-of-business"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_OtherAssetsNoncurrent": {
     "auth_ref": [
      "r39"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 5.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax": {
     "auth_ref": [
      "r57",
      "r66",
      "r504",
      "r506",
      "r510"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details": {
       "order": 0.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTax",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after tax, before reclassification adjustments of other comprehensive income (loss).",
        "label": "Other comprehensive (loss) income before reclassifications"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossBeforeReclassificationsNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax": {
     "auth_ref": [
      "r52"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 0.0,
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0
      }
     },
     "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 adjustments"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTax": {
     "auth_ref": [
      "r60",
      "r63",
      "r66",
      "r69",
      "r268",
      "r504",
      "r509",
      "r510",
      "r585",
      "r605"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after tax and reclassification adjustments of other comprehensive income (loss).",
        "label": "us-gaap_OtherComprehensiveIncomeLossNetOfTax",
        "totalLabel": "Net current-period other comprehensive (loss) income"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherIntangibleAssetsNet": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 1.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherLiabilitiesNoncurrent": {
     "auth_ref": [
      "r45"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 0.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherNoncashIncomeExpense": {
     "auth_ref": [
      "r93"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 9.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherNonoperatingIncomeExpense": {
     "auth_ref": [
      "r76"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "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, net"
       }
      }
     },
     "localname": "OtherNonoperatingIncomeExpense",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsForRepurchaseOfCommonStock": {
     "auth_ref": [
      "r84"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 3.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation": {
     "auth_ref": [
      "r84"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 2.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesGross": {
     "auth_ref": [
      "r80",
      "r483"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired": {
     "auth_ref": [
      "r80"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 3.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "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"
       }
      }
     },
     "localname": "PaymentsToAcquireBusinessesNetOfCashAcquired",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireHeldToMaturitySecurities": {
     "auth_ref": [
      "r79",
      "r196"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 2.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow through purchase of long-term held-to-maturity securities.",
        "label": "us-gaap_PaymentsToAcquireHeldToMaturitySecurities",
        "negatedLabel": "Purchases of marketable securities"
       }
      }
     },
     "localname": "PaymentsToAcquireHeldToMaturitySecurities",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireOtherInvestments": {
     "auth_ref": [
      "r82"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 0.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": {
     "auth_ref": [
      "r81"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 4.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",
        "terseLabel": "Expenditures for additions to long-lived assets"
       }
      }
     },
     "localname": "PaymentsToAcquirePropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock": {
     "auth_ref": [
      "r309",
      "r311",
      "r317",
      "r335",
      "r337",
      "r338",
      "r339",
      "r340",
      "r341",
      "r356",
      "r358",
      "r359",
      "r360",
      "r373"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for retirement benefits.",
        "label": "Retirement Benefits [Text Block]"
       }
      }
     },
     "localname": "PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans"
     ],
     "xbrltype": "textBlockItemType"
    },
    "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PlanNameAxis": {
     "auth_ref": [
      "r377",
      "r410"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PolicyTextBlockAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_PolicyTextBlockAbstract",
        "terseLabel": "Accounting Policies"
       }
      }
     },
     "localname": "PolicyTextBlockAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PreferredStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r19"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_PreferredStockSharesAuthorized": {
     "auth_ref": [
      "r19"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockSharesIssued": {
     "auth_ref": [
      "r19"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockValue": {
     "auth_ref": [
      "r19"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 1.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 December 31, 2020 and December 31, 2019, respectively"
       }
      }
     },
     "localname": "PreferredStockValue",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PrepaidExpenseAndOtherAssetsCurrent": {
     "auth_ref": [
      "r7",
      "r32",
      "r33"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 2.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromDivestitureOfBusinesses": {
     "auth_ref": [
      "r78"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 5.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash inflow associated with the amount received from the sale of a portion of the company's business, for example a segment, division, branch or other business, during the period.",
        "label": "Proceeds from sale of businesses"
       }
      }
     },
     "localname": "ProceedsFromDivestitureOfBusinesses",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions": {
     "auth_ref": [
      "r83",
      "r411"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromSaleAndMaturityOfMarketableSecurities": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 1.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash inflow associated with the aggregate amount received by the entity through sale or maturity of marketable securities  (held-to-maturity or available-for-sale) during the period.",
        "label": "Proceeds from maturities of marketable securities"
       }
      }
     },
     "localname": "ProceedsFromSaleAndMaturityOfMarketableSecurities",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentByTypeAxis": {
     "auth_ref": [
      "r38",
      "r258"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of long-lived, physical assets used to produce goods and services and not intended for resale.",
        "label": "Long-Lived Tangible Asset [Axis]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentByTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock": {
     "auth_ref": [
      "r262",
      "r631",
      "r632",
      "r633"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.",
        "label": "Property, Plant and Equipment Disclosure [Text Block]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentGross": {
     "auth_ref": [
      "r37",
      "r256"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details": {
       "order": 1.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.",
        "label": "us-gaap_PropertyPlantAndEquipmentGross",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentGross",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentNet": {
     "auth_ref": [
      "r13",
      "r14",
      "r258",
      "r602"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 7.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      },
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "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",
        "totalLabel": "Property and equipment, net"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentNet",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentPolicyTextBlock": {
     "auth_ref": [
      "r36",
      "r99",
      "r258",
      "r631",
      "r632"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.",
        "label": "Property, Plant and Equipment, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTextBlock": {
     "auth_ref": [
      "r13",
      "r258"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation.",
        "label": "Property, Plant and Equipment [Table Text Block]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTypeDomain": {
     "auth_ref": [
      "r13",
      "r256"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Listing of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale. Examples include land, buildings, machinery and equipment, and other types of furniture and equipment including, but not limited to, office equipment, furniture and fixtures, and computer equipment and software.",
        "label": "Long-Lived Tangible Asset [Domain]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentUsefulLife": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Useful life of long lived, physical assets used in the normal conduct of business and not intended for resale, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days. Examples include, but not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment.",
        "label": "us-gaap_PropertyPlantAndEquipmentUsefulLife",
        "terseLabel": "Property, Plant and Equipment, Useful Life (Year)"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax": {
     "auth_ref": [
      "r57",
      "r58",
      "r66",
      "r504",
      "r508",
      "r510"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after tax of reclassification adjustments of other comprehensive income (loss).",
        "label": "Amounts reclassified from accumulated other comprehensive income (loss)"
       }
      }
     },
     "localname": "ReclassificationFromAccumulatedOtherComprehensiveIncomeCurrentPeriodNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RepaymentsOfLongTermDebt": {
     "auth_ref": [
      "r85"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 4.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash outflow for debt initially having maturity due after one year or beyond the normal operating cycle, if longer.",
        "label": "us-gaap_RepaymentsOfLongTermDebt",
        "negatedLabel": "Payments on debt"
       }
      }
     },
     "localname": "RepaymentsOfLongTermDebt",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ResearchAndDevelopmentExpense": {
     "auth_ref": [
      "r427",
      "r644"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "order": 1.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",
        "terseLabel": "Research and Development Expense, Total"
       }
      }
     },
     "localname": "ResearchAndDevelopmentExpense",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ResearchAndDevelopmentExpenseMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Primary financial statement caption in which the reported facts about research and development expense have been included.",
        "label": "Research and Development Expense [Member]"
       }
      }
     },
     "localname": "ResearchAndDevelopmentExpenseMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ResearchAndDevelopmentExpensePolicy": {
     "auth_ref": [
      "r99",
      "r427"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for costs it has 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.",
        "label": "Research and Development Expense, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "ResearchAndDevelopmentExpensePolicy",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RestrictedStockMember": {
     "auth_ref": [
      "r134"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RetainedEarningsAccumulatedDeficit": {
     "auth_ref": [
      "r23",
      "r269",
      "r419",
      "r600",
      "r621",
      "r626"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 2.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RetainedEarningsMember": {
     "auth_ref": [
      "r108",
      "r109",
      "r110",
      "r113",
      "r121",
      "r123",
      "r217",
      "r416",
      "r417",
      "r418",
      "r458",
      "r459",
      "r617",
      "r619"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RetirementPlanSponsorLocationAxis": {
     "auth_ref": [
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r297",
      "r298",
      "r299",
      "r300",
      "r301",
      "r302",
      "r303",
      "r304",
      "r305",
      "r306",
      "r307",
      "r308",
      "r309",
      "r310",
      "r312",
      "r313",
      "r314",
      "r315",
      "r316",
      "r317",
      "r318",
      "r319",
      "r320",
      "r321",
      "r322",
      "r323",
      "r324",
      "r325",
      "r326",
      "r327",
      "r328",
      "r329",
      "r330",
      "r331",
      "r332",
      "r333",
      "r334",
      "r336",
      "r339",
      "r343",
      "r344",
      "r345",
      "r346",
      "r347",
      "r348",
      "r349",
      "r350",
      "r351",
      "r352",
      "r353",
      "r354",
      "r355",
      "r361",
      "r365",
      "r371"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by location of employer sponsoring plan designed to provide retirement benefits. Includes, but is not limited to, defined benefit and defined contribution plans.",
        "label": "Retirement Plan Sponsor Location [Axis]"
       }
      }
     },
     "localname": "RetirementPlanSponsorLocationAxis",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RetirementPlanSponsorLocationDomain": {
     "auth_ref": [
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r297",
      "r298",
      "r299",
      "r300",
      "r301",
      "r302",
      "r303",
      "r304",
      "r305",
      "r306",
      "r307",
      "r308",
      "r309",
      "r310",
      "r312",
      "r313",
      "r314",
      "r315",
      "r316",
      "r317",
      "r318",
      "r319",
      "r320",
      "r321",
      "r322",
      "r323",
      "r324",
      "r325",
      "r326",
      "r327",
      "r328",
      "r329",
      "r330",
      "r331",
      "r332",
      "r333",
      "r334",
      "r336",
      "r339",
      "r343",
      "r344",
      "r345",
      "r346",
      "r347",
      "r348",
      "r349",
      "r350",
      "r351",
      "r352",
      "r353",
      "r354",
      "r355",
      "r361",
      "r365",
      "r371"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Location of employer sponsoring plan designed to provide retirement benefits. Includes, but is not limited to, defined benefit and defined contribution plans.",
        "label": "Retirement Plan Sponsor Location [Domain]"
       }
      }
     },
     "localname": "RetirementPlanSponsorLocationDomain",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RetirementPlanTypeAxis": {
     "auth_ref": [
      "r285",
      "r286",
      "r287",
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r297",
      "r298",
      "r299",
      "r300",
      "r301",
      "r302",
      "r303",
      "r304",
      "r305",
      "r306",
      "r307",
      "r308",
      "r309",
      "r310",
      "r312",
      "r313",
      "r314",
      "r315",
      "r316",
      "r317",
      "r318",
      "r319",
      "r320",
      "r321",
      "r322",
      "r323",
      "r324",
      "r325",
      "r326",
      "r327",
      "r328",
      "r329",
      "r330",
      "r331",
      "r333",
      "r334",
      "r336",
      "r339",
      "r342",
      "r346",
      "r347",
      "r348",
      "r349",
      "r350",
      "r351",
      "r352",
      "r353",
      "r354",
      "r355",
      "r356",
      "r357",
      "r360",
      "r361",
      "r362",
      "r363",
      "r364",
      "r365",
      "r368",
      "r369",
      "r370",
      "r371"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of retirement benefit plan. Includes, but is not limited to, retirement benefit arrangement for defined benefit pension and other postretirement plans, retirement benefit arrangement for defined contribution pension and other postretirement plans, and special and contractual termination benefits payable upon retirement.",
        "label": "Retirement Plan Type [Axis]"
       }
      }
     },
     "localname": "RetirementPlanTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RetirementPlanTypeDomain": {
     "auth_ref": [
      "r285",
      "r286",
      "r287",
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r297",
      "r298",
      "r299",
      "r300",
      "r301",
      "r302",
      "r303",
      "r304",
      "r305",
      "r306",
      "r307",
      "r308",
      "r309",
      "r310",
      "r312",
      "r313",
      "r314",
      "r315",
      "r316",
      "r317",
      "r318",
      "r319",
      "r320",
      "r321",
      "r322",
      "r323",
      "r324",
      "r325",
      "r326",
      "r327",
      "r328",
      "r329",
      "r330",
      "r331",
      "r333",
      "r334",
      "r336",
      "r339",
      "r342",
      "r346",
      "r347",
      "r348",
      "r349",
      "r350",
      "r351",
      "r352",
      "r353",
      "r354",
      "r355",
      "r356",
      "r357",
      "r360",
      "r361",
      "r362",
      "r363",
      "r364",
      "r365",
      "r368",
      "r369",
      "r370",
      "r371"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Type of plan designed to provide participants with retirement benefits. Includes, but is not limited to, retirement benefit arrangement for defined benefit pension and other postretirement plans, retirement benefit arrangement for defined contribution pension and other postretirement plans, and special and contractual termination benefits payable upon retirement.",
        "label": "Retirement Plan Type [Domain]"
       }
      }
     },
     "localname": "RetirementPlanTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax": {
     "auth_ref": [
      "r152",
      "r153",
      "r165",
      "r170",
      "r171",
      "r177",
      "r178",
      "r183",
      "r278",
      "r279",
      "r568"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerTextBlock": {
     "auth_ref": [
      "r270",
      "r271",
      "r272",
      "r273",
      "r274",
      "r275",
      "r276",
      "r277",
      "r280",
      "r284"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts.",
        "label": "Revenue from Contract with Customer [Text Block]"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock": {
     "auth_ref": [
      "r180"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenueRecognitionPolicyTextBlock": {
     "auth_ref": [
      "r100",
      "r101"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for revenue. Includes revenue from contract with customer and from other sources.",
        "label": "Revenue [Policy Text Block]"
       }
      }
     },
     "localname": "RevenueRecognitionPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenuesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statements of Operations:"
       }
      }
     },
     "localname": "RevenuesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability": {
     "auth_ref": [
      "r527",
      "r532"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in right-of-use asset obtained in exchange for finance lease liability.",
        "label": "Lease assets obtained in exchange for new financing lease liabilities"
       }
      }
     },
     "localname": "RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability": {
     "auth_ref": [
      "r527",
      "r532"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in right-of-use asset obtained in exchange for operating lease liability.",
        "label": "Lease assets obtained in exchange for new operating lease liabilities"
       }
      }
     },
     "localname": "RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock": {
     "auth_ref": [
      "r407"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of cost recognized for award under share-based payment arrangement by plan. Includes, but is not limited to, related tax benefit.",
        "label": "Share-based Payment Arrangement, Cost by Plan [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock": {
     "auth_ref": [
      "r454"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the components of income tax expense attributable to continuing operations for each year presented including, but not limited to: current tax expense (benefit), deferred tax expense (benefit), investment tax credits, government grants, the benefits of operating loss carryforwards, tax expense that results from allocating certain tax benefits either directly to contributed capital or to reduce goodwill or other noncurrent intangible assets of an acquired entity, adjustments of a deferred tax liability or asset for enacted changes in tax laws or rates or a change in the tax status of the entity, and adjustments of the beginning-of-the-year balances of a valuation allowance because of a change in circumstances that causes a change in judgment about the realizability of the related deferred tax asset in future years.",
        "label": "Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock": {
     "auth_ref": [
      "r51"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock": {
     "auth_ref": [
      "r446"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the components of net deferred tax asset or liability recognized in an entity's statement of financial position, including the following: the total of all deferred tax liabilities, the total of all deferred tax assets, the total valuation allowance recognized for deferred tax assets.",
        "label": "Schedule of Deferred Tax Assets and Liabilities [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock": {
     "auth_ref": [
      "r133"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock": {
     "auth_ref": [
      "r435"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the reconciliation using percentage or dollar amounts of the reported amount of income tax expense attributable to continuing operations for the year to the amount of income tax expense that would result from applying domestic federal statutory tax rates to pretax income from continuing operations.",
        "label": "Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock": {
     "auth_ref": [
      "r243",
      "r246"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfGoodwillTextBlock": {
     "auth_ref": [
      "r239",
      "r241"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock": {
     "auth_ref": [
      "r104"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of income before income tax between domestic and foreign jurisdictions.",
        "label": "Schedule of Income before Income Tax, Domestic and Foreign [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfIncomeBeforeIncomeTaxDomesticAndForeignTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfInventoryCurrentTableTextBlock": {
     "auth_ref": [
      "r11",
      "r29",
      "r30",
      "r31"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock": {
     "auth_ref": [
      "r389"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock": {
     "auth_ref": [
      "r410"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of option exercise prices, by grouped ranges, including the upper and lower limits of the price range, the number of shares under option, weighted average exercise price and remaining contractual option terms.",
        "label": "Share-based Payment Arrangement, Option, Exercise Price Range [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock": {
     "auth_ref": [
      "r383",
      "r395",
      "r398"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock": {
     "auth_ref": [
      "r401"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock": {
     "auth_ref": [
      "r441",
      "r455"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the change in unrecognized tax benefits.",
        "label": "Schedule of Unrecognized Tax Benefits Roll Forward [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfUnrecognizedTaxBenefitsRollForwardTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock": {
     "auth_ref": [
      "r246"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SegmentDomain": {
     "auth_ref": [
      "r149",
      "r152",
      "r153",
      "r154",
      "r155",
      "r156",
      "r157",
      "r158",
      "r159",
      "r160",
      "r161",
      "r162",
      "r163",
      "r165",
      "r166",
      "r167",
      "r168",
      "r169",
      "r170",
      "r171",
      "r172",
      "r173",
      "r175",
      "r183",
      "r610"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SegmentReportingDisclosureTextBlock": {
     "auth_ref": [
      "r149",
      "r150",
      "r151",
      "r161",
      "r164",
      "r169",
      "r173",
      "r174",
      "r175",
      "r176",
      "r177",
      "r182",
      "r183",
      "r184"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SellingAndMarketingExpense": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income": {
       "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SellingAndMarketingExpenseMember": {
     "auth_ref": [
      "r72"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Primary financial statement caption encompassing selling and marketing expense.",
        "label": "Selling and Marketing Expense [Member]"
       }
      }
     },
     "localname": "SellingAndMarketingExpenseMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensation": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows": {
       "order": 3.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1": {
     "auth_ref": [
      "r378"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate": {
     "auth_ref": [
      "r410"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod": {
     "auth_ref": [
      "r388"
     ],
     "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",
        "negatedLabel": "Forfeited (in shares)",
        "negatedTerseLabel": "Forfeited (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r393"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod": {
     "auth_ref": [
      "r391"
     ],
     "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": "Granted (in shares)",
        "terseLabel": "Granted (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r391"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber": {
     "auth_ref": [
      "r390"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r390"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod": {
     "auth_ref": [
      "r392"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period.",
        "label": "Restrictions lapsed (in shares)",
        "negatedLabel": "Restrictions lapsed (in shares)",
        "negatedTerseLabel": "Restrictions lapsed (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r392"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate": {
     "auth_ref": [
      "r404"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate": {
     "auth_ref": [
      "r403"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate": {
     "auth_ref": [
      "r405"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant": {
     "auth_ref": [
      "r410"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The difference between the maximum number of shares (or other type of equity) authorized for issuance under the plan (including the effects of amendments and adjustments), and the sum of: 1) the number of shares (or other type of equity) already issued upon exercise of options or other equity-based awards under the plan; and 2) shares (or other type of equity) reserved for issuance on granting of outstanding awards, net of cancellations and forfeitures, if applicable.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Number of Shares Available for Grant (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber": {
     "auth_ref": [
      "r386"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice": {
     "auth_ref": [
      "r386"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue": {
     "auth_ref": [
      "r397"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of accumulated difference between fair value of underlying shares on dates of exercise and exercise price on options exercised (or share units converted) into shares.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercises in Period, Intrinsic Value"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod": {
     "auth_ref": [
      "r388"
     ],
     "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": "Cancelled (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r396"
     ],
     "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": "Weighted average grant date fair value (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue": {
     "auth_ref": [
      "r410"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount by which the current fair value of the underlying stock exceeds the exercise price of options outstanding.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Intrinsic Value"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber": {
     "auth_ref": [
      "r385",
      "r410"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of options outstanding, including both vested and non-vested options.",
        "label": "Options outstanding, vested and expected to vest, number outstanding (in shares)",
        "periodEndLabel": "Options outstanding (in shares)",
        "periodStartLabel": "Options outstanding (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice": {
     "auth_ref": [
      "r384"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan.",
        "label": "Options outstanding, vested and expected to vest, weighted average exercise price (in dollars per share)",
        "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": {
     "auth_ref": [
      "r375",
      "r380"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Award under share-based payment arrangement.",
        "label": "Award Type [Domain]"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-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": "Cancelled, weighted-average exercise price (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis": {
     "auth_ref": [
      "r400"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by range of option prices pertaining to options granted.",
        "label": "Exercise Price Range [Axis]"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain": {
     "auth_ref": [
      "r406"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Supplementary information on outstanding and exercisable share awards as of the balance sheet date which stratifies outstanding options by ranges of exercise prices.",
        "label": "Exercise Price Range [Domain]"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit": {
     "auth_ref": [
      "r406"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The floor of a customized range of exercise prices for purposes of disclosing shares potentially issuable under outstanding stock option awards on all stock option plans and other required information pertaining to awards in the customized range.",
        "label": "Range of exercise prices, lower limit (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions": {
     "auth_ref": [
      "r394"
     ],
     "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": "Options exercisable, number exercisable (in shares)",
        "periodEndLabel": "Performance stock (in shares)",
        "periodStartLabel": "Performance stock (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit": {
     "auth_ref": [
      "r406"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The ceiling of a customized range of exercise prices for purposes of disclosing shares potentially issuable under outstanding stock option awards on all stock option plans and other required information pertaining to awards in the customized range.",
        "label": "Range of exercise prices, upper limit (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod": {
     "auth_ref": [
      "r379"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1": {
     "auth_ref": [
      "r402",
      "r420"
     ],
     "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)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1": {
     "auth_ref": [
      "r410"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of difference between fair value of the underlying shares reserved for issuance and exercise price of vested portions of options outstanding and currently exercisable.",
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Intrinsic Value"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1": {
     "auth_ref": [
      "r410"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining contractual term for vested portions of options outstanding and currently exercisable or convertible, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Weighted Average Remaining Contractual Term (Year)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2": {
     "auth_ref": [
      "r399"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining contractual term for option awards outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term (Year)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1": {
     "auth_ref": [
      "r399"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining contractual term for fully vested and expected to vest options outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Options outstanding, vested and expected to vest, weighted average remaining contractual life (Year)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1": {
     "auth_ref": [
      "r382"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value of options vested. Excludes equity instruments other than options, for example, but not limited to, share units, stock appreciation rights, restricted stock.",
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested in Period, Fair Value"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1": {
     "auth_ref": [
      "r386"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average exercise price as of the balance sheet date for those equity-based payment arrangements exercisable and outstanding.",
        "label": "Options exercisable, weighted average exercise price (in dollars per share)"
       }
      }
     },
     "localname": "SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeExercisableOptionsWeightedAverageExercisePrice1",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_SignificantAccountingPoliciesTextBlock": {
     "auth_ref": [
      "r107"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_StatementBusinessSegmentsAxis": {
     "auth_ref": [
      "r0",
      "r149",
      "r152",
      "r153",
      "r154",
      "r155",
      "r156",
      "r157",
      "r158",
      "r159",
      "r160",
      "r161",
      "r162",
      "r163",
      "r165",
      "r166",
      "r167",
      "r168",
      "r169",
      "r170",
      "r171",
      "r172",
      "r173",
      "r175",
      "r183",
      "r239",
      "r260",
      "r263",
      "r264",
      "r610"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by business segments.",
        "label": "Segments [Axis]"
       }
      }
     },
     "localname": "StatementBusinessSegmentsAxis",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementEquityComponentsAxis": {
     "auth_ref": [
      "r46",
      "r108",
      "r109",
      "r110",
      "r113",
      "r121",
      "r123",
      "r141",
      "r217",
      "r268",
      "r269",
      "r416",
      "r417",
      "r418",
      "r458",
      "r459",
      "r504",
      "r505",
      "r506",
      "r507",
      "r508",
      "r510",
      "r617",
      "r618",
      "r619"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by component of equity.",
        "label": "Equity Components [Axis]"
       }
      }
     },
     "localname": "StatementEquityComponentsAxis",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20201231/role/statement-note-1-nature-of-business",
      "http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations",
      "http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-tables",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-tables",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables",
      "http://www.protolabs.com/20201231/role/statement-note-16-litigation",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-tables",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-tables",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-tables",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-tables",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-tables",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory-tables",
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "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/2020-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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementTable": {
     "auth_ref": [
      "r108",
      "r109",
      "r110",
      "r141",
      "r568"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets-parentheticals",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20201231/role/statement-note-1-nature-of-business",
      "http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations",
      "http://www.protolabs.com/20201231/role/statement-note-10-financing-obligations-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans",
      "http://www.protolabs.com/20201231/role/statement-note-11-employee-benefit-plans-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-information-about-stock-options-outstanding-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stockbased-compensation-expense-details",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-balance-sheet-information-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-maturities-of-operating-lease-liabilities-details",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-tables",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-weighted-average-remaining-terms-and-discount-rates-details",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-tables",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-components-of-income-loss-before-income-taxes-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-federal-statutory-income-tax-rate-to-effective-tax-rate-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-deferred-tax-assets-and-liabilities-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-significant-components-of-provision-for-income-taxes-details",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables",
      "http://www.protolabs.com/20201231/role/statement-note-16-litigation",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-depreciation-and-amortization-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-expenditures-for-additions-to-longlived-assets-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-tables",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-tables",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-tables",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-tables",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-components-of-property-and-equipment-details",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-tables",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory-inventory-details",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory-tables",
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation": {
     "auth_ref": [
      "r19",
      "r20",
      "r268",
      "r269"
     ],
     "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 (in shares)",
        "terseLabel": "Shares Issued, Shares, Share-based Payment Arrangement, after Forfeiture, Total (in shares)"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-details-textual"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": {
     "auth_ref": [
      "r19",
      "r20",
      "r268",
      "r269",
      "r387"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised": {
     "auth_ref": [
      "r46",
      "r268",
      "r269"
     ],
     "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"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockRepurchasedAndRetiredDuringPeriodShares": {
     "auth_ref": [
      "r19",
      "r20",
      "r268",
      "r269"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockRepurchasedAndRetiredDuringPeriodValue": {
     "auth_ref": [
      "r19",
      "r20",
      "r268",
      "r269"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquity": {
     "auth_ref": [
      "r20",
      "r25",
      "r26",
      "r102",
      "r193",
      "r211",
      "r502"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets": {
       "order": 1.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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets",
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-balance-sheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SubsequentEventMember": {
     "auth_ref": [
      "r511",
      "r534"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Identifies event that occurred after the balance sheet date but before financial statements are issued or available to be issued.",
        "label": "Subsequent Event [Member]"
       }
      }
     },
     "localname": "SubsequentEventMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SubsequentEventTypeAxis": {
     "auth_ref": [
      "r511",
      "r534"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by event that occurred after the balance sheet date but before financial statements are issued or available to be issued.",
        "label": "Subsequent Event Type [Axis]"
       }
      }
     },
     "localname": "SubsequentEventTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SubsequentEventTypeDomain": {
     "auth_ref": [
      "r511",
      "r534"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Event that occurred after the balance sheet date but before financial statements are issued or available to be issued.",
        "label": "Subsequent Event Type [Domain]"
       }
      }
     },
     "localname": "SubsequentEventTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events",
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SubsequentEventsTextBlock": {
     "auth_ref": [
      "r533",
      "r536"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for significant events or transactions that occurred after the balance sheet date through the date the financial statements were issued or the date the financial statements were available to be issued. Examples include: the sale of a capital stock issue, purchase of a business, settlement of litigation, catastrophic loss, significant foreign exchange rate changes, loans to insiders or affiliates, and transactions not in the ordinary course of business.",
        "label": "Subsequent Events [Text Block]"
       }
      }
     },
     "localname": "SubsequentEventsTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-18-subsequent-events"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SupplementalCashFlowInformationAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Supplemental cash flow disclosure"
       }
      }
     },
     "localname": "SupplementalCashFlowInformationAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-cash-flows"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-12-stockbased-compensation-tables",
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-tables",
      "http://www.protolabs.com/20201231/role/statement-note-14-accumulated-other-comprehensive-loss-tables",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-tables",
      "http://www.protolabs.com/20201231/role/statement-note-17-segment-reporting-tables",
      "http://www.protolabs.com/20201231/role/statement-note-3-revenue-tables",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-tables",
      "http://www.protolabs.com/20201231/role/statement-note-5-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20201231/role/statement-note-6-fair-value-measurements-tables",
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-tables",
      "http://www.protolabs.com/20201231/role/statement-note-8-property-and-equipment-tables",
      "http://www.protolabs.com/20201231/role/statement-note-9-inventory-tables"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TradeAndOtherAccountsReceivablePolicy": {
     "auth_ref": [
      "r187",
      "r188",
      "r189",
      "r190",
      "r192",
      "r194"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for accounts receivable.",
        "label": "Accounts Receivable [Policy Text Block]"
       }
      }
     },
     "localname": "TradeAndOtherAccountsReceivablePolicy",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain": {
     "auth_ref": [
      "r203",
      "r207",
      "r537",
      "r538",
      "r539",
      "r540",
      "r541",
      "r542",
      "r543",
      "r544",
      "r545",
      "r546",
      "r547",
      "r548",
      "r549",
      "r550",
      "r551",
      "r552",
      "r553",
      "r554",
      "r555",
      "r556",
      "r557",
      "r558",
      "r559",
      "r560",
      "r561",
      "r562",
      "r563",
      "r564",
      "r565",
      "r566"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TypeOfAdoptionMember": {
     "auth_ref": [
      "r112",
      "r113",
      "r114",
      "r115",
      "r214",
      "r215",
      "r216",
      "r217",
      "r218",
      "r219",
      "r412",
      "r413",
      "r414",
      "r415",
      "r416",
      "r417",
      "r418",
      "r419",
      "r456",
      "r457",
      "r458",
      "r459",
      "r570",
      "r571",
      "r572",
      "r615",
      "r616",
      "r617",
      "r618",
      "r619",
      "r620",
      "r621",
      "r622",
      "r623",
      "r624",
      "r625",
      "r626"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amendment to accounting standards.",
        "label": "Accounting Standards Update [Domain]"
       }
      }
     },
     "localname": "TypeOfAdoptionMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-shareholders-equity",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-",
      "http://www.protolabs.com/20201231/role/statement-note-2-summary-of-significant-accounting-policies-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_USGovernmentAgenciesDebtSecuritiesMember": {
     "auth_ref": [
      "r310",
      "r590"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_USStatesAndPoliticalSubdivisionsMember": {
     "auth_ref": [
      "r310",
      "r628"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-7-marketable-securities-shortterm-and-longterm-marketable-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_UndistributedEarningsOfForeignSubsidiaries": {
     "auth_ref": [
      "r428",
      "r471",
      "r594",
      "r627"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of undistributed earnings of foreign subsidiaries intended to be permanently reinvested outside the country of domicile.",
        "label": "us-gaap_UndistributedEarningsOfForeignSubsidiaries",
        "terseLabel": "Undistributed Earnings of Foreign Subsidiaries"
       }
      }
     },
     "localname": "UndistributedEarningsOfForeignSubsidiaries",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefits": {
     "auth_ref": [
      "r429",
      "r437"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of unrecognized tax benefits.",
        "label": "us-gaap_UnrecognizedTaxBenefits",
        "periodEndLabel": "Balance",
        "periodStartLabel": "Balance",
        "terseLabel": "Unrecognized Tax Benefits, Ending Balance"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefits",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-details-textual",
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions": {
     "auth_ref": [
      "r439"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in unrecognized tax benefits resulting from tax positions that have been or will be taken in current period tax return.",
        "label": "Additions for tax positions of current year"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions": {
     "auth_ref": [
      "r438"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in unrecognized tax benefits resulting from tax positions taken in prior period tax returns.",
        "label": "Additions for tax positions of prior years"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations": {
     "auth_ref": [
      "r440"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of decrease in unrecognized tax benefits resulting from lapses of applicable statutes of limitations.",
        "label": "us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations",
        "negatedLabel": "Decrease related to expiration of statutes of limitations"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-15-income-taxes-reconciliation-of-beginning-and-ending-amount-of-unrecognized-tax-benefits-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UseOfEstimates": {
     "auth_ref": [
      "r142",
      "r143",
      "r144",
      "r145",
      "r146",
      "r147",
      "r148"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for the use of estimates in the preparation of financial statements in conformity with generally accepted accounting principles.",
        "label": "Use of Estimates, Policy [Policy Text Block]"
       }
      }
     },
     "localname": "UseOfEstimates",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-significant-accounting-policies-policies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_VariableLeaseCost": {
     "auth_ref": [
      "r525",
      "r532"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details": {
       "order": 3.0,
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of variable lease cost, excluded from lease liability, recognized when obligation for payment is incurred for finance and operating leases.",
        "label": "Variable lease cost"
       }
      }
     },
     "localname": "VariableLeaseCost",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-note-13-leases-lease-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": {
     "auth_ref": [
      "r125",
      "r133"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-4-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-note-4-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": {
     "auth_ref": [
      "r124",
      "r133"
     ],
     "calculation": {
      "http://www.protolabs.com/20201231/role/statement-note-4-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income",
      "http://www.protolabs.com/20201231/role/statement-note-4-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/2020-01-31",
     "presentation": [
      "http://www.protolabs.com/20201231/role/statement-consolidated-statements-of-comprehensive-income"
     ],
     "xbrltype": "stringItemType"
    }
   },
   "unitCount": 7
  }
 },
 "std_ref": {
  "r0": {
   "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"
  },
  "r1": {
   "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"
  },
  "r10": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6812-107765"
  },
  "r100": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=84158767&loc=d3e18823-107790"
  },
  "r101": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=84158767&loc=d3e18823-107790"
  },
  "r102": {
   "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"
  },
  "r103": {
   "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"
  },
  "r104": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08.(h)(1)(i))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r105": {
   "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"
  },
  "r106": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690"
  },
  "r107": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "235",
   "URI": "http://asc.fasb.org/topic&trid=2122369"
  },
  "r108": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=115929471&loc=d3e21914-107793"
  },
  "r109": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=115929471&loc=d3e21930-107793"
  },
  "r11": {
   "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"
  },
  "r110": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=115929471&loc=d3e21711-107793"
  },
  "r111": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=115929471&loc=d3e21728-107793"
  },
  "r112": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(2)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r113": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(3)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r114": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(4)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r115": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r116": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22694-107794"
  },
  "r117": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22694-107794"
  },
  "r118": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22583-107794"
  },
  "r119": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22595-107794"
  },
  "r12": {
   "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"
  },
  "r120": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22644-107794"
  },
  "r121": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22644-107794"
  },
  "r122": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22658-107794"
  },
  "r123": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22663-107794"
  },
  "r124": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=d3e1448-109256"
  },
  "r125": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=d3e1505-109256"
  },
  "r126": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=d3e1252-109256"
  },
  "r127": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=d3e1707-109256"
  },
  "r128": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=d3e1757-109256"
  },
  "r129": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=d3e1500-109256"
  },
  "r13": {
   "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"
  },
  "r130": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=SL5780133-109256"
  },
  "r131": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=SL5780133-109256"
  },
  "r132": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=d3e1337-109256"
  },
  "r133": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=6371337&loc=d3e3550-109257"
  },
  "r134": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=6371337&loc=d3e3550-109257"
  },
  "r135": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=6371337&loc=d3e3630-109257"
  },
  "r136": {
   "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"
  },
  "r137": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=120380238&loc=d3e3842-109258"
  },
  "r138": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "52",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=120380238&loc=d3e4984-109258"
  },
  "r139": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "260",
   "URI": "http://asc.fasb.org/topic&trid=2144383"
  },
  "r14": {
   "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"
  },
  "r140": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "270",
   "URI": "http://asc.fasb.org/extlink&oid=116846552&loc=d3e543-108305"
  },
  "r141": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "272",
   "URI": "http://asc.fasb.org/extlink&oid=6828210&loc=d3e70191-108054"
  },
  "r142": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e5967-108592"
  },
  "r143": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e5967-108592"
  },
  "r144": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6161-108592"
  },
  "r145": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6191-108592"
  },
  "r146": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6061-108592"
  },
  "r147": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6132-108592"
  },
  "r148": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6143-108592"
  },
  "r149": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8657-108599"
  },
  "r15": {
   "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"
  },
  "r150": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8721-108599"
  },
  "r151": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8721-108599"
  },
  "r152": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r153": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r154": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r155": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r156": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r157": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r158": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(g)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r159": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r16": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(22))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r160": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(j)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r161": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r162": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8813-108599"
  },
  "r163": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8813-108599"
  },
  "r164": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "26",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8844-108599"
  },
  "r165": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8906-108599"
  },
  "r166": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8906-108599"
  },
  "r167": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8906-108599"
  },
  "r168": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8906-108599"
  },
  "r169": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "31",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8924-108599"
  },
  "r17": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(26)(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r170": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8933-108599"
  },
  "r171": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8933-108599"
  },
  "r172": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8933-108599"
  },
  "r173": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8933-108599"
  },
  "r174": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8933-108599"
  },
  "r175": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8933-108599"
  },
  "r176": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "34",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8981-108599"
  },
  "r177": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "40",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e9031-108599"
  },
  "r178": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e9038-108599"
  },
  "r179": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e9038-108599"
  },
  "r18": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(26)(b))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r180": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "a",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e9038-108599"
  },
  "r181": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "b",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e9038-108599"
  },
  "r182": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e9038-108599"
  },
  "r183": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "42",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e9054-108599"
  },
  "r184": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "280",
   "URI": "http://asc.fasb.org/topic&trid=2134510"
  },
  "r185": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121593590&loc=d3e4428-111522"
  },
  "r186": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121593590&loc=d3e4531-111522"
  },
  "r187": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121611835&loc=d3e4975-111524"
  },
  "r188": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121611835&loc=SL6953423-111524"
  },
  "r189": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121611835&loc=d3e5212-111524"
  },
  "r19": {
   "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"
  },
  "r190": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121611835&loc=d3e5033-111524"
  },
  "r191": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121611835&loc=d3e5074-111524"
  },
  "r192": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121611835&loc=d3e5093-111524"
  },
  "r193": {
   "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=27010918&loc=d3e74512-122707"
  },
  "r194": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=84159169&loc=d3e10133-111534"
  },
  "r195": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121553693&loc=d3e26610-111562"
  },
  "r196": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121553693&loc=d3e26853-111562"
  },
  "r197": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27232-111563"
  },
  "r198": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(aa)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27232-111563"
  },
  "r199": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27232-111563"
  },
  "r2": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "205",
   "URI": "http://asc.fasb.org/topic&trid=2122149"
  },
  "r20": {
   "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"
  },
  "r200": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27232-111563"
  },
  "r201": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(1)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27232-111563"
  },
  "r202": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27232-111563"
  },
  "r203": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27232-111563"
  },
  "r204": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=SL120269820-111563"
  },
  "r205": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=SL120269820-111563"
  },
  "r206": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=SL120269820-111563"
  },
  "r207": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=SL120269820-111563"
  },
  "r208": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=SL120269825-111563"
  },
  "r209": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "320",
   "URI": "http://asc.fasb.org/topic&trid=2196928"
  },
  "r21": {
   "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"
  },
  "r210": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "321",
   "URI": "http://asc.fasb.org/topic&trid=75115024"
  },
  "r211": {
   "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"
  },
  "r212": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "323",
   "URI": "http://asc.fasb.org/topic&trid=2196965"
  },
  "r213": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "325",
   "URI": "http://asc.fasb.org/topic&trid=2197064"
  },
  "r214": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r215": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r216": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r217": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r218": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(3)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r219": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(4)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r22": {
   "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"
  },
  "r220": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599878&loc=SL82895884-210446"
  },
  "r221": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919244-210447"
  },
  "r222": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919249-210447"
  },
  "r223": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919253-210447"
  },
  "r224": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919258-210447"
  },
  "r225": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919230-210447"
  },
  "r226": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121582814&loc=SL82922888-210455"
  },
  "r227": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121582814&loc=SL82922895-210455"
  },
  "r228": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121582814&loc=SL82922900-210455"
  },
  "r229": {
   "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"
  },
  "r23": {
   "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"
  },
  "r230": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "330",
   "URI": "http://asc.fasb.org/extlink&oid=116847112&loc=d3e4492-108314"
  },
  "r231": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "330",
   "URI": "http://asc.fasb.org/extlink&oid=116847112&loc=d3e4556-108314"
  },
  "r232": {
   "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"
  },
  "r233": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "330",
   "URI": "http://asc.fasb.org/topic&trid=2126998"
  },
  "r234": {
   "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"
  },
  "r235": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=99380562&loc=d3e13777-109266"
  },
  "r236": {
   "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"
  },
  "r237": {
   "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"
  },
  "r238": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267"
  },
  "r239": {
   "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"
  },
  "r24": {
   "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"
  },
  "r240": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=121556970&loc=d3e13854-109267"
  },
  "r241": {
   "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"
  },
  "r242": {
   "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"
  },
  "r243": {
   "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"
  },
  "r244": {
   "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"
  },
  "r245": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r246": {
   "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"
  },
  "r247": {
   "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"
  },
  "r248": {
   "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"
  },
  "r249": {
   "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"
  },
  "r25": {
   "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"
  },
  "r250": {
   "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"
  },
  "r251": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "40",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=118172244&loc=d3e17916-109280"
  },
  "r252": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "50",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=16397303&loc=d3e19379-109286"
  },
  "r253": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "350",
   "URI": "http://asc.fasb.org/topic&trid=2144416"
  },
  "r254": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "05",
   "SubTopic": "10",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=109226317&loc=d3e202-110218"
  },
  "r255": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r256": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r257": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r258": {
   "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"
  },
  "r259": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=109226691&loc=d3e2941-110230"
  },
  "r26": {
   "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"
  },
  "r260": {
   "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"
  },
  "r261": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.CC)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=27011434&loc=d3e125687-122742"
  },
  "r262": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "360",
   "URI": "http://asc.fasb.org/topic&trid=2155823"
  },
  "r263": {
   "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"
  },
  "r264": {
   "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"
  },
  "r265": {
   "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"
  },
  "r266": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "450",
   "URI": "http://asc.fasb.org/topic&trid=2127136"
  },
  "r267": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "470",
   "URI": "http://asc.fasb.org/topic&trid=2208564"
  },
  "r268": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=109259400&loc=d3e21463-112644"
  },
  "r269": {
   "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"
  },
  "r27": {
   "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"
  },
  "r270": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130551-203045"
  },
  "r271": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045"
  },
  "r272": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045"
  },
  "r273": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045"
  },
  "r274": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045"
  },
  "r275": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045"
  },
  "r276": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(2)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130556-203045"
  },
  "r277": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130558-203045"
  },
  "r278": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130543-203045"
  },
  "r279": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130545-203045"
  },
  "r28": {
   "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"
  },
  "r280": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130550-203045"
  },
  "r281": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121551570&loc=SL49130690-203046-203046"
  },
  "r282": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121551570&loc=SL49130690-203046-203046"
  },
  "r283": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=113356391&loc=SL49131195-203048"
  },
  "r284": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "606",
   "URI": "http://asc.fasb.org/topic&trid=49130388"
  },
  "r285": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "15",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "712",
   "URI": "http://asc.fasb.org/extlink&oid=6410066&loc=d3e79218-111664"
  },
  "r286": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "15",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "712",
   "URI": "http://asc.fasb.org/extlink&oid=6410066&loc=d3e79218-111664"
  },
  "r287": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=109237824&loc=d3e1703-114919"
  },
  "r288": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r289": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(1)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r29": {
   "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"
  },
  "r290": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(10)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r291": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(2)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r292": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(3)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r293": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(4)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r294": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(5)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r295": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(6)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r296": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(7)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r297": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(8)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r298": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(9)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r299": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r3": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6676-107765"
  },
  "r30": {
   "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"
  },
  "r300": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(1)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r301": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r302": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(3)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r303": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(4)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r304": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(5)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r305": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(6)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r306": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(7)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r307": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(8)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r308": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r309": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(i)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r31": {
   "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"
  },
  "r310": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(ii)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r311": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iii)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r312": {
   "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=118255775&loc=d3e1928-114920"
  },
  "r313": {
   "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=118255775&loc=d3e1928-114920"
  },
  "r314": {
   "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=118255775&loc=d3e1928-114920"
  },
  "r315": {
   "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=118255775&loc=d3e1928-114920"
  },
  "r316": {
   "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=118255775&loc=d3e1928-114920"
  },
  "r317": {
   "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=118255775&loc=d3e1928-114920"
  },
  "r318": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r319": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(f)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r32": {
   "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"
  },
  "r320": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r321": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r322": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(1)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r323": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(2)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r324": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(3)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r325": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(4)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r326": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(5)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r327": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(6)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r328": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(7)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r329": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(i)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r33": {
   "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"
  },
  "r330": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(j)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r331": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(k)(1)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r332": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(k)(2)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r333": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(k)(3)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r334": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(k)(4)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r335": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(l)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r336": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(n)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r337": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(o)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r338": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(p)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r339": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(q)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r34": {
   "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"
  },
  "r340": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(r)(1)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r341": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(r)(2)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r342": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2410-114920"
  },
  "r343": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2417-114920"
  },
  "r344": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2417-114920"
  },
  "r345": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2439-114920"
  },
  "r346": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2709-114920"
  },
  "r347": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(1)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2709-114920"
  },
  "r348": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(2)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2709-114920"
  },
  "r349": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(3)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2709-114920"
  },
  "r35": {
   "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"
  },
  "r350": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(4)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2709-114920"
  },
  "r351": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(5)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2709-114920"
  },
  "r352": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(6)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2709-114920"
  },
  "r353": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(7)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2709-114920"
  },
  "r354": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2709-114920"
  },
  "r355": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e2919-114920"
  },
  "r356": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118257860&loc=d3e4179-114921"
  },
  "r357": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118257860&loc=d3e4587-114921"
  },
  "r358": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=21916913&loc=d3e273930-122802"
  },
  "r359": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "60",
   "Subparagraph": "(c)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=6414203&loc=d3e39689-114964"
  },
  "r36": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.13(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r360": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "70",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=49170846&loc=d3e28014-114942"
  },
  "r361": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "80",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=29639808&loc=d3e29008-114946"
  },
  "r362": {
   "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"
  },
  "r363": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=65877416&loc=SL14450702-114947"
  },
  "r364": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(c)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=65877416&loc=SL14450702-114947"
  },
  "r365": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=65877416&loc=SL14450702-114947"
  },
  "r366": {
   "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"
  },
  "r367": {
   "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"
  },
  "r368": {
   "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"
  },
  "r369": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=65877416&loc=SL14450673-114947"
  },
  "r37": {
   "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"
  },
  "r370": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(c)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=65877416&loc=SL14450673-114947"
  },
  "r371": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=65877416&loc=SL14450691-114947"
  },
  "r372": {
   "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"
  },
  "r373": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "715",
   "URI": "http://asc.fasb.org/topic&trid=2235017"
  },
  "r374": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121326096&loc=d3e4534-113899"
  },
  "r375": {
   "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"
  },
  "r376": {
   "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"
  },
  "r377": {
   "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"
  },
  "r378": {
   "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"
  },
  "r379": {
   "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"
  },
  "r38": {
   "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"
  },
  "r380": {
   "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"
  },
  "r381": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b),(f(1))",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r382": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r383": {
   "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"
  },
  "r384": {
   "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"
  },
  "r385": {
   "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"
  },
  "r386": {
   "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"
  },
  "r387": {
   "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"
  },
  "r388": {
   "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"
  },
  "r389": {
   "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"
  },
  "r39": {
   "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"
  },
  "r390": {
   "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"
  },
  "r391": {
   "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"
  },
  "r392": {
   "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"
  },
  "r393": {
   "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"
  },
  "r394": {
   "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"
  },
  "r395": {
   "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"
  },
  "r396": {
   "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"
  },
  "r397": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r398": {
   "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"
  },
  "r399": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r4": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6676-107765"
  },
  "r40": {
   "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"
  },
  "r400": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r401": {
   "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"
  },
  "r402": {
   "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"
  },
  "r403": {
   "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"
  },
  "r404": {
   "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"
  },
  "r405": {
   "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"
  },
  "r406": {
   "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"
  },
  "r407": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r408": {
   "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"
  },
  "r409": {
   "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"
  },
  "r41": {
   "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"
  },
  "r410": {
   "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"
  },
  "r411": {
   "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"
  },
  "r412": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r413": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r414": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r415": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r416": {
   "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"
  },
  "r417": {
   "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"
  },
  "r418": {
   "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"
  },
  "r419": {
   "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"
  },
  "r42": {
   "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"
  },
  "r420": {
   "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=115993241&loc=d3e301413-122809"
  },
  "r421": {
   "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=115993241&loc=d3e301413-122809"
  },
  "r422": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120383193&loc=d3e11149-113907"
  },
  "r423": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120383193&loc=d3e11178-113907"
  },
  "r424": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "718",
   "URI": "http://asc.fasb.org/topic&trid=2228938"
  },
  "r425": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "35",
   "Subparagraph": "(a)",
   "Topic": "720",
   "URI": "http://asc.fasb.org/extlink&oid=6420018&loc=d3e36677-107848"
  },
  "r426": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "35",
   "Subparagraph": "(b)",
   "Topic": "720",
   "URI": "http://asc.fasb.org/extlink&oid=6420018&loc=d3e36677-107848"
  },
  "r427": {
   "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"
  },
  "r428": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121573983&loc=d3e28200-109314"
  },
  "r429": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=120406818&loc=SL37586934-109318"
  },
  "r43": {
   "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"
  },
  "r430": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=120406818&loc=d3e32247-109318"
  },
  "r431": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=120406818&loc=d3e32280-109318"
  },
  "r432": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=120406818&loc=d3e31917-109318"
  },
  "r433": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=120406818&loc=d3e31931-109318"
  },
  "r434": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32672-109319"
  },
  "r435": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32687-109319"
  },
  "r436": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32705-109319"
  },
  "r437": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r438": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r439": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(2)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r44": {
   "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"
  },
  "r440": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(4)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r441": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r442": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32809-109319"
  },
  "r443": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32840-109319"
  },
  "r444": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32537-109319"
  },
  "r445": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32537-109319"
  },
  "r446": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32537-109319"
  },
  "r447": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32847-109319"
  },
  "r448": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32857-109319"
  },
  "r449": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32559-109319"
  },
  "r45": {
   "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"
  },
  "r450": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32621-109319"
  },
  "r451": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32632-109319"
  },
  "r452": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32639-109319"
  },
  "r453": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32639-109319"
  },
  "r454": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32639-109319"
  },
  "r455": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "217",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121610041&loc=d3e36027-109320"
  },
  "r456": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740"
  },
  "r457": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740"
  },
  "r458": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)(2)",
   "Topic": "740"
  },
  "r459": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)(3)",
   "Topic": "740"
  },
  "r46": {
   "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"
  },
  "r460": {
   "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=116825942&loc=d3e330036-122817"
  },
  "r461": {
   "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=116825942&loc=d3e330036-122817"
  },
  "r462": {
   "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=116825942&loc=d3e330036-122817"
  },
  "r463": {
   "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=116825942&loc=d3e330036-122817"
  },
  "r464": {
   "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=116825942&loc=d3e330036-122817"
  },
  "r465": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.3)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=116825942&loc=d3e330036-122817"
  },
  "r466": {
   "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=116825942&loc=d3e330036-122817"
  },
  "r467": {
   "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=116825942&loc=d3e330215-122817"
  },
  "r468": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=120385591&loc=d3e38679-109324"
  },
  "r469": {
   "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"
  },
  "r47": {
   "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"
  },
  "r470": {
   "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"
  },
  "r471": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=6424122&loc=d3e41874-109331"
  },
  "r472": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(c)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=6424122&loc=d3e41874-109331"
  },
  "r473": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "740",
   "URI": "http://asc.fasb.org/topic&trid=2144680"
  },
  "r474": {
   "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"
  },
  "r475": {
   "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"
  },
  "r476": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=121598580&loc=d3e5227-128473"
  },
  "r477": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=121598580&loc=d3e5263-128473"
  },
  "r478": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=121598580&loc=d3e5333-128473"
  },
  "r479": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "38",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=121598580&loc=d3e5504-128473"
  },
  "r48": {
   "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"
  },
  "r480": {
   "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"
  },
  "r481": {
   "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"
  },
  "r482": {
   "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"
  },
  "r483": {
   "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"
  },
  "r484": {
   "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"
  },
  "r485": {
   "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"
  },
  "r486": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "740",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=121554379&loc=d3e9972-128506"
  },
  "r487": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "740",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=121554379&loc=d3e9979-128506"
  },
  "r488": {
   "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"
  },
  "r489": {
   "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"
  },
  "r49": {
   "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"
  },
  "r490": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=d3e5614-111684"
  },
  "r491": {
   "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"
  },
  "r492": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=SL4582445-111684"
  },
  "r493": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bb)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=121559654&loc=d3e5710-111685"
  },
  "r494": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=121559654&loc=d3e5710-111685"
  },
  "r495": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "810",
   "URI": "http://asc.fasb.org/topic&trid=2197479"
  },
  "r496": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r497": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r498": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)(1)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r499": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)(2)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r5": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6676-107765"
  },
  "r50": {
   "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"
  },
  "r500": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r501": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=SL6742756-110258"
  },
  "r502": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=75031198&loc=d3e14064-108612"
  },
  "r503": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "230",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=98513438&loc=d3e33268-110906"
  },
  "r504": {
   "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"
  },
  "r505": {
   "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"
  },
  "r506": {
   "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"
  },
  "r507": {
   "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"
  },
  "r508": {
   "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"
  },
  "r509": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900"
  },
  "r51": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=d3e526-108580"
  },
  "r510": {
   "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"
  },
  "r511": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=6450520&loc=d3e32618-110901"
  },
  "r512": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "830",
   "URI": "http://asc.fasb.org/topic&trid=2175825"
  },
  "r513": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121329987&loc=SL77916155-209984"
  },
  "r514": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121603541&loc=SL77918627-209977"
  },
  "r515": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121603541&loc=SL77918627-209977"
  },
  "r516": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121603541&loc=SL77918638-209977"
  },
  "r517": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121603541&loc=SL77918643-209977"
  },
  "r518": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121603541&loc=SL77918643-209977"
  },
  "r519": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121603541&loc=SL77918643-209977"
  },
  "r52": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669646-108580"
  },
  "r520": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918666-209980"
  },
  "r521": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(3)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918673-209980"
  },
  "r522": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918673-209980"
  },
  "r523": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918686-209980"
  },
  "r524": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918686-209980"
  },
  "r525": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918686-209980"
  },
  "r526": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(1)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918686-209980"
  },
  "r527": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(2)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918686-209980"
  },
  "r528": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(3)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918686-209980"
  },
  "r529": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(4)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918686-209980"
  },
  "r53": {
   "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=121641772&loc=SL7669646-108580"
  },
  "r530": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918686-209980"
  },
  "r531": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918701-209980"
  },
  "r532": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "53",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121568110&loc=SL77918982-209971"
  },
  "r533": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "855",
   "URI": "http://asc.fasb.org/extlink&oid=6842918&loc=SL6314017-165662"
  },
  "r534": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "855",
   "URI": "http://asc.fasb.org/extlink&oid=6842918&loc=SL6314017-165662"
  },
  "r535": {
   "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"
  },
  "r536": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "855",
   "URI": "http://asc.fasb.org/topic&trid=2122774"
  },
  "r537": {
   "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"
  },
  "r538": {
   "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"
  },
  "r539": {
   "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"
  },
  "r54": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669646-108580"
  },
  "r540": {
   "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"
  },
  "r541": {
   "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"
  },
  "r542": {
   "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"
  },
  "r543": {
   "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"
  },
  "r544": {
   "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"
  },
  "r545": {
   "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"
  },
  "r546": {
   "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"
  },
  "r547": {
   "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"
  },
  "r548": {
   "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"
  },
  "r549": {
   "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"
  },
  "r55": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=d3e637-108580"
  },
  "r550": {
   "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"
  },
  "r551": {
   "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"
  },
  "r552": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122625-111746"
  },
  "r553": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122625-111746"
  },
  "r554": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122625-111746"
  },
  "r555": {
   "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=116651436&loc=d3e122625-111746"
  },
  "r556": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r557": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r558": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r559": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(4)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r56": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=d3e681-108580"
  },
  "r560": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(5)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r561": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(6)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r562": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(7)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r563": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(b)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r564": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r565": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r566": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r567": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "910",
   "URI": "http://asc.fasb.org/extlink&oid=119991564&loc=SL119991595-234733"
  },
  "r568": {
   "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"
  },
  "r569": {
   "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"
  },
  "r57": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669686-108580"
  },
  "r570": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "926",
   "URI": "http://asc.fasb.org/extlink&oid=120154821&loc=SL120154904-197079"
  },
  "r571": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "926",
   "URI": "http://asc.fasb.org/extlink&oid=120154821&loc=SL120154904-197079"
  },
  "r572": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "926",
   "URI": "http://asc.fasb.org/extlink&oid=120154821&loc=SL120154904-197079"
  },
  "r573": {
   "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"
  },
  "r574": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "20",
   "Topic": "940",
   "URI": "http://asc.fasb.org/extlink&oid=68072869&loc=d3e41242-110953"
  },
  "r575": {
   "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"
  },
  "r576": {
   "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"
  },
  "r577": {
   "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"
  },
  "r578": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(15)(2))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r579": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(16))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r58": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL34724394-108580"
  },
  "r580": {
   "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"
  },
  "r581": {
   "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"
  },
  "r582": {
   "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"
  },
  "r583": {
   "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"
  },
  "r584": {
   "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"
  },
  "r585": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(23))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260"
  },
  "r586": {
   "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"
  },
  "r587": {
   "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"
  },
  "r588": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "230",
   "Subparagraph": "b.",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=121551529&loc=d3e60009-112784"
  },
  "r589": {
   "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"
  },
  "r59": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669619-108580"
  },
  "r590": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Subparagraph": "(b)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120252992&loc=d3e62557-112803"
  },
  "r591": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Subparagraph": "(a)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120252992&loc=d3e62586-112803"
  },
  "r592": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Subparagraph": "(b)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120252992&loc=d3e62586-112803"
  },
  "r593": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120252992&loc=d3e62652-112803"
  },
  "r594": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "740",
   "Subparagraph": "(b)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=6479915&loc=d3e66715-112838"
  },
  "r595": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(15)(b)(2))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r596": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(16))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r597": {
   "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"
  },
  "r598": {
   "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"
  },
  "r599": {
   "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"
  },
  "r6": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6676-107765"
  },
  "r60": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669619-108580"
  },
  "r600": {
   "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"
  },
  "r601": {
   "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"
  },
  "r602": {
   "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"
  },
  "r603": {
   "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"
  },
  "r604": {
   "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"
  },
  "r605": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(19))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263"
  },
  "r606": {
   "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"
  },
  "r607": {
   "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"
  },
  "r608": {
   "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"
  },
  "r609": {
   "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"
  },
  "r61": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669619-108580"
  },
  "r610": {
   "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"
  },
  "r611": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(d)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121643868&loc=SL117782755-158439"
  },
  "r612": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(a)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121639165&loc=SL117783719-158441"
  },
  "r613": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(b)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121639165&loc=SL117783719-158441"
  },
  "r614": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "29F",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121639165&loc=SL117819544-158441"
  },
  "r615": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(a)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r616": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(b)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r617": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r618": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)(1)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r619": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)(2)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r62": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669625-108580"
  },
  "r620": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(1)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r621": {
   "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=121370832&loc=SL117420844-207641"
  },
  "r622": {
   "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=121370832&loc=SL117420844-207641"
  },
  "r623": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(2)(iii)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r624": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(2)(iv)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r625": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(h)(1)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r626": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(h)(2)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r627": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "740",
   "Subparagraph": "(b)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=6487024&loc=d3e29054-158556"
  },
  "r628": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(e)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121641442&loc=d3e19393-158473"
  },
  "r629": {
   "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"
  },
  "r63": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669625-108580"
  },
  "r630": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "740",
   "Topic": "954",
   "URI": "http://asc.fasb.org/extlink&oid=6491622&loc=d3e9504-115650"
  },
  "r631": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Subparagraph": "(d)",
   "Topic": "958",
   "URI": "http://asc.fasb.org/extlink&oid=120429125&loc=d3e99779-112916"
  },
  "r632": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Topic": "958",
   "URI": "http://asc.fasb.org/extlink&oid=120429125&loc=d3e99893-112916"
  },
  "r633": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Topic": "958",
   "URI": "http://asc.fasb.org/extlink&oid=120429125&loc=SL120174063-112916"
  },
  "r634": {
   "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"
  },
  "r635": {
   "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"
  },
  "r636": {
   "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"
  },
  "r637": {
   "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"
  },
  "r638": {
   "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"
  },
  "r639": {
   "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"
  },
  "r64": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=d3e557-108580"
  },
  "r640": {
   "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"
  },
  "r641": {
   "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"
  },
  "r642": {
   "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"
  },
  "r643": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "985",
   "URI": "http://asc.fasb.org/extlink&oid=6501960&loc=d3e128462-111756"
  },
  "r644": {
   "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"
  },
  "r645": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b"
  },
  "r646": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "d1-1"
  },
  "r647": {
   "Name": "Forms 10-K, 10-Q, 20-F",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "13",
   "Subsection": "a-1-"
  },
  "r648": {
   "Name": "Forms 10-K, 20-F, 40-F",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "15",
   "Subsection": "d-1"
  },
  "r649": {
   "Name": "Regulation 12B",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b-2"
  },
  "r65": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=116657188&loc=SL116659661-227067"
  },
  "r650": {
   "Name": "Regulation S-T",
   "Number": "232",
   "Publisher": "SEC",
   "Section": "405"
  },
  "r66": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121640130&loc=d3e1436-108581"
  },
  "r67": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r68": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r69": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(21))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=120395209&loc=SL114868664-224227"
  },
  "r7": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6676-107765"
  },
  "r70": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r71": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r72": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r73": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r74": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r75": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r76": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r77": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "220",
   "URI": "http://asc.fasb.org/topic&trid=2134417"
  },
  "r78": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3179-108585"
  },
  "r79": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3213-108585"
  },
  "r8": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6801-107765"
  },
  "r80": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3213-108585"
  },
  "r81": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3213-108585"
  },
  "r82": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3213-108585"
  },
  "r83": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3255-108585"
  },
  "r84": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3291-108585"
  },
  "r85": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3291-108585"
  },
  "r86": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3367-108585"
  },
  "r87": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3521-108585"
  },
  "r88": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3536-108585"
  },
  "r89": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3536-108585"
  },
  "r9": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6812-107765"
  },
  "r90": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3536-108585"
  },
  "r91": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3602-108585"
  },
  "r92": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3602-108585"
  },
  "r93": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3602-108585"
  },
  "r94": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3044-108585"
  },
  "r95": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121583591&loc=d3e4273-108586"
  },
  "r96": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121583591&loc=d3e4297-108586"
  },
  "r97": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121583591&loc=SL98516268-108586"
  },
  "r98": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=84158767&loc=d3e18726-107790"
  },
  "r99": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=84158767&loc=d3e18780-107790"
  }
 },
 "version": "2.1"
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>ZIP
<SEQUENCE>101
<FILENAME>0001437749-21-003413-xbrl.zip
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 0001437749-21-003413-xbrl.zip
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
M[8/4\*8$3C:\,;PQO"D@;TJR2QI=40Z7U)<SRNZ\F\LP;:N8MHG_52H\J(9
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
M#27H!_@K/E"+)OT@?[_?]/^MX"]02P,$%     @ PGQ34OQBS])B!   H!\
M  T   !E>%\R,34Q-S<N:'1M[5E1;^)&$'X.OV**U+M$PF!#DUZ (/G )/02
M0.!<KT_5VE['*]F[OO4Z@?OUG;4AX9)459264!T2TMHSNYYO9C][9MANI)*X
MUXTH"7J5@ZYB*J8]NOC3.OG5M%IUU'8;I1"U/QD&G%-.)5$T &\);I3S@,J!
M2"A,A50D!@.L1O.TT32;%K3:9K-M'</T"@RCUTVH(N!'1&94G55S%1H?JBLI
M)PD]JX9")D09 5745TSP*OB"*\IQMJ(Q32/!Z1D7U5ZEVR@1=ST1+"%3R[A8
MSI41DH3%RS:\^YH+U7%90C,8TSN8B83P4EB#0ER#C$H6=J!8E[%OM V6F:H.
MI"0(&+]I@\DXF'6+\0[XN<R$; /)E>AH!.F_;C8A\H9QM*IO%%TH@\3L!@4Q
M#17:?,>]+.UT&VFOLE7SDMU$VG[7ZSF+B'E,0:M9M[H-K[=],&\<BS<V[^/+
M0&6Y%WUGYHZ&H[[MCB9CF RA?S%RAN!\<?K7[NBS@R+4.C.PQX.5;C@:V^/^
MR+Z\U[W-)FZZ,;V>S:_ML0ON9 ?06!_@NCZO]^LP=_I%8*W6L5G; 63V'.S!
M9.HZ ]BMD*T#=6J>:!:Z%P[,[=E'>^S,C<F72^</L/NNUC1-L_E&>'?CJS&J
MP6?F*R$9@:LZ7(A8U3"44K%P68,4,TQ.N (E8(.&92I<T9!D0 *1ZO2[.7T]
M26^!"$%%%.9$>H33S)@L8KH$VU=:H[>@AGJBBDDVYSGF[!E-,7EK_50*?-PE
M\=#+$??K@ \=8E9&!XU/Z+ LEH4L\W'9DA()% N   ;4IXE');2L&AIIFA#F
M<;S$_)VD,<-0WC$5%6LE_9HS21,D4*8M/OAW2(X #5C'A\'1O1<4\RY3^@G.
M DL'?D/7KEBGK5^ \*#TAO&R>-"/TD4#81QA8?K.<C]Z[.=W/A$F$6@J:59
MPB4DCG$KD=\,UZ \18C9RG%.N*_%:"-@A34- 2?E<>F/2'5YA(KLN7C^J,P?
M8#C;,*2>S(E<XMX5++%V(QR*>#$%3T@L9<^J)E:=-(Y7->#]?982?WV_0GO'
M A6U+=/\N5.88/@J<-4V.YMNO'_DP/M'V!^@%\BQLCRH'& A+O%"C\':VJW^
M3N!KM_9$B;0#)00X00C5<L&SL7PAB%7T].5&[)Z&3MMKJ. ?D&J@)<[C[:'\
MN&R_ &(9S)(!AB>4$@DR*5U )F*&K_>-=X@?7_T[NH]Y:XO>-++&D\SQV#T<
M"\[LJ?-*E&/L15]$GI(P;T*,/2FVA-+5_X'\7U@QQ7J$Z5Q4%"?]B-$0RR<L
MI12[I3 )0X9%Y]]0I8*CSH<[D)?WYK?>GOPF(@YV'7XGRWUGLN],?@#2[SN3
M?6>R[TQ>U9EL)(U]_;EO2GI[/NS[D>_ EAW(\+Y$>64'\A_M=J4;L%OP8Y)E
M9]5+>^X:4_O<,3[.'/N3/O#=T$[/A^[LD2P*#2GNG@IUBH;I^?CZZL$:SM!G
MV,\,B**AS[1[W49Q,O\74$L#!!0    ( ,)\4U(@O&MO(8P  %6G   +
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
M/'0WM\FI:5 9I:<Y?70B-7JL&*=RW)Y,R]^M,5W++);A!G_,75Q/>GZDVHO
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
MYWN W,OV61.._(,GXVZBU)P:>N$JYQWOCS? "Y;W7^8K"S,1,O[)\Z]R<$*
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
M<>L17KV 705%GM[M #UE2P*G$V.EZ)[L:2=Y(#.N ZHL?@0,KSV- +[P;5-
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
MS-^['/6&MNTTY#::,TYX0F\KKVQ4E:I-RW]2QPXJ?9<2&@<+&N-^FK>G-FW
MTPUS; Y=T9BST&8Z(_L$2DI&2R:U5'T7"AG09#1/22@5:(6DX!,<>+,9E95F
M&+%#'W42+%[39T3?@+ 4T=' !=E<3 4V0G9N>;11^#525(1ND:5LT?*+4:KD
M!R++EUTLSP_3T=':F#^N)6^$]/ #BJ0]&EY[73/!F01[U?:@?JEH(9T]J6J*
M8H*-4IS/518>>-S@@M!OW\[;#N%1;PN3A@J<,2<0I!3/1@8F\_@5:NZO&3?@
MY)5\ZF-3C5@606W $J Y[_";QS^:,'W/?'Z>IVTWL74V3-6O=.?D.AMU)438
MT95=.G3#%PB46;J6=$^9+P:\]-^ZKW";CN/G5'VKVK*CK>?#S8*J+W..4[#E
M3*I)Z;\0_'DPQ;>D+4*GD8")O%0,7&",B:D)#$$B/@XDBL^>LBI-][U'-+.<
M%?5J)ODJB7$4^2!>?[2K7G<K-"U$C#MA]E?&ZECIR:#$#Y]0PIO<%(B>ELC@
M<1A@R 6)(W7R4\I<34[:F!-,)N=<&8RKW4PNYRVRW?RZ"0J*[99!#K1WT$!V
M'],#W%FICC$_J>M+AXX3X1JE"N;KKD $5Q7[M^(6;P'V%B9=R3*]X;MY]+U^
M=8U-]744Z\4[OX71_?0&B?UX'_=:G:X5;'DO\=$3Q2-(-QI5U#0(3^3BD6ZC
M%:\N,E:-VJQ&_=WE>1G9MDT9KJ-N!PT\K:QV844;W92S9%K!(/! NK: "YT@
M4<"M>E]5OM?3Z/R^,>;@Q#!9S(]\&:)MCIP#B?4'R%!E_VAS# TG+T^)3&X_
MQ%@&X[-'+ET#S&7HRI,@O',D8RI8!U:%3':HWUY31E Z+<^1FF.@!7%1DE79
M1FV$J3 6LF''2&;YR4L?;O+T[''YSKEUFA5[-'YWD1!?VSB?/@@B4L((^$].
M+$HPKL/LIL=W/Q.++].\=U<CE&I,MR@CL$!3FQ5/>#4,:PX\ICDQZL#NEYVU
MET-Z27]]..45N&VFG!'MN;WHQ/4JTH!0YB2#7"+2%SIUT EX][;QG?.\T;F?
MPT5J7L6'^"2<F<Y6([%0#@&6VQ_!/5>\D#2<7OW84MWC,-Q)I U8SSD#]%4_
M/WSB35=9)^.IC.J/<;$7=9EY-W$=(;QY8 ]*/E8%KEQ#O60/=![4(D>Q@<L0
MO&&AO"W_J6 9+CWB)CTJ8ZU9C-9OADSC6.DG,CO0=)W).N1>6[+N+3Y[C\U6
MR! &* 2;'"WQ]3+VU3T)EWK_D[S&:5R+FFBCVW*8[J]QEA^>V7XX;*1)R7!/
MDDY3^"/,D^#JV>"=6)XQ;-LE@C)CYL"?5"B]6[I',F^E(F*S689MQX8);D4.
M-I4JC)KZH]60P$$Z-*7=*\U>K84IZPKDXK1.981'T#0.+B?^]$A]BD=,I^0
M?1Q((N5.KWLO6W;X,DMV-:.PF$3VNAU[.GXZOC[])[,GZ_8Z]<4M,)^%,#*G
M,>?3?H+68MH*Q& V!.%#+Q@;NMW9SU>+_: LVL1^PI7@OAT2:NMW@^6W[^ (
M-\H@=Y<T(LY4:I%8<2Q11'A_.N">);I_FT$NS4S?+-%PY5^4;J:V<30U9+@3
M.Q[P:^G09 IZ/3\%&< 7HVU\![9SE\Q>29&6T[?(P[=36U:("8F>($K3[7[&
MP)L-'#:NI+NKQ+CJ;QA+_ZS9"3GU.'H#^.TAM^!*5]6,CVIBOB,NVVG?H&DA
ML7LA7JF&@#=/[%R>G%SOPVJ3((^B]QD2&9XCIWOX>YGUB\WF7K#UU'&;W'H,
MHB_+\-I!#!J14+"<TKU$0#^X(\;O_W%C+>YU1ZVRA1Z\?K @_<!KSQHMAGCK
M-^\]X0H28O28+M LYT4I/ZO\Q8M@DU,%@7WQ4RKC^([6!T8@M5 QPTXG_-W_
M_!JF;##[V1T6]H=M$&H7O_&J'+H([<03MJ[$RTL0J&G9)6>F$[1:,:B5UG#1
M[6'L,/P\@3P9*1X2@MKM -^^WJ>=_B/>H=\%E$<=N"0GI!;AQ^=*7 TAOZ15
M.HQ)KD.Z_GA&XJR0/#]F[L_NIA_ZWM!$:/H39'(MU1L/J:MF080:'@2JD"0A
MU%>%KR?=\GBEVD]#U=[-^=@C'<)0*5CC7QJ61*82HJXS$7K^\3@/YL\G8P;\
M:K/\Z/=#7L:/IC56DX,.M%E/GTF)&HE>'HO>JY&4OO9KB#=@L-#GONE1[Y^-
M!"5I,:X8*>OCA ?>.+/7$IY\'SJ+'[PM(YTPMG]+XMI1\-R-LG2]0EW<!?"*
MVI2JNWI3[]8C8G"59R^Z4"NF<O+AM/EF)WX<AYOTY+A $JN>+94+HC^C8Y/W
M?-(,+;R%I.291S5$>47WD9EN(]8P<V;72/Q6TVIHUO\"JWE 8N+K#/R %+R[
MKC#*COC*:R%7>1]MXU0F5W2O,ZS*/3=>2[[3X_$Q:3&3[EN$NP=L4>F]SR9%
M@9F)B=Y&"A_&T)A-C;A5P3@J8TI&FZ2]Y/5UA>T?8A+T+@A4&YHC.]T_X;2.
M$'QJ*I5#3O,#/KQ6 U%\M*2?SL]Z$"C%K2CNNNJX^Y(-6<C+LU@_5PZNQ/T
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
MUE5 M^U%,K4AQ?3<8 46*<;=-XF]!7;J:B0MH$D9.$#')^73W5.&+4:WZ*&
M=MI<""_'G6VMY99YZO2*I,67\=')H.\=33,G#R[E\E.I!L9:^XMP*=P9A5HZ
MBT,-=G\,$!WW.XO7(Z0;JKUY&+.CY\4@:](.42U)@_V\@M9R'&:QH/EF\V]E
MQIG\@GS3,(T*\0C'W6&XDVM.@B7\^D@?PGF3%29MIGEG!YA(U+3A'3QV&IRL
MX(-0=D1\&DZ$@]MS_&GV[SG>:Z8\)1L;FN^L#6V)U[CQF1-:S?Y<'D[3WD#*
M%!E</E:ZM..'0)]0$$SMZOE-5#Y_P(+""J/YW0!X @:AHL3R#VKS+;W$K1,K
M_.ZN_1YCU!F.+X!0Q]T[OV!Q5V>WI*,IB&&;.W1,]W<<J@9MK[6@6?3TF9Q(
MR31)82B5A2&&^I++BE^"$EIY<'P>NI)*&%RM]72<5"!V>WMY<SO'=&1SO)S+
M[E3&%P"BL/P]=E4:/+YB_$9?Z/ -VK#4 T]Y. TTFMY92,2&9'!=J:?=5^A;
M"SL3=:('<4#F^O3C)P]KA;;6P),/F;3'&RQ]E'6CL8GBC\+DJ#S8Y1+\ 6G,
MWZX@$:'430&%X!7X!LE4#9_^%\"#2VDLW9674_/YW1-(W!C+4>]#LU?U8JVF
M4^Z'\EDX9%1ZIW"@<\X'.\<ZZ>;LX%QO1<KVN=RT[?OEP1<[)9ZA"0*-+14I
M&%IDA&("*VQU20 ZNW!*3ADQ\/19<.)AY+%/25G_=?B]=F%/O^_9;R=T: 0M
M_H=\FK(Z_U/<LE 5$638CK%>X28:^Y@8W.SH4:-.CONJ4R)OY?X?!.M0P_4[
M/_%;^;Q#YQ5X*6S&[Y@Q$ODD 2A)?*#J@4F4915PAS\OMOCGVS"Q_[X<)_'O
MY]C _Q'O\/]71W;+*P@Y/U^\ 'MBA45,+\#F*ZJV=HPJ0SD^UZ/=[S^A**G;
MY9&9+L*?='@X.<8-EM*YTY WC@&,_\O&(,"&77WTSKI-O@O/S&D4.WN72TVR
M^0N> [B5<.(NLB&(C-S(4)!"_9$<:SD+J!(EU'[+!^S^QJIH_O9]/^(-*&RT
M8?!N274H#V^A;W? $.>S/V,LHST'OGT!OJP^TH^>O@!;E*XO@/[J"R#&^:DM
M,7G&ZE;(2SM#;;%:\.,_IJ5Y ;XVB+\ V8%^JPTO .)%,^T+8#YS,O0\6[I
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
MTUE0\G9AS&M<0-"3+!&Z-$TFYP'A4?\L2?K"P 9AYRQKT*3:X"&O;Y#0,+/
M^!AX&@@8.<E>]?,,M91;$"^.F@3>6^-EPM>#I1.U6A7FOA@." 32<YWVX')Q
MF5[1OM>=<HG/':(;V-[ #GT!H-\@5HKQ/ZADO_ODL?&9CM8%\C:?#5\/,AQ:
M$:@]*L5@ BW,!!Q)4\2EZ\T^?KZAF"63P]MH#)SW/%Y98QJ*M(Z_"%F!?^AR
MXE/#^8)(7R#9H'F!-$$'3$M"PWH4L,/A$3R.!65V@S\#NF/NCAS)%UE\]*$U
M6P.M#)TG</)V-N;^2@0JV?"AK;I^N7IE;HL>J<)'FVZF:U'='_0;EU"%[!7S
MO<TJB'$E$;M=2L\]?OF9/%"?-)3>F2G+K#;@PWG-IG8$;\QMA66>:+GI<M;
MJ/-/5C<X=L'"RR;\<8(N][/TO/#,LL'U9N$ZN4#FN3?8/11YM^C1WG^IG#G/
M4_BT.&@4)]:1M9W.(Z'!'.O1!2U8(Q_3=R; 360:/*NI+&#!B/1A@EQ:6@2Q
M20]</A?".DZ;](Q8V]#<#N8/B>9OW!:IDG@O\,6<P:>3.Q[L&-\G8;YF88NS
MG73W]1*481J^R--KCV=462?Y]B[:^;4;5QEON"=+M;1WU"11AU\?D]4I"_3;
M=JE_N5GN33?G]][%.HS!H2PSF,@_>$LF.:,OJ2$X7T7;Y79WUA,4%1S6U<?'
MC PSM5.3]+QAN=W,;;2?*$[1$O0& '62.,X0J&D*88*/G86J7*;',$4]J7KA
M-LAD%F:V^A41+]@LH(XW?@O7FM1%=U]\T(VICHA])SF#A5K$UGF!L NZ)JMQ
MZ2"4$4I&&?]AR)*JQ:BE*_I^JW5\K]&>)1"UT\'1WY.:Y_UFCT:WV B'OY\%
MXQ\]9#@$3/L9Z$-UAE9,>XO8(%^!=J6%0%,U0X.X97CHIU;,8TE_W9ISB;JE
M*3';"I*,>:=SF9_?1RG%B^EZS7=!7>0KI<3XEEU'55C/^K,LHQ>8H'<,'0>W
M;Q9XJ8EI;-P+%=8IV>]N4B-O:E(*8YMSZC6,D H07@ 3@VMLQ#]$8TP<=ZK&
MS]]@6+@>/);SM4*P3DPIT2J6S** J:IS9*^0*LY(+G=2,G>EVHQ@)-(>9#B&
MUEW8!.CHMX/CILF13!3ACHYY>D-.#<GO^F#@!,>PI.#$4UA8$^'3P1[8;K]Z
MZ.%#(9I)Y[OQS-O%8=@A)RSCV>S^/%!A T2)R)F89#)4-;.[]2F%J6IQQI(T
MU6M#Q.2QVJ)#6P;*L)_?_6G?5 J9]J6:U-?5M[S%C6 WME@ F0XRX!-<L&9*
MM>E\!HD29O0FUW.[U71M&RU^!%GZ+'U==$_$(WG:0!C@*3SXA%'?\;.N)GS#
M6JN\W+16/YO58OG-.^=5?^=CN:(_BK]4'W3EZ.V:I+'LHO25N[5*;4F";IO@
MHVDFWR;WSD>MIT79#-"$S%%8_L#7D3 9-%U+I'@G!0\_7Y(%^D N84NOC&O/
MUYT4;(S!M<54GO$@0E=8/+@G4KCLX?BK"S>5,B%T1@DFM!I+*Z'&/)VD.]H;
MD=&'>7O"WMG3CW-NEAN)-S%1\KBJFLX V0">6E F^RUFGX;9A71!X :2*UN)
M?N-G.HU08A9DC%4FD(D_ZDSD'$C Y+@,@:EV)$W.D[R!]:TZ4HL<K<B")KF]
MHM#9+EEYY=<U;C#>B6G26.08=@K H,#DTQ,W-+YS..-8,M 50RX0?\BM.HJ!
MU>#\_LOFL.^>2#]HM\)K*AMG^UR>?Y&>'ZEE)$[@9X2'&)R0!G>[MO\B-[-/
M^E79L7"_DU+1$E6N)654Z\?1DNE^-N-HRGC&;Y32RY.5V6M!&IMG:5WOAZQ+
M]22\J%,_NF[_H![K<H5$-0Y7"+)*9R+7XX+E'-T=';$R#2WR!\9V/E2UZ^+Q
M(J*]CN./FR#C!K,L^8Z031^ZI+*J% J,*JW?AL-KL5(4Z-$BY?K4'Q5T1L=C
M1^SVR24HV(Z7\8N[8(I)GF'"1[YUB[#)>!?IZ2]),2!75].MDQH-?H<FE!DZ
M<#[66;1+3;728[ [H6X"KYT,P$(H?&FAW/[5W%6R.E2-DEM*H)ZKK0GV3(9!
MC>C,1KRJ59'^@)MUOLO\4,=[8(4T\><R^6DQ_9KCGYM_+I]>@,>O)QV'+2_
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
MC1"^W(;Y*T="0Q*%7#[;,)5GW]&*HT.+NV=:0U"M<:6L[VDP1X;8(K]WFJ=
MT<;%FP'^@C\O0#-$>H5_O4;2_WU]+F-FD+U3?D3K_*!L+-H$'>T!VFVS'U-=
MBN5&AIAWWF7M[TA<-%?"YAY:-O[.45X8@-MV,Q7RW!\H)U7?;,E$RHW$1]_B
M$ZRM+<([#J7L*"]$.(/LV&];7<4QFMWB8$8QM-J^>36!!16$&\F<)I&Y;7-L
MVA*]@X # _XP\'W]B\$!"#U^'$$P1J?2<Q/2@A]3-5;8^RNI*W6'IW4!VO_W
M&[*B+T90_4=NV%7N:R-(46QR/'F-G_DL3,&6A6!+D.1Z(+S9$KR>P9I)+)W;
M61+8.$R@-&![EX%I&X7&. F#ZVCP[=%"K@C;=9N?CBVW3I9$0[T6@Q&8G:,Z
MCFRPZG0%%^8=&X_ [F(*?*1=LE[]#%6]#.(=JUZK'#WW]SU\I]@6-Y21]%BO
M<UWW3[C3E7;;C4T!2Z-Y,J",7CO9XR5C>$L;QQ:\V_R8'AT7S=BE$D638&7D
MI4'UX4AZOJ2>G\2]"P*H'E@6<!+1+24'1"332P/(?/J+2Z!N(?UN6Z16]*X#
M#V&=JHT)3+GUP0]3^34YDM.#U2WV!OQT)?&05]WRQ&HT$V.F?8IQK"'+WFF(
M3(),3R948*)5Q=W0243 .%^IY(^STKR>X(6\[C!+5<B&=$._5ZX-N<,-[VNE
MRN<2^W,+0GW 3[D_1W(I2M_U-Z5@F%@#.@@M4[^TE%CQ/2<=$[#LNU?I"5C%
M)#NTN)W".'A2!UV7YYT]IX>+^%\Z)7\^!#U?8ZOK5N94$O(4Z'I8R]?.2?Z
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
MT"T94*G&N#.[6!(Z3A.8&S^5-R_7$JT3&>(ASG"<\;"3829ZU)6UD\S.%Q$
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
MHU.+=]=-E>5,C<J$1$V[XA_+;#-,D4G1%PB-/OH[]B3U^R&6&U;JMS?:G&+
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
M]*L8A.YGZG4E^(>ZS#%,5@JJ3?MNGKS)E&RA\7JI_."%]/Z1\QA8HC"_9[W
MM8^"/>'>&_68*Q1AD_YSTQIR5Q("!5O=T#,)RK8)R.R[7(#Q;);IH#<LI]A5
M[T12>CZ+Y<JQE"E/GZIQ%!43LGT</B@CVA):MFCQ%NJVE-'<=[XJ)4:($7F3
M1L.6E;YPZ(],XA@O29J>*)J0Z+/4O6HH:-X+2Y1N=N2UN0B.3+3SM7F<3&"M
M RLD<Z1F9':^^ 8[8,VY@.% (\@]S3I3KS$PSPE144L9SD:T2*W3EBV26+\5
MN_1)W&4FI0Y"6*=VUW !$GS>NT_"ID6#:8&7$&/O"LYN(ND5+Y!A#D838)F]
M#G(7>0),[=BF8@\[,%I"R:6:;1U7YU^6;Z5>3U0883DV>--6FH\UG!</Y0]K
M+3UEEC08813QB;7PBP0CX!D1W#1&2%(E05NHKZG"C]K<Z?3D"[<V=$@4*RQC
M<I(]\GP#^+Z]G/D%K+*NV+G8SWJ\2*/U,N45P :MRQ:=!1?;K.ZGJGF.Y'[<
M+1@K*_6#]'9,WLDT\(AU?SH5S"KP'_N<S.S?^,!TG%+C#4"T2),O1G(&N_.?
M6NP1!*9T(>0]SVE$CTY^5/W=*G>JDUR$0I:[I1,'^LW63IR\0Z(SS;'.# 8K
M4]M9P2&!"SA0,VN4,UUKBJ[PXD^E'I$W$8".VA;WYUD.M[1E>Z/+\LMZ_]#(
M7'/_BXMD>!T\YNAZ(W/A[_Q6)K6&GGI=;F]%L-])4@U0*MBL,C^AY!@<Q^=\
M84\ 9=3EM7R-1+4'](!3: N/B!7Z*_1@R4K[P)WA/#O+%'EC[9[+$VS@\H$P
MLL7=0P_?^RE>&$_0!Q>%VPW,I9TN9_E#WR^Z+6M(I-!)/:;O*=15/-AH;'PF
MQV1P:J,OO9Z6J'W]F4*6-V8&@+FL=?32,F8GM,OWG?;[ATM]Y*IZ/V>/>R=O
M8MN:UN9;T)@#QODQAM75/F_YC.43I[5M4QI=UG949@?OF;QQY@)RLM :=38W
MZ $:9@M&7U"+XRBH$?$99+T[V(XF(KQ(3U1Q >5F*-7<\X]H%(-LE,Q+WZ.?
M-AI1V.V\?\PR@_6(L%F$47$\N&R_WV59O4)<K$IJ"[<:G1VV[%2;RE$-6N("
MS#*+0I3KJ.CT@#,RXM)V@.. QB*I#0FG\>Z-54/X3$JG[T-!%?S$3'V05#I]
MKE*P3.'(PHKY_6F)!Y>V][MJ)3 7R7&GE 9 E=.J<3CKI/P#83O* \V&+Y*G
M:'>+X])D],(WMQYPLD$'4U>[-J*E&9SVB!>+ />D%\Q;S"Q8NL.F0V6);6.!
MH-=1&4L/'IGY4_IIZA3=BEK\7<E3L'O*WK]K#$9W@ZXONHKX&1*5R:I.STZO
M%S513N4.H9=&=%X)>R;G\9WD*)6QH_Z"/Y1^;.)U>CV/;Z#<V5G9273!'&]=
MA4* U]_ @4XXX8KCB F;/=9]OVX+A0"#BA<@/=6/C""BI[&_VD.B>#: 5=;M
MA(>;XDHR %E],P,@+*T)![0V4/^Q$3Q1#7YCVKBU:S2<&>EO+]SAXN/8*MNL
MJSO+2P1:_]^K]=^&<;A-/S25I_J[T5C.]X'#W*/OGP<B&S].MY.LKPX;7,@%
MH'X;<-NYP064&P"C])Z]G"O_>N:[B.;,UTPN@/UR-UR)Q/=G\B>1&P_XB?_$
M?^+_8URX8X4")7SK3L?UN,/_ %!+ P04    " #"?%-2CS \[0Z-  !7\P
M%    '!E<F9O<FUA;F-E9W)A<&@N:G!G[+L'6)1-EC_Z A($ 4%R:B0(@N2<
M026)V 0%)(KDV)*;V$A4,B*@Y)RCY)RCDI/DI.30C826T/WO;W9F=KZYN_?>
M_\ZWL[O/>OHY#U7OJ:Y3I][J<WYUJD!_1:\ -Q\IJ2H!6%A8P O,!T"OWD0I
M0FTL 4!='> " (  N(8E!6!C2F28RJ-0&^ :IHR%*1NFI/[V%V !@)N3.PP
M/N;9#4Q=%L, P\Z?OON+?M$O^D6_Z!?]HO^E],C"T='&TL*9605B:>E@ZHAY
MA!N#\R=,08'!#D4QU_Y:;GT7^Z<RCI ( +Q[]Z_E?\47!&F_]?D+7_RB7_2+
M?M$O^D7_NTF07U! DE]0DE^864!04E!,4E#BWWR&02* !>"(^=@ EIB2,\ ,
MJ  03-D2< !,@=^ "7J5B-7:U?65)!^?HPNOJ3GDI06O&<2!#VKZBD^ EY\/
MD):#OC(UL[-P97YI867C*,-QV-3&P6QC+L.A*Z+.K_[J@86UC8J7LX6VUY.G
M9EYV9A+F''*RQ(324$FHPRL'"U=39JB#O:.+)%2&Y4^]2V+*OSWF8Y&5=C:W
ME-1ZJ/3G%IB:#,N?Q^+AX<'K(<0+<;;B$Y"0D.#C%^03%.3!M.!Q\71T-87R
M.+JP_KF#AQ8N9LXVKUQM(([,O]5-7T+<7&58W-QLS"4M32U%7IJ;B_"\-!4R
MYQ$0,#?E,347$N Q%Q(R%Q,1$!>T%'C)\F?UYF9_U?[*S=G^3[K-S?@L["T<
M+!Q=73"S(<#'PO?'ZL1,T5^5_IO3C[$1TT;R@;.%J:O%0PS+_O:B>?@%>?B%
MG_[E1?,*B0A)\_U=.VF^OQOH?\%LR4J;FTF:_38FB/._J->V</K'WK:]C>S?
MP^M_L10C^)<"1@5F_5V_?EV:[V^U_S^G@^_/RP]3^NMBQ7R3^9] OY3\4O)+
MR2\EOY3\4O)+R7\O)?\*>"T<,2C7 P-GT?/  P ?%Q</]QH^'BX> 3X^ 2$9
M$09C$%*2WKQ!1D-)1TM#24--S\1QFYZ1G9&:AH67A9WS+O<];CIF/B$^+D$.
M+FZNWSK!PB<@(+Q.2$%$1,'%0,/ ]7]-Z': C #; X</!XL%P";#PB'#0G<#
M( # PL7Z$_UECX"%C7,-%P^?X#HA$:9!S4T &PL'!_L:#B[NM6L8J2]&#EPC
MPR6_+:" =TO3%)_%B4+P=6PF >O]R@Y*K3$XF]!+YX#KA%34-+1T['<X..]R
M"8N(BHE+2#YXJ*BDK*+Z2/OI,QU=O>?Z9N86EE;6-K8NKF[N'E!/K\"@X)#0
M-V_#WL6]CT](_/ Q*2L[)S<OOZ"PZ%-5=4UM77U#8V=7=T]O7__ X/C$Y-3T
MS-?9N=6U]6_?-S:WMG<01S^.3T[/D#_/?[,+"\#!^@O]FW:18>S"OG8-YQK^
M;W9A87O\UH#L&NYM 3QR!4U\4Z=;+(*O"2CNQV96=EQG%=*"4[YT'B.D8A->
M94?\9MJ?+/O_9UC ?\BROQKVKW;- 3=PL# O#X<,D /.E<*X2E'9=KGS;P_-
M!7KUF&_3OC4;!3*2@!I%,UBG;@X:&#&(OL1.1@-OLE'D+1PHKP78"L7RI2)@
M/Z:W#(_?EOLQO8X&@#PTL,:)!H+*5=% 6AT(B2N&!LCDZ85UQ"[9O<"7)_5H
MH/UN&S),;I5['+99VH?"4D<#W1IX0Y21:."Z<1P:D'&4@Q-"4"S1R$?'Z3]W
MG=" OS8,08%5]6L@OP;R:R"_!O)K(/][!E+*S3WOJS3$6_+MQ^TX*0,;V@YF
MN"=#H/RM,44*0$?N#6R#&@V8TL!*[?^V MAK8L3_DUE'+%CNFU$TJFD$#62G
MU=K1=Z8?\?:A :---# V@IEL346 ,GH-]#,8#7Q5 NT:_&U%GIX"(_XCF')=
M;+D&/Z!$A"A<57C17;DN/LM2#>I>J1T1,4@B?L ]&_W 1.@20#"%KJ(!2NC"
M[GE+2%*5(4?BZ>?WX5^Z/J<VO1D6E/0:UQ]<TKT,/85L1+^"ZW:;$/O(5R=
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
M"?TX>5TW_TM0E++TN %TN>O,ZY/-J$F<\#MA 2F#_HHAEJMOJF$_';OPN4K
M^*,353A>8;E%.Z>2C('&MHG8!#BX^#:6[AQ8SYZ2?P%CR;.=4BK-]TH23\=Y
M%)0BPY8&:HV(/J31,CORE]/[[SQ1PJ*5H!FVP:I3M+!>8A\_.4V3$?64WO5M
M=6OI:4[XH41_$,<05H+5T=%+(EZJ_P^GT_X9_$>F[)A;&]0,)-C?;1 9BY;4
MX7_3X2!*4_)D-F.5X>YM?D953)6]GLQS7\]-7?]'%Y.]A^C-:LT>0BHFU:"J
MF.XJ_I>;TG !XS$G"/%BT_QB%P.\7[39F=/"=$MA94J=6V%<F-LC\.%X2?66
MN52:E)KY6[WSF P<99/=<U2)ECNJ>>8$F0)Z8R0B8]=N=O^=!-M-PP6.!(5N
MD 5WFI2C.<A01Z1*V07NO?H]]:-)+<SZ*TLO"8WJK0U'&7G=D77CPCP,T(T4
M/MJF4X\,2B1NM*JI58G(GPI['7>2-=]U+I)6+)IODZ/740#NKG,R8/G,<3&,
M!UZS_5G3E@1SL1]>VF].NAA6[O4*3IUYX\/H0CQ)3:73^..!,Z*?\65R?_PS
MO<"CF&\WF)P5G8UYZ%N9;<]VGE5_]C5X&(7HXRHK^W9P/-]Z#T6Y6YJYS6?F
M8GYN%*=OU*3JA%7W@.%+W[WA^JY;"VG5M>>\B5:YC((3ZE6!8*ZG<XK8)0^9
MLE_0=)P_[9D;J0(?H0&^G1X9QZ9B/]B&\W3V"'+35Z22F(+NAH AI417]7 _
M:>LH>/1BQM:E>K_7J=<V[V/V=A)[_JRK@^0$N&X <F<<]ZW0;C#P;-" K:WT
M\#QDOQ4-9*D=2W@/:7?K) VGYG_:MBAO7BRY]H&>VD,:#41:PWK4T(!&^>7;
M9V[E/YFDA=  Q.3\GJZB/&;_B-!" Y/<&#^AB08H^:[NMQVQVVO^$OP2_!+\
M-Q+H!"?.^XU@=B(@UN$%V*25HQR3B\[?;)-^%^I/JO26*-! K+O<^:$<*LH+
MF/U3@@YV$PU\X4-U\J,!_:^_JP%?_U\R>SBITVW?H/"1JQ;85J41I4OCS&4T
M$RT:J"N_HN+.^L=V=_\,_C4UOZ;FOW1JL.D'+ .&57D<DG8L0&Q<JQ[IC]-P
MG1-:Q9NBM:9=6UQ4PD:TQO?PLLCGX",4\-2O71]& QM4F,OKAUR]IG-<?:D.
M-0RDBC?J(NIKJ]\,W,O_5!2E*M(-E5RCC]YWT'T^<2(UY*$5Z+M FFW807X_
MD,B!'DS'_4)@Q[F[LE>2QVC_J[?>]K&,MDE+,&]-*??CRD_O%AY_,K!U-A3O
MOX9=B@T(I'DPI7)33:PQ_.C+W?&@XXO-L*/F=K#RXJU33V13.GI0@:O$&L 8
MS<ILOL[Z9(R']]+"@2_ 52H21_6"^(M^FNOFQ%KJ N=;G[RG]P:=/5[[BX^(
M@,&5DVX@/"2X8WQ;/[@%%>MI/3,^8+U]S6F^=G_W+A;(?0JXR['Q[0;=V/.:
MG=;=IJO![ITL%,RW6@:_NY6%[AJ5#7%A<]LDKV)I:H5O@"H!SP]9DBG"G+C
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
M+[6&,XIWYO+!FHY9?>YI1B>_;_PKY<WCLGQ%I,U*&ZGG_V'O+:/BZK9TX2)
M( 0GN 8GN+N%X,$=@B1 D H4[N[!)4" X"X%(;B[NP>7PK4*+?SC[>ZO^[Q]
M[SG=?6_WM7%^[#%V[1I[/WO.->=:<^ZYUK,LY*&C:>AQD2Q@0+SD(P#1J^[@
MPZ$XI1>&RR_>X-Y\M^(.H#??9^+SVV8?'D58FZSN!%B$<V-Q8R>H;F)1H-?Q
M#)OS/ NSSQ":$;?!4_<P4>><.IU@XVS#W2%"W.LB%\05Z!^+B?D<F#;C@^[&
MKSVYL&+ E-MR)K(U(]W5LC_02SGJH!?6WOY)HD\!XJ4&^W5\:4#.H R-B72:
M;HO-2_#]?-@8)S$@1^BZ0E-J\480422P0YR\VI-T* JQ5T<_.&8^TQR\4O%E
M0)#R;-"N 6':=&>W/<#.48+$=[%5!*[[UJV$V,MX_1N9]6S<(Z! O]QWJ\1B
MA^CD*-Y3)P<.ZM%GB*BNF181+);TM;4CZEWEL2!>&'37&'N+4+C[0#_>+(7C
MC:7[<UK3;M6\7IXO\RT"!%;.W9V)"BZ87C2&$F0S!-U)3H]9YO;7"P[@]EP9
MB)Q%-\=:(D[L5K!,^3"OPH'J$>_@#048!/M2M1A&2P0_&Q\!_KX(EZ)"Z<TZ
M15(\.MAYLZ>TE0)+T9'$NAX!0N.(N_]<S/KUY/VXNZV$4PNWW22)+<&-YU:9
MR"W?G$T/$7@0BC5YTUT5H,<_KFZVLT$?K=/-,R1RQ0)%57YN-T\]$(A'W+GI
M4P:O4-SR!MK?MY4%DAGK0O97^C+MM=CN7JR-O8!T4Q(U*XA(%L?J&6AZ=8MJ
M,]NG=T5_%Y>4(,B#%V^HD'(O>M%"%Y<6CQ<6CLL*2+6NI&_'ECP"(XO+8O"\
M1 (EH(<K3/ $L/S&\D?S< %"U83!J:/-N%F.%54J)%)_6[]@AF>U&AN$$<T?
MT1;OF*&9\T[W6;)E!PHF=2][T>UC4D*$<#+SQ<3]H0>#<^*X=[+%;AG7L24Q
MW(=0@WC493)@.\U<=I\"X,R3G<!2#'VZC)<=?;^Q,'(TC;,N:8:G]Y8NSX'_
M1&RXCT)M ,'G4H900+!"58P;GETFMY=U)QSX/JSB^+@&+"DK!F,8@5O4Z<]-
M/9!Y9ZPJ_YQV+J[@B>*=E./9/7I=%RW[%HVGZ15H04* 5)*&EN1H%W$H--B'
M%6A J@];2<]Y+=X<*#/5G4*\2YN CBE\>95/B7#.?&D!,VK8H,0E$ ZW)HEP
MM_9.M(\9VS/*E@8XW/!WJ2##?8>$5$*<?AMQ!B=FX<J)KX&2[H&%6IJJ1=F:
M3@ 3M'\JQ)4[]F1BW7%"/(V9NU/?$RH_QUW#2)!].(B6E>RU-R1_A;!%T_D(
MP&E^EMU,"7Z*" SR91\!'&"K]GJMG;"=-;R'2P#D674U5N3-\^QB#,KNV&4W
M'0.BYT/:*HR"HUSQWK-(4.X 3[1SA>&Y9OY<MXSV>;? ][73K&/2&1PNF:H>
MQ5=$61AT)OO$J.8?8R7[J9.:,U1"C-Y ]<X>\-W29V>4?7_6Y%C4TMP6/0+<
M48Q^)$36Z%7"1PB2O5*-NUMP3SJ3AUWRN[.&+#@? 9^U(*L9*&" AS<^<N)%
M>;X%_DJF(\9,]5"C8%:LD, %N@!U8=:SYJ:^#,X9WE5L_JZ3T'B(;IQCL;7I
MO5'*BX.QJWX1A/ZQ"OE6:K<3-:%I,40H*IY;QCTWZYCN>;_GX,[M[UUA,XI\
M*:<,1"A?^IHX%ENFF?[&OO89")1/V=SX[50O!M)^=#% A0=G[TC5\??BQXS+
ME3VM&!,Y>?BU(765Y[B4.6Z"B>ST7\3 9*0$HU2$!Q8.E;G%O(>=ZRN'VF!E
MU&9^U"/AU20F?N,@CW)6H5>VBK.PE]Q*/ VNN92>HJMU;K2PR39=<"6[;#_1
M8)ZOUG2M$M%1&!?CMVY%#_P0TY<$&['_PO:I"FAY*DFL:OP9@09_+Q.MIOA.
M$CHF/PWB%>15+%:[N_WZ6O=[O0-:HM'SE1_.O9YSH^K6/@154=51W!#VL/5Q
MR066GJ#AM[[.!G8 WW:)RXH\,4*I]5TQTCWYM7FZ9#G4E?=5Q3JQ)Z]3_!'C
MYX_T=Z=3%U6FQS0G/=-M_K/*-?C#;C$]KOHN%9A1V583UD(_DK:/U>P=+]U8
M33#JAN.5RF24W_J]$#88'T=1D7;?3H9%=!UXNQ? *U0GG;S?CEF):><E8[\'
MC^?Y(<8MZTEAUG<\SVFYSQ(CU9.;R,2^/FYY1Y @<$=J.W4]CI*G9F3 T&?#
M9[&8 Y?J::R5T3JJKOKY8"&6WC3^U*?>N7L4+5!V>LO']4I9$TXL<IP/_H3
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
MYFK6/L5!5.3'L4MX\'[]&F<0XJY'1AIY&8']7OQB?=+D?B=OB($>BNQ;E/7
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
M^3^.J*EC1#Q)7Y7*Z-1$M.DVK]7SRRLO&DOACR69?P4YIP8Z&H?Q@U,I__<
MM4S)J$W"-I6#AV;;_TU2:REFHEDE&.LI$62:DJD*\U1&F'=G90,HA'&QQ+XA
M@/[+\?]W2 Q"LXI=-1IARS2EU6BL5DLS[Y:@0L(4CE6AJ/Y_0V+KEJO@\[1T
MH>V7WGR]Q.9?X^@(^M$XD9ZON8A,'7EQYTE9H&M8N7#)Q954I9E=AY%E?$-@
M_S/PGWC)_P0L_J>.#/#?BOIG0O2_%#7W 6>9\,'ODA*.EKDN@?)?@3CS-\PY
M$?1?C_^_0^*_;LXU_]=(''[0)?1NUE$:,]F4+(;T37VMRK>XCCT)W$? WY3=
MD_+E'M^"<S4AB4WD9 ]N[J!-;+()@+7_V+WT_VP/_==]DO#8B[VJE7E%Y.!O
M:ATT3V;K3&'Y1@(%<7HG%=#P?]2 _^]'K %Z KV)XP>W2;]I5%=SH0!NS+2,
M__(&^N3<OOP5XY9?TJ\(N6CRU*A4OTL4^O?1XL''GR?^5^P"_T^'GFLKW23/
MO?68?%/+N[86[U@)_.^5"R.C""]C(R6_6#RO80Z '>=4NN5V=GQQ-O#_6'1?
MLG7$4YH6%,V-5(2Y"S%1WD8$)(R]US#((R<>7X+W257-:B@V-+L=TR::Z "M
MO#)Y3FFX;4Z[,H^3QFBBK9S%\20+@)<+7XK06LKJ7/&2V^NBT/SL ^.'?R-&
MAY9S?NAM*Y6M<.L<4VB;N@CC:>';9TZ@FBC/,QCHX_0[P-&*DD>JI*$U]7O!
MS_/B89G]JXAFY9(<&QV?2Y0-MI57&%>*Q!)9O_G'COZ^Y_%PT,&]]Y/?.M<5
M7ESYT&^%1E0;*BP<6]JNX)C7';UP!]%5Q]G>YN65E"$<V@<N@*V$CM/++0]*
M]I+%G!,(GVG+J-3W&(0 (O%%FW0(UXEM>>Y=NX5J^F?9S_=,_-NJ>3'8Y"KH
MXEP1<=OC2KD8J:(J,?5:K]2^YEOCUG5>0"<7]OGTDTJ+E<QP]WL]/]%DN).G
MOP]KZ!9.BX3XV2D)&TNW9H:UN-SS"WMB4>RI[Y$8;A=3_Q8#4X-_$%OI2[LR
MXY&7GH82B4"Y(V$Z("^#?-T#C/Q^WA?EXZ^=:Z;8; DX'@&NCGVD;W90BO%'
MO:23F%FYI:;*JN]E/MH4ZRU]J9RRJ-==#]=BD8\B0D>X<DSXK:5"<-B4<7S2
M16!$5P/C[>8D9=J(/F:V4N8*T1)O )B%X/IU97"'6X]IK:RRBJ_==U2L/UCD
M<2.K#TL S!(6?IZ/D5@*]:S75K9\>M!0(E4$T<KSF);V'F>;J?7JO4"DF2T'
MNKB2A(;POF0TL!GIR8MC9NHEC_63W0 .71@*:\) (=4M[ J3[(<5/"TD^R\#
M7:VA;Q1F5]2[H]M94FQ=7YMW1KOCB]ZUK3T"XF\']1?'H(LWUQ3)>?!DI3D&
MM_/9QM@W)[@#YCQJ<@V]ZK(2\5C.]%74L.-4UN-RD&F&L-OQ=ET=W[BBTUF9
MKA[M/"YN":7#3ER[X Y^3T%QD27'F&]N7P5=UN1(<^U-1R9645/.VTJ6)?\D
MD_>^3;V</W3D2W490KT("W8YC("7G'V@+=[9B,*(6I>7 62H>1_KXQ?]C'S#
M7!VT=8SG+D"IGZ)KVRX*[R@[TEPS>,=9;&S8:%O<(<VA1]C>T0L&\1.^8V]I
MM%\+4G("L/1]*C> WN(2M=.'SZR?7>I^JM+=ZAPU-WD5 H %-@F(('Y@",F=
M]F)RM' '6^I$O+I!Y^/L*IP?L'L=ST3[FEC#76EPWZ'/DBI@!M@I9-@Q[<6=
MO8^#+$8\A3PS[>LFZ\C(1+*3_28#M(VAE7A^ @?>L/>-&XH9Y]SK+>FZ)<O-
M\'JV<*NT*$8T\>BDX^@&(:?(CD05?OOHI\PYPJT"DTDNV6>U,+GBY@IXUSGX
MT19^4.N084!I;KHZ/D=)?F!TISK7TY($QC7:X]0S6!K*_]"'DT+BT#5LV>G'
MSSZLC.E&7PQ'&]+XU0P] N<)7=3-L[P7VM3W3SOLF.4HHL;U2EGA0A=G6]H\
M+PYONSAX, [;*KS8>P2@'(O2:,Q\<0(2-D\?$ZP@[8\D9'#[H=!"W<AF7L80
M6L[>B"856*0: '>#9E<MJE.MZ-XBVN+D)/>B,D1SCS(],+4HLJ.O\L0NOS<+
MWGA779VT/L05*Z8[DT8!;S_YH!0:SNX$"M9'SLC, R*J\U7J-LGG+/_\Y?Q5
MJG^79FE0V.1C#'&O7/K4:1W$%T[I=E.1^0_O)"P\AF_UTXT+A#L_G%S+],7B
M:P[H8B5<= !"48/?%NE4.,U:?=! L?+@0+.XJ?#QK#(I3.6GS"B'SX>=Z,3!
M1;V],WVX;">)@B%O) NH//@H+U8.UN[P,K<DD953JI\8  EW#0N^S(<H<9;I
M&#2F#FE$/0*J3GCNDSAEQ&32+30!L?DIDG&CRGS1<^8CMB?0AS:VH/NT2^,8
MT$&;1E4UC"W.MWS)\E*G6/2BVN=+94XE6E,X91JI/#HJC2"2PYOF%:::.ACR
M9:8=+C/PI65^?9,[!_[F)UPJSB'LAH,,39/MAHJCHM?P+F=/WHQ2\M0]ZHGR
M3/D&W7<1W-Q8''UUMBNN.Z 6(VA4IQY<YJ1[(8CPN=+G]8IEDYIX*Z^ZUQ^-
M6?%_;'"DM$,25#.;1@ZNJ]LP%#SD^Z9.E1Z$2.W@%=*97:H',*/C*0M #_NW
M];R!A6<%_ 0,?EEF&0'E5A[@VDJ+RS3>AG?HFN"9O-ICU MY?%WG@_!3):'1
M_9/UMJ"-9)6YUX:$JJO%DN2)(RV=O0-<QY$V.EX@C>^GLK; %BB91[CN/CUT
MG]($.&O#Z<SG:%=[2WARG=E\>PNEW.[EUK%Y!)2O[L#%.KW%RQ\!6_#D&A"Q
MI3X=K'JZ@D(01VO+K"[I79VV  9S26(81<]@-(9BD5NAPA1[_*@[&UV].;KZ
MY"@PDU5%QI>)U$3D]#<9I<(&[V_V+]NPWN\+6O>;*]023E<A,YM?!^IT:T7"
MT?IJOF7^*.J \"8667KT)GM6]'QIO+J<&? _MSJ_^J%?58;3ZS59.-AN)HCG
M(L[FJ"!T<N_N%3('.A@;/X\R[1ZWO!D)#BH"7W[?SG!_"3F$]CXW)A+^-1R.
M0NFY^"HI@VN\XLF,9F%K,2H(Y4FG*P8603BQ>K1:)EBFD10SH3FC5S>987?O
M!^S9DZ.X9L"J(FFOQ[Y/%!,QC%A 4,1TU\[+U6UH=*<_PO![@H1J2T$T>U?,
MKL6_[Y..M[*_<[?3,!$QXCB(22-5$EL36MP;/P#:*@ZV/5RB-@S9C;C+,WER
M#&P*+&UM\NJ2.+K>] IJ&5AU=/1B8@II&\;$G*=4WS*#9;1^"45-! R*5(.Y
M4M[;M^+[J,*1\-K']#<OCM[NWVK..(NR35X.6U]J+Y!_2];^93!XUAQ/^)',
MWP GEV" 2$!@E%FCKQ.#^1WT(:[0:B%RP+Q([WVQ:8&*767'JXCZ!!(.(L0"
M!T\T_/**F7SX 5PO<'ZQYA& ==9X38Y9 _$F[3K]P%;"*Q _[ZHH9'GET)E+
M/)8:]ZJO0D3[5*@92)V9&+(FUT<9Y6!$HQB#MY]*$8<,'MS3X)AFWTY"B22"
M4/6]6$) ']5,%%E'I4D]&&@?*\S*GU(]R(XK="M]-].Z>I]>)"NTMZ@T[(<=
MAG:,Q$GTL>Y'@#1]W$8+Y8?6U#&5^H0CU:RXM?K:)!1&9<22_A*]%Y1N9IYS
MS.OIUKRPL0@0J?)L_,LV:J!KLDQCI$*E9"B@VL2"!N L6J4W:\3P+N$#+*GP
M8XF!=4A??U5EPV2Y"78WZ6;D$*UU!7,_A KO-_I://O4S9TL:.SF#K/([4HY
M7$EBI4]($NAR.=Y2C;LL\J!?''?Y+E)+ZWNQ*)=0^-,HQ([U>UYW><DZ]IK$
M/^803,2^'6I2(J&J_,*<>)>+^\/R<<8*.90M+8=TV6-@&.,R8H10F5")9?B%
M]SYU7+(C-]\:8>8&?A38^U??.D-H=028X)H=DC$P4IY9^-0LTAB=G"QJ'YA^
M-RP8"/83E\@;C34:;S\"U$'>.IEWB.-WTN HE/>*P8%'W"/V^-78H,5M>9I@
M1 $!1-H,(42E&IARE'>QL:Z>D7?!?N=KUFZ[WI,:^8\=B.@.D1P-@D0]GWBG
MC1C@P05Y3$S5$V",VZ]K;M]5.)BPWZSAFP2H2P*B.HOW/%('8 E:WW6M!Y![
M,T%6^-V-2H/O)F5I>_J^3P0CHG-TK^T$6-%-S=W</@(X6RMJVBKJ5Z?NK'+W
M];N%/H@O<*PHQ]"JK5CQ:R_.V->')/&2F;D>,RMJS1Q6*SYOGMX^S4;'MI%Q
M<6% T-(D^,S@!Z"=Q0IE9:MA)P!24$^#M^L0VJK.=PLB<UE0'4Y-3OE;E3U+
MP!2"=0VK6=9V!A\,I?+W@8Z.&-4R\N@^FF&Z5%NUR2@ O+YGR: #7SC"S+4Q
MU'C;.*97_U7CN]1P(_$$LA6IWMG3L@-V8_8!YFU0WVN7S<#)I+,>;>T5W.:Y
M2>$$Y&KE!ZV>ZJ33)O9W\]0A2#\0XD:EW4?S\XR,W2+A28;B.A$R:7JX_4D_
MQ_!7$R_%&49.QU\D[T  *'T"/493":HS;-45F/O4UT>TT_G3$"5%1^5:CMB/
M>B^]YKD2J<1'@G=BK?*?>LSDZ^,'E9_\-JX/F7?\(Z["TK"D1/R+VLPB>;J:
M\QX:\U,Z2]S/Q*?-]P&B][7Q+R#15I!>?9Q9F>3+WEO)M'ZL2W>1!/:[L[/:
M:\]'P._EIH4&%:+[)C48>:2'QX$K/T%J5//7@K'"1T!W2Z*N;=J8)A&5N1]7
MYG>LA)K//:9>(N*@=2NGQ<W66AC*8EZ#IP[!!G(S]W6K"Q^N1E13G=EY#I\+
M2,D7@_<:>/]!B:>M0AQ..1-] ^F>O5RA2WO_329V8?YE:6EALF6HXU$49[3B
MQS&CKL!4W6;C')7US=FU9BL6VKB<J,F5MZ<"G_*U.9KFZYB(T.3[\*/6#HIZ
M@XOAM<=,B[>?MLJ_22&.,,S/X70^HV)Q""<%4+8"8Z92CWU#M!L]K#Q&JG\"
M<94<Q2_-AUT)[*M/^ZO>!B/$559_E#(1'\XSEP=:[<%;?(Y:I1Y:MVX>"DNL
M2):C&ZS/]B;E.@71'6C'1;ADVA%K<NV(E5%%_#M06J2+X,ERDS7"HD(/%S3-
M+7&? K#+AH?G%].SCE" )C\PL7A#H9?"]4>\*M4]3N.B>YZ>![<N =L7"FQ&
MFB:H5 &Y6VK!1*J<6F+4JV$7E)CODH3RA_3WQU?>SWH8]G3F29HA)4416=!Z
M-8R),GKP-"W"5H\QX[T3GC(CT*K;D-04K];4204%4ZIF4$/MM\YX_F69[^Q)
MD0X<9>T_8M249YKE,1/!NE;'X:N6X<"O6U9\$6[4:BE8*.+<;R#1>9<]#JU,
ML]1SS9)6.49["\-"HF7C1BI"NW4.$77J% +?\MZ]"7C50$O!!RDF(:%]!"P(
M[7SU>E^IQ/7.M^K+72+Z$9G@&1IB[_LRR*I)MHWKSC]F;%-#-[=1Z>*])/1Y
MR5$8BYU?5.7MDI-.]:LM'4.9WQ0OV-G][NC8!N_>'*=7[/4^ N3KSXZ"8G <
M(K^;?2KC:*= I:[/1!/M*0RO 7_6 .\+>?[NIFV;X2E^W;@27(EN5R9G*/')
M1_<F [Q(HSC+4 =W+['BT-]WT<\H+EU:7(@ "WDZ1J2%,E.GX$AVFS4@QJ((
MY"S7W8-,IBI\.^?N,"?[^F[>+W@GSN:^F2>7V>TPI]#73GE?(+"*UL;H]>S%
MF@78>*;9('<WV?=S6ZHOKZH\0YP%S\8KP2ZYB5S4N< A; &QD(882E0>,%[7
MC4QZH34W75*V.5=^=(IH9Q^2.MO&>\MV$\R4@4-FYEXF]R+@W!P?#*BMMK0W
MP9HS;Y70GYIR'9/L'#PL0; 8N/43??Z+'0:K\W)%8O(=ML'!XH6H&JT\C1Y.
M( U&A_]:C'[/U)UYMG5J;.6OYL\I@40I1YO1@IWWD%>1V;1]WD$;X#Q^?B-B
MW<_!K&SYU;\G9!PJ!=_CHXQ3B*.=PO*M&T^"O3BS]/9<9X5"OIJSN#I\6&A6
M>]*X:3SRB]<(9DO'F*H_VP=ZF*Q&MIX"Z+LV[.ABXXH+>$9B/CQ3<;:"9%7)
M,^5G\*RC.5<'-90K@0MUM0):6?("DH9L(UF^D4)5V^PI1[) S);7P%AB]I%,
M3A?Y\QL5FJT=_,Z]A:B3D"_KTU_ =Y+X+4FQL'WMA93,(>!8W,=H_&\0X2'T
MKE.3: \=%=$(-XOV1J-8$.^0H,@O6W8G0Q%#N<FXY*56S2#;SY^7"(MNNYKB
M:X[N_]B '29);G/O] @(A'/;[O0N((.#T]=;/,,J<KD66?.KZW#E D\XY&;2
M+/L':!!%IFI47BW,PUWFM*9<K)F]63CURAQ,E"?KM;I,8 ,,T7YS*.MN-90O
MEG:O;D:_>M4&RB5U$/2.*H:&E6W%-ENUS.2]QU66^!@@K0]U2;-G V=;"06W
M)=X'VK!EVR.B7W,O"5\SQ?5J<]-[<S'-&^]<\U_GP\,? 7/+-TWD(Q5?SSV7
M;7?D:EJC#19UF_?BI/"EES3OX(NQ[0'<L;*\SQ,AK"\-6@V4^&";B>,#>*+-
ME7G[0M7*@P2J7%RJ/SX_1?JHA? NAU.KA29]^;P(1,Y)VR EQI2OQMQ#BY&4
M+>F%E65/@=2N@^+&&!8&-:2;RW*!Y+W$+,O#<.U:WU8>YW&X(.UZ57TR@&J'
MOH DWU=\Y!'0?GN/PDJJ.'1J#'XXT9CDQ9"94JCR;'GK%(#4SK;3L O8ES]$
MH:]*Z[EA'/]2$U2?"A2^P )>>LJ;QYO(^.@F*F8(BK,C@@UF3W*FJCV_[D1O
M2R_HV(#+DC'EUS[2:)M>VQOYKI_@KKAYKCV$VMCD #&*>Y"T5<A21>=N>/P%
M7=4HMJ4O5"5%$'>=?-GG'E!6Q/HL'#>.6$4([3> Q+.7O0(DFIP_B%$AGU'[
M;5;94/M%/GUOY9K,::V=NGA!6]OZ/>]+ZSOPL_==8CJ9/V7;:B<E1>Q''/CX
MM/$,X,:='I9-24O*-^FW1O/R7T[#,MT_1TNK-Q4Z4YDB(48GBD?Z+!?!XWM%
M19V;TB*49%;>35E,/0(VC ;+^)5V2M"QN=J)5891!A9*AE+83J GU_?+O R%
M%_>^7>G?Q&@GV43>WI 1EM+GQ/&,H#&3EY3A__J]&*N+;B%R7L0FH@2RV="K
M'GAGA0&.;6QL='<)<Q7[/46T64MV<2@@6&Y[IATM'EF;C&%><I]*S@849)-)
M=/BHIV_Y&^NI->O0E.^.B#9GQE ,97A857KJ[)57%PE9G7*(**S$1NNCL7$0
M3+^I_@;<GZFWXK,S_)&VR5P!I^X> 6LD!Q#1YRI8TN ^+_U>J_><7!VOW<W0
M-7/ZZCSY-".1:2'A+7E /J&ME,8I>BL:'<[& ;QN6/U^630B$T40HI'5^F9U
M/=S3!K/49D.)[T1YAKXQ'&A#L:GRY#NOG&6" P,B):]U,9;\#<6[6MX\C(J"
M5*?UH>D:JF?KMPYOE"?*Y(E<M=!>U7:Z'!$1]3\O66@[J+O#$<N<\X4_;ZV$
M8.!)-MWR%;I2*U1^-<,Q4.0(X+*C>!O^#ACK8T%EY[XV==*LDV=U%;<PQ',V
MO%M1.SH*3 ]?=?[178:C(L#JWW%>KJC'KZ\2)J(;OR<4#)UCV3 @J*UVCUN2
MF?B>\@V'DI:L0:N+PHUW^!'0*0C>5;.>C6-KN6]BT2Z4RU1Q?Q@T9,V)O,Y7
M2?2;^/'5K6]YU$K6\!%0P1Z[>@&GR 7#X\D)U:9L:*,^K/!$,5>GO</N#<[0
MZ.A'L89$ZSJJ+;C-23;5M:: C):=SG$_@+>J:\=(R(Z\?[VIU @,0$ ATY9)
MY+8V8IR[N RWFE,*LG)9><LLS(5Q]OVL@VZP8E8(4GX>9:R9K-\TE3OK'&;(
M\AF8KM]UF*S.0_A,RC9,G6JHRGX=9=B^H>EEU4-;'N7<Q;V3J*P,C"VY@GA.
M)56-M7:*AY]OTF"(Z&.B*5D)N/J/9;@HY,P4JQMLL3QFTS4J?)/$^K(Q@R$&
MD0:EO\J.3:6V<I%'#0"(LPW>GJJ-K3.\ABJ*U2U5)"V)M:'F=#-E2:?-)[3!
MOV6IM+LM>W[)8&)RA\_"P.-33D 5%*M&GUR,J)F*^9W6JLF=QNC9)8Q@S7=1
MM[W$  H4C=_X4S</3>+?9RI !S?+'KG9T\TVZ_?T<K.G=^E0<(>GISN#W(9M
MO-Q$*>KXV1DG8N 8?F/T+YD*TN<RQ-HH5#'Z9R\0)FQ%)#'*(TH^+ #US9L]
M]/N>\NJCH+[-@=-M,ERL$Y>8[S<D)W?BIFPIZ^E<O9LAJ;.3C&94.RQ%"/?2
MPJ![U[LV==OSAR8?C_MN/J,W$[RDX+<O6=\*&BM)Q^_YO:;11I=<D9D4T]Y5
M45"BZ?$0:_#FS<BT9UC(EJ3IL+=AP53]@:(5I_D+5PS:?U6N(SN;&[-A\15D
MH#P;W-*3_JN+QG).X1</M?H:'A'QIFGF]]CG0*&A[MUX8 ;7]"&OHHWJ[VL"
M%WXAK>%G1(%><2EF45I;[F1FSSP1?N#J7./;9LY)@57(?C-;8[B^&D"N@2Q(
MS(X/.-,-2&O0H&Z\;6?F5'>G9!<HY<_@A1Y%QP!+/NS'O11N+UB>T!OV^_DA
M6-6 V!P)$AFY\7.G$H0.)U2<Q-ANL&!(4NHYCBB,*"91Y[I-'HR-&AY>#+B@
M='/=X=5L^0DGM\CYL#MWX#4:@5R3E"FR,Q2]I<N3AGCXR8\3W2,>141C<<O\
MX=/*6,N8+(R@EH><DXT JWJ,MUM[7+(-E$(;_0I];0T]WFT70Q($8<4\,#"D
M9^XC="#$<4\ZS7-\=;LA2/Q63M:NS#YP3W?CE!+?2V)*&W7[EB+*&I1NR[I"
M@#?T?0.9[+DZMH*=A#A7ZE#&N5M=;^!1DGY+N%6.&\]TLFR#5KS%VRAA!=/?
MI0%OHY8V$WYK'K8^ @Y.[KI4G@+$Z#IE6'1HR?[;SE[8B@7Z)W80K?THX8F[
M.E=0 ODE7OAB!3OT"'QTZ(,\A9GH;6&_7IDN><QJQ#@.KNJJH:5B24OQOWZ)
MCFEOE*U#FS"Q)/_SS]PL7V;_M+PG[_._?_+Y7QP(Q$2\^#7@EL0REUD[61"2
M8JU CD1)X#A".S[K*X"FNO[BB#WZ:0?I" (]$S&"Y2F'2T8N3?2;?]F(ZQG3
MD<UQT*=MU.W3'W(9GY[_AN2BG]/,YN>$ ]XP@FW64JVR QBWZDVFA*@P7B,"
M*H\E (Z_-:O_N<2#]'9V&41R*(G=8(93W?'\U"_^5=V'9_)]#<7 -!A*>#E/
M)K95(UM:GGSQRC[VB)"_4'=1W"L4NJ8'J(9XG9?6(^ MZ$&+^H\BWNY. &FI
M.^MQCGQVHH(\63BQH5P'$@6JV+=SZ2A\&M627+02#L!YN<6M:X_Q.?TC8$N=
M'9K[ES^R,#/"M__\T'\%L;=;;OHW;@]?F%T973:I"A!VTXRO[/;7--N$B@[P
MLCI2+K:^>01D\S\"WL3Y!O_Y%\!)0]]@20F]JN/5+X-*-\-Q/%)LS42&[ X:
MFLI_\]9S'<[[IHV*&SS?TV)"N-I?G*NBJ*A]6#!8D2EV1=+(:>PO??,<X=N6
M+N(2-JIH6+GK_X02=G-JZ@*L"D)0<Y/6 ]_O^O$$H3_K:P @C'U4G_L;;R/]
M;XAR@5U39]#;A/V.30_)AD.R.8LVF'4.$&]_#$Q_6(;IW+]HN]:,N&/\RW/$
MPH(!$B6\'BZ6N,9$LX^Q[1=(KO@COK;PTH>@U;L2Z8=7?WF.,"F%[@+-XY"I
ME"8)?B>-H(D) #B]NOF?:O&,G-J:NJHZ79:UZ!5\VC)[*BUB01$L!R7'MK\M
MZZO9I"L\*1:H-$O2H1&A$U)O-SZ=_*Z=7/_AOW7KWVSQ?TO'.GQ)5W$EAAVO
M=LM_O1GT]S,7U 9<(3W#^O1&_]]0P_Y?]64=X7__^^A"*[ZN=OLNQ'VPFK2Z
MTC=<K\X@2#0C;:[V"C'*Q61$]/EC1F4PN'&%]W? :X=^&JL C"T$6B;;>J2$
M&$?U"6D G]RD9093G%G4="D->@A*$4U]7@C1T;J<2=2G<%ZTL/!G160 P"[3
M^;]T+]JS29=VW\O6PE>XAK>H)7(=<8?MA./E&1IX69_^_5NN]T\EZ+_N1<66
M_S@%]*_[P\1_^KJA_\!!IEWU"*"KZ%R]1)L6/V?V.").?%7U4XM<7J"<7>\1
M$#^W#KI%MJ:\P6]Q\GD-/4[< .-ZTQA7$[K@'9V]9AOX@2W[1I+,?WP<>;5F
M\1$PYM9V4JF[\@:6E+".\4S)0",N_RNYJO07Q $:SEY\QS%B<0G@MT= B!?\
M2<ZW8P\J2X\ V.!.3<7\5-=(Q>*2FZ_,E(:RHHN\#3L[VQEM?@BE0ZL$P 0@
MNR(XB@SP1"=)3)QI=EQ<[J)5SW)RM@]1YT*]>Z-28_!/R$;RZQ7S8QVSC69?
M-Z(H%FY@Y;1.\0O'6_C4#(R9!\\5HKFC)8AWZ&L)+WW@G\J(W,S,R,Z\'62W
MMI^LL.R@L:4N#.SDC:7XJR45J,>6?L*^,J^F-6/'UT4OOWHT6;)GC.V4MFLS
M"U6T\>0>C$*R&Q J3'P=M3HLW1[)=7^YP"%CKV[]\&*J9O75O-$!R>>T(JO+
M)"Z#/,)8ED7#=%1S;744-!G'#"M><12Z^ZUN57<^#Z<%EL9/>8A Z9;0954.
M ,4C()B<<.RB;I?<>.B\;5^JR$M^_,C)L_2 V]EM]D'OE&#4R1U_B3$.(88M
M1=Q;4N- 'PC!P*D)FA*;W=CZ+<-OH%!Y'60F8\;\4S[:!:]IH<%S]3D\1C>X
M8!HS$6,YW^]75?2+/,OM^T,'PKA(DP*O?%()FP8&5FV\3I+%P4:O0A4EIAKS
MF17SE!6[!\OOG:^RU/EA;7;";HLKQ72>OD]J3FKSJZFY><JA_R#,P<NOG_,9
M@[S$>'EXVSIO(3J7V48J4AOE<M0G>":T$^DYK=/*.7Y^I&LUYVJ;3/'IW7#M
M:;.:,.13<[8"#9\,(@<#S6S1P8UVHY=I_D$C1FVF"^N78U;SD$O8T2-@EN<]
M$7[X>\B0"+;0+$';N@H1/!IRS^>)>M2S7+.D1I_+U^]5*V-9RZ) BU2*?>CQ
M\UH B<YB"'[_U.G>?RBT\:TXT/#IZFN4[C[K\&:L3&)N2OO89A\52;O#98-&
M5'+R6]D^H9\8+$K:[6';LH/!IQ?143<L?Y3GWPYJ[##3HE/&)$(G(R/9VH3:
MUCB3ZAJ*?7-Z!!PIIK_C9NX?:?G1AT</H&%/$F[$R')LS%P?(36$%M7'@7.
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
M#/TH+)@9IIDHA,&XBW/,+\!8&W9,(:_DFX$:Y.4.F+4DQP4LPC2WX+C'8ST
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
MK(N0T7B15"]J5==GBB:7/PFXB04L@-S("9>JA=2WGA^51?6*,0UCO^H4%D+
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
M!T&8D2Z:M>UP6B^[9&HU^2X83+JM%8BQ(,(4OC1&9"R',(4F6]%U;**01@<
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
MX8#C*&C@[E!X)M>T'=CV,7"&4%SG[775B@$7/R;+;P#V]%@L_M7I'Z+%INI
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
M8(V!;0=/'$J,BMCMO#M1T]+\YFM:NR=?[8)/K\5 =&F; 3VU6]G5%JX];(>
MY)I=L;;]@"S43I.*E@.0G2ZX+$%]N?91.B:<Q\7-&?[F3K(X43+6)GT<Y']%
MN3J:!/_*DE0;9S5@N=^'#20\I6C%\S=:O1_#.@U0-)DGG$E_H<1]QM<\$BLM
MY&I>0'V&8&7-XXSO=D^M&'X/T\6IFCA*TE()/,K45CG7Q;;4_P+SC&TQTF!L
MURE/4[,!HE4\!R=J]GQD\@O?4^BFR%5M!XH3'E^5[0//[*=,NWVGLZT]EMMF
MR31+DY3%>BT:N&DX"AIV7U!897@W&@,OJ]N7I'WRD4@R62R?&CW7[> 4'J?P
M.(7'*3Q^P%(UF'*[P@!,&<E]R5)SS(ON54*XAL8*T&4T0)@S.E+1<6.9K%#M
M_T&W_.KI%O;&#KKE9L6EA0L!W62U8M0J#H,NB<B*U1K/,KIDH6;,F=RW0/;<
M'=^S8\_"/0GDU-UI/2M.G879@&)R=\*O@9AJ0G% %MV=\[-BL2)PATX1PP 2
M+&T$'3ZJ);N"Q1)7%CIDU(:_TO03=%LI;'KVX9I#-YD[9K*!^,:P))Q+">;P
M1P?B8 O+.G\3W:JQX> 0MO:<6H!N[324%3AG&<L1!Y8LO%DD'BS*%U@--_AQ
M!@-%=(B!#C'8!U4GOB]YKI/V[E35^UYQH$F[MZ\E7X;9,KF,U[S0>*:DA7:#
M#<#\HPY/[L0-5XO.#R/^S,"[$Z=JO5U+L0[5VCK9?$[T37N/!N-$[0SK_$ZV
MFOARGX\:X'"%(E3___S/+%RS2'-UHUZG#'VEK_0/ZDT__V*OY6-,2,V+E4A8
M]$&*;*5=NGJ>Y(X5'CSY50P"'8*$D0E:&8.A4%-(+4J6\#->_/O(^^ZZ2'UH
M\7PVX^9S/H,0X5[89WS&%>H+[++/@;V&8$<!-S_,I[#Z'/$MB"V[/?L%3_"N
M YS,R>?)=+8_=Z8Q IV$A[!A"_H8+QZNJ-]3<UFQT[-&"C/J#7D:WZJ7,)V=
M9(DRHXTI^G7-!SP^PY-K%IJ.K!E:#4+NP>:@@&0.&-5<J$@Y!??#Q)+"?EPM
M[B9<O>R*A#&9[6U_O,E;JQX! YO:8(G5XT/C$2E0'PRL/)H4IVP5IBRJ,5WL
M!T#!I/;Q/=4I>;H\&\YEW0@8V%3V]$HI[QT(W6)/A0]RZO,+XN$<VPPV!/-%
MO%QO5LIP-G)5VFJ00Z!E]GR!>9[9\P9.[ ? S&2-DFD^$!JF"Y=6BS=;,0!F
M)IN]6<! :)@N\<'9,5LQ &8FF[U9E![+,1W)WR;5Z4"/S1EA8WOW+.QL^ LA
M;_@JD_Y"X8OI[%0LER*^387_Q< +O.-P3-WP2(?E[H0R5?19AX6(M(-&D;Q+
M+>*!CIJJ5U#E8VL[W' "N!,3_\\L5+1M/1T\R4/"N2^K^,7D<V@R! )&?^61
M>D$?69K),-W<<E__:]X%K/LC8#'7(O4A/G _!"RIC4EM1>GF.F)QJJP8[59=
M[1]EJ^.M=H !F)3"YSS(LY#/PAQ"J4FUYW4T3TIXSV'9NDR23+N%=WE=G^,@
M/TBFY*[(UN>M2O6B?DE/[O)\KYBNJKSU3IXYK"BU0SH_$E0HGNFL.!RD?6OU
M2JSI.$/4LEAME^YT=B7BN2ZT>\;OS34MJIL/4&'!!CA@@P54TZ)W8K/5JCB-
MS2*-D"XB\7 9SX1<%JF(U6::96^J74"U"ZAV =4N.&"IK;,'7>YX"X8Z/0V&
M[;A\_YF*Z*9"KRSOB=8^K0J=LG E*@C(1;? W,TCBY1#=(=274D)EI>%[E"D
M*_%TD:R/[N";*^$!8R[HUAX, C3-^$&WL3=@I%(,=9EXZ+;KK@5@S&A#MQ=W
MS;E];A2ZQ=_#:H#D;:+;8?O2"FVX=[=%=LT],$T27?F?=G)HFNB#;C&T\OZ
MD[C0(8,6#.V)I6G$&!U.Z$D<X.P.=/"A(X'8QMS188:>)D9UU@@Z)=F3%&!I
M0>@01/=KHT%^ 3H\T8U4FJ:&HYLDK7 %..U_++@"PM"S.K>0#)6QH A+YBU.
M!8\%-EA*P&%FVE@ AZT$.TFN'@L.:2@<:)(]NKVE&S$T/5\W%N1A*0YLQ2N
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
M!WP\61M(0%9_Q,<J(,P"9.XG?,RU?V,_XV.J25G)2AY_P<=C>:@2R,][?/S
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
MA:<761PDD_242;E1E%75^@?VHL#7D($OBB%U%D.RA->B$Y6.7!"U:+Q&"I7
M9+0!-FMS!5V8S>9=U4WTRFT.5;RF_PE^)&&X-AZ'4<SU>NU<)H4Z<Q[[9.]S
M6\,P\X>:#*5.$71QP5Y8+W6DN&6=T@XH[>#XT@ZLK&]TN@98F1H6H'%_BLI<
MDE3R))6AK\\*[5<G;7QPJOV34%1JM2.6PK\4_FT0_M6G,?6E,!6!Q-(V0QS'
MV"V'DGNU7IRKJ&B+L$29Z9QLD1MW&2MNLAQ:Y@E%=PL6/S^,S8.^"I,VI^ (
MQ:S/O!\<5,[K;YPIE?ZXXP[U!JR(.Z:7\[P$BG/QES_^> 6,;P$TI.^87M$G
M$:_5GL>#?DH&-WW^48H8WP*P)^V87LQO.>N#Z?_RQQ^O@/%-_X;T(7Q%QMI+
M3S98'%Q'+/[$EKPR3:C/1Y'@+!\U?!H6I?=@2 8YNO2><M=0)]7FH&IHM DO
M%6XU=.'^7E^CL/+;H8H:#KH.,&0'4)R8XL3'%R<>R$\RTH@S/K_&2(_/#^.C
M'NG1>J3N9* TT=55'\0]!A36Z*JQ#^/) DKS: JUMPU- ^4UN@+N P22,663
M*8-D)N22Q3[?YDUUGD96^P@4^6- *BEQ['4ECKV<^/J;0JW<UZN5>VNU<OTT
M#T\7>K0#OH9Z_+B$9AMV0TL?)3E6D+HGUN).H\HTQYK6".-TE.@X"C%3HB/&
MET.)CC@]/Y3H2%EXE(5'67@H?8.4A7=DR60DN/%FX95R59ANDRQ="!G^Q8//
M<<#EWEVVFHODV86(-UH*101Y.MN[1'&[$JUDVMO3*<F1DAPIR9&2'"G)\4 F
M(*\=JJ0W2G.D-$=*<WPE:8X] T)*<J0D1TIR1"8L2G*D),>!A'7<28[#YK:,
M+,,1><H*4)KOD4AS\(P(*"IV:.'C$%@O";;;[_5_]-)0W_Q_4$L#!!0    (
M ,)\4U)EBPGZ^WH  )T+!P 5    <')L8BTR,#(P,3(S,5]L86(N>&UL[+UM
MD^,VDB[Z_4;<_X SNQ'3CBC9[K8]LYZ[NR?4]>*IW>ZNNE75]IGCN#%!D5")
M8XK0D%1U:W[]10(D14D$B7=0/2=BQJV22.2#1"*12"0R__U_?EYGZ 4794KR
M__C=ZZ^__1W">4R2-'_^C]]]?)S-'R]O;W^'RBK*DR@C.?Z/W^7D=__S/__O
M_^O?_\=L]A/.<1%5.$&+'7I:;?,$%U=DC='_>OOP#LW0M]_]Z8<?Y^_1QZ=+
M].;;-Z]GW[Z9O?YQ-OO/?\_2_+<_P7\648D1!9&7[,__^-VJJC9_^N:;3Y\^
M??UY461?D^+YFS???OO=-\W3OZL?AU^3JGVA^_ /W_ ?VT=/FO[T'7OV]8\_
M_O@-^[5]M$S['J2-OO[F?[U_]QBO\#J:I3EP) 8L9?JGDGWYCL11Q=@XV@4D
M? +^FC6/S>"KV>LWL^]>?_VY3'Y'N8X09UU!,OR EPC^_?AP*Z3YXS?PQ#<Y
M?H9A>A<M<$8QLR96!5[VOY<5Q<%K@.-'P/'Z#X#C7_I:JW8;*AMENMYD^'??
M&".]QT5*DNO<,N3^9IU@?ZRBHG*!_K1AR_B?2!5E=I&?-FD;,U5AV#+FDR8M
M8_Z +<O'<8/V\&H K4Y!2J++X*EW]%/](#0XH%09O5J%=QK&GRM,UZ-::[9M
MD_B@$YLB6U"@;[Y]_88KV7^!;_YZ1>+M&N?5/*?*HDJKW6V^),6:Z?>&#(/)
M6Y!ZGL/*8)4@1=WA@RXKMCO+NMR48M(I^PM<DFT1\T65DH9E'^>SCX^_^\^&
M-J+$$:>..N3__9L]VM.^S(N&SU$1CV"KG_@F)G1%W52'_5H69*W"9*+,.<X(
M"N)X3(Y$I6MG+*-RP3JP+6?/4;3Y!D3H&YQ59?,-$ZK9MZ_KM?M?ZJ__^KB*
M"OR6+N[))5EO<%XR1/.BH*S' /CM;O_(?;1C??@4%<E-E!8_1]D6S\MRN][
M6^7UYPV.Z<2_2E_2A$K[ ]4"1^+IG:ZBF'O#YWJZ-#114A-%NQ1GB==IXG^P
M2; 1E)VV @W_@53XB=RD.37CTRBC1E7%0%[A*DJS\HDN']LHZ]/U:F_J:'TY
M"JX%&E"@)X):'*@%@FHDJ(;B?RU0' 1BP%E#02L;&K/.I_0Y3Y=I'-'/41R3
M+5VA\N?9AF1IG.*R_= G?C;:TQ%*$[JN1?5QCP/-6QSHOB;O7SRM#!*QSGG/
MIDZ\PLDVPW?+_J6!?5O.M]6*%.D_</(1W$>/%8E_NV.+P#T=X_+M[OHS+N*T
MQ/=%&N,'6$Q@FKZEF'\3V3K>".L:.\X!.I]Q@' &3JH$U6LYZBSU%X@#O4 -
M1L1 (H82_?H4+3+,5@_$X/Y_8<PD?W)"P@V^@_4KI\OH[+M9@5]POL6S"D93
M>K$:?-G6RM1+Q(O%]!V:H0=.=AKKSC"_AQ89"2:Z$J[O9^!!2O.8K/%L@XL9
M_;"F._>2Z1T-@5-IT*H0RA#V(IC?4\'\@"MTRZ"@>UR@2P8%,8TS(6%5&JM1
M 58?@#/V"#VDY6\W!<:W>86I0%2^/$)#=*?@$>K#YWK6 <W9DA)%:4T5P6'I
M^7N$!@?;E4=H? 1=K44_S)X)23ZE63:+\F1&JA55(G1(:2]2JCQF45GBJM19
ME+1:MKHZ*2'PLDS]0)>IGVI,B&)"=X")KEH-)C1GF":T7ND-X^C"93 VKJ;"
M'V9+.C5G+S W9VL<E=N"_:HE_;*-617X,:)>9/P/5,9!QR&FY-#[#HP)B;7T
M^(Q*LAK370GO'V?KJ/@-,Y*S$L?;(JW 1:8ANG)-617<89)>Q/:/5&S?MR#0
M8PMB0D(K.3*C(JO";E<"^V^S34'HCJ7:L04 _WV;;MBO&A(KV995D1VAZ45F
M_XW*['V-@ID3UPV*"0FM[.",2JT2QUV)[8_42'FA?Y%BIR.IXM>M"N<I&2_R
M^".5Q]N&\(1$<(#KHU(WQDI#0;M>;S*RPYCYP.\I<U=TOPA>\%]P^KRJ<#)_
MP47TC-N?P"->>]?+YLND3P;MMJPCGG80N)9<BU"'17Y"'*H$X9]#(4 U5,2P
MHH8X K07J,&+:L"=W]G1&%ER1VS9_I"@5VF.F)^R_.IL&)?4D7<]P8\#O'M:
M8?2IX5!4<VC3<&C3<(@SH_TA0=6J(-OG%?T7HR'^?^U?UUK6+L3AN+HR!5Z_
MH=]0F.R@&!SOK1=0QS*0;LVJH3!*U8O=\/H--1S8D->G[EV7ZH3L"/DQ&C4K
M%!GORLJX6RYQD>;/_/:%DAG1_ZI5.^&01%A#X!"+O07+M(_6E_(&$.*(T*OW
M)*]6%I=HTQ[KK\&DZ=J&=RW9LK\^K=)XA7"-MT3K:+=?G=DL/<N56#!!1Y?:
MH?'Q>WK,3_.?HL]7:1EG!#RK8^%Q,J]HGMD.->U:-]5Q#90XVE-'OX8.,I/B
M-M%AH3.C[;M9AJF@:WG&12_;-<F.B/BQP""RZQTC.R5[2\3O<?-JD(G.A.M[
MB%?>KK<9N\C(#S7!MBOPBIIWZ0N>4:'7$SVMINT*IA($/V(+<5_S/:CZ//VR
M"PJ]HZ"F)-1Z(SDN\@;#XVQ"_-#$IE719TV=.]B$70'O)>5'D']@KO-FD9^6
M%AX>@7'!E&"K,P'\XZS$S^SO F](P2Z2Z$CA>#MV15%,SX\\PG'X(T> 'AH$
M4Q)*B0$9ETQ9+I]QT&QSV?1G0M>%-$NKG>^+U/V4IQ XVX_0VV7JEY;L^8?-
MC@RVZZO40R/H_HY0DI;1\W,!B4K @4N6^U_XW5NEM4:C74<WBT;I^[YT1#]=
M'6""8[/FMU?U1><15V6@JTGR8ZEP:TEQ@/PN8^_2: %3,L7EY;8H*'S!JB-^
M4'.1.&W0M:"**:OXS6WBKP19J89<Y/ *BCE%E.U!!%F>!J2"R+,JS!T^V'9O
MJW92+J(RC5G06I)F6]B='[W,W])9+#S@\'ACT CO%"X:TE\O]WV U>DM]($%
M9U[Q/AR_SM^;XN+E0[8,;SA:%)C -ZSB%=B_)?UE%D=%L8.M:+2&W!?0L;8)
M'1WA%$&(&UMJ2"=ULPL4!$>/TAQ=UNC1G*$'?=$V,D6-X%:2;%T:,Q&/P%K@
M]!O^9$6[Y$4): $(H0.4@$Y-!9Q^QY]]HN"_" V@)T:V%("!; 3P]"[&?6$+
M%5_8$R[6KX<<O$X)FOAUG0#SYL[-TB6UX_^"H\+OA/4XML=N7 \#%GA!QF65
MKMF!>N-H@X]K."OZ!]]VX,_0>[W=NVL0(19F9;!36YROFPZ@>=L!,-#;#J!K
MWH%S7J#U1<K6(FTH)WX7ZK?;,LUQ65)=MTAS!N^2ZJTT@1(A](\GJO;*)2X*
MG, =7,C(S3.YE+=4R^%DGB?P 8Z6!2NS PJ:2[%%)+[<[A8AZ_CK@W),XP)
M@Q=U %^@ \BH@_D"<=2HA8TX;J9(Y1CGR.9Q,6N(AX'UG\.F\SU9SI9-ENA&
M&]?/4G6=SZ)9 3DAX X \ZB66K:-'RB>\N?8@!PZ^\[A+V3927Y>VS[UTPFB
M\S]"#TTWV!E&.4EKQY.0&20!LB\YOE,(E2MJDU&UMF;F7$;R9_9'_\,ZFL(%
M82_IB70 ADUF!%&= 'H&0-GR_8Y S"/\U?_"%&>]$X'1SIID+@63W<N(W(@Z
M3;C?C3AW]>E@<KR?T.BSCPT#"R6:^HZ@UZ^ISWO?Z_(BRJ!,)Y@5*YPE%5E'
M%?RVHTIF41T\N9M1SE5%%+,*,)WG["W6UM%X6<&MH0Z^K+_E/0&[_L^T)[.*
MM!C1%>U+]^G%#N9NTQ?:9/W<.:WU]N5-VP!P)$3>,R]",!7)V:Z%=D7PD([.
ML$K13Q9'%62!<SW6,8<<+<Q_P6-3G-UV)4,_A:3^</NUW3\^/D*/RGF>0 &P
M*HVC['&[@+*,4.6\?(_7"UP(K':UES7M=3DBKJ?,QT=>T*]D<Z %@KI(3I;%
M7SFV,*DT% >'F''<1WK4_2>=-4.J)6=)4T\H^L^?>O!YBKI;;H24$JR.L#U\
MB;]N($NG;%D)/G4> +,/:F%UX'3*^9D3L5BZ3Q^,\S)]-=HVN>AQR3Z ?%%G
MZ:I17Z 6-^H GW+1/@O2,%*@S]80!TBT*?K>)"C+'CE?J3HE887/Y3GTTY2#
MJBR*A$EF4*UQ#C KH[V^F&WAUS2?52NJG[,H_JV,5P02;!#VP RR'\.!YYHD
M6.]F@P\@OF:R,>!)S/'NROH1?D]SECGS+?1B]LB[42_)+$$X!!F\AVZ<V^RW
M)V F>L&RU(1:QQN(45S1O:OF^80I$:]KM@C,)&9QUW!&\QKAN4U0N3$W7I3E
M!C+ Q$KS)2G6M9I8D&UU@)=JA6U%&\L34 F6IYL!:5^34 /B)*;F[1XW8K@/
M=[GH;H_[W":LB=283&-C40@PN2'2F"[G<''B$*SEF2Q+Q]>T'<,SB3GZT((\
MFIQG-B&E!]]D]JF-:'@_<'>LNRZSQDS2]OWJ-6S1WZL&P+F/M\^ON[]C>E%/
MJHN]?3IA3Z[FV(YX;TT&+,":M<$%6V@A8(9/=<N+U2@!7ZN4$,@DEJ?[/;IZ
M?3JS=6E\G$T6),G!FY!S]:4YK6$1+*YGF1T4H=VJ<F@G,5]%/M7]>29$?IW[
MI+8D5BZ<J3JRXKZ*31-[6JXPRW2WW\1J37CU=AW5OAFE[[LL3B?$^A$P'?A@
M)CG+-,92H:Z.X@"=20;]YA8WW8VR&G,E2Q,":;EJJ_HGVD15WN:\.-I155+V
MXQ5E6)OC1K3SFQH^W]GX;?=#71O0EA9$]1X4(PSWFYIJOK.FFN\S_((2B@G!
MC5_$;ORR$L<)R;*H**'F(*_PJU1*\0O@M)K>G5R'_\E&2^-VH(]9,;4:&,X4
ML8U*&6ZER+U1R_XQB^&3:\N1\=I+,X#!RCY,.[!.<IP4#%,)YOLU1N\+$F.<
ME#>4'X]1AN=YTMRXO%ONKW/N+Z((C$;M=C2-.V5ZKB6\ 81 LE!]>1(N[I E
MVM_,1/O[ED&6%/UA(M9X_Z7LMG[&)5V7IKO;TL0WN=V68C\\[;::$W3F\\RB
M3?F%[;R<<WUJ.R_%#O^3C9;&SLOW##F[79BN@O:R"S.2*/>[L+V!!2<><",^
M8@52N8'=*0]FN$/3IN-H]Z:,)\#.[OV!\7O78*QW?)VB:!/?]>F/O<*.T'!
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
MJ?K;^F<;,E1\G6KP$A<M&+C>P.'8\)6Z[*Y-;^DV;PI5X#K&<)F13^R\8G_
M<7*>T3I4=\&.,Y3DE1B.BN'\/,TA<)J \C(J(&*D-_V7SOLZ<U2%CI>T7BJ
ME*>HV][J)9)A0-"K!M)7<%]DGU\&EZC&=8$NYP_7CVAZ_=933@]X0W^%U1)\
M/C47DBX7NAF"FBPBJ, LN@H*+K;\"*"1M.8G,1X.[X[6-<D?*ZH<6<!0>;>M
MRBIB^<O$GM;15_1=K<*F/?A:U[#C N(7/"J,+IA[^N@5E5?^]5>:/EB+?>.)
MX1ZKJ*C4U-';*&,K_@1[<YTK[I*5^^+.JSP^(X@.\PQ-E.OE$D,1)-PJ'ZCN
M]8"A3]1,8MJ\3=GV1!XP-9KRJY2^56#:Z_[KZ0Y:UC%K["#PEQ"/KF8%PT!M
M]0:$\BH?JM-ZZ_]AIE)(8+GO.EK@ZA/&.67*AA2PW.]M@2;T%KU:U!GW>-%D
M^FT\^B3$\&[AJ<4.19M-!D&(G#9]IZS2&"UQPM)AT"E7;:G [;H-LL)^,%C4
M=(&_ZY]>97#:BV#>-SDW689/OIN"F_)1Q>^(,Q.&O3\T\@'L&<M3EC@42=/@
MLOCOV[3 R7?)G[>+4EQ??N@YK:"QGO;<Y^#C--%W5PBHZM=JMX/>>*<0'74H
M1&C7D%P0:7:Y/12&VL%Y=9.6<93!-6!J/5W1B==W0#SRJ,YAL:!)YT8ZIXLX
M8024T344LJ6T_1\CC_&5J##+4.==8:I0J3A2_=LZP8:\3S+/Z^C H7:]>)>&
M "CK1+N]T<O;PP"P1,0=K[:^H\ANEXS5?=)T$(RMU@%]Z@.*@OB I&8)4>:L
M7Q_/SU&1@E7*/.10?E7@V!$^I^G-.6G/]?QO"-;'&?%HI5E'_@ Q(XDT=_R*
MR)AHV!();Z)P0E#'R66 5CN5<&#1'119"Z)Z8N>R4\IBQT6U_N-82NNO__I?
M]T?B>?J#HESN&W MD/\UOY]_\#JD/<PAXAZ'3JE_7^!-E";-&EK?4Y[G"0O!
MYW=F!,K)K#%KR?=EB/I2>WKH[!1CM<P'DS"Z&DJ;E7UR95F5!'6P?H$ZUP,5
M-6"+R"\X?5[1X9R_T&^?\54=K0*>P^&<N+K-F)9$D"3G>GXW"% - 348$(!
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
M[TF]HZDL!]MV'^'!B3/]D>S)ZVA&RQW1\!X=]*:#H;FC%C*SFIP($2UV^IY
M<.:'D^NH@)._<A['V_4V@VWS%5ZF<2HJM2;_HO94&B/@?CYQ! C7$ +)FC2C
MB3[W/-\1WJ.Y@],[<#Q0:X=.AC9:!PI"?<#5W?(I^BP00<U6=&\7JU%S+9P=
M./4):-P%A+)05<!T1X588K5?28;R6/)7U4:>UI1,0:M>*H--Z>+7&'>)(LO\
M2M)E5()Y /_ )NDERB!*IR<%N?P+FO(D;MAYZ <ER>P]]J%#/$2V<@4^$W7F
M>=\G544*P<K]^/J_[8W?L]FD_BY+FW1 $0Y19,'J:!$70Q Z8<<=#YG/G^LJ
M6/,%U!:)1?L>]0:LI?(0$7(NTBLX"2Q1FC?W"^!@B:4$9Y+><5U>H!Q7$* 7
MQ;QJ&!P0_FDB"3-&!VHP>X8<]SU;GZ<FS(CX2KRA:X6*6_9U1#  0<<'9K5'
MVM<%*]*;<B&,A2TA/42#@9[SDL">\@/M+5V<^&YRV&$\^KQNIA!1N[[FBQ"
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
MM5.-AI#8')? 9TIWU4IX 6KX85OG2JQ1YXY3(#*I,YA#7@Z=PO0PR+<;"0+
MJMT]96E%%?OUW[<IR[>_KW<WIC)UFM!V-<F3\G :SK!0_0=HV/K>XD%[0.C7
MT I1:X"(#:Z[/U-D=Q4 RT^8/!?19@6'<H(SQM%G-<X<A6TZ]R=UZ(4Z>!QG
M*%'BDN%&[7H+@CJZ)1MX3&?SU=.<Z['G))O=E$$5>1O0]39.^]/.LK.%XH "
MU(T?$ DBRZR)+-S:R[7S17HB2_-$JNLIC(/,6AQN!>8SHJO9A>&0H\_JK,"B
M-OVNP*'B(,=92I3X%/X4>S1Q@MQ+%D^S_:5/$)UH3RB#@B3W1TZVIY%'8> T
MLOE)]U2[_WW[I]F'=$*?8C>_3\XIJ#Y2<H?60^QWO_9RFU1X+:GO9XT5MMN,
MIZU-L#M)O2PC8WP(X^AM#SV;,,H4BZZRRKQBZ/3M:]KWI8(^#":7"PS[=)@"
MX,G*78-,MF>.G=V#DM3C\AYGI:'WYR/4%D^8IZD<]0&-/JSC"1(VZGH:<,*(
M4S9W"UGLATWGT$$O QRBC\L,46.@[X"E%XJ#%+NA2+;31[1#E?9-N2_[4=/2
M4?5F0#7NC[4$+UB69K(,G-ZE=]")#(,,%;9< )7=2"G_(5$'@4_Z.CE<B%._
M,@X5R201LC2MV*1#YX=B8CVUEZUXO$*EUSOQ?$TRPY[B@ B=8%/,L_> J:+?
MXAO:X4N2LUSWOZ35ZG)+!V2-"VK 9UNXZ06.#_H_"&(1B*U!2YHRK$'1M4#7
MD(*(J<D $(M<#63AMIGF'G")BQ>A5V3\!5/K]Z1A7QX1,0(C(]FD/R8)$=N4
M@<SX((N2ME3&.+C-+!:</@MZA'N!LN??YIMM5;ZC<SW[3BYIOO@-TUSYIRW[
M3)'/J5\@1A]]-Y%$^0/<[LN//\;""=1H:+_\<TKW%D6\4J\:,MJ&S:H-(EK^
M9!.UE-G)VX?YS],K*#(^)&/E'.3X'#BJOM7F(T<MXA=L1=>W#?MRL(4^<QA@
MZ5"0O8!/@>5HX%!95K(DFK E:P.DW$M?&V8PI4L>,LP?DDIIC@;:1/U4D')T
MXW3PD.EFB37F6IKXD6HJ=V3@>OMPR+Z^+4,/3\)O$UXK;Q->.]LFO Z]37@]
MO6W",;='M@F]+ PO96^4I>R-,RE[$UK*WDQ/RHZY/2)EO2P,)&5O=Z=;#092
MKH*JQ,NFLC=().R^<Q+E5&6&H+^BJC1? ^\/Z(?FNVN>0Z+Q&E*+<1['Q3;*
M2O8O3N0# &TU;VM?H0G#]0RH*;;9.Z:QY3 =LZ'MB)6!<!_Q?+E=;[,(LD5>
M+Y<XKNYQD9+D;CE/R 8\Z\*K1VHO:D1)RQ%PGH&G18$XC O$@4"@40,EW&TE
MQ5$@^JP-+XJ"6^@JKSD00Q_V@Z00AKFTKL1_20$,;3P(;X5^+/%RF[U+E^((
M(^DW;5\'WE/P=2@N 47G=-Q)#S5*) Y>>[Y ' T"..C57W!4A JADI<XF8O/
M(B9/8 %(_K8M*V%XJTD3+A:&(U*36"0NT!Y6N$MAVJ,DNWP,LM[O4O(!5Y#W
MDTZWES3!R=L=G5_);=Y& <\A53LS_>>+DH6$"586_88T%QIU@OY*.D0M[2 Z
MUV LB#T&!PEG?< Q><Y3F&9R&2"EWS,+516W[RDP=3)7L^49?AJ:*LM%OZ+7
MIKMZE^;XEGX4>>7$#VH*UVF#KJ6II8A^!9J($0TC2 /<)/(L\BLJ;6#K#2FN
MR'9145MV'L=DFU<E%6Z<OD"RHLMM45#$ BG2:D-3P)1H.??2'D0%)S4<NMAR
M/$&$4&\PB!4.>Q;=$U!@( Q+JL0KNH(YT+2'TP)&&Q4M\=/+G?TR"H_\Z^N+
M/_[;:[9=_]<??WAS=@64I$:5Z S5Y([@+LD:_F5!_/,\>8MSO$RKDMW=>AM1
M<[C[P"4II8MZ6B3E[FA.&9)[XP,LO0601G&']E2/Z_3'5.WHSG"@_$Z[=U2O
MO=VF&=PD@\/&V_6&[C!Y1/A@")#\BYI38IR :P$'!!>HQ<#3;G50A(T*4A@
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
MG>F-!['"Y. +SNX#J1YP3)[S]!\8#C0I[KOEQ[QHO^M[Z6.>I"6O6XR3ZZB
MQ.KEW9+V'J?/^>-V4:9)&A5*-T-](;&W\+E&''#Q=-TU2POP]$9 (\M+FP^0
M8D0M2$2[AO9]NT"\=V#/=_N'^M^^0 >=1$TOX?6ZGTA^//R9#MZ4P+#YX5>N
M@B\"/%1-/AOG\'M6=Q:A\G)V(A&#)^<<8?>H)3V1-)W&1H.WM7YZ2[3;E75B
M"^(9+%UF*\YY+!2-2XW">L";VJ%XM[PDZS7)'RMQ;1CY%PT=T6("OEW.8B0F
MSF4K_3/Q+NVIL^D7,P"H'.^78X^QA&3U^(9EV>D^)N<QQCF=W^1C7FYPG"Y3
M:E"*;A2-/JL1F2-LT_6\:0B'NT@TSDZBQ"-_P@++0QR55>\)]/B#!F)RV*!K
M&6FHA8F>D6 DD>>.:9P_*]N0ON#V=A$4<X"=:1Y3XYYY_9^**"]93##]^1Y3
MGIX<%5EI2RN*7Y.F:Q';TX3-GGJLO;=NZ876U^2B9Q927ZTP2E(*N<!4ZM$"
M5Y\PSE&!-Z2H6 I%EDH!=KUU?B[T:H%SO$RKK]BM'O@V'GV2_K1A!OMBAZ+-
M)MN!GY_1IN^451JC)4YP$674?HBJ+92IZS8(A;U8C/^FP/!W_=,K**;^%<_S
M4!>68D4\]RD?HHI;TBP4BKX?(9+3#RFT>S#,(:X%F,XY8E7BG&BCRW94]JDJ
MCFO27&T+^OO3"O.2-?+JR:!Q>_I* X1K!687K24%Z(5/&OZ$%BVJ4^J JQP
MHSWB;H:=!C-ZU:#^"G'<3)^='\\T+VBM\+YVUZND946R9P6O"PQ)>#<'2TZ3
MU'%T:6EO?P\^"7$ U/!F5$G_,C 9Y6ZBL8:UO;&H^'4?/6 8L[U_:S!P=OAA
M33=1?Z.N57-#=>^X#'H+8(2S1(U=GO-*<37R2!47Y%=]1P4@HY.ASKCZEJL'
M@40IO:N;;4J&AG.7"E /DVY*B<7$B&]ASD@/$+;*6$K^=)HP/#F5(:4NC2^X
M6!!5DTM"*$/TQ2P^1@93T+-B)5GK.3969[H'[R=@ N.U<;<);J\./J?C^^QK
MSY][/,R%U6$F$FG.^$Z^3V*,DQ+29=Z6Y3:B?;Q;LGC_\F.>X(**,H5+[6G(
M<]A[#0""C/=%S=F9T-WFH*#Z\1&=#YK:"?\=8G-?*H"#YRX__)GN*]/F'@O
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
M&TJ_G]SEG>?=BHJ*NEVK-6.]KD35ITYO@#$]7H<W@;^_ VYZREQO#'L5N<'
MA)H/<K$M2I-"OTGCF:%.VN?TD$VH-KTY8C"DO1/%=)PF8/)\S).TC,DVK_#_
MW]VU]#9N ^&_PF,*I(=M>^DQ"Z=% 6\2M,FI)\5B4@&*:5!VLOGWY5"D;,FF
M^'YH+XNL)7$^SH,</F:FOOV^@5/S-_B?C<NC:R.DRZ.BE?7@3 4JV"E:@%[_
MWO=ZBU^9BM9VAVIKN''2B,L3Q;I\6C74N7QF7"[ :$]\TSLVLCQ^X/8=\[(Q
MJKN\KLU$6JU,R278@/I2K-Z:B,%BM3+/V[*T%Q95CQ_$8Y?TY.N(FZ2,2@(5
M_64)*CIENN46Z1DG"U1(1M!GXW[T?4RE!#H)U/+7Q:CEB/&VBGG.S?)4$ZJ<
M^APIG7P>\TB)D4F@E[\M12]';+<]4CKC93ZMG-2Y6 EG&=:\(G6Z@6Z:-Q)
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
MG!(Q;\04:K&HM/JB384V%=I4:%.A384V%=I4+MI4';9S&U;5#T$81<6J2&0
M,F#YDO! ]!)/7I(THQL2")X?WRC4WM(;U:@EUH4TM-'01AO N+F:WY H";.,
MSFD5Y9ZM6"%$:XMET&&$B=MPGK!A-;2']MI$%0ZTU]!>0WL-[36TUTS::YV5
M+ M6V[N IAOQ%^,/FI9934^3UI?R\6AAH87EAL[N"1LV38^+W1J'IQ-"NJ -
MA384VE!H0Z$-A384VE NVE#P7=R"T?13L KY'R27[S00BGK!:4Z);FBK9123
MQA2(%#2LT+!RPR+QA W;AE66ESL3P)Y2M$0S"LTH-*/0C$(S"LTH-*-<-:,:
M-V\+UM./P3RD/-B$24&"%0DE,^4>H&D_M8YCTH("$H,V%-I0;A@?GK!ATX8Z
M%RO^5[G@G^AK/9H%ZH-V%=I5:%>A785V%=I5:%>Y:%=I;.,6+*P?@I3D 4U%
M0Q*LJU-)*Y8&V5+@H&EE@<8R:6EI$(36%EI;;I@IGK!AT]HZ"WE*TT5V3?BM
M7.IMEE9K>[2RT,I"*PNM++2RT,I"*\M%*PNXA5NPL-X$G&Q(6NA:4R_ZF;2<
M% ]'*PFM)#?,"T_8L&DEW50K_%R(75DG2)+S&\V7IT66LQ7A;4:3;G>TH="&
M0AL*;2BTH="&0AO*11NJVXYNP:1Z%:1A+K@*V#RX+S+Q$O6+!38,8;0R8"L=
M:'.AS>6&L>()&S9MKBN^"%/Z5RE!A(S-6$+C:E-)X^L]Z7(UKYE.\,(68ST&
M;3BTX="&0QL.;3BTX="&<]&&&W?G-VOKQ2PJR@]A&@>DG/$!3>>,KS2OXP(.
M9,CNTZ)F1.MO)HB()2'G2?AXW?*>G57[^^CVWZF4:YR$IRP^U)Q4/X]/4\'E
M,CT7RR-,_IN$_"R-WXO764=?2]/1:7V_G5VS-"W"I+I<KX;.IF;&:*Q0NB:<
MLOA<?%=G[;>V-4RM?*<P6E^T-$;IQ9,T49E-T.8V:*ZSFB!-C=%:S4*U$&AL
M9XS*.QZF&94HM4H!55-SM(H'-=&W]_/H-&UUZS@6NWZV_4>NBU=*%VE#6[/4
MRMWQBM^Q+VIWKK*E64JOF5"(DO^A:\4^W][8++VEDGS%KSG;T#1JI5C1W!#-
MIT1&;Y(+H3A^_2=Y4!*K:&>*RO(PSFTNK(PR92^[*G+QGM.8IG7J*+R3*?HK
M5>_Q_F+YSFO5 DAS0S2[%>NI'GJV(GPA /G V9=\*5[P.DS5<[:QM2&*SVE"
M/A6K>\*59+YL8I V?BJDSV*OW'TM>2]:&:+P(HT8%XN@5.!*07DJ+SK@#XU;
M :B7,0YR(ATP=$.$9A=N5W8#Z4W-#=%\7=PG-#I/6*@FM*:-(>INR()*IU::
M?PI7ZDE0W\P0C;=+DB1MXJFND2GZ5F&2G!SD$+PDL*Z5(0KOPJ\7L?1X[:XX
M:1&B+>T-4?TK2X2@"7DE--7(*MH9HO(W,>_^F0I]_I:$&4M)?)%E10.V+>W]
MR//H1AF3CJ:EP$0Y/55-1J?MMBJX_/#J]?T=S6N])*HFQF@[^QHMPW1!%)*\
MJ=GH--[Q4%H*MP^K>Y;4$%?[NS\Q^:9EY7UX%>1"/(8@JPX0<!^QI]/C);<,
M[$+Q=**T0-*DI(,1>>T'(@TQ5# 4;_R  A89!:/R@Q^H ,.;8%C>^@B+(I(*
M!N5'OT!Y&0T#(_&37TBHLQ? B/SL%R(-(6<P)._\@J0YN W7T;S26U7Q"3@<
M7NFL&M$%.$*>Z+ :OE@X-IXHM<#\#S@NGJBUH%P3."J>:+7P%!$X-)[HMM!\
M'S@PGJBZZH1G.!2>Z+C-41<X')[HM\V!'KBGS1.]MB%T \?"$Z6V/<8&A\0K
M+184]89CXY46VYB_ ,?$*PT6DK0)A\8K-1:2U0:'QBLUMB&[$HZ()_KK65O6
M&1P13]38,V@>,QP93S3:LY842GC(U!.=]JPY+1>.AR=Z[9GF&9 G@$R<5X\>
MS]N3.+@/DS"-2) M"<FSH,)@27(J;%B-8F7Z8QHZQ=Z5,"QG=D#60&FN_:L6
MS9*$?9&O\9SQ]ZRXS^=%,HLB&0?);DA$Z$8FB-4?=N@UAGE6]R3(=<BO>.F+
MC<M;NG8%Y!4,:O2TRE8E&&=%OF2<_D7B=G94/1Q@HS32P2P\;^T ^>ISC3I=
MS#-RO=,8NBP4O<ZVF0,N%U@G-YAI7#3M';#4GQ[1>P65KEF5;M)2HE*G*]8P
M=*,<&>1562]DB&=)S$^,XSM%@J7ZNE7S[&$B>3=E&H'JHD'"7:;^(=2LCL)]
MA;XB4Z??@E%Q-*JIAXJV\P(,CZ.1S<[P#+26'(UJ]H2EUT)R-*S9$Q)'(A#E
ME2*O@ZQ8K4+^(.\4R>@B+5.V9;W92LL0- 9KEM"(DBR 1R*ZCVWR/I4>!&)D
M8OC(Q 0N6E&0>#47$X><%SRE\GZ>61J?_5G0M7S<1U)3%D2O4V]_3L;S/5^.
M^.O0CR.^^OUC^)6NBE4MO<K?#9%&TV;2ZGXW0]J-S)BL61*UOQDD28E5S:\6
MHH>/\O56;H0AC[//:QD=%@OKQ^]?UQ+?J:\%UN)_%5E>"AIALW\B7Y[HO>8L
M%1^CK1AZ.6EZC6&>U9-":$:"IL;75=_(2J!M7>2$-PMF8.N)7VKE"1LV[^:"
M32-GIL^ED)2[E9@)3>-B)=3D325$&CF =[01R&1KPO.'ZR24I_N?U*>3!UGU
MH$' :O1TB"U)6JU9T*&GA1CADWVUMYUMK:NV.^KT.F,XVF;4=AQBY12^FL]B
MMI8.@$:9U=34GW S7IF'5^9A'%Z'^7J;G+78Q5/GNI]1R73$JB]0Z:B'K(?Z
MY0M>ZJR.!C?8U/,3&J5)@T=RZED'S7RKG<13?]_P%"9MZ](7:#K*S48OR=27
M2T=LND2(?,G:Z3B-0#Y;7W)X.F+4Y(WW)7^G(S2ZGDY?!%/[?M8C'.7+SM;;
M>.H0M?1%G)M(>W=<6F/:NTY4DO7S^UO(HGL;+!B+O] D*>]I9_F2\("*1Z8+
M*EYX$&89R34.\G<8U&3>7!?*,&'N@*SC2)AS,&W $S9L9C]\V"Y_J28_+OM9
MN>IK*%;PUFT0C.WBB5P,D6*(%$.D4[?9'#?YT6;K:+/UV=<MV&X_!^NMP[ T
M9LC.6ZAIK;4-8](^@]&"%AE:9&Z8,IZP8=,B4P8]X/98ER'0&D-K#*TQM,;0
M&D-K#*TQ%ZVQ[KNZ!5OLU??!O-H9TD7 [A.Z*!^F&SEK&\:D+0:C!6TQM,6Z
M&S'D7D/-;VD]<1O,$S9LFI)H84U514 +"RTLM+#0PD(+RZ2%!5*H;!A3KP(B
M+!SV0$AP3U(RIWFP%E:@MC75-HY1<PI&3 ][JLPRY0^5ZK']XU#KV'[]^^?;
M TWCY0^CVU)HW[EKWRE(O%N2'[Y_]<\;DE->/D0Z9]2% @'-)V[N>,*&3:M-
MK'"2Y3123J7VAN:)/F><T$7:2K.RG85 *TDSJ<VD\95,>[]FXM4_+LR3:D?2
M2(+M.YQY )Z+H=NUO-J/7TH")!_JFEO@?HZQU%AQ2Z.G;;9:2J(U-W:!>(T7
MX42],W2C3=0.1#<:NM'0C=9E5L#W>-9C#_43K:;:!+#=S1=<VCV1$&7%%[]L
M^RS1<Q+X@HON+&FU.'Q9/CKRE,'] K[ T\ G4SMP?5DUG7;H%O<+&)O)5L(9
M+@@XV5HM& 1L3K,<Q(]G(TKX.LCDU63WH8 S$,W7@I/R>;IAPM:!C,8)@=1@
MXN4!6>,%YLYNKZ_50:Z7OP[PR$N6+G+"5Q=I)&8&W1"YA<E&:CJ 73P+5-9Z
M#_':,+PVS*UKP[Z$/&Z)8]2VL1E7OIJ?[NT^-R21U^B>"OT@*V\#/9$;U'7X
M4"[AUMSM84:=>)C=$S:L7E^US:$J;Z6]:K]2I;6]C4 \GS.^$KL@J:[5;62@
MI;4%\H5:\2E<-=Y25=/$'J'--T_5-K(1-19KBT;Y]B[WQBG1V-9"Z/51;N]+
M]AGG<N<MY?C)PPO97NYV3UM>&H/>UIB/PD [!MHQT(Z!=@RTXQ560Z^%>MN.
MF=S8?(&R5K=D,(7.%PP -_DH-7!?XH&J>:#O"_4%$<!]&&H7DR\@*"5MHZ_>
MET!PZSX#=(?X@@?>[W?(,][OY^UU-:V+'^ W F/A^+TUK5B W*J^S R\R CS
M@SH7"1@R<F<C3>A-D!!!FG;Q@,-^1I. ZA^..3\'9(V7\W-)LHR0JS7AH;RY
MZ[)\&[,T/M^5Q*N^4<6]>XWA68J.@L3JCMC;=1B1CV%:S,7H!1>@G(<136A.
M2ZA."<_%E).")TP??B5+&B7E#XJ[4O>Y&>4!F)N$N4E^Y29AAHM;&2[EIG#*
MTI*0(DSN"%\UY%JT-7>#@<:H?GL'C,UC;!YC\QB;Q]@\QN:'7@NM&RC3WZE\
MP0;C)V/$3QSE&^XJA>F<ON !$1!C.QPP-C=-OO&$-D9@7B !C, ,X$.V$6]Y
M&]!4M")!'G[5C[K4]S8:>VDB 2,P!V0=1SED!UV4GK!AT]-Z42[SN_ KO.HM
MI LZ*]%9B<Y*=%:BLW+J%I7CC@FTJ#KFM,%W<1L&U,]!5MQGY,]"?D4V<A_0
MM:(:AC!J2K72@?:4,7MJ%OU94+%\W\2_B'>B3IMJ:G<,9MW4$[0P"PI*UFU$
MTI!3)JN$1F%6GTK8WM LL9_3;$TB.J<DKI5MH+:&2-XMTAT]BEG9V,Z\87I2
M9$);RK)2$&:TU(0JF=A<G 3<SPV6U"EE+:TG[G'RA V\:-D-?]-(Q#ZJS6<;
M59([J*UUTENJ'K:T=H+\YI)4;>VML]!:G+&U/?I;T=^*_M;C]+<>=W)HFRK,
M.JO_OB#4MH$S[:URZLBTF[1,RTR?.A[P< 7(\/0E>@,0+4!_K"^( .)9$&O!
M&S@Z2];CS*0%NA*G/CVTMY<FK[7_R<5'>U!E@*3ZR=;T&2X%Y.U4(< 4D,84
M$*#/RVS^1T87J3 #HE!\#J/R1D>:+H(U2VA$2?;X84=C>SJ([HB&LD.ZD87)
M(@=DC9<LLO>J.K^T_?R-(<8S[TB?/5)UO:6E)5[7WL$"$_&&\%Q8F.FB+-96
M4O;0%A, ]C+/SFF8+>4Q2O&//#&Y"1,IOF%,:?6UP)JBO!Z0.;W>=MCC9"GO
M&]V0*@6SH@W.GTYW&PRFF: E+E\!E*GV+N89V5Z;?%H(72\5%/%0S*M(DBB/
M'I9_)B7%P*G9>SSS$'Q@+/Y"DT30=R'4GG1!A7X]RS*29[N?*EH5+&OW=XK%
MP[^[LMH\CH437ZMU2+G4/JZX,!C6+ N3J[F\+>!2")5XG\C6DV ]AK)XU W(
M7$MS&PSDA*=A\CDCMVR>?Q'V8..D;&UO@P5I:3(.W._:FMLH[";/HE<'SF$\
M 'J89^-CR/\@N?27W)*HX&5ACL:YU-[!/!.?R)<]8X.S5'R,JB06':6JZS#F
M&3X@I,40:VD]4?)MYGR*R;$6%N&#O$DGWR]7 YMHNMW-,WA#,A+R2!J([\F&
M)*PD[^RK-*J:]QJ-GC;8$MM(06Y(Q!8IA5LFX'Z8?NQ?^K$PR6)YH=Q5OB1\
MNT%D8BH0NI&$-:X&K;[F61,*X=7\+,OI2D"MFCCUC3Q+@QW$)XL)LJH$6> >
M/O7XVU$GQYJ,1#N:A("1Z!<W4[;8'DP_7N0+- !^61?GN"^+2!>?+A$17Q(!
M];!JTNA\28+3G#WZP5!?$L?T@(*Z_WS)*=-#IX.Y!P;J1Y^ @OGSP=C\Y!,V
MW;R#8*Q^]@FKCI%E,%CO? (+& :$ZX]>*=@](_=PU+Q2N_M'_N' >:6#:X84
MX"AYI9>#8^9P?+Q2QV&Y*7!PO-+&.R6!PK'R2B'72G&&8^258JX=VH;CY)52
M/E"&*QP]K[3T?EE(9L]HE85MWP2\TF6"TB^D6Y]7U=UD;=YF&O"HU0%99H]:
M-;ZAMG-5@-=KN.IAN%AP@9^<O5?SK150A@G;DI"T^F(BDH>)2)!9XLITZ$ L
M+*-S6L'>CH(),XE4F43-4V;JN0&80(0)1)A M(^$8C]CO?0B"U;2#T%*\MUE
MBFO" _%AQ=(@6PH(NEE..D.:M*;TZ4(+R[Z%I?/60%:7_C0PJOE'2Q(7B4R$
M"GE*TT5V3?BM).TDS&@D?7PT*7(2@Q39GJ.AM8;6&EIK]I6. 04:6G!HP:$%
MAQ8<6G#M%MP@VI,%F^YML-@FC05A&@=,9OV*_6&7+!:$9?93-^.NT]@FK;P>
M!**Y9]_<Z_3Z0'9?CXEAQP \IRG-29FO>)CIJ6G\:8]DD^U=PBN</64/>VRP
M)LS/B[S@9+9B/*=_E;)OFZRC]5J'? 0:^FCHHZ%O7S<=8P=#BQ\M?K3XT>)'
MBU_'XF_1*7V9'#J0=+0BP% Y?HX*#M7PFKD%)]*/P3RD/-B$24&"%0GEK1UE
MMG<WOQ%T.).N(CV:T#MDWSL$?6,@AY#>ZS=I#9T+NGZ59%4BXV-%6WR5WLCB
M%IRF"^F ;KTSNNLPZ U ;P!Z ^QK'@.)+W0 H , '0#H $ '0+L)UT]ELF"F
M_12L'DN?!=EC[;-N1AIL,),FF@Y%:*#9-]!@[PMDGNF\>I/*Z2\DB>_8QS"7
M!#T\E1MLTU?!_>S<>I/EI?)XFH191N>4Q"</IRPMRP$48;(C^[UX12#M?(@A
MT0Y%.Q3M4/OJTR!R&JU0M$+1"D4K%*W0=BM44U7T98JT S.<5FG!5/\Y6&]+
M*)?I6V17/[F;K0X<S:2QKD426NOVK77@"P.9ZUHOWZ02KZQ;WODZ1 <L$S14
M';3])D7L\1FJ4 F%EBI:JFBIHJ6*EFJ[0::K(UDPN]X%='>K3S=+2SV 2>.J
MC0JTI^S;4^IW!#*AVEZQG?.XCW=B5873<\VSQ[#N:$&A!846E/V=O[. 0J,)
MC28TFM!H0J-)YTBECG)DP71Z]5KL (*0^U @)LL*/MY;U<V2 H]GTK#2) KM
M+&-VUM,Z*8NNE2_H.GR0KV[V)>1Q^9^LO-3X;AFFM_(M7JW+&YQD#G<E-[*L
M6%7?-:IXYAXXI@$*GLL@>U1S9=@Q3_=OTY-7Q)VSQQ)]3R^/\S!=5*>C9DE)
M9UF2_:GAX2C92>G2TK1U+=!B$_I/K$S'$*P1/F=\%:91Q<'GE KFHIQNA%#0
MQ+#/H#;!J']_Y;?9K,B7C-._)!-"A=F3&_+%BO=[]I7PB&;DFM.(W,CY 0=L
M[ <[".J>W.TXR_H.[ 8H^WM3K]UOW(=8!^O^\$7?" DC9KR0,B5'LS0^^*:/
M!!OOD>@E12\I>DGMF_I#J<WH-$6G*3I-T6F*3E,=IZDU*]N7::<#]O!V !A%
M;^H!#F5N@I%[XSUR WLWP,C^X!FR(YJI8$S?^H-I?^<E&+4?IXJ:Z4B+C;CI
MFR A@J6.97A4W8U&11MIP""HL2!H58A*R.%+&M[3I#P'?$G$E\UU6#KU'8#<
M:OA+.75V#WW8G<EM)UB_]Z!AYO+!D+M8M/L-3^8=X:NLO((LBUB1YC=B^6J%
MN'5'&35NK9 VL#!UHZA";SEZRZ=#[!%ZRU6K%YWCZ!Q'YS@ZQ]$YWF)+=]/R
M?9DF8$<#5$GWWS_=R]3RWPD]B)UDP^OT0Q!&4;$J$O'U[GI F7[ R5),>KHA
M@<"TJT^JT^!&/58]*$1_EC%_EMH0Z/3^8!Z"'E/#7E;[(W$7J:"57 H*.^2C
M@T=!=PFZ2]!=8E]!&464H3,%G2GH3$%G"CI3=#,--?4G&W;?VX"6M FA_[5S
MSD'C($;M.  E:*\Y8*\UOB>8709XU?;L+Y;*[&%9I$&2>!=^W3H/3TA*YE2W
M#E;G$6W"\'XKQP6I=5YF30@ZC6:3_;/YG,B</?+XPJ3?[X9$+(T$T:74T\2@
M^Y!V:\!)8D_(G/$GPH40)%E.(_$6S\7W=*&+1:]1;<+Q.>7BA2U2F7HL2-XN
MW^R&)8F@6:8N:B+1=4#TV:#/!GTV]HV+7FH.^F;0-X.^&?3-H&]&KW1>;^71
MEPFDZ]+J88;ZGQPSO,GF?\;,H*;^,9[%[&?_V? Y_Q1D9%'^S<F:\9RFBXZ.
MY_:1C'J?H>2@"]J8"_H]$2\ZJ@2MD".SE7PM?Y5_GCQ\(&S!P_621C=DT>:/
M&VJX 9@J]]R8YH68PV*-SV+QN3S*RBY9NDC$=A-7DK,+BX,//@##U>YY+F3D
MU9KP$NYGCY]Q$K9SUGV446,A[5(#%A"!2I\>/IZ,YWO^'?'7H6]'?/7[J8"5
M)30N 2XMCII5W][0%K&ULA/2U+P'32[(R_H%*><R+,;2;1#SS&[7;+JXK69Y
M]I&L[@E7<-72VCSY-V1#TJ*4/F=B^^=IF)P662X$$N_XX@88$6, & / &(!]
MNZ__SHZ!  P$'%T@ *!$,AW=;>IXM$<%H&KWU-W;L)FAI2Q.'1*343/'/?@8
M-8,[F@>S,GQ9/RV'?_LZF7Q98^TSJX_CP?^XV)B^6/_#9,,ZZRT$R5X'6;%:
MA?PA8/,@HXN4SFD4BE_#J"PB($W M=!N(DJR("9Y2),LR 7Y19AH1M&&>)3)
M,-MP]&(<[H"L\>)PG\2;NV/G- U3L2*31_WJ??5^[IZ_GOV AU[/ 4B]FHOY
M1,X+GI:"5TB.LS\+NI;/K'4YZW4R$];X&'ZEJV)52Z_R=T.DT;29M+K?S9!6
MEOE6!*M>_&:0)"56-;^:]^'.'L6N6)MI+(LO?UX+JYN(A?7C]Z\;PS1:?2VP
M%O]+V#JE2T"H7Y_(ER=ZKSE+Q<=H>T_$RTG3:PP;K&Z(4(\R0=8VI4_)SV%#
MF$=^'+)/"J$="E(:9UE](_/$GH9KFH>)S-22N92%,*=OV3S_(A3=3R17$-_<
MR2;V.W*:MT=@:_/DP\AVAERA =&<E ;SA5"HTP45!DMI_7W.R+Q(+NE<M60A
M76U.I ^,Q5]HDERLUB'EI=N-92IY6M_8)OF78N?:B1B9K"HHXVQ#VI,4X!TM
MIEL\+_/7EF[QO+7-M_*<I!NZ6.97<S'?RWD/8N.@CTUFA*8@2,O+:Z;R?>/B
MY.%.$-.@?FCT=(@M25JM\=RAIT-LM4IJ0$^;T_"&9"3DT5)6LR0;DK"2MF9]
ML;&/368P%6GT[![QQ*OY+&;E33N-6V%34\_R?#0=6M8S>S"1Q4BZPDL'$VMQ
M\DR=ZWX>$J8C/'R!2D>;8SVT)5_P:LZ$4OATIYZIT"A-&MSK4T\]:.9;'?&8
M^ON&IS5I&X.^0--1;C8Z_Z:^7#IBTR7<Z4NZ3L=I!')]^Y*4TQ&CIA@-&!K'
MKP/N"(VNF]@7P=2^G_6(K?JRL_4VGCJ$X'T1YR92X1V7UBZGPCM[I*R#EWX\
M<>,L2GJ)"^-M6LX"!(MDCR=LG06F2[["> +969C:,['&4YR=!44KW C&YT=O
M\-%*<0#C\Y.G^"@S62P<"7D;++8;1B#T].WU3?11/@9A>1*HYV&0?@\Q>0QD
M"$KQ ,@!6<=U &2@S.F]<V6R,.HSA469%=[8"=-BW$B+F5;0$[-+,+O$MKO+
M<6\INKNZV)E:>Y4%S?CG8+WUR)6J(-FYXWKJPKK#FM1^N]&&^B[JN[UUK?VR
M"@I-:[\)ZK*HRZ(NB[HLZK*HR]K799MV)@N:ZZOO@WDEWM)%P.X3NJ@JAO74
M7'6'-7I+1B?:4'-%S;7_06TA&:[FIT*(4=4)X/TFJ+FBYHJ:*VJNJ+FBYFI?
M<VW:F6QHKJ\"(M1%]D!(<%_=.1>LD["_ZJH[KE'=M1MQ/937,C>;/U1[\/:/
MP^UW^_7OGV\/MMR7/XRNN*(R_5R9WAZW_%3(+/JK^=EV]OS&^!_"_OF%%3R[
MD<Y[>=\E.R%GPAR2H94[=AWRG$9T+>;?17HNVOT/X>PJ)?^42<=URO<X3^JF
M S>#<4OXAD;DFG#*XB=*LSLVVXA%M+W!\K-8,?R]^)3*_&$QC^E]49;NK7YN
M@6&P9PP*@(NFE8+4NR7YX?M7_[PAN9@Q\DD2#'7]4T!S&Y&*%V]6DK6=#/P]
MS2).Y+<A?]AO-%M)P:F,;?09U*9-J:!\>S)ZEJ9B!NW_F(G5LULXXF-$=#'1
M&=DJ,-NKOY53O+VAA7J U27EK30KV]DH'[4O'6[7\H(6?BD)D.M#7<,,W,\Q
MEAHKF&GTM,U62XFYYL8N$*_Q(ERH'X?.OZDZ>=#YA\Z_)E</?"=C/78*/]%J
M*I$ D^&^X-+N/X5LR;YXD]MGB9Z%Z@LNNK.D5:_V9?GHR%,&-_Y\@:>!3Z;V
M*?NR:CKMT"TV]GBU#5R1*,.%+B=;,@9#ER]"EP;C$N.)'Z=1'2W,,9[(<@[/
M$9W8XTF]J:'8,3QB(['A=9#E+/KC/A1H!J*YK!Q2Y0OWS&S0'MAH:D-'ZC Q
M]X"L\7()SFZOK]41V)>_#O'(K7R[E5/CNN#14DP/N9ZOYD)8R1J#Y<Y32P^L
MZZ#Q=>4S?R.RT V)9QO"PP5Y_(F+S?-J?KL4PB_;?:G'C=;(@S(KKX 6V\#J
M(I5;#]V4Y,A&ZCD"[')<F0[;O5N\O*OY7<@7)*]TU=-P+77\J_D)D16V0BZV
MM5D:_RJ-XW1QR;X0?DE7+S+)!QEST(G2C9C/Z_7@##Z-.2B#Y2HK-Z[K\$'.
ME1GGL@Z\_/B)I1OQ<$'%EY +M203W^3_3?(;$K%%6A8G7,JV%_59'X.//V">
M ]X$/!II>!-PITI(<@FT) O4MC%/ZN-^7AG0Y0H_D2O\=$_S?;ZVA5&=2POP
MZ?>ZU:Y@>[3GV<R;&HVI2C4\9WS[E6SWRC2RM40X ;?40:_:[U1K;6^>!8'I
MG/&54.VJ%]5\/VI+:POD"W7Y4[AJO&^SIHD]0IOOT*QM9"-?*\N%N2169SE3
M&Z=$8UL+24^UTF9//3QY>&JR4QZE""K_L]6**T&CDF]#/L+JB=:N?$B7H=2<
MSSE;?0SY'R3?&M>5&^&]L ^'A@[PR$E"N0O"5-*T#!%(:TWL<1]$7U5V]UB/
MFR2$U3Z:G7T5!C#-2':15FNK5"DNI#\[S6CT:Y@4@\]*C4=/&=JK(L_D321B
MH1G!4_D\IT',&L5^:6"E,4@-&/-1EH"[;Y\-]X?,G'U=4UXVKO5I#SZ^]=G5
MA8GG(D@*\^=+IE&)&>6!GL!X$$:X(7(5"8E4ADC#2+J\[PA?&< 72LF4@=\3
M^4!V7X\$? =*I@S\KZ439J>XG(>4CRHV5(^;)(0'H471>\72*A[9>#ASO =B
M@20WSDB-1:QXTQ=95I#X??$4L*^,N7JE4<F1]DBPJ36M!&L\'(:'P[3O+5<&
M]J;.=7- D)FT3WV!LC;VP& .?U\P:$_05T=H?#G#HIH'^CE@OB "N$I:G9?@
M"PA*2=N8/^K+X:76?088+O<%#_62:$ARFOI2:%2U&O+-IO[2F_E6IP#Z<FRO
M=?$#\@K 6#A^Y7LK%J"T&U]FAHDSK8Y/"#S3VN&<VVAQP",ZR6HC3^>(#K;V
M.89UA"=7S<5)QMLXW 6W?P@ C-K;R:,VXI%#,(H_3AY%T_F+8&A_0F@!R<E@
M.']&.'NDAH)A?N<7S':3=N!:OF<FDXE$73BXGME0=C, X;!/W[8RG]@*1]<?
MD\S8J5DXN/Z89'8/SL(1G[XY9SJ=%8[M](V\4<JMP &<OBDW2CD7.(#3-]Y&
M+Q'S!*8+1?#"+"M6E3P*"ODK38-\28+[)(S^R**E&"T+6-D@6'-:7O.\8C%)
M=G7D=LSU+YLW&"F.%-H;F!\LS7= UGBE^9[>L86WO5^JRBHA6-$**UIA12M+
MI'I0':BS@_#1%)H]B;*SKVLB\[G>TPV-Q3YX,T*=$-WG>@+IKT+5R6DBME'3
MH-8_>>*PWM#LCW-.I .0"'TS-P5JTW,G!.G6.5*&9!\#7P<^[/)'F0[TB,/0
M />CPD&XL<#(P.>WF^3:*+4=P _$T]MXPZ76(6:[5B:>B<8ST7@F&L]$X\E/
M9\\^.HX'GGT\Y!G//GK'M\D3;I,]Y&?_A)LE)%[R.42F9C<WT]0EJZ$L($U[
MWCOY96[*0MS-WLE&\_"J0R3CG9#S"MPAG,[3R"[:",*K%FP>K)\*%%0#F4LM
MTJ/#\;RB+LQ@4M$!6=-(*M)[U6-E%'69<)A.A.E$F$Z$-W4YD/>"J4282N0V
MK)A*A+DMF-N"N2V8V^)$;HNFO8.)+9C8@HDMF-B"B2V.UK)U' U,:\&T%DQK
MP;063&O!M!9,:YF*_#(W93&MQ0B\D+06<[D6;X*$".JSG;<AR)]?,0C-E6@;
MQVBN XP8S%4X(&N\7 6]:RWW\PLT+\3L3^K5?"[+W:W#B'P,TV(N*UK*BN3G
M821E(B79+(U/"1>/3Z54"-.'7\F21DGYP]F?!5U+^FKCH>,] ),A,!G"KV2(
M2RG!#VK*-N1%M#5W@X'&8&%[!QM,9!DA5VLB[Z1)%R6)DBYYCT5%J)*9MHYX
M/3@&X3H&X?"6; R<8>!LI;'[,?UMQA=L,.PQ1MC#4;[AOF^8PN@+'A !,;9U
M.G77+(;4,*3F<$C-N<KGW4U!&X[PMP%-12L2Y.'7_NYPV&A&G>(Z)*%KW)AK
M_/UVC=^%7R]I>%_&W4YE*M+LA6^EM7TWEXJ"L+/YG$0YW9"+<MJ(Y\F(E5RR
M-"W$.MXN:)9FH@&7B_H]V?Y;:@QW2U*=.*[C8K#!!V7Y\%D7Z2-Y)+L.'Z30
M;WHW.OV#=$C*IQ1@>=P(6)8)-/C#G/'R^J##NZ]KHR?@WH/.#/5CG]^-\K6Z
MJDN^=#WJE</8=)/NR9J9V,/S[-==QOHL2=@7F3:I<$,">CK"V*,0%0OAZ<J5
MZJJ5J_GGE#]^5]?I<QK3+.?TOLA)+"_ $>\VNYJ?,T[H(KTM[C,:TY +LZD=
M*%.4V 0>+O<5>,$'<(]-^5)3:497"R$_)T+3KT1N(2A[>-98BW^MD6T"\TB(
MS(9),W)"4C*GJB"2HK5-!M027,&#N@,&P-P(@(U#;.^=81H"?7];$@MUNT+5
M/-6VAC$PK? #!BHQ4&G;F^IX4 *]J1V\J4"=:+PYXBPRW4V#\2(TSH$UKO=M
MO#B/<T".:)"!49S^;>/]W:9@L/RY*-P!GQ$8]>E?(=[?'@.#-?WKPO6]'F!P
M/+D*O'L  XS4.]^1 @=+X%JP/P9"A] +'"9_K 6@*PH.C2>V@4Y^@8T\G9^#
M3&RUY,]"?D4VXK^]DW4TAC2:L:--%Z;M') U7MK.+/JSH&*9O(E_$>](?=JS
MJ9VG>1]>GB_%0YQ0LFZ%:B;,("8-HRC,ZD]"MS<T2^SG-%N3B,ZI,)3K9!RH
MK2&2=RMU1X]B5C:V,Q\H/"DRH7-D62D0,UIJ3Y5L;"ZA"^[G!DOJ$\HMK9T@
M7Y[?R!]V-8NRBRPK2'S%Y;_2R/I4R!5Z-:]JY56_PKGM,+C-R/:.@U.VNA>[
MI.3@E*49C;>^\3L>IEFE*ZOJ%^L,,1%6:U_B+(UW;[$_$FU/< \HZ:,0<O89
M0_LU2<NM^&I^5>321U':X^07NEAJ8=7U(3;AVI9$RN[85F3O6"/9!\XRE:1L
MZX:)4SXG3MT^VKQGFQ<G"0]I;FIKG?26JUQ:6CM!?O/M!FWM,9L+L[G\SN8Z
M[K(3;28-ZVS&^8)0FXQGVM)TZLBTNR:8EKMEZGC DR%!#@1?<D,!H@7H7_<%
M$4"V+$2A] :.SI+U.&MT %W"4Y\>VMM+4_3!_[(E1UL":X!R/5.Y7'[$ R;:
M.;6N0( '3)2)47V"%D=XZD3767U$9TW&C04>X5F3$:-H1W3FQ$R<S4)NY-M@
MP5C\A29)$*9QP/(EX0$5CTP75+[RL$P'#L1\H"O1,0["Q8(+/:#\N&(\IW]5
MUY&2ZFCAX0VDP'S*L<DPF8-IAA?,VSP@:[R\3>7]O6._Z?W<2VM$F(\IGM.4
MYN22;DA\\<A'=2YAMD?P]C#S;"YVB_\F(3\7'111QQXCVDP<T"/[DQ )=U](
MLB$?Q9:T5(60^PTZ'3@&G1+3FPTEQ:Q094%T&VQ:[-^)QP_W^LO1)@; %S8<
M^U^8H\Q_(JI:8,V=@C?VV,&4L*G&7BTK8Y@@Y'^"D$EOO*.!&/3&]W!2#:OA
M'Z%_?A#MZ B=]@,IU4?HI1_&'#M"A_PP9OQXP6M/@&MTB8'1TR_LQ/(PF1AZ
M-9:EA;C.FX#+Z@^%L"!HMC,RI&'!YD^_= K5=!C99/2E,WD] BJ1+)W&'RI+
M>OO'H1&]_?KW_[P^,)Q?_M [F*)#S^=;!3U//XP>W,& T_. T^FGTX^AD%&R
M7-PYY5D>%0V7P[>W'N2:FW_)DI4L_<B26#SH6J[(E?BLI@O898B;5J2;10P?
M%U'>4%>EH=D 1-PN"1&XBPU+38&JS0"/+S7I]]><EMD(8G\BHD]]J0]P^S%C
MIQWD-"@<VEG^CUV#XZS@;*VNO5+WLQG"MBOBBM\2OJ&1JF)-4S.CA,I+0[<T
M9,K"*ZUM#15>(0LY-3\0MN#A>DFC,%'7BFEK:[A6S#XA;?5B5&TM7-/T;-5?
MS6^J-3^[S\IK(Q51"V O\^QL"3D7-LKNYLO?:+X\+3*QEQ)^D49)(3=7:7N(
M_\D2? H6>XR$\3&,CPT3'^NR.V/(R_^05ZN"P;2V=1_@:-];F9;>,'5,-(\K
M-FLD4X^/@B>(RILS=0!@LZ'=9IDZ#A#!J>^-F?K19BWYJ;:\?8 !-#F@+L2I
M'V[6%IN'3GD?  #-"+A[<.IGG\&0-#MOIW[^&0Q#JQ=]ZE+39/J=HV)B"NEW
MEI!XR2?KZ$;T!1HHTVQ 7Z2[)V6CI3SLFXE?@DC>/R2XD)G=0IV0/J['(48]
M)MN-!@?/R/9A!/,Y,)_#D7R.OL=%NBV#(4\/]UF(1QM8Q^"OZ0C<A^U$5,3>
M=C\'/[A/XEO[).[J9%87.%<73+:0W=0%H\@8139ZRK+CIH7QYN.(-V. %0.L
M#@18'?6"F@ZA.>H)-1<Q<G0AF/2&.[H4IN -7Y>JMG@^SUT\+Z>RO+Q;'2 4
MVJVD\99,-5'.TMCI:?)6!8>Y2\/?! D),V$^W(=)F$8DR&3\5Q@3<\975=)J
M-R=^AY%-NN8[DX<5*>T[E#N\/)";N/.D,%PC3))V*0F]I.$]303R"@=*;5N;
M%<%J"3HMN!2L.CP<='&$D4\LC?1Y>=G++CLW=+',K^:?L^JH/X 510_S;%RM
MR[K4Z0*T.A2M;:X/!4G-*P36R1EF6E<)N)]MEF K!=0'PP88-A@F;-!%B<%@
M@/_! *RW. D7EXL>'8T=S+LIH@%,L^;EG7^X"S(J'6Z\ (JSQ=6 UL?4#YYH
M5YR#6953/XC2'9:!I(QVE<+)X-);QOSDC8P!^?^LAAW*?WI>JP4<S4YX 4 2
MAA1<"BDTOC#-, +@Y=OR\NXN0-R6O@5X>14]W&!C>]GH5:H3$FGO;)<Y>3 Y
MHNLPV5VE"N!)V<>IH,)^\67] $-=;_/LE92=LDSE]WW\W9V 0@.UZH:VB6Z9
M_,V-+=2R>SY7K^Z%T$]E >VSKU6J]CGC.C'<WN.Y"8%>J&Z $3'"8C/",@ZQ
MOX:<2@K:A)NRW?$%A9I54@P$82 ( T$8" +YK%\*4N_F15=GM=I".:XP$-A_
M,/43-'JPM.@CX\5\G/54*XWEXPKT0(S9XPWQ0/UUXT5Z7$>HQ?L'!N9G'X 9
MS&D ANW=L< &<#A9#2NNPKS@-*?B(YL';/>2M]9OLJ58_MPWY-CY27;"D3W)
MQ5#E 5E60Y6=7Z9F&+/GI+%^+@<087+ 75Q+SFX??U] 0K1UW9P[[K5'V[,+
M5SOR5SN&>ZP>7D#>D5O5,.XQW/.UNO]&=_=3]V%PK[N;#)85TGMP^*R_HRQ^
M87T8?.KM"'N?TYAF9:$6$@N5G63RJNM"[TRJ:HP@_=EFPH6P1XC"8FO?**'=
M;6Z84!HA&V>OL=QE';B1]AW.70 &>NW3>>,M&VW78=QFN&GC[3R.XRPK-^*.
MHSC&KN;&W&DLJQOT(.47'$A]>N$>/;Y\K6EE,8SOR,+$*$R,PL0H3(Q2IB\,
M86UX-WL:,>OGZCRN/*I>"O!QY59U<MH=URG[GO;C<:5D=?1R'U>65C\?S/'F
M:XV D1>I6_V<F,>5K]4MD@K7-8]*06\(AL 1.PKU?!"DM)5SAQ/8NT47X5CY
M4_I*-V4)CA%</7]7893*"WV)D]<$#./_AV,'U];=QZY?4@,<,R^4]V%SX%_Y
MJZ2K$+&0X/Z%R"Q]$@?A1KR\!0DXD0YY&<P0V_(J*Z\,W$WW0+S> 5+=!WBF
MG:3WP0C']/<#LJRFOP_P6C43X0>;2+:2!'_;,C"KZ'^_)?5&4'I->$1 68+P
M09QB]F;WKLH?[\3[>J7/;,,@MO,M.K_;KL,XQC#\_78=!E-2,"5EZ)24(;84
M3$[!Y!1,3L'D%)!]K[O=>3=KP';_:$AYD9+23VL\WIR4[DB9<#-%+,U80F/I
MV'U26LIT6=%-/'I)THQN2$!3\?<CI.V^I(X#&W(8]:(.O4+#>X6&L41.]]_=
M1?GJ/I'\:GX7?E68)0T];)X+;"!K=I_E/(Q4QKU&3QML98(4>1]V-DOC6\(W
M-"+9+7N2MB^X:>M@GHFSD$NM(!/2^W8I-HR6%]+6W#X#)V%&(R#US]K:)_T]
M30HAPH'$'[0V3_X'D@HE(!%3>1:OA&XI9T(NUFGSI0S 7A;8X2S+KCF;4]7D
MWVMA4YQ6<O!2T'(NM+E3)K:JM! S8ZO3"F7@A,P9W\I+(2I)=O95H"QT4J')
M\8=2T9/W#(F>0I,0]"UVM>D4C(_X1/M /BK!+:*OI;4M\@7:VZ5S(E:6>O*V
MM#9/OMC(G^:5@NAG;9RXB6*+7NM]#KMV3A'=,L-;VUMDH76JU+2TBGV^)+Q&
M?2V%J!"5=)%65^!%#W<\3#.!LG0=I''Y5U(Y$N)_%5DNA4V+WC_.PX+7EN$3
M.P9[_E:;50M8)PLWB@AC/^314@#^GFQ(PM82YF9>0'ULL+(A:4%V:H 4#K_1
M?'DJIHY F@O DT+L^0M9?%/\+U;/V1XC66.[38"JFEF(8I)2RQ*SYV/(_R![
M0ET5T6SM@/%C_ZZ@.7#G?BI6]X1?S;>F96EF9E=%GN5A*M>B@IN.HSC#[@L*
MFWP(G<9PE]7M2Y*._(1E!:^63XN<&W9P?](FH*8BICQ@R@.F/&#*@ZJ&?:,:
MZ0L62BY?(M'=2/!E"4' @H:7QLOTL'!F#P),@]_>E_FAF?72[.#S1<*TL\OT
M#6!?9HP6.!K>*%_RR+3PT0IJCI<]9D'^:L'4&AT!0S.%N^.Z0:,.7X#!<;QR
MD1XN&CY],$#:!Y]=GST& _1@D!T_2=T!WY;@.1@9[2)'KD^_QC"]+PH!3,6&
M)<CYHF&W<MN 3(V#W!?=N@\LM6E]QW7@8(SP@B\K;F!L.J#N\;HU#BXL1#J>
M5>3BZM?.^1]O:0L-."-F]2X=[@_-I-$SP,9;YQ8TW(Y(:YRQ<>?P6Y@M@WG"
MOFB43](:SH&#;@J:\'C; 5G.'&^;11$GI=Q8,9[3O\HY(K?$ZDBIC&%=<[*B
MQ2J[2#>DDDRJ#+!N@UF];^A)W&9W[(:(N1W1A#PSI>_8J9C6UYQMJ)C")P^?
M,WF3^:-I/A-"?%/>^-*2KS/FHRR<NQ.$RO^?_5G039A(KF[$&^4T$F)!_B!>
M]O,O]EH^AHS%U%BS+$P^<%:L95Q#3I72;T;B)[>9 E"3) 0_(-2FH'X[4:BO
M":=,K%<A!,.,O"?5OX_<GWV-EF&Z(/*8_ME\3M3G;8T28?-\QONM=JIWB K8
MRP8[0M.*:#F-Q>>$;-7[_>U0R1.\JX4SLN5,N9KOSYZKU &YY YA=NL47G,J
MM(EUF.Q*8"OP:NQC51'[(!1TJ0)=I;?B/5S-3XJ,ID1YT$S5W"H/>X&]ZY"J
MCI K6EDA]V"3$ I\J:B+&=%P;@+<SR66A,)-Q!+OPM535]NSZR6!O-C;!TF7
M%]<\@@ML2ELQ%8^GR@._C7T<>VF/UMQIN*9YF+0?>-<<P DFI2?TJ;S7TZVH
M<"Y5(]@\$/N2S&M.UD*([U32K28JM(62?ID1K=R+NPUF>397Z2ARW_I$U%.V
MMI65X@9U_I1*"7KF3U%P A_ IA4%I[)%UG0?R!FF*[]BCW=;,X"#[[:&RF[O
M%C"0,TS7^$'UF*T9P,%WJ^]9[C[0! K.V"-UE_4JHUHZE2]>M+>Z9^^L^W/&
M;\BZX-%2Z!I7\U.V6K'T-F?1'PIVVCLZP=<-260D\HX)\T4>2UNR1'IO!-6[
M!#<2RW"Q>!%-#KBNPSF!P1V;17\65)"W=8.0K R'E[ZNZA>5-T)G"+=X_84D
MXC5]#/."T_SAED3R7_6> .[O%I>E4&D/O;;V<XLKL56)S2E_N$["-!<&CO2_
MEJ>9H.PI![#+)V<1(7&9__^>EIJ5F%U[[DGU[(3WM,O61985TH6\2\C[G,;E
M$6 !O2!;'GFM%9/R/3VYULO=XVK=Y-DW\DR[4$K/=7G2L9) 5_/JS*-TO[5+
MLZ[CV"C;M-ZNWJOY)4L7LNS]>W*O+M]4W]SJPM92)12*@D6_U;1K.%5*R+E,
M*VLQA"!=L!A5,['%>IV4A(3)#L.+=,[XJDHO;7D!>KW]*SH$FH%8>0@K#V'E
M(:P\I#A[T=>=YPM:/7!0'8OU?($U3JOQ\X]]F7BC(K7W1O23_D8\^V/^E)4I
MF&'VF"\GY,U-7HTLW!&.3K^KP$V%!I5OVWJ',3C+<83#J<> [T 'ED:H"70,
MZ,/CI;[(9IBBUC7E;P3UR^8T[ !#(XB =-X1U"N?$&Q*JAUAB?H$7:?43E\*
MSHRPDB%9Z[Y4[!A+$/8#3;N^H04+<VCDP$GI7A5![(=B]UQ,7\1?+Z\O.$'7
M,^VO!QQ[H/;(&_),%QP)3YUL05^LN(&@U,WX\LR'-M*$;,U[],Q5-A*,X.38
M\?3%J2_J#FEY7JF-PR#:_9B6+^9?+_41?';O.-1'"!S/;MP YJ(>A[*HB9Y>
ML1'/M4--[ RFOQ^'7JF+_U#'P8Y#W>R(KL;1PA']DLZH1IHH=J].,)Z>.459
MZUH1,?#;T;[<9;)3W6Y)1/ +T;Y39EV2)C1\GA_=:^E9@17\4MYU>REGZ22W
M5IN56GWQ!<$L[DYGG48PL^U I,G\L[!J0WFH$0SIZ>'34!_R"1\3MQFD+"?!
MJ[<!+4D*<DE3D-%%2N<T"LN[ %9KEI)M^?^U%%V9M(($H\\[Q20/::)Q\\%H
MCS9T2\+(]..-"@=D#7"CPLOI*+_Y_>F=&GB[6X[,/]A"K?7R*IS\G,3RUEYH
M\6]@+WOL5/?\Z++3TLL:.XK3'767F[8<#>\_H#402GU0:,&7XM&Z$Q76UU[I
M_>U"ZE:!O[ES\,H!]JJ%U9&]QLXNL#?<\AQ@1'LP/%MDW=XU9 B;;UR/*Q4#
M%JM=/I*T.U%4G7L]+7UO%^GN/<B+W\IL^%_#I*ALI4383C+^U<9K[X&Q,(_-
M>C;3<H18T-"Q; R6C<&R,5@V1G5E[T &EB^H#8#'2W1A?@=?EN H$.I8Q+XD
MA8TS%T%.(U_F(DP(#F;&CB<%-X3?,],G(8? I09F/0?0>%/1)TR[>"+&DY,^
M(:OGSQLA+]:*X!P8S*'=+>,=T["0[386ULUN/*>3 N(M)+)A$%:%+L(T#I*]
MT_-C9P=TH,'--('.C&"^P %9X^4+O)" -W2QS*_FG[/J*$QMK+^U4[?R\>.E
M-'28B0/G-G1>"U8#=>UW839U"=)7W]MGYG&2?F L_D*31&BK%T(DI@MZGY#&
M2R^[#.$ H[O*5P]0MEYT<( )]8V==4UMQ@KKZ '&KYNZ.,#(4_$@EF6G(></
M<\:_A#P&+YCV$5Q@4U9A '.TW]@!XL6'@SIM^R?\A*#:JN%9_1' 4Y:!)^F
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
M3@207$Q='-S \FXB]88/IDYZESY=B]OPGDWO<JY[S[?.QOX(9QW<+]4VD%$
MQLZ+(O[#^U/ ^&E7^Y\J?LU&.!@O>/%_!_$:+=@'AD^[VK]+\ WG]0/C]6[*
M> T8N(.KP9,V(\8*X\+ATT]$<S67JGNLS\G4J'NRH&DJZ*YN8TSC\N.*%6((
M\7.1RBZ+E/Y%XM)[=4]2,A<JUFBY44,1Y%9RU+!<87;4 5D.'%$;[YT/E)XQ
M[!3$\(J=\,HXQ'[>>_EB1SO9OGH%U8K6P0]39^"M<PP()8/+"PJE2Z-(I)E9
M9G 77"HS0J6E3+:^9I6:J\EOQ\$=!^=:T,W'@:9E:&> N2%Q=77C<_(OPW5&
MKN:S]3JAD10X5:1 ?'5)5S1O3'$;X4G D/VTXCK.[-(84<:(,D:4G8@HK\L=
M0SR?YRYZ-(#JG'<SI0LHO52FXP@>CZ=9C1!$=C_R:4+Q&B&D_$STG:53@O;0
M#+3AM_TIR,BB_)N3M;PH6VB!G&Q(6I! LAJP)S?S_<.VD7S?C_TZ^F<'?[!1
M/^Q(U*._U9B_]:R0UYW?5F^CX38L=;,!B/C/<!VFK32H6PU PN>4EL6FQ?S.
M6BEI;3RJ(WSP10=S>(^TUGNX;S*>[[ENQ%^';AOQU>^G@AZ6T+BDK-R::M98
M>T-;Q-9**DA3\\ZQ;20V76R71/,M6RVM;5Q_5,[E7<4.'D;Y;S1?GA99SE:$
M"STZ*:1W2&8-BO])#4;!6H^1;%R/5,+?? U071N+(9Z3(A-Z9K:3O74K6JL/
MAMCP!-- #N?A=TET+/OO6 ;H'TQGVY\Z'GK2FX%V*N\P>>%YAVJQ4_<LPU:+
MEJ(Y=4@ZA&7:%2+O0&F3(CK&O7?!!1 XK7X@[PZ>@6!I<TUY-UGP%A@7 ]\N
MAB5[.T-<"0=M$XD.C;@!XSZP)U@/\.B0B9&< [+&B^2<,B[>D'A]G]-P=_/2
M+(UAL17MSKZ$GB8>]X&MQ>X!'IVUCI$<[R(Y3X7,VZ(X3RUMWAXS\1 4QF(P
M%H.QF%%C,< -#8,N&'3!H L&73#H@D$7#+I@T 6#+N[!TM%GY=T<PEB,B[$8
M9V_V [AL7 FY)"Q=)'1#XB L2W7*C+D%80L>KI<T$@T7\A3W@!&83@^T'I#I
M037&9P[(PI,V>-)F^,76/0#38VUC/,:[>,PTPQK74J+Q_.$Z"=-<:.AG?Q9T
M+2G[1 XO"81TL1E@P@@-1F@P0C-JA*;;CH<!&PS88, & S88L,& #09L,&"#
M 1OW8,'(#$9F,#*CCLSH.#U<"=&0KVM9-#<OQ..#.>-!&,=5+4%Y$^L+6V[
M6$V_)UL/V@Q!?H_H320K'/.'RIVQ_>/0D[']^O?_O#[P7KS\H7?D1H>>S[<*
M>IY^&#V2A-&M/D&4?I._>S1EB$4W=J2B4AYK/?RJG\T0MM7</CSZXL)$&4-I
M;6N(Y-V<V"=$$:5J;6LA<!(^E-KT'9M%0A?@1*DAJ,(HX &L!E70O3]1;YMY
M$8Q^_N/P\[=+8Z:UTTP=$YA?&[B'3=UE"9X@*L-@ZIXFK16BUABG[FW2G@>'
M!NO4%X))CZ.C2P$]CGT\CIWM U?\CS$1#XZV]WG)*[S"E?SEK^J+ =V-6@^R
M[EWL0"TZ$]&9.$EGHM9<[^X[[+"DT%6(KD)#[JCW>[-3?$Y(J;.D\6QODBJ<
M5)"NZ!Y$]Z 1]Z">E$5O('H#T1N(WD#T!J(W$+V!Z U$;V ?;V 70\"L'S!Z
M/,] XN ^3,(T(D&V)"37\/$!!C'DOP-3@F4:AO<]#6/GS:)R-\FNPP<I:;8W
MDROLO?K&-FWK'44W)")T(XGZ1'(8$TU=K# B9&=<U;2Y"[^2K)6+YO;66+BD
MX3U-:$Y))F3O5;XD?.^K9G9@?:VP5JR*1,JYDJA3MA*2=$G2C&[(4QTB,9&N
MYNI[-3N.8H'=;4I3F%R'5,RQTW!-\S 1]*Y8>INSZ \5A^".%I@J$[)4A%?9
M6F]LD]>RZ/?;.$/L[#XKKT6!$'W8UCSIIV&V%+)%_B.#PYLPD0'D67X:<OY
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
MDC8L5+7.@O&"95.&JM8AX<NL,I'^X?AL<3G]P\5@O98[8;R-RMGX.SBZ8>,
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
MD_%$AC>PK7_COS5T*WYXQH8,^/JYHM6,//"Q 6O@?]MZ?2V>"2'7O*D<SOV
M9/#V9\&2*<_'_?-9F65&8)EG[(9^U9<DF+[&&6%OB82:$IW$R2W\Z9W%\0_J
M &SWK@O:LA!]NV>F\2BJW_P&Y&3U8%14&'!20N,Z9#BR2PN06X"))7;%>SI=
MGT!E$:$,097A;C#_4/HCO*S/?9D\K&IG%#/37Z3-Y%H/-;D*46M;C&A$,<0-
MZTD1:5RT:_@(^OD->L(=6+(S^$^'P7LO)88#B^YN>[L;8(YZ:=R3GH^U! UO
M$.?P9^0I7%K5'GCCAV/ ==MQ&,:WA $=)T&Z;V?2$X/1;BL(IC;Z+6C485!Q
M<?77:;?Z>WD'.R ;_1XAAZ.*Z_NAB"I:QL#$4='/Y.AO+1DJ>5/Q@TPSP@2M
M>$DB U4UJGX2_UDYW'Z,TA!V<M4Z89I-7O&:..K$0 /[O6Z$%R'^*;J5&6<.
M4;UETDOQ9PJ>,A)O0I(8?U%1',:=0<,380:KW.D2[V*SP0F,H+>)?@%QP0:R
M8RK=JU1T@P7P'O=%15TJC_AOA'< WLLCGQTK%DZ/AZB1'S0H'G 5<"CBD\<Y
MPHQS]C3W<T,*)(JZP 6J32B V&E-X-#B%-',@1IIJA&>>WT@)FUM[M)FATJ[
M @T%Y>>AP#Y&<<^L( \6P:YC7Y&OAS*B<"P6RA8,Q3 /Y/YTV8I_;&]L/R%
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
M]7);6#0C# [L1@VQU'!WD0L\,>H '\8B&495(;M/<*+-K6RMMW1)H&L-HH!
M)!V+]%3,"<RMA&#'NWR )BQ2"$QEZE'.*!8(B=3P#!*'.<?+96Q21&R]MBBQ
MQIT12SN#Y57&:DGG#-:RJ&KXW-[^+XDX3OHTTWD?MK)-5P@M6$[XTPO2J[B/
M8#.*8(J\ZR*IAC;X)4&SI=YU#D=]@HG[] 36;DQMX!'P)CQ"1C[I3F? E'35
M8@ADL\(+)8GQ["J930@HP$D'6-_ &4CC)%B5T#:>ST(B%Q8>"5$$;\;:,%4"
M,'/DN5577)2?"A'%926EHDHC?@RD6B@R,DO-8%(>C4C[#!K-H\+;$^N6Y<>.
M5$=:=WYQ$!A32<"K05/6F-A2!NCG:[A 1QIUR#ZLP=@-_!*LLHO1P 0+K",C
M[1G4E\1<[%+"9^,43::9BF@N9$1>QQ;F+G9FWV!($+[NQG%.YF"AB0 QS[1)
MW5:AP1Y32;'\-  WF@'\D*I,PB*W,_2+,E(@T#'/^* :6;V&EGGV8(<5^X\L
M#CA<!<SKU">ZK%AE32QC3T9<?5/J,OQ#VN+&AFE"!O("9TCV*\&2%70QI<'(
M:>2ZC0)MO. 1JE\$FX(*V^B'PE]1=H%2D:\&2M>\@(-0?AZ2(8<XE.T\)+M<
M(>ZEZ$1QJFL3^XD&VN['F6XF N1JA0CM""..DS*:(.P6@VO.\.C&QH=)H@EB
M1^!67^K)M$-QJS4F0B88MOA+7%8@6\)4'GB ET07H12LL-&.(L>@=9J&5:E1
M\QR-L,$5W;:8K6)O<L<9!L_G[<#F;T/#8#8LH@1*""P))]S1%(,%.6]BDCE:
MCT-6H!K[C,2J+_%=".1&Z/!!L25@2T?L"&"1I5)S>3"\A0N1ZJC<6L /*\]E
M39SX#YX<H?-H6-#W1H$HT<S7</UHX&M,0:HW'"H^9CQ+GKGGB"2V7Z?6S=.-
M,I@'KR^"@VJNVAD<R;3$%_J4/,/8M_<U[[5PK8'\WR+U5RZY0\5G=JW6>M<4
M) &K/C6,F$AAG8F;C2!QLLNU5>B<D'Q4:,5IR,!5$1;#LX%+!W'&T +%>4N'
M,#F!2A 4^CQ 3Q.%._79 :>4(D5H^+!DK('(-.$;.F13C"ZJ= C$PG@>M2)
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
M3E<T,C"N7?(-VQR%/#(-38;;/G$BBG#3#O!<,:"F;$TX1Z3)SBH,3RHJL,$
M1NQW_,L: PRC;J@YW,I1-^ ,5B'([\V]O;V&=53":0OJ"3K?7:L62:#;1XS8
M)/;0&@,+-M3YQ5FHALD0*+LNL&DQEQ81:?0;#/[%R ,MCI(./Z)ZE]*:E!?$
MZ*(3G*G6)6I6H[0()6+0DJ0-PRIF7;2:41HL4FLRV-.076ZJ789=BZZ17D0_
M3(F3SIUR0T@E3>8?)D!T?5]/GF/23J_2=?V)U@UN.G[ .-MQJ.)R?L$H58;S
MV\P<J8$&]P9AF!U=,Z9UKQFL\+%+V7!W3@$.0:CF2$^_JYT)%3O*ELI:BKH@
M<.Y<J$,RK8TSB*I1VQRE?^BV(6E6W$@^9DZI<'5@ PM(UZ]S39I;*$UPX2/;
M;5385.&%E:8Q#,E,VOAH+Y&"(U.9S93$81#(Y5\Y"UAJE4/,K;%TBGS:HK0.
M2Z]DFAD8)H9\7GCE\ZEKEUL'7TQ*Y+2ZD*?0%\K*PL(H"@2H7R29PBOPL'-3
MPQLC6XAM9"H?B1$!5%N?A:5^GB<\V4X8MRS".>XN/O8M$BX9X;KG)6%?HB^!
M4E?A6-9%?)BAP$)1P\C(2*L6_5QO")&.>!RXDX-U7U1'*_&5)E%_% ['8"<,
M(PL;_8/[17JBH[ %4N'"-MT[V$/1L&WHAK)TV7BE]#)$S %1RS[H/Z@^V+VR
M2!JS=:A.[PNGJ):LX4D)[\6J:H+&>0I2!_,A?NBJ3HMMC,4'F$,%L\ 3G]Z8
M4NDC+3Z=B01C?P.RB'S9==AJ!K4<*THIYRR+^U0(@1TZ6PFEVB%IR>=AP#RF
M(6BS8J,U?:^?MPSB$>FHR)&$;N<4;#L1 */*Y2J0H46ETQU!O4SUL>.6TR\1
ME#1"?NI3#09"PPJ=*'0K6RH2^"VCR:+?/S:=NHV;!/CLSS@GYXWCL"O<?W;[
MPL(H/RTB(R:00,J/0D[#DNQ^=Y#2Y$S!M0I(2FAOWLAB<=K0S@<4%K>8M"-H
M._A=<VF:Y0$%;NV5G-F/M3?H^7#6TVG3.QJ$@S$0>*ZNE;89@PUZ[;KU-HZ6
M!G'FL[NPA5Z-F_Z'+'4(QGV(HL[IS3M3QG_=%)4&9+4#-VA/SCW!=5T%=G #
M(7^Y9IY//4QQBUF$2YT9BAIJ"&-G/4Y[C<<QHZ#D,3@90MAF(3:\#U3><UC/
MM%@BS;>ASP8<!N'1X^6"2](\W(VZ0480,XR!8H45Z[/*26Y@OA%L)1\&Y!_.
M56C$#Q;T9X-E@$I[>E7RRJZ8C9M=L191ZY8SG79N)*;015#S4$7=!R9%@NBW
M/H<A+(VJG/R1-,DB[Z-1$O5=+3^=O,2V*?8RH T8T1,AC1+[P\,6C%U$Z.I.
M$W_82DHYI+^R?<8VNSFVDAA^W7=P, J?6 -!3^*<$BY-HPI],I%BC4"\(Q<T
MBH)'/.-A L[ABLFI^DBJKB5CMC&%H6A&8ZS#Z/.<HI 667$4$!(44<IN8_=-
M1?D33U\_<C3MU;[ZOMKBPC;4>J*RM(*UTDRTVP3H$LA^AKB[QLM:O=+$0Y',
M$#58<P.UA7<RO:?77G1C*HGCY$[&>3<&6U$M:30V?17M =?/;'!0RL]U_(6F
MTKE0M5P%-+"]6F;5D(6#NJ.3HSA#.633DW&6S\F@X?P\6-:B30OE)0OMEY7E
MW&V]\:(8G:^=4 XO_* ,'47N.U H(V]<'JZ*IB?_O5!'SI&!FXZC^KB=B/2A
M1;?KV!@]LY#)VXD@Z8YH4'K3N:#>C"76,@%^SMBC+YV"B"++&'<J8W/IDFE;
MPVP>&E,!):6#3T0760@.SRC6TB+/ZB]KS34X?,*PS]F+]G/:ISP.^CPV[&W&
MV^S?W3\'B4+$62L.!CI,G265L>D9'X4/"(:&^K#D*+-<63#VP8Q/A;YL9 Y#
M23#M'_2VK5V_/>9]]WW:1W5P3J;5F/W!OG1U@"E2B=0(;'&> O.SDU_KA[A+
MRKO*M!A(NW&?PBLC;4MRA*0F.\S%(S79B[&!MG"SZLV1V8*1B9S/-UUBZ9:
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
M=2?]68!!!*K0(.7R5A([6@19Z#!'06FXL"=#&HCN"FFDE!VTU>#"0@D"]83
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
MHMW'R-^_^6@9,_AI"D'4MXFP;+V>XK;^ "26&X+$EYL+^W8E:M<9$D,SAL>
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
M\<K%S'?T]DK3U_T;=T-=7#^*CI(3>#+62[_#OU)Y)IMN')E#_LD2+Y^ :*7
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
M<BC)+LI1^<\EF,*R.)#"+4N^9^C-"M5@33UCD:IYULZ[<PZ1=('^")8H09"
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
MK.[7!;H?\&5VZ OL.)O#+GOP#_;BQ'V"KZ1V",ZAP&;I!DR]K9*@3@J0:P]
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
M=/YV:W ;M=G2._(T0V(QVR#T[9L.2U*'#\?$MG>B1G8]X=TSB0^\C[Z&57N
M+!6T]J@UI';Q#<'[(W[-M)RT%GW<D,9@^1"('")I9JAHV>?"U9 G2Q=$@_(.
M\T7#/"NM.,9(\,F74XX<R_6,NQAVK@VT?+]0B]WK.</+HDS>*](M^!#-J9P5
MOBLF905*)6DCY"CC2[C4O_?Z;Y8'_\2B,.)]8Y=*+PH#U$I \111.!*V"K?
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
M<.DK\B;+M@;["I^J3Q.U:"2_@";79ALXS55_'2 E'V_)8\3V..L[B.E!Q83
M-D%,PQ?391#3+HCI(HAI%\1TOH.^5Z^8PX?#_G"?6@= M=ZX&90/7FK[C9?:
M?L>I;>]@Z(O,W;V^?7>F\'.?UN&%#R\47BB\T,.\T),D-@9B2M^K&U6TZHD;
ML/IJ._^X\2Y7]Z\_/3TYC4^N=K,/X&DGZNPROCC>S5Z2IYVHT[/X[&HW(:B>
M=*).3D_CTZO=;-QZTHDZOKJ,C\X&@,&TXY'!F[)NF-#W6;:UQTM@;#&B>R^_
M1QSV\>@\/ML"1V"K-,@@K$(0<5?$QR?QZ1: P4'$NROBH_/X:G0WY$40\<Z*
M>'1V%)]O@3X01+R[(CX9Q:,MH (>3,3[E$?YOBJ9ZGZ:-4-$L_F2V&1T$5\>
MOV"8K"^9FY.S^'A' ]S'GYO+^/SB!??$?\'<C*Y.XLO3%XPR\25S<P[>YDD
M6/O2+4D*T(MK*JTO:E7_Y<6<?C[7M\.;A#?9Y3?919?<,^M.\_H]3.(/A!2@
M40AJA+QX8<[Z^55\\I)Y8[Y@:BZ.XZN7S#;T):OF,CX[><$8T5\P-6?G\>59
M6#6]Q^#G\>CD<;!<=]%/?\!]ZKVJ55)-9K1-I>I&Y>4"ZQM?V&9U H'>:4B>
M]$[-<7S^DE$HOR2O=!E?G.QF.=?CI]SBLY>,D_PE4W,<GUP^3FW;G@=5WZM"
M54G.>$#I/"NRNJD(Z"&4WSSSD=_9*+[8(LL<#G5W5L*G5_'%^=WA29#PSDKX
M[#@^&]T=FP<)[ZR$3T?Q\19T,4'".RMA"'3/S^[.E#Q/Y<T0TR<.>-E]T"[+
M!OS1<N7\,_BCSUV"=G817UT]H2($$3^]B,_BTY.[:7^#B'=7Q!AT;,'1&T2\
MNR(^'L7GHQ!7OF01'YW%HXLG##MV,4UZ7P]44$<8M]H P;ZPX[NSJ_CR)!R-
M]]::7(6J@37O<WD97U[M)LC $U0H'1^'5=-;H32*+\Y#3?@7UX03*1+3/<11
MH9ZZHB2X82NIP7BT1;UF\+-W5L"C^&2+9I8@X)T5\'%\<18$_*(%?!Q,],L6
M\.G9$V:L]S 1,E;3LC(\8TWRZ>4UWAS'5Z>A*K4WXA_%HZO07=+W/E>C^/R1
M8-]V?6HN3N/34.;=;VM.X^/CT'CSI7O3SU5YDQ&]V[2LGG-O"A[9ZOEC?'01
MT*A>LH0OXK. &OBB)7P6'VV1L@\2WED)'Q^#]QHD_)(E/(K/1B$U\BCNYX^J
M$:=S.W>S.\DGG\_H]5G!P;V7U<G:9966[3A7KQX-2/TQAWQV%%_>8SOKE=(7
M&+NP"IYUR.<G6R5LPBIXT:O@XCP^VZ*9/*R"%[T*L+OZ'DF*L I>U"HX/8XO
MCI[0+WC4#&WO*@D?#OO#_0R:HH6"=YTEE?IJ]'4 M@UO$MYDC]]D%\\M'Q"#
MZ9NDSB8AC;0#[N+H< NZB! RO.@U<'QXCXKPL 9>V!JX_/QSE; &7M0:@+T@
MK(&]7P/GGP_0^#3)HX&D"A[037Z;Y6VCTN H[X1B7'Y^TTTPCB]J#8"C',Y:
M]WX-W -J*JR!%[4&P%'^? 3<L 9>V!HX?T([L(OYY/MZQ;\JE*]*HP1&GEPK
M/E6KH[)MZB8I<$+#$5MXD_ F^_TF>YX[^(PCM@=S"AZ[D?3X/+XXN8A/CT.?
M[9KIN40RZLLP/6NFY^KR.#[?HD%D3Z?G_/0"IB<0<JV9GI-SA*!]'&2(773@
MGRO3O4MKYO(*ULT638=[J5(7\='I%6SG 6QES?0<7US&EUO@FN_E](!RG9[%
M1Q>/@RSR J;G[/PT/C]Y'';U78RN[KLY_74L0+23<KZHU$P5=79CT,&^RLNZ
M_CKZJE!-5$X1D.7KO_YY_+\O)O\$;Z\OP+<*+Q1>*+S0P[S0+CK]]S6BWY65
M@H%&D[:J5#%91DV5%'5.3!-1DO[6U@U2QC\YEM53PE,,[1AK&[COLRW(#W8'
M,25(>R,$4GQZ\9*HT(*T-XWXJY/X^.P1E?OK(.F!2/HL/AN])$3P(.V->@WB
M/GU$NL.O[^G [G@6X$U/\!\JLY];';;!/3F-3\]#7>Z>KP(\NSL.%?I[O@HN
M3N*3D]#0O.>KX.PB/KX*+<U[O@I.+N+1^>=S1C] C3;\-"[3)7X,/R8PG/^-
M\&?CU?+=OL!=71FA'<Z"GS6KHC_S3S2 :*+R7%[U?_YP] ?ZO5XD$_U[1Z!G
M6J)9D:J"WGG#M)"\_Q(='^)EWE311^ST_]5,BA=-K-RS&SB J_^J)VS8&'GV
MS_7=B?_[GR'6K7EBYP5P_'E6J(,9%;;_971\]*=7]L$HNZ]&7\-*@5ML.E;4
MHKD:QAM_4"KZL6Q4=(+'H@7\5(.HHC=E08%J@A7\WV5%4DRR)(\^-/ !'0!$
MR&Z1%)'ZM,B3@L\'\%QUIJ*Y:F9E&K4U7 JW@BF<M#E<A\R@+LS6&&M?X1YI
ME')=$;<(1$G35-FXY06/-RCG<[@[_7%6YF K:KKJ]NX. SVDI4K@(@5*D$9O
MU43-Q_#\DQ$$N4?'1_C?T17=$GZXC. >"S5I('[,EX<=20[+.CSU6FG*R<<#
M$!O,(AZR0Y#-@H=% #]3N)VW.,=90=->V^4"@N@]EX<5ED3)N,1/0*RXKO*\
MO*W_\IDOZ5FYXXO%0[YW9]9Y8?*N98SP)J,\R9.Z!A.9%;_@I5TK/3HZVLI,
M;[2_CY[-V>3?;)6D6G,+&"W,5?$_?QA=FHEQQ3N!"5'5,R?K[EZ%:X?Y!>4L
M_P=6*_IVQ6C=4;=R3V$\29)0)OSTZ*[-[^D2AE^1K2K;&NQ__0#]:&8]'X?E
M["]GW&L?9^T&,3VHF/ 4*HAI^&*Z#&+:!3%=!#'M@IC.=]"OZA5S^'#8'^Y3
M/2FE#*)R@6D"SMI<5\D0ZD<?+1?^A_\=G<0GQ[O92_:D\W05GUWM9E?0TRZG
MHW@TVLW>NR>=IXOXZFPW>\:?=)K.X]'%XQBG?2HS^W:^R,NEPA0W;G"+MIK,
MDEI%>!@2>+Z?O4#^Y/3S3XR'6T@;!+PBX-$]^ Z"@'=&P)>CSZ\$#>+=&?&>
M'[VD_J4@WLZPG[09<9^R*;^439*SR[FA#".T.SRWBFP#/'L:GV\!4A6*6U_V
M*CB*+P(0>5@%\=5QH'S>\U5P&9_=H\\[+((7M0C.XXN+)VR"#(?3X</]#:?>
ME#6!P57J1A7MEG'3;I[Z',>G9^&L=8MI.CK;31S/ISV2CL].PXGTW04.%[L)
MTOVTY]&/5 .R3Z?1/RU4E338[R8I0&F?ZI_81RDM[2DG#=0GP_AV>)-]?)-=
M=.0]L_YE5 4_)-5'1281BT[K)%=/77/ZV-#A)_'H>#==^D<'58_/3^ZFO]['
MF1G%5Z=A9OIGYG0+W*E]G)FK4"[Z&!O4>U6KI)K,& !#W:B\7"!4P@O;I8[C
MT]/=C((?W^)<[FA*[O%GYFRTF_TSCS\S1SO:,O/X,W-R]3B9VST/I+Y7A:J2
MG+:I))UG158WF&RZ>?+SDE!GV1GV>7Q^#_;R4$B[,P(^C8^W"->"@'=6P&?Q
MU7'H5'K1 CXZ?TG,/$' G6&?Q!>C)]R#=S%I<E_/,W0[O)BRQM#M$%9!Z'8(
MJR!T.X15$+H=PB)X[FZ'OPX4O/VQGA4@R[O?#I#E ;(\0)9WUG. A0V0Y;LI
MI@!9OAMB"I#E.R&F %F^$V(*D.7AP] 5_L#>-:B6QW[W39(GQ41%'V9*-77T
M-FF2.]3N40QAC_%[F,8A>%]] ;Y5>*'P0N&%'N:%]NFT_DU2<R_#!']0O[?9
M39*KET[U<'P1GQ\%*(0M)NHL/CZ^.]>_]Q-U>18?;0%>OO?S='(>7QSM9I/(
MT\)K7,875X^C=_L4%/Q:5A^QF7R2++(FR5]8D][H:A1?G-Y]'#]$;7KTN;F\
MC"]/PMSTSLWY<7R^12W/7L[-\2@^/@TMY;US<W(:GYR%MO*'J9!.ZEH]>9CU
MV$ODXO0T/MZ")F(?U>?\XB0^/]]-Y_?1YV9T&5]=[F:@^=AS<P9S<Q%<F=[W
M.1UAL^4 H AW/%#B+2G/DG&69TWVXE"WKJ[BRQ I]:>N+N++1\(*VO6IN;B(
M3R_#JNG=E"[BL^/=S* _]M1 E'1Z]#BK9O^BI'J65&KV_[/WI<UM&]FB?P7E
M:[_851"'X,[8<95C)S.>B6,_VWE3\^D6"#9%Q"# 8)&L^?7O+-U @P1%2"(I
MD.RJN3<6232ZS[[U.5$P%7'R ^6GTIL&I*;V; WWT-$^G73"GD71J&\/:PP6
M-= B:/4<NS<^3GU_>&CU!H[=J3'5U$"+--\0S.SN?JR"5XVZ!3:/K;\=_JU3
M_TI=\?KT]Y__57V]:[V$5GY"B*2/GM!R*^O]_L>'6^Z+W:DB=N6P+Z61T>TP
M^N"U<@,Y&%?V\H]WGROKAKGL1]N=7/F5:\UC,?OIR?^DD?>D9*OL @UTF0Y'
MSKR%;[@XQGU=/HOVKVU5Q=6U2_>VDVK<3]SCVU]-7@/P_>E/3_Q4+(;_NYBZ
M[A,K]5/<@OZ1Q \\ ;![#U_POH<MZX,;NI<"FZC"1W@GY&5BO?,3+TL2;!B"
MQ4EO0C>X2?P$<?"K'[JAYX-M"-B8^JGZS6>19$%*/Y&#%:(PR4L^JT%C=3JM
M#AZ_:?@IW='L#)<[19G_^NM<P.-!$%UC=GQ:!K:K 3O*8FN6 ]PK 3PN ![E
M  >#/<J"J341\+T[M?P0G_HS"SUZ[MI/YU8*;_?T6MWB#4D*'R I)/(5 ?T@
MC%(XEQ]Z089W%$60B.NYB(5%5^I@JV_",(/'/XME%*<6O.C7*%X G"[^U;*^
MX@\VG1'VD;H^['L6Q==N/+T(HHA*!K2=I',WA3==1<$5G,I/OO'FX$S@4L'#
M&"]K61\!5*Z7XC849!;N#;QX-A,Q_!/D)IPPN+%F<;3 BX")@&7 )?.7=$8Z
MBDA$OA.K8BLN_$\NCW"_<F,_RF#S\.(H!A0SB/ A?D$B4EP/@ [>(6R#.<Q[
M^1E.8?W*3_%GTY=TJ#N!]M7?_,?F+B!FQ6"W[F7?0O CN-=7OK@V J>B"@<(
M/49BM\2%%RT6(O:$-8W]*Q$">UQB90[P1Y@A%6<Q4"E0-CCZWK<+^#.T@>8N
MIF*!U.F'?PH2)!<+# E,;>OM[V\O%JXW]T/\J_ON8AD#0XHISX_ VG]K(> %
ML.])['O$:2 (4F#!I1NGQ/?6,H[2*+U9YG,GYD#J%W$6XC?3C-[8LN 8\.>5
M/Q4,87T9_B2-U .J-;B(65:($$ O\*_K* ZF8,$(V[J>1P089DU@79"8">YA
M"1R> "0L6!!V3=PL?)+$/IQIJMZ2X \6-#(#1$ "$@9E52A_36VW4C_?_$0$
M/NRJ?/P"[OB:.<@7X'F0"A@I EDU$0(%)F\1T'D%+Y<OG&:T/Q3F<+39# 29
M "%.<AH%2)A*D68A49!VL"F 0_W243)=9$L"3@CXC(67Q;0'!2H&1.0!*&#-
M&)^,X>TYC,L'8?D+WP#^ =_Q#5"T-P^C(+J\ :'F+T#%H Y9R.&!N*\4J/0"
M%5&V4)CG[F1 F5;RS0\">%_@3B*$90C4BF<@L.B[P=,)>EBC80E=  #H6 LT
M1T8,@;]"E<H[1W) E8KT$@HWAH5A=;D[0. D VJ X[/6!#$?71&&A?4>K?!0
MI(17..TEX"/B\]-J 3ZGL /\&I!JAH6WDR?09 :*H_O.>OOFG95$L_3:94J<
MB@0$1D%[KA='">HCL'R1.*S8#2_)3!:AHI(<+_X"<5*FMO)N$?\ 8@""U/-P
M2LGMU@?@=GB"V!WL161W^A-V^0GY7:&/+OM8'Y#A6[=)X>$F(;Q/,=A$N3QW
M@=21Z&-D7B!H1+$/O R6B7491]= >$"$P&Q(7OB/)<N3+_3A-5@K?IP@IZ?,
ME$S?:Y@KX1K9PAF/QS8^3SL T>5.8?NX%9?:4"#AXAD)K9<"F"4%F40R+1#?
M_?1&,?&J2I"<=RUU#CIN)"1SUF0NO"83% B'I1A &8D6%V1JEF]09MO:@DFV
M1'L( 0%P1]ZU):#* ,&S(T1*A+L&C4Z[/2R@40)"SE1X+@()(%"RHH*+2*3\
MT38+&"PV^1Y?X?3H%:XG91<X4N(WW,"G0OW9\%.O93U7W[U@X.!^:#=A1KU!
M6)*@:+;@.4$OC,C.A9\K]D5]),#&!TOT,G:7\QOK^9??7B#U!8@Q."BX^_!(
M@@J;! )\_^4%3]: '7I2=:__[-T'^)TZU;!\JL]O/KU_]Y!=%S8#,ZPR')3K
M(-=52%WD2/7<):?/;]36F,+=*>+RK1M/8(5WOWW!M^'3(+R62GCEBL[660GL
M ,\GGX7R.HA@?-DE6N$5+$:$CWL+7/!--#N!5E"[0VI!HX=AJVV"E E03Z0X
M@U1=(L0W F<XI_N4$0 4')UD*;PT=Q$U75M6A&MG4^X)BQ- J,ND<"TFLELH
MN6<9J$>RU;)$R!_"@BP-4):16W0#%+:@7>,/0M+&.E.#RR:25!=I<![]*+5W
MKB.^Q)2X!(BC)"T1 ((X]W1=?T&21/!<,Z)'(:8$.Q?,N\A%ZP\=-?@@-PQ:
MUINRJX?/23</V=^+_0D":P(V@8W;OE';*6P+!9-8H!V-_R).MWYS)VPY(J6S
MJ1&%EQ'NCG9F\^;=)9S_NX]X +B-N\]L:]QY1J 8.\_4Z^049I9BG;9-=$\_
MPKX1-IY@R>R.(A*.ZJ,-23YP ;C\U$9IUU;:"8:^V1U /&@A&&EV_Q'ZR$%?
M,'H S_^2@7','/1/(-00_0_?FZ.$4IX!&7KS6 A%< &:EL!"H&A(A(,&EG:=
MQ4&"K?8D+AE$Y'<1IU+\6*HVWA'H*>E1L"+LET58^5RT<S*K847\]9@-3.U7
MU[BO61:3G,I5*3PB 0 'C+++.0&-M$;"(2TX\IM@.7=G&-Z@K3B\E358WK8$
MJQ]X_'=@3-(ZJ**(F^%;O;F69!=2^E-L2J&Y=2#/HA7^&[1!MF4A:7L^L^*\
M*$L3\"<5SLI;=3UZ"ED.9'YYR4X;6+HC6;I3L'0I-J?Q-ZY^ WY*@@;^2JNP
M[<Q_BZ#65"J)^M!E3XL'0%K@7$9*M2E2C<BRR4(6MB1)R"Q#%[4L8[>2*)R,
M31)XYEHG]5A<(D49H51;**''$+)>I>H-13PD[I]VQJ.6H]Q1R6(#Q-K37K?7
MZI6_Z;1;UKM,!C_\Q$(7)9K:NJS3!B>KZ(E2+4^==K_5J7R7TQ^UVNOO8H["
M_);R>^ KM7^,BW HQ$,/Q U]>-'D1GNK)^,*\@FFL?5]L@S\CDPAC4YZ7IHJ
M"QDT69'GA;M1"AC/,HHTR-VZ>8P;0S01R4".X 31M2'AK1L"BQW;[G"82M.)
M%/QW-1<BC4&" 7[!<?#2PI2=@@T3WS ;\'=2,5>G2=C8O"F)P2G@.6IA?!U(
MQ$5'=WTGNJ4G S]K JXDWS1[$'7QC)J%2BV_$)>N/(^R!O W0$=QMJ2S!6 8
M7H!$7N1OD>2VB*8B2%J,1BVX6+9 M3<6K*)'-RG2*D+-(9Z)"^_&"Q S:<3+
MHY+1E",9IP"WD#0+.NHRE@P,R1$!#HZQ0H1W)YJ5S]Z_6AG.@-Y^OK8,XQ+*
M8QGF18V!R@AHC)T3/A[]"2< %?17)O(S6ZCPR-L@/)<"KRLQAPE^$@36,F+S
M@=>;B%#,_%1EB3 AI#!T2:>,-L<Y:>,BQ!A%@O%"-"*D)V5Q^#P5H-Q2UI +
M]\\HEG$.ET')T5M*=)')A X0R^!RK!7SAV\__K_W[RY W9.%M0!]B5*2_$<?
M1"31/[]&=ZE$>.7'48B2;H72\;?Y4B!G027'KEJ$T@3^?UUE9I47=1-+B650
M%/Y5E#(L78RV?[M 4%[, 3L<W(\\RL-= )FG+@6]5KR^ (-?I8UJOAAOU)U&
M2[47+:EQ[2;ZUG.FPDQKHMDL-V2-,89D3L&Z<H.,HDM@>V6YX-?S(DF>$40Z
MR?R <K#@<(K0NY$&&OARJ"M \'MSRFLJ6Q7S WHJI;0PD.G<#YA[\Z@SBB>@
M429/M. *N<:<II&F+NCP.2*#"3+_513#J8#(X+QA\6=.(K 4AQ2D7&7FHQ=M
MDVS4W(V#&:6<QFK4/8\Z /,O(I38^$+X0@ [1@L**\K$-GP(< /G/I'D?]O[
M09#-,-'AP:]A#])WUH;")DJ9Y^J!@AN\AZS(T%#J=F6@;/YL+DU_4,N0!X"\
MX[*BYZ!H*O0DMW0&.%LM1;".7=1[POJ$,<7WMH7U&);SIG5[?ICEZ9:,<)-2
MG\=>+]4U]5(-28_OLE3@7^)&*V+Z $81R&"V"+^2#-Q60[#18&^0=3[>=<D2
M .XS^U8,GMLK3XX!1#MV8%;"8*Y4#* !T!&929-?"V\4WFDB+G.54R-RV+(^
MJZ!04H[H5N;^[I*U+>>$6Q59#N628Y *##CRJSA,E(?/BYR@A3G!Q*HJ'5&F
M;#DQ=^OJ>JW)BD&L'ZG.#K5"%;F"#H1;5] *6;1<544Q1%P@Z9*F :<*347*
M/G=;,/<BX_YAA+FVRT#[EJUKK'M YTWP.<GVH'J33AXZ+(=]2L&5HJY$>E&4
M[L^#>WHTI B[7 F.NW ^$!TP\$!=QA5&ZS17$TU[<*>D>5Q.S.BGU.(V= J*
M/>>5/W*%PA_2S,<?[V?=E)F^VW+V&4BY\\B0C1:,/B'DUH$@JQ?+TFCY<O-$
M!I)ZM2XBR%\^AH$ 5-MY67'-[/";D0&-(H\K&4T7.*5J@EMR$WG"G\.AO=43
M5M\N/$'T*H9Y;.16;N5LL- <)N/\$[ 2 TPOS !5PN:/"@W62QY^!,]9)O_Z
M9XM@PV9-P$)SV&R3+MMD_]?*LV-Z_6QQ:SBL"5AH#H?)]%*4)1QBQ]2"K#G+
M$EF<J+BN7'V=9![ED/$;K,7#P"46W+K+9:"2671#Z%R1;%BM"5AH#JOE-B-Q
MUP0O.Z;<23_Q,%I6YK($HP[LA7/<A JY5ZJV9=B"2I(Q;=W:B.7Z5^";$I=X
M_/BH+";*J^[D;:9>V^X,ABJ-7^M^S#*+O3F5,I0PK%LK13ES'GO*BYAMC+\)
M&>H",G'ZK>&SXFY/XBZ$K':2]LV8$^YYMK*X> HT%?L4QE+E AO2\J6,?*D<
MOOYQ2Z=5&>/KHISI;BM+\ /-8T6)BCSG]2:4APT"0:G8993D2>>* T;\[&40
M3<""9##)2AQ5;S'-L4/5!%@"H;*9L9 7.5*Q!"2ZW[B2)*]!I&K4",.6EXBC
M4-X)CJP$D\R$L25==98IURL_SDJE[GE"/9EGZ32ZEM4_R5P$*=$%5AQ@.3JE
MLVW>^!RY0!7**LU-%U=\BE#2@@QGC&MOAC-7&'A"3#FZJZ68.0[+M0L^%KAP
M>85<,E%P)8),   "#03XY$9ML;@HV++>I Q.O%0'IT\I-^#CM4 L8*==B*DO
MZ425KE%!"UT'5]'@2AK' V%12A&OU3+VIK:MONB3-U*8]WB;O:$]'/8.+/_"
M(M8/--QMC6^5?Z-[EA640-KM-$[![2-'^E;6H<H,G6W]G2YI?HHC+"I#7/('
M'VB7=5*IYWAC_6VYFK=(Q/%%5KRIB-^ZUX7UIM]MG@JZN:7N/"^6070C.!TK
MPH2EK*8?N.)/:H4T\KXIUM%^;U,1C[Q;A,7&LL(8N&:.R@=+S#R5^DVHQBU5
M(G^]"D]=@Z-[8'F*M)Q"+ J5B<NI"C(4P87JR<&;*!<QLPZ3=XY >'.]4YKB
M+2]T/T"]!DKQQ&+A4G<0>4O]*K]CP"*^96%/!3B7K1D9*V76JZ]W)U0\!QH^
M"@(7E>DD2]6;:.-<R(;X3+'*C_II++%V+TQ=OM)52F$:Y5*K[J"H&<2R8'4]
M7A;S7:OR]KRBS<7\(RAV*G]%M$VO^$+>S)+5B71+CXJ$Y57661;,P/(A^F!:
MD,2.)$S-(BQ9S+L:X,C]JN*6&</P*]Y@@L=!2$YE<:KKS?'IBKLLN(^%B_=#
MM0O21=5^PL=@DP3(AV_JW5B8:16::+#YU5R0,(O=)(TS;AA057I1W,B\[=6\
MI!]6K"@K-V0>7AUFB/_@I^YQFM(U+!U&@Z(:O+CAH!<\*T-?6G^LX_/*<S1L
MU7U'"0RLJ.1[2\5>5G99WAK9*@K6Z]M!:N2Z56U!EF/X%K56:16^G,27<.',
M$T%")IZP0Z+D$%?%<Q$G5?OB)U1#BUQ)WK\>;\O;A52+)E U^&8VB8#9C!2J
M<P-I"EHT%!+P2VGP)*5+J@%Y351Y6](C>4^ TAI\&%RCM"80!-Y@P&*4=>VA
M] :5O)2W@HT,2NO&HE1135<[*CHYX7X7_G==[:V0DY0J8)QX5&#%M4)<_VRO
MJ'XB=UOVX"(S8L5:*/6A*5T?1YEMRY8BWX$3TFLJS0&9FJ08*@Z)605V)E ;
M36#SG@QTJ>_$=RZQMF*2<<VR/8^]9+AG2H:;Z)_LP]7[F-=O_B)O%QIW;H.)
MNGY?5*I9ODM4J@!TZ>X9ECFZL3=?O98A^]%@.26'!MWI KMRI3$I<.VBYZ<-
M'A-?LA?<B4JWO] 3BD)Y!529HFRN8+GG9407/XPI4,<A6;O)6W5E&#6Q'X+-
MI;4RX[X#RH6@?AD!MLOHM-IYK%5:I[,(FPR \P'^,@>]N=A5<:/R?JA-@KCR
M.2LK1U'Z_R6!!Q8$]?61L6/U!GI(;A1(;):JV!BU/*%K9A0SGO+E]?C*9[M<
M:SJ@RFZ+Z#.2J+B\P7.O&.9HU )B7#8W0JJ]("\LOUIXP;<*R]?&[M^G#__"
M9V[OV;>]41\8VA=LYI0Z];W7 A'X3G4Q]3*B0,VUWGA32Q$DV82B OZZF['2
M)B:/AMC28^$;KMHEUXJKWX9S:^BU#^O"F-J,6A5?*-!N",]5QMWL/-QF4^K#
MI^MRN(6-@;="/P"-7<;NHJB6H+81<13ZGLTE@TP=[LT%H/_""S LX4XI#Y^0
M90X\2#VF\#HHQ>_HZJ-2$"J:IP??^*1NWE%/(ZG5Z)>667$3#KO(+\NYN0J%
M1TZ*(%A@)KK\NOS8?.&<LW9% %\+K7"!O?1TKDT0[2Z4_WF#Q<'DO^G;+3R0
M"RK9>I([Q2B-P0:)HCZI ?7%806\95'N@U4J'+)5-RWU^_S2Q<K/\DZ2*K7$
MD1W9[R7 1E\VZ6.P_E4P4'V)*CI_2BUDH^;EM"BV$Z!G6&DEW,WL;1[8T5]2
M; 3_3]"M:^F *^U+L7"EIM$MIE9'U#L'@(LZ@SNVON'>.GC8+Z WIFX\3>"M
MT_SZO_7\S9>W+ZQNOWW1:P.*L;L>_/#2IPOZ?*^V]]+Z>Q1-*?J%+_Z($L&6
M'3[=X.(/V/(7N66D!%TV;#12ZPJ(M>9N>&NFN,Y>]%W3&RCDT"P@B6*$.Y24
M$]YDKLB[S1L:_I0O?!E)44-2_'VC^\&R8O/W#]68FY6DKC]R^3(3HB1>W)QA
M0!.ZW]F$$Y=RJ]MUX7:_:RO%K\6CM<Y^%,Z35211?.F&LB*B82&JIH0?"%WO
M0Z #D,6_B]1$'S;XHP0H7P(JI(X]BNGT&YXJ/LJU,-Y-'C>XI$8>[._D6IBD
M,"?5<&&+8K3)'"RPP V]_$>Y%\/>8/UWD$*ZP@8S4P&L1:YAMJ0KM5<B]XM(
M$08W;)26PKKTNM5-%HM2?(-+K\A8X'J/XE41IPI=3 %?BI6C355?,)&W!:/@
M27$]@&+F9,!R2Q7L+HZF KYO%@5^E'?V4Y5' :K/W.C /3<Q/-T0WO^$A>64
M$T/SBF6 ]=7];D*0FS94AIADAQ0A9OE)^:+^3$Q1R]D\]\.6Q8=Z!H6?8S5,
M!7OB M4IKPJ<%Q:M&3L=6S9)1F('%%EO,UD[\L]HDH -FU(X"0.1%$X"O1BX
M>3WF2CJZU >)\E5+=2XI,63G'FY/]IUX2$OY4O?(%MBS"Z$]:>?^-+6L$2KG
M)!V2/UI?6@"A&'B76E>I9:GDM=M_AK_K.,]4'GD"!H7*35,+RJ(MN>">;5>B
MM#=*[[,).TG$7QE* [G1O )EP].(RSRS/A$WD2S0+(I;\F1N,?E&"AQ<!"!]
M=PE3+T%TOBFPODF!-5&@[E@/83N8>PS\.L/&,.5A7](@RA9H@>(=E-M[5+)$
MEODKV1D-I5YA>Z$=./5EA^>O]'->C#J/4I0EC+"W+H:0V.J5#Z H57W*Y#-4
MAE,J#[I-/#YR,.#V(9"/NC7&\K;>'U(2SOR09$_-9B#KFUX3_943/6]I(;+C
M"=;JGEKG &/#8;\ TO"G)TYO%7X=IZY>JX#6=J+:N1T ,O4_8/=8OV!W[UR0
M-FPP^[T?[-5$Q@-V 0!4SR+P&G7\[I$>W_"7X2_#7[<=O_KRMU&IJPXJ-T6[
MX"/J0&G;%O[OQ>I/U,[1YBE_0YOZT:(I&8\F2_3Q&_6EB;0'Y4GDZ0Z&T<$J
M0D<&GPJ?;\F].A9,&MXTO'D^^#P0;ZZH\L(__P<79SYY%.VN@7P3ZM-H27B0
M?ZICM^\/].?R"B=G(J(L<<-I\F*G%K.A_!J4C^D-(\%. 8_.^%CPV%F+1!H\
M*CP^-4@\?B0^.Q8D&HEZ&A+5X/%6/(Z.!8]&J!K->-)(W+]F/+EP^0[S-T>R
MU0<E:8YDJP:/!H_'LE6#1X/'8]FJP:/!X[%LM:EXO),)W>Z!]=P=G4).*A]
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
MQU&2 /"CF<^#8?B##[3%5W_S7]\/L V"X8XY=QV(+023I3ZL&*,W:(U+0^*
MSC;/B),3272N"W#H3SIW>69.+*<8K;X(/\/Y?%L6YJ%2ZB&<:14+3<K$[C7H
MHA3.*F<@23&%S.SA$8LGX7U/ARTGG[!"OQ9Q$H6AX&?SB1SK#W;UR8+RJ+B3
M*@DC_LK\8G+1S/5H+-)%:74E3=3J^?Q /F_Q-8J5[>LEEHN;R:>\% !:NO2V
M*Y&D/!)*;A[>9B79$H=*Y6\#<\ %Y,D18_1N.2&G)/UY=I,:CA1'UR#4Y! 9
M-43J&*8=/29+WBK&F$'YDR7_I.!.FJ#VM-/M%P3)LX*<,;+,TXXS+&8\EJ<(
M:>21"1ZA5#FXB-_,X%E]<]]!EM7867MWOPV"8NT[]7;Y3IJKY7]7?)"D,9 5
M$A(\AT:%)&]?4EE!^Y)84>4&T76A[WF>UPV.VE"3=5)_@3_#/Q?^=VU'#R++
MG2LW19BW*JW#;^LC"$67X/S+]Z4(00@9O5H)J \TXTU1VA<4G<RZY2]8I@J&
MI:YGNZWARK3:6Z;&2G58S;J+_(4@+RYC=R&5 NN60N7IBJM"5]! -7Q7[%Y)
ME>CB'V%",^SPO5=^G&:@:N'3J;"2>72-4R%1+8,^H8%DI2%N&]4K[ZW=&N1Z
MK^DC9AM!<I]% H(.<(CP?%?,2&2ZX_FBVB_T*8J*  ME_[37ZI2G 7?O0(&W
MF$YEXT8;RJS1&HW1=+/0FRO)#]HPC0)WDEB=5MM*;I)4+,@:2H0DF8T65YGJ
MW"F(?Q\T"X^R8T L8^'Y;FX7*OISZM"?L5C 8A$A#E@D:+XI ;B@O4OM-RM(
MJ*"^SLI\ZUN'9J\07Y)&WK>+"2V$OX&U"]RNT%^GU2O>XR[0AOCOQA^W=3N_
M-HFW"_M=.2$SL()Y\B..K?0]L?5M6[R*%8!6^"B.YD4T79H>^\#N(<<VS<#N
M9LF]G1O#[T,0+X)]'VD81^%6@W@CAS4(5#M6$3J@HAQ0NKG;::\(_$[_ML!2
M$2NU?KZ1XZ^)>!-QB08-S:ZN>B6NA]9%>6PMBF4<<;O43? Q.JPT:164!&P%
MC"<<$DZC>6TY4AM<X=4WD&,J?2,Y09LG ;^-8M@F!KS^ ,F/X[AQ!_CS?[I+
M-]2TG]-O#3:&OK2CKXY%WG!F/ZDTZ'G,K#8E60Z/)P4=ED+:4>[UY2=3"D]Z
M[67[3-IN<B#Z# PXV/-?&2@NGJR.Q[I5"SF]UK#Q3+)[YYI2%<PL-OR>HS\
MVBL?S06B",E*7]WOVUWOS5#<XSD:)WRJ ,MFZ;^1 ;SH,O1Q>G)$/_+ECT*1
MKGG(,F1EE]B#C:LBJJ9;I=5+.IK/PTR.S/QQ[;=E 5"PL =,#;8>;IE6Z^D;
M]-%P$6Q,(J'0IT6 E]UVW1JT+C&$RULIC0C?O"4<?;YA-YTRN&[?S?9L'!C!
M!61)W%9MU(P;K\$#F\5(X:-)+*7N=_12Y,\+C8ACZ/L:Y=PE.:.40;%N62VQ
MZ\;!6W@_*7.YG0J%A#N<@$,Y\U.I@7%M)"PYM!Z)+O8])$MR!Z5:%K'G,\_R
MI]&25"1NU2_L$2)(+\J6@=*WJZ\GU;DAEH)[@Y]._;3%@$'(BMF,;0?Z6J6]
M $B=0M%KD$:+HR1).HXR"?#=B0M@ 9WL1U,58V]DTAC(;F4X<</"V3B=DZ#L
M@R^/&,&IW$G%6&ZKF,;JEXZ%V"]_#K\<U3CL(_H!.W(8E<=-OO9= @=/7O\*
MA.Q* E>@YZJ1) LX_K9BM,_\Q',#2N4DEJC&CPQ\EC\=X?:%]>03*!CK_7O;
M>I^*A36T/KBA>RF08W](K'>P>D8Q&8YA@8%^ UH-]_&K'[JAAQED\(JG'.O&
MWWPNMEKX?D_40>" "P#2Q;]RGM4.L&G_X.[XN<C!9[[\\A85WJ]B$H/Q?&-U
M!O9VV]E4B.CL_44$@M3 _V7W W1-)>:L=V[JUF';<\QG?24O#GS6:U2OY&DG
M5L+V()!JHF"<A6XV)<?ZKQS:U2P]!6BOV _D:DN[ 5BO:BT_A$<6')^=@XZ>
M"('5!X+59!06RG'B(OO"3Y 9W3#$M)1:#RU6O/!%_NLL9^\$8P'22EXN@4W)
MWPT2<3W'L"NI?5CS#2_VF6(.Q)TYJ^,)I,</:V#.:_IGEMNZTE F R4D.]<*
M\318PH:F+*4$]0?2N9M:UX(?G(*<"$%@) D* DRQH $"YL;,]1$T+&+4671
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
MJ=YH8"IHA^&3=WZ0I6)J BA'P20F@&)HP 10# V8 (JA 1- ,330-_; V=-
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
M'+1DF[EL=M=[05T4UWYIQ^Z-[SRY[K[ .%4@]@=W'G)G0%A^J6./NW<>X&J
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
MT[J7DST1J&OA60.Q 1;5[_/SKN\+[OJ^NNH";&CTDS="N/ -HU#_ADB<@,
MQ?49;#B/@P9:5/Y6(^O;-D><OFUS1.C @92!S$D<NVL#B#<\5-"OG_<]!#B@
MNS9U SPC3ES)H\PD7XH0@DKW;GY XP\R7?$C\,SB2R8-16GW-;U*@KK;:3D-
M<S'VH6O_+L,-]14L_F/0&NQ9T_+N]&Y#M^[M4?6N"MEL4KS=?IL4[_L\7).P
M&]-[J<!/W/T1U1\KWOQS/V$)_!V%+;?K3CB.%7(;4Q2+%)R^D>H%G7Z>:H,.
M.,"#F4-%;=0S:T.ST5F7L;^\(RK*]8D?2B&H;PHC\W+"MYBN[%?DX][]Q=+U
MXT71DS.X48[G#$0HP.>O#&06&@XS%BPX\4W&JC:ME'>Y9,\/?P2BE"""4BKE
M> N''/1PD0SBZ).%@#I\DF^EB)<,%F+P8R+DF_&0;T)]&RQX:'.7VNEU=8^U
M+M=S$:XHT1DL48357!FEQ#=G8.WJ(<,B& @K!WG?%I2N*[N%W=V6! <+;&WK
M27GO11RX.$*>C21M((4^$@_B#0B'Y7L>NBZ)YR+VX*D05>GDBEA7 HT\QI'M
M.@R5(=TFB8P[;.PB>-_SG:JXVTO'2RT>_47%H]^B@=:\'6]2MCMRZ^\U</G?
M*HRGE,)%;TTOR)!8]Z6UKAEL8$9RHH(+S+$I%"#@;:5Z9 R*)*;\,5E6%$;6
M\@@M1ESIAQ?HE^6)!NJM*7,:4^Q#!T;FG]QIDQMJ%L1P35X;-1T&UD7[W+!5
M_=T1;JV"!D#(H:8V!MG]#;+5[%BBK)_=&6@?JQ-P*LQ=\%'>0_Y&*R5EUPB\
MK+F_7)G[L+)>;J]1M :!A^W$4<G1# C*2&YXE/.V.'_"QV0L6'LS9NO<;F,E
M["I5&\L2($[N7$=H-CIM,LDHO>=B'85+,1B<4*:2G^28TDFKK#6T?P2^AFRS
M"JM,L\'<M-(0D]8NGLIZSO_!VY#+%_I 1L0^O(9KA<N66H 54673++?*;GL7
M&MUBFJQ8;UF(J3?\L2CU%2X&H(*P)"L<%[FW7;:.3V/ /'!W7R@W_C,9J6^U
MW+@)+F^4J45,AD;2;B@NV"17A\[(!M"7@*T$*R&C](V%.'@NGWNARE/R6A *
MA'$T4SJ44[UR(A]EI5:3I1R<!00!3O-TY>95_-C%6"BFN:<<VEHL@^A&R&J
M, HOU"=%GKSLY%S&F%JE2'/9JR,!@*OO(-?=A.+C?6[HG20R%6[6+$D=JHMH
M*@)I? 9>IH:JS%=!KT],9P0E92KBD#O^,IM0E/1*Z+4*%):D' 7\]N? !9+_
MXLTC-"/DHAAYQ'?SCFCZ!KU;L8CZ'9-7R_JRB6\4C8)RTE/ULJ!W:R)>Q4D4
M/% [4=">2CRH;+$H1&)V\L.K**#JWSD7:62AK.O)9SQ+% 2HE25C+?(B%6;?
M\<LDKR> XVE;+ZI!E"5$U45YDWY -+Z$:9"!Q7%<V!:\#N^IT+#KHHI$*[!9
MJ?;"&F72AUC08*]-FK;8>Z&?<EG01*R4L6BU*EJ]UT8QI] E(T.J.AJ#6J#$
M\8"&VVO5/M;@JIQCB5L3'O[@,@/'?O+M8H;WN_+Z7+2\[#*=:7\6Q,5U7NKS
MJ7_E3W'&](TO@FE1$7?+2_)J-900,I99XSCPP7]%C(DRJM#\H_6E97V-29UA
M2!0+E-7D:TS.N*F:NI[X &%7SE07*YRD*QJ@R#R*-N6,U=J/=>E$)K$6E)05
M7=85?L9I070*2J]@+ED", 3/: =E+] AP*@ 6M^7(B]Q S Q[:V*Q?6Y'1.4
M$BEE?>#-A 8MY3C7A8-*ONFBHZ2150UBQ3.Z<*"7<'*:O!.PP>6E0[XE ?*!
M!^QA5NU&#7,B<U\135*$LA$@G**6HT5@)9NSV?BEK>C%#3?1'NZ1"$2N645$
MM&<9Y<&7,GCA'S,AYTLQ?]QP!+SQ57;'7I+4,25)9^ %?5TS,"E1%<)3N7>@
MVWL877!UR2H%TU36.K#+@%X));'E#**)P,!P47)10Z7D-;Y%<:AF'9DI1O?9
MVIVG&)4ES+B_DZ%%)':/?FQ1,>.G;?K.ER]18:]YZY<0984>&#S"[O.'H2 S
MN&"%@#"";.9+' &:G+%!TS&@:72$LK=A,RW.8**&I.-^ISGS[3Y7AZD./&2C
MWH/=NNYW13.P=JO?MBXLI]4;/MM)._Q#M^3?/X@ZK6X?0-1I]4<&1)M U.\
MB+JM]IZHZ)&,[4<1/;^H4"95ECRG.I';)FP>)\D,6IWM(VG.DYL,: X/FG/J
M$/_+>O[NY,1+K]/JH6'3Z[9&7:.V-P*)]#;\=]@S0-H )*<U&#&0.AUCW>Q,
M^)03M2<G@-J&GPQ@F@"8<[)L_KU:-5-92-J 2:G[IJ6GO7[K[J.[&L%HCP.N
M86O4,^"J"ZY^N]7>/JOD8=+J+L,(3-U%4\M\L/M=I^UTK%]440_?4/B4Q=X<
M:T(_!6YH/?_ERZ=/+Z@OQG5B"=@<W= I+@Y@-P[UA%OTD0TSRO%C"29>0TBJ
M2A*M*8\"H/*B" N3M3),[&MIJ8M'.-P@RB[G6)H81T%@385LF$(+9TNZN=5_
M)HLW09WD.RWWA)0%\+1K/%[@+^A2-U7!8^$3'A=O?J(%S/>2$O_[!6PY7=MB
M?N%,M5)18)"=#AGC;_B*EZ!Q!Y5'M?5K&%A*B=O6P2HA"! 9Y4>4S:_U:^9
M2=]$6E1MK8%;UF7-_#B!3<4NW;B?NC=JE544X+P)?B1P:SU!]9K%#9J5FPH;
MJ\RU#J$TCP)1L/F"C58SAJM$(5:SE^[)X&T*A+.J[2^7EG&O%6P&655Q:LK9
M[UD>N$H\Y9) 4^=GZOQ,G=_I%Y:8.C]3F63J_,X!3:;.[SC09.K\COQ#4^=W
MZG5^#F9ZX3^FSF_#B9Q6?TQU?MV^ =&F.K_V@$&TIYJ*L\R$<YT?1?].LM"O
MW3;L9$#3$-"<4SK\' K]^NW6",OS^^/6>&ST]L9"OT$7@=1M]8W]M^%$78?O
MPG2'K>[ F#>FT,_4LQG '!%@3.G,::7 >4-?N0OXRM1!U6$/._VZX#E>JAQW
MWIR/L]RRCS"-],/V>CR!DJ=18(I<M?=T8QY9<<-I<6Z;3%^$OI"CF[#35M'9
M3RW/(Y;6N@A2MT$< (6]/>6$"#F5BNM0-@RT5)- RXT255$&?"L[@<GB&!O+
M1_P9S6$7GC^5$[ $5?6H]5=@8N=-[Q &:8J]SN07-&!A6YM"U:D.NZ3&^<1'
MN2\>UJGV>_N@SVNY$/5+X]7N6L1 ;3NI":/6-5$;5REG&</OY>Q14WIRMY[G
M6ZFAU,#[HFC@74SBH):+";8*AQ=<(;5I=4PYVK>^B)N;(VE$5JGO'\Y9A@WX
M7MYD4W9(M4OSI/@;'(4B6Z/+(BB&/S#94Z?7&EH KH"*V)XZX%FI/^D)_&2<
M?R++ZO"$W,I<K"7DY1013./1 I@HHMTNN3UL<'/+[!%B#'AIK]7)WXE5>*'6
M;WPCT'C F5;RE857W$>]W#*1)UNO]TU<G2[G;FS("%L"YXJ!2' @M/H@TL2T
M>(U69S=HV^T!6/7]KCULCP@NW8$]:+=OJV'TPYW LN/L!)C8PEF"<Y7T\H:X
MR0-!VK/6H+F!S/'W3GMD.\.Q;3E.W^X-'0*1TQ[8HW[_ '!U"L:!7S(Q/!RV
M:]R[,^ Z"KA?J6^SAQU3J>WJ'C:M8,Q0H0D!;''PHP1X.- T!F"'V.0?)S%I
M6T(!LU;GJQ\?7VRYI0+8PDC(]R(-!IV>UK>J$=38'O<'@&?'[G5[DC+L=GOP
M8&JZEP(^76W[OL*DNZTGOM;;6R>"G&*F/$Z1VV/[B9S_58>J52$O4H>:KJ7-
MN=:?DW1"$SIQ-!"_$VQ)G 0IV_EB\^]:K>\;-M&Z(5,EWH> '&%]=;^+.PSM
M:3B@=F^I:GV+D0<09"F";&-I>Z]-LR/*X(4/GLMO7[2L/\B'89^1O#N;_:N\
MXM[]GL_161EWR.Q!O;BI.:OFIJKY@GPY8*WK_NK(F*)I/KY.FM2S3>]EITF$
M+LL#>"*6W?(MP=Z0Z@R+B@\_9DVZNLE54U"Z4K @538SA%EMXDMPE !8]_PL
M-O3'*9)R(H\F<J06HVF[<%+<PO_)&_Y73R"(A>KT3X]/M5D.)33+-<'K6[HW
M/*7G']$U]MZV >*>2P,78*>!>\U0*UZG#393MQ42Y:WRCOVX- H$']>O0.3H
ML,LC+[$5/+@\Z8VM!MPFMI+;\*]+$(P2@U%"GY0QX">B1"S%"*$R&N108X''
M*TXEOZ/Q)(QL_)F^7A4]P:]7CZ#.CT,D4>1+JO0W4C#8%C]+B%_+R1?:]*6U
MA383,PW&*F8OR=%P\-,TP($,NC5A:X$.3]QR3#5\23LH-^WGD<*EO:DS3MR
M;2.:\"RG<Q?Q(X4-@K2\*D5SE?)%$L($:W?V$?,!4<IX+$$=@UQ\2BN*-T(M
M'P+%3^10 LKRKRC4X?,D=!K2)7C"M1)9)0"HEOAP##^9T\4R%2FBJVAT>J*D
M$/@+IWNQVX3&Q?K221X94G/7"63:(*T:PZ5, _F'-Y#O<@S<-) _J/&S3)EX
MZ5\7=PPDUMD0[V?#Y- GKZ7] IR;1(AB^)DO)Q.MC/ L9O/0V.22/BUK;1PL
M@92X1)&R165/;N1,0#1A+"_V,1Y+=A"&F$(:R'?E3VFV,HB,992P5EUD"=XL
M%&DA:=PX58)N(D)85/X)"^6/K?G]=]LNVS!O*<)_4RPCI_+) /),@TW^YH0'
M,/LXYRE!*'(4,,(KJ?E/T'2,8AR.^ VT%(]7!D&X_E:T.< P<(-<[Q9UN'KT
M3CLH*38&2[*&/ZFZY"L*&+S5ASY]*; &9WPOC;KW^7SH? MD8:C=V7FL/E<9
M-+.YT*<EXEH%VLQZ.M"B;VYU3*E".>@,\L,*:_RP(E0*MB"ND,R9\^9+C2.)
M(8^ K[_F!(D#Q91IC^D><OAI+F2GU7M6MO W!*,K@E#\D8I$ >O R7T<8B6=
M^I5HE$Y\:\-] */K04J:C"1B#ZV2M6%!E#9;#WCAY!LWEK>+Y9QALKG)ZX!=
M^VEK$^8,O:!;:[W-I&G]SVB26&] GCU'R+)(\%["!_S/Z<L7DBKP+K'T((%!
M<]KI="B@-V3AA0O%:.SR#"5^E.9.S02XS2!D0:B!K4@SK12Q$J%T^\\HX.D\
ML]48KJF>8XW0A4.[.G9#)>1A 8QYN3%*69(82KK@ "0 */8:2/RI#S0K<@,4
M@VG@>?E1EJ#PA45R:Y42AD!JZ!SCK!66FAC375T7C%P\HWJW)#?K]T@/BI5D
M;S%)5;8VF.8J#3Q&J2EHSBMPR"234VWI;?D)T5K6VB>0([,"#UY1VP0.N<+4
M+WL[FCN43^-CKDHP/IQ*7R.1GRC'0@_D302-!.8!OP'NWE?I(PU",K>*R>[[
M!:;*3-!M.0W+J^XCK/=9>!RN<*<@ I$@"]L,J":,4'\NV/AMVKC;.@+W 0Z
M\J"D.U5':#YY_:[(PG+'C;\RL!XY5\*Y",T<RH&.G_V:6X5O"A1\R0-!/T?8
MO>+YKV^^_/RB^A=_+*FOUO,W7_YX@0)R<.%T:=YWL?)[;0(?2]ON2^LMJ2_K
M-PK^((:UM!9:7J2Y41JR$*D,%F8 0C74#^U,+/Y(@!4OX(M9AG*),COLRD]
M0)2G_+$&E?$GE'YZ_*C8\APGR&%&2L8A.,:84N@DY884Q1<(#%81!&49*J H
MZF7F<Q@6DX5AE-=JR/F6N(%:@TEOES/CUO#< N"W4[\S)I.]1/1 SA80+--K
MNV/+(_FO?T/S*U$GE!.31[W.BV+$:QI'J/>3BN#8RL3D@&PY/;Q''Y0BY3?P
M(?Q ]O]A!XI^EG"  MW7*;D)>0V/_)IKC)2&SZFKF+VHGQB5/+\];TE35!B1
M!5"H5TFV,CV:R30 ZDA@2F8)T'\2?*,+QUD%G\[-%$&C>J:U/-ER&? L]T!<
MNMY-P1^X>I6H>1M-J7:*MH>8>0&H:5>_707;N:J-G ;524E.V"PB\N0J4)J/
MC\X!P4"&_W&.G.M]P^0Y_&:)N3TLP"8Q,O4)'$N,RJ=I"5H:0/.#H:12N6R
MN4)%#BLNX:.J._SA)=;ME>&'V1&D%!H8JD_DA TQ?A75,)CH*#2!VPU+2A8D
M#("<#BGC"-^$6"K:XF93Z)# "3!4(4><.N"YT@4U"J "X6(KGCQ(H?,"O5@&
MBU45E4;=:DBXYJIO],Q1;<4"G+4$L2A35ML+KO@]N'-9X""EK P=*^F,]K[N
M>LFL\0J[;0K2PP+_=$,0-S>6(Q/^5$,%9ISR\4^QUFZO-J$4/ \Q":4:A']@
M-=MCZ\-B-Q?=PV/[O>[$DC;,5:"$M!3EXPNG0Y;;:E9X@V66 $<%_NRF*KBJ
M>X3(?KKYHQ);13@'GYCY"0HQ3A!-!$".8Z@S5.3Y 9P^1W"*&*&_*+7((W&"
M8J:T'LDS^)?R.*B$5@EMGOP;2R=>R.R/U(V%U%##AS>:=77M-]L"KY=RZ3P-
MF>U1_6WL?"K[L(:]UQ1"/WCETK$GJ7HF2=40!V5WV@RTDVOYTY^>^,#P0_=_
MP1M!;Y&,4!!;\&?@\E]3/WEBP5>XN7H_ECB%MP"\W\,C?-;AFY;U?[4G23S"
M!X'Z^QU(0_!S:8[Y&_*$/W '3^Q\DG?M>32N!I@II-VZE7UOHB8,D? U^"6/
M#\#&^>0?J?)RR>!*(]4P-@9PH1T!2A)48]&'U7,3SG+0/S L#FH80SS2J5!)
M08R_:IE+SM. ZQBY05Z,6_Q*N3DNA\+QXD5^F<ASEX#8P :]'LS (E&U3($/
M+Y]B<"<48JJJI<#C]_%%Z,#&4< +;-DRVQ68AP;__AL#X;N_0$](E2=A0J"\
M9;95D$&I=(C*LK0;7P@_.#IXS]Z<BDOP:3H]!3DPO$[Q>Y<*569P_ CW.A63
M%';A9;&J+0)["/LG8^0 [ SU.?BLEV3"T<9"P<%W[(LD*\7?94(%Y$,WE:RP
M!G3Y9HZ[8#E/$<HO]5>BXR3*O,3]PS8N\8O)C36/ DK#KL*'X$@[OL%L[5K=
M\+6T,/58@S3JQ ;Z (!1/[52B(*\0*R:A[4(PC7B^QOLL)VW6WMD#4?^VJ\R
M ?*6:@\!BH4J,36ZJQMZDU#XF,KF),>L)Y!L[1H@%4SJ]9(; A#YU278=@3B
MPEU)3W%EJ.=+<70I0L&<QV^08A5^A4ZV[',N;W;0]; \#*)V@HO_C.("A-XG
M[%9@6[]D<<0Y5G?IAIA.^X\XR;#''G3DVM7,0J7,J T^=6F?@AQ*, ?)#B*@
M."^A_ .SDS)DEH!+&018[+H$=0<:*Q7R@@X5340RMEA%&V_R1"J6DU9>&KWK
MSDI4LG%+^$LD(+I?=4W9F=RW#]WREM1&D(-RKEG=E@POD(*543WLF7^C:R&^
MBIQ4,,H-;$!>5*;:\<:7:3X^&:M\ \8RLH33^12?)F,)B(*BQ3E\)U$<4Z-U
M4N5S,;T4\IY.82VN(87MGE^K/@;<AQ@N00&9R$H@V0P^[]W/"/7##11$X2<5
MJ,EKZ_BWN3D$#O7-$AF(P_].^YFB?FW]O)*A3$0H>E4Y,%\[5\]<T[5M%LMX
M:QN!R-F;3?G!]9UR0(DO@-_^;.7Q\QO(LK)N#?A<JD]Q[5:_?!>XW>KF'^B5
M5QOO 6^X#\<-"M;>K%*S,WS3J/)-_")FBI6W.>-C*,DX]A!6WX2P&F+ [BF$
M-?K?7.0406Q@UR1;EJ)7M_YN0^!JU-(J4+2T'TJ#+]ER&=#?Z'F_<U.W<7$6
MGG1QM_$6&O_=9;[%IOX_1+'5\RW6JR(W-ANB/:WM8+796!HM'ZV]^*<X L/@
M-W<"G[X/O59%J_'JOFHG!87W0#'?T4(JY<NK6.A6^-1O#57%4_L.9QR"J_;
M0O5IIT9KL:KFZ/=?;3C:Z7+]QUGMWB,3,"W<R)D)G]Q+L1-!EH^EZ*XQQATH
MZ?"&1F[B<06ED^_^(A'>!;P8_<<?Q?>Y/_'QQ)_I9WQ?9RJ6@EC=^BPN_22E
M.[*?LDG@>WK]V*\^UBZ%=22F>]OPBL>E_4>AT-[0$"839F=/A&EH;HWFQH;F
M)LDV<BL)LY]EX>47++RDV9T;;KS)V,O84-TJ[/MM0W6<E+X3Y=4HU*T5%>1H
M78E(1X9(UXC4,43*+64>0*1?L'$;UA:(./G!^H66,T2Z0R+M&"+U9@^1HIC*
M_)52F88L=T>674.6892*K9;E[_BCFA%&0V0K1-;;0<35E,_7SST.3.[QT7./
M^XB+RNQC'A246<;\[U(V\;XQP<9E$P_=2@#HD.NO=)LX;[C)5_^Q.Y%J48M_
MK*?A'FWSCPX](-2/2S^D@O)PI9N"9M-5T]GY@"F_CYY-?76C&J\+4C,*Y,;2
MC;G2+>)*DN,./K*9Q8M-+;14H9&\[ZC:B)7>E90,;Z\4ON!HB,V-OG-_D=W/
MU9)#M-.I#X2\7*R5S*O[S;+O^D8;7G&=VB?9:M9SL#D#52,%WZEFDY'L7)/W
M,=IZZ3#O<D0U\US?2:1KRWOR6YY7M^:MF>O'6*_E4W?,HM!,5G,E]DICU+R<
M3L(F;T)2$:74<%; (Z]8PUY;*V6?^-%N\>"'=#<EPKNA<@P.M74J*O2 =,5Z
MSQH@%W\95-:+GA6GTWT7G=WMJA[4/&%']760V))J6A&(IJX_8IDE&INJ'TVI
MZ/F%]?S3VS<??WY1ZG+S0Z)JB(/BU@[V!BA(L^C:LD&&V+*3-9;$<R='M]3U
M#T[V7KWC+;_C C^XC-EIBMV%N([B;^JB]>1&[9!N'I,%^&6)K$<-3#[&EV[H
M_]?-6P7BC[_&PIU>NS?\5))0[PMLH6/-U/(O['R4"Q_)DDZ;F,3<FF!,YW&P
MQC;F(ED7ISS@[4)N,"*% ;XQ%I4]"\Z'BD&M_TRM)%"<* 5_[DK\*[5)V]BE
M7(IJI&5?ML$LR_L?\)Y9Z%[2,RWK(Q<CZ[_W*>H@*13I,RK;5FO-/*O[KRJ&
M16X@$92H^_UX*8Y%C-ZL #V!N/ 5<O%$(H4;,\:BZ-17](53C@8](;6?NM"@
M9-@&T5=J%*A=R\O;LVO#S]!1C+- WH"$G69!64!\*9['7_RB*L\U>:&6I#.=
M-6__FTP=O.<DIAJ)U-=1!$'K*[68*+Z5Y)&W_EX&;BC;QM)P&48HOHINX4SH
MCB;>3(E"0C#>]8SIU=RF['HN9!>@6WAN%K,&R4TP1+?ZB9VO(3N8@N4(X@QO
M.L2P$>; _/!RQ(#<K6RYXHDIW1<G:Q/O5C"7XY7-C:]5<*KN>W'KEFP=8*M;
M0+BRO)@RCR'\:2LMZPM>J-!^G!]'?'=Y6(+-[8)2O'=*78)L2] T6@\Y^Q)0
MJ&Z*Z%,GIMJ=^5O[_6N@)/.GV$"YETBEP<A79JBUOW;/5UY@$0DW;P+#H9">
M>!<0B R,;VQ56GZ%NK JK757M[RK-Z_=3"$H:TRA6N^Y.JE.<M6H.1%G+5/
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
M9(H1*&^9R<VM2K<#>P)0>_UR7!RI?HR#/G:S\ZW[A,O-<RKU-^^/"OJ;'ZA
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
M%9*-1X!/A2L>B7HM\D%_!=0G&$1(9P_?7'H>@!A@9O%81H1/R*.43Z)?E:H
M(U(^<3[$7VX^0>4+,J*(@+YQ3O0).=&ULL*=@;W.F#'Y[Q*H@WFB-OTG8P$B
M]Q<;2%U5/ED.S-0-C#7+S+!UV)571[X&TW=09UB@"W--IT"?"851H&NNFO%D
MJ-"K\><V_]]ORJK#(_XH5(2&J*6)&-I7H.HZ+'5I*L82-EO\Y[>K6-MJ:ELR
M\E1^C[C1(E("00/G:M=5UF@1:;&=%567OY/>D7(==0>1)"-BM#'>%0[.MOV%
M@46,_W;5%J]#*PU_+4X#_[QY'=ID9'9AA=O6^V7OOBRU3VFXRYR:K88&>MS!
M U6WW0LEL4.N'!6 #K#K_.VJ4VADR=AXFDS/C=;0[?^R_FPK,ZTU!L2;CWBC
MPN67.\J#^:$3VMO@%T!2V.PZV/ -W,L" _^)%:Y1-F_:(1A1DPSFR\?6CV^A
M9&\(E4/Y^/'NL,Q&:B9R?.Z040&.P1N(7JK32ZQE*!^#R371R?'IY)\@#4_<
M^>Z$0A?+42^6W*WR=Z'TPX-__%,EXCDUXJ%;YKC$@X9 Y1OS'BT3AOEHS?'X
MB&).B&+HNFE&+OM]/OX[$<H1">5WYL$SGNE..14*^>ZZ-OI0B%).A5+H+FF$
M4E3E]^M_DIYR3!+A7N\5 BF(0"8GK&1.V*UBM@X=*A8%TH>ADD>(K/P&<[&F
MP(V=X-8TX2PQ/.$+7+"FQ?SB>,E1$_&2A>%_FR,HM5P$Y;?EG,=^N%,EM7(E
M6;H2K9TB*W$&20 EG\C><,L$[_*M?LZ##!-<>H-^+X^RQG8!@W9,:V&+F#HS
MO8),A&D#+$..R%(,/]J8*!('4@5A'LH2WPS#"Z/8L"CH[^?,M>WGEOO3@:>E
M YE4Q? 5V_)Q% SULYR0MLW?UH8!BR],?E.,L?O(KI5;VQ:E6<QHU&@V^*O
M,QQ?I#'YRLQX9,J8,2>)B^2!6!D07#=T^OG+XJB,ZBQYTWSAL9D(:A6Y<8)#
ME?*IOC1\*C-_)#<W"KVY= :%.P/"9\APS()]BKF3([HWXEO(#::NQS"*5L2#
MFL^"/=@ADYG\9^D'(@U.*=I]#.(,Z_4)OA'D<_ R;#/%+-=-DQ<T7_\;?V;
M3S"&WO.C2%!>^SQX/@R7TC0IV-3::21\"B;!GO@9BS>.F>@G!BR34WNZ$%3%
MS))DP+1ZMC >6&OL,>./EC$-4*,R[)_&LY_7L#+3CQ0X;2<%+E;'JJ<@1FMN
M* DQW$21CY@Z^SP6"A:Y5PYIN.J]$C</OFNX2='YI+$F_FX@5_.8R=#KDRZ/
M.HL*:99-I%BO$L_Q-ND,9<P?/KN?OO,#:V[P;."T)#F01I),F4-8-%>2)"-5
M%Z2RA2'RH/#F6:/L(CJPB@:(7B(IS4@V=9%8%!Z8PSR>* >?LT60R(F9N$H<
MZ%9D0BJ__KC^=JW\?GO[Y4647>=C,A.(!S@X\I2Y\0=+CHY+C7 7+><+H=8&
M,R-0#-Y=E \%"W(]GB YC]5R^#X+56+;,L:6;056^"B/V9Q9):6HX7WQ).1B
MD5)?N#%<Q5XSI,<>F;,,!Q'IA?!B(O*SDA_Q'638NP=T>3-8P@ P@Z6-R8+N
MTL9YP=(\9>JY<_@9R-[)5I"N?AY\-.Q D.^M6Z:HKZ3Y-Z>HKVM-13R6:^OK
MMB=6TLWH&RYP!:RS_,A"/5P-OX,\0J2/<@7!9Z# <P:F"F8\QTH*@J,!X]DJ
M75>9PT<S'_/?>0YVCN,MEIXY,WR6S:"=&Y:#F=DBP9C/&]C[V'#^4"; S'PK
MB*V/8:ZLRA\L-K5D7O#D9X7/"X0SAC97-@DO$AAMB0FC:+$LRN@M>:KC!F*M
MR'T]BSDFSYI_5H#-(R^&&\]?FO%=1NST3-CIIYA4OL64(IAIEH>NN/X:VX-/
M1<1-_!,G5+@U,>^<,7O2"MQ6R &?@0^-@_07/6:B.6F"? B$,Y"W_H?U,5P_
MN%8^)5+FA(&6-A>5$M"JN1 %)9 ;<L,'=ZU&,G)^C)!W(IM+\\Y0NF3 [Y=<
M<.7,1A0R"$VNG%\S ]X>&S:(ERPLZ(%L^%IYFQ_'2V:#*_)7E_]SQIR,#PI9
M)+[FW%F87M&R)(1H+@?SBAMH9>7?2PW')6_QW&OE[_F1<O/B0G'!+JNA79F)
M&KGAA_%6@O8QMY;S4*@W38_%FXS-E;@LG9I'5$EEHBP!):(2!N.2?[0TK)*,
M]5!F*$]_X]P]/:050X=K)M&-B]9H5>'E-*)2R_QV2-:XNN^9>6U^+G<KKD"I
M\%;'$<*2#7@_ S-L12_1!,] E4 2498+UTD?6JI<0D(/'$D)'ZQ;8%@%/8(4
M!GUP/0X"PU^5? Q<A6]ZUAB_(/R8;Q/%J&0^4\OSPTL]K"6Q80%X2ZCB!QG7
M[,3EVBF^]_[VVQOE]MN/\L=T^J+,25F!JVXX$C#UQ/3UP?'A=A'ZHCB@[F_*
M'8@T("U]Y(((,OFL8&,:MKD4:BF'.,@O)J_K(WZ&\@LG)\XZHM-'X/'"+X#W
M*5QW6+PEVE)@9^.0W%ONM#5A4P-4S)A0,F.[$9 Y)\2-"L&*KQ^6UH0SJIDQ
M*9>]0M3 (CS<!@N>;G*JXK+C=I48Y;B"JDAJQY[C.<IQWSUCPD OOD=N&EKQ
M_*_,9,!(@&,6B'2#MC0B731?E$#""8M+SK;=GYR"D("Q!V(P7=JQ#D)"'TZH
M</.\M)U-W#Z@*[N6&=O=PIO)V;3)U\IMF>25*16G)/*;Q>M.%1]K4EAJFPG
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
M'HFUK!'+5OQHX62+YUK7Q K%M=VF<L!M2[.AN&(9MVWPG:P@O UU+1'>HO-
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
MB8#B"B-(?07G!.GV,SODR5M0,'1OH:"V =N+"G8DI0T%CB.MZ,'6'U3(QQ2
M_25ZK)8O72;50LO(,T&]@[LN'9L\1Z!9!GX \FL>V(9'-9GHF4 ]11Y!-50N
M:+!D,3::0P %'NI&![%A1@;'J^,24W4Y!&2LQ HWEGK$460MX5)P86_[!(X.
MK%V(QG)#M$T"E^K'H%J;>ZO":CA5OGN>_OJE5=$YG/-L4<>JBBZ\*>4Y45B\
M*C2*C:_VMP@0[Q$/7+\*)I*]N 1LJP",/FGJ:+(#!;( ;'_D^&C7CZNM$ MB
MEUN53;2[O-09K+C81UML/RS^6O]?Z JLL19,0NT4H18J#F)!3?3<PG7W<UF%
MVX J7 %HE5I=BBH,A4E\B(@/3>)#XB,#'SV)#XD/*5\D/J1\D?@X:?E2N@6X
M@0[Y9Q5_RG*D#-L="'*=U\I<\V^.3GJ5<^&=6=[->2(XJ.@6QVO&)0]&'HP\
M&+$>0QZ,H(\A#T;0QSB+@Q$^.E6G5GN-.7:8KK29;"?5VD8\4=.O+T]$M.O+
M$Q'M^O)$1+N^/!'1KG\J)R)=L#N5U73$9D+7\GE7^<59-H;:&;':V1=JLQ%,
MY7VA=H]BV-T62N.,@(V2Z?\99\^_?XY?_AF5,-.PV=4OTVO'GWVD)3/T _4S
MS;1,7B)1WW^+A<_$GCVG?Y_L ! GZ+,+9;>HHM#]3)%[BXB]\J_#P4'TNH6Z
MVH'YVAN-A>A1I<KQS&=(F1ES)UY"F5H3*/,_Q'4,W5ML$F5;TJ.DQYKH,6..
MQ4OHL2?I4=*CI,?#Z9$S(".:=GK>FNMPW)H,MP>52LJ4E%D)9?8X$SC*H$RI
MN4IZE/18@!XYDSW*H$>IN59"CS+GXB W-AUU4)7+FMM.7B@>5V# 0>U,KM"
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
M)!N@$9,L>JW^I(XD&'%@=1X +A+1%ZMO?E.F38B#M_- =K%0M$C(;ERW3W&
M=QX0+Q:@;M+4!C'4$!G7D.,9MK?GC)O[3K+2!40>SZ"V^C4-XI1-Y<^45+)R
M#H1H*E\X\J+5DX0@*>E,*2DK3"\$)37.8)/C&<Z6F+*R QHQGD%M#;K#Q@@@
MT4-(<CR#[ 4L1B_@43<CB:-"4[$_;O4F@A3!UH[.NN\OJ2.FCHRD#Z&L0U64
M'/7:P5OW_<^,>#(2!$?=C(0-H3+\:O*MR/$,YTLW6623D292A^T'NEE_W!S=
M;,]XAF1C^JPV^26L.USRUB" =!MY;92R7YLS2*#N'1)B4;1MYB/2EH<4I?@+
M D>RHV6&HKM$6;E 6RZL%3[UB;LT;6+ J7GP_\ '<*'PBIGG^-T9_.S5)_)(
M+"6C>Z=*FW;^WE%XZ]G;W+"E[*R7:\'3I+-=%=TVE!D_#KW[ 0,/J!;> .[C
MLH>$W[G\Q\5U>R8<I^XF-V__+FCA+AQM#,B(.P CB0M&.-5BE2V+OFIK^:%[
M QL+9X((R=C3N>F&C<CAL'07#A3/.^L0NEJWQ7Z E[YVEBO=?E9TPUGA4>-[
MMU?W[Y6K^Q_9EU&']"KM+-CWPCN],R_C'!QEG83C*7 0<*7>6^7:)08 -.J"
M;%YVE.^)Y8%8G#'%DJZ0_%J1&?XQ8S^SX&<4ET2?+2)0/L-*%!-N M3NSQW+
M=$*8XQ56KC/5IZ8%7VL[\[9!YGI@^<J2^ O'V+BW$R8%T1_2C4*5 +89_WX(
M3 ,>C"@+W<C:,-MA6P%"'=Z!;3#AZC,?F0JN$6Y"W=;T$>?Q7GE8GT"WZMRH
M)B^97.,4&L;KPE/A^DX5'?8X<%UDL( 3D*OMZ$_3"_E[L')L>J81@!@Z)V\]
M/#4&*3P@O%9X^O1/]MHC%9_;CGD_R4V"KPRX1P>:%OE%41W-]#',QVBBS]T?
M7WY\OMC2UC?5]52#[N0IIN"P\7AOHR%"6;0R[#%:82M[#4N+7J_5KA6(R?;4
M)?K/MC[W45?2K2?]V=O4G5++CU0S[2#5+%:T-G;ISYMOW,[E#*R)&Z^?65<6
M+EH'?_&=V47)Y'-Q2><P(1ROT3ZQ,=5,OV3[1Y7KZ,B3QY]^I/=_XY_[MJ:?
MGO+$TC.+[LZ1MP5W80M+R9=\1K:/,@]D7T<?@K;%QY.MY>]<!RR'3_H4+O31
MGG7B!O*5K^0+52YA,==)D;=6#^YCUGG4-6YSSWB1ZW-*4TUU*Q!,QG[/UD&5
MC8E46I>R;[:-4]VBZA%PI06QC+;OM-?"=,/^FE)ERT<71D"#H.'W0$)["^?)
M5DPFGT&9LYPGJLI1CJ>#91-/YIDYGM]1KE*7P(MG/<!2?U;HF@US/H?GF+O.
MDK<4ND@RTP,0]K@0T_,"XL;:0.)1<MUMH3^RZU NBC2Q<LD*/G6F<"14H?&
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
M)ZI?RA>'3E=U$*;4'4;'P]Z:MF[/3-U28B>65]<BUR>5IIL*MZFVZ9CTB-B
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
MVQZ9M<U?[85IP+7>4!8R&(Q&F!/R[C5^\Y+-YNXHMXZKD.7*<IX)+CRZNK\
M58K>8DJ(K3RP!#WX8^8LXW'?5.5R=83_L^( +Z!#OQ^)Y^-"5]13V%*>%N9L
MH9B>\D!L8!<6?%?/M=SQQ>7<"=QPP6T%5IKG9Q/XF?E(HI_A<\9KF1+8?IMN
MHTT7FS'J:VZZGA^-&+?ABJZ'PY1@K_&'=$<40_<)G'8P_1>9^0H &S^*MA/@
MA-FV;SW*N$T[P/L",AYQ1'KX763%NOW,SL$P7;B,XR;.8;UGG*TW;64>6%:)
MS]+9 _["H]:444=;I0:N4<0G <\X@KA$Z#N^;L&>^JYI>^9,>=2M@. 61F=%
MHEP-Q: Y'71O*9DI!"Z7.:5^VVQI*6RZ7.9D^TETIID79VWRX(M C+JG_'6G
MFC$8C(M$'HZD::S##=]QZS]&._]WW/A8S1CF5#/:@XO+06>[7:H"@++@12M[
M7PZNN6S2OG0[VVF"T;Y0<&5N39%&W\W8FB$6IW:VDTC6F'&)MP*>#1S5 B:.
M;$)_>'#) _#2+5;ADA5\'0-NE#/,@F5@Z?A38/SS.7&)/4-QZS^AQ,5OS'73
M16[UD_AK;H,?@.Y%7.L9>0P(A:6#(A&GE^)1X>>,(\4,25FA8NY)YLYG[BAZ
M'7[,ZB".';)8/("G:*RZSBPD./NE;MKLP  6@*, A E5WI EOTM9#?DX,(>
MIOL):'JP#_E;M/3K]<J_P\*UBQ07&*6("G6S-R &4?R!==<9;QE&3#!&B-U-
M-7LE5F[#^(AN]Q)XL)HEG)A^N*%H1![/\P'I;A?$+I"J:9!.,D Z6#/ZTD$Z
MX?03/0"DY6Q9&J1J(92.,C2%C@(/@48@,VVH5P3DF>4\X?45]+/@]ZD2S6Z(
M/SJ:4-(TKE3:%D+P..37S J,T(>CO#/,1V5FZ1X\]-T?7WY\OMAT0'6[&\[!
MU)3LI#Q*";:-9T$"I3?,(F'LQ8,Z/EO9:UA:]'KMP%D!!;2G+M%_MO6YCUX7
MW7K2G[U-+TQJ^9&31SO(R1.[;#9VZ<^;;]SQX4SL)FZ\?F9=6;B(^K^ [G)1
MLB( )AN%'RA,R!%0Z7KW6M_>10KFU.DGX1 A)?%6\N,=ZLL^R!ZHM%Q<5D@B
MR3'H=ZX#I/Q)G\*5/MJS3CSHO/JE?'%\N"RL!@Z3II3JZ(VZ-6W=GIG 4.Y]
M>&/)3OF(B]S2<\,U9FJZ:?C4MR+!M&ZTE>:.!=*!NDHHM7K!$JX$U_62(D+1
MIZ"6AR9.:8KZ&\'V0RSW/%N4V.[YEZNCLP4Q HM\G?-- 5:.=17X"P=!:?Q
MLSM1G75GZ;;W_CD5_OJ&>MEW6,A["[X7:I_JJ*_VM,&%0D#E6N&1NF E7#)A
MQ* ?"M*Y:5/!%<O#,!+ELA/'T]F(3M'-21UMM@YRP*&E#J&+2; *5F)X*WT&
M9$<C?/AW&$'#OR_?A3$Q@:M;HKW28*]VQ9[+OI?*N17L!D8H_N=BS%6<4AIE
MG?4:T3/TZ$.4+5-W2?PHB3AA9+>4OQ,/Y3[:8Q]^H=\-_@!VA6_'<O]H1\GM
MC)5QOG5 := ,**G#.J"4,(4%0TN<W[>6 G\2'7]_T0@VNGG\_L*T^:5?<!Q4
M0J)A%LE-A0K.4'.OD7C4AA#/;Z%-1///D@SRJ#O8!/;7L!.,?)A*Z,148B^F
MDG!C*I_,.3G[H]4:?K1I9J>\^NOO9W^D#:/6D-]N:1%G?(*2*"O0"9N@ -:)
MQF/=2N.'>"I\U'.^??V[+V_UT@,\Q<>2.RAO)=IA%7<?U5<QFM >+B[_.NJ,
MANC)_6M/[?1[Q]_ C%*KP8B7Z\N))OVSY*#1U2_3:V^__=4FGPFK-"Q>Y95K
M4=OW_N0\$9>],I>FGRSM^N69;VS3BD)9NTNWJC;W<IYQ1M%^C0<K<FN,06LR
MW,Y0K)M61Y)6V;U_K%8OIM4CGF'-3J!M-!V0-U ]>LK- 65ATRO;B(*FWQU\
MZ_"4[U0V[0@SKW=FTZJ=WF SG;8&G-6 Z(J<8CGYXT1(.=?49CB];B='.^73
MQ+50^EM60GTS]+>"8IYI<%_GB3!$"/RF:77U(UHH3CU1A43T/DZ]I984Q/4V
MGK.XM]ID]MWP;)^+2^JEZ5-_S7#8&8]JM@$G^3K;5T1$WY\<Z:\I_XQ[M7-'
MWL&*[*\9C5O]\?Z6RE4?9+X&$V= K-)ATW2'30(]C7#83 89#IM^9ZQ*ATW]
M@J[^P$0I3%$0A\U@U!GL[^9]FK@62X'+:-K:# 5.%(?-L-7MU:/6U0]IL5AU
M1N<9@5EUHSPVP+]S]$D6UV,C2H(-^FG&U&,S&7:P KY>(S#?G.FJB&CA$IEC
M4_HIC[OUQVCX1RNRUT;MM@:3>C36K*/,-_;V+ A6^FT:[[=)XJ<)GIMQ5\OT
MW*P'3$K/37WB3H 013F,41#?S:C?Z0Y$X*'GQ*VYR.X+BNSF>6\FK1[6-YPE
MIL7BUAFS*H7FUHURWXS43G>[86QSW#>B)-R@TT:E[AM5ZW74FOTWXRZGY7]]
MZORM$[C2?5/^(=<?L>&>K-#>FUZ_U9^(5B4U[HXEO4KOS8EX;Y+P:8;S)FOJ
MP+C3EW52]0L[M?Y813EL41#?C=H=)O+)SLS0%4J-4^NO*WFI&B>([T;36I-1
M_=:LY-9C51,3TR?ENU&[H)O4S\*YLY;EJ.43F^4@Q**^1S,7XV&+'M)GFY*M
MLF(JE **/E O)08/QQJ[9.8\V$B].)"73G9,#JGQXM$T>,$9$+]+%D#_./?1
MM'&F;T>YHI\5G./FYA@_EL4OJ4[X_7D5<KIP>'&""?'8W"9[BW_&QAOS>? 7
MQWYD)A;>TJ,C.I.?7SN>_\7Q_T'@-M&>%II2UN]L)\C&\TQQAB8=Y1O8B:.;
M)=8!?W@^G*NEAP,&@G#=Z1DTB='6)#&-8$J2D*!CL?5XUIX2S=IC$ZGIL1]N
M:.<^LHH.B8U<O77<\"W\7GKR'M;O[;2!M<Z0/WF/351EIY4FS&@,4'@N>PF@
MM+'&+W8O1 -J;^%Y7C"(3^ULI\7F&V4\*6V4L3A[L9TFD'M\\6;!3?'QQ8W8
M#IS$*.!<\M0<Y?I'0E:MCK#!&  "X'W(SR@KKW:4W:Z1S;"P:'?V+J<.A2T;
M7QH#(MI1RLIU'DT#5A;1@(X4B-+$7>]\*.'=[?>0_CV<<;KQ/KV*IP!U,W41
M'M#WK7!,4705*JPL?>6!<J"C#?/,- -<!LHPG/G 5(*$5O% ;% 6+/BNKKQ#
M,SQZ4!2?;?-7>V$:L!]O&"<;=KL7EW,P2]^]QN]>MO$I\OQ,A9\!X44_0\X0
MKV5*X$SH1 J'Z;89VSTW79S#Q C?ABNZGNX^1S/+'X 7^@KJQ "!8/HOH/9H
M4BP)]1+ &?*.MQYER*8=X'T]IJQ$WT7^JMO/;""R88*FY3NNUTIO]'KCV):#
M7CX/+*O$9Y"SU M-==PB*A1/CZ;_+*9<>I-KCX]YU@<Y%$)OW$M="MW]+@4Z
MAW"/2Z&&;2E[(N261K=F_E1"7]G&QCL_4$A<A:"FDQSYLR"'F[,@E<.'0:+K
M)S4: ]]('N(601?E#(</@@P!U)29D,?VL-=U_6/ZZB^R>&VT'.3(1WOF#=6T
MHJVM??I-=9,3,PXX"CBTPS,^\CS%ALW&D?Q$\A/)3P[A)V'@4G(3@:A=<A/)
M39K)3?Z@CIH;W9<,10B"EZC$):Q]!76@4AYS1<>,X3N%QN\D\Y&H7.4>5RL$
M>*D74V&Y']7 ESL65X)$9)#<$5>A#G)A$%(ZU]O 1SU_YGRJ^IO,#8>_[49F
M&73B.ZN03,(W(B@P8MX.ROO*_^IV@+%;&A_$@!X'H8EAQ\<6;S7<JK\Q0YG&
MC8ZK?NU,M.I/NIQ15.J(F]&X$50[<@GPAW\'IO_\T89[!C11]RMFU7Y?Z':8
MG16G1+ZD-+C7Z[?&O?WY]$? ">^@A 'ID9_SK\T@#E[]84'B.$;)8'X2V2A$
MH8X8],/$.8W%J&?8ZVC[2Z]JH)T&F%MUB>7TUDU6L6,._1]2&-?+;S@-/3E9
MSV++90HF+\J:+ERHW!H/]K>9DV+Y7"B#,TWLY911BU!.T\>1)+.J#O*4B8HK
MFNNSGL42S=^V4M6EF*Z$&;W*XD:]$Y#3Z>JF8FQF/&RI.?JB5\1F?A< J:=-
M%%DTP2GF;*B$3E/&\6SG'".>Q170TG9F OK6<>?$K-!Z/B@R=XS[YPV)"<:]
M<J\[4_+SRK2;)OECR+Y,^/?4UF D" O;0115: 1UTZ-PA):M)N0K[&^"FA"2
M4>"2S49/I>D(X\YP)#2!2<O^!;'PC6I9&0VOGSMQNFLW0Z:7$PW7>JV))HP]
M+PQ(SY<>.,-4FR2BCQT 'TTZ8R&C5-*(EP'P)O(;S@A:3A<TL45Q*0%P==#J
MCZ0DEI014H;6/09EG'  O#OL])HLFL_13)8!<(&8498;7.,EJC5-3I<1 )]H
MK<%$$!>=#(#7*Z%Y*6K-E-"5!,!'HX[69 $M;6<9 #^_ +C&2WUKFN0O+P ^
MUK9G&H@4GY,!<.'4!%Z>7#/5A.,'P,>CSF![HH)(!"8M^Q(#X!-IV=?-G0:<
M@%\C9'HY 7"UWYJ,>F)P'(% >K[T,"R-'DXR #Z>=,0LTY1&O R -Y'?C'*-
M1!-;%)=3 3YNJ3GF^DI)?"Z4,3X&99QP %Q5.Z.AB/0CS609 &\",\IT@W,2
MU1HGI\L(@*M=M341I].$C(#7**)[G!RUAHKH2B+@XWYGU!6%<J3QW)P(N QV
M5Q/L[G'2W!HGY4L*=JO]%AW<*P*WJC'8+87_+EKAI+\U5/@?/ZX]Z7>T>CHG
M\"A'&NS'C6MKW3-0#'H@8 TGP$&YS=(,=B\\B]OUMN."S5 'RHF3=T<M=5*/
M=WZ3@_5R<+"3(;KF]E+O]4NCF).,I$_&G7$]A21%"(JI!*_#&>*OZ8#T<-S[
MZ]2\=\%FT2]B)88S1VA!V AWJA.%FLU?NO0_(#6VE)[XH^1T=R9<WBBP R3:
M1=A 10]\)_SG[87R^BC;LK4AV\\/9T-^S:S (-%L>\-\C";;W_WQY<?GBTVH
M=;L;?"0U=2D)I!0B-QX"=31Z0R5C@M%P3$<7A2M[#4N+7J_/;04TUYZZ1/_9
MUN<^;K5N/>G/WN;6IY8?G:QVT,G&Y[2Q2W_>?...HZ)[GKSQ^IEU9>$BZ_H+
M,+2+DC75B\OO2'Z*,U>ND<$"\WKW6M_>14J9J=-/PB%"2N*MY,<[].M]6-TE
M-4)5;'/W+B[74"V996C:)L](CM6Z<QV@ST_Z%*[TT9YUXNE9U2_EB^/#96$U
M<)C48Z6C;7%KVKH],W5+N??AC24[Y7H6N68J:;A4N$W93UV"6K,#H.$[H9!1
M0BESY2'Q93 VGD4(C*ZEH))!E"?=4_ZZ4W<:#+N<ME3%=:=-G>G#<F4YSX3<
M$_?1G!&^"A6K/VP(X7?'UZWDY]>.YP-R_T'@-C/GP88-73L:ASD5H?;@XE)3
M.]M>1@6.U<)-@6T.;#>^ ^S*>@D*^86OP8PC%J49H"&X2)NM&]Y-&^HMY6EA
MSA:*Z=$?SL)?3/'W\?4=4/(477D*=;ZVSI0^944]J?344^I.>2ZPBLZ(N81O
M'3=\"[^G7J3 -TZ=7MLCLS=&X#X3W873ZO2W%#[\Q.L<C3%MZ7X<OE0/;V"2
MA+ATM^P94>B!5LRE=RA^0O#)K;U1?@#B/.75W?T/[W<%,(VD"(0*P ;N"==P
MEY2UZHH/=R.^8E.G!;Z%/P$2-OV%HMO/3Y2/3HG_1(BMO,.AH=$#(V#;YJ_V
MPC1@,6\B5$\N+H$)XQ<OD9H11' A0\E@P[QQ8#N(.O&DE%:]+49\%ZRMUY5K
M3=_<L44 =_DZ_TZ?EGEHKO45JG=?Y^\)6&D?=-<& K<-C%##WS]6L/A/YM+T
M8V[;UG*R6_7B4AUL!Z#C[8!=]A>ZO['W,[8>_'2**U((71+=O$>V*/2!@F13
MB&VPT\MQ("JLQ@<EF82'TD8V@DN)$1/R7(, 0T.#58'3P;L@BP,( .(Q-_^M
ME_J1R;XS!_7)HIR)/17A71F? #_2\2A1"I@K$_9A?6$\?-,.X&$)Y<>HA57(
MZ+:,7'7,-7*%H/7ON.N.93E/>%340:!XP1*N!-=-GU'H-P?T/9K^,V*7'@.5
M(X@AV.^#=*N6PB;@[OX-JS5#4Y.2?.87F4WZ1LA-SN?>H+]_J7-CL-^YP1:5
M[=PH:X?B_[4GQ;?K8-5MR]TX6Q C0.8<ZUX)SD\5-"KAKD)L4T/].]SDO060
M#]4L==17>YCX3X"!K_#LW(!$KH-WC')"WP.P,7J)V(40NNE<=K;4NY1VW=$G
M3QUBMMOF@.-)[7 7(_#*C%@XL'L&)$_=G_AWZ%[$OR_?A0Y#H5.+*IYQ7M'U
MCSDW_2*+UT;+H3/)C_7,H'A']YD>\3:BC:<78NY\%!!I5S-WOG&IBI*?2'XB
M^4E^?A(&5B4W$8C:)3>1W*29W(3F9RB8H"$9B@@$+U&YX0FO Y;RG"LZ9TP*
M4VA6F.0^$I6'U"4) %X6HF/!Y&K@>U K20D2$4 "DDRA(4YA$"*YGKR^O'YC
MKB]\=5D4/1N.?ZNUTNQN.V3N*_^KVX'N/BOG.T&T)U292Y_70'54,$?H@!(7
M=H6KP%\XF&!A_+!!@: *'*M?N;-TV_OPB[@STR-WKCDCW[ DAJ48?9V'G]!$
M(U;O4JR*11NT1EUAYJ$(@]&Z2L $HPU>,]6BM'&216"#<;.'ELF.,.?>3E4P
MCL-IIZJ.U\,6^*.,2Q7,HC14U;JM;E?(?I"2-&HA#4X_U3)(XX0[JG8'G5&3
MI?,Y-FB1'54;PHYXD[^;)ZGSM53]#W$=0_<6FRQ&\> D_N>B?7'9%I'-2,JH
M@S(&O,G?3174)?55W45 8M*-Z,9SVK4\6^ I'W_;JB/X>ND]F[AY@[3+%GNT
MO)2^,]U/T].#:3JQFFN*G6+J];#5U^KP'(N#P_- /&],]G'$6=6X/S&GL+0Q
M94_P7*T__85I%VD*7KF>G7_A60R,-P&[>99J[K;@TEB5QFI^8Y4WW;JIQFH9
M?<"EI7HB0GY'_M7F"&N9@54["^)E8%4@E 7)P!IH+;4OY%0A20ZUD ,OZ:I1
M8OC825>C86=0SS .&=:525<GR'%X25>3M0TP:8:!7$K2E=KJ]X3D+9(T:B$-
M7M)5":1QRDE7_4Y-@V:DK2R3KDZ<'?&2KIHGJ5^6="6F)TX21!T$,>3E6C55
M/LM<*VDS[Y/*O,0O*92/SX.RIDX/>3EA94OE1N2$K4/,0[4U5H6I7CJS0=."
MR6A> MEQ9/2)))"-QQTQ*_^D"2USRLXGIRQ3YO.2RIIGB>=.*MOC-F_UQ"FT
ME,*^3F'/RR=KJD%>1C[9_A+EGI#M=Z1=_M+,LLD)2OV&,2->9ED%DEF0S+))
MJS?NB<A;)#740@V\Q+)&R6/9S4O:W3*QK$$<AY-8MG^^MG!&<AF)9>JD-1D(
MZ=.3I%$+:7 2R\H@C1-.+%/'G:&0%"1-99E8U@1VE.G/YF26-5!4Y\LLVU->
MTE)58<QFZ<RN44B/.-EEC172)66720OZ'&2T3#,3CQEQLLQ*E]"B9)DU*X=5
M$D0M!,')*SN2=&Y,7EFSZ$8:SC*=;$<ZV<X)BH)QJ-SKSC*^1YQDL@8:WZ4E
MDVFC>OJA\$95GH%1?O*TET5ZG'RUQIKXQ\]7J\^^STN;TN@O,8=-ZYZ!JM$#
MMF$XP=0B#>-WNQ>>Q? X.7%5*!B"Y,35&(??Y&"]'!SL9&CN!6 69UAF.03(
M2<-KEIIQ[#2\&B/]16B4:1FO_:EC/.-?R*,NE?]2%"5Z!&!B<+]9^.:Q!'Z(
MT21%X)+#=TS@MS:L7QNE'F 5+FH1*TE;OU_04PXUKE!O^DN7_@<H8DNEBC\*
MSV<R^"TBG#<*; 9)K%?1 ]^!?]BBE-<B[Y 0B[KR%&>NO"/+Y&+>**8-%&I2
M?9*CP9'E94M!&B;*D^XI?]W)G 9#M5\N<]ID2A^6*\MY)N2>N(]F^,,M'A7S
M%WI#[[OCZU;R\VO'\[\X_C\(W&;F/-BH3L2<9IB3T[0'P&@ZVZ4W"IRKA;L"
M^QS8;GP#V);U"A3R"U\#VR<6\#M# 13#1=ILV<IJ4[5N*4\+<[903(_^<A;^
M9(H7B&_@ !=5=.4I9*IMG7%5O)KI&/3<4^RD3+NUHE-B;B$P4\.W\'OJ10J
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
MG'&5G E_Q\<I[0 Q&3:B \2!PB@=.3PY892NMT!1]*9:]5Y>7UY?V.M+1?;
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
M3,;KWF*M:,!5J': 8#;A,G +8 '4^0\_)/!T'>4*MF>VL#';$,6)2Q@##4F
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
M'!([6-8>UPMY \B8#XW)C\&%-\*;8 1#QM\@FH7O0_6& T@=;A6'0QJ2$2H
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
M#XS?/TVRDTESC3;IF#\Y:30>\>T%T%>=)*D'Y-)A9K9#D" Y;?KCT :+-FD
MAAPM-)(QD(?O -]?-^IB1"TZ">)$TYG8:SY==9T +(X;(L U$P&R"!KLT'NX
M'801_L9,A_W*T;-)"(<D6 (LF5@TZRV<-0 Q!FOQOEN0@Q4F(4V CN'$%:J5
M0J](!68@O(UOTMLOZ2OR@;G@.8E@[B/FS@WM<>:[\JB#8^,#4I3&&R)%XJ"M
M!F%2-GI%W&6="0B2&>B0E^:KEXU7&GEIO7K9?,7E /]LO=K;W,P/K=Z29FB5
MO!?(^Q]Q'(-:WIB'94%0+&XT7\)XFL(223*$T9#&\*T()/"T!!;$6R39]F)J
MUWAY:X:!^'D3ALV?WJ7!M#;<&W7F5^)X5RSY/0LKQ+\G4<KG&XP9: _4=H1'
M();!1]8/0)@PJ_OQ\;$VQI/%X8*@9GJCW'+XV7U@ 5]0;Y@3!X=CD:B1/WBN
MG8MC,,94VW@1SCV:!W8MR\?66"PP?;N/P]SW^*;?A RB$+<)*8B&)5)F/+B?
MPB@(XX!O9#W?P\J=W,J-=/W/%#^8\,S<(*8HR!OI"R\J,-+U6LXRO\A=K>*@
ML?+X/&N'BEW9;)E:?Y4)YI>9;.!Y,DHD-F'X@7YQ=FEF>*YF.$P],]L.XH%P
MK*,7(O99U$#P788T>T.;,L\+&YD]4*Q"4ML;IX;C.;5A_!F(+):)EUB-TRJC
M\(("=6'4DGR82<X Q>@3\]&5G#=0.81RFZ-*KRS7*\D\D'0B%EC'VQNWV\VD
MU!)/%HPN-I3Q^BZ27QJY?1/L;*!74>_9SOJE$Z<5>X,%:[/40R^7E"V2_/11
M10]:OH.P<@^X&OX6A4$($XV>@*@L).>/U+<69)1FI$.Q,MMQ\Y9M$BX=H_G!
M+J]=Z/!D=5-A7$P>)^4%2Y)#\C$%\#ZB,%?YBH(R5>_*_;L1G:!TV+S(,W:(
M%BL(GC3W(.2 /WGH.5:B&L4EKLAE+[SLS=(Q+FWX9C"?;F3M]:UBUD19#B]C
M-IGCQ-1DZ>=@3,WD\\+MO01D=:S?F6VNV&1[)XC+Q'Y;6>=0Q-4[<V1MC<;/
M!<,V16F7?UW*9C=S2?PTS"&=_8F_[XU@>A;&W#7ZWQ>@N>\]?Y*>@KNHA7I!
M Z?XWK(;H:$P">[_OM!G9\!8>7_U&7Z_-0:#D[<]-Q:B7AY%.A9ND1J<B# F
M48/_ZYMVP(3<9PK8XT%_P"QH8)]7ZO $7]Q\#E8:U2(>Z%6'>OLY,N:D1-(I
M^H.7W#'KC()P@;V83<C8M\UCFY8#%AV?C9)\V31RB*FU<< .98I'%9Y;&%^*
MLD%\4/QDL) 'ML\+\YUHY+[:Y3P*^LK]:?]5D;32=0B64A]8]G65-7"[%Z\%
MBA5I^=<Q"5Z\OUS;CGRIOUI7.^U,.;UXWVJUM7:W75*+JKUO]5[_O=NN-:ON
M="G3I_6Z'?BGA+[L6\&N<'C%PD,HYH^@V-RG62S!R]R\[-P*6:V,J>%<X.:O
MEDZYQF!BFFJI0U/UC5M-P-?7YVNWZAD6;X6V':$M4W\)13K/JLU8TA='5LI(
M\=U+9&5I(&56AX.F?;M8@_,3?A)?A"ME7BA;>'#5_D.R031>T"WL%1+\G,6,
M,3IB/GLQ3@4WT. )[Y= 2]*.?Q8%=H)!S:C7Z^26AT&_B41(C#!I\6^Z0:X\
M<,/NL%H'[@.0X!8$#T+Q<OO()Y=QJDO\E.O(-X<T$!?59D:GV'S8 %2'AQ=C
M,5XJA("NZ49;:_5:S\4!T@# @I"[4$TB.K Y*I[5JL>]/3RW7=_XTT2D4==/
MDK&&]G@F$W_1-06;]HU:NJE[D[^8R_)-O#EZEW$M!EK,<222W$ #6 SL7XOM
M.#=?UOE98?N^G'WC@KR@I1D^STXJ9O5,IJ=V06K/LO<4 N& ]Z"/#Z%S&J3Y
M9YI1RHO7D99LP&8HI)9<5:!%FC68WB1+-2,[(Y]8S&AR&W-"*A6Q0Q4QJR'X
MZ%]3FV>W9/(9QK4V7&"N!8M!CI'N4\IBH 3X**M9>ZJ:]>BJ69M3U:S-PFK6
M?YVB\IU;_5I_LJ>AW;=#I$9,"RJ"1*L%YG!Z'5SE^H(5L86Y\^*^&8[/K.+P
MUAPR"TF_3K"H%=Q?^HI,)W-9GAF)[$9DX1#K"0TX>6!:=2KX- J2I8X(QND_
MC?:"L=,Y9R>/'0F6I7ET!15.;26#U2G.B'SQ_I97-ECL"<V@YX8-*Y9B,B5A
M<%67LRH;Z(S:<UKLM 9J,>"2$>$[@0Z:VDG!6T:9Y/$2&3!XF4FC@'&#> FY
M95;#'L:.@)UN-,;<R(3'Y$@P]![=A)8NJQA,5RR\#&Z$UBF 3[>FD:W9IS8F
M2Y6G(-SB Q,K4GLT8I8MZ$YSR=CHBL+-E.>'(1__]H1T^^OI/KV\3W?%GE7B
MV!4<%9!_P'!PYGN/V2$"TS_A%A^9]B1+<QX)Z=;CE^9/8<B?)5"J7[E1W^^^
M75S9[H^TR57YI2L,4N4.ZW8;QEP*\N&M^MLM[/#";>;Y3;^"G;;I,^/%GJH^
M?DJ/\GB;-/?G@FRA;9V&1>YYHC)%8FWJXQ5O#!=T2K39V'63Y]7?RBU<<=B[
MW7T.^T?.,3!.R'GB62@8_NF=YS6F9(\P,FKZMIO,O>>S$@X.? )Q>X-7$DE*
MUI%A&([?O'Z-I!D!,VOWWL/K<]\<V@\L>,VL>^J_!O^2OM:;S4:[W7L-HJ W
M&YU.LV> PJQW>KW7[.E/P] ;S7IM&(Y2I7H&3SN#U^(9@&_BL!.^%].NIA9,
M"ZGIN9_P1J3?(PK>DA?OSY.#9\01%9B4 3+PA?GW2.TNO-[D?'2]JXD3T/J"
MLYZ./##B&A]S)YYK&/0'!^2*9M]<(;5]-(H?B@?5D\]SOP'DH,T\'G8 HY;K
M2=P5L6F5Y6VBY>JS  :6\G279#\+NGQUD>_LX:F8QM8J9H6\)Z5A=JYA]%Y#
M-UHP/ZUFH]5Y;>F]7K?= V^M890L+G=#V[?(.1+VQ,=2W'"F<_APCH/HB*+:
MS^GN9;P4S^J20Y<;8]NEN:,$1P+!$8N,WJKK]:[1A$6F<::7O2SGQ.(\(;K"
MR%Y9HA0O[5_HA&"M.]+.';IT-7:77:F$:]_"U:XW=?C_3H3KEN&A*L5"]&%R
M=D4?@P*1$0<=Q?>$0]^+[H?DJ_<@<EB[7(;:![Y$-;<V[1I*B"00HAG3+OOJ
M3#?.Q)<\ /=4LF3Q(#V>.8\#.."GCN$&O'"$,.*?<*:D1"KEF7AI&'A![E-Q
MA4!S:Z.LD7DSZZ-]6<'5\R@LP5.&/QNM9@<]9;T#D&FL@HB9B%GN4$-!FQOS
M<HM)/"3]I]>W5H#-& T_*0TH@1D!-GJOV6X!O/5ZZ7;$TMJF*7-!%+R<1_=1
M$)+6,9C;("G;*LZ6DA09)&5A&$@'*=J1?9")RE398!:,%D5@2P7LX.5G6W^U
MK>1'=OEI[4A^OGKN&2;41:'G3Q;)T,OTF)%7)R%/S2WEJ:/D279Y:E<J3]]K
MM[6T*/E$A*JUI5!UE5#)+E2=BH7J]Y,3JO:60M530B6[4'5+%JIE7!@'+P^=
M;?-)ZFK7029YZ+3:3>.UU:BW]$87Y*'7*WN-$5)P&_6S0/0?@NXWH6X./?*;
M-W3)AQJYBT;,"2<'+R;=;<5$5^N&1'("_VWVVB GN&"4+2"+.+FRH/3!BT-O
M6W$PE#C(*@YEFT]K!YZ+I.?@)4:O;RLR#24RIR8R&\>:CU.$MLY]5PD"THJ0
M7G:=2#GQY>,4I&W3!W25/R"O()6=:J,$:;$@;9M'H*M$ GD%J>Q2K'(V9XY3
MD+9-(-!5!H%4@F1TC;K1FMZ7Z95=J%541'+A,\L.,T%*"JE%&N@M&X<Q\;FH
MO,**:A8^(LG37)D6/O</9-0@GV"X//*!NC\T\K5V?N"5)BAOV^86Z"JY0 IY
MBW.M.W58&%J\Z!X$K5&ZJ"V2*JS!*I4^8.<]X<)O=+CP=V;H%#(-L$CV^1.1
M-CL(/-/FGPY?%VR;$J&KG @I=$&\]C;JW78+U]XF&+.M.M\#WI5/R+V]6X:'
MPR+%>:H?#E\HMLV+,.I**&02"J,NA )LTT:KP0W27?EWWW\_3I'8-@?"4#D0
M4HA$;&GUZGK+:#:YI=4R0"I6$8="GZLDTV^C!JV3Q_?$S(AO0(NP"H^SS)FT
M<:4@/Q=+[Z46XE(O\5\V[K_9E'RID5\]YPAD?=L$#T,E>,@DZTWXLVUT1"WN
MKM8]U <^2 ((D8A0KE53R(^I$\3:=H@DV/<\I1"$[>BDR]@V%\10N2"R25>O
MM:-*]X72]=W-1V16$K'9W;G#EZ2M&5=52HBTDK2W=6HS2?K]N"1I:X)$E1,B
MF20UC'K]-4;_SG95NUN*)&7IBX<O1%OS(*I\$)F$:#8BL9(<[3-$4K9@%\0M
MMXF+\"JP\QKY@QY^!9BQ;8J*H;;,99+M3KUN=/A&\PZ=MFOF\U/"4*(V72$/
M7W*V339IJ+TTF22G"W_I[2Y?A/1.K[NKZI>/>'2VOX5MN6]"4\3ZMLD4C5S@
M_/ X3<% J?>ZC3K'1K/9::ZTAW,')D=@\VQ6<?[\F,;LZ7-6")*F"[[GWDH6
MR$?Z8%L8./[$;'<]4M3-,;!M[D"C<> 8F#925ZJO3H0^VZ0KW$,_-%9;0Z_I
M:M$J;='"0X7TEMY9*32(%!6V95/?7L1W?9 6E=%0D-H!I%9BW\83J?FQO*"H
M?!?<X?^AH_%;\F\O<N_)U=7UH4*JJ2"U TBM1.%[[3TR7W!40Z-]ETT.%$0-
MM=3M D0K6= 7Z:$/\;D F$AQ,;19WJ#Z-H KP&<:1WX0Q;D5M\SDMS3J1G+;
M+?7[U&7!V;<GATW(N1D>+B -!<C2 ;E2S'D)(#^EQ]R?'""-FOY/A<C2$;F2
M@[F6BL30P;J([=7;1X=8O:[7/G^]_:="[=:M_/\?;J[ [0Q"'M+XZ)D11C3.
MXI3'^&LK_AK^@/>Z7DCH>,RH#U?P"S_CO "N$:L?:4@!FG@B/#-I%,!CPH#P
MUX3T/B#49P1K72W<C'S$PWZ39V#\25R8O*]VH-B\O?A587/[5N8A<4>?/-<;
M34 KALP-4+/=FD,VHBEF#Q0K%^=7"BL[Q\H%=<S($8OLE>W^Z"-3\H$CY^/E
M)X6<G2/G(QOPU/\C L[5^0<%G)T#YXKVF7,TF+F^N528V3EFKL6YJ.6L4YON
M%#?WO[U[X<$UY)K>+_(E7O)\I3"FS,F/(OK$)LP A6\L=$@NA6\-_<;"WOG!
M@K_ZGC7!K^%/VG?8>X)_ESOWI%,SGL,IOM6R'XCIT"#XWQ?7OWSX_<7<Y.'L
MB<>>X1/>$'Q/\HW/-^OQJQ?\<3//^_K]2_$#B^"0=87POI#\.)"9<8".\&'M
MZF)(X;5Q X8^>5W4EE\_WJ1MR;^>#PO)M2Y^<AI.^2GTS!=%<T/^YZ_("]_.
MM$Q\.3--LYU[\?X.)QX#(Q?P"XQ @*&0Z;[D_BK$!GD.'/-#&N-#S.'L*,QA
M@X.3]#W?8O[_OJB_@*ERG#&U+-N]3S\'8VHFG^-&YN&BUYH_QZ+6Z];:/PM$
MXDG/;OBF_G8+K(MY>I<*TVH+&-<RR72W6^.G4O2NL5#O<@GAB5[;D<FL?9S(
M5$?U9J^LKJZPQ)B>/\8<-M"'_0GQ,5^-81@G]%+EV*@9^)$'$[W1F+H3P!ZF
M+[T-TN.:^2*$C( BLPT^\&R8VS/]]3EYR=7R5Z]&&HW&F=YI=9JM5QH9P+<B
MK),\>V0'?&G#VUG?CZ@_(7J#YTH96\9W#A1+QM%A25^()8Z8[MGOSR #";LX
M!99(HFN?)C :1P:,YA)@*"6S6RPUCPQ+R/ZQ7,OH];/_MZJ:$=!HG28T6D<(
MC:92-!6AJ7V$:&HI-%6$ILX1HJFMT%01FKI'B*:.0E-%:.H=(9JZ"DU51137
M/Z%8;CCU>K4M=%-W#DN]=DM?&4O&:6/IV,+3> +X%III([WT6^0 CEKB_(T3
MQ=&QA:;QB&R%H_WCZ-@BV7BVM,+1_G%TC%'LN@+2_H%TC#'O;3;7%) V!-(Q
MAKNW20510-H02,<8Z=[&1MHPFO3-##U^=EK[I-%TC)'N;9.*/C)3[/8+<M#.
MB4+CV,+6O=[VT/A"?7,8XZ)QFK@PCBW^C!1W6V<(941^IPJ+(PPE;ZTN8I)I
M0S \GB@PCC V_(R^>!X8Z?Z3L#Z;)PJ-(PSW;JTSLFUNXZ2Q<80AW/+4QHEC
MX]BBLN":S";[_6.UW(?!5.2CUS0ZQG.1#^'#-$X:0$<8C=U:N2AC%8!Q;-'5
M$FKLT+4U]%,N?#%4E'29+=(YY3"I<6QA4F-[:/Q&78$,'A$S3G1OI7&$@=)9
M:/QC]0CIU(%KW=U"8B%=AIC::8:296P@8D 7L'+@'&/4\SAFMSEG0>8F=^7%
M0&RG&O5UYS<_E44S5LPY)(X7VGCHMT7]:K:3WDPMZEV/1F/GHP&>ZB*8;.!A
ME"C]:_!(%7=_]@$GL4C]=$ KE(5DU_ X>!"]%Z$0Y.]"SB_B^?#W:,S<@(8>
MJ*$Q'L4+7U+?IZZX6$HCI'1VNLKFI["ADH]Q(D-K\!-6-KYWH$W-/.=[0 :1
M[]K!<)J]#DGYR1 4-RAII,RV\*@Q"U4V-4VAL$$SVP$Y=\%(=\@- Y6?!15Q
MK>?4>(^VXW#&[G[Z#.$'F&^YCA<?++2*.'_\V O$L50)?[S>3>GCF1GY=HC'
M5ET^F4,42.20QY_U7@-61QH0*DX9KI';R!S.=K2@+="?/A*-+UJR;!=[#'V%
MQMKN?1"?KSC3G*P5C7PK-%0=:[9<(^S)9.,P61P9<C.&0BK"(0WYEWX<T075
M%8R9R;OH.)-\/P("DYCOBM);2F\MTEN'H+B^!_%Y4%SKX"&+7"]1Z\$.4)!!
M-K2I RAN(H>19KU]AS?=L/N$?OOV[$Y#*0JX=*=<G_R)J)*"O+Y#;2%L451/
MU.<R2U,!Y \,LBT5N,;W4"3#*%BDT0*BZWBE;A0HMIPFP6O65H)<YWIPH?\(
MP\)[@ET(HOY_X%$X+(Y-^Z#+PDFFRN#"(&[;8BVQ%FWI%M284R25Z3\=8]8%
M/TXZ4T,,M:(SW0&=:<D$NX8QR[";$E:_Z[^__?S+U_.[[S>7[U[WW^^J"<4<
MOWF&5:,S+I"2G<IL@9B2?)-(W*;KG*X61LU?D>US13IM ')-J+=>6J]6M@3Q
MHIO,2!J"?65AS0<_$,822X@O+%9A 0;06%3R+C\MIL^&U!F@^80/XGHRO@ U
M*XO0*.3/HU$X]'P8!ZNV/YC-3;+>+9KD3=E[$WKW>N5<O2/;LAP6LP<W6[66
MI%3N&15YH]:1M(W38UFO[8L6?_YTX8U:K->1._I@+'F%W,-'[E;M5'A=H>WY
MY:7'5XF/X$F]R:4$],3&[U$"6JS,9^(TBC>!Y]@6T<=/Y*<Z_]_;_2/^=?":
M_,LV0[!H*/E2([]ZSNR9'PK_2E]+JJ\5<A5R#Q.Y>.J2C:L@C]XM.'Q7=&/G
M;7EY[=NN:8^I,]^$-7)4E$@ID5+&^Y'@-;%1<]_PV'DO^RPBY[D+ )P+NJQL
M_*IM_-^\H4O.:^0/.E$2(B%J#@3<>\>NPNTA $+A=K:=PJ+_9+L4+&LPK"NS
MZ+,FH*-Q;II>Y(:V>W\\!OY:60JE;\KM?\OYF#9\5]S9S;9N<5NWSYB;[-[V
MF>,])KNV \^!3PCN,?,#3+OQW&1C-WY9;H?8=ODW)L7]4/YZGD@COK5$/EV<
M.;R[K5Z]6>NL@BJULZM<EA-S651P5V;[[X#@K;8E%'(5<LO;EN"_?00S#E&N
M]BB4?"GY4GL4RN _(-S+:?"K6*_<J#D0<%>T1Z%@*S4>%&P/?8MBKQ.W\Y>]
MZZ?OBXO%]O+.BR&U_1$R7(AX^ >/^A9^2/RYX,T>&W3NFP!"<E$C'QQJ_OCG
MD4YT)6-[&_V'L1!\>!"J?0WL%\]S^80.;7=?[[RAMLM\\@M]=.S]08BO^1]J
MY!?/L^!1^WKM1\^ECD5^J9'?<0_KO_MZ[^T#$Z8Y&_J/+)W< [9T]K1KO.K^
MGA2[M?^<#5QKN+.*.ZVX&@]!REPZ8C%%C$8L#YJ%'^*+8IH&SXP2LNEL[Y51
M<YBL.;3O/3#^*%QY^!(O]EZM1$\F5^9(3_(T#V/O,2:&H.# ^BZ;B-)<QB.#
M@L\E0#*89!L8'RXH'9!UQ84+!>.-Z,F^ZWC5YN[!QWH.R[60,]RC=LF4\WRP
MSK,"KP+OP8)7%9\=F9>QJJ&9HY.Z.K^].[L^_^7R[,/-Y?GOA>17G^YNXN^G
M?A@.SGSO,?EE]B>T5<DT<59I7%F$=!OQ2S.^K"GNK'GJJ7>OQ0R\>ST,1\[[
MO_T?4$L! A0#%     @ PGQ34M0C3G-] P  >QL   T              ( !
M     &5X7S(Q-3$W,BYH=&U02P$"% ,4    " #"?%-2D4H\*D<#   _"@
M#0              @ &H P  97A?,C$U,3<S+FAT;5!+ 0(4 Q0    ( ,)\
M4U+%E:DRT@8  (YV   -              "  1H'  !E>%\R,34Q-S0N:'1M
M4$L! A0#%     @ PGQ34B[_:X<="   ;C    T              ( !%PX
M &5X7S(Q-3$W-2YH=&U02P$"% ,4    " #"?%-2;Y;=,O,'  !=,   #0
M            @ %?%@  97A?,C$U,3<V+FAT;5!+ 0(4 Q0    ( ,)\4U+\
M8L_28@0  * ?   -              "  7T>  !E>%\R,34Q-S<N:'1M4$L!
M A0#%     @ PGQ34B"\:V\AC   5:<   L              ( !"B,  &EM
M86=E,#(N:G!G4$L! A0#%     @ PGQ34H\P/.T.C0  5_,  !0
M     ( !5*\  '!E<F9O<FUA;F-E9W)A<&@N:G!G4$L! A0#%     @ PGQ3
M4L@F;:$<%P  +B8! !$              ( !E#P! '!R;&(M,C R,#$R,S$N
M>'-D4$L! A0#%     @ PGQ34M":I 6)%   >T ! !4              ( !
MWU,! '!R;&(M,C R,#$R,S%?8V%L+GAM;%!+ 0(4 Q0    ( ,)\4U)F;/7H
MLU8  %3\!P 5              "  9MH 0!P<FQB+3(P,C Q,C,Q7V1E9BYX
M;6Q02P$"% ,4    " #"?%-298L)^OMZ  "="P< %0              @ &!
MOP$ <')L8BTR,#(P,3(S,5]L86(N>&UL4$L! A0#%     @ PGQ34AC160TZ
M70  "LP( !4              ( !KSH" '!R;&(M,C R,#$R,S%?<')E+GAM
M;%!+ 0(4 Q0    ( ,)\4U*3CW?3@'D" '4_(P 4              "  1R8
L @!P<FQB,C R,#$Q,3E?,3!K+FAT;5!+!08     #@ . &H#  #.$04    !

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