XML 23 R9.htm IDEA: XBRL DOCUMENT
v3.20.4

Revenue from Contracts with Customers | 12 Months Ended
--- | ---
Dec. 31, 2020
Revenue from Contract with Customers |
Revenue from Contracts with Customers | 3. Revenue from Contracts with Customers Revenue is recognized when control of the promised goods or services is transferred to our customers in an amount that reflects the consideration to which we expect to be entitled in exchange for those goods or services. Sales-based taxes are excluded from revenue. We provide mechanical and electrical contracting services. Our mechanical segment principally includes HVAC, plumbing, piping and controls, as well as off‑site construction, monitoring and fire protection. Our electrical segment includes installation and servicing of electrical systems. We install, maintain, repair and replace products and systems throughout the United States. All of our revenue is recognized over time as we deliver goods and services to our customers. Revenue can be earned based on an agreed upon fixed price or based on actual costs incurred marked up at an agreed upon percentage. For fixed price agreements, we use the percentage of completion method of accounting under which contract revenue recognizable at any time during the life of a contract is determined by multiplying expected total contract revenue by the percentage of contract costs incurred at any time to total estimated contract costs. More specifically, as part of the negotiation and bidding process to obtain installation contracts, we estimate our contract costs, which include all direct materials, labor and subcontract costs and indirect costs related to contract performance, such as indirect labor, supplies, tools, repairs and depreciation costs. These contract costs are included in our results of operations under the caption “Cost of Services.” Then, as we perform under those contracts, we measure costs incurred, compare them to total estimated costs to complete the contract and recognize a corresponding proportion of contract revenue. Labor costs are considered to be incurred as the work is performed. Subcontractor labor is recognized as the work is performed. Non‑labor project costs consist of purchased equipment, prefabricated materials and other materials. Purchased equipment on our projects is substantially produced to job specifications and is a value-added element to our work. The costs are considered to be incurred when title is transferred to us, which typically is upon delivery to the work site. Prefabricated materials, such as ductwork and piping, are generally performed at our shops and recognized as contract costs when fabricated for the unique specifications of the job. Other materials costs are generally recorded when delivered to the work site. This measurement and comparison process requires updates to the estimate of total costs to complete the contract, and these updates may include subjective assessments and judgments. We account for a contract when: (i) it has approval and commitment from both parties, (ii) the rights of the parties are identified, (iii) payment terms are identified, (iv) the contract has commercial substance, and (v) collectability of consideration is probable. We consider the start of a project to be when the above criteria have been met and we either have written authorization from the customer to proceed or an executed contract. Selling, marketing and estimation costs incurred in relation to selling contracts are expensed as incurred. On rare occasions, we may incur significant expenses related to selling a contract that we only incurred because we sold that contract. If this occurs, we capitalize that cost and amortize it on a percentage of completion basis over the life of the contract. We do not currently have any capitalized selling, marketing, or estimation costs on our Balance Sheet and did not incur any impairment loss in the current year. We generally do not incur significant incremental costs related to obtaining or fulfilling a contract prior to the start of a project. On rare occasions, when significant pre-contract costs are incurred, they are capitalized and amortized on a percentage of completion basis over the life of the contract. We do not currently have any capitalized obtainment or fulfillment costs on our Balance Sheet and did not incur any impairment loss on such costs in the current year. ​ Project contracts typically provide for a schedule of billings or invoices to the customer based on our job-to-date percentage of completion of specific tasks inherent in the fulfillment of our performance obligation(s). The schedules for such billings usually do not precisely match the schedule on which costs are incurred. As a result, contract revenue recognized in our Statement of Operations can and usually does differ from amounts that can be billed or invoiced to the customer at any point during the contract. Amounts by which cumulative contract revenue recognized on a contract as of a given date exceed cumulative billings and unbilled receivables to the customer under the contract are reflected as a current asset in our Balance Sheet under the caption “Costs and estimated earnings in excess of billings.” Amounts by which cumulative billings to the customer under a contract as of a given date exceed cumulative contract revenue recognized on the contract are reflected as a current liability in our Balance Sheet under the caption “Billings in excess of costs and estimated earnings.” Contracts in progress are as follows (in thousands):
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | December 31, |
​ |  | 2020 |  | 2019 |
Costs incurred on contracts in progress | ​ | $ | 3,103,580 | ​ | $ | 2,518,581 | ​
Estimated earnings, net of losses | ​ |  | 548,435 | ​ |  | 405,891 | ​
Less—Billings to date | ​ |  | (3,813,171) | ​ |  | (3,033,112) | ​
Less—Unbilled accounts receivable | ​ | ​ | (45,596) | ​ | ​ | (55,542) | ​
Less—Unbilled accounts receivable credit allowance | ​ | ​ | (784) | ​ | ​ | — | ​
​ | ​ | $ | (207,536) | ​ | $ | (164,182) | ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
Costs and estimated earnings in excess of billings | ​ | $ | 18,622 | ​ | $ | 2,736 | ​
Plus—Costs and estimated earnings in excess of billings credit allowance | ​ | ​ | 79 | ​ | ​ | — | ​
Billings in excess of costs and estimated earnings | ​ |  | (226,237) | ​ |  | (166,918) | ​
​ | ​ | $ | (207,536) | ​ | $ | (164,182) | ​
​ Accounts receivable include amounts billed to customers under retention or retainage provisions in construction contracts. Such provisions are standard in our industry and usually allow for a small portion of progress billings or the contract price to be withheld by the customer until after we have completed work on the project, typically for a period of six months. Based on our experience with similar contracts in recent years, the majority of our billings for such retention balances at each Balance Sheet date are finalized and collected within the subsequent year. Retention balances at December 31, 2020 and 2019 were $124.1 million and $111.7 million, respectively, and are included in accounts receivable. Accounts payable at December 31, 2020 and 2019 included $22.2 million and $15.8 million of retainage under terms of contracts with subcontractors, respectively. The majority of the retention balances at each Balance Sheet date are finalized and paid within the subsequent year. The percentage of completion method of accounting is also affected by changes in job performance, job conditions, and final contract settlements. These factors may result in revisions to estimated costs and, therefore, revenue. Such revisions are frequently based on further estimates and subjective assessments. The effects of these revisions are recognized in the period in which revisions are determined. When such revisions lead to a conclusion that a loss will be recognized on a contract, the full amount of the estimated ultimate loss is recognized in the period such conclusion is reached, regardless of the percentage of completion of the contract. Revisions to project costs and conditions can give rise to change orders under which there is an agreement between the customer and us that the customer pays an additional or reduced contract price. Revisions can also result in claims we might make against the customer to recover project variances that have not been satisfactorily addressed through change orders with the customer. Except in certain circumstances, we do not recognize revenue or margin based on change orders or claims until they have been agreed upon with the customer. The amount of revenue associated with unapproved change orders and claims was immaterial for the year ended December 31, 2020. Variations from estimated project costs could have a significant impact on our operating results, depending on project size, and the recoverability of the variation via additional customer payments. We typically invoice our customers with payment terms of net due in 30 days. It is common in the construction industry for a contract to specify more lenient payment terms allowing the customer 45 to 60 days to make their payment. It is also common for the contract in the construction industry to specify that a general contractor is not required to submit payments to a subcontractor until it has received those funds from the owner or funding source. In most instances, we receive payment of our invoices between 30 to 90 days of the date of the invoice. A performance obligation is a promise in a contract to transfer a distinct good or service to the customer. A contract’s transaction price is allocated to each distinct performance obligation and recognized as revenue when, or as, the performance obligation is satisfied. To determine the proper revenue recognition method for contracts, we evaluate whether two or more contracts should be combined and accounted for as one performance obligation and whether the combined or single contract should be accounted for as more than one performance obligation. This evaluation requires significant judgment and the decision to combine a group of contracts or separate the combined or single contract into multiple performance obligations could change the amount of revenue and profit recorded in a given period. For most of our contracts, the customer contracts with us to provide a significant service of integrating a complex set of tasks and components into a single project or capability (even if that single project results in the delivery of multiple units). Hence, the entire contract is accounted for as one performance obligation. Less commonly, however, we may promise to provide distinct goods or services within a contract, in which case we separate the contract into more than one performance obligation. If a contract is separated into more than one performance obligation, we allocate the total transaction price to each performance obligation in an amount based on the estimated relative standalone selling prices of the promised goods or services underlying each performance obligation. We infrequently sell standard products with observable standalone sales. In such cases, the observable standalone sales are used to determine the standalone selling price. More frequently, we sell a customized, customer-specific solution, and, in these cases, we typically use the expected cost plus a margin approach to estimate the standalone selling price of each performance obligation. ​ We recognize revenue over time for all of our services as we perform them because (i) control continuously transfers to that customer as work progresses, and (ii) we have the right to bill the customer as costs are incurred. The customer typically controls the work in process, as evidenced either by contractual termination clauses or by our rights to payment for work performed to date plus a reasonable profit to deliver products or services that do not have an alternative use to the Company. For the reasons listed above, revenue is recognized based on the extent of progress towards completion of the performance obligation. The selection of the method to measure progress towards completion requires judgment and is based on the nature of the products or services to be provided. We generally use the cost to cost measure of progress for our contracts, as it best depicts the transfer of assets to the customer that occurs as we incur costs on our contracts. Under the cost to cost measure of progress, the extent of progress towards completion is measured based on the ratio of costs incurred to date to the total estimated costs at completion of the performance obligation. Revenue, including estimated fees or profits, is recorded proportionally as costs are incurred. Costs to fulfill include labor, materials and subcontractors’ costs, other direct costs and an allocation of indirect costs. In our mechanical segment, for a small portion of our business in which our services are delivered in the form of service maintenance agreements for existing systems to be repaired and maintained, as opposed to constructed, our performance obligation is to maintain the customer’s mechanical system for a specific period of time. Similar to jobs, we recognize revenue over time; however, for service maintenance agreements in which the full cost to provide services may not be known, we generally use an input method to recognize revenue, which is based on the amount of time we have provided our services out of the total time we have been contracted to perform those services. Due to the nature of the work required to be performed on many of our performance obligations, the estimation of total revenue and cost at completion (the process described below in more detail) is complex, subject to many variables and requires significant judgment. The consideration to which we are entitled on our long-term contracts may include both fixed and variable amounts. Variable amounts can either increase or decrease the transaction price. A common example of variable amounts that can either increase or decrease contract value are pending change orders that represent contract modifications for which a change in scope has been authorized or acknowledged by our customer, but the final adjustment to contract price is yet to be negotiated. Other examples of positive variable revenue include amounts awarded upon achievement of certain performance metrics, program milestones or cost of completion date targets and can be based upon customer discretion. Variable amounts can result in a deduction from contract revenue if we fail to meet stated performance requirements, such as complying with the construction schedule. Contracts are often modified to account for changes in contract specifications and requirements. We consider contract modifications to exist when the modification either creates new or changes the existing enforceable rights and obligations. Most of our contract modifications are for goods or services that are not distinct from the existing performance obligation(s). The effect of a contract modification on the transaction price, and our measure of progress for the performance obligation to which it relates, is recognized as an adjustment to revenue (either as an increase or decrease) on a cumulative catchup basis. We have a Company-wide policy requiring periodic review of the Estimate at Completion in which management reviews the progress and execution of our performance obligations and estimated remaining obligations. As part of this process, management reviews information including, but not limited to, any outstanding key contract matters, progress towards completion and the related program schedule, identified risks and opportunities and the related changes in estimates of revenue and costs. The risks and opportunities include management's judgment about the ability and cost to achieve the schedule (e.g., the number and type of milestone events), technical requirements (e.g., a newly developed product versus a mature product) and other contract requirements. Management must make assumptions and estimates regarding labor productivity and availability, the complexity of the work to be performed, the availability of materials, the length of time to complete the performance obligation (e.g., to estimate increases in wages and prices for materials and related support cost allocations), execution by our subcontractors, the availability and timing of funding from our customer, and overhead cost rates, among other variables. Based on this analysis, any adjustments to revenue, cost of services, and the related impact to operating income are recognized as necessary in the quarter when they become known. These adjustments may result from positive program performance if we determine we will be successful in mitigating risks surrounding the technical, schedule and cost aspects of those performance obligations or realizing related opportunities and may result in an increase in operating income during the performance of individual performance obligations. Likewise, if we determine we will not be successful in mitigating these risks or realizing related opportunities, these adjustments may result in a decrease in operating income. Changes in estimates of revenue, cost of services and the related impact to operating income are recognized quarterly on a cumulative catchup basis, meaning we recognize in the current period the cumulative effect of the changes on current and prior periods based on a performance obligation's percentage of completion. A significant change in one or more of these estimates could affect the profitability of one or more of our performance obligations. For projects in which estimates of total costs to be incurred on a performance obligation exceed total estimates of revenue to be earned, a provision for the entire loss on the performance obligation is recognized in the period the loss is determined. The Company typically does not incur any returns, refunds, or similar obligations after the completion of the performance obligation since any deficiencies are corrected during the course of the work or are included as a modification to revenue. The Company does offer an industry standard warranty on our work, which is most commonly for a one-year period. The vendors providing the equipment and materials are responsible for any failures in their product unless installed incorrectly. We include an estimated amount to cover estimated warranty expense in our Cost of Services and record a liability on our Balance Sheet to cover our current estimated outstanding warranty obligations. During the years ended December 31, 2020 and December 31, 2019, net revenue recognized from our performance obligations satisfied in previous periods was not material. ​ Disaggregation of Revenue Our consolidated 2020 revenue was derived from contracts to provide service activities in the mechanical and electrical services segments we serve. Refer to Note 16 “Segment Information” for additional information on our reportable segments. We disaggregate our revenue from contracts with customers by activity, customer type and service provided, as we believe it best depicts how the nature, amount, timing and uncertainty of our revenue and cash flows are affected by economic factors. See details in the following tables (dollars in thousands): ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | ​ | Year Ended December 31, | ​
Revenue by Service Provided |  |  | 2020 | ​ |  | 2019 | ​ | ​ | 2018 | ​
Mechanical Services | ​ | ​ | $ | 2,413,016 |  | 84.5 | % | ​ | $ | 2,251,560 |  | 86.1 | % | ​ | $ | 2,176,223 | ​ | 99.7 | %
Electrical Services | ​ | ​ | ​ | 443,643 | ​ | 15.5 | % | ​ | ​ | 363,717 | ​ | 13.9 | % | ​ | ​ | 6,656 | ​ | 0.3 | %
Total | ​ | ​ | $ | 2,856,659 | ​ | 100.0 | % | ​ | $ | 2,615,277 | ​ | 100.0 | % | ​ | $ | 2,182,879 | ​ | 100.0 | %
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | ​ | Year Ended December 31, | ​
Revenue by Type of Customer | ​ | ​ | 2020 | ​ | ​ | 2019 |  | ​ | 2018 |
Industrial | ​ | ​ | $ | 1,112,075 | ​ | 38.9 | % | ​ | $ | 886,668 | ​ | 33.9 | % | ​ | $ | 596,557 | ​ | 27.3 | %
Education | ​ | ​ | ​ | 487,922 | ​ | 17.1 | % | ​ | ​ | 412,318 | ​ | 15.8 | % | ​ | ​ | 391,937 | ​ | 18.0 | %
Office Buildings | ​ | ​ | ​ | 319,426 | ​ | 11.2 | % | ​ | ​ | 348,640 | ​ | 13.3 | % | ​ | ​ | 288,090 | ​ | 13.2 | %
Healthcare | ​ | ​ | ​ | 371,105 | ​ | 13.0 | % | ​ | ​ | 358,155 | ​ | 13.7 | % | ​ | ​ | 319,958 | ​ | 14.7 | %
Government | ​ | ​ | ​ | 163,717 | ​ | 5.7 | % | ​ | ​ | 162,507 | ​ | 6.2 | % | ​ | ​ | 143,958 | ​ | 6.6 | %
Retail, Restaurants and Entertainment | ​ | ​ | ​ | 239,541 | ​ | 8.4 | % | ​ | ​ | 248,083 | ​ | 9.5 | % | ​ | ​ | 225,348 | ​ | 10.3 | %
Multi-Family and Residential | ​ | ​ | ​ | 86,799 | ​ | 3.0 | % | ​ | ​ | 104,693 | ​ | 4.0 | % | ​ | ​ | 136,075 | ​ | 6.2 | %
Other | ​ | ​ | ​ | 76,074 | ​ | 2.7 | % | ​ | ​ | 94,213 | ​ | 3.6 | % | ​ | ​ | 80,956 | ​ | 3.7 | %
Total | ​ | ​ | $ | 2,856,659 | ​ | 100.0 | % | ​ | $ | 2,615,277 | ​ | 100.0 | % | ​ | $ | 2,182,879 | ​ | 100.0 | %
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | ​ | ​ | Year Ended December 31, | ​
Revenue by Activity Type | ​ | ​ | 2020 | ​ | ​ | 2019 |  | ​ | 2018 | ​
New Construction | ​ | ​ | $ | 1,333,739 | ​ | 46.7 | % | ​ | $ | 1,201,122 | ​ | 45.9 | % | ​ | $ | 829,978 | ​ | 38.0 | %
Existing Building Construction | ​ | ​ | ​ | 910,807 | ​ | 31.9 | % | ​ | ​ | 793,159 | ​ | 30.3 | % | ​ | ​ | 796,946 | ​ | 36.5 | %
Service Projects | ​ | ​ | ​ | 241,402 | ​ | 8.4 | % | ​ | ​ | 231,228 | ​ | 8.9 | % | ​ | ​ | 206,506 | ​ | 9.5 | %
Service Calls, Maintenance and Monitoring | ​ | ​ | ​ | 370,711 | ​ | 13.0 | % | ​ | ​ | 389,768 | ​ | 14.9 | % | ​ | ​ | 349,449 | ​ | 16.0 | %
Total | ​ | ​ | $ | 2,856,659 | ​ | 100.0 | % | ​ | $ | 2,615,277 | ​ | 100.0 | % | ​ | $ | 2,182,879 | ​ | 100.0 | %
​ Contract Assets and Liabilities ​ Contract assets include unbilled amounts typically resulting from sales under long term contracts when the cost to cost method of revenue recognition is used, revenue recognized exceeds the amount billed to the customer and right to payment is conditional, subject to completing a milestone, such as a phase of the project. Contract assets are generally classified as current. ​ Contract liabilities consist of advance payments and billings in excess of revenue recognized. Our contract assets and liabilities are reported in a net position on a contract by contract basis at the end of each reporting period. We classify advance payments and billings in excess of revenue recognized as current. It is very unusual for us to have advanced payments with a term of greater than one year; therefore, our contract assets and liabilities are usually all current. If we have advanced payments with a term greater than one year, the noncurrent portion of advanced payments would be included in other long-term liabilities in our consolidated Balance Sheets. ​ The following table presents the changes in contract assets and contract liabilities (in thousands): ​
​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​ | ​
​ | Year Ended December 31, | ​ | ​ | Year Ended December 31,
​ | 2020 | ​ | 2019
​ | Contract |  | Contract | ​ | Contract |  | Contract
​ | Assets | ​ | Liabilities | ​ | Assets | ​ | Liabilities
Balance at beginning of period | $ | 2,736 | ​ | $ | 166,918 | ​ | $ | 10,213 | ​ | $ | 130,986
Change due to acquisitions / disposals | ​ | 9,509 | ​ | ​ | 39,885 | ​ | ​ | 6,573 | ​ | ​ | 31,556
Change related to credit allowance | ​ | (79) | ​ | ​ | — | ​ | ​ | — | ​ | ​ | —
Other changes in the period | ​ | 6,456 | ​ | ​ | 19,434 | ​ | ​ | (14,050) | ​ | ​ | 4,376
Balance at end of period | $ | 18,622 | ​ | $ | 226,237 | ​ | $ | 2,736 |  | $ | 166,918
​ During the years ended December 31, 2020 and 2019, we recognized revenue of $165.8 million and $126.7 million related to our contract liabilities at January 1, 2020 and January 1, 2019, respectively. ​ We did not have any impairment losses recognized on our receivables or contract assets in 2020 and 2019. ​ Remaining Performance Obligations ​ Remaining construction performance obligations represent the remaining transaction price of firm orders for which work has not been performed and exclude unexercised contract options. As of December 31, 2020, the aggregate amount of the transaction price allocated to remaining performance obligations was $1.51 billion. The Company expects to recognize revenue on approximately 80-85% of the remaining performance obligations over the next 12 months, with the remaining recognized thereafter. Our service maintenance agreements are generally one-year renewable agreements. We have adopted the practical expedient that allows us to not include service maintenance contracts with a term of less than one year; therefore, we do not report unfulfilled performance obligations for service maintenance agreements.

X
- References No definition available. + Details
Name: | us-gaap_RevenueFromContractWithCustomerAbstract
Namespace Prefix: | us-gaap_
Data Type: | xbrli:stringItemType
Balance Type: | na
Period Type: | duration

X
- Definition The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts. + References Reference 1: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -URI http://asc.fasb.org/topic&trid=49130388 Reference 2: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 50 -Paragraph 10 -URI http://asc.fasb.org/extlink&oid=121604090&loc=SL49130551-203045 Reference 3: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 50 -Paragraph 13 -Subparagraph (b)(2) -URI http://asc.fasb.org/extlink&oid=121604090&loc=SL49130556-203045 Reference 4: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 50 -Paragraph 12 -Subparagraph (b) -URI http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045 Reference 5: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 50 -Paragraph 9 -URI http://asc.fasb.org/extlink&oid=121604090&loc=SL49130550-203045 Reference 6: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 50 -Paragraph 12 -Subparagraph (e) -URI http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045 Reference 7: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 50 -Paragraph 12 -Subparagraph (a) -URI http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045 Reference 8: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 50 -Paragraph 12 -Subparagraph (d) -URI http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045 Reference 9: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 50 -Paragraph 15 -URI http://asc.fasb.org/extlink&oid=121604090&loc=SL49130558-203045 Reference 10: http://www.xbrl.org/2003/role/disclosureRef -Publisher FASB -Name Accounting Standards Codification -Topic 606 -SubTopic 10 -Section 50 -Paragraph 12 -Subparagraph (c) -URI http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045 + Details
Name: | us-gaap_RevenueFromContractWithCustomerTextBlock
Namespace Prefix: | us-gaap_
Data Type: | nonnum:textBlockItemType
Balance Type: | na
Period Type: | duration