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

: HIV.IND.37 Logic - XML Representation

Draft as of 2025-02-07

Raw xml | Download


<Library xmlns="http://hl7.org/fhir">
  <id value="HIVIND37Logic"/>
  <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.37 Logic</td>
        </tr>
        

        
        
        <tr>
            <th scope="row"><b>Id: </b></th>
            <td style="padding-left: 4px;">HIVIND37Logic</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-HIVIND37Logic.html">HIV.IND.37 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 HIV-positive pregnant women who are virally suppressed at labour and delivery</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.37 Logic
 * Ref No: VER.1
 * Short Name: Viral suppression at labour and delivery
 *
 * Definition: % of HIV-positive pregnant women who are virally suppressed at labour and delivery
 *
 * Numerator: Number of HIV-positive pregnant women on ART during pregnancy and delivering at a facility during the reporting period who were virally suppressed (&lt;1000 copies/mL) at delivery
 * Numerator Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;Place of delivery&quot; is a 'Health facility' AND &quot;Delivery date&quot; is in the reporting period AND &quot;Date of viral load sample collection&quot; is on &quot;Delivery date&quot; AND &quot;Viral load test result&quot; LESS THAN 1000 copies/mL
 * Numerator Exclusions: 
 *
 * Denominator: Number of HIV-positive pregnant women on ART during pregnancy who deliver at a facility during the reporting period and had a viral load test during delivery, or the estimated total number of pregnant women living with HIV
 * Denominator Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;Place of delivery&quot; is a 'Health facility' AND &quot;Delivery date&quot; is in the reporting period AND &quot;Date of viral load sample collection&quot; is on &quot;Delivery date&quot; |  | Alternatively: *Estimated total number of pregnant women living with HIV
 * Denominator Exclusions: 
 *
 * Disaggregations:
 * • Age (&lt;15, 15–19, 20–25, 25+ years) 
 *  • Timing of ART initiation (during pregnancy, on ART at first ANC visit) 
 *  • Cities and other administrative regions of epidemiologic importance
 *
 * Disaggregation Elements: Age | Timing of ART initiation
 *
 * Numerator and Denominator Elements:
 * Date of viral load sample collection 
 *  Delivery date 
 *  HIV status 
 *  Place of delivery 
 *  Viral load test 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.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.DE194: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load
 * HIV.D.DE387: Viral load test result | Result from the viral load test in number of copies/mL
 * HIV.E.DE41: Timing of ART initiation | When the pregnant woman or mother initiated ART, for women living with HIV.
 * HIV.E.DE42: Already on ART at first antenatal care visit | The pregnant woman was already on antiretroviral therapy (ART) at first antenatal care visit
 * HIV.E.DE43: Newly on ART during pregnancy | The pregnant woman started ART during her pregnancy
 * HIV.E.DE44: Newly on ART during labour and delivery | The woman started ART during labour and delivery
 * HIV.E.DE46: Delivery date | Date on which the woman delivered
 * HIV.E.DE67: Place of delivery | The type of place where the woman delivered
 * HIV.E.DE68: Health facility | The woman delivered at a health facility
 * HIV.E.DE69: Home | The woman delivered at home
 * HIV.E.DE70: Other | The woman delivered at another location that is not at home or at a health facility
 * HIV.G.DE8: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load
 * HIV.G.DE12: Viral load test result | Result from the viral load test in number of copies/mL
 * HIV.SRV.DE12: Date of viral load sample collection | Date and time when the sample was collected to test the client's HIV viral load
 * HIV.SRV.DE13: Viral load test result | Result from the viral load test in number of copies/mL
 *
 * Additional Context
 * - what it measures: This indicator measures viral suppression at the time of delivery among HIV-positive pregnant women.
 * - rationale: • Viral suppression at the time of delivery is a service quality measure at a critical point in the vertical transmission risk period. | • Two different denominators give indicators similar to general measures of viral suppression among people living with HIV: The programme-based/service delivery denominator, that is, those on ART, delivering in a facility and having a viral load test, measures the third &quot;95&quot; target. The population-based denominator, that is, viral load among all estimated pregnant women living with HIV, regardless of ART status or ANC/facility attendance, measures population viral load suppression (of pregnant women living with HIV).
 * - method: For the numerator:  | Patient monitoring tools/EMRs (for example, PMTCT registers, patient records) |  | For the denominator: | • Population-based denominator: modelling-based estimates (for example, Spectrum AIM) | • Programme-based/service delivery denominator: programme records, labour and delivery registers/EMRs | Note: This indicator should be interpreted with consideration of the VL testing coverage of pregnant women living with HIV at delivery. |  | The recommended reporting period is 12 months.
 * 
 * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm
 */

library HIVIND37Logic

// 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 HIVIndicatorElements called HIE
include HIVElements called HE

// Indicator Definition
parameter &quot;Measurement Period&quot; Interval&lt;Date&gt; default Interval[@2023-01-01, @2023-01-30]

context Patient
/* Populations */

/*
 *Initial Population
 */

define &quot;Initial Population&quot;:
  true

/**
 * Numerator
 * 
 * Definition: Number of HIV-positive pregnant women on ART during pregnancy and delivering at a facility during the reporting period who were virally suppressed (&lt;1000 copies/mL) at delivery
 * Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;Place of delivery&quot; is a 'Health facility' AND &quot;Delivery date&quot; is in the reporting period AND &quot;Date of viral load sample collection&quot; is on &quot;Delivery date&quot; AND &quot;Viral load test result&quot; LESS THAN 1000 copies/mL
 */

//health facility birth
define &quot;First Health facility&quot;:
  (First(HE.&quot;Health facility&quot;))

define &quot;Numerator&quot;:
  HIE.&quot;Has HIV-positive Status&quot;
  and HIE.&quot;On ART D.DE38&quot;
  and HIE.&quot;Health facility&quot;
  and exists(
    HIE.&quot;Viral load test result D.DE387&quot; VL
    with HE.&quot;viral load sample collection&quot; P 
    such that VL.partOf.references(P) and start of P.performed.toInterval() = start of &quot;First Health facility&quot;.effective.toInterval()
    where VL.value &lt; 1000
    )


/**
 * Denominator
 *
 * Definition: Number of HIV-positive pregnant women on ART during pregnancy who deliver at a facility during the reporting period and had a viral load test during delivery, or the estimated total number of pregnant women living with HIV
 * Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;Place of delivery&quot; is a 'Health facility' AND &quot;Delivery date&quot; is in the reporting period AND &quot;Date of viral load sample collection&quot; is on &quot;Delivery date&quot; |  | Alternatively: *Estimated total number of pregnant women living with HIV
 */

define &quot;Denominator&quot;:
  HIE.&quot;Has HIV-positive Status&quot;
  and HIE.&quot;On ART D.DE38&quot;
  and HIE.&quot;Health facility&quot;
  and exists(
    HIE.&quot;Viral load test result D.DE387&quot; VL
    with HE.&quot;viral load sample collection&quot; P 
    such that VL.partOf.references(P) and start of P.performed.toInterval() = start of &quot;First Health facility&quot;.effective.toInterval()
    )

/* end Populations */

/*
 * Disaggregators
 */


define &quot;Age Stratifier&quot;:
	HIE.&quot;By Age Stratifier 3&quot;

define &quot;Geographic Region Stratifier&quot;:
	HIE.&quot;By Geographic Region Stratifier&quot;

define &quot;Timing of ART initiation&quot;:
  HIE.&quot;Timing of ART initiation&quot;

define &quot;Stratification&quot;:
 HIE.&quot;By Age Stratifier 3&quot;
+ ':' + HIE.&quot;By Geographic Region Stratifier&quot;
+ HIE.&quot;Timing of ART initiation&quot;.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/HIVIND37Logic"/>
  <version value="0.4.3"/>
  <name value="HIVIND37Logic"/>
  <title value="HIV.IND.37 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 HIV-positive pregnant women who are virally suppressed at labour and delivery"/>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuMzcgTG9naWMKICogUmVmIE5vOiBWRVIuMQogKiBTaG9ydCBOYW1lOiBWaXJhbCBzdXBwcmVzc2lvbiBhdCBsYWJvdXIgYW5kIGRlbGl2ZXJ5CiAqCiAqIERlZmluaXRpb246ICUgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIHdobyBhcmUgdmlyYWxseSBzdXBwcmVzc2VkIGF0IGxhYm91ciBhbmQgZGVsaXZlcnkKICoKICogTnVtZXJhdG9yOiBOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIG9uIEFSVCBkdXJpbmcgcHJlZ25hbmN5IGFuZCBkZWxpdmVyaW5nIGF0IGEgZmFjaWxpdHkgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kIHdobyB3ZXJlIHZpcmFsbHkgc3VwcHJlc3NlZCAoPDEwMDAgY29waWVzL21MKSBhdCBkZWxpdmVyeQogKiBOdW1lcmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJQbGFjZSBvZiBkZWxpdmVyeSIgaXMgYSAnSGVhbHRoIGZhY2lsaXR5JyBBTkQgIkRlbGl2ZXJ5IGRhdGUiIGlzIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAiRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIiBpcyBvbiAiRGVsaXZlcnkgZGF0ZSIgQU5EICJWaXJhbCBsb2FkIHRlc3QgcmVzdWx0IiBMRVNTIFRIQU4gMTAwMCBjb3BpZXMvbUwKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEZW5vbWluYXRvcjogTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiBvbiBBUlQgZHVyaW5nIHByZWduYW5jeSB3aG8gZGVsaXZlciBhdCBhIGZhY2lsaXR5IGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCBhbmQgaGFkIGEgdmlyYWwgbG9hZCB0ZXN0IGR1cmluZyBkZWxpdmVyeSwgb3IgdGhlIGVzdGltYXRlZCB0b3RhbCBudW1iZXIgb2YgcHJlZ25hbnQgd29tZW4gbGl2aW5nIHdpdGggSElWCiAqIERlbm9taW5hdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIEFORCAiUGxhY2Ugb2YgZGVsaXZlcnkiIGlzIGEgJ0hlYWx0aCBmYWNpbGl0eScgQU5EICJEZWxpdmVyeSBkYXRlIiBpcyBpbiB0aGUgcmVwb3J0aW5nIHBlcmlvZCBBTkQgIkRhdGUgb2YgdmlyYWwgbG9hZCBzYW1wbGUgY29sbGVjdGlvbiIgaXMgb24gIkRlbGl2ZXJ5IGRhdGUiIHwgIHwgQWx0ZXJuYXRpdmVseTogKkVzdGltYXRlZCB0b3RhbCBudW1iZXIgb2YgcHJlZ25hbnQgd29tZW4gbGl2aW5nIHdpdGggSElWCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIOKAoiBBZ2UgKDwxNSwgMTXigJMxOSwgMjDigJMyNSwgMjUrIHllYXJzKSAKICogIOKAosKgVGltaW5nIG9mIEFSVCBpbml0aWF0aW9uIChkdXJpbmcgcHJlZ25hbmN5LCBvbiBBUlQgYXQgZmlyc3QgQU5DIHZpc2l0KSAKICogIOKAoiBDaXRpZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIHJlZ2lvbnMgb2YgZXBpZGVtaW9sb2dpYyBpbXBvcnRhbmNlCiAqCiAqIERpc2FnZ3JlZ2F0aW9uIEVsZW1lbnRzOiBBZ2UgfCBUaW1pbmcgb2YgQVJUIGluaXRpYXRpb24KICoKICogTnVtZXJhdG9yIGFuZCBEZW5vbWluYXRvciBFbGVtZW50czoKICogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIAogKiAgRGVsaXZlcnkgZGF0ZSAKICogIEhJViBzdGF0dXMgCiAqICBQbGFjZSBvZiBkZWxpdmVyeSAKICogIFZpcmFsIGxvYWQgdGVzdCByZXN1bHQKICoKICogUmVmZXJlbmNlOiBDb25zb2xpZGF0ZWQgZ3VpZGVsaW5lcyBvbiBwZXJzb24tY2VudHJlZCBISVYgc3RyYXRlZ2ljIGluZm9ybWF0aW9uOiBzdHJlbmd0aGVuaW5nIHJvdXRpbmUgZGF0YSBmb3IgaW1wYWN0LiBHZW5ldmE6IFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb247IDIwMjIKICogCiAqIERhdGEgQ29uY2VwdHM6CiAqIEhJVi5BLkRFMTc6IEFnZSB8IENhbGN1bGF0ZWQgYWdlIChudW1iZXIgb2YgeWVhcnMpIG9mIHRoZSBjbGllbnQgYmFzZWQgb24gZGF0ZSBvZiBiaXJ0aAogKiBISVYuQi5ERTExNTogSElWIHN0YXR1cyB8IEhJViBzdGF0dXMgcmVwb3J0ZWQgYWZ0ZXIgYXBwbHlpbmcgdGhlIG5hdGlvbmFsIEhJViB0ZXN0aW5nIGFsZ29yaXRobS4gTm8gc2luZ2xlIEhJViB0ZXN0IGNhbiBwcm92aWRlIGFuIEhJVi1wb3NpdGl2ZSBkaWFnbm9zaXMuCiAqIEhJVi5CLkRFMTE2OiBISVYtcG9zaXRpdmUgfCBDbGllbnQgaXMgSElWLXBvc2l0aXZlCiAqIEhJVi5CLkRFMTE3OiBISVYtbmVnYXRpdmUgfCBDbGllbnQgaXMgSElWLW5lZ2F0aXZlCiAqIEhJVi5CLkRFMTE4OiBVbmtub3duIHwgQ2xpZW50IGhhcyB1bmtub3duIEhJViBzdGF0dXMKICogSElWLkQuREUxOTQ6IERhdGUgb2YgdmlyYWwgbG9hZCBzYW1wbGUgY29sbGVjdGlvbiB8IERhdGUgYW5kIHRpbWUgd2hlbiB0aGUgc2FtcGxlIHdhcyBjb2xsZWN0ZWQgdG8gdGVzdCB0aGUgY2xpZW50J3MgSElWIHZpcmFsIGxvYWQKICogSElWLkQuREUzODc6IFZpcmFsIGxvYWQgdGVzdCByZXN1bHQgfCBSZXN1bHQgZnJvbSB0aGUgdmlyYWwgbG9hZCB0ZXN0IGluIG51bWJlciBvZiBjb3BpZXMvbUwKICogSElWLkUuREU0MTogVGltaW5nIG9mIEFSVCBpbml0aWF0aW9uIHwgV2hlbiB0aGUgcHJlZ25hbnQgd29tYW4gb3IgbW90aGVyIGluaXRpYXRlZCBBUlQsIGZvciB3b21lbiBsaXZpbmcgd2l0aCBISVYuCiAqIEhJVi5FLkRFNDI6IEFscmVhZHkgb24gQVJUIGF0IGZpcnN0IGFudGVuYXRhbCBjYXJlIHZpc2l0IHwgVGhlIHByZWduYW50IHdvbWFuIHdhcyBhbHJlYWR5IG9uIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkgKEFSVCkgYXQgZmlyc3QgYW50ZW5hdGFsIGNhcmUgdmlzaXQKICogSElWLkUuREU0MzogTmV3bHkgb24gQVJUIGR1cmluZyBwcmVnbmFuY3kgfCBUaGUgcHJlZ25hbnQgd29tYW4gc3RhcnRlZCBBUlQgZHVyaW5nIGhlciBwcmVnbmFuY3kKICogSElWLkUuREU0NDogTmV3bHkgb24gQVJUIGR1cmluZyBsYWJvdXIgYW5kIGRlbGl2ZXJ5IHwgVGhlIHdvbWFuIHN0YXJ0ZWQgQVJUIGR1cmluZyBsYWJvdXIgYW5kIGRlbGl2ZXJ5CiAqIEhJVi5FLkRFNDY6IERlbGl2ZXJ5IGRhdGUgfCBEYXRlIG9uIHdoaWNoIHRoZSB3b21hbiBkZWxpdmVyZWQKICogSElWLkUuREU2NzogUGxhY2Ugb2YgZGVsaXZlcnkgfCBUaGUgdHlwZSBvZiBwbGFjZSB3aGVyZSB0aGUgd29tYW4gZGVsaXZlcmVkCiAqIEhJVi5FLkRFNjg6IEhlYWx0aCBmYWNpbGl0eSB8IFRoZSB3b21hbiBkZWxpdmVyZWQgYXQgYSBoZWFsdGggZmFjaWxpdHkKICogSElWLkUuREU2OTogSG9tZSB8IFRoZSB3b21hbiBkZWxpdmVyZWQgYXQgaG9tZQogKiBISVYuRS5ERTcwOiBPdGhlciB8IFRoZSB3b21hbiBkZWxpdmVyZWQgYXQgYW5vdGhlciBsb2NhdGlvbiB0aGF0IGlzIG5vdCBhdCBob21lIG9yIGF0IGEgaGVhbHRoIGZhY2lsaXR5CiAqIEhJVi5HLkRFODogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIHwgRGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBzYW1wbGUgd2FzIGNvbGxlY3RlZCB0byB0ZXN0IHRoZSBjbGllbnQncyBISVYgdmlyYWwgbG9hZAogKiBISVYuRy5ERTEyOiBWaXJhbCBsb2FkIHRlc3QgcmVzdWx0IHwgUmVzdWx0IGZyb20gdGhlIHZpcmFsIGxvYWQgdGVzdCBpbiBudW1iZXIgb2YgY29waWVzL21MCiAqIEhJVi5TUlYuREUxMjogRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIHwgRGF0ZSBhbmQgdGltZSB3aGVuIHRoZSBzYW1wbGUgd2FzIGNvbGxlY3RlZCB0byB0ZXN0IHRoZSBjbGllbnQncyBISVYgdmlyYWwgbG9hZAogKiBISVYuU1JWLkRFMTM6IFZpcmFsIGxvYWQgdGVzdCByZXN1bHQgfCBSZXN1bHQgZnJvbSB0aGUgdmlyYWwgbG9hZCB0ZXN0IGluIG51bWJlciBvZiBjb3BpZXMvbUwKICoKICogQWRkaXRpb25hbCBDb250ZXh0CiAqIC0gd2hhdCBpdCBtZWFzdXJlczogVGhpcyBpbmRpY2F0b3IgbWVhc3VyZXMgdmlyYWwgc3VwcHJlc3Npb24gYXQgdGhlIHRpbWUgb2YgZGVsaXZlcnkgYW1vbmcgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuLgogKiAtIHJhdGlvbmFsZTog4oCiIFZpcmFsIHN1cHByZXNzaW9uIGF0IHRoZSB0aW1lIG9mIGRlbGl2ZXJ5IGlzIGEgc2VydmljZSBxdWFsaXR5IG1lYXN1cmUgYXQgYSBjcml0aWNhbCBwb2ludCBpbiB0aGUgdmVydGljYWwgdHJhbnNtaXNzaW9uIHJpc2sgcGVyaW9kLiB8IOKAosKgVHdvIGRpZmZlcmVudCBkZW5vbWluYXRvcnMgZ2l2ZSBpbmRpY2F0b3JzIHNpbWlsYXIgdG8gZ2VuZXJhbCBtZWFzdXJlcyBvZiB2aXJhbCBzdXBwcmVzc2lvbiBhbW9uZyBwZW9wbGUgbGl2aW5nIHdpdGggSElWOiBUaGUgcHJvZ3JhbW1lLWJhc2VkL3NlcnZpY2UgZGVsaXZlcnkgZGVub21pbmF0b3IsIHRoYXQgaXMsIHRob3NlIG9uIEFSVCwgZGVsaXZlcmluZyBpbiBhIGZhY2lsaXR5IGFuZCBoYXZpbmcgYSB2aXJhbCBsb2FkIHRlc3QsIG1lYXN1cmVzIHRoZSB0aGlyZCAiOTUiIHRhcmdldC4gVGhlIHBvcHVsYXRpb24tYmFzZWQgZGVub21pbmF0b3IsIHRoYXQgaXMsIHZpcmFsIGxvYWQgYW1vbmcgYWxsIGVzdGltYXRlZCBwcmVnbmFudCB3b21lbiBsaXZpbmcgd2l0aCBISVYsIHJlZ2FyZGxlc3Mgb2YgQVJUIHN0YXR1cyBvciBBTkMvZmFjaWxpdHkgYXR0ZW5kYW5jZSwgbWVhc3VyZXMgcG9wdWxhdGlvbiB2aXJhbCBsb2FkIHN1cHByZXNzaW9uIChvZiBwcmVnbmFudCB3b21lbiBsaXZpbmcgd2l0aCBISVYpLgogKiAtIG1ldGhvZDogRm9yIHRoZSBudW1lcmF0b3I6ICB8IFBhdGllbnQgbW9uaXRvcmluZyB0b29scy9FTVJzIChmb3IgZXhhbXBsZSwgUE1UQ1QgcmVnaXN0ZXJzLCBwYXRpZW50IHJlY29yZHMpIHwgIHwgRm9yIHRoZSBkZW5vbWluYXRvcjogfCDigKLCoFBvcHVsYXRpb24tYmFzZWQgZGVub21pbmF0b3I6IG1vZGVsbGluZy1iYXNlZCBlc3RpbWF0ZXMgKGZvciBleGFtcGxlLCBTcGVjdHJ1bSBBSU0pIHwg4oCiwqBQcm9ncmFtbWUtYmFzZWQvc2VydmljZSBkZWxpdmVyeSBkZW5vbWluYXRvcjogcHJvZ3JhbW1lIHJlY29yZHMsIGxhYm91ciBhbmQgZGVsaXZlcnkgcmVnaXN0ZXJzL0VNUnMgfCBOb3RlOiBUaGlzIGluZGljYXRvciBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgd2l0aCBjb25zaWRlcmF0aW9uIG9mIHRoZSBWTCB0ZXN0aW5nIGNvdmVyYWdlIG9mIHByZWduYW50IHdvbWVuIGxpdmluZyB3aXRoIEhJViBhdCBkZWxpdmVyeS4gfCAgfCBUaGUgcmVjb21tZW5kZWQgcmVwb3J0aW5nIHBlcmlvZCBpcyAxMiBtb250aHMuCiAqIAogKiBTdWdnZXN0ZWQgU2NvcmluZyBNZXRob2Q6IHByb3BvcnRpb24gfCBodHRwOi8vaGw3Lm9yZy9maGlyL3VzL2NxZm1lYXN1cmVzL1N0cnVjdHVyZURlZmluaXRpb24vcHJvcG9ydGlvbi1tZWFzdXJlLWNxZm0KICovCgpsaWJyYXJ5IEhJVklORDM3TG9naWMKCi8vIEluY2x1ZGVkIExpYnJhcmllcwp1c2luZyBGSElSIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBISVZDb21tb24gdmVyc2lvbiAnMC4wLjEnIGNhbGxlZCBISUMKaW5jbHVkZSBGSElSSGVscGVycyB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgV0hPQ29tbW9uIGNhbGxlZCBXQ29tCgppbmNsdWRlIEhJVkluZGljYXRvckVsZW1lbnRzIGNhbGxlZCBISUUKaW5jbHVkZSBISVZFbGVtZW50cyBjYWxsZWQgSEUKCi8vIEluZGljYXRvciBEZWZpbml0aW9uCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlPiBkZWZhdWx0IEludGVydmFsW0AyMDIzLTAxLTAxLCBAMjAyMy0wMS0zMF0KCmNvbnRleHQgUGF0aWVudAovKiBQb3B1bGF0aW9ucyAqLwoKLyoKICpJbml0aWFsIFBvcHVsYXRpb24KICovCgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgdHJ1ZQoKLyoqCiAqIE51bWVyYXRvcgogKiAKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIEhJVi1wb3NpdGl2ZSBwcmVnbmFudCB3b21lbiBvbiBBUlQgZHVyaW5nIHByZWduYW5jeSBhbmQgZGVsaXZlcmluZyBhdCBhIGZhY2lsaXR5IGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCB3aG8gd2VyZSB2aXJhbGx5IHN1cHByZXNzZWQgKDwxMDAwIGNvcGllcy9tTCkgYXQgZGVsaXZlcnkKICogQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJQbGFjZSBvZiBkZWxpdmVyeSIgaXMgYSAnSGVhbHRoIGZhY2lsaXR5JyBBTkQgIkRlbGl2ZXJ5IGRhdGUiIGlzIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAiRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIiBpcyBvbiAiRGVsaXZlcnkgZGF0ZSIgQU5EICJWaXJhbCBsb2FkIHRlc3QgcmVzdWx0IiBMRVNTIFRIQU4gMTAwMCBjb3BpZXMvbUwKICovCgovL2hlYWx0aCBmYWNpbGl0eSBiaXJ0aApkZWZpbmUgIkZpcnN0IEhlYWx0aCBmYWNpbGl0eSI6CiAgKEZpcnN0KEhFLiJIZWFsdGggZmFjaWxpdHkiKSkKCmRlZmluZSAiTnVtZXJhdG9yIjoKICBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIgogIGFuZCBISUUuIk9uIEFSVCBELkRFMzgiCiAgYW5kIEhJRS4iSGVhbHRoIGZhY2lsaXR5IgogIGFuZCBleGlzdHMoCiAgICBISUUuIlZpcmFsIGxvYWQgdGVzdCByZXN1bHQgRC5ERTM4NyIgVkwKICAgIHdpdGggSEUuInZpcmFsIGxvYWQgc2FtcGxlIGNvbGxlY3Rpb24iIFAgCiAgICBzdWNoIHRoYXQgVkwucGFydE9mLnJlZmVyZW5jZXMoUCkgYW5kIHN0YXJ0IG9mIFAucGVyZm9ybWVkLnRvSW50ZXJ2YWwoKSA9IHN0YXJ0IG9mICJGaXJzdCBIZWFsdGggZmFjaWxpdHkiLmVmZmVjdGl2ZS50b0ludGVydmFsKCkKICAgIHdoZXJlIFZMLnZhbHVlIDwgMTAwMAogICAgKQoKCi8qKgogKiBEZW5vbWluYXRvcgogKgogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgSElWLXBvc2l0aXZlIHByZWduYW50IHdvbWVuIG9uIEFSVCBkdXJpbmcgcHJlZ25hbmN5IHdobyBkZWxpdmVyIGF0IGEgZmFjaWxpdHkgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kIGFuZCBoYWQgYSB2aXJhbCBsb2FkIHRlc3QgZHVyaW5nIGRlbGl2ZXJ5LCBvciB0aGUgZXN0aW1hdGVkIHRvdGFsIG51bWJlciBvZiBwcmVnbmFudCB3b21lbiBsaXZpbmcgd2l0aCBISVYKICogQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJQbGFjZSBvZiBkZWxpdmVyeSIgaXMgYSAnSGVhbHRoIGZhY2lsaXR5JyBBTkQgIkRlbGl2ZXJ5IGRhdGUiIGlzIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kIEFORCAiRGF0ZSBvZiB2aXJhbCBsb2FkIHNhbXBsZSBjb2xsZWN0aW9uIiBpcyBvbiAiRGVsaXZlcnkgZGF0ZSIgfCAgfCBBbHRlcm5hdGl2ZWx5OiAqRXN0aW1hdGVkIHRvdGFsIG51bWJlciBvZiBwcmVnbmFudCB3b21lbiBsaXZpbmcgd2l0aCBISVYKICovCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIgogIGFuZCBISUUuIk9uIEFSVCBELkRFMzgiCiAgYW5kIEhJRS4iSGVhbHRoIGZhY2lsaXR5IgogIGFuZCBleGlzdHMoCiAgICBISUUuIlZpcmFsIGxvYWQgdGVzdCByZXN1bHQgRC5ERTM4NyIgVkwKICAgIHdpdGggSEUuInZpcmFsIGxvYWQgc2FtcGxlIGNvbGxlY3Rpb24iIFAgCiAgICBzdWNoIHRoYXQgVkwucGFydE9mLnJlZmVyZW5jZXMoUCkgYW5kIHN0YXJ0IG9mIFAucGVyZm9ybWVkLnRvSW50ZXJ2YWwoKSA9IHN0YXJ0IG9mICJGaXJzdCBIZWFsdGggZmFjaWxpdHkiLmVmZmVjdGl2ZS50b0ludGVydmFsKCkKICAgICkKCi8qIGVuZCBQb3B1bGF0aW9ucyAqLwoKLyoKICogRGlzYWdncmVnYXRvcnMKICovCgoKZGVmaW5lICJBZ2UgU3RyYXRpZmllciI6CglISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIDMiCgpkZWZpbmUgIkdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiOgoJSElFLiJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIgoKZGVmaW5lICJUaW1pbmcgb2YgQVJUIGluaXRpYXRpb24iOgogIEhJRS4iVGltaW5nIG9mIEFSVCBpbml0aWF0aW9uIgoKZGVmaW5lICJTdHJhdGlmaWNhdGlvbiI6CiBISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIDMiCisgJzonICsgSElFLiJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIgorIEhJRS4iVGltaW5nIG9mIEFSVCBpbml0aWF0aW9uIi5jb2RlIAo="/>
  </content>
</Library>