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.56 Logic - JSON Representation

Draft as of 2025-02-07

Raw json | Download

{
  "resourceType" : "Library",
  "id" : "HIVIND56Logic",
  "meta" : {
    "profile" : [
      🔗 "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-shareablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/crmi/StructureDefinition/crmi-publishablelibrary"🔗 ,
      "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-library"🔗 ,
      "http://hl7.org/fhir/uv/cql/StructureDefinition/cql-module"
    ]
  },
  "text" : {
    "status" : "extensions",
    "div" : "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n<div>\n    <table class=\"grid dict\">\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Title: </b></th>\n            <td style=\"padding-left: 4px;\">HIV.IND.56 Logic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Id: </b></th>\n            <td style=\"padding-left: 4px;\">HIVIND56Logic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Version: </b></th>\n            <td style=\"padding-left: 4px;\">0.4.3</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Url: </b></th>\n            <td style=\"padding-left: 4px;\"><a href=\"Library-HIVIND56Logic.html\">HIV.IND.56 Logic</a></td>\n        </tr>\n        \n\n        \n\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Status: </b></th>\n            <td style=\"padding-left: 4px;\">draft</td>\n        </tr>\n        \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        \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><a href=\"http://terminology.hl7.org/6.0.2/CodeSystem-library-type.html\">http://terminology.hl7.org/CodeSystem/library-type</a></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\n        \n        <tr>\n            <th scope=\"row\"><b>Date: </b></th>\n            <td style=\"padding-left: 4px;\">2025-02-07 14:15:45+0000</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Publisher: </b></th>\n            <td style=\"padding-left: 4px;\">WHO</td>\n        </tr>\n        \n\n        \n        <tr>\n            <th scope=\"row\"><b>Description: </b></th>\n            <td style=\"padding-left: 4px;\"><div><p>% of people retained in DSD ART models during the reporting period</p>\n</div></td>\n        </tr>\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \n\n        \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\">/**\n * Library: HIV.IND.56 Logic\n * Ref No: DSD.4\n * Short Name: Retention in DSD ART models\n *\n * Definition: % of people retained in DSD ART models during the reporting period\n *\n * Numerator: Number of people on ART known to be on treatment 12 months after enrolling in a DSD ART model* (also at 24, 36, 48, 60 months, etc. after enrolment in the model)\n * Numerator Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True AND &quot;DSD ART start date&quot;&gt;X months before reporting period end date AND &quot;Currently enrolled in DSD ART model&quot;=True |  | Reported where 'X' is 12, 24, 36, 48, or 60 months\n * Numerator Exclusions: Clients with an &quot;HIV treatment outcome&quot;='Transferred out'\n *\n * Denominator: Number of people on ART enrolled in a DSD ART model 12 months ago, excluding individuals who transferred out (also 24, 36, 48, 60 months ago, etc.)\n * Denominator Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True AND &quot;DSD ART start date&quot;&gt;X months before reporting period end date |  | Reported where 'X' is 12, 24, 36, 48, or 60 months\n * Denominator Exclusions: Clients with an &quot;HIV treatment outcome&quot;='Transferred out'\n *\n * Disaggregations:\n * •\u00a0Gender (female, male, other**) \n *  •\u00a0Age (0–4, 5–14, 15–24, 25+ years) \n *  •\u00a0Key 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)*** \n *  • Cities and other administrative regions of epidemiologic importance\n *\n * Disaggregation Elements: Gender | Age | Key population member type\n *\n * Numerator and Denominator Elements:\n * Currently enrolled in DSD ART model \n *  DSD ART start date \n *  HIV status \n *  On ART\n *\n * Reference: Consolidated guidelines on person-centred HIV strategic information: strengthening routine data for impact. Geneva: World Health Organization; 2022\n * \n * Data Concepts:\n * HIV.A.DE17: Age | Calculated age (number of years) of the client based on date of birth\n * HIV.A.DE18: Gender* | Gender of the client*\n * HIV.A.DE19: Female | Client identifies as female\n * HIV.A.DE20: Male | Client identifies as male\n * HIV.A.DE21: Transgender male | Client identifies as transgender male\n * HIV.A.DE22: Transgender female | Client identifies as transgender female\n * HIV.A.DE23: Other | Additional category\n * HIV.B.DE50: Key population member type* | The type of key population that the client is included in\n * HIV.B.DE51: Sex worker | Client is a sex worker\n * HIV.B.DE52: Men who have sex with men | Client is a man who has sex with men\n * HIV.B.DE53: Trans and gender-diverse people | Client identifies as trans and gender-diverse\n * HIV.B.DE54: People who inject drugs | Client is a person who injects drugs\n * HIV.B.DE55: People living in prisons and other closed settings | Client lives in a prison or another closed setting\n * 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.\n * HIV.B.DE116: HIV-positive | Client is HIV-positive\n * HIV.B.DE117: HIV-negative | Client is HIV-negative\n * HIV.B.DE118: Unknown | Client has unknown HIV status\n * HIV.D.DE38: On ART | Client is currently taking ART\n * HIV.D.DE762: Currently enrolled in DSD ART model | Client currently enrolled in differentiated service delivery (DSD) ART model\n * HIV.D.DE763: DSD ART start date | Date client started on differentiated service delivery (DSD) for ART\n * HIV.E.DE114: Key population member type* | The type of key population that the infant's mother is included in\n * HIV.E.DE115: Sex worker | Infant's mother is a sex worker\n * HIV.E.DE116: People who inject drugs | Infant's mother is a person who injects drugs\n * HIV.E.DE117: Trans and gender-diverse people | Infant's mother identifies as trans and gender-diverse\n * HIV.E.DE118: People living in prisons and other closed setting | Infant's mother is in a prison or closed setting\n * HIV.H.DE47: On ART | Client is currently taking ART \n *\n * Additional Context\n * - what it measures: Retention in DSD ART models among people living with HIV every 12 months after enrolment |  | This indicator is limited to facilities with electronic health information systems, as reporting would be onerous for facilities with paper-based reporting systems.\n * - rationale: As DSD ART is scaled up, it is important to monitor retention on treatment to ensure clinical outcomes at least equivalent with conventional care.\n * - method: EMR/electronic information systems |  | Measurement frequency: quarterly where feasible, maximum annually\n * \n * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm\n */\n\nlibrary HIVIND56Logic\n\n// Included Libraries\nusing FHIR version '4.0.1'\n\ninclude HIVCommon version '0.0.1' called HIC\ninclude FHIRHelpers version '4.0.1'\n\ninclude WHOCommon called WCom\ninclude HIVElements called HE\ninclude HIVIndicatorElements called HIE\ninclude HIVConfig called Config\n\n// Indicator Definition\nparameter &quot;Measurement Period&quot; Interval&lt;Date&gt; default Interval[@2023-01-01, @2023-01-30]\n\ncontext Patient\n/* Populations */\n\n/*\n *Initial Population\n */\n\ndefine &quot;Initial Population&quot;:\n  true\n\n/**\n * Numerator\n * \n * Definition: Number of people on ART known to be on treatment 12 months after enrolling in a DSD ART model* (also at 24, 36, 48, 60 months, etc. after enrolment in the model)\n * Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True AND &quot;DSD ART start date&quot;&gt;X months before reporting period end date AND &quot;Currently enrolled in DSD ART model&quot;=True |  | Reported where 'X' is 12, 24, 36, 48, or 60 months\n */\n  \n\ndefine &quot;Numerator&quot;:\n  HIE.&quot;Has HIV-positive Status&quot;\n   and HIE.&quot;On ART H.DE47&quot;\n   and exists(HE.&quot;DSD ART start date&quot; t where months between start of t and end of &quot;Measurement Period&quot; &gt;= Config.&quot;DSD Retention Interval&quot;)\n   and HIE.&quot;Currently enrolled in DSD ART model&quot;\n\n\n/**\n * Numerator Exclusions\n *\n * Calculation: Clients with an &quot;HIV treatment outcome&quot;='Transferred out'\n */\n    \ndefine &quot;Numerator Exclusions&quot;:\n  HIE.&quot;Has transferred out&quot;\n\n/**\n * Denominator\n *\n * Definition: Number of people on ART enrolled in a DSD ART model 12 months ago, excluding individuals who transferred out (also 24, 36, 48, 60 months ago, etc.)\n * Calculation: COUNT of clients with &quot;HIV status&quot;='HIV-positive' AND &quot;On ART&quot;=True AND &quot;DSD ART start date&quot;&gt;X months before reporting period end date |  | Reported where 'X' is 12, 24, 36, 48, or 60 months\n */\n\ndefine &quot;Denominator&quot;:\n  HIE.&quot;Has HIV-positive Status&quot;\n   and HIE.&quot;On ART H.DE47&quot;\n   and exists(HE.&quot;DSD ART start date&quot; t where months between start of t and end of &quot;Measurement Period&quot; &gt;= Config.&quot;DSD Retention Interval&quot;)\n    \n/**\n* Denominator Exclusions\n*\n* Calculation: Clients with an &quot;HIV treatment outcome&quot;='Transferred out'\n*/\n\ndefine &quot;Denominator Exclusions&quot;:\n  HIE.&quot;Has transferred out&quot;\n\n/* end Populations */\n\n/*\n * Disaggregators\n */\n\ndefine &quot;Administrative Gender Stratifier&quot;:\n\tHIE.&quot;By Administrative Gender Stratifier&quot;\n\ndefine &quot;Age Stratifier&quot;:\n\tHIE.&quot;By Age Stratifier 8&quot;\n\ndefine &quot;Geographic Region Stratifier&quot;:\n\tHIE.&quot;By Geographic Region Stratifier&quot;\n\ndefine &quot;patientGroups Stratifier&quot;:\n\tHIE.&quot;patientGroups&quot;\n\ndefine &quot;Stratification&quot;:\n HIE.&quot;By Administrative Gender Stratifier&quot;.code \n  + ':' + HIE.&quot;By Age Stratifier 8&quot;\n+ ':' + HIE.&quot;By Geographic Region Stratifier&quot;\n+ Combine(HIE.patientGroups, ':')\n</code></pre></td></tr>\n            </table>\n          </td>\n        </tr>\n        \n        \n        \n    </table>\n</div>\n</div>"
  },
  "extension" : [
    {
      "url" : "http://hl7.org/fhir/StructureDefinition/cqf-knowledgeCapability",
      "valueCode" : "computable"
    }
  ],
  "url" : "http://smart.who.int/hiv/Library/HIVIND56Logic",
  "version" : "0.4.3",
  "name" : "HIVIND56Logic",
  "title" : "HIV.IND.56 Logic",
  "status" : "draft",
  "experimental" : true,
  "type" : {
    "coding" : [
      {
        "system" : "http://terminology.hl7.org/CodeSystem/library-type",
        "code" : "logic-library"
      }
    ]
  },
  "date" : "2025-02-07T14:15:45+00:00",
  "publisher" : "WHO",
  "contact" : [
    {
      "name" : "WHO",
      "telecom" : [
        {
          "system" : "url",
          "value" : "http://who.int"
        }
      ]
    }
  ],
  "description" : "% of people retained in DSD ART models during the reporting period",
  "content" : [
    {
      "contentType" : "text/cql",
      "data" : "LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNTYgTG9naWMKICogUmVmIE5vOiBEU0QuNAogKiBTaG9ydCBOYW1lOiBSZXRlbnRpb24gaW4gRFNEIEFSVCBtb2RlbHMKICoKICogRGVmaW5pdGlvbjogJSBvZiBwZW9wbGUgcmV0YWluZWQgaW4gRFNEIEFSVCBtb2RlbHMgZHVyaW5nIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqCiAqIE51bWVyYXRvcjogTnVtYmVyIG9mIHBlb3BsZSBvbiBBUlQga25vd24gdG8gYmUgb24gdHJlYXRtZW50IDEyIG1vbnRocyBhZnRlciBlbnJvbGxpbmcgaW4gYSBEU0QgQVJUIG1vZGVsKiAoYWxzbyBhdCAyNCwgMzYsIDQ4LCA2MCBtb250aHMsIGV0Yy4gYWZ0ZXIgZW5yb2xtZW50IGluIHRoZSBtb2RlbCkKICogTnVtZXJhdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIEFORCAiT24gQVJUIj1UcnVlIEFORCAiRFNEIEFSVCBzdGFydCBkYXRlIj5YIG1vbnRocyBiZWZvcmUgcmVwb3J0aW5nIHBlcmlvZCBlbmQgZGF0ZSBBTkQgIkN1cnJlbnRseSBlbnJvbGxlZCBpbiBEU0QgQVJUIG1vZGVsIj1UcnVlIHwgIHwgUmVwb3J0ZWQgd2hlcmUgJ1gnIGlzIDEyLCAyNCwgMzYsIDQ4LCBvciA2MCBtb250aHMKICogTnVtZXJhdG9yIEV4Y2x1c2lvbnM6IENsaWVudHMgd2l0aCBhbiAiSElWIHRyZWF0bWVudCBvdXRjb21lIj0nVHJhbnNmZXJyZWQgb3V0JwogKgogKiBEZW5vbWluYXRvcjogTnVtYmVyIG9mIHBlb3BsZSBvbiBBUlQgZW5yb2xsZWQgaW4gYSBEU0QgQVJUIG1vZGVsIDEyIG1vbnRocyBhZ28sIGV4Y2x1ZGluZyBpbmRpdmlkdWFscyB3aG8gdHJhbnNmZXJyZWQgb3V0IChhbHNvIDI0LCAzNiwgNDgsIDYwIG1vbnRocyBhZ28sIGV0Yy4pCiAqIERlbm9taW5hdG9yIENhbGN1bGF0aW9uOiBDT1VOVCBvZiBjbGllbnRzIHdpdGggIkhJViBzdGF0dXMiPSdISVYtcG9zaXRpdmUnIEFORCAiT24gQVJUIj1UcnVlIEFORCAiRFNEIEFSVCBzdGFydCBkYXRlIj5YIG1vbnRocyBiZWZvcmUgcmVwb3J0aW5nIHBlcmlvZCBlbmQgZGF0ZSB8ICB8IFJlcG9ydGVkIHdoZXJlICdYJyBpcyAxMiwgMjQsIDM2LCA0OCwgb3IgNjAgbW9udGhzCiAqIERlbm9taW5hdG9yIEV4Y2x1c2lvbnM6IENsaWVudHMgd2l0aCBhbiAiSElWIHRyZWF0bWVudCBvdXRjb21lIj0nVHJhbnNmZXJyZWQgb3V0JwogKgogKiBEaXNhZ2dyZWdhdGlvbnM6CiAqIOKAosKgR2VuZGVyIChmZW1hbGUsIG1hbGUsIG90aGVyKiopIAogKiAg4oCiwqBBZ2UgKDDigJM0LCA14oCTMTQsIDE14oCTMjQsIDI1KyB5ZWFycykgCiAqICDigKLCoEtleSBwb3B1bGF0aW9ucyAobWVuIHdobyBoYXZlIHNleCB3aXRoIG1lbiwgcGVvcGxlIGxpdmluZyBpbiBwcmlzb25zIGFuZCBvdGhlciBjbG9zZWQgc2V0dGluZ3MsIHBlb3BsZSB3aG8gaW5qZWN0IGRydWdzLCBzZXggd29ya2VycywgdHJhbnMgYW5kIGdlbmRlciBkaXZlcnNlIHBlb3BsZSkqKiogCiAqICDigKIgQ2l0aWVzIGFuZCBvdGhlciBhZG1pbmlzdHJhdGl2ZSByZWdpb25zIG9mIGVwaWRlbWlvbG9naWMgaW1wb3J0YW5jZQogKgogKiBEaXNhZ2dyZWdhdGlvbiBFbGVtZW50czogR2VuZGVyIHwgQWdlIHwgS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUKICoKICogTnVtZXJhdG9yIGFuZCBEZW5vbWluYXRvciBFbGVtZW50czoKICogQ3VycmVudGx5IGVucm9sbGVkIGluIERTRCBBUlQgbW9kZWwgCiAqICBEU0QgQVJUIHN0YXJ0IGRhdGUgCiAqICBISVYgc3RhdHVzIAogKiAgT24gQVJUCiAqCiAqIFJlZmVyZW5jZTogQ29uc29saWRhdGVkIGd1aWRlbGluZXMgb24gcGVyc29uLWNlbnRyZWQgSElWIHN0cmF0ZWdpYyBpbmZvcm1hdGlvbjogc3RyZW5ndGhlbmluZyByb3V0aW5lIGRhdGEgZm9yIGltcGFjdC4gR2VuZXZhOiBXb3JsZCBIZWFsdGggT3JnYW5pemF0aW9uOyAyMDIyCiAqIAogKiBEYXRhIENvbmNlcHRzOgogKiBISVYuQS5ERTE3OiBBZ2UgfCBDYWxjdWxhdGVkIGFnZSAobnVtYmVyIG9mIHllYXJzKSBvZiB0aGUgY2xpZW50IGJhc2VkIG9uIGRhdGUgb2YgYmlydGgKICogSElWLkEuREUxODogR2VuZGVyKiB8IEdlbmRlciBvZiB0aGUgY2xpZW50KgogKiBISVYuQS5ERTE5OiBGZW1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyBmZW1hbGUKICogSElWLkEuREUyMDogTWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIG1hbGUKICogSElWLkEuREUyMTogVHJhbnNnZW5kZXIgbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zZ2VuZGVyIG1hbGUKICogSElWLkEuREUyMjogVHJhbnNnZW5kZXIgZmVtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnNnZW5kZXIgZmVtYWxlCiAqIEhJVi5BLkRFMjM6IE90aGVyIHwgQWRkaXRpb25hbCBjYXRlZ29yeQogKiBISVYuQi5ERTUwOiBLZXkgcG9wdWxhdGlvbiBtZW1iZXIgdHlwZSogfCBUaGUgdHlwZSBvZiBrZXkgcG9wdWxhdGlvbiB0aGF0IHRoZSBjbGllbnQgaXMgaW5jbHVkZWQgaW4KICogSElWLkIuREU1MTogU2V4IHdvcmtlciB8IENsaWVudCBpcyBhIHNleCB3b3JrZXIKICogSElWLkIuREU1MjogTWVuIHdobyBoYXZlIHNleCB3aXRoIG1lbiB8IENsaWVudCBpcyBhIG1hbiB3aG8gaGFzIHNleCB3aXRoIG1lbgogKiBISVYuQi5ERTUzOiBUcmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UgcGVvcGxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgdHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlCiAqIEhJVi5CLkRFNTQ6IFBlb3BsZSB3aG8gaW5qZWN0IGRydWdzIHwgQ2xpZW50IGlzIGEgcGVyc29uIHdobyBpbmplY3RzIGRydWdzCiAqIEhJVi5CLkRFNTU6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmdzIHwgQ2xpZW50IGxpdmVzIGluIGEgcHJpc29uIG9yIGFub3RoZXIgY2xvc2VkIHNldHRpbmcKICogSElWLkIuREUxMTU6IEhJViBzdGF0dXMgfCBISVYgc3RhdHVzIHJlcG9ydGVkIGFmdGVyIGFwcGx5aW5nIHRoZSBuYXRpb25hbCBISVYgdGVzdGluZyBhbGdvcml0aG0uIE5vIHNpbmdsZSBISVYgdGVzdCBjYW4gcHJvdmlkZSBhbiBISVYtcG9zaXRpdmUgZGlhZ25vc2lzLgogKiBISVYuQi5ERTExNjogSElWLXBvc2l0aXZlIHwgQ2xpZW50IGlzIEhJVi1wb3NpdGl2ZQogKiBISVYuQi5ERTExNzogSElWLW5lZ2F0aXZlIHwgQ2xpZW50IGlzIEhJVi1uZWdhdGl2ZQogKiBISVYuQi5ERTExODogVW5rbm93biB8IENsaWVudCBoYXMgdW5rbm93biBISVYgc3RhdHVzCiAqIEhJVi5ELkRFMzg6IE9uIEFSVCB8IENsaWVudCBpcyBjdXJyZW50bHkgdGFraW5nIEFSVAogKiBISVYuRC5ERTc2MjogQ3VycmVudGx5IGVucm9sbGVkIGluIERTRCBBUlQgbW9kZWwgfCBDbGllbnQgY3VycmVudGx5IGVucm9sbGVkIGluIGRpZmZlcmVudGlhdGVkIHNlcnZpY2UgZGVsaXZlcnkgKERTRCkgQVJUIG1vZGVsCiAqIEhJVi5ELkRFNzYzOiBEU0QgQVJUIHN0YXJ0IGRhdGUgfCBEYXRlIGNsaWVudCBzdGFydGVkIG9uIGRpZmZlcmVudGlhdGVkIHNlcnZpY2UgZGVsaXZlcnkgKERTRCkgZm9yIEFSVAogKiBISVYuRS5ERTExNDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgaW5mYW50J3MgbW90aGVyIGlzIGluY2x1ZGVkIGluCiAqIEhJVi5FLkRFMTE1OiBTZXggd29ya2VyIHwgSW5mYW50J3MgbW90aGVyIGlzIGEgc2V4IHdvcmtlcgogKiBISVYuRS5ERTExNjogUGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MgfCBJbmZhbnQncyBtb3RoZXIgaXMgYSBwZXJzb24gd2hvIGluamVjdHMgZHJ1Z3MKICogSElWLkUuREUxMTc6IFRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZSBwZW9wbGUgfCBJbmZhbnQncyBtb3RoZXIgaWRlbnRpZmllcyBhcyB0cmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UKICogSElWLkUuREUxMTg6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmcgfCBJbmZhbnQncyBtb3RoZXIgaXMgaW4gYSBwcmlzb24gb3IgY2xvc2VkIHNldHRpbmcKICogSElWLkguREU0NzogT24gQVJUIHwgQ2xpZW50IGlzIGN1cnJlbnRseSB0YWtpbmcgQVJUIAogKgogKiBBZGRpdGlvbmFsIENvbnRleHQKICogLSB3aGF0IGl0IG1lYXN1cmVzOiBSZXRlbnRpb24gaW4gRFNEIEFSVCBtb2RlbHMgYW1vbmcgcGVvcGxlIGxpdmluZyB3aXRoIEhJViBldmVyeSAxMiBtb250aHMgYWZ0ZXIgZW5yb2xtZW50IHwgIHwgVGhpcyBpbmRpY2F0b3IgaXMgbGltaXRlZCB0byBmYWNpbGl0aWVzIHdpdGggZWxlY3Ryb25pYyBoZWFsdGggaW5mb3JtYXRpb24gc3lzdGVtcywgYXMgcmVwb3J0aW5nIHdvdWxkIGJlIG9uZXJvdXMgZm9yIGZhY2lsaXRpZXMgd2l0aCBwYXBlci1iYXNlZCByZXBvcnRpbmcgc3lzdGVtcy4KICogLSByYXRpb25hbGU6IEFzIERTRCBBUlQgaXMgc2NhbGVkIHVwLCBpdCBpcyBpbXBvcnRhbnQgdG8gbW9uaXRvciByZXRlbnRpb24gb24gdHJlYXRtZW50IHRvIGVuc3VyZSBjbGluaWNhbCBvdXRjb21lcyBhdCBsZWFzdCBlcXVpdmFsZW50IHdpdGggY29udmVudGlvbmFsIGNhcmUuCiAqIC0gbWV0aG9kOiBFTVIvZWxlY3Ryb25pYyBpbmZvcm1hdGlvbiBzeXN0ZW1zIHwgIHwgTWVhc3VyZW1lbnQgZnJlcXVlbmN5OiBxdWFydGVybHkgd2hlcmUgZmVhc2libGUsIG1heGltdW0gYW5udWFsbHkKICogCiAqIFN1Z2dlc3RlZCBTY29yaW5nIE1ldGhvZDogcHJvcG9ydGlvbiB8IGh0dHA6Ly9obDcub3JnL2ZoaXIvdXMvY3FmbWVhc3VyZXMvU3RydWN0dXJlRGVmaW5pdGlvbi9wcm9wb3J0aW9uLW1lYXN1cmUtY3FmbQogKi8KCmxpYnJhcnkgSElWSU5ENTZMb2dpYwoKLy8gSW5jbHVkZWQgTGlicmFyaWVzCnVzaW5nIEZISVIgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIEhJVkNvbW1vbiB2ZXJzaW9uICcwLjAuMScgY2FsbGVkIEhJQwppbmNsdWRlIEZISVJIZWxwZXJzIHZlcnNpb24gJzQuMC4xJwoKaW5jbHVkZSBXSE9Db21tb24gY2FsbGVkIFdDb20KaW5jbHVkZSBISVZFbGVtZW50cyBjYWxsZWQgSEUKaW5jbHVkZSBISVZJbmRpY2F0b3JFbGVtZW50cyBjYWxsZWQgSElFCmluY2x1ZGUgSElWQ29uZmlnIGNhbGxlZCBDb25maWcKCi8vIEluZGljYXRvciBEZWZpbml0aW9uCnBhcmFtZXRlciAiTWVhc3VyZW1lbnQgUGVyaW9kIiBJbnRlcnZhbDxEYXRlPiBkZWZhdWx0IEludGVydmFsW0AyMDIzLTAxLTAxLCBAMjAyMy0wMS0zMF0KCmNvbnRleHQgUGF0aWVudAovKiBQb3B1bGF0aW9ucyAqLwoKLyoKICpJbml0aWFsIFBvcHVsYXRpb24KICovCgpkZWZpbmUgIkluaXRpYWwgUG9wdWxhdGlvbiI6CiAgdHJ1ZQoKLyoqCiAqIE51bWVyYXRvcgogKiAKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIHBlb3BsZSBvbiBBUlQga25vd24gdG8gYmUgb24gdHJlYXRtZW50IDEyIG1vbnRocyBhZnRlciBlbnJvbGxpbmcgaW4gYSBEU0QgQVJUIG1vZGVsKiAoYWxzbyBhdCAyNCwgMzYsIDQ4LCA2MCBtb250aHMsIGV0Yy4gYWZ0ZXIgZW5yb2xtZW50IGluIHRoZSBtb2RlbCkKICogQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJPbiBBUlQiPVRydWUgQU5EICJEU0QgQVJUIHN0YXJ0IGRhdGUiPlggbW9udGhzIGJlZm9yZSByZXBvcnRpbmcgcGVyaW9kIGVuZCBkYXRlIEFORCAiQ3VycmVudGx5IGVucm9sbGVkIGluIERTRCBBUlQgbW9kZWwiPVRydWUgfCAgfCBSZXBvcnRlZCB3aGVyZSAnWCcgaXMgMTIsIDI0LCAzNiwgNDgsIG9yIDYwIG1vbnRocwogKi8KICAKCmRlZmluZSAiTnVtZXJhdG9yIjoKICBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIgogICBhbmQgSElFLiJPbiBBUlQgSC5ERTQ3IgogICBhbmQgZXhpc3RzKEhFLiJEU0QgQVJUIHN0YXJ0IGRhdGUiIHQgd2hlcmUgbW9udGhzIGJldHdlZW4gc3RhcnQgb2YgdCBhbmQgZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiID49IENvbmZpZy4iRFNEIFJldGVudGlvbiBJbnRlcnZhbCIpCiAgIGFuZCBISUUuIkN1cnJlbnRseSBlbnJvbGxlZCBpbiBEU0QgQVJUIG1vZGVsIgoKCi8qKgogKiBOdW1lcmF0b3IgRXhjbHVzaW9ucwogKgogKiBDYWxjdWxhdGlvbjogQ2xpZW50cyB3aXRoIGFuICJISVYgdHJlYXRtZW50IG91dGNvbWUiPSdUcmFuc2ZlcnJlZCBvdXQnCiAqLwogICAgCmRlZmluZSAiTnVtZXJhdG9yIEV4Y2x1c2lvbnMiOgogIEhJRS4iSGFzIHRyYW5zZmVycmVkIG91dCIKCi8qKgogKiBEZW5vbWluYXRvcgogKgogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgcGVvcGxlIG9uIEFSVCBlbnJvbGxlZCBpbiBhIERTRCBBUlQgbW9kZWwgMTIgbW9udGhzIGFnbywgZXhjbHVkaW5nIGluZGl2aWR1YWxzIHdobyB0cmFuc2ZlcnJlZCBvdXQgKGFsc28gMjQsIDM2LCA0OCwgNjAgbW9udGhzIGFnbywgZXRjLikKICogQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiSElWIHN0YXR1cyI9J0hJVi1wb3NpdGl2ZScgQU5EICJPbiBBUlQiPVRydWUgQU5EICJEU0QgQVJUIHN0YXJ0IGRhdGUiPlggbW9udGhzIGJlZm9yZSByZXBvcnRpbmcgcGVyaW9kIGVuZCBkYXRlIHwgIHwgUmVwb3J0ZWQgd2hlcmUgJ1gnIGlzIDEyLCAyNCwgMzYsIDQ4LCBvciA2MCBtb250aHMKICovCgpkZWZpbmUgIkRlbm9taW5hdG9yIjoKICBISUUuIkhhcyBISVYtcG9zaXRpdmUgU3RhdHVzIgogICBhbmQgSElFLiJPbiBBUlQgSC5ERTQ3IgogICBhbmQgZXhpc3RzKEhFLiJEU0QgQVJUIHN0YXJ0IGRhdGUiIHQgd2hlcmUgbW9udGhzIGJldHdlZW4gc3RhcnQgb2YgdCBhbmQgZW5kIG9mICJNZWFzdXJlbWVudCBQZXJpb2QiID49IENvbmZpZy4iRFNEIFJldGVudGlvbiBJbnRlcnZhbCIpCiAgICAKLyoqCiogRGVub21pbmF0b3IgRXhjbHVzaW9ucwoqCiogQ2FsY3VsYXRpb246IENsaWVudHMgd2l0aCBhbiAiSElWIHRyZWF0bWVudCBvdXRjb21lIj0nVHJhbnNmZXJyZWQgb3V0JwoqLwoKZGVmaW5lICJEZW5vbWluYXRvciBFeGNsdXNpb25zIjoKICBISUUuIkhhcyB0cmFuc2ZlcnJlZCBvdXQiCgovKiBlbmQgUG9wdWxhdGlvbnMgKi8KCi8qCiAqIERpc2FnZ3JlZ2F0b3JzCiAqLwoKZGVmaW5lICJBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciI6CglISUUuIkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIgoKZGVmaW5lICJBZ2UgU3RyYXRpZmllciI6CglISUUuIkJ5IEFnZSBTdHJhdGlmaWVyIDgiCgpkZWZpbmUgIkdlb2dyYXBoaWMgUmVnaW9uIFN0cmF0aWZpZXIiOgoJSElFLiJCeSBHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIgoKZGVmaW5lICJwYXRpZW50R3JvdXBzIFN0cmF0aWZpZXIiOgoJSElFLiJwYXRpZW50R3JvdXBzIgoKZGVmaW5lICJTdHJhdGlmaWNhdGlvbiI6CiBISUUuIkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIi5jb2RlIAogICsgJzonICsgSElFLiJCeSBBZ2UgU3RyYXRpZmllciA4IgorICc6JyArIEhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIKKyBDb21iaW5lKEhJRS5wYXRpZW50R3JvdXBzLCAnOicpCg=="
    }
  ]
}