This page is part of the Quality Measure STU2 for FHIR R4 Implementation Guide (v3.0.0: STU3) based on FHIR R4. This is the current published version in its permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of published versions
Active as of 2019-09-03 |
{
"resourceType" : "Library",
"id" : "EXMComputableLibrary",
"meta" : {
"profile" : [
"http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/computable-library-cqfm"
]
},
"text" : {
"status" : "extensions",
"div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n <table class=\"grid dict\">\n \n <tr>\n <th scope=\"row\"><b>Id: </b></th>\n <td style=\"padding-left: 4px;\">EXMComputableLibrary</td>\n </tr>\n \n \n <tr>\n <th scope=\"row\"><b>Url: </b></th>\n <td style=\"padding-left: 4px;\">http://hl7.org/fhir/us/cqfmeasures/Library/EXMComputableLibrary</td>\n </tr>\n \n \n <tr>\n <th scope=\"row\"><b>Version: </b></th>\n <td style=\"padding-left: 4px;\">2.0.0</td>\n </tr>\n \n \n <tr>\n <th scope=\"row\"><b>Identifier: </b></th>\n <td style=\"padding-left: 4px;\">\n \n \n <p style=\"margin-bottom: 5px;\">\n <b>value: </b> <span>EXMComputableLogic</span>\n </p>\n \n </td>\n </tr>\n \n \n <tr>\n <th scope=\"row\"><b>Name: </b></th>\n <td style=\"padding-left: 4px;\">EXMComputableLibrary</td>\n </tr>\n \n \n <tr>\n <th scope=\"row\"><b>Title: </b></th>\n <td style=\"padding-left: 4px;\">Example Computable Library</td>\n </tr>\n \n \n \n <tr>\n <th scope=\"row\"><b>Status: </b></th>\n <td style=\"padding-left: 4px;\">active</td>\n </tr>\n \n \n <tr>\n <th scope=\"row\"><b>Experimental: </b></th>\n <td style=\"padding-left: 4px;\">true</td>\n </tr>\n \n \n <tr>\n <th scope=\"row\"><b>Type: </b></th>\n <td style=\"padding-left: 4px;\">\n \n \n \n <p style=\"margin-bottom: 5px;\">\n <b>system: </b> <span>http://terminology.hl7.org/CodeSystem/library-type</span>\n </p>\n \n \n <p style=\"margin-bottom: 5px;\">\n <b>code: </b> <span>logic-library</span>\n </p>\n \n \n \n \n \n </td>\n </tr>\n \n \n \n <tr>\n <th scope=\"row\"><b>Date: </b></th>\n <td style=\"padding-left: 4px;\">2019-09-03</td>\n </tr>\n \n \n <tr>\n <th scope=\"row\"><b>Publisher: </b></th>\n <td style=\"padding-left: 4px;\">Clinical Quality Information WG</td>\n </tr>\n \n \n <tr>\n <th scope=\"row\"><b>Description: </b></th>\n <td style=\"padding-left: 4px;\">This library is used as an example in the FHIR Quality Measure Implementation Guide</td>\n </tr>\n \n \n \n \n <tr>\n <th scope=\"row\"><b>Use Context: </b></th>\n <td style=\"padding-left: 4px;\">\n <table class=\"grid-dict\">\n <tr><th><b>code</b></th><th><b>value</b></th><th><b>display</b></th></tr>\n \n <tr>\n <td>program</td>\n <td>eh-cah</td>\n <td>EH/CAH</td>\n </tr>\n \n </table>\n </td>\n </tr>\n \n \n <tr>\n <th scope=\"row\"><b>Jurisdiction: </b></th>\n <td style=\"padding-left: 4px;\">US</td>\n </tr>\n \n \n \n \n \n <tr>\n <th scope=\"row\"><b>Approval Date: </b></th>\n <td style=\"padding-left: 4px;\">2019-08-03</td>\n </tr>\n \n \n <tr>\n <th scope=\"row\"><b>Last Review Date: </b></th>\n <td style=\"padding-left: 4px;\">2019-08-03</td>\n </tr>\n \n \n \n <tr>\n <th scope=\"row\"><b>Related Artifacts: </b></th>\n <td style=\"padding-left: 4px;\">\n \n \n \n <p><b>Dependencies</b></p>\n <ul>\n \n <li>http://fhir.org/guides/common/Library/FHIR-ModelInfo|4.0.1</li>\n \n <li>http://fhir.org/guides/common/Library/FHIRHelpers|4.0.1</li>\n \n <li>http://terminology.hl7.org/CodeSystem/diagnosis-role</li>\n \n <li>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292</li>\n \n <li>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.299</li>\n \n <li>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.126</li>\n \n <li>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1</li>\n \n <li>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836</li>\n \n <li>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837</li>\n \n <li>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591</li>\n \n </ul>\n \n \n \n \n \n </td>\n </tr>\n \n \n <tr>\n <th scope=\"row\"><b>Parameters: </b></th>\n <td style=\"padding-left: 4px;\">\n <table class=\"grid-dict\">\n <tr><th><b>Name</b></th><th><b>Type</b></th><th><b>Min</b></th><th><b>Max</b></th><th><b>In/Out</b></th></tr>\n \n <tr><th>Measurement Period</th><th>Period</th><th>0</th><th>1</th><th>in</th></tr>\n \n <tr><th>Patient</th><th>Patient</th><th>0</th><th>1</th><th>out</th></tr>\n \n <tr><th>Inpatient Encounter</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\n \n <tr><th>Initial Population</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\n \n <tr><th>Measure Population</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\n \n <tr><th>Stratifier 1</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\n \n <tr><th>Stratifier 2</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\n \n <tr><th>Stratifier 3</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\n \n <tr><th>Stratifier 4</th><th>Encounter</th><th>0</th><th>*</th><th>out</th></tr>\n \n <tr><th>SDE Ethnicity</th><th>Coding</th><th>0</th><th>*</th><th>out</th></tr>\n \n <tr><th>SDE Payer</th><th>Any</th><th>0</th><th>*</th><th>out</th></tr>\n \n <tr><th>SDE Race</th><th>Coding</th><th>0</th><th>*</th><th>out</th></tr>\n \n <tr><th>SDE Sex</th><th>Coding</th><th>0</th><th>1</th><th>out</th></tr>\n \n </table>\n </td>\n </tr>\n \n \n <tr>\n <th scope=\"row\"><b>Data Requirements:</b></th>\n <td style=\"padding-left: 4px;\">\n <table class=\"grid-dict\">\n <tr><th><b>Type</b></th><th><b>Profile</b></th><th><b>MS</b></th><th><b>Code Filter</b></th></tr>\n \n <tr>\n <th>Encounter</th>\n <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>\n <th></th>\n <th>\n \n </th>\n </tr>\n \n <tr>\n <th>Encounter</th>\n <th>http://hl7.org/fhir/StructureDefinition/Encounter</th>\n <th></th>\n <th>\n \n <b>code filter: </b>\n \n <br/>\n \n \n <span style=\"padding-left: 4px;\">\n <b>path: </b><span>type</span>\n </span>\n \n <br/>\n \n \n \n <span style=\"padding-left: 4px;\">\n <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292</span>\n </span>\n \n \n \n </th>\n </tr>\n \n <tr>\n <th>Condition</th>\n <th>http://hl7.org/fhir/StructureDefinition/Condition</th>\n <th></th>\n <th>\n \n <b>code filter: </b>\n \n <br/>\n \n \n <span style=\"padding-left: 4px;\">\n <b>path: </b><span>id</span>\n </span>\n \n \n \n \n \n </th>\n </tr>\n \n <tr>\n <th>Coverage</th>\n <th>http://hl7.org/fhir/StructureDefinition/Coverage</th>\n <th></th>\n <th>\n \n <b>code filter: </b>\n \n <br/>\n \n \n <span style=\"padding-left: 4px;\">\n <b>path: </b><span>type</span>\n </span>\n \n <br/>\n \n \n \n <span style=\"padding-left: 4px;\">\n <b>value set: </b><span>http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591</span>\n </span>\n \n \n \n </th>\n </tr>\n \n </table>\n </td>\n </tr>\n \n \n \n <tr>\n <td colspan=\"2\">\n <table>\n <tr><th><a id=\"cql-content\"><b>Content: </b></a> text/cql</th></tr>\n <tr><td><pre><code class=\"language-cql\">library EXMComputableLibrary version '2.0.0'\r\n\r\n/*\r\nThis example is purely for illustration purposes to show how all the elements of a\r\nFHIR-based quality measure are represented. It is intentionally simplified to show\r\nspecific aspects of a measure, and is not intended as an example of a clinically\r\nmeaningful measure.\r\n*/\r\n\r\n/*\r\nNOTE: This is the same library as EXMLogic, being used to illustrate the different flavors of profiles:\r\n* Computable: Focusing on computable/design-time aspects\r\n* Executable: Focusing on run-time aspects\r\n* Publishable: Focusing on knowledge management aspects\r\n*/\r\n\r\nusing FHIR version '4.0.1'\r\n\r\ninclude FHIRHelpers version '4.0.1' called FHIRHelpers\r\n\r\ncodesystem \"Diagnosis Role\": 'http://terminology.hl7.org/CodeSystem/diagnosis-role'\r\n\r\nvalueset \"Emergency Department Visit\" : 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292'\r\nvalueset \"Psychiatric/Mental Health Patient\" : 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.299'\r\nvalueset \"Hospital Settings\" : 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.126'\r\n\r\nvalueset \"ONC Administrative Sex\": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1'\r\nvalueset \"Race\": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836'\r\nvalueset \"Ethnicity\": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837'\r\nvalueset \"Payer\": 'http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591'\r\n\r\ncode \"Billing\": 'billing' from \"Diagnosis Role\" display 'Billing'\r\n\r\nparameter \"Measurement Period\" Interval<DateTime>\r\n\r\ncontext Patient\r\n\r\ndefine \"Initial Population\" :\r\n \"Inpatient Encounter\" Encounter\r\n\r\ndefine \"Measure Population\" :\r\n \"Initial Population\"\r\n\r\ndefine function \"Measure Observation\" (Encounter \"Encounter\" ) :\r\n duration in minutes of \"Related ED Visit\"(Encounter).period\r\n\r\ndefine \"Stratifier 1\" :\r\n \"Inpatient Encounter\" Encounter\r\n where not (PrincipalDiagnosis(Encounter).code in \"Psychiatric/Mental Health Patient\")\r\n\r\ndefine \"Stratifier 2\" :\r\n \"Inpatient Encounter\" Encounter\r\n where PrincipalDiagnosis(Encounter).code in \"Psychiatric/Mental Health Patient\"\r\n\r\ndefine \"Stratifier 3\" :\r\n \"Inpatient Encounter\" Encounter\r\n where PrincipalDiagnosis(Encounter) is null\r\n\r\ndefine \"Stratifier 4\" :\r\n \"Inpatient Encounter\" Encounter\r\n where PrincipalDiagnosis(Encounter) is null\r\n\r\ndefine \"Inpatient Encounter\" :\r\n [\"Encounter\"] Encounter\r\n where LengthInDays(Encounter.period) <= 120\r\n and Encounter.period ends during \"Measurement Period\"\r\n\r\ndefine function \"PrincipalDiagnosis\"(Encounter Encounter):\r\n\t(singleton from (Encounter.diagnosis D where D.use ~ ToConcept(\"Billing\") and D.rank.value = 1)) PD\r\n\t\treturn singleton from ([Condition: id in \"GetId\"(PD.condition.reference)])\r\n\r\ndefine function \"LengthInDays\"(Value Interval<DateTime>):\r\n\tdifference in days between start of Value and end of Value\r\n\r\ndefine function \"GetId\"(uri String):\r\n\tLast(Split(uri, '/'))\r\n\r\n//Measure Observation\r\ndefine function \"Related ED Visit\" (Encounter \"Encounter\" ) :\r\n Last([\"Encounter\" : \"Emergency Department Visit\"] ED\r\n where ED.status = 'finished'\r\n and ED.period ends 1 hour or less before start of Encounter.period\r\n sort by start of period )\r\n\r\ndefine \"SDE Ethnicity\":\r\n (flatten (\r\n Patient.extension Extension\r\n where Extension.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity'\r\n return Extension.extension\r\n )) E\r\n where E.url = 'ombCategory'\r\n or E.url = 'detailed'\r\n return E.value as Coding\r\n\r\ndefine \"SDE Payer\":\r\n [Coverage: type in \"Payer\"] Payer\r\n return {\r\n code: Payer.type,\r\n period: Payer.period\r\n }\r\n\r\ndefine \"SDE Race\":\r\n (flatten (\r\n Patient.extension Extension\r\n where Extension.url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-race'\r\n return Extension.extension\r\n )) E\r\n where E.url = 'ombCategory'\r\n or E.url = 'detailed'\r\n return E.value as Coding\r\n\r\ndefine \"SDE Sex\":\r\n case\r\n when Patient.gender = 'male' then Code { code: 'M', system: 'http://hl7.org/fhir/v3/AdministrativeGender', display: 'Male' }\r\n when Patient.gender = 'female' then Code { code: 'F', system: 'http://hl7.org/fhir/v3/AdministrativeGender', display: 'Female' }\r\n else null\r\n end\r\n</code></pre></td></tr>\n </table>\n </td>\n </tr>\n \n \n \n </table>\n</div>"
},
"url" : "http://hl7.org/fhir/us/cqfmeasures/Library/EXMComputableLibrary",
"identifier" : [
{
"use" : "official",
"system" : "http://example.org/fhir/cqi/ecqm/Library/Identifier",
"value" : "EXMComputableLogic"
}
],
"version" : "2.0.0",
"name" : "EXMComputableLibrary",
"title" : "Example Computable Library",
"status" : "active",
"experimental" : true,
"type" : {
"coding" : [
{
"system" : "http://terminology.hl7.org/CodeSystem/library-type",
"code" : "logic-library"
}
]
},
"date" : "2019-09-03",
"publisher" : "Clinical Quality Information WG",
"contact" : [
{
"telecom" : [
{
"system" : "url",
"value" : "http://www.hl7.org/Special/committees/cqi"
}
]
}
],
"description" : "This library is used as an example in the FHIR Quality Measure Implementation Guide",
"useContext" : [
{
"code" : {
"system" : "http://terminology.hl7.org/CodeSystem/usage-context-type",
"code" : "program"
},
"valueCodeableConcept" : {
"coding" : [
{
"system" : "http://hl7.org/fhir/us/cqfmeasures/CodeSystem/quality-programs",
"code" : "eh-cah",
"display" : "EH/CAH"
}
]
}
}
],
"jurisdiction" : [
{
"coding" : [
{
"system" : "urn:iso:std:iso:3166",
"code" : "US"
}
]
}
],
"approvalDate" : "2019-08-03",
"lastReviewDate" : "2019-08-03",
"relatedArtifact" : [
{
"type" : "depends-on",
"resource" : "http://fhir.org/guides/common/Library/FHIR-ModelInfo|4.0.1"
},
{
"type" : "depends-on",
"resource" : "http://fhir.org/guides/common/Library/FHIRHelpers|4.0.1"
},
{
"type" : "depends-on",
"resource" : "http://terminology.hl7.org/CodeSystem/diagnosis-role"
},
{
"type" : "depends-on",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"
},
{
"type" : "depends-on",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.299"
},
{
"type" : "depends-on",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.126"
},
{
"type" : "depends-on",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1"
},
{
"type" : "depends-on",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.836"
},
{
"type" : "depends-on",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.837"
},
{
"type" : "depends-on",
"resource" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"
}
],
"parameter" : [
{
"name" : "Measurement Period",
"use" : "in",
"min" : 0,
"max" : "1",
"type" : "Period"
},
{
"name" : "Patient",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "Patient"
},
{
"name" : "Inpatient Encounter",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "Initial Population",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "Measure Population",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "Stratifier 1",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "Stratifier 2",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "Stratifier 3",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "Stratifier 4",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Encounter"
},
{
"name" : "SDE Ethnicity",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Coding"
},
{
"name" : "SDE Payer",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Any"
},
{
"name" : "SDE Race",
"use" : "out",
"min" : 0,
"max" : "*",
"type" : "Coding"
},
{
"name" : "SDE Sex",
"use" : "out",
"min" : 0,
"max" : "1",
"type" : "Coding"
}
],
"dataRequirement" : [
{
"type" : "Encounter",
"profile" : [
"http://hl7.org/fhir/StructureDefinition/Encounter"
]
},
{
"type" : "Encounter",
"profile" : [
"http://hl7.org/fhir/StructureDefinition/Encounter"
],
"codeFilter" : [
{
"path" : "type",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"
}
]
},
{
"type" : "Condition",
"profile" : [
"http://hl7.org/fhir/StructureDefinition/Condition"
],
"codeFilter" : [
{
"path" : "id"
}
]
},
{
"type" : "Coverage",
"profile" : [
"http://hl7.org/fhir/StructureDefinition/Coverage"
],
"codeFilter" : [
{
"path" : "type",
"valueSet" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.3591"
}
]
}
],
"content" : [
{
"contentType" : "text/cql",
"language" : "AllLanguages",
"data" : "bGlicmFyeSBFWE1Db21wdXRhYmxlTGlicmFyeSB2ZXJzaW9uICcyLjAuMCcNCg0KLyoNClRoaXMgZXhhbXBsZSBpcyBwdXJlbHkgZm9yIGlsbHVzdHJhdGlvbiBwdXJwb3NlcyB0byBzaG93IGhvdyBhbGwgdGhlIGVsZW1lbnRzIG9mIGENCkZISVItYmFzZWQgcXVhbGl0eSBtZWFzdXJlIGFyZSByZXByZXNlbnRlZC4gSXQgaXMgaW50ZW50aW9uYWxseSBzaW1wbGlmaWVkIHRvIHNob3cNCnNwZWNpZmljIGFzcGVjdHMgb2YgYSBtZWFzdXJlLCBhbmQgaXMgbm90IGludGVuZGVkIGFzIGFuIGV4YW1wbGUgb2YgYSBjbGluaWNhbGx5DQptZWFuaW5nZnVsIG1lYXN1cmUuDQoqLw0KDQovKg0KTk9URTogVGhpcyBpcyB0aGUgc2FtZSBsaWJyYXJ5IGFzIEVYTUxvZ2ljLCBiZWluZyB1c2VkIHRvIGlsbHVzdHJhdGUgdGhlIGRpZmZlcmVudCBmbGF2b3JzIG9mIHByb2ZpbGVzOg0KKiBDb21wdXRhYmxlOiBGb2N1c2luZyBvbiBjb21wdXRhYmxlL2Rlc2lnbi10aW1lIGFzcGVjdHMNCiogRXhlY3V0YWJsZTogRm9jdXNpbmcgb24gcnVuLXRpbWUgYXNwZWN0cw0KKiBQdWJsaXNoYWJsZTogRm9jdXNpbmcgb24ga25vd2xlZGdlIG1hbmFnZW1lbnQgYXNwZWN0cw0KKi8NCg0KdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScNCg0KaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScgY2FsbGVkIEZISVJIZWxwZXJzDQoNCmNvZGVzeXN0ZW0gIkRpYWdub3NpcyBSb2xlIjogJ2h0dHA6Ly90ZXJtaW5vbG9neS5obDcub3JnL0NvZGVTeXN0ZW0vZGlhZ25vc2lzLXJvbGUnDQoNCnZhbHVlc2V0ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCIgOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzODgzLjMuMTE3LjEuNy4xLjI5MicNCnZhbHVlc2V0ICJQc3ljaGlhdHJpYy9NZW50YWwgSGVhbHRoIFBhdGllbnQiIDogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjExNy4xLjcuMS4yOTknDQp2YWx1ZXNldCAiSG9zcGl0YWwgU2V0dGluZ3MiIDogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTExMS4xMjYnDQoNCnZhbHVlc2V0ICJPTkMgQWRtaW5pc3RyYXRpdmUgU2V4IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMScNCnZhbHVlc2V0ICJSYWNlIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExNDIyMi40LjExLjgzNicNCnZhbHVlc2V0ICJFdGhuaWNpdHkiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTE0MjIyLjQuMTEuODM3Jw0KdmFsdWVzZXQgIlBheWVyIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExNDIyMi40LjExLjM1OTEnDQoNCmNvZGUgIkJpbGxpbmciOiAnYmlsbGluZycgZnJvbSAiRGlhZ25vc2lzIFJvbGUiIGRpc3BsYXkgJ0JpbGxpbmcnDQoNCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlVGltZT4NCg0KY29udGV4dCBQYXRpZW50DQoNCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIiA6DQogICJJbnBhdGllbnQgRW5jb3VudGVyIiBFbmNvdW50ZXINCg0KZGVmaW5lICJNZWFzdXJlIFBvcHVsYXRpb24iIDoNCiAgIkluaXRpYWwgUG9wdWxhdGlvbiINCg0KZGVmaW5lIGZ1bmN0aW9uICJNZWFzdXJlIE9ic2VydmF0aW9uIiAoRW5jb3VudGVyICJFbmNvdW50ZXIiICkgOg0KICBkdXJhdGlvbiBpbiBtaW51dGVzIG9mICJSZWxhdGVkIEVEIFZpc2l0IihFbmNvdW50ZXIpLnBlcmlvZA0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMSIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgbm90IChQcmluY2lwYWxEaWFnbm9zaXMoRW5jb3VudGVyKS5jb2RlIGluICJQc3ljaGlhdHJpYy9NZW50YWwgSGVhbHRoIFBhdGllbnQiKQ0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMiIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikuY29kZSBpbiAiUHN5Y2hpYXRyaWMvTWVudGFsIEhlYWx0aCBQYXRpZW50Ig0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgMyIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikgaXMgbnVsbA0KDQpkZWZpbmUgIlN0cmF0aWZpZXIgNCIgOg0KICAiSW5wYXRpZW50IEVuY291bnRlciIgRW5jb3VudGVyDQogICAgd2hlcmUgUHJpbmNpcGFsRGlhZ25vc2lzKEVuY291bnRlcikgaXMgbnVsbA0KDQpkZWZpbmUgIklucGF0aWVudCBFbmNvdW50ZXIiIDoNCiAgWyJFbmNvdW50ZXIiXSBFbmNvdW50ZXINCiAgICB3aGVyZSBMZW5ndGhJbkRheXMoRW5jb3VudGVyLnBlcmlvZCkgPD0gMTIwDQogICAgICBhbmQgRW5jb3VudGVyLnBlcmlvZCBlbmRzIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIg0KDQpkZWZpbmUgZnVuY3Rpb24gIlByaW5jaXBhbERpYWdub3NpcyIoRW5jb3VudGVyIEVuY291bnRlcik6DQoJKHNpbmdsZXRvbiBmcm9tIChFbmNvdW50ZXIuZGlhZ25vc2lzIEQgd2hlcmUgRC51c2UgfiBUb0NvbmNlcHQoIkJpbGxpbmciKSBhbmQgRC5yYW5rLnZhbHVlID0gMSkpIFBEDQoJCXJldHVybiBzaW5nbGV0b24gZnJvbSAoW0NvbmRpdGlvbjogaWQgaW4gIkdldElkIihQRC5jb25kaXRpb24ucmVmZXJlbmNlKV0pDQoNCmRlZmluZSBmdW5jdGlvbiAiTGVuZ3RoSW5EYXlzIihWYWx1ZSBJbnRlcnZhbDxEYXRlVGltZT4pOg0KCWRpZmZlcmVuY2UgaW4gZGF5cyBiZXR3ZWVuIHN0YXJ0IG9mIFZhbHVlIGFuZCBlbmQgb2YgVmFsdWUNCg0KZGVmaW5lIGZ1bmN0aW9uICJHZXRJZCIodXJpIFN0cmluZyk6DQoJTGFzdChTcGxpdCh1cmksICcvJykpDQoNCi8vTWVhc3VyZSBPYnNlcnZhdGlvbg0KZGVmaW5lIGZ1bmN0aW9uICJSZWxhdGVkIEVEIFZpc2l0IiAoRW5jb3VudGVyICJFbmNvdW50ZXIiICkgOg0KICBMYXN0KFsiRW5jb3VudGVyIiA6ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCJdIEVEDQogICAgd2hlcmUgRUQuc3RhdHVzID0gJ2ZpbmlzaGVkJw0KICAgICAgYW5kIEVELnBlcmlvZCBlbmRzIDEgaG91ciBvciBsZXNzIGJlZm9yZSBzdGFydCBvZiBFbmNvdW50ZXIucGVyaW9kDQogICAgc29ydCBieSBzdGFydCBvZiBwZXJpb2QgKQ0KDQpkZWZpbmUgIlNERSBFdGhuaWNpdHkiOg0KICAoZmxhdHRlbiAoDQogICAgUGF0aWVudC5leHRlbnNpb24gRXh0ZW5zaW9uDQogICAgICB3aGVyZSBFeHRlbnNpb24udXJsID0gJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY29yZS9TdHJ1Y3R1cmVEZWZpbml0aW9uL3VzLWNvcmUtZXRobmljaXR5Jw0KICAgICAgICByZXR1cm4gRXh0ZW5zaW9uLmV4dGVuc2lvbg0KICApKSBFDQogICAgd2hlcmUgRS51cmwgPSAnb21iQ2F0ZWdvcnknDQogICAgICBvciBFLnVybCA9ICdkZXRhaWxlZCcNCiAgICByZXR1cm4gRS52YWx1ZSBhcyBDb2RpbmcNCg0KZGVmaW5lICJTREUgUGF5ZXIiOg0KICAgIFtDb3ZlcmFnZTogdHlwZSBpbiAiUGF5ZXIiXSBQYXllcg0KICAgICAgcmV0dXJuIHsNCiAgICAgICAgY29kZTogUGF5ZXIudHlwZSwNCiAgICAgICAgcGVyaW9kOiBQYXllci5wZXJpb2QNCiAgICAgIH0NCg0KZGVmaW5lICJTREUgUmFjZSI6DQogIChmbGF0dGVuICgNCiAgICBQYXRpZW50LmV4dGVuc2lvbiBFeHRlbnNpb24NCiAgICAgIHdoZXJlIEV4dGVuc2lvbi51cmwgPSAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9jb3JlL1N0cnVjdHVyZURlZmluaXRpb24vdXMtY29yZS1yYWNlJw0KICAgICAgICByZXR1cm4gRXh0ZW5zaW9uLmV4dGVuc2lvbg0KICApKSBFDQogICAgd2hlcmUgRS51cmwgPSAnb21iQ2F0ZWdvcnknDQogICAgICBvciBFLnVybCA9ICdkZXRhaWxlZCcNCiAgICByZXR1cm4gRS52YWx1ZSBhcyBDb2RpbmcNCg0KZGVmaW5lICJTREUgU2V4IjoNCiAgY2FzZQ0KICAgIHdoZW4gUGF0aWVudC5nZW5kZXIgPSAnbWFsZScgdGhlbiBDb2RlIHsgY29kZTogJ00nLCBzeXN0ZW06ICdodHRwOi8vaGw3Lm9yZy9maGlyL3YzL0FkbWluaXN0cmF0aXZlR2VuZGVyJywgZGlzcGxheTogJ01hbGUnIH0NCiAgICB3aGVuIFBhdGllbnQuZ2VuZGVyID0gJ2ZlbWFsZScgdGhlbiBDb2RlIHsgY29kZTogJ0YnLCBzeXN0ZW06ICdodHRwOi8vaGw3Lm9yZy9maGlyL3YzL0FkbWluaXN0cmF0aXZlR2VuZGVyJywgZGlzcGxheTogJ0ZlbWFsZScgfQ0KICAgIGVsc2UgbnVsbA0KICBlbmQNCg=="
}
]
}