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

Draft as of 2025-02-07

Raw json | Download

{
  "resourceType" : "Library",
  "id" : "HIVIND78Logic",
  "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.78 Logic</td>\n        </tr>\n        \n\n        \n        \n        <tr>\n            <th scope=\"row\"><b>Id: </b></th>\n            <td style=\"padding-left: 4px;\">HIVIND78Logic</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-HIVIND78Logic.html\">HIV.IND.78 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 attending HIV prevention services diagnosed with a particular STI syndrome who were diagnosed with the same STI syndrome two or more times 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.78 Logic\n * Ref No: STI.8A\n * Short Name: Repeat diagnosis of STI syndrome, HIV prevention services\n *\n * Definition: % of people attending HIV prevention services diagnosed with a particular STI syndrome who were diagnosed with the same STI syndrome two or more times during the reporting period\n *\n * Numerator: Number of people attending HIV prevention services diagnosed with a particular STI syndrome two or more times during the reporting period\n * Numerator Calculation: COUNT of clients with &quot;Any STI syndrome diagnosed&quot;=True on multiple values of &quot;Date accessed HIV prevention intervention&quot; in reporting period\n * Numerator Exclusions: \n *\n * Denominator: Number of people attending HIV prevention services diagnosed with a particular STI syndrome during the reporting period\n * Denominator Calculation: COUNT of clients with &quot;Date accessed HIV prevention intervention&quot; in the reporting period\n * Denominator Exclusions: \n *\n * Disaggregations:\n * •\u00a0Gender (female, male, other*) \n *  • Age (15–19, 20–24, 25–29, 30–49, 50+ 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 *  •\u00a0HIV status (HIV-positive, HIV-negative, unknown status) \n *  •\u00a0HIV prevention intervention (for example, PrEP) \n *  •\u00a0STI syndrome (urethral discharge syndrome, vaginal discharge syndrome, lower abdominal pain, genital ulcer disease syndrome, or anorectal discharge) \n *  •\u00a0Cities and other administrative regions of epidemiologic importance\n *\n * Disaggregation Elements: Gender | Age | Key population member type | HIV status | HIV prevention intervention | Syndrome/STI diagnosed\n *\n * Numerator and Denominator Elements:\n * Any STI syndrome diagnosed \n *  Date accessed HIV prevention intervention\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.B.DE226: Syndrome/STI diagnosed | Syndrome or STI for which client is diagnosed\n * HIV.B.DE227: Urethral discharge syndrome | Client diagnosed with urethral discharge syndrome\n * HIV.B.DE228: Vaginal discharge syndrome | Client diagnosed with vaginal discharge syndrome\n * HIV.B.DE229: Lower Abdominal pain  | Client diagnosed with lower abdominal pain\n * HIV.B.DE230: Genital ulcer disease syndrome | Client diagnosed with genital ulcer disease syndrome\n * HIV.B.DE231: Anorectal discharge | Client diagnosed with anorectal discharge\n * HIV.B.DE232: Sent for testing | Specimen sent for testing\n * HIV.B.DE233: Other | Other syndrome/STI diagnosed\n * HIV.B.DE235: Any STI syndrome diagnosed | Was the client diagnosed with any of the five STI syndromes during this visit?\n * HIV.D.DE778: Syndrome/STI diagnosed | Syndrome or STI for which client is diagnosed\n * HIV.D.DE779: Urethral discharge syndrome | Client diagnosed with urethral discharge syndrome\n * HIV.D.DE780: Vaginal discharge syndrome | Client diagnosed with vaginal discharge syndrome\n * HIV.D.DE781: Lower Abdominal pain  | Client diagnosed with lower abdominal pain\n * HIV.D.DE782: Genital ulcer disease syndrome | Client diagnosed with genital ulcer disease syndrome\n * HIV.D.DE783: Anorectal discharge | Client diagnosed with anorectal discharge\n * HIV.D.DE784: Sent for testing | Specimen sent for testing\n * HIV.D.DE785: Other | Other syndrome/STI diagnosed\n * HIV.D.DE787: Any STI syndrome diagnosed | Was the client diagnosed with any of the five STI syndromes during this visit?\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.PRV.DE2: HIV prevention intervention | HIV prevention intervention that client accessed\n * HIV.PRV.DE3: PrEP service | Client accessed PrEP services\n * HIV.PRV.DE4: OAMT | Client accessed opioid agonist maintenance treatment (OAMT) services\n * HIV.PRV.DE5: NSP | Client accessed needle-syringe programme (NSP) services\n * HIV.PRV.DE6: STI services | Client accessed sexually transmitted infection (STI) services\n * HIV.PRV.DE7: VMMC | Client accessed voluntary medical male circumcision (VMMC) services\n * HIV.PRV.DE8: Other | Client accessed other HIV prevention services\n * HIV.PRV.DE10: Date accessed HIV prevention intervention | Date the client accessed HIV prevention intervention\n *\n * Additional Context\n * - what it measures: A: % of people attending HIV prevention services who were diagnosed with the same STI | syndrome two or more times during the reporting period | B: % of people living with HIV who were diagnosed with the same STI syndrome two or more times during the reporting period\n * - rationale: Presenting with the same STI syndrome two or more times in a short period suggests that an individual was not treated appropriately, has an untreated partner or is practicing unsafe sex.\n * - method: Individual-level data obtained from programme records\n * \n * Suggested Scoring Method: proportion | http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/proportion-measure-cqfm\n */\n\nlibrary HIVIND78Logic\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 attending HIV prevention services diagnosed with a particular STI syndrome two or more times during the reporting period\n * Calculation: COUNT of clients with &quot;Any STI syndrome diagnosed&quot;=True on multiple values of &quot;Date accessed HIV prevention intervention&quot; in reporting period\n */\n\ndefine &quot;Numerator&quot;:\n  Count(\n    (HIE.&quot;Syndrome/STI diagnosed B.DE226 Condition&quot; C\n    where exists (\n      HE.&quot;Date accessed HIV prevention intervention&quot; t\n      where t = start of C.prevalenceInterval()\n    ))\n  ) &gt; 1\n\n/**\n * Denominator\n *\n * Definition: Number of people attending HIV prevention services diagnosed with a particular STI syndrome during the reporting period\n * Calculation: COUNT of clients with &quot;Date accessed HIV prevention intervention&quot; in the reporting period\n */\n\ndefine &quot;Denominator&quot;:\n  exists(HIE.&quot;Date accessed HIV prevention intervention&quot;)\n    \n\n/* end Populations */\n\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 9&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;HIV prevention intervention&quot;:\n\tHIE.&quot;HIV prevention intervention&quot;\n\n  define &quot;STI syndrome&quot;:\n\tHIE.&quot;STI syndrome&quot;\n\ndefine &quot;HIV Status&quot;:\n  HIE.&quot;HIV Status Stratifier&quot;\n\n\ndefine &quot;Stratification&quot;:\n HIE.&quot;By Administrative Gender Stratifier&quot;.code \n  + ':' + HIE.&quot;By Age Stratifier 9&quot;\n+ ':' + HIE.&quot;By Geographic Region Stratifier&quot;\n+ Combine(HIE.patientGroups, ':')\n+ Combine(HIE.&quot;HIV prevention intervention&quot;, ':')\n+ ':' + HIE.&quot;HIV Status Stratifier&quot;.code \n+ Combine(HIE.&quot;STI syndrome&quot;, ':')</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/HIVIND78Logic",
  "version" : "0.4.3",
  "name" : "HIVIND78Logic",
  "title" : "HIV.IND.78 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 attending HIV prevention services diagnosed with a particular STI syndrome who were diagnosed with the same STI syndrome two or more times during the reporting period",
  "content" : [
    {
      "contentType" : "text/cql",
      "data" : "LyoqCiAqIExpYnJhcnk6IEhJVi5JTkQuNzggTG9naWMKICogUmVmIE5vOiBTVEkuOEEKICogU2hvcnQgTmFtZTogUmVwZWF0IGRpYWdub3NpcyBvZiBTVEkgc3luZHJvbWUsIEhJViBwcmV2ZW50aW9uIHNlcnZpY2VzCiAqCiAqIERlZmluaXRpb246ICUgb2YgcGVvcGxlIGF0dGVuZGluZyBISVYgcHJldmVudGlvbiBzZXJ2aWNlcyBkaWFnbm9zZWQgd2l0aCBhIHBhcnRpY3VsYXIgU1RJIHN5bmRyb21lIHdobyB3ZXJlIGRpYWdub3NlZCB3aXRoIHRoZSBzYW1lIFNUSSBzeW5kcm9tZSB0d28gb3IgbW9yZSB0aW1lcyBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICoKICogTnVtZXJhdG9yOiBOdW1iZXIgb2YgcGVvcGxlIGF0dGVuZGluZyBISVYgcHJldmVudGlvbiBzZXJ2aWNlcyBkaWFnbm9zZWQgd2l0aCBhIHBhcnRpY3VsYXIgU1RJIHN5bmRyb21lIHR3byBvciBtb3JlIHRpbWVzIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBOdW1lcmF0b3IgQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiQW55IFNUSSBzeW5kcm9tZSBkaWFnbm9zZWQiPVRydWUgb24gbXVsdGlwbGUgdmFsdWVzIG9mICJEYXRlIGFjY2Vzc2VkIEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiIgaW4gcmVwb3J0aW5nIHBlcmlvZAogKiBOdW1lcmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERlbm9taW5hdG9yOiBOdW1iZXIgb2YgcGVvcGxlIGF0dGVuZGluZyBISVYgcHJldmVudGlvbiBzZXJ2aWNlcyBkaWFnbm9zZWQgd2l0aCBhIHBhcnRpY3VsYXIgU1RJIHN5bmRyb21lIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBEZW5vbWluYXRvciBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICJEYXRlIGFjY2Vzc2VkIEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiIgaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QKICogRGVub21pbmF0b3IgRXhjbHVzaW9uczogCiAqCiAqIERpc2FnZ3JlZ2F0aW9uczoKICog4oCiwqBHZW5kZXIgKGZlbWFsZSwgbWFsZSwgb3RoZXIqKSAKICogIOKAoiBBZ2UgKDE14oCTMTksIDIw4oCTMjQsIDI14oCTMjksIDMw4oCTNDksIDUwKyB5ZWFycykgCiAqICDigKLCoEtleSBwb3B1bGF0aW9ucyAobWVuIHdobyBoYXZlIHNleCB3aXRoIG1lbiwgcGVvcGxlIGxpdmluZyBpbiBwcmlzb25zIGFuZCBvdGhlciBjbG9zZWQgc2V0dGluZ3MsIHBlb3BsZSB3aG8gaW5qZWN0IGRydWdzLCBzZXggd29ya2VycywgdHJhbnMgYW5kIGdlbmRlciBkaXZlcnNlIHBlb3BsZSkqKiAKICogIOKAosKgSElWIHN0YXR1cyAoSElWLXBvc2l0aXZlLCBISVYtbmVnYXRpdmUsIHVua25vd24gc3RhdHVzKSAKICogIOKAosKgSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uIChmb3IgZXhhbXBsZSwgUHJFUCkgCiAqICDigKLCoFNUSSBzeW5kcm9tZSAodXJldGhyYWwgZGlzY2hhcmdlIHN5bmRyb21lLCB2YWdpbmFsIGRpc2NoYXJnZSBzeW5kcm9tZSwgbG93ZXIgYWJkb21pbmFsIHBhaW4sIGdlbml0YWwgdWxjZXIgZGlzZWFzZSBzeW5kcm9tZSwgb3IgYW5vcmVjdGFsIGRpc2NoYXJnZSkgCiAqICDigKLCoENpdGllcyBhbmQgb3RoZXIgYWRtaW5pc3RyYXRpdmUgcmVnaW9ucyBvZiBlcGlkZW1pb2xvZ2ljIGltcG9ydGFuY2UKICoKICogRGlzYWdncmVnYXRpb24gRWxlbWVudHM6IEdlbmRlciB8IEFnZSB8IEtleSBwb3B1bGF0aW9uIG1lbWJlciB0eXBlIHwgSElWIHN0YXR1cyB8IEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiB8IFN5bmRyb21lL1NUSSBkaWFnbm9zZWQKICoKICogTnVtZXJhdG9yIGFuZCBEZW5vbWluYXRvciBFbGVtZW50czoKICogQW55IFNUSSBzeW5kcm9tZSBkaWFnbm9zZWQgCiAqICBEYXRlIGFjY2Vzc2VkIEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbgogKgogKiBSZWZlcmVuY2U6IENvbnNvbGlkYXRlZCBndWlkZWxpbmVzIG9uIHBlcnNvbi1jZW50cmVkIEhJViBzdHJhdGVnaWMgaW5mb3JtYXRpb246IHN0cmVuZ3RoZW5pbmcgcm91dGluZSBkYXRhIGZvciBpbXBhY3QuIEdlbmV2YTogV29ybGQgSGVhbHRoIE9yZ2FuaXphdGlvbjsgMjAyMgogKiAKICogRGF0YSBDb25jZXB0czoKICogSElWLkEuREUxNzogQWdlIHwgQ2FsY3VsYXRlZCBhZ2UgKG51bWJlciBvZiB5ZWFycykgb2YgdGhlIGNsaWVudCBiYXNlZCBvbiBkYXRlIG9mIGJpcnRoCiAqIEhJVi5BLkRFMTg6IEdlbmRlciogfCBHZW5kZXIgb2YgdGhlIGNsaWVudCoKICogSElWLkEuREUxOTogRmVtYWxlIHwgQ2xpZW50IGlkZW50aWZpZXMgYXMgZmVtYWxlCiAqIEhJVi5BLkRFMjA6IE1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyBtYWxlCiAqIEhJVi5BLkRFMjE6IFRyYW5zZ2VuZGVyIG1hbGUgfCBDbGllbnQgaWRlbnRpZmllcyBhcyB0cmFuc2dlbmRlciBtYWxlCiAqIEhJVi5BLkRFMjI6IFRyYW5zZ2VuZGVyIGZlbWFsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zZ2VuZGVyIGZlbWFsZQogKiBISVYuQS5ERTIzOiBPdGhlciB8IEFkZGl0aW9uYWwgY2F0ZWdvcnkKICogSElWLkIuREU1MDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgY2xpZW50IGlzIGluY2x1ZGVkIGluCiAqIEhJVi5CLkRFNTE6IFNleCB3b3JrZXIgfCBDbGllbnQgaXMgYSBzZXggd29ya2VyCiAqIEhJVi5CLkRFNTI6IE1lbiB3aG8gaGF2ZSBzZXggd2l0aCBtZW4gfCBDbGllbnQgaXMgYSBtYW4gd2hvIGhhcyBzZXggd2l0aCBtZW4KICogSElWLkIuREU1MzogVHJhbnMgYW5kIGdlbmRlci1kaXZlcnNlIHBlb3BsZSB8IENsaWVudCBpZGVudGlmaWVzIGFzIHRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZQogKiBISVYuQi5ERTU0OiBQZW9wbGUgd2hvIGluamVjdCBkcnVncyB8IENsaWVudCBpcyBhIHBlcnNvbiB3aG8gaW5qZWN0cyBkcnVncwogKiBISVYuQi5ERTU1OiBQZW9wbGUgbGl2aW5nIGluIHByaXNvbnMgYW5kIG90aGVyIGNsb3NlZCBzZXR0aW5ncyB8IENsaWVudCBsaXZlcyBpbiBhIHByaXNvbiBvciBhbm90aGVyIGNsb3NlZCBzZXR0aW5nCiAqIEhJVi5CLkRFMTE1OiBISVYgc3RhdHVzIHwgSElWIHN0YXR1cyByZXBvcnRlZCBhZnRlciBhcHBseWluZyB0aGUgbmF0aW9uYWwgSElWIHRlc3RpbmcgYWxnb3JpdGhtLiBObyBzaW5nbGUgSElWIHRlc3QgY2FuIHByb3ZpZGUgYW4gSElWLXBvc2l0aXZlIGRpYWdub3Npcy4KICogSElWLkIuREUxMTY6IEhJVi1wb3NpdGl2ZSB8IENsaWVudCBpcyBISVYtcG9zaXRpdmUKICogSElWLkIuREUxMTc6IEhJVi1uZWdhdGl2ZSB8IENsaWVudCBpcyBISVYtbmVnYXRpdmUKICogSElWLkIuREUxMTg6IFVua25vd24gfCBDbGllbnQgaGFzIHVua25vd24gSElWIHN0YXR1cwogKiBISVYuQi5ERTIyNjogU3luZHJvbWUvU1RJIGRpYWdub3NlZCB8IFN5bmRyb21lIG9yIFNUSSBmb3Igd2hpY2ggY2xpZW50IGlzIGRpYWdub3NlZAogKiBISVYuQi5ERTIyNzogVXJldGhyYWwgZGlzY2hhcmdlIHN5bmRyb21lIHwgQ2xpZW50IGRpYWdub3NlZCB3aXRoIHVyZXRocmFsIGRpc2NoYXJnZSBzeW5kcm9tZQogKiBISVYuQi5ERTIyODogVmFnaW5hbCBkaXNjaGFyZ2Ugc3luZHJvbWUgfCBDbGllbnQgZGlhZ25vc2VkIHdpdGggdmFnaW5hbCBkaXNjaGFyZ2Ugc3luZHJvbWUKICogSElWLkIuREUyMjk6IExvd2VyIEFiZG9taW5hbCBwYWluICB8IENsaWVudCBkaWFnbm9zZWQgd2l0aCBsb3dlciBhYmRvbWluYWwgcGFpbgogKiBISVYuQi5ERTIzMDogR2VuaXRhbCB1bGNlciBkaXNlYXNlIHN5bmRyb21lIHwgQ2xpZW50IGRpYWdub3NlZCB3aXRoIGdlbml0YWwgdWxjZXIgZGlzZWFzZSBzeW5kcm9tZQogKiBISVYuQi5ERTIzMTogQW5vcmVjdGFsIGRpc2NoYXJnZSB8IENsaWVudCBkaWFnbm9zZWQgd2l0aCBhbm9yZWN0YWwgZGlzY2hhcmdlCiAqIEhJVi5CLkRFMjMyOiBTZW50IGZvciB0ZXN0aW5nIHwgU3BlY2ltZW4gc2VudCBmb3IgdGVzdGluZwogKiBISVYuQi5ERTIzMzogT3RoZXIgfCBPdGhlciBzeW5kcm9tZS9TVEkgZGlhZ25vc2VkCiAqIEhJVi5CLkRFMjM1OiBBbnkgU1RJIHN5bmRyb21lIGRpYWdub3NlZCB8IFdhcyB0aGUgY2xpZW50IGRpYWdub3NlZCB3aXRoIGFueSBvZiB0aGUgZml2ZSBTVEkgc3luZHJvbWVzIGR1cmluZyB0aGlzIHZpc2l0PwogKiBISVYuRC5ERTc3ODogU3luZHJvbWUvU1RJIGRpYWdub3NlZCB8IFN5bmRyb21lIG9yIFNUSSBmb3Igd2hpY2ggY2xpZW50IGlzIGRpYWdub3NlZAogKiBISVYuRC5ERTc3OTogVXJldGhyYWwgZGlzY2hhcmdlIHN5bmRyb21lIHwgQ2xpZW50IGRpYWdub3NlZCB3aXRoIHVyZXRocmFsIGRpc2NoYXJnZSBzeW5kcm9tZQogKiBISVYuRC5ERTc4MDogVmFnaW5hbCBkaXNjaGFyZ2Ugc3luZHJvbWUgfCBDbGllbnQgZGlhZ25vc2VkIHdpdGggdmFnaW5hbCBkaXNjaGFyZ2Ugc3luZHJvbWUKICogSElWLkQuREU3ODE6IExvd2VyIEFiZG9taW5hbCBwYWluICB8IENsaWVudCBkaWFnbm9zZWQgd2l0aCBsb3dlciBhYmRvbWluYWwgcGFpbgogKiBISVYuRC5ERTc4MjogR2VuaXRhbCB1bGNlciBkaXNlYXNlIHN5bmRyb21lIHwgQ2xpZW50IGRpYWdub3NlZCB3aXRoIGdlbml0YWwgdWxjZXIgZGlzZWFzZSBzeW5kcm9tZQogKiBISVYuRC5ERTc4MzogQW5vcmVjdGFsIGRpc2NoYXJnZSB8IENsaWVudCBkaWFnbm9zZWQgd2l0aCBhbm9yZWN0YWwgZGlzY2hhcmdlCiAqIEhJVi5ELkRFNzg0OiBTZW50IGZvciB0ZXN0aW5nIHwgU3BlY2ltZW4gc2VudCBmb3IgdGVzdGluZwogKiBISVYuRC5ERTc4NTogT3RoZXIgfCBPdGhlciBzeW5kcm9tZS9TVEkgZGlhZ25vc2VkCiAqIEhJVi5ELkRFNzg3OiBBbnkgU1RJIHN5bmRyb21lIGRpYWdub3NlZCB8IFdhcyB0aGUgY2xpZW50IGRpYWdub3NlZCB3aXRoIGFueSBvZiB0aGUgZml2ZSBTVEkgc3luZHJvbWVzIGR1cmluZyB0aGlzIHZpc2l0PwogKiBISVYuRS5ERTExNDogS2V5IHBvcHVsYXRpb24gbWVtYmVyIHR5cGUqIHwgVGhlIHR5cGUgb2Yga2V5IHBvcHVsYXRpb24gdGhhdCB0aGUgaW5mYW50J3MgbW90aGVyIGlzIGluY2x1ZGVkIGluCiAqIEhJVi5FLkRFMTE1OiBTZXggd29ya2VyIHwgSW5mYW50J3MgbW90aGVyIGlzIGEgc2V4IHdvcmtlcgogKiBISVYuRS5ERTExNjogUGVvcGxlIHdobyBpbmplY3QgZHJ1Z3MgfCBJbmZhbnQncyBtb3RoZXIgaXMgYSBwZXJzb24gd2hvIGluamVjdHMgZHJ1Z3MKICogSElWLkUuREUxMTc6IFRyYW5zIGFuZCBnZW5kZXItZGl2ZXJzZSBwZW9wbGUgfCBJbmZhbnQncyBtb3RoZXIgaWRlbnRpZmllcyBhcyB0cmFucyBhbmQgZ2VuZGVyLWRpdmVyc2UKICogSElWLkUuREUxMTg6IFBlb3BsZSBsaXZpbmcgaW4gcHJpc29ucyBhbmQgb3RoZXIgY2xvc2VkIHNldHRpbmcgfCBJbmZhbnQncyBtb3RoZXIgaXMgaW4gYSBwcmlzb24gb3IgY2xvc2VkIHNldHRpbmcKICogSElWLlBSVi5ERTI6IEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiB8IEhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiB0aGF0IGNsaWVudCBhY2Nlc3NlZAogKiBISVYuUFJWLkRFMzogUHJFUCBzZXJ2aWNlIHwgQ2xpZW50IGFjY2Vzc2VkIFByRVAgc2VydmljZXMKICogSElWLlBSVi5ERTQ6IE9BTVQgfCBDbGllbnQgYWNjZXNzZWQgb3Bpb2lkIGFnb25pc3QgbWFpbnRlbmFuY2UgdHJlYXRtZW50IChPQU1UKSBzZXJ2aWNlcwogKiBISVYuUFJWLkRFNTogTlNQIHwgQ2xpZW50IGFjY2Vzc2VkIG5lZWRsZS1zeXJpbmdlIHByb2dyYW1tZSAoTlNQKSBzZXJ2aWNlcwogKiBISVYuUFJWLkRFNjogU1RJIHNlcnZpY2VzIHwgQ2xpZW50IGFjY2Vzc2VkIHNleHVhbGx5IHRyYW5zbWl0dGVkIGluZmVjdGlvbiAoU1RJKSBzZXJ2aWNlcwogKiBISVYuUFJWLkRFNzogVk1NQyB8IENsaWVudCBhY2Nlc3NlZCB2b2x1bnRhcnkgbWVkaWNhbCBtYWxlIGNpcmN1bWNpc2lvbiAoVk1NQykgc2VydmljZXMKICogSElWLlBSVi5ERTg6IE90aGVyIHwgQ2xpZW50IGFjY2Vzc2VkIG90aGVyIEhJViBwcmV2ZW50aW9uIHNlcnZpY2VzCiAqIEhJVi5QUlYuREUxMDogRGF0ZSBhY2Nlc3NlZCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24gfCBEYXRlIHRoZSBjbGllbnQgYWNjZXNzZWQgSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uCiAqCiAqIEFkZGl0aW9uYWwgQ29udGV4dAogKiAtIHdoYXQgaXQgbWVhc3VyZXM6IEE6ICUgb2YgcGVvcGxlIGF0dGVuZGluZyBISVYgcHJldmVudGlvbiBzZXJ2aWNlcyB3aG8gd2VyZSBkaWFnbm9zZWQgd2l0aCB0aGUgc2FtZSBTVEkgfCBzeW5kcm9tZSB0d28gb3IgbW9yZSB0aW1lcyBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QgfCBCOiAlIG9mIHBlb3BsZSBsaXZpbmcgd2l0aCBISVYgd2hvIHdlcmUgZGlhZ25vc2VkIHdpdGggdGhlIHNhbWUgU1RJIHN5bmRyb21lIHR3byBvciBtb3JlIHRpbWVzIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiAtIHJhdGlvbmFsZTogUHJlc2VudGluZyB3aXRoIHRoZSBzYW1lIFNUSSBzeW5kcm9tZSB0d28gb3IgbW9yZSB0aW1lcyBpbiBhIHNob3J0IHBlcmlvZCBzdWdnZXN0cyB0aGF0IGFuIGluZGl2aWR1YWwgd2FzIG5vdCB0cmVhdGVkIGFwcHJvcHJpYXRlbHksIGhhcyBhbiB1bnRyZWF0ZWQgcGFydG5lciBvciBpcyBwcmFjdGljaW5nIHVuc2FmZSBzZXguCiAqIC0gbWV0aG9kOiBJbmRpdmlkdWFsLWxldmVsIGRhdGEgb2J0YWluZWQgZnJvbSBwcm9ncmFtbWUgcmVjb3JkcwogKiAKICogU3VnZ2VzdGVkIFNjb3JpbmcgTWV0aG9kOiBwcm9wb3J0aW9uIHwgaHR0cDovL2hsNy5vcmcvZmhpci91cy9jcWZtZWFzdXJlcy9TdHJ1Y3R1cmVEZWZpbml0aW9uL3Byb3BvcnRpb24tbWVhc3VyZS1jcWZtCiAqLwoKbGlicmFyeSBISVZJTkQ3OExvZ2ljCgovLyBJbmNsdWRlZCBMaWJyYXJpZXMKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgSElWQ29tbW9uIHZlcnNpb24gJzAuMC4xJyBjYWxsZWQgSElDCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnCgppbmNsdWRlIFdIT0NvbW1vbiBjYWxsZWQgV0NvbQppbmNsdWRlIEhJVkVsZW1lbnRzIGNhbGxlZCBIRQppbmNsdWRlIEhJVkluZGljYXRvckVsZW1lbnRzIGNhbGxlZCBISUUKaW5jbHVkZSBISVZDb25maWcgY2FsbGVkIENvbmZpZwoKLy8gSW5kaWNhdG9yIERlZmluaXRpb24KcGFyYW1ldGVyICJNZWFzdXJlbWVudCBQZXJpb2QiIEludGVydmFsPERhdGU+IGRlZmF1bHQgSW50ZXJ2YWxbQDIwMjMtMDEtMDEsIEAyMDIzLTAxLTMwXQoKY29udGV4dCBQYXRpZW50Ci8qIFBvcHVsYXRpb25zICovCgovKgogKkluaXRpYWwgUG9wdWxhdGlvbgogKi8KCmRlZmluZSAiSW5pdGlhbCBQb3B1bGF0aW9uIjoKICB0cnVlCgovKioKICogTnVtZXJhdG9yCiAqIAogKiBEZWZpbml0aW9uOiBOdW1iZXIgb2YgcGVvcGxlIGF0dGVuZGluZyBISVYgcHJldmVudGlvbiBzZXJ2aWNlcyBkaWFnbm9zZWQgd2l0aCBhIHBhcnRpY3VsYXIgU1RJIHN5bmRyb21lIHR3byBvciBtb3JlIHRpbWVzIGR1cmluZyB0aGUgcmVwb3J0aW5nIHBlcmlvZAogKiBDYWxjdWxhdGlvbjogQ09VTlQgb2YgY2xpZW50cyB3aXRoICJBbnkgU1RJIHN5bmRyb21lIGRpYWdub3NlZCI9VHJ1ZSBvbiBtdWx0aXBsZSB2YWx1ZXMgb2YgIkRhdGUgYWNjZXNzZWQgSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uIiBpbiByZXBvcnRpbmcgcGVyaW9kCiAqLwoKZGVmaW5lICJOdW1lcmF0b3IiOgogIENvdW50KAogICAgKEhJRS4iU3luZHJvbWUvU1RJIGRpYWdub3NlZCBCLkRFMjI2IENvbmRpdGlvbiIgQwogICAgd2hlcmUgZXhpc3RzICgKICAgICAgSEUuIkRhdGUgYWNjZXNzZWQgSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uIiB0CiAgICAgIHdoZXJlIHQgPSBzdGFydCBvZiBDLnByZXZhbGVuY2VJbnRlcnZhbCgpCiAgICApKQogICkgPiAxCgovKioKICogRGVub21pbmF0b3IKICoKICogRGVmaW5pdGlvbjogTnVtYmVyIG9mIHBlb3BsZSBhdHRlbmRpbmcgSElWIHByZXZlbnRpb24gc2VydmljZXMgZGlhZ25vc2VkIHdpdGggYSBwYXJ0aWN1bGFyIFNUSSBzeW5kcm9tZSBkdXJpbmcgdGhlIHJlcG9ydGluZyBwZXJpb2QKICogQ2FsY3VsYXRpb246IENPVU5UIG9mIGNsaWVudHMgd2l0aCAiRGF0ZSBhY2Nlc3NlZCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24iIGluIHRoZSByZXBvcnRpbmcgcGVyaW9kCiAqLwoKZGVmaW5lICJEZW5vbWluYXRvciI6CiAgZXhpc3RzKEhJRS4iRGF0ZSBhY2Nlc3NlZCBISVYgcHJldmVudGlvbiBpbnRlcnZlbnRpb24iKQogICAgCgovKiBlbmQgUG9wdWxhdGlvbnMgKi8KCgovKgogKiBEaXNhZ2dyZWdhdG9ycwogKi8KCmRlZmluZSAiQWRtaW5pc3RyYXRpdmUgR2VuZGVyIFN0cmF0aWZpZXIiOgoJSElFLiJCeSBBZG1pbmlzdHJhdGl2ZSBHZW5kZXIgU3RyYXRpZmllciIKCmRlZmluZSAiQWdlIFN0cmF0aWZpZXIiOgoJSElFLiJCeSBBZ2UgU3RyYXRpZmllciA5IgoKZGVmaW5lICJHZW9ncmFwaGljIFJlZ2lvbiBTdHJhdGlmaWVyIjoKCUhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIKCmRlZmluZSAicGF0aWVudEdyb3VwcyBTdHJhdGlmaWVyIjoKCUhJRS4icGF0aWVudEdyb3VwcyIKCmRlZmluZSAiSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uIjoKCUhJRS4iSElWIHByZXZlbnRpb24gaW50ZXJ2ZW50aW9uIgoKICBkZWZpbmUgIlNUSSBzeW5kcm9tZSI6CglISUUuIlNUSSBzeW5kcm9tZSIKCmRlZmluZSAiSElWIFN0YXR1cyI6CiAgSElFLiJISVYgU3RhdHVzIFN0cmF0aWZpZXIiCgoKZGVmaW5lICJTdHJhdGlmaWNhdGlvbiI6CiBISUUuIkJ5IEFkbWluaXN0cmF0aXZlIEdlbmRlciBTdHJhdGlmaWVyIi5jb2RlIAogICsgJzonICsgSElFLiJCeSBBZ2UgU3RyYXRpZmllciA5IgorICc6JyArIEhJRS4iQnkgR2VvZ3JhcGhpYyBSZWdpb24gU3RyYXRpZmllciIKKyBDb21iaW5lKEhJRS5wYXRpZW50R3JvdXBzLCAnOicpCisgQ29tYmluZShISUUuIkhJViBwcmV2ZW50aW9uIGludGVydmVudGlvbiIsICc6JykKKyAnOicgKyBISUUuIkhJViBTdGF0dXMgU3RyYXRpZmllciIuY29kZSAKKyBDb21iaW5lKEhJRS4iU1RJIHN5bmRyb21lIiwgJzonKQ=="
    }
  ]
}