Draft dQM CMS Content Implementation Guide
2025.1.0 - CI Build

Draft dQM CMS Content Implementation Guide, published by cqframework. This guide is not an authorized publication; it is the continuous build for version 2025.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/cqframework/dqm-content-cms-2025/ and changes regularly. See the Directory of published versions

: CMS159FHIRDepRemissionat12Months - XML Representation

Draft as of 2026-09-19

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="CMS159FHIRDepRemissionat12Months"/>
  <text>
    <status value="extensions"/>
    <div xmlns="http://www.w3.org/1999/xhtml">
  <table class="narrative-table">
    <tbody>
<tr>


<th colspan="2" scope="row" class="row-header"><a name="metadata"> </a>Metadata</th>


</tr>







<tr>


<th scope="row" class="row-header">Version</th>



<td class="content-container">1.1.000</td>


</tr>
















<tr>


<th scope="row" class="row-header">Status</th>



<td class="content-container">Draft</td>


</tr>







































<tr>


<th scope="row" class="row-header">Type</th>



<td class="content-container">
    <a href="http://terminology.hl7.org/7.1.0/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a>#logic-library


</td>


</tr>













<tr>


<th colspan="2" scope="row" class="row-header"><a name="parameters"> </a>Parameters</th>


</tr>


<tr>


<th scope="row" class="row-header">Parameter</th>



<td class="content-container">None</td>


</tr>








  <tr>


<th colspan="2" scope="row" class="row-header">Library Content</th>


</tr>
  
    
    <tr>
      <th scope="row" class="row-header">CQL Content</th>
      <td>
        <a name="cql-content"> </a>
        <pre style="border: none;" class="content-container highlight language-cql"><code class="language-cql">/*
NOTE: For use by March 2026 US Realm Connectathon participants for internal use only. Not for use or distribution in commercial products.
*/
library CMS159FHIRDepRemissionat12Months version '1.1.000'

using USQualityCore version '0.1.0-cibuild'
using USCore version '6.1.0-derived'
using FHIR version '4.0.1'

include hl7.fhir.uv.cql.FHIRHelpers version '4.0.1' called FHIRHelpers
include hl7.fhir.uv.cql.FHIRCommon version '2.0.0' called FHIRCommon
include hl7.fhir.us.cql.USCoreCommon version '2.0.0-ballot' called USCoreCommon
include hl7.fhir.us.cql.USCoreElements version '2.0.0-ballot' called USCoreElements

include CQMCommon version '5.1.000' called CQMCommon
include USQualityCoreCommon version '0.1.0-cibuild' called USQualityCoreCommon
include SupplementalDataElements version '6.1.000' called SDE
include Status version '2.1.000' called Status

codesystem &quot;LOINC&quot;: 'http://loinc.org'
codesystem &quot;SNOMEDCT&quot;: 'http://snomed.info/sct'
codesystem &quot;ConditionVerificationStatusCodes&quot;: 'http://terminology.hl7.org/CodeSystem/condition-ver-status'

valueset &quot;Bipolar Disorder&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.67.1.101.1.128'
valueset &quot;Contact or Office Visit&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1080.5'
valueset &quot;Dysthymia&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.67.1.101.1.254'
valueset &quot;Encounter Inpatient&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307'
valueset &quot;Hospice Care Ambulatory&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1584'
valueset &quot;Hospice Diagnosis&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1165'
valueset &quot;Hospice Encounter&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1003'
valueset &quot;Major Depression Including Remission&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.113883.3.67.1.101.3.2444'
valueset &quot;Palliative Care Diagnosis&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1167'
valueset &quot;Palliative Care Encounter&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1090'
valueset &quot;Palliative Care Intervention&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1135'
valueset &quot;Palliative or Hospice Care&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.600.1.1579'
valueset &quot;Personality Disorder Emotionally Labile&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.67.1.101.1.246'
valueset &quot;Pervasive Developmental Disorder&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1152'
valueset &quot;PHQ 9 and PHQ 9M Tools&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.67.1.101.1.263'
valueset &quot;Schizophrenia or Psychotic Disorder&quot;: 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1104'

code &quot;Discharge to healthcare facility for hospice care (procedure)&quot;: '428371000124100' from &quot;SNOMEDCT&quot; display 'Discharge to healthcare facility for hospice care (procedure)'
code &quot;Discharge to home for hospice care (procedure)&quot;: '428361000124107' from &quot;SNOMEDCT&quot; display 'Discharge to home for hospice care (procedure)'
code &quot;Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)&quot;: '71007-9' from &quot;LOINC&quot; display 'Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)'
code &quot;Hospice care [Minimum Data Set]&quot;: '45755-6' from &quot;LOINC&quot; display 'Hospice care [Minimum Data Set]'
code &quot;Yes (qualifier value)&quot;: '373066001' from &quot;SNOMEDCT&quot; display 'Yes (qualifier value)'

parameter &quot;Measurement Period&quot; Interval&lt;DateTime&gt;
  default Interval[@2026-01-01T00:00:00.000Z, @2027-01-01T00:00:00.000Z)

context Patient

define &quot;Initial Population&quot;:
  AgeInYearsAt(date from start of(&quot;Index Depression Assessment&quot;.effective.toInterval())) &gt;= 12

define &quot;Denominator&quot;:
  &quot;Initial Population&quot;

define &quot;Denominator Exclusions&quot;:
  &quot;Has Hospice Services prior to or during the Measure Assessment Period&quot;
    or &quot;Has Palliative Care prior to or during the Measure Assessment Period&quot;
    or &quot;Patient Expired&quot;
    or &quot;Has Mental Health Disorder Diagnoses&quot;

define &quot;Numerator&quot;:
  Last([ObservationScreeningAssessment: &quot;PHQ 9 and PHQ 9M Tools&quot;] DepressionAssessment
      where start of DepressionAssessment.effective.toInterval() during day of &quot;Measure Assessment Period&quot;
        and DepressionAssessment.status in { 'final', 'amended', 'corrected' }
      sort by start of effective.toInterval()
  ).value &lt; 5

define &quot;SDE Ethnicity&quot;:
  SDE.&quot;SDE Ethnicity&quot;

define &quot;SDE Payer&quot;:
  SDE.&quot;SDE Payer&quot;

define &quot;SDE Race&quot;:
  SDE.&quot;SDE Race&quot;

define &quot;SDE Sex&quot;:
  SDE.&quot;SDE Sex&quot;

define &quot;Denominator Identification Period&quot;:
  Interval[start of &quot;Measurement Period&quot; - 14 months, start of &quot;Measurement Period&quot; - 2 months )

define &quot;Depression Assessments Greater Than 9&quot;:
  [ObservationScreeningAssessment: &quot;PHQ 9 and PHQ 9M Tools&quot;] DepressionAssessment
    where DepressionAssessment.value &gt; 9
      and DepressionAssessment.status in { 'final', 'amended', 'corrected' }

define &quot;Depression Diagnoses&quot;:
  // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)
  // Original:
  // ( [ConditionProblemsHealthConcerns: &quot;Major Depression Including Remission&quot;]
  //   union [ConditionEncounterDiagnosis: &quot;Major Depression Including Remission&quot;]
  //   union [ConditionProblemsHealthConcerns: &quot;Dysthymia&quot;]
  //   union [ConditionEncounterDiagnosis: &quot;Dysthymia&quot;] ) Depression
  ( [Condition: &quot;Major Depression Including Remission&quot;]
    union [Condition: &quot;Dysthymia&quot;] ) Depression
    where Depression.isVerified ( )

define &quot;Depression Encounter&quot;:
  [Encounter: &quot;Contact or Office Visit&quot;] ValidEncounter
    with &quot;Depression Diagnoses&quot; Depression
      such that ValidEncounter.period overlaps Depression.prevalenceInterval ( )
        and ValidEncounter.period ends during day of &quot;Denominator Identification Period&quot;
        and ValidEncounter.status = 'finished'

define &quot;Has Mental Health Disorder Diagnoses&quot;:
  // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)
  // Original:
  // exists ( ( [ConditionProblemsHealthConcerns: &quot;Bipolar Disorder&quot;]
  //     union [ConditionEncounterDiagnosis: &quot;Bipolar Disorder&quot;]
  //     union [ConditionProblemsHealthConcerns: &quot;Personality Disorder Emotionally Labile&quot;]
  //     union [ConditionEncounterDiagnosis: &quot;Personality Disorder Emotionally Labile&quot;]
  //     union [ConditionProblemsHealthConcerns: &quot;Schizophrenia or Psychotic Disorder&quot;]
  //     union [ConditionEncounterDiagnosis: &quot;Schizophrenia or Psychotic Disorder&quot;]
  //     union [ConditionProblemsHealthConcerns: &quot;Pervasive Developmental Disorder&quot;]
  //     union [ConditionEncounterDiagnosis: &quot;Pervasive Developmental Disorder&quot;] ) MentalHealthDisorderDiagnoses
  exists ( ( [Condition: &quot;Bipolar Disorder&quot;]
      union [Condition: &quot;Personality Disorder Emotionally Labile&quot;]
      union [Condition: &quot;Schizophrenia or Psychotic Disorder&quot;]
      union [Condition: &quot;Pervasive Developmental Disorder&quot;] ) MentalHealthDisorderDiagnoses
      where start of MentalHealthDisorderDiagnoses.prevalenceInterval ( ) on or before day of end of &quot;Measure Assessment Period&quot;
        and MentalHealthDisorderDiagnoses.isVerified ( )
  )

define &quot;Measure Assessment Period&quot;:
  &quot;Index Depression Assessment&quot; FirstIndexAssessment
    let YearAfterIndexAssessment: date from start of FirstIndexAssessment.effective.toInterval ( ) + 12 months
    return Interval[YearAfterIndexAssessment - 60 days, YearAfterIndexAssessment + 60 days]

define &quot;Patient Expired&quot;:
  Patient.deceased occurs on or before day of end of &quot;Measure Assessment Period&quot;

define &quot;Has Hospice Services prior to or during the Measure Assessment Period&quot;:
  exists ( [Encounter: &quot;Encounter Inpatient&quot;] InpatientEncounter
      where ( InpatientEncounter.hospitalization.dischargeDisposition ~ &quot;Discharge to home for hospice care (procedure)&quot;
          or InpatientEncounter.hospitalization.dischargeDisposition ~ &quot;Discharge to healthcare facility for hospice care (procedure)&quot;
      )
        and InpatientEncounter.period ends during day of Interval[start of &quot;Denominator Identification Period&quot;, end of &quot;Measure Assessment Period&quot;]
        and InpatientEncounter.status = 'finished'
  )
    or exists ( [Encounter: &quot;Hospice Encounter&quot;] HospiceEncounter
        where HospiceEncounter.period overlaps day of Interval[start of &quot;Denominator Identification Period&quot;, end of &quot;Measure Assessment Period&quot;]
          and not ( HospiceEncounter.status in { 'cancelled', 'entered-in-error', 'unknown' } )
    )
    or exists ( [ObservationScreeningAssessment: &quot;Hospice care [Minimum Data Set]&quot;] HospiceAssessment
        where HospiceAssessment.value ~ &quot;Yes (qualifier value)&quot;
          and HospiceAssessment.effective.toInterval ( ) overlaps day of Interval[start of &quot;Denominator Identification Period&quot;, end of &quot;Measure Assessment Period&quot;]
          and HospiceAssessment.status in { 'final', 'amended', 'corrected' }
    )
    or exists ( [ServiceRequest: &quot;Hospice Care Ambulatory&quot;] HospiceOrder
        where HospiceOrder.authoredOn during day of Interval[start of &quot;Denominator Identification Period&quot;, end of &quot;Measure Assessment Period&quot;]
          and HospiceOrder.status in { 'active', 'completed' }
          and HospiceOrder.intent in { 'order', 'original-order', 'reflex-order', 'filler-order', 'instance-order' }
    )
    or exists ( [Procedure: &quot;Hospice Care Ambulatory&quot;] HospicePerformed
        where HospicePerformed.performed.toInterval ( ) overlaps day of Interval[start of &quot;Denominator Identification Period&quot;, end of &quot;Measure Assessment Period&quot;]
          and not ( HospicePerformed.status in { 'not-done', 'entered-in-error', 'unknown' } )
    )
    // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)
    // Original:
    // or exists ( ( [ConditionProblemsHealthConcerns: &quot;Hospice Diagnosis&quot;]
    //     union [ConditionEncounterDiagnosis: &quot;Hospice Diagnosis&quot;] ) HospiceCareDiagnosis
    or exists ( [Condition: &quot;Hospice Diagnosis&quot;]  HospiceCareDiagnosis
        where HospiceCareDiagnosis.prevalenceInterval ( ) overlaps day of Interval[start of &quot;Denominator Identification Period&quot;, end of &quot;Measure Assessment Period&quot;]
          and HospiceCareDiagnosis.isVerified ( )
    )

define &quot;Index Depression Assessment&quot;:
  First(&quot;Depression Assessments Greater Than 9&quot; DepressionAssessment
      with &quot;Depression Encounter&quot; DepressionEncounter
        such that DepressionAssessment.effective.toInterval() during day of Interval[start of DepressionEncounter.period - 7 days, 
        end of DepressionEncounter.period]
      sort by start of effective.toInterval()
  )

define &quot;Has Palliative Care prior to or during the Measure Assessment Period&quot;:
  exists ( [ObservationScreeningAssessment: &quot;Functional Assessment of Chronic Illness Therapy - Palliative Care Questionnaire (FACIT-Pal)&quot;] PalliativeAssessment
      where PalliativeAssessment.effective.toInterval ( ) overlaps day of Interval[start of &quot;Denominator Identification Period&quot;, end of &quot;Measure Assessment Period&quot;]
        and PalliativeAssessment.status in { 'final', 'amended', 'corrected' }
  )
      // [E-13] base FHIR.Condition retrieve (defect-tracking/engine-issues.md E-13)
      // Original:
      // or exists ( ( [ConditionProblemsHealthConcerns: &quot;Palliative Care Diagnosis&quot;]
      //   union [ConditionEncounterDiagnosis: &quot;Palliative Care Diagnosis&quot;] ) PalliativeDiagnosis
      or exists ( [Condition: &quot;Palliative Care Diagnosis&quot;] PalliativeDiagnosis
        where PalliativeDiagnosis.prevalenceInterval ( ) overlaps day of Interval[start of &quot;Denominator Identification Period&quot;, end of &quot;Measure Assessment Period&quot;]
          and PalliativeDiagnosis.isVerified ( )
    )
    or exists ( [Encounter: &quot;Palliative Care Encounter&quot;] PalliativeEncounter
        where PalliativeEncounter.period overlaps day of Interval[start of &quot;Denominator Identification Period&quot;, end of &quot;Measure Assessment Period&quot;]
          and PalliativeEncounter.status = 'finished'
    )
    or exists ( [Procedure: &quot;Palliative Care Intervention&quot;] PalliativeIntervention
        where PalliativeIntervention.performed.toInterval ( ) overlaps day of Interval[start of &quot;Denominator Identification Period&quot;, end of &quot;Measure Assessment Period&quot;]
          and not ( PalliativeIntervention.status in { 'not-done', 'entered-in-error', 'unknown' } )
    )

define fluent function isVerified(condition Choice&lt;ConditionEncounterDiagnosis, ConditionProblemsHealthConcerns&gt;):
  condition.verificationStatus is not null implies ( condition.verificationStatus ~ Status.&quot;confirmed&quot;
      or condition.verificationStatus ~ Status.&quot;unconfirmed&quot;
      or condition.verificationStatus ~ Status.&quot;provisional&quot;
      or condition.verificationStatus ~ Status.&quot;differential&quot;
  )

define &quot;Stratification 1&quot;:
  &quot;Index Depression Assessment&quot; IndexAssessment
    return AgeInYearsAt(date from start of IndexAssessment.effective.toInterval()) in Interval[12, 17]

define &quot;Stratification 2&quot;:
  &quot;Index Depression Assessment&quot; IndexAssessment
    return AgeInYearsAt(date from start of IndexAssessment.effective.toInterval()) &gt;= 18</code></pre>
      </td>
    </tr>
    
  



<tr>
  <th colspan="2" scope="row" class="row-header">Generated using version 0.5.6 of the sample-content-ig Liquid templates</th>
</tr>

    </tbody>
  </table>
</div>
  </text>
  <extension
             url="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-softwaresystem">
    <valueReference>
      <reference value="Device/cqf-tooling"/>
    </valueReference>
  </extension>
  <url
       value="https://madie.cms.gov/Library/CMS159FHIRDepRemissionat12Months"/>
  <version value="1.1.000"/>
  <name value="CMS159FHIRDepRemissionat12Months"/>
  <status value="draft"/>
  <type>
    <coding>
      <system value="http://terminology.hl7.org/CodeSystem/library-type"/>
      <code value="logic-library"/>
    </coding>
  </type>
  <date value="2026-09-19T16:31:14+00:00"/>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyoKTk9URTogRm9yIHVzZSBieSBNYXJjaCAyMDI2IFVTIFJlYWxtIENvbm5lY3RhdGhvbiBwYXJ0aWNpcGFudHMgZm9yIGludGVybmFsIHVzZSBvbmx5LiBOb3QgZm9yIHVzZSBvciBkaXN0cmlidXRpb24gaW4gY29tbWVyY2lhbCBwcm9kdWN0cy4KKi8KbGlicmFyeSBDTVMxNTlGSElSRGVwUmVtaXNzaW9uYXQxMk1vbnRocyB2ZXJzaW9uICcxLjEuMDAwJwoKdXNpbmcgVVNRdWFsaXR5Q29yZSB2ZXJzaW9uICcwLjEuMC1jaWJ1aWxkJwp1c2luZyBVU0NvcmUgdmVyc2lvbiAnNi4xLjAtZGVyaXZlZCcKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgaGw3LmZoaXIudXYuY3FsLkZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJyBjYWxsZWQgRkhJUkhlbHBlcnMKaW5jbHVkZSBobDcuZmhpci51di5jcWwuRkhJUkNvbW1vbiB2ZXJzaW9uICcyLjAuMCcgY2FsbGVkIEZISVJDb21tb24KaW5jbHVkZSBobDcuZmhpci51cy5jcWwuVVNDb3JlQ29tbW9uIHZlcnNpb24gJzIuMC4wLWJhbGxvdCcgY2FsbGVkIFVTQ29yZUNvbW1vbgppbmNsdWRlIGhsNy5maGlyLnVzLmNxbC5VU0NvcmVFbGVtZW50cyB2ZXJzaW9uICcyLjAuMC1iYWxsb3QnIGNhbGxlZCBVU0NvcmVFbGVtZW50cwoKaW5jbHVkZSBDUU1Db21tb24gdmVyc2lvbiAnNS4xLjAwMCcgY2FsbGVkIENRTUNvbW1vbgppbmNsdWRlIFVTUXVhbGl0eUNvcmVDb21tb24gdmVyc2lvbiAnMC4xLjAtY2lidWlsZCcgY2FsbGVkIFVTUXVhbGl0eUNvcmVDb21tb24KaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHMgdmVyc2lvbiAnNi4xLjAwMCcgY2FsbGVkIFNERQppbmNsdWRlIFN0YXR1cyB2ZXJzaW9uICcyLjEuMDAwJyBjYWxsZWQgU3RhdHVzCgpjb2Rlc3lzdGVtICJMT0lOQyI6ICdodHRwOi8vbG9pbmMub3JnJwpjb2Rlc3lzdGVtICJTTk9NRURDVCI6ICdodHRwOi8vc25vbWVkLmluZm8vc2N0Jwpjb2Rlc3lzdGVtICJDb25kaXRpb25WZXJpZmljYXRpb25TdGF0dXNDb2RlcyI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL2NvbmRpdGlvbi12ZXItc3RhdHVzJwoKdmFsdWVzZXQgIkJpcG9sYXIgRGlzb3JkZXIiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNjcuMS4xMDEuMS4xMjgnCnZhbHVlc2V0ICJDb250YWN0IG9yIE9mZmljZSBWaXNpdCI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM3NjIuMS40LjEwODAuNScKdmFsdWVzZXQgIkR5c3RoeW1pYSI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy42Ny4xLjEwMS4xLjI1NCcKdmFsdWVzZXQgIkVuY291bnRlciBJbnBhdGllbnQiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNjY2LjUuMzA3Jwp2YWx1ZXNldCAiSG9zcGljZSBDYXJlIEFtYnVsYXRvcnkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNTI2LjMuMTU4NCcKdmFsdWVzZXQgIkhvc3BpY2UgRGlhZ25vc2lzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExNjUnCnZhbHVlc2V0ICJIb3NwaWNlIEVuY291bnRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDAzJwp2YWx1ZXNldCAiTWFqb3IgRGVwcmVzc2lvbiBJbmNsdWRpbmcgUmVtaXNzaW9uIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xMTM4ODMuMy42Ny4xLjEwMS4zLjI0NDQnCnZhbHVlc2V0ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjExNjcnCnZhbHVlc2V0ICJQYWxsaWF0aXZlIENhcmUgRW5jb3VudGVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjQ2NC4xMDAzLjEwMS4xMi4xMDkwJwp2YWx1ZXNldCAiUGFsbGlhdGl2ZSBDYXJlIEludGVydmVudGlvbiI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xOTguMTIuMTEzNScKdmFsdWVzZXQgIlBhbGxpYXRpdmUgb3IgSG9zcGljZSBDYXJlIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjYwMC4xLjE1NzknCnZhbHVlc2V0ICJQZXJzb25hbGl0eSBEaXNvcmRlciBFbW90aW9uYWxseSBMYWJpbGUiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNjcuMS4xMDEuMS4yNDYnCnZhbHVlc2V0ICJQZXJ2YXNpdmUgRGV2ZWxvcG1lbnRhbCBEaXNvcmRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDUuMTIuMTE1MicKdmFsdWVzZXQgIlBIUSA5IGFuZCBQSFEgOU0gVG9vbHMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuNjcuMS4xMDEuMS4yNjMnCnZhbHVlc2V0ICJTY2hpem9waHJlbmlhIG9yIFBzeWNob3RpYyBEaXNvcmRlciI6ICdodHRwOi8vY3RzLm5sbS5uaWguZ292L2ZoaXIvVmFsdWVTZXQvMi4xNi44NDAuMS4xMTM4ODMuMy40NjQuMTAwMy4xMDUuMTIuMTEwNCcKCmNvZGUgIkRpc2NoYXJnZSB0byBoZWFsdGhjYXJlIGZhY2lsaXR5IGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiOiAnNDI4MzcxMDAwMTI0MTAwJyBmcm9tICJTTk9NRURDVCIgZGlzcGxheSAnRGlzY2hhcmdlIHRvIGhlYWx0aGNhcmUgZmFjaWxpdHkgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKScKY29kZSAiRGlzY2hhcmdlIHRvIGhvbWUgZm9yIGhvc3BpY2UgY2FyZSAocHJvY2VkdXJlKSI6ICc0MjgzNjEwMDAxMjQxMDcnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdEaXNjaGFyZ2UgdG8gaG9tZSBmb3IgaG9zcGljZSBjYXJlIChwcm9jZWR1cmUpJwpjb2RlICJGdW5jdGlvbmFsIEFzc2Vzc21lbnQgb2YgQ2hyb25pYyBJbGxuZXNzIFRoZXJhcHkgLSBQYWxsaWF0aXZlIENhcmUgUXVlc3Rpb25uYWlyZSAoRkFDSVQtUGFsKSI6ICc3MTAwNy05JyBmcm9tICJMT0lOQyIgZGlzcGxheSAnRnVuY3Rpb25hbCBBc3Nlc3NtZW50IG9mIENocm9uaWMgSWxsbmVzcyBUaGVyYXB5IC0gUGFsbGlhdGl2ZSBDYXJlIFF1ZXN0aW9ubmFpcmUgKEZBQ0lULVBhbCknCmNvZGUgIkhvc3BpY2UgY2FyZSBbTWluaW11bSBEYXRhIFNldF0iOiAnNDU3NTUtNicgZnJvbSAiTE9JTkMiIGRpc3BsYXkgJ0hvc3BpY2UgY2FyZSBbTWluaW11bSBEYXRhIFNldF0nCmNvZGUgIlllcyAocXVhbGlmaWVyIHZhbHVlKSI6ICczNzMwNjYwMDEnIGZyb20gIlNOT01FRENUIiBkaXNwbGF5ICdZZXMgKHF1YWxpZmllciB2YWx1ZSknCgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZVRpbWU+CiAgZGVmYXVsdCBJbnRlcnZhbFtAMjAyNi0wMS0wMVQwMDowMDowMC4wMDBaLCBAMjAyNy0wMS0wMVQwMDowMDowMC4wMDBaKQoKY29udGV4dCBQYXRpZW50CgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSBzdGFydCBvZigiSW5kZXggRGVwcmVzc2lvbiBBc3Nlc3NtZW50Ii5lZmZlY3RpdmUudG9JbnRlcnZhbCgpKSkgPj0gMTIKCmRlZmluZSAiRGVub21pbmF0b3IiOgogICJJbml0aWFsIFBvcHVsYXRpb24iCgpkZWZpbmUgIkRlbm9taW5hdG9yIEV4Y2x1c2lvbnMiOgogICJIYXMgSG9zcGljZSBTZXJ2aWNlcyBwcmlvciB0byBvciBkdXJpbmcgdGhlIE1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiCiAgICBvciAiSGFzIFBhbGxpYXRpdmUgQ2FyZSBwcmlvciB0byBvciBkdXJpbmcgdGhlIE1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiCiAgICBvciAiUGF0aWVudCBFeHBpcmVkIgogICAgb3IgIkhhcyBNZW50YWwgSGVhbHRoIERpc29yZGVyIERpYWdub3NlcyIKCmRlZmluZSAiTnVtZXJhdG9yIjoKICBMYXN0KFtPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQ6ICJQSFEgOSBhbmQgUEhRIDlNIFRvb2xzIl0gRGVwcmVzc2lvbkFzc2Vzc21lbnQKICAgICAgd2hlcmUgc3RhcnQgb2YgRGVwcmVzc2lvbkFzc2Vzc21lbnQuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSBkdXJpbmcgZGF5IG9mICJNZWFzdXJlIEFzc2Vzc21lbnQgUGVyaW9kIgogICAgICAgIGFuZCBEZXByZXNzaW9uQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICAgc29ydCBieSBzdGFydCBvZiBlZmZlY3RpdmUudG9JbnRlcnZhbCgpCiAgKS52YWx1ZSA8IDUKCmRlZmluZSAiU0RFIEV0aG5pY2l0eSI6CiAgU0RFLiJTREUgRXRobmljaXR5IgoKZGVmaW5lICJTREUgUGF5ZXIiOgogIFNERS4iU0RFIFBheWVyIgoKZGVmaW5lICJTREUgUmFjZSI6CiAgU0RFLiJTREUgUmFjZSIKCmRlZmluZSAiU0RFIFNleCI6CiAgU0RFLiJTREUgU2V4IgoKZGVmaW5lICJEZW5vbWluYXRvciBJZGVudGlmaWNhdGlvbiBQZXJpb2QiOgogIEludGVydmFsW3N0YXJ0IG9mICJNZWFzdXJlbWVudCBQZXJpb2QiIC0gMTQgbW9udGhzLCBzdGFydCBvZiAiTWVhc3VyZW1lbnQgUGVyaW9kIiAtIDIgbW9udGhzICkKCmRlZmluZSAiRGVwcmVzc2lvbiBBc3Nlc3NtZW50cyBHcmVhdGVyIFRoYW4gOSI6CiAgW09ic2VydmF0aW9uU2NyZWVuaW5nQXNzZXNzbWVudDogIlBIUSA5IGFuZCBQSFEgOU0gVG9vbHMiXSBEZXByZXNzaW9uQXNzZXNzbWVudAogICAgd2hlcmUgRGVwcmVzc2lvbkFzc2Vzc21lbnQudmFsdWUgPiA5CiAgICAgIGFuZCBEZXByZXNzaW9uQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KCmRlZmluZSAiRGVwcmVzc2lvbiBEaWFnbm9zZXMiOgogIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKQogIC8vIE9yaWdpbmFsOgogIC8vICggW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJNYWpvciBEZXByZXNzaW9uIEluY2x1ZGluZyBSZW1pc3Npb24iXQogIC8vICAgdW5pb24gW0NvbmRpdGlvbkVuY291bnRlckRpYWdub3NpczogIk1ham9yIERlcHJlc3Npb24gSW5jbHVkaW5nIFJlbWlzc2lvbiJdCiAgLy8gICB1bmlvbiBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIkR5c3RoeW1pYSJdCiAgLy8gICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiRHlzdGh5bWlhIl0gKSBEZXByZXNzaW9uCiAgKCBbQ29uZGl0aW9uOiAiTWFqb3IgRGVwcmVzc2lvbiBJbmNsdWRpbmcgUmVtaXNzaW9uIl0KICAgIHVuaW9uIFtDb25kaXRpb246ICJEeXN0aHltaWEiXSApIERlcHJlc3Npb24KICAgIHdoZXJlIERlcHJlc3Npb24uaXNWZXJpZmllZCAoICkKCmRlZmluZSAiRGVwcmVzc2lvbiBFbmNvdW50ZXIiOgogIFtFbmNvdW50ZXI6ICJDb250YWN0IG9yIE9mZmljZSBWaXNpdCJdIFZhbGlkRW5jb3VudGVyCiAgICB3aXRoICJEZXByZXNzaW9uIERpYWdub3NlcyIgRGVwcmVzc2lvbgogICAgICBzdWNoIHRoYXQgVmFsaWRFbmNvdW50ZXIucGVyaW9kIG92ZXJsYXBzIERlcHJlc3Npb24ucHJldmFsZW5jZUludGVydmFsICggKQogICAgICAgIGFuZCBWYWxpZEVuY291bnRlci5wZXJpb2QgZW5kcyBkdXJpbmcgZGF5IG9mICJEZW5vbWluYXRvciBJZGVudGlmaWNhdGlvbiBQZXJpb2QiCiAgICAgICAgYW5kIFZhbGlkRW5jb3VudGVyLnN0YXR1cyA9ICdmaW5pc2hlZCcKCmRlZmluZSAiSGFzIE1lbnRhbCBIZWFsdGggRGlzb3JkZXIgRGlhZ25vc2VzIjoKICAvLyBbRS0xM10gYmFzZSBGSElSLkNvbmRpdGlvbiByZXRyaWV2ZSAoZGVmZWN0LXRyYWNraW5nL2VuZ2luZS1pc3N1ZXMubWQgRS0xMykKICAvLyBPcmlnaW5hbDoKICAvLyBleGlzdHMgKCAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiQmlwb2xhciBEaXNvcmRlciJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJCaXBvbGFyIERpc29yZGVyIl0KICAvLyAgICAgdW5pb24gW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJQZXJzb25hbGl0eSBEaXNvcmRlciBFbW90aW9uYWxseSBMYWJpbGUiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiUGVyc29uYWxpdHkgRGlzb3JkZXIgRW1vdGlvbmFsbHkgTGFiaWxlIl0KICAvLyAgICAgdW5pb24gW0NvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM6ICJTY2hpem9waHJlbmlhIG9yIFBzeWNob3RpYyBEaXNvcmRlciJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJTY2hpem9waHJlbmlhIG9yIFBzeWNob3RpYyBEaXNvcmRlciJdCiAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiUGVydmFzaXZlIERldmVsb3BtZW50YWwgRGlzb3JkZXIiXQogIC8vICAgICB1bmlvbiBbQ29uZGl0aW9uRW5jb3VudGVyRGlhZ25vc2lzOiAiUGVydmFzaXZlIERldmVsb3BtZW50YWwgRGlzb3JkZXIiXSApIE1lbnRhbEhlYWx0aERpc29yZGVyRGlhZ25vc2VzCiAgZXhpc3RzICggKCBbQ29uZGl0aW9uOiAiQmlwb2xhciBEaXNvcmRlciJdCiAgICAgIHVuaW9uIFtDb25kaXRpb246ICJQZXJzb25hbGl0eSBEaXNvcmRlciBFbW90aW9uYWxseSBMYWJpbGUiXQogICAgICB1bmlvbiBbQ29uZGl0aW9uOiAiU2NoaXpvcGhyZW5pYSBvciBQc3ljaG90aWMgRGlzb3JkZXIiXQogICAgICB1bmlvbiBbQ29uZGl0aW9uOiAiUGVydmFzaXZlIERldmVsb3BtZW50YWwgRGlzb3JkZXIiXSApIE1lbnRhbEhlYWx0aERpc29yZGVyRGlhZ25vc2VzCiAgICAgIHdoZXJlIHN0YXJ0IG9mIE1lbnRhbEhlYWx0aERpc29yZGVyRGlhZ25vc2VzLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb24gb3IgYmVmb3JlIGRheSBvZiBlbmQgb2YgIk1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiCiAgICAgICAgYW5kIE1lbnRhbEhlYWx0aERpc29yZGVyRGlhZ25vc2VzLmlzVmVyaWZpZWQgKCApCiAgKQoKZGVmaW5lICJNZWFzdXJlIEFzc2Vzc21lbnQgUGVyaW9kIjoKICAiSW5kZXggRGVwcmVzc2lvbiBBc3Nlc3NtZW50IiBGaXJzdEluZGV4QXNzZXNzbWVudAogICAgbGV0IFllYXJBZnRlckluZGV4QXNzZXNzbWVudDogZGF0ZSBmcm9tIHN0YXJ0IG9mIEZpcnN0SW5kZXhBc3Nlc3NtZW50LmVmZmVjdGl2ZS50b0ludGVydmFsICggKSArIDEyIG1vbnRocwogICAgcmV0dXJuIEludGVydmFsW1llYXJBZnRlckluZGV4QXNzZXNzbWVudCAtIDYwIGRheXMsIFllYXJBZnRlckluZGV4QXNzZXNzbWVudCArIDYwIGRheXNdCgpkZWZpbmUgIlBhdGllbnQgRXhwaXJlZCI6CiAgUGF0aWVudC5kZWNlYXNlZCBvY2N1cnMgb24gb3IgYmVmb3JlIGRheSBvZiBlbmQgb2YgIk1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiCgpkZWZpbmUgIkhhcyBIb3NwaWNlIFNlcnZpY2VzIHByaW9yIHRvIG9yIGR1cmluZyB0aGUgTWVhc3VyZSBBc3Nlc3NtZW50IFBlcmlvZCI6CiAgZXhpc3RzICggW0VuY291bnRlcjogIkVuY291bnRlciBJbnBhdGllbnQiXSBJbnBhdGllbnRFbmNvdW50ZXIKICAgICAgd2hlcmUgKCBJbnBhdGllbnRFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uLmRpc2NoYXJnZURpc3Bvc2l0aW9uIH4gIkRpc2NoYXJnZSB0byBob21lIGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiCiAgICAgICAgICBvciBJbnBhdGllbnRFbmNvdW50ZXIuaG9zcGl0YWxpemF0aW9uLmRpc2NoYXJnZURpc3Bvc2l0aW9uIH4gIkRpc2NoYXJnZSB0byBoZWFsdGhjYXJlIGZhY2lsaXR5IGZvciBob3NwaWNlIGNhcmUgKHByb2NlZHVyZSkiCiAgICAgICkKICAgICAgICBhbmQgSW5wYXRpZW50RW5jb3VudGVyLnBlcmlvZCBlbmRzIGR1cmluZyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIkRlbm9taW5hdG9yIElkZW50aWZpY2F0aW9uIFBlcmlvZCIsIGVuZCBvZiAiTWVhc3VyZSBBc3Nlc3NtZW50IFBlcmlvZCJdCiAgICAgICAgYW5kIElucGF0aWVudEVuY291bnRlci5zdGF0dXMgPSAnZmluaXNoZWQnCiAgKQogICAgb3IgZXhpc3RzICggW0VuY291bnRlcjogIkhvc3BpY2UgRW5jb3VudGVyIl0gSG9zcGljZUVuY291bnRlcgogICAgICAgIHdoZXJlIEhvc3BpY2VFbmNvdW50ZXIucGVyaW9kIG92ZXJsYXBzIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiAiRGVub21pbmF0b3IgSWRlbnRpZmljYXRpb24gUGVyaW9kIiwgZW5kIG9mICJNZWFzdXJlIEFzc2Vzc21lbnQgUGVyaW9kIl0KICAgICAgICAgIGFuZCBub3QgKCBIb3NwaWNlRW5jb3VudGVyLnN0YXR1cyBpbiB7ICdjYW5jZWxsZWQnLCAnZW50ZXJlZC1pbi1lcnJvcicsICd1bmtub3duJyB9ICkKICAgICkKICAgIG9yIGV4aXN0cyAoIFtPYnNlcnZhdGlvblNjcmVlbmluZ0Fzc2Vzc21lbnQ6ICJIb3NwaWNlIGNhcmUgW01pbmltdW0gRGF0YSBTZXRdIl0gSG9zcGljZUFzc2Vzc21lbnQKICAgICAgICB3aGVyZSBIb3NwaWNlQXNzZXNzbWVudC52YWx1ZSB+ICJZZXMgKHF1YWxpZmllciB2YWx1ZSkiCiAgICAgICAgICBhbmQgSG9zcGljZUFzc2Vzc21lbnQuZWZmZWN0aXZlLnRvSW50ZXJ2YWwgKCApIG92ZXJsYXBzIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiAiRGVub21pbmF0b3IgSWRlbnRpZmljYXRpb24gUGVyaW9kIiwgZW5kIG9mICJNZWFzdXJlIEFzc2Vzc21lbnQgUGVyaW9kIl0KICAgICAgICAgIGFuZCBIb3NwaWNlQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICAgICkKICAgIG9yIGV4aXN0cyAoIFtTZXJ2aWNlUmVxdWVzdDogIkhvc3BpY2UgQ2FyZSBBbWJ1bGF0b3J5Il0gSG9zcGljZU9yZGVyCiAgICAgICAgd2hlcmUgSG9zcGljZU9yZGVyLmF1dGhvcmVkT24gZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiAiRGVub21pbmF0b3IgSWRlbnRpZmljYXRpb24gUGVyaW9kIiwgZW5kIG9mICJNZWFzdXJlIEFzc2Vzc21lbnQgUGVyaW9kIl0KICAgICAgICAgIGFuZCBIb3NwaWNlT3JkZXIuc3RhdHVzIGluIHsgJ2FjdGl2ZScsICdjb21wbGV0ZWQnIH0KICAgICAgICAgIGFuZCBIb3NwaWNlT3JkZXIuaW50ZW50IGluIHsgJ29yZGVyJywgJ29yaWdpbmFsLW9yZGVyJywgJ3JlZmxleC1vcmRlcicsICdmaWxsZXItb3JkZXInLCAnaW5zdGFuY2Utb3JkZXInIH0KICAgICkKICAgIG9yIGV4aXN0cyAoIFtQcm9jZWR1cmU6ICJIb3NwaWNlIENhcmUgQW1idWxhdG9yeSJdIEhvc3BpY2VQZXJmb3JtZWQKICAgICAgICB3aGVyZSBIb3NwaWNlUGVyZm9ybWVkLnBlcmZvcm1lZC50b0ludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIkRlbm9taW5hdG9yIElkZW50aWZpY2F0aW9uIFBlcmlvZCIsIGVuZCBvZiAiTWVhc3VyZSBBc3Nlc3NtZW50IFBlcmlvZCJdCiAgICAgICAgICBhbmQgbm90ICggSG9zcGljZVBlcmZvcm1lZC5zdGF0dXMgaW4geyAnbm90LWRvbmUnLCAnZW50ZXJlZC1pbi1lcnJvcicsICd1bmtub3duJyB9ICkKICAgICkKICAgIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKQogICAgLy8gT3JpZ2luYWw6CiAgICAvLyBvciBleGlzdHMgKCAoIFtDb25kaXRpb25Qcm9ibGVtc0hlYWx0aENvbmNlcm5zOiAiSG9zcGljZSBEaWFnbm9zaXMiXQogICAgLy8gICAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJIb3NwaWNlIERpYWdub3NpcyJdICkgSG9zcGljZUNhcmVEaWFnbm9zaXMKICAgIG9yIGV4aXN0cyAoIFtDb25kaXRpb246ICJIb3NwaWNlIERpYWdub3NpcyJdICBIb3NwaWNlQ2FyZURpYWdub3NpcwogICAgICAgIHdoZXJlIEhvc3BpY2VDYXJlRGlhZ25vc2lzLnByZXZhbGVuY2VJbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIEludGVydmFsW3N0YXJ0IG9mICJEZW5vbWluYXRvciBJZGVudGlmaWNhdGlvbiBQZXJpb2QiLCBlbmQgb2YgIk1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiXQogICAgICAgICAgYW5kIEhvc3BpY2VDYXJlRGlhZ25vc2lzLmlzVmVyaWZpZWQgKCApCiAgICApCgpkZWZpbmUgIkluZGV4IERlcHJlc3Npb24gQXNzZXNzbWVudCI6CiAgRmlyc3QoIkRlcHJlc3Npb24gQXNzZXNzbWVudHMgR3JlYXRlciBUaGFuIDkiIERlcHJlc3Npb25Bc3Nlc3NtZW50CiAgICAgIHdpdGggIkRlcHJlc3Npb24gRW5jb3VudGVyIiBEZXByZXNzaW9uRW5jb3VudGVyCiAgICAgICAgc3VjaCB0aGF0IERlcHJlc3Npb25Bc3Nlc3NtZW50LmVmZmVjdGl2ZS50b0ludGVydmFsKCkgZHVyaW5nIGRheSBvZiBJbnRlcnZhbFtzdGFydCBvZiBEZXByZXNzaW9uRW5jb3VudGVyLnBlcmlvZCAtIDcgZGF5cywgCiAgICAgICAgZW5kIG9mIERlcHJlc3Npb25FbmNvdW50ZXIucGVyaW9kXQogICAgICBzb3J0IGJ5IHN0YXJ0IG9mIGVmZmVjdGl2ZS50b0ludGVydmFsKCkKICApCgpkZWZpbmUgIkhhcyBQYWxsaWF0aXZlIENhcmUgcHJpb3IgdG8gb3IgZHVyaW5nIHRoZSBNZWFzdXJlIEFzc2Vzc21lbnQgUGVyaW9kIjoKICBleGlzdHMgKCBbT2JzZXJ2YXRpb25TY3JlZW5pbmdBc3Nlc3NtZW50OiAiRnVuY3Rpb25hbCBBc3Nlc3NtZW50IG9mIENocm9uaWMgSWxsbmVzcyBUaGVyYXB5IC0gUGFsbGlhdGl2ZSBDYXJlIFF1ZXN0aW9ubmFpcmUgKEZBQ0lULVBhbCkiXSBQYWxsaWF0aXZlQXNzZXNzbWVudAogICAgICB3aGVyZSBQYWxsaWF0aXZlQXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIEludGVydmFsW3N0YXJ0IG9mICJEZW5vbWluYXRvciBJZGVudGlmaWNhdGlvbiBQZXJpb2QiLCBlbmQgb2YgIk1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiXQogICAgICAgIGFuZCBQYWxsaWF0aXZlQXNzZXNzbWVudC5zdGF0dXMgaW4geyAnZmluYWwnLCAnYW1lbmRlZCcsICdjb3JyZWN0ZWQnIH0KICApCiAgICAgIC8vIFtFLTEzXSBiYXNlIEZISVIuQ29uZGl0aW9uIHJldHJpZXZlIChkZWZlY3QtdHJhY2tpbmcvZW5naW5lLWlzc3Vlcy5tZCBFLTEzKQogICAgICAvLyBPcmlnaW5hbDoKICAgICAgLy8gb3IgZXhpc3RzICggKCBbQ29uZGl0aW9uUHJvYmxlbXNIZWFsdGhDb25jZXJuczogIlBhbGxpYXRpdmUgQ2FyZSBEaWFnbm9zaXMiXQogICAgICAvLyAgIHVuaW9uIFtDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXM6ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIl0gKSBQYWxsaWF0aXZlRGlhZ25vc2lzCiAgICAgIG9yIGV4aXN0cyAoIFtDb25kaXRpb246ICJQYWxsaWF0aXZlIENhcmUgRGlhZ25vc2lzIl0gUGFsbGlhdGl2ZURpYWdub3NpcwogICAgICAgIHdoZXJlIFBhbGxpYXRpdmVEaWFnbm9zaXMucHJldmFsZW5jZUludGVydmFsICggKSBvdmVybGFwcyBkYXkgb2YgSW50ZXJ2YWxbc3RhcnQgb2YgIkRlbm9taW5hdG9yIElkZW50aWZpY2F0aW9uIFBlcmlvZCIsIGVuZCBvZiAiTWVhc3VyZSBBc3Nlc3NtZW50IFBlcmlvZCJdCiAgICAgICAgICBhbmQgUGFsbGlhdGl2ZURpYWdub3Npcy5pc1ZlcmlmaWVkICggKQogICAgKQogICAgb3IgZXhpc3RzICggW0VuY291bnRlcjogIlBhbGxpYXRpdmUgQ2FyZSBFbmNvdW50ZXIiXSBQYWxsaWF0aXZlRW5jb3VudGVyCiAgICAgICAgd2hlcmUgUGFsbGlhdGl2ZUVuY291bnRlci5wZXJpb2Qgb3ZlcmxhcHMgZGF5IG9mIEludGVydmFsW3N0YXJ0IG9mICJEZW5vbWluYXRvciBJZGVudGlmaWNhdGlvbiBQZXJpb2QiLCBlbmQgb2YgIk1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiXQogICAgICAgICAgYW5kIFBhbGxpYXRpdmVFbmNvdW50ZXIuc3RhdHVzID0gJ2ZpbmlzaGVkJwogICAgKQogICAgb3IgZXhpc3RzICggW1Byb2NlZHVyZTogIlBhbGxpYXRpdmUgQ2FyZSBJbnRlcnZlbnRpb24iXSBQYWxsaWF0aXZlSW50ZXJ2ZW50aW9uCiAgICAgICAgd2hlcmUgUGFsbGlhdGl2ZUludGVydmVudGlvbi5wZXJmb3JtZWQudG9JbnRlcnZhbCAoICkgb3ZlcmxhcHMgZGF5IG9mIEludGVydmFsW3N0YXJ0IG9mICJEZW5vbWluYXRvciBJZGVudGlmaWNhdGlvbiBQZXJpb2QiLCBlbmQgb2YgIk1lYXN1cmUgQXNzZXNzbWVudCBQZXJpb2QiXQogICAgICAgICAgYW5kIG5vdCAoIFBhbGxpYXRpdmVJbnRlcnZlbnRpb24uc3RhdHVzIGluIHsgJ25vdC1kb25lJywgJ2VudGVyZWQtaW4tZXJyb3InLCAndW5rbm93bicgfSApCiAgICApCgpkZWZpbmUgZmx1ZW50IGZ1bmN0aW9uIGlzVmVyaWZpZWQoY29uZGl0aW9uIENob2ljZTxDb25kaXRpb25FbmNvdW50ZXJEaWFnbm9zaXMsIENvbmRpdGlvblByb2JsZW1zSGVhbHRoQ29uY2VybnM+KToKICBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIGlzIG5vdCBudWxsIGltcGxpZXMgKCBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJjb25maXJtZWQiCiAgICAgIG9yIGNvbmRpdGlvbi52ZXJpZmljYXRpb25TdGF0dXMgfiBTdGF0dXMuInVuY29uZmlybWVkIgogICAgICBvciBjb25kaXRpb24udmVyaWZpY2F0aW9uU3RhdHVzIH4gU3RhdHVzLiJwcm92aXNpb25hbCIKICAgICAgb3IgY29uZGl0aW9uLnZlcmlmaWNhdGlvblN0YXR1cyB+IFN0YXR1cy4iZGlmZmVyZW50aWFsIgogICkKCmRlZmluZSAiU3RyYXRpZmljYXRpb24gMSI6CiAgIkluZGV4IERlcHJlc3Npb24gQXNzZXNzbWVudCIgSW5kZXhBc3Nlc3NtZW50CiAgICByZXR1cm4gQWdlSW5ZZWFyc0F0KGRhdGUgZnJvbSBzdGFydCBvZiBJbmRleEFzc2Vzc21lbnQuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSkgaW4gSW50ZXJ2YWxbMTIsIDE3XQoKZGVmaW5lICJTdHJhdGlmaWNhdGlvbiAyIjoKICAiSW5kZXggRGVwcmVzc2lvbiBBc3Nlc3NtZW50IiBJbmRleEFzc2Vzc21lbnQKICAgIHJldHVybiBBZ2VJblllYXJzQXQoZGF0ZSBmcm9tIHN0YXJ0IG9mIEluZGV4QXNzZXNzbWVudC5lZmZlY3RpdmUudG9JbnRlcnZhbCgpKSA+PSAxOA=="/>
    <url
         value="https://madie.cms.gov/Library-CMS159FHIRDepRemissionat12Months.cql"/>
  </content>
</Library>