WHO SMART Guidelines - HIV
0.4.3 - ci-build
WHO SMART Guidelines - HIV - Local Development build (v0.4.3) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
Draft as of 2025-02-07 |
<Library xmlns="http://hl7.org/fhir">
<id value="HIVIND46Logic"/>
<meta>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"/>
<profile
value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"/>
<profile
value="http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"/>
</meta>
<text>
<status value="extensions"/>
<div xmlns="http://www.w3.org/1999/xhtml">
<div>
<table class="grid dict">
<tr>
<th scope="row"><b>Title: </b></th>
<td style="padding-left: 4px;">HIV.IND.46 Logic</td>
</tr>
<tr>
<th scope="row"><b>Id: </b></th>
<td style="padding-left: 4px;">HIVIND46Logic</td>
</tr>
<tr>
<th scope="row"><b>Version: </b></th>
<td style="padding-left: 4px;">0.4.3</td>
</tr>
<tr>
<th scope="row"><b>Url: </b></th>
<td style="padding-left: 4px;"><a href="Library-HIVIND46Logic.html">HIV.IND.46 Logic</a></td>
</tr>
<tr>
<th scope="row"><b>Status: </b></th>
<td style="padding-left: 4px;">draft</td>
</tr>
<tr>
<th scope="row"><b>Experimental: </b></th>
<td style="padding-left: 4px;">true</td>
</tr>
<tr>
<th scope="row"><b>Type: </b></th>
<td style="padding-left: 4px;">
<p style="margin-bottom: 5px;">
<b>system: </b> <span><a href="http://terminology.hl7.org/6.0.2/CodeSystem-library-type.html">http://terminology.hl7.org/CodeSystem/library-type</a></span>
</p>
<p style="margin-bottom: 5px;">
<b>code: </b> <span>logic-library</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><b>Date: </b></th>
<td style="padding-left: 4px;">2025-02-07 14:15:45+0000</td>
</tr>
<tr>
<th scope="row"><b>Publisher: </b></th>
<td style="padding-left: 4px;">WHO</td>
</tr>
<tr>
<th scope="row"><b>Description: </b></th>
<td style="padding-left: 4px;"><div><p>% of people living with HIV with TB symptoms who receive a rapid molecular test, for example, Xpert MTB/RIF, as a first test for diagnosis of TB</p>
</div></td>
</tr>
<tr>
<td colspan="2">
<table>
<tr><th><a id="cql-content"><b>Content: </b></a> text/cql</th></tr>
<tr><td><pre><code class="language-cql">/**
* Library: HIV.IND.46 Logic
* Ref No: TBH.3
* Short Name: TB diagnostic testing type
*
* Definition: % of people living with HIV with TB symptoms who receive a rapid molecular test, for example, Xpert MTB/RIF, as a first test for diagnosis of TB
*
* Numerator: Number of people living with HIV and having TB symptoms who were tested using a rapid molecular test (for example, Xpert MTB/RIF) as a first test during the reporting period
* Numerator Calculation: COUNT of clients with "HIV status"='HIV-positive' AND "TB screening date" in the reporting period AND "TB screening result"='Screen positive for TB' AND "TB diagnostic test category"='mWRD test for TB'
* Numerator Exclusions:
*
* Denominator: Number of people living with HIV who are screened for TB and found to have symptoms during the reporting period
* Denominator Calculation: COUNT of clients with "HIV status"='HIV-positive' AND "TB screening date" in the reporting period AND "TB screening result"='Screen positive for TB'
* Denominator Exclusions:
*
* Disaggregations:
* • Gender (female, male, other*)
* • Age (0–4, 5–9, 10–14, 15–19, 20–24, 25–29, 30–34, 35–39, 40–44, 45–49, 50+ years)**
* • Key populations (men who have sex with men, people living in prisons and other closed settings, people who inject drugs, sex workers, trans and gender diverse people)***
* • Pregnant or breastfeeding women
* • Cities and other administrative regions of epidemiologic importance
*
* Disaggregation Elements: Gender | Age | Key population member type | Currently pregnant | Breastfeeding
*
* Numerator and Denominator Elements:
* HIV status
* TB diagnostic test category
* TB screening date
* TB screening result
*
* Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022
*
* Data Concepts:
* HIV.A.DE17: Age | Calculated age (number of years) of the client based on date of birth
* HIV.A.DE18: Gender* | Gender of the client*
* HIV.A.DE19: Female | Client identifies as female
* HIV.A.DE20: Male | Client identifies as male
* HIV.A.DE21: Transgender male | Client identifies as transgender male
* HIV.A.DE22: Transgender female | Client identifies as transgender female
* HIV.A.DE23: Other | Additional category
* HIV.B.DE29: Currently pregnant | Client is currently pregnant
* HIV.B.DE32: Breastfeeding | Infant is being breastfed by mother
* HIV.B.DE50: Key population member type* | The type of key population that the client is included in
* HIV.B.DE51: Sex worker | Client is a sex worker
* HIV.B.DE52: Men who have sex with men | Client is a man who has sex with men
* HIV.B.DE53: Trans and gender-diverse people | Client identifies as trans and gender-diverse
* HIV.B.DE54: People who inject drugs | Client is a person who injects drugs
* HIV.B.DE55: People living in prisons and other closed settings | Client lives in a prison or another closed setting
* HIV.B.DE115: HIV status | HIV status reported after applying the national HIV testing algorithm. No single HIV test can provide an HIV-positive diagnosis.
* HIV.B.DE116: HIV-positive | Client is HIV-positive
* HIV.B.DE117: HIV-negative | Client is HIV-negative
* HIV.B.DE118: Unknown | Client has unknown HIV status
* HIV.D.DE31: Currently pregnant | Client is currently pregnant
* HIV.D.DE32: Breastfeeding | Client is giving infant breast milk
* HIV.D.DE986: TB screening result | Record the result of the tuberculosis (TB) screening
* HIV.D.DE987: Screen positive for TB | Screening result was positive for tuberculosis (TB)
* HIV.D.DE988: Screen negative for TB | Screening result was negative for tuberculosis (TB)
* HIV.D.DE989: Inconclusive | Screening result was inconclusive for tuberculosis (TB)
* HIV.D.DE990: TB screening date | Date the TB screening was conducted
* HIV.D.DE992: TB diagnostic test category | The type of diagnostic test performed to detect tuberculosis (TB) disease
* HIV.D.DE993: LF-LAM | Client tested for tuberculosis with a lateral flow urine lipoarabinomannan assay
* HIV.D.DE994: mWRD test for TB | Client tested with a WHO-recommended molecular diagnostic test to detect Mycobacterium tuberculosis (MTB)
* HIV.D.DE995: Microscopy - Sputum acid-fast bacilli (AFB) | Client tested for tuberculosis with a sputum acid-fast bacilli (AFB)
* HIV.D.DE996: TB Culture | Client tested for tuberculosis (TB) with a culture
* HIV.E.DE114: Key population member type* | The type of key population that the infant's mother is included in
* HIV.E.DE115: Sex worker | Infant's mother is a sex worker
* HIV.E.DE116: People who inject drugs | Infant's mother is a person who injects drugs
* HIV.E.DE117: Trans and gender-diverse people | Infant's mother identifies as trans and gender-diverse
* HIV.E.DE118: People living in prisons and other closed setting | Infant's mother is in a prison or closed setting
* HIV.SRV.DE7: Currently pregnant | Client is currently pregnant
*
* Additional Context
* - what it measures: This indicator measures the proportion of people living with HIV who screen positive for TB symptoms who receive a recommended test for diagnosis of TB.
* - rationale: • People living with HIV should be screened for TB symptoms and, if found positive, be tested for TB. | • WHO recommends rapid-diagnostic molecular tests, for example, Xpert MTB/RIF, as the first test for diagnosis of TB among people living with HIV.
* - method: For the numerator and denominator: Programme records (for example, laboratory register for smear microscopy and Xpert MTB/RIF, ART registers)
*
* Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm
*/
library HIVIND46Logic
// Included Libraries
using FHIR version '4.0.1'
include HIVCommon version '0.0.1' called HIC
include FHIRHelpers version '4.0.1'
include WHOCommon called WCom
include HIVElements called HE
include HIVIndicatorElements called HIE
// Indicator Definition
parameter "Measurement Period" Interval<Date> default Interval[@2023-01-01, @2023-01-30]
context Patient
/* Populations */
/*
*Initial Population
*/
define "Initial Population":
true
/**
* Numerator
*
* Definition: Number of people living with HIV and having TB symptoms who were tested using a rapid molecular test (for example, Xpert MTB/RIF) as a first test during the reporting period
* Calculation: COUNT of clients with "HIV status"='HIV-positive' AND "TB screening date" in the reporting period AND "TB screening result"='Screen positive for TB' AND "TB diagnostic test category"='mWRD test for TB'
*/
define "Numerator":
HIE."Has HIV-positive Status"
and
//I related the two because otherwise a positive observation could come from another test type and be counted.
exists(
HE."mWRD test for TB" P
with HE."Screen positive for TB" O
such that P.partOf.references(O)
where P.performed.toInterval() during "Measurement Period"
)
/**
* Denominator
*
* Definition: Number of people living with HIV who are screened for TB and found to have symptoms during the reporting period
* Calculation: COUNT of clients with "HIV status"='HIV-positive' AND "TB screening date" in the reporting period AND "TB screening result"='Screen positive for TB'
*/
define "Denominator":
HIE."Has HIV-positive Status"
and
exists(
HE."TB diagnostic test category" P
with HE."Screen positive for TB" O
such that P.partOf.references(O)
where P.performed.toInterval() during "Measurement Period"
)
/* end Populations */
/*
* Disaggregators
*/
define "Administrative Gender Stratifier":
HIE."By Administrative Gender Stratifier"
define "Age Stratifier":
HIE."By Age Stratifier"
define "Geographic Region Stratifier":
HIE."By Geographic Region Stratifier"
define "patientGroups Stratifier":
HIE."patientGroups"
define "pregnancy stratifier":
HIE."pregnancy stratifier"
define "Stratification":
HIE."By Administrative Gender Stratifier".code
+ ':' + HIE."By Age Stratifier"
+ ':' + HIE."By Geographic Region Stratifier"
+ Combine(HIE.patientGroups, ':')
+ HIE."pregnancy stratifier".code
</code></pre></td></tr>
</table>
</td>
</tr>
</table>
</div>
</div>
</text>
<extension
url="http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability">
<valueCode value="computable"/>
</extension>
<url value="http://smart.who.int/hiv/Library/HIVIND46Logic"/>
<version value="0.4.3"/>
<name value="HIVIND46Logic"/>
<title value="HIV.IND.46 Logic"/>
<status value="draft"/>
<experimental value="true"/>
<type>
<coding>
<system value="http://terminology.hl7.org/CodeSystem/library-type"/>
<code value="logic-library"/>
</coding>
</type>
<date value="2025-02-07T14:15:45+00:00"/>
<publisher value="WHO"/>
<contact>
<name value="WHO"/>
<telecom>
<system value="url"/>
<value value="http://who.int"/>
</telecom>
</contact>
<description
value="% of people living with HIV with TB symptoms who receive a rapid molecular test, for example, Xpert MTB/RIF, as a first test for diagnosis of TB"/>
<content>
<contentType value="text/cql"/>
<data
value="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNDYgTG9naWMKICogUmVmIE5vOiBUQkguMwogKiBTaG9ydCBOYW1lOiBUQiBkaWFnbm9zdGljIHRlc3RpbmcgdHlwZQogKgogKiBEZWZpbml0aW9uOiAlIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgd2l0aCBUQiBzeW1wdG9tcyB3aG8gcmVjZWl2ZSBhIHJhcGlkIG1vbGVjdWxhciB0ZXN0LCBmb3IgZXhhbXBsZSwgWHBlcnQgTVRCL1JJRiwgYXMgYSBmaXJzdCB0ZXN0IGZvciBkaWFnbm9zaXMgb2YgVEIKICoKICogTnVtZXJhdG9yOiBOdW1iZXIgb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViBhbmQgaGF2aW5nIFRCIHN5bXB0b21zIHdobyB3ZXJlIHRlc3RlZCB1c2luZyBhIHJhcGlkIG1vbGVjdWxhciB0ZXN0IChmb3IgZXhhbXBsZSwgWHBlcnQgTVRCL1JJRikgYXMgYSBmaXJzdCB0ZXN0IGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBOdW1lcmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJUQiBzY3JlZW5pbmcgZGF0ZSIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgQU5EICJUQiBzY3JlZW5pbmcgcmVzdWx0Ij0nU2NyZWVuIHBvc2l0aXZlIGZvciBUQicgQU5EICJUQiBkaWFnbm9zdGljIHRlc3QgY2F0ZWdvcnkiPSdtV1JEIHRlc3QgZm9yIFRCJwogKiBOdW1lcmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERlbm9taW5hdG9yOiBOdW1iZXIgb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViB3aG8gYXJlIHNjcmVlbmVkIGZvciBUQiBhbmQgZm91bmQgdG8gaGF2ZSBzeW1wdG9tcyBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICogRGVub21pbmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJUQiBzY3JlZW5pbmcgZGF0ZSIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgQU5EICJUQiBzY3JlZW5pbmcgcmVzdWx0Ij0nU2NyZWVuIHBvc2l0aXZlIGZvciBUQicKICogRGVub21pbmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERpc2FnZ3JlZ2F0aW9uczoKICog4oCiwqBHZW5kZXIgKGZlbWFsZSwgbWFsZSwgb3RoZXIqKSAKICogIOKAosKgQWdlICgw4oCTNCwgNeKAkzksIDEw4oCTMTQsIDE14oCTMTksIDIw4oCTMjQsIDI14oCTMjksIDMw4oCTMzQsIDM14oCTMzksIDQw4oCTNDQsIDQ14oCTNDksIDUwKyB5ZWFycykqKiAKICogIOKAosKgS2V5IHBvcHVsYXRpb25zIChtZW4gd2hvIGhhdmUgc2V4IHdpdGggbWVuLCBwZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5ncywgcGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MsIHNleCB3b3JrZXJzLCB0cmFucyBhbmQgZ2VuZGVyIGRpdmVyc2UgcGVvcGxlKSoqKiAKICogIOKAosKgUHJlZ25hbnQgb3IgYnJlYXN0ZmVlZGluZyB3b21lbiAKICogIOKAoiBDaXRpZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIHJlZ2lvbnMgb2YgZXBpZGVtaW9sb2dpYyBpbXBvcnRhbmNlCiAqCiAqIERpc2FnZ3JlZ2F0aW9uIEVsZW1lbnRzOiBHZW5kZXIgfCBBZ2UgfCBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZSB8IEN1cnJlbnRseSBwcmVnbmFudCB8IEJyZWFzdGZlZWRpbmcKICoKICogTnVtZXJhdG9yIGFuZCBEZW5vbWluYXRvciBFbGVtZW50czoKICogSElWIHN0YXR1cyAKICogIFRCIGRpYWdub3N0aWMgdGVzdCBjYXRlZ29yeSAKICogIFRCIHNjcmVlbmluZyBkYXRlIAogKiAgVEIgc2NyZWVuaW5nIHJlc3VsdAogKgogKiBSZWZlcmVuY2U6IENvbnNvbGlkYXRlZCBndWlkZWxpbmVzIG9uIHBlcnNvbi1jZW50cmVkIEhJViBzdHJhdGVnaWMgaW5mb3JtYXRpb246IHN0cmVuZ3RoZW5pbmcgcm91dGluZSBkYXRhIGZvciBpbXBhY3QuIEdlbmV2YTogV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbjsgMjAyMgogKiAKICogRGF0YSBDb25jZXB0czoKICogSElWLkEuREUxNzogQWdlIHwgQ2FsY3VsYXRlZCBhZ2UgKG51bWJlciBvZiB5ZWFycykgb2YgdGhlIGNsaWVudCBiYXNlZCBvbiBkYXRlIG9mIGJpcnRoCiAqIEhJVi5BLkRFMTg6IEdlbmRlciogfCBHZW5kZXIgb2YgdGhlIGNsaWVudCoKICogSElWLkEuREUxOTogRmVtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgZmVtYWxlCiAqIEhJVi5BLkRFMjA6IE1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyBtYWxlCiAqIEhJVi5BLkRFMjE6IFRyYW5zZ2VuZGVyIG1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyB0cmFuc2dlbmRlciBtYWxlCiAqIEhJVi5BLkRFMjI6IFRyYW5zZ2VuZGVyIGZlbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zZ2VuZGVyIGZlbWFsZQogKiBISVYuQS5ERTIzOiBPdGhlciB8IEFkZGl0aW9uYWwgY2F0ZWdvcnkKICogSElWLkIuREUyOTogQ3VycmVudGx5IHByZWduYW50IHwgQ2xpZW50IGlzIGN1cnJlbnRseSBwcmVnbmFudAogKiBISVYuQi5ERTMyOiBCcmVhc3RmZWVkaW5nIHwgSW5mYW50IGlzIGJlaW5nIGJyZWFzdGZlZCBieSBtb3RoZXIKICogSElWLkIuREU1MDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgY2xpZW50IGlzIGluY2x1ZGVkIGluCiAqIEhJVi5CLkRFNTE6IFNleCB3b3JrZXIgfCBDbGllbnQgaXMgYSBzZXggd29ya2VyCiAqIEhJVi5CLkRFNTI6IE1lbiB3aG8gaGF2ZSBzZXggd2l0aCBtZW4gfCBDbGllbnQgaXMgYSBtYW4gd2hvIGhhcyBzZXggd2l0aCBtZW4KICogSElWLkIuREU1MzogVHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlIHBlb3BsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZQogKiBISVYuQi5ERTU0OiBQZW9wbGUgd2hvIGluamVjdCBkcnVncyB8IENsaWVudCBpcyBhIHBlcnNvbiB3aG8gaW5qZWN0cyBkcnVncwogKiBISVYuQi5ERTU1OiBQZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5ncyB8IENsaWVudCBsaXZlcyBpbiBhIHByaXNvbiBvciBhbm90aGVyIGNsb3NlZCBzZXR0aW5nCiAqIEhJVi5CLkRFMTE1OiBISVYgc3RhdHVzIHwgSElWIHN0YXR1cyByZXBvcnRlZCBhZnRlciBhcHBseWluZyB0aGUgbmF0aW9uYWwgSElWIHRlc3RpbmcgYWxnb3JpdGhtLiBObyBzaW5nbGUgSElWIHRlc3QgY2FuIHByb3ZpZGUgYW4gSElWLXBvc2l0aXZlIGRpYWdub3Npcy4KICogSElWLkIuREUxMTY6IEhJVi1wb3NpdGl2ZSB8IENsaWVudCBpcyBISVYtcG9zaXRpdmUKICogSElWLkIuREUxMTc6IEhJVi1uZWdhdGl2ZSB8IENsaWVudCBpcyBISVYtbmVnYXRpdmUKICogSElWLkIuREUxMTg6IFVua25vd24gfCBDbGllbnQgaGFzIHVua25vd24gSElWIHN0YXR1cwogKiBISVYuRC5ERTMxOiBDdXJyZW50bHkgcHJlZ25hbnQgfCBDbGllbnQgaXMgY3VycmVudGx5IHByZWduYW50CiAqIEhJVi5ELkRFMzI6IEJyZWFzdGZlZWRpbmcgfCBDbGllbnQgaXMgZ2l2aW5nIGluZmFudCBicmVhc3QgbWlsawogKiBISVYuRC5ERTk4NjogVEIgc2NyZWVuaW5nIHJlc3VsdCB8IFJlY29yZCB0aGUgcmVzdWx0IG9mIHRoZSB0dWJlcmN1bG9zaXMgKFRCKSBzY3JlZW5pbmcKICogSElWLkQuREU5ODc6IFNjcmVlbiBwb3NpdGl2ZSBmb3IgVEIgfCBTY3JlZW5pbmcgcmVzdWx0IHdhcyBwb3NpdGl2ZSBmb3IgdHViZXJjdWxvc2lzIChUQikKICogSElWLkQuREU5ODg6IFNjcmVlbiBuZWdhdGl2ZSBmb3IgVEIgfCBTY3JlZW5pbmcgcmVzdWx0IHdhcyBuZWdhdGl2ZSBmb3IgdHViZXJjdWxvc2lzIChUQikKICogSElWLkQuREU5ODk6IEluY29uY2x1c2l2ZSB8IFNjcmVlbmluZyByZXN1bHQgd2FzIGluY29uY2x1c2l2ZSBmb3IgdHViZXJjdWxvc2lzIChUQikKICogSElWLkQuREU5OTA6IFRCIHNjcmVlbmluZyBkYXRlIHwgRGF0ZSB0aGUgVEIgc2NyZWVuaW5nIHdhcyBjb25kdWN0ZWQKICogSElWLkQuREU5OTI6IFRCIGRpYWdub3N0aWMgdGVzdCBjYXRlZ29yeSB8IFRoZSB0eXBlIG9mIGRpYWdub3N0aWMgdGVzdCBwZXJmb3JtZWQgdG8gZGV0ZWN0IHR1YmVyY3Vsb3NpcyAoVEIpIGRpc2Vhc2UKICogSElWLkQuREU5OTM6IExGLUxBTSB8IENsaWVudCB0ZXN0ZWQgZm9yIHR1YmVyY3Vsb3NpcyB3aXRoIGEgbGF0ZXJhbCBmbG93IHVyaW5lIGxpcG9hcmFiaW5vbWFubmFuIGFzc2F5CiAqIEhJVi5ELkRFOTk0OiBtV1JEIHRlc3QgZm9yIFRCIHwgQ2xpZW50IHRlc3RlZCB3aXRoIGEgV0hPLXJlY29tbWVuZGVkIG1vbGVjdWxhciBkaWFnbm9zdGljIHRlc3QgdG8gZGV0ZWN0IE15Y29iYWN0ZXJpdW0gdHViZXJjdWxvc2lzIChNVEIpCiAqIEhJVi5ELkRFOTk1OiBNaWNyb3Njb3B5IC0gU3B1dHVtIGFjaWQtZmFzdCBiYWNpbGxpIChBRkIpIHwgQ2xpZW50IHRlc3RlZCBmb3IgdHViZXJjdWxvc2lzIHdpdGggYSBzcHV0dW0gYWNpZC1mYXN0IGJhY2lsbGkgKEFGQikKICogSElWLkQuREU5OTY6IFRCIEN1bHR1cmUgfCBDbGllbnQgdGVzdGVkIGZvciB0dWJlcmN1bG9zaXMgKFRCKSB3aXRoIGEgY3VsdHVyZQogKiBISVYuRS5ERTExNDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgaW5mYW50J3MgbW90aGVyIGlzIGluY2x1ZGVkIGluCiAqIEhJVi5FLkRFMTE1OiBTZXggd29ya2VyIHwgSW5mYW50J3MgbW90aGVyIGlzIGEgc2V4IHdvcmtlcgogKiBISVYuRS5ERTExNjogUGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MgfCBJbmZhbnQncyBtb3RoZXIgaXMgYSBwZXJzb24gd2hvIGluamVjdHMgZHJ1Z3MKICogSElWLkUuREUxMTc6IFRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZSBwZW9wbGUgfCBJbmZhbnQncyBtb3RoZXIgaWRlbnRpZmllcyBhcyB0cmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UKICogSElWLkUuREUxMTg6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmcgfCBJbmZhbnQncyBtb3RoZXIgaXMgaW4gYSBwcmlzb24gb3IgY2xvc2VkIHNldHRpbmcKICogSElWLlNSVi5ERTc6IEN1cnJlbnRseSBwcmVnbmFudCB8IENsaWVudCBpcyBjdXJyZW50bHkgcHJlZ25hbnQKICoKICogQWRkaXRpb25hbCBDb250ZXh0CiAqIC0gd2hhdCBpdCBtZWFzdXJlczogVGhpcyBpbmRpY2F0b3IgbWVhc3VyZXMgdGhlIHByb3BvcnRpb24gb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViB3aG8gc2NyZWVuIHBvc2l0aXZlIGZvciBUQiBzeW1wdG9tcyB3aG8gcmVjZWl2ZSBhIHJlY29tbWVuZGVkIHRlc3QgZm9yIGRpYWdub3NpcyBvZiBUQi4KICogLSByYXRpb25hbGU6IOKAoiBQZW9wbGUgbGl2aW5nIHdpdGggSElWIHNob3VsZCBiZSBzY3JlZW5lZCBmb3IgVEIgc3ltcHRvbXMgYW5kLCBpZiBmb3VuZCBwb3NpdGl2ZSwgYmUgdGVzdGVkIGZvciBUQi4gfCDigKIgV0hPIHJlY29tbWVuZHMgcmFwaWQtZGlhZ25vc3RpYyBtb2xlY3VsYXIgdGVzdHMsIGZvciBleGFtcGxlLCBYcGVydCBNVEIvUklGLCBhcyB0aGUgZmlyc3QgdGVzdCBmb3IgZGlhZ25vc2lzIG9mIFRCIGFtb25nIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYuCiAqIC0gbWV0aG9kOiBGb3IgdGhlIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3I6IFByb2dyYW1tZSByZWNvcmRzIChmb3IgZXhhbXBsZSwgbGFib3JhdG9yeSByZWdpc3RlciBmb3Igc21lYXIgbWljcm9zY29weSBhbmQgWHBlcnQgTVRCL1JJRiwgQVJUIHJlZ2lzdGVycykKICogCiAqIFN1Z2dlc3RlZCBTY29yaW5nIE1ldGhvZDogcHJvcG9ydGlvbiB8IGh0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY3FmbWVhc3VyZXMvU3RydWN0dXJlRGVmaW5pdGlvbi9wcm9wb3J0aW9uLW1lYXN1cmUtY3FmbQogKi8KCmxpYnJhcnkgSElWSU5ENDZMb2dpYwoKLy8gSW5jbHVkZWQgTGlicmFyaWVzCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEhJVkNvbW1vbiB2ZXJzaW9uICcwLjAuMScgY2FsbGVkIEhJQwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBXSE9Db21tb24gY2FsbGVkIFdDb20KaW5jbHVkZSBISVZFbGVtZW50cyBjYWxsZWQgSEUKaW5jbHVkZSBISVZJbmRpY2F0b3JFbGVtZW50cyBjYWxsZWQgSElFCgovLyBJbmRpY2F0b3IgRGVmaW5pdGlvbgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgSW50ZXJ2YWw8RGF0ZT4gZGVmYXVsdCBJbnRlcnZhbFtAMjAyMy0wMS0wMSwgQDIwMjMtMDEtMzBdCgpjb250ZXh0IFBhdGllbnQKLyogUG9wdWxhdGlvbnMgKi8KCi8qCiAqSW5pdGlhbCBQb3B1bGF0aW9uCiAqLwoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogIHRydWUKCi8qKgogKiBOdW1lcmF0b3IKICogCiAqIERlZmluaXRpb246IE51bWJlciBvZiBwZW9wbGUgbGl2aW5nIHdpdGggSElWIGFuZCBoYXZpbmcgVEIgc3ltcHRvbXMgd2hvIHdlcmUgdGVzdGVkIHVzaW5nIGEgcmFwaWQgbW9sZWN1bGFyIHRlc3QgKGZvciBleGFtcGxlLCBYcGVydCBNVEIvUklGKSBhcyBhIGZpcnN0IHRlc3QgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIEFORCAiVEIgc2NyZWVuaW5nIGRhdGUiIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAiVEIgc2NyZWVuaW5nIHJlc3VsdCI9J1NjcmVlbiBwb3NpdGl2ZSBmb3IgVEInIEFORCAiVEIgZGlhZ25vc3RpYyB0ZXN0IGNhdGVnb3J5Ij0nbVdSRCB0ZXN0IGZvciBUQicKICovCgoKCmRlZmluZSAiTnVtZXJhdG9yIjoKICBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIgogIGFuZCAKICAvL0kgcmVsYXRlZCB0aGUgdHdvIGJlY2F1c2Ugb3RoZXJ3aXNlIGEgcG9zaXRpdmUgb2JzZXJ2YXRpb24gY291bGQgY29tZSBmcm9tIGFub3RoZXIgdGVzdCB0eXBlIGFuZCBiZSBjb3VudGVkLiAKICBleGlzdHMoCiAgICBIRS4ibVdSRCB0ZXN0IGZvciBUQiIgUAogICAgd2l0aCBIRS4iU2NyZWVuIHBvc2l0aXZlIGZvciBUQiIgTwogICAgICBzdWNoIHRoYXQgUC5wYXJ0T2YucmVmZXJlbmNlcyhPKQogICAgd2hlcmUgUC5wZXJmb3JtZWQudG9JbnRlcnZhbCgpIGR1cmluZyAiTWVhc3VyZW1lbnQgUGVyaW9kIgogICkKCi8qKgogKiBEZW5vbWluYXRvcgogKgogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgcGVvcGxlIGxpdmluZyB3aXRoIEhJViB3aG8gYXJlIHNjcmVlbmVkIGZvciBUQiBhbmQgZm91bmQgdG8gaGF2ZSBzeW1wdG9tcyBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICogQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJUQiBzY3JlZW5pbmcgZGF0ZSIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgQU5EICJUQiBzY3JlZW5pbmcgcmVzdWx0Ij0nU2NyZWVuIHBvc2l0aXZlIGZvciBUQicKICovCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIgogIGFuZCAKICBleGlzdHMoCiAgICBIRS4iVEIgZGlhZ25vc3RpYyB0ZXN0IGNhdGVnb3J5IiBQCiAgICB3aXRoIEhFLiJTY3JlZW4gcG9zaXRpdmUgZm9yIFRCIiBPCiAgICAgIHN1Y2ggdGhhdCBQLnBhcnRPZi5yZWZlcmVuY2VzKE8pCiAgICB3aGVyZSBQLnBlcmZvcm1lZC50b0ludGVydmFsKCkgZHVyaW5nICJNZWFzdXJlbWVudCBQZXJpb2QiCiAgKQogICAgCgovKiBlbmQgUG9wdWxhdGlvbnMgKi8KCi8qCiAqIERpc2FnZ3JlZ2F0b3JzCiAqLwoKZGVmaW5lICJBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciI6CglISUUuIkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIgoKZGVmaW5lICJBZ2UgU3RyYXRpZmllciI6CglISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIgoKZGVmaW5lICJHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIKCmRlZmluZSAicGF0aWVudEdyb3VwcyBTdHJhdGlmaWVyIjoKCUhJRS4icGF0aWVudEdyb3VwcyIKCmRlZmluZSAicHJlZ25hbmN5IHN0cmF0aWZpZXIiOgogIEhJRS4icHJlZ25hbmN5IHN0cmF0aWZpZXIiCgpkZWZpbmUgIlN0cmF0aWZpY2F0aW9uIjoKIEhJRS4iQnkgQWRtaW5pc3RyYXRpdmUgR2VuZGVyIFN0cmF0aWZpZXIiLmNvZGUgCiAgKyAnOicgKyBISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIgorICc6JyArIEhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIKKyBDb21iaW5lKEhJRS5wYXRpZW50R3JvdXBzLCAnOicpCisgSElFLiJwcmVnbmFuY3kgc3RyYXRpZmllciIuY29kZQo="/>
</content>
</Library>