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.33 Logic - XML Representation

Draft as of 2025-02-07

Raw xml | Download


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

        
        
        <tr>
            <th scope="row"><b>Id: </b></th>
            <td style="padding-left: 4px;">HIVIND33Logic</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-HIVIND33Logic.html">HIV.IND.33 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>Number and % of people living with HIV on ART who had a viral load result reviewed by six months after initiation of ART</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.33 Logic
 * Ref No: ART.7
 * Short Name: Early viral load testing (at six months)
 *
 * Definition: Number and % of people living with HIV on ART who had a viral load result reviewed by six months after initiation of ART
 *
 * Numerator: Number of people living with HIV on ART who were eligible for VL monitoring at six months after initiation of ART during the reporting period and who had a VL test performed and result reviewed by six months after ART initiation
 * Numerator Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True AND &quot;ART start date&quot; is within reporting period AND &quot;Date viral load test results received by client&quot; within 6 months of &quot;ART start date&quot;
 * Numerator Exclusions: 
 *
 * Denominator: Number of people living with HIV on ART eligible for VL monitoring at six months after initiation of ART during the reporting period
 * Denominator Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True AND &quot;ART start date&quot; is within reporting period
 * Denominator Exclusions: 
 *
 * Disaggregations:
 * • Gender (female, male, other**) 
 *  • Age (0–4, 5–9, 10–14, 15–19, 20–24, 25–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)**** 
 *  • Other priority populations 
 *  • Cities and other administrative regions of epidemiologic importance
 *
 * Disaggregation Elements: Gender | Age | Key population member type | Other priority populations
 *
 * Numerator and Denominator Elements:
 * ART start date 
 *  Date viral load test results received by client 
 *  HIV status 
 *  On ART
 *
 * 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.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.DE72: ART start date | The date on which the client started or restarted antiretroviral therapy (ART)
 * 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.DE38: On ART | Client is currently taking ART
 * HIV.D.DE39: ART start date | The date on which the client started or restarted ART
 * HIV.D.DE193: Date viral load test results received by client | The date on which the client received results from viral load test
 * HIV.D.DE417: Date viral load test results received by client | The date on which the client received results from a viral load test
 * 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.H.DE47: On ART | Client is currently taking ART 
 * HIV.SRV.DE6: ART start date | The date on which the client started or restarted antiretroviral therapy (ART)
 * HIV.Config.DE19: Other priority populations | Other populations of priority of HIV prevention and care in local context (provided during adaptation)
 *
 * Additional Context
 * - what it measures: Measures the extent to which people newly initiating ART receive appropriate and rapid follow-up VL testing to check virologic suppression and to provide an early warning to prompt adherence support and avoid HIV drug resistance.*
 * - rationale: • WHO currently recommends VL testing for all people living with HIV at six months after ART initiation to assess VLS and, in the event of non-suppression, to identify persons in need of intensive adherence counselling and follow-up. | • Virologic suppression is essential to the 95–95–95-related impact goals. | • This indicator complements the VL testing coverage (ART.6) and VL suppression (ART.3) indicators.
 * - method: For the numerator and denominator: Patient monitoring tools (for example, ART registers, cohort reporting forms, patient records/EMRs, laboratory information system) |  | The time window for early VL monitoring can include a margin of +/– one month, that is, a routine VL test can take place any time from five to seven months after initiation of ART.
 * 
 * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm
 */

library HIVIND33Logic

// 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 &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 people living with HIV on ART who were eligible for VL monitoring at six months after initiation of ART during the reporting period and who had a VL test performed and result reviewed by six months after ART initiation
 * Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True AND &quot;ART start date&quot; is within reporting period AND &quot;Date viral load test results received by client&quot; within 6 months of &quot;ART start date&quot;
 */

define &quot;Numerator&quot;:
  HIE.&quot;Has HIV-positive Status&quot;
  and HIE.&quot;On ART H.DE47&quot;
   and (date from start of HE.&quot;First On ART&quot;.effective.toInterval() during &quot;Measurement Period&quot;)
   and (months between (start of First(HE.&quot;Viral load tests received after ART intitiation&quot;).issued.toInterval()) and (date from start of HE.&quot;First On ART&quot;.effective.toInterval()) &lt; 6 months)


/**
 * Denominator
 *
 * Definition: Number of people living with HIV on ART eligible for VL monitoring at six months after initiation of ART during the reporting period
 * Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True AND &quot;ART start date&quot; is within reporting period
 */

define &quot;Denominator&quot;:
  HIE.&quot;Has HIV-positive Status&quot;
  and HIE.&quot;On ART H.DE47&quot;
   and (date from start of HE.&quot;First On ART&quot;.effective.toInterval() during &quot;Measurement Period&quot;)
    

/* end Populations */

/*
 * Disaggregators
 */

define &quot;Administrative Gender Stratifier&quot;:
	HIE.&quot;By Administrative Gender Stratifier&quot;

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

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

define &quot;patientGroups Stratifier&quot;:
	HIE.&quot;patientGroups&quot;

define &quot;Stratification&quot;:
 HIE.&quot;By Administrative Gender Stratifier&quot;.code 
  + ':' + HIE.&quot;By Age Stratifier 2&quot;
+ ':' + HIE.&quot;By Geographic Region Stratifier&quot;
+ Combine(HIE.patientGroups, ':')</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/HIVIND33Logic"/>
  <version value="0.4.3"/>
  <name value="HIVIND33Logic"/>
  <title value="HIV.IND.33 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="Number and % of people living with HIV on ART who had a viral load result reviewed by six months after initiation of ART"/>
  <content>
    <contentType value="text/cql"/>
    <data
          value="LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuMzMgTG9naWMKICogUmVmIE5vOiBBUlQuNwogKiBTaG9ydCBOYW1lOiBFYXJseSB2aXJhbCBsb2FkIHRlc3RpbmcgKGF0IHNpeCBtb250aHMpCiAqCiAqIERlZmluaXRpb246IE51bWJlciBhbmQgJSBvZiBwZW9wbGUgbGl2aW5nIHdpdGggSElWIG9uIEFSVCB3aG8gaGFkIGEgdmlyYWwgbG9hZCByZXN1bHQgcmV2aWV3ZWQgYnkgc2l4IG1vbnRocyBhZnRlciBpbml0aWF0aW9uIG9mIEFSVAogKgogKiBOdW1lcmF0b3I6IE51bWJlciBvZiBwZW9wbGUgbGl2aW5nIHdpdGggSElWIG9uIEFSVCB3aG8gd2VyZSBlbGlnaWJsZSBmb3IgVkwgbW9uaXRvcmluZyBhdCBzaXggbW9udGhzIGFmdGVyIGluaXRpYXRpb24gb2YgQVJUIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZCBhbmQgd2hvIGhhZCBhIFZMIHRlc3QgcGVyZm9ybWVkIGFuZCByZXN1bHQgcmV2aWV3ZWQgYnkgc2l4IG1vbnRocyBhZnRlciBBUlQgaW5pdGlhdGlvbgogKiBOdW1lcmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJPbiBBUlQiPVRydWUgQU5EICJBUlQgc3RhcnQgZGF0ZSIgaXMgd2l0aGluIHJlcG9ydGluZyBwZXJpb2QgQU5EICJEYXRlIHZpcmFsIGxvYWQgdGVzdCByZXN1bHRzIHJlY2VpdmVkIGJ5IGNsaWVudCIgd2l0aGluIDYgbW9udGhzIG9mICJBUlQgc3RhcnQgZGF0ZSIKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEZW5vbWluYXRvcjogTnVtYmVyIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgb24gQVJUIGVsaWdpYmxlIGZvciBWTCBtb25pdG9yaW5nIGF0IHNpeCBtb250aHMgYWZ0ZXIgaW5pdGlhdGlvbiBvZiBBUlQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqIERlbm9taW5hdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIEFORCAiT24gQVJUIj1UcnVlIEFORCAiQVJUIHN0YXJ0IGRhdGUiIGlzIHdpdGhpbiByZXBvcnRpbmcgcGVyaW9kCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IAogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIOKAosKgR2VuZGVyIChmZW1hbGUsIG1hbGUsIG90aGVyKiopIAogKiAg4oCiwqBBZ2UgKDDigJM0LCA14oCTOSwgMTDigJMxNCwgMTXigJMxOSwgMjDigJMyNCwgMjXigJM0OSwgNTArIHllYXJzKSoqKiAKICogIOKAosKgS2V5IHBvcHVsYXRpb25zIChtZW4gd2hvIGhhdmUgc2V4IHdpdGggbWVuLCBwZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5ncywgcGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MsIHNleCB3b3JrZXJzLCB0cmFucyBhbmQgZ2VuZGVyIGRpdmVyc2UgcGVvcGxlKSoqKiogCiAqICDigKLCoE90aGVyIHByaW9yaXR5IHBvcHVsYXRpb25zIAogKiAg4oCiwqBDaXRpZXMgYW5kIG90aGVyIGFkbWluaXN0cmF0aXZlIHJlZ2lvbnMgb2YgZXBpZGVtaW9sb2dpYyBpbXBvcnRhbmNlCiAqCiAqIERpc2FnZ3JlZ2F0aW9uIEVsZW1lbnRzOiBHZW5kZXIgfCBBZ2UgfCBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZSB8IE90aGVyIHByaW9yaXR5IHBvcHVsYXRpb25zCiAqCiAqIE51bWVyYXRvciBhbmQgRGVub21pbmF0b3IgRWxlbWVudHM6CiAqIEFSVCBzdGFydCBkYXRlIAogKiAgRGF0ZSB2aXJhbCBsb2FkIHRlc3QgcmVzdWx0cyByZWNlaXZlZCBieSBjbGllbnQgCiAqICBISVYgc3RhdHVzIAogKiAgT24gQVJUCiAqCiAqIFJlZmVyZW5jZTogQ29uc29saWRhdGVkIGd1aWRlbGluZXMgb24gcGVyc29uLWNlbnRyZWQgSElWIHN0cmF0ZWdpYyBpbmZvcm1hdGlvbjogc3RyZW5ndGhlbmluZyByb3V0aW5lIGRhdGEgZm9yIGltcGFjdC4gR2VuZXZhOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uOyAyMDIyCiAqIAogKiBEYXRhIENvbmNlcHRzOgogKiBISVYuQS5ERTE3OiBBZ2UgfCBDYWxjdWxhdGVkIGFnZSAobnVtYmVyIG9mIHllYXJzKSBvZiB0aGUgY2xpZW50IGJhc2VkIG9uIGRhdGUgb2YgYmlydGgKICogSElWLkEuREUxODogR2VuZGVyKiB8IEdlbmRlciBvZiB0aGUgY2xpZW50KgogKiBISVYuQS5ERTE5OiBGZW1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyBmZW1hbGUKICogSElWLkEuREUyMDogTWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIG1hbGUKICogSElWLkEuREUyMTogVHJhbnNnZW5kZXIgbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zZ2VuZGVyIG1hbGUKICogSElWLkEuREUyMjogVHJhbnNnZW5kZXIgZmVtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnNnZW5kZXIgZmVtYWxlCiAqIEhJVi5BLkRFMjM6IE90aGVyIHwgQWRkaXRpb25hbCBjYXRlZ29yeQogKiBISVYuQi5ERTUwOiBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZSogfCBUaGUgdHlwZSBvZiBrZXkgcG9wdWxhdGlvbiB0aGF0IHRoZSBjbGllbnQgaXMgaW5jbHVkZWQgaW4KICogSElWLkIuREU1MTogU2V4IHdvcmtlciB8IENsaWVudCBpcyBhIHNleCB3b3JrZXIKICogSElWLkIuREU1MjogTWVuIHdobyBoYXZlIHNleCB3aXRoIG1lbiB8IENsaWVudCBpcyBhIG1hbiB3aG8gaGFzIHNleCB3aXRoIG1lbgogKiBISVYuQi5ERTUzOiBUcmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UgcGVvcGxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlCiAqIEhJVi5CLkRFNTQ6IFBlb3BsZSB3aG8gaW5qZWN0IGRydWdzIHwgQ2xpZW50IGlzIGEgcGVyc29uIHdobyBpbmplY3RzIGRydWdzCiAqIEhJVi5CLkRFNTU6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmdzIHwgQ2xpZW50IGxpdmVzIGluIGEgcHJpc29uIG9yIGFub3RoZXIgY2xvc2VkIHNldHRpbmcKICogSElWLkIuREU3MjogQVJUIHN0YXJ0IGRhdGUgfCBUaGUgZGF0ZSBvbiB3aGljaCB0aGUgY2xpZW50IHN0YXJ0ZWQgb3IgcmVzdGFydGVkIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkgKEFSVCkKICogSElWLkIuREUxMTU6IEhJViBzdGF0dXMgfCBISVYgc3RhdHVzIHJlcG9ydGVkIGFmdGVyIGFwcGx5aW5nIHRoZSBuYXRpb25hbCBISVYgdGVzdGluZyBhbGdvcml0aG0uIE5vIHNpbmdsZSBISVYgdGVzdCBjYW4gcHJvdmlkZSBhbiBISVYtcG9zaXRpdmUgZGlhZ25vc2lzLgogKiBISVYuQi5ERTExNjogSElWLXBvc2l0aXZlIHwgQ2xpZW50IGlzIEhJVi1wb3NpdGl2ZQogKiBISVYuQi5ERTExNzogSElWLW5lZ2F0aXZlIHwgQ2xpZW50IGlzIEhJVi1uZWdhdGl2ZQogKiBISVYuQi5ERTExODogVW5rbm93biB8IENsaWVudCBoYXMgdW5rbm93biBISVYgc3RhdHVzCiAqIEhJVi5ELkRFMzg6IE9uIEFSVCB8IENsaWVudCBpcyBjdXJyZW50bHkgdGFraW5nIEFSVAogKiBISVYuRC5ERTM5OiBBUlQgc3RhcnQgZGF0ZSB8IFRoZSBkYXRlIG9uIHdoaWNoIHRoZSBjbGllbnQgc3RhcnRlZCBvciByZXN0YXJ0ZWQgQVJUCiAqIEhJVi5ELkRFMTkzOiBEYXRlIHZpcmFsIGxvYWQgdGVzdCByZXN1bHRzIHJlY2VpdmVkIGJ5IGNsaWVudCB8IFRoZSBkYXRlIG9uIHdoaWNoIHRoZSBjbGllbnQgcmVjZWl2ZWQgcmVzdWx0cyBmcm9tIHZpcmFsIGxvYWQgdGVzdAogKiBISVYuRC5ERTQxNzogRGF0ZSB2aXJhbCBsb2FkIHRlc3QgcmVzdWx0cyByZWNlaXZlZCBieSBjbGllbnQgfCBUaGUgZGF0ZSBvbiB3aGljaCB0aGUgY2xpZW50IHJlY2VpdmVkIHJlc3VsdHMgZnJvbSBhIHZpcmFsIGxvYWQgdGVzdAogKiBISVYuRS5ERTExNDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgaW5mYW50J3MgbW90aGVyIGlzIGluY2x1ZGVkIGluCiAqIEhJVi5FLkRFMTE1OiBTZXggd29ya2VyIHwgSW5mYW50J3MgbW90aGVyIGlzIGEgc2V4IHdvcmtlcgogKiBISVYuRS5ERTExNjogUGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MgfCBJbmZhbnQncyBtb3RoZXIgaXMgYSBwZXJzb24gd2hvIGluamVjdHMgZHJ1Z3MKICogSElWLkUuREUxMTc6IFRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZSBwZW9wbGUgfCBJbmZhbnQncyBtb3RoZXIgaWRlbnRpZmllcyBhcyB0cmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UKICogSElWLkUuREUxMTg6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmcgfCBJbmZhbnQncyBtb3RoZXIgaXMgaW4gYSBwcmlzb24gb3IgY2xvc2VkIHNldHRpbmcKICogSElWLkguREU0NzogT24gQVJUIHwgQ2xpZW50IGlzIGN1cnJlbnRseSB0YWtpbmcgQVJUIAogKiBISVYuU1JWLkRFNjogQVJUIHN0YXJ0IGRhdGUgfCBUaGUgZGF0ZSBvbiB3aGljaCB0aGUgY2xpZW50IHN0YXJ0ZWQgb3IgcmVzdGFydGVkIGFudGlyZXRyb3ZpcmFsIHRoZXJhcHkgKEFSVCkKICogSElWLkNvbmZpZy5ERTE5OiBPdGhlciBwcmlvcml0eSBwb3B1bGF0aW9ucyB8IE90aGVyIHBvcHVsYXRpb25zIG9mIHByaW9yaXR5IG9mIEhJViBwcmV2ZW50aW9uIGFuZCBjYXJlIGluIGxvY2FsIGNvbnRleHQgKHByb3ZpZGVkIGR1cmluZyBhZGFwdGF0aW9uKQogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBNZWFzdXJlcyB0aGUgZXh0ZW50IHRvIHdoaWNoIHBlb3BsZSBuZXdseSBpbml0aWF0aW5nIEFSVCByZWNlaXZlIGFwcHJvcHJpYXRlIGFuZCByYXBpZCBmb2xsb3ctdXAgVkwgdGVzdGluZyB0byBjaGVjayB2aXJvbG9naWMgc3VwcHJlc3Npb24gYW5kIHRvIHByb3ZpZGUgYW4gZWFybHkgd2FybmluZyB0byBwcm9tcHQgYWRoZXJlbmNlIHN1cHBvcnQgYW5kIGF2b2lkIEhJViBkcnVnIHJlc2lzdGFuY2UuKgogKiAtIHJhdGlvbmFsZTog4oCiIFdITyBjdXJyZW50bHkgcmVjb21tZW5kcyBWTCB0ZXN0aW5nIGZvciBhbGwgcGVvcGxlIGxpdmluZyB3aXRoIEhJViBhdCBzaXggbW9udGhzIGFmdGVyIEFSVCBpbml0aWF0aW9uIHRvIGFzc2VzcyBWTFMgYW5kLCBpbiB0aGUgZXZlbnQgb2Ygbm9uLXN1cHByZXNzaW9uLCB0byBpZGVudGlmeSBwZXJzb25zIGluIG5lZWQgb2YgaW50ZW5zaXZlIGFkaGVyZW5jZSBjb3Vuc2VsbGluZyBhbmQgZm9sbG93LXVwLiB8IOKAosKgVmlyb2xvZ2ljIHN1cHByZXNzaW9uIGlzIGVzc2VudGlhbCB0byB0aGUgOTXigJM5NeKAkzk1LXJlbGF0ZWQgaW1wYWN0IGdvYWxzLiB8IOKAosKgVGhpcyBpbmRpY2F0b3IgY29tcGxlbWVudHMgdGhlIFZMIHRlc3RpbmcgY292ZXJhZ2UgKEFSVC42KSBhbmQgVkwgc3VwcHJlc3Npb24gKEFSVC4zKSBpbmRpY2F0b3JzLgogKiAtIG1ldGhvZDogRm9yIHRoZSBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yOiBQYXRpZW50IG1vbml0b3JpbmcgdG9vbHMgKGZvciBleGFtcGxlLCBBUlQgcmVnaXN0ZXJzLCBjb2hvcnQgcmVwb3J0aW5nIGZvcm1zLCBwYXRpZW50IHJlY29yZHMvRU1ScywgbGFib3JhdG9yeSBpbmZvcm1hdGlvbiBzeXN0ZW0pIHwgIHwgVGhlIHRpbWUgd2luZG93IGZvciBlYXJseSBWTCBtb25pdG9yaW5nIGNhbiBpbmNsdWRlIGEgbWFyZ2luIG9mICsv4oCTIG9uZSBtb250aCwgdGhhdCBpcywgYSByb3V0aW5lIFZMIHRlc3QgY2FuIHRha2UgcGxhY2UgYW55IHRpbWUgZnJvbSBmaXZlIHRvIHNldmVuIG1vbnRocyBhZnRlciBpbml0aWF0aW9uIG9mIEFSVC4KICogCiAqIFN1Z2dlc3RlZCBTY29yaW5nIE1ldGhvZDogcHJvcG9ydGlvbiB8IGh0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY3FmbWVhc3VyZXMvU3RydWN0dXJlRGVmaW5pdGlvbi9wcm9wb3J0aW9uLW1lYXN1cmUtY3FmbQogKi8KCmxpYnJhcnkgSElWSU5EMzNMb2dpYwoKLy8gSW5jbHVkZWQgTGlicmFyaWVzCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEhJVkNvbW1vbiB2ZXJzaW9uICcwLjAuMScgY2FsbGVkIEhJQwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJwppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQppbmNsdWRlIEhJVkVsZW1lbnRzIGNhbGxlZCBIRQppbmNsdWRlIEhJVkluZGljYXRvckVsZW1lbnRzIGNhbGxlZCBISUUKCi8vIEluZGljYXRvciBEZWZpbml0aW9uCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlPiBkZWZhdWx0IEludGVydmFsW0AyMDIzLTAxLTAxLCBAMjAyMy0wMS0zMF0KCmNvbnRleHQgUGF0aWVudAovKiBQb3B1bGF0aW9ucyAqLwoKLyoKICpJbml0aWFsIFBvcHVsYXRpb24KICovCgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgdHJ1ZQoKLyoqCiAqIE51bWVyYXRvcgogKiAKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgb24gQVJUIHdobyB3ZXJlIGVsaWdpYmxlIGZvciBWTCBtb25pdG9yaW5nIGF0IHNpeCBtb250aHMgYWZ0ZXIgaW5pdGlhdGlvbiBvZiBBUlQgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kIGFuZCB3aG8gaGFkIGEgVkwgdGVzdCBwZXJmb3JtZWQgYW5kIHJlc3VsdCByZXZpZXdlZCBieSBzaXggbW9udGhzIGFmdGVyIEFSVCBpbml0aWF0aW9uCiAqIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIEFORCAiT24gQVJUIj1UcnVlIEFORCAiQVJUIHN0YXJ0IGRhdGUiIGlzIHdpdGhpbiByZXBvcnRpbmcgcGVyaW9kIEFORCAiRGF0ZSB2aXJhbCBsb2FkIHRlc3QgcmVzdWx0cyByZWNlaXZlZCBieSBjbGllbnQiIHdpdGhpbiA2IG1vbnRocyBvZiAiQVJUIHN0YXJ0IGRhdGUiCiAqLwoKZGVmaW5lICJOdW1lcmF0b3IiOgogIEhJRS4iSGFzIEhJVi1wb3NpdGl2ZSBTdGF0dXMiCiAgYW5kIEhJRS4iT24gQVJUIEguREU0NyIKICAgYW5kIChkYXRlIGZyb20gc3RhcnQgb2YgSEUuIkZpcnN0IE9uIEFSVCIuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIpCiAgIGFuZCAobW9udGhzIGJldHdlZW4gKHN0YXJ0IG9mIEZpcnN0KEhFLiJWaXJhbCBsb2FkIHRlc3RzIHJlY2VpdmVkIGFmdGVyIEFSVCBpbnRpdGlhdGlvbiIpLmlzc3VlZC50b0ludGVydmFsKCkpIGFuZCAoZGF0ZSBmcm9tIHN0YXJ0IG9mIEhFLiJGaXJzdCBPbiBBUlQiLmVmZmVjdGl2ZS50b0ludGVydmFsKCkpIDwgNiBtb250aHMpCgoKLyoqCiAqIERlbm9taW5hdG9yCiAqCiAqIERlZmluaXRpb246IE51bWJlciBvZiBwZW9wbGUgbGl2aW5nIHdpdGggSElWIG9uIEFSVCBlbGlnaWJsZSBmb3IgVkwgbW9uaXRvcmluZyBhdCBzaXggbW9udGhzIGFmdGVyIGluaXRpYXRpb24gb2YgQVJUIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICJISVYgc3RhdHVzIj0nSElWLXBvc2l0aXZlJyBBTkQgIk9uIEFSVCI9VHJ1ZSBBTkQgIkFSVCBzdGFydCBkYXRlIiBpcyB3aXRoaW4gcmVwb3J0aW5nIHBlcmlvZAogKi8KCmRlZmluZSAiRGVub21pbmF0b3IiOgogIEhJRS4iSGFzIEhJVi1wb3NpdGl2ZSBTdGF0dXMiCiAgYW5kIEhJRS4iT24gQVJUIEguREU0NyIKICAgYW5kIChkYXRlIGZyb20gc3RhcnQgb2YgSEUuIkZpcnN0IE9uIEFSVCIuZWZmZWN0aXZlLnRvSW50ZXJ2YWwoKSBkdXJpbmcgIk1lYXN1cmVtZW50IFBlcmlvZCIpCiAgICAKCi8qIGVuZCBQb3B1bGF0aW9ucyAqLwoKLyoKICogRGlzYWdncmVnYXRvcnMKICovCgpkZWZpbmUgIkFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgQWRtaW5pc3RyYXRpdmUgR2VuZGVyIFN0cmF0aWZpZXIiCgpkZWZpbmUgIkFnZSBTdHJhdGlmaWVyIDIiOgoJSElFLiJCeSBBZ2UgU3RyYXRpZmllciAyIgoKZGVmaW5lICJHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIKCmRlZmluZSAicGF0aWVudEdyb3VwcyBTdHJhdGlmaWVyIjoKCUhJRS4icGF0aWVudEdyb3VwcyIKCmRlZmluZSAiU3RyYXRpZmljYXRpb24iOgogSElFLiJCeSBBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciIuY29kZSAKICArICc6JyArIEhJRS4iQnkgQWdlIFN0cmF0aWZpZXIgMiIKKyAnOicgKyBISUUuIkJ5IEdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiCisgQ29tYmluZShISUUucGF0aWVudEdyb3VwcywgJzonKQ=="/>
  </content>
</Library>