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

FILER:

	COMPANY DATA:	
		COMPANY CONFORMED NAME:			SPS COMMERCE INC
		CENTRAL INDEX KEY:			0001092699
		STANDARD INDUSTRIAL CLASSIFICATION:	SERVICES-PREPACKAGED SOFTWARE [7372]
		IRS NUMBER:				411593154
		STATE OF INCORPORATION:			DE

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

	BUSINESS ADDRESS:	
		STREET 1:		333 SOUTH SEVENTH STREET
		STREET 2:		SUITE 1000
		CITY:			MINNEAPOLIS
		STATE:			MN
		ZIP:			55402
		BUSINESS PHONE:		612-435-9400

	MAIL ADDRESS:	
		STREET 1:		333 SOUTH SEVENTH STREET
		STREET 2:		SUITE 1000
		CITY:			MINNEAPOLIS
		STATE:			MN
		ZIP:			55402
</SEC-HEADER>
<DOCUMENT>
<TYPE>8-K
<SEQUENCE>1
<FILENAME>f8k_072618.htm
<DESCRIPTION>FORM 8-K
<TEXT>
<html><head><title></title></head><body><div style="margin-top: 3pt; margin-bottom: 12pt;"><div style="font-size: 1pt; border-top: Black 2.5pt solid; border-bottom: Black 1.1pt solid; width: 100%;"><font style="font-size: 10pt;">&#160;</font></div></div><p style="text-align: center;"><font style="font-size: 14pt;"><strong>UNITED STATES</strong><br /><strong>SECURITIES AND EXCHANGE COMMISSION</strong><br /><strong>Washington, D.C. 20549</strong><br />_____________________</font></p><p style="text-transform: uppercase; text-align: center;"><font style="font-size: 14pt;"><strong>Form 8-K</strong><br />_____________________</font></p><p style="text-align: center;"><font style="font-size: 12pt;"><strong>CURRENT REPORT</strong></font></p><p style="text-align: center;"><font style="font-size: 12pt;"><strong>Pursuant to Section 13 or 15(d) of the Securities Exchange Act of 1934</strong></font></p><p align="center"><font style="font-size: 10pt;">Date of Report (Date of earliest event Reported): <!--July 26, 2018-->July 26, 2018 &#160;</font></p><p align="center"><font style="font-size: 12pt;"><strong>SPS COMMERCE, INC. </strong></font><br /><font style="font-size: 10pt;">(Exact Name of Registrant as Specified in Charter)</font></p><table style="width: 100%;" border="0" cellspacing="0" cellpadding="0"><tr valign="top"><td align="center" width="33%"><font style="font-size: 10pt;"><strong>Delaware</strong></font></td><td align="center" width="34%"><font style="font-size: 10pt;"><strong>001-34702</strong></font></td><td align="center" width="33%"><font style="font-size: 10pt;"><strong>41-2015127</strong></font></td></tr><tr valign="top"><td align="center" width="33%"><font style="font-size: 10pt;">(State or Other Jurisdiction of Incorporation)</font></td><td align="center" width="34%"><font style="font-size: 10pt;">(Commission File Number)</font></td><td align="center" width="33%"><font style="font-size: 10pt;">(I.R.S. Employer Identification Number)</font></td></tr></table><p><font style="font-size: 10pt;">&#160;</font></p><table style="width: 100%;" border="0" cellspacing="0" cellpadding="0"><tr valign="bottom"><td align="center" width="50%"><font style="font-size: 10pt;"><strong>333 South Seventh Street, Suite 1000, Minneapolis, MN 55402</strong><!--UNITED STATES --></font></td></tr><tr valign="top"><td align="center" width="50%"><font style="font-size: 10pt;">(Address of Principal Executive Offices) (Zip Code)</font></td></tr></table><p align="center"><font style="font-size: 10pt;"><strong>(612) 435-9400</strong><br />(Registrant's telephone number, including area code)</font></p><p align="center"><font style="font-size: 10pt;"><strong>Not Applicable</strong><br />(Former name or former address, if changed since last report)</font></p><table style="width: 100%;" border="0" cellspacing="0" cellpadding="0"><tr valign="top"><td colspan="3"><font style="font-size: 10pt;">Check the appropriate box below if the Form 8-K filing is intended to simultaneously satisfy the filing obligation of the registrant under any of the following provisions:<br /><br /></font></td></tr><tr valign="top"><td width="21"><font style="font-size: 10pt;">&#160;</font></td><td width="40"><font style="font-size: 10pt;">[ &#160; ]</font></td><td nowrap="nowrap"><font style="font-size: 10pt;">&#160;&#160;Written communications pursuant to Rule 425 under the Securities Act (17 CFR 230.425)</font></td></tr><tr valign="top"><td width="21"><font style="font-size: 10pt;">&#160;</font></td><td width="40"><font style="font-size: 10pt;">[ &#160; ]</font></td><td nowrap="nowrap"><font style="font-size: 10pt;">&#160;&#160;Soliciting material pursuant to Rule 14a-12 under the Exchange Act (17 CFR 240.14a-12)</font></td></tr><tr valign="top"><td width="21"><font style="font-size: 10pt;">&#160;</font></td><td width="40"><font style="font-size: 10pt;">[ &#160; ]</font></td><td nowrap="nowrap"><font style="font-size: 10pt;">&#160;&#160;Pre-commencement communications pursuant to Rule 14d-2(b) under the Exchange Act (17 CFR 240.14d-2(b))</font></td></tr><tr valign="top"><td width="21"><font style="font-size: 10pt;">&#160;</font></td><td width="40"><font style="font-size: 10pt;">[ &#160; ]</font></td><td nowrap="nowrap"><font style="font-size: 10pt;">&#160;&#160;Pre-commencement communications pursuant to Rule 13e-4(c) under the Exchange Act (17 CFR 240.13e-4(c))</font></td></tr></table><p style="font-size: 10pt; margin: 0pt;">&#160;</p><p style="font-size: 10pt; margin: 0pt;">Indicate by check mark whether the registrant is an emerging growth company as defined in Rule 405 of the Securities Act of 1933 (17 CFR &sect;230.405) or Rule&#160;12b-2&#160;of the Securities Exchange Act of 1934 (17 CFR&#160;&sect;240.12b-2).&#160;Emerging growth company [&#160;&#160; ]</p><p style="font-size: 10pt; margin: 0pt;">&#160;</p><p style="font-size: 10pt; margin: 0pt;">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. [&#160;&#160; ]</p><div style="margin-top: 12pt; margin-bottom: 3pt;"><div style="font-size: 1pt; border-top: Black 1.1pt solid; border-bottom: Black 2.5pt solid; width: 100%;"><font style="font-size: 10pt;">&#160;</font></div>&#160;</div><hr style="page-break-after: always;" noshade="noshade" /><p><font style="font-size: 10pt;">  <strong>  </strong></font></p><p><font style="font-size: 10pt;"><strong>Item 2.02. Results of Operations and Financial Condition.</strong></font></p><p><font style="font-size: 10pt;">
 <p style="margin-left:0in; text-indent:0.5in; margin-right:0in;"><font style="font-size:10pt; font-family:&quot;Times New Roman&quot;;">On July 26, 2018, we issued a press release disclosing our results of operations and financial condition for our three and six months ended June 30, 2018.&#160; In accordance with General Instruction B.2 of Form 8-K, the information in this Current Report on Form 8-K, including Exhibit 99, shall not be deemed to be "filed" for purposes of Section 18 of the Securities Exchange Act of 1934 or otherwise subject to the liability of that section, and shall not be incorporated by reference into any registration statement or other document filed under the Securities Act of 1933 or the Securities Exchange Act of 1934, except as shall be expressly set forth by specific reference in that filing. </font></p> </font></p><p><font style="font-size: 10pt;"><strong>  </strong></font></p><p><font style="font-size: 10pt;"><strong>Item 9.01. Financial Statements and Exhibits.</strong></font></p><p><font style="font-size: 10pt;">
 <p align="justify" style="margin-left:0in; margin-right:0in;"><font style="font-size:10pt; font-family:&quot;times new roman&quot;;">(d)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <u>Exhibits</u></font></p>  <p style="margin-left:0.5in; margin-right:0in;"><font style="font-size:10pt; font-family:&quot;times new roman&quot;;">&#160; &#160; &#160; &#160;<a href="exh_99.htm" rel="nofollow">99</a>&#160; &#160; &#160; &#160; &#160; &#160;<a href="exh_99.htm" rel="nofollow">Press Release dated July 26, 2018</a></font></p> </font></p><p><font style="font-size: 10pt;"></font></p><p><font style="font-size: 10pt;"></font></p><hr style="page-break-after: always;" noshade="noshade" /><p align="center"><font style="font-size: 10pt;"><strong>SIGNATURE</strong></font></p><p><font style="font-size: 10pt;">Pursuant to the requirements of the Securities Exchange Act of 1934, the registrant has duly caused this report to be signed on its behalf by the undersigned hereunto duly authorized.</font></p><table style="width: 100%;" border="0" cellspacing="0" cellpadding="0"><tr valign="top"><td valign="top" width="49%"><font style="font-size: 10pt;">&#160;</font></td><td style="font-size: 12pt;" colspan="2" valign="top"><font style="font-size: 10pt;"><strong>SPS COMMERCE, INC. </strong></font></td></tr><tr valign="top"><td width="49%"><font style="font-size: 10pt;">&#160;</font></td><td width="2%"><font style="font-size: 10pt;">&#160;</font></td><td width="49%"><font style="font-size: 10pt;">&#160;</font></td></tr><tr valign="top"><td width="49%"><font style="font-size: 10pt;">&#160;</font></td><td width="2%"><font style="font-size: 10pt;">&#160;</font></td><td width="49%"><font style="font-size: 10pt;"></font></td></tr><tr valign="top"><td width="49%"><font style="font-size: 10pt;">Date: July 26, 2018</font></td><td width="2%"><font style="font-size: 10pt;">By:&#160;</font></td><td style="text-decoration: underline;" width="49%"><font style="font-size: 10pt;">/s/ Kimberly K. Nelson&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</font></td></tr><tr valign="top"><td width="49%"><font style="font-size: 10pt;">&#160;</font></td><td width="2%"><font style="font-size: 10pt;">&#160;</font></td><td width="49%"><font style="font-size: 10pt;">Kimberly K. Nelson</font></td></tr><tr valign="top"><td width="49%"><font style="font-size: 10pt;">&#160;</font></td><td width="2%"><font style="font-size: 10pt;">&#160;</font></td><td width="49%"><font style="font-size: 10pt;">Executive Vice President and Chief Financial Officer</font></td></tr><tr valign="top"><td width="49%"><font style="font-size: 10pt;">&#160;</font></td><td width="2%"><font style="font-size: 10pt;">&#160;</font></td><td width="49%"><font style="font-size: 10pt;"></font></td></tr></table><p>
 <hr noshade="noshade" style="page-break-after: always;" />  <p align="center"><font style="font-size:10pt; font-family:&quot;times new roman&quot;;"><strong>EXHIBIT INDEX</strong></font></p> <table style="border-collapse:collapse !important;" style="border-collapse: collapse; "><tr><td style="vertical-align: bottom ; "><font style="font-size:10pt; font-family:&quot;times new roman&quot;;"><strong><u>No.</u></strong></font></td><td style="vertical-align: bottom ; "><font style="font-size:10pt; font-family:&quot;times new roman&quot;;"><strong><u>Description</u></strong></font></td><td style="vertical-align: bottom ; "><font style="font-size:10pt; font-family:&quot;times new roman&quot;;"><strong><u>Manner of Filing</u></strong></font></td></tr><tr><td style="text-align: justify ;  vertical-align: bottom; vertical-align: bottom ; "><font style="font-size:10pt; font-family:&quot;times new roman&quot;;"><font style="font-size:10pt; font-family:&quot;times new roman&quot;;"><font style="font-size:10pt; font-family:&quot;times new roman&quot;;"><font style="font-size:10pt; font-family:&quot;times new roman&quot;;"><a href="exh_99.htm" rel="nofollow">99</a></font>&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;</font></font></font></td><td style="text-align: left ;  vertical-align: bottom; vertical-align: bottom ; "><font style="font-size:10pt; font-family:&quot;times new roman&quot;;"><font style="font-size:10pt; font-family:&quot;times new roman&quot;;"><font style="font-size:10pt; font-family:&quot;times new roman&quot;;"><font style="font-size:10pt; font-family:&quot;times new roman&quot;;"><a href="exh_99.htm" rel="nofollow">Press Release dated July 26, 2018</a></font>&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;</font></font></font></td><td style="text-align: justify ;  vertical-align: bottom; vertical-align: bottom ; "><font style="letter-spacing: -0.15pt;   font-size:10pt; font-family:&quot;times new roman&quot;;">Filed Electronically</font></td></tr></table></p></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-99
<SEQUENCE>2
<FILENAME>exh_99.htm
<DESCRIPTION>PRESS RELEASE
<TEXT>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en-US"><head><title>EdgarFiling</title><meta content="text/html; charset=windows-1252" ><meta name="GENERATOR" content="MSHTML 8.00.7601.18094" ></head><body bgcolor="#ffffff"><p style="text-align: right;"><strong>Exhibit 99</strong></p><p style="text-align: center;"><strong>SPS Commerce Reports Second Quarter 2018 Financial Results</strong></p><p style="text-align: center;">Company delivers 13% growth in recurring revenue over the second quarter of 2017</p><p>
 <p align="left">MINNEAPOLIS, July  26, 2018  (GLOBE NEWSWIRE) -- SPS Commerce, Inc. (NASDAQ:SPSC), a leader in retail cloud services, today announced financial results for the second quarter ended June 30, 2018.<br ></p>  <p>Revenue was $61.1 million in the second quarter of 2018, compared to $54.1 million in the second quarter of 2017, reflecting 13% growth in revenue from the second quarter 2017. Recurring revenue grew 13% from the second quarter of 2017. Current and prior period financial results reflect the adoption of ASU 2014-09, <em>Revenue from Contracts with Customers (Topic 606)</em>.</p>  <p>Net income in the second quarter of 2018 was $5.4 million or $0.31 per diluted share, compared to net income of $2.0 million, or $0.11 per diluted share, in the second quarter of 2017. Non-GAAP income per diluted share was $0.49, compared to non-GAAP income per diluted share of $0.23 in the second quarter of 2017.</p>  <p>Adjusted EBITDA for the second quarter of 2018 increased 53% to $12.1 million, compared to the second quarter of 2017.</p>  <p>&#8220;SPS Commerce has grown to be a leader in cloud-based supply chain management solutions by establishing and growing its network of strategic and consultative relationships with retailers and suppliers,&#8221; said Archie Black, President and CEO of SPS Commerce. &#8220;As consumer shopping habits and expectations continue to drive the need for retailers to evolve their omnichannel strategies, SPS leverages its platform and its network to deploy efficient and comprehensive solutions.&#8221;&#160;</p>  <p>&#8220;We posted a strong second quarter and we continue to make significant progress towards our 2020 goals and long term financial targets, proving efficiency in our business model while continually evolving and executing our go-to-market strategy,&#8221; said Kim Nelson, CFO of SPS Commerce.&#160;</p>  <p><strong>Guidance</strong></p>  <p>For the third quarter of 2018, revenue is expected to be in the range of $61.2 to $61.7 million.&#160; Third quarter net income per diluted share is expected to be in the range of $0.22 to $0.24 with fully diluted weighted average shares outstanding of approximately 17.6 million shares.&#160; Non-GAAP income per diluted share is expected to be in the range of $0.39 to $0.41. Adjusted EBITDA is expected to be in the range of $12.2 to $12.7 million.&#160; Non-cash, share-based compensation expense is expected to be approximately $3.3 million, depreciation expense is expected to be approximately $2.4 million and amortization expense is expected to be approximately $1.1 million.</p>  <p>For the full year of 2018, revenue is expected to be in the range of $243.7 to $245.1 million, representing approximately 11% growth over 2017. Full year net income per diluted share is expected to be in the range of $0.94 to $0.98 with fully diluted weighted average shares outstanding of approximately 17.5 million shares.&#160;&#160; Non-GAAP income per diluted share is expected to be in the range of $1.65 to $1.69. Adjusted EBITDA is expected to be in the range of $47.4 to $48.5 million. Non-cash, share-based compensation expense is expected to be approximately $12.7 million, depreciation expense is expected to be approximately $9.5 million, and amortization expense is expected to be approximately $4.4 million.&#160;</p>  <p><strong>Quarterly Conference Call</strong></p>  <p>SPS Commerce will discuss its quarterly results today via teleconference at 3:30 p.m. CT (4:30 p.m. ET). To access the call, please dial (877) 312-7508, or outside the U.S. (253) 237-1184, with Conference ID #6787124 at least five minutes prior to the 3:30 p.m. CT start time.&#160; A live webcast of the call will also be available at www.investors.spscommerce.com under the Events and Presentations menu.&#160; The replay will also be available on our website at www.investors.spscommerce.com.</p>  <p><strong>About SPS Commerce</strong></p>  <p>SPS Commerce perfects the power of trading partner relationships with the industry's most broadly adopted, retail cloud services platform. As a leader in cloud-based supply chain management solutions, we provide proven integrations and comprehensive retail performance analytics to thousands of customers worldwide. SPS Commerce has achieved 70 consecutive quarters of revenue growth and is headquartered in Minneapolis. For additional information, please contact SPS Commerce at 866-245-8100 or visit www.spscommerce.com.</p>  <p>SPS COMMERCE, SPS, SPS logo, RETAIL UNIVERSE, 1=INFINITY logo, AS THE NETWORK GROWS, SO DOES YOUR OPPORTUNITY, INFINITE RETAIL POWER, RETAIL UNIVERSE are marks of SPS Commerce, Inc. and Registered in the U.S. Patent and Trademark Office. RSX, IN:FLUENCE, and others are further marks of SPS Commerce, Inc. These marks may be registered or otherwise protected in other countries.</p>  <p>SPS-F</p>  <p><strong>Use of Non-GAAP Financial Measures</strong></p>  <p>To supplement its financial statements, SPS Commerce also provides investors with Adjusted EBITDA and Non-GAAP net income per share, both of which are non-GAAP financial measures. SPS Commerce believes that these non-GAAP measures provide useful information to management and investors regarding certain financial and business trends relating to its financial condition and results of operations. SPS Commerce's management uses these non-GAAP measures to compare the company's performance to that of prior periods for trend analyses and planning purposes. It uses Adjusted EBITDA for purposes of determining executive and senior management incentive compensation. These measures are also presented to the company's board of directors.</p>  <p>Adjusted EBITDA consists of net income adjusted for depreciation and amortization, interest expense, interest income, income tax expense, and stock-based compensation expense. SPS Commerce uses Adjusted EBITDA as a measure of operating performance because it assists the company in comparing performance on a consistent basis, as it removes from operating results the impact of the company's capital structure. SPS Commerce believes Adjusted EBITDA is useful to an investor in evaluating the company's operating performance because it is widely used to measure a company's operating performance without regard to items such as depreciation and amortization, which can vary depending upon accounting methods and the book value of assets, and to present a meaningful measure of corporate performance exclusive of the company's capital structure and the method by which assets were acquired.</p>  <p>Non-GAAP income per share consists of net income plus stock-based compensation expense, amortization expense related to intangible assets, and income tax effects of adjustments, divided by the weighted average number of shares of common stock outstanding during each period.&#160; SPS Commerce includes an adjustment to non-GAAP income to reflect the income tax effects of the adjustments to GAAP net income.&#160;To quantify these tax effects, SPS Commerce recalculates income tax expense excluding the direct book and tax effects of the specific items constituting the non-GAAP adjustments (e.g., stock-based compensation expense). The difference between this recalculated income tax expense and GAAP income tax expense is presented as the income tax effect of the non-GAAP adjustments.</p>  <p>SPS Commerce believes non-GAAP income per share is useful to an investor because it is widely used to measure a company's operating performance.&#160; These non-GAAP measures should not be considered a substitute for, or superior to, financial measures calculated in accordance with generally accepted accounting principles in the United States. These non-GAAP financial measures exclude significant expenses and income that are required by GAAP to be recorded in the company's financial statements and are subject to inherent limitations. SPS Commerce urges investors to review the reconciliation of its non-GAAP financial measures to the comparable GAAP financial measures that are included in this press release.</p>  <p><strong>Forward-Looking Statements</strong></p>  <p>This press release may contain forward-looking statements, including information about management's view of SPS Commerce's future expectations, plans and prospects, including our views regarding future execution within our business, the opportunity we see in the retail supply chain world and our performance for the third quarter and full year of 2018, within the safe harbor provisions under The Private Securities Litigation Reform Act of 1995. These statements involve known and unknown risks, uncertainties and other factors which may cause the results of SPS Commerce to be materially different than those expressed or implied in such statements. Certain of these risk factors and others are included in documents SPS Commerce files with the Securities and Exchange Commission, including but not limited to, SPS Commerce's Annual Report on Form 10-K for the year ended December 31, 2017, as well as subsequent reports filed with the Securities and Exchange Commission. Other unknown or unpredictable factors also could have material adverse effects on SPS Commerce's future results. The forward-looking statements included in this press release are made only as of the date hereof. SPS Commerce cannot guarantee future results, levels of activity, performance or achievements. Accordingly, you should not place undue reliance on these forward-looking statements. Finally, SPS Commerce expressly disclaims any intent or obligation to update or revise any forward-looking statements, whether as a result of new information, future events, or otherwise.</p> <table style="width:100%; border-collapse:collapse !important;" style="border-collapse: collapse; "><tr><td colspan="9" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td colspan="9" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>SPS COMMERCE, INC.</strong></td></tr><tr><td colspan="9" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>CONDENSED CONSOLIDATED BALANCE SHEETS</strong></td></tr><tr><td colspan="9" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">(Unaudited; in thousands, except share amounts)</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>June&#160;30,</strong></td><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>December&#160;31,</strong></td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>2018</strong></td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>2017</strong></td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>ASSETS</strong></td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">CURRENT ASSETS</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Cash and cash equivalents</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">125,385</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">123,127</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Short-term investments</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">47,352</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">40,192</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Accounts receivable, less allowance for doubtful accounts of $864 and $763, respectively</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">28,171</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">24,897</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Deferred costs</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">32,216</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">29,966</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Other current assets</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">6,762</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">6,149</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Total current assets</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">239,886</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">224,331</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">PROPERTY AND EQUIPMENT, net</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">18,136</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">16,856</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">GOODWILL</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">50,403</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">51,613</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">INTANGIBLE ASSETS, net</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">14,354</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">16,529</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">INVESTMENTS</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,922</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">5,206</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">OTHER ASSETS</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Deferred costs</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">10,328</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">9,967</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Deferred income tax asset</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">12,061</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">13,697</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Other assets</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,583</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,539</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">Total assets</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">351,673</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">339,738</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>LIABILITIES AND STOCKHOLDERS&#8217; EQUITY</strong></td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">CURRENT LIABILITIES</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Accounts payable</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">3,709</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,463</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Accrued compensation</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">14,347</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">15,228</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Accrued expenses</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,758</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,712</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Deferred revenue</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">24,191</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,863</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Deferred rent</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,373</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,679</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Total current liabilities</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">48,378</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">43,945</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">OTHER LIABILITIES</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Deferred revenue</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,640</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,731</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Deferred rent</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,290</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">3,064</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Deferred income tax liability</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,676</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,887</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Total liabilities</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">56,984</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">51,627</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">COMMITMENTS and CONTINGENCIES</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">STOCKHOLDERS&#8217; EQUITY</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Preferred stock, $0.001 par value; 5,000,000 shares authorized; 0 shares issued and outstanding</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#8212;</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#8212;</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Common stock, $0.001 par value; 55,000,000 shares authorized; 17,475,360 and 17,249,153 shares issued; and 17,159,819 and 17,127,006 outstanding, respectively</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Treasury stock, at cost; 315,541 and 122,147 shares, respectively</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(17,684</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(5,815</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Additional paid-in capital</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">313,887</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">301,863</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Retained earnings (accumulated deficit)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">59</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(8,611</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Accumulated other comprehensive (loss) income</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(1,590</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">657</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Total stockholders&#8217; equity</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">294,689</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">288,111</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">Total liabilities and stockholders&#8217; equity</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">351,673</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">339,738</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; "><em>Subject to reclassification</em></td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr></table> <p><br ></p> <table style="width:100%; border-collapse:collapse !important;" style="border-collapse: collapse; "><tr><td colspan="17" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>SPS COMMERCE, INC.</strong></td></tr><tr><td colspan="17" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>CONDENSED CONSOLIDATED STATEMENTS OF INCOME</strong></td></tr><tr><td colspan="17" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">(Unaudited; in thousands, except per share amounts)</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>Three Months Ended</strong></td><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>&#160;</strong></td><td colspan="7" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>Six Months Ended</strong></td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>June&#160;30,</strong></td><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>&#160;</strong></td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>June&#160;30,</strong></td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>2018</strong></td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>&#160;</strong></td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>2017</strong></td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>&#160;</strong></td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>2018</strong></td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>&#160;</strong></td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>2017</strong></td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Revenues</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">61,091</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">54,092</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">120,183</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">105,971</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Cost of revenues</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">20,402</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">18,191</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">40,160</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">35,521</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Gross profit</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">40,689</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">35,901</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">80,023</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">70,450</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Operating expenses</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Sales and marketing</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">18,424</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">18,320</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">37,071</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">35,343</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Research and development</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">5,293</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">5,369</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">10,425</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">10,474</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">General and administrative</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">9,974</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">8,139</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">20,104</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">15,966</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Amortization of intangible assets</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,033</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,117</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,158</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,332</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">Total operating expenses</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">34,724</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">32,945</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">69,758</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">64,115</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Income from operations</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">5,965</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,956</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">10,265</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">6,335</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Other income (expense)</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Interest income, net</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">547</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">242</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">961</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">433</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Other income (expense), net</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(168</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(102</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(322</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(162</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">Total other income, net</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">379</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">140</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">639</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">271</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Income before income taxes</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">6,344</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">3,096</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">10,904</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">6,606</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Income tax expense</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">928</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,128</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,234</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,653</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Net income</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">5,416</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,968</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">8,670</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,953</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Net income per share</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Basic</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.32</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.11</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.51</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.29</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Diluted</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.31</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.11</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.50</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.29</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Weighted average common shares used to compute net income per share</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Basic</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,163</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,198</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,140</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,176</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Diluted</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,549</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,378</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,446</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,384</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr></table> <p><br ></p> <table style="width:100%; border-collapse:collapse !important;" style="border-collapse: collapse; "><tr><td colspan="9" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>SPS COMMERCE, INC.</strong></td></tr><tr><td colspan="9" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>CONDENSED CONSOLIDATED STATEMENTS OF CASH FLOWS</strong></td></tr><tr><td colspan="9" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">(Unaudited; in thousands)</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>Six months ended</strong></td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>June&#160;30,</strong></td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>2018</strong></td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>2017</strong></td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Cash flows from operating activities</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Net income</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">8,670</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,953</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Reconciliation of net income to net cash provided by operating activities</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Deferred income taxes</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,498</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,311</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Depreciation and amortization of property and equipment</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,176</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">3,431</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Amortization of intangible assets</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,158</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,332</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Provision for doubtful accounts</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">985</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">873</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Stock-based compensation</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">6,712</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,486</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Other, net</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(211</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">9</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Changes in assets and liabilities</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 25.0px; vertical-align: bottom ; ">Accounts receivable</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(4,373</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(1,607</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 25.0px; vertical-align: bottom ; ">Deferred costs</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(2,621</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(3,213</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 25.0px; vertical-align: bottom ; ">Other current and non-current assets</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(710</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(3</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 25.0px; vertical-align: bottom ; ">Accounts payable</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">189</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">195</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 25.0px; vertical-align: bottom ; ">Accrued compensation</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(1,464</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(835</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 25.0px; vertical-align: bottom ; ">Accrued expenses</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">62</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">206</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 25.0px; vertical-align: bottom ; ">Deferred revenue</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">6,237</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">6,017</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 25.0px; vertical-align: bottom ; ">Deferred rent</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">939</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(249</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">Net cash provided by operating activities</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">22,247</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,906</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Cash flows from investing activities</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Purchases of property and equipment</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(6,481</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(3,334</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Purchases of investments</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(52,116</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(22,350</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Maturities of investments</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">45,000</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">21,000</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Acquisitions of businesses and intangible assets, net of cash acquired</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(381</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(500</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">Net cash used in investing activities</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(13,978</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(5,184</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td></tr><tr><td style="vertical-align: bottom ; ">Cash flows from financing activities</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Repurchases of common stock</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(11,869</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#8212;</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Net proceeds from exercise of options to purchase common stock</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">5,120</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,244</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 10.0px; vertical-align: bottom ; ">Net proceeds from employee stock purchase plan</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">836</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,011</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">Net cash (used in) provided by financing activities</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(5,913</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,255</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Effect of foreign currency exchange rate changes</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(98</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">)</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">890</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Net increase in cash and cash equivalents</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,258</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">15,867</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Cash and cash equivalents at beginning of period</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">123,127</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">115,877</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Cash and cash equivalents at end of period</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">125,385</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">131,744</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; "><em>Subject to reclassification</em></td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr></table> <p><br ></p> <table style="width:100%; border-collapse:collapse !important;" style="border-collapse: collapse; "><tr><td colspan="17" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>SPS COMMERCE, INC.</strong></td></tr><tr><td colspan="17" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>NON-GAAP RECONCILIATION</strong></td></tr><tr><td colspan="17" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">(Unaudited; in thousands)</td></tr><tr><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td colspan="3" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>Three Months Ended</strong></td><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td colspan="7" style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>Six Months Ended</strong></td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>June&#160;30,</strong></td><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td colspan="7" style="border-bottom: solid black 1pt ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>June&#160;30,</strong></td></tr><tr><td style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>2018</strong></td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>2017</strong></td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>2018</strong></td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>&#160;</strong></td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; "><strong>2017</strong></td><td style="border-top: solid black 1pt ; border-bottom: solid black 1pt ; padding-left: 0 ; text-align: center ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Net income</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">5,416</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,968</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">8,670</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,953</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Depreciation and amortization of property</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">and equipment</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,093</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,740</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,176</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">3,431</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Amortization of intangible assets</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,033</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,117</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,158</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,332</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Interest income, net</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(547)</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(242)</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(961)</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(433)</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Income tax expense</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">928</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,128</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,234</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,653</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Stock-based compensation expense</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">3,179</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,186</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">6,712</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,486</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Adjusted EBITDA</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">12,102</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">7,897</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">22,989</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">16,422</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Net income</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">5,416</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,968</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">8,670</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,953</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Stock-based compensation expense</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">3,179</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,186</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">6,712</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,486</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Amortization of intangible assets</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,033</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">1,117</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,158</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">2,332</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Income tax effects of adjustments</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(1,027)</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(1,213)</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(2,180)</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">(3,355)</td><td style="border-bottom: solid black 1pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Non-GAAP income</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">8,601</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">4,058</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">15,360</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="border-bottom: double black 3pt ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">8,416</td><td style="border-bottom: double black 3pt ; padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 30.0px; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Shares used to compute non-GAAP income per share</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Basic</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,163</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,198</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,140</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,176</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Diluted</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,549</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,378</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,446</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">17,384</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom ; ">Non-GAAP income per share</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td colspan="3" style="vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Basic</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.50</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.24</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.90</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.49</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr><tr><td style="vertical-align: bottom;   text-align: left;   padding-left: 20.0px; vertical-align: bottom ; ">Diluted</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.49</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.23</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.88</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td><td style="vertical-align: bottom ; ">&#160;</td><td style="padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">$</td><td style="padding-left: 0 ; padding-right: 0 ; text-align: right ;  vertical-align: bottom; vertical-align: bottom ; ">0.48</td><td style="padding-left: 0 ; text-align: left ;  vertical-align: bottom; vertical-align: bottom ; ">&#160;</td></tr></table> <p>Contact: <br >Investor Relations <br >The Blueshirt Group <br >Irmina Blaszczyk <br >Lisa Laukkanen&#160;<br >SPSC@blueshirtgroup.com&#160; <br >415-217-4962</p> </p><p ></p></body></html>
</TEXT>
</DOCUMENT>
</SEC-DOCUMENT>
