Technische Vorbemerkung


Chi-Quadrat-Test (\(\chi^2\)-Test)

Untersucht, ob ein Zusammenhang zwischen zwei qualitativen Variablen besteht bzw. ob die Ausprägungen der einen Variablen von einer anderen Variablen abhängen.

Beispiel:

Variable Beschreibung
Gruppe Kontrollgruppe (ohne PT) oder Interventionsgruppe (mit PT)
Antibiotika mindestens 1 Mal Antibiotika zur Therapie einer Exazerbation
Gruppen und Antibiotika, absolute Häufigkeiten
Ja Nein Sum
Intervention 13 12 25
Kontrolle 24 1 25
Sum 37 13 50
Gruppen und Antibiotika, relative Häufigkeiten
Ja Nein Sum
Intervention 0.26 0.24 0.5
Kontrolle 0.48 0.02 0.5
Sum 0.74 0.26 1.0

Hypothesen

  • \(H_0\) : Der Einsatz von Antiobiotika ist unabhängig von der Behandlung.

  • \(H_A\) : Der Einsatz von Antiobiotika ist abhängig von der Behandlung.

  • Signifikanzniveau \(\alpha = 0.05\)

\(\chi^2\)-Test in jamovi

## 
##  CONTINGENCY TABLES
## 
##  Contingency Tables                      
##  --------------------------------------- 
##    Gruppe          Ja    Nein    Total   
##  --------------------------------------- 
##    Intervention    13      12       25   
##    Kontrolle       24       1       25   
##    Total           37      13       50   
##  --------------------------------------- 
## 
## 
##  <U+03C7>² Tests                              
##  ------------------------------------- 
##          Value       df    p           
##  ------------------------------------- 
##    <U+03C7>²    12.57796     1    0.0003903   
##    N           50                      
##  -------------------------------------

Sorry, hier hat Markdown ein Problem: <U+03C7>² = \(\chi^2\)

Bedingungen für den \(\chi^2\)-Test prüfen

  • Alle unter der Nullhypothese erwarteten absoluten Häufigkeiten sind > 5, sonst Fisher’s exakten Test verwenden.
  • Die erwarteten Häufigkeiten können in jamovi > frequencies > contingency tables > Independent samples unter cells ausgewählt werden.
## 
##  CONTINGENCY TABLES
## 
##  Contingency Tables                                                
##  ----------------------------------------------------------------- 
##    Gruppe                      Ja          Nein         Total      
##  ----------------------------------------------------------------- 
##    Intervention    Observed          13           12          25   
##                    Expected    18.50000     6.500000    25.00000   
##                                                                    
##    Kontrolle       Observed          24            1          25   
##                    Expected    18.50000     6.500000    25.00000   
##                                                                    
##    Total           Observed          37           13          50   
##                    Expected    37.00000    13.000000    50.00000   
##  ----------------------------------------------------------------- 
## 
## 
##  <U+03C7>² Tests                              
##  ------------------------------------- 
##          Value       df    p           
##  ------------------------------------- 
##    <U+03C7>²    12.57796     1    0.0003903   
##    N           50                      
##  -------------------------------------
  • Keine der erwarteten Häufigkeiten liegt unter 5, daher ist die Testwahl korrekt.

Interpretation des \(\chi^2\)-Tests:

  • Die \(\chi^2\)-Testgrösse beträgt 12.6
  • Die Anzahl Freiheitsgrade \((Anzahl Zeilen - 1)\times(Anzahl Reihen - 1) = 1\)
  • Der berechnete p-Wert ist 0.0004

Ergebnisse berichten

Ein Chi-Quadrat-Test wurde für zwei Stichproben ohne (n = 25) und mit Physiotherapie und dem Einsatz von Antiobiotika (n = 25) durchgeführt. Keine erwarteten Zellhäufigkeiten waren kleiner als 5. Es gab einen statistisch signifikanten Zusammenhang zwischen Behandlungsgruppe und dem Einsatz von Antiobiotika, \(\chi^2\)(1) = 12.6, p = .0004.

Übung 1

Aufgabe

Bei einem Eisverkäufer wurde an einem Tag erfasst, wieviel Schoko-Eis und wievel Vanille-Eis von Männern und Frauen gekauft wurden. Frage: Gibt es einen Zusammenhang zwischen Geschlecht und Auswahl von Eis?

Datensatz: eis.csv

  • Der Datensatz umfasst 2 Variablen:
Variable Beschreibung
Geschlecht Mann, Frau
Eis Vanille, Schoko
  1. Wie lauten die Hypothesen? (Lege das Signifikanzniveau bei 0.05 fest.)
  2. Erstelle eine Kreuztabelle mit den beobachteten und den erwarteten Werten; führe einen \(\chi^2\)-Test durch.
  3. Prüfe die Voraussetzungen.
  4. Formuliere das Ergebnis und ziehe eine Schlussfolgerung in leicht verständlicher Sprache.


Lösung

  1. Wie lauten die Hypothesen?
  • \(H_0\): Es besteht kein Zusammenhang zwischen Geschlecht und der Vorliebe für ein bestimmtes Eis.

  • \(H_A\): Es besteht ein Zusammenhang zwischen Geschlecht und der Vorliebe für ein bestimmtes Eis.

  • Signifikanzniveau \(\alpha\) = 0.05

  1. Erstelle eine Kreuztabelle mit den beobachteten und den erwarteten Werten; führe einen \(\chi^2\)-Test durch.
## 
##  CONTINGENCY TABLES
## 
##  Contingency Tables                                          
##  ----------------------------------------------------------- 
##    Eis                    Frau        Mann        Total      
##  ----------------------------------------------------------- 
##    Schoko     Observed          25          15          40   
##               Expected    20.27397    19.72603    40.00000   
##                                                              
##    Vanille    Observed          12          21          33   
##               Expected    16.72603    16.27397    33.00000   
##                                                              
##    Total      Observed          37          36          73   
##               Expected    37.00000    36.00000    73.00000   
##  ----------------------------------------------------------- 
## 
## 
##  <U+03C7>² Tests                              
##  ------------------------------------- 
##          Value       df    p           
##  ------------------------------------- 
##    <U+03C7>²    4.941774     1    0.0262151   
##    N           73                      
##  -------------------------------------
  • Bei Frauen liegt der beobachtete Wert für Schokoeis über und für Vanilleeis unter dem erwarteten Wert.
  • Bei Männern liegt der beobachtete Wert für Schokoeis unter und für Vanilleeis über dem erwarteten Wert.
  1. Prüfe die Voraussetzungen.
  • Es handelt sich um eine Zufallsstichproben und die erwartete Häufigkeit ist < 5. Der \(\chi^2\) Test ist gültig.
  1. Formuliere das Ergebnis und ziehe eine Schlussfolgerung in leicht verständlicher Sprache.

Die Wahrscheinlichkeit für \(\chi^2 = 4.942\) für eine 2 x 2-Vierfeldertafel (df = 1) unter der Nullhypothese ist p = 0.026; damit ist p kleiner als das festgelegte Signifikanzniveau und wir verwerfen die Nullhypothese zugunsten der Alternativhypothese.

Schlussfolgerung: An einer Zufallsstichprobe (Frauen n = 37, Männer n = 36), ob ein Zusammenhang zwischen Geschlecht und Vorliebe für ein bestimmtes Eis besteht. Keine der erwarteten Zellhäufigkeiten waren kleiner als 5. Der Chi-Quadrat-Test ergab einen statistisch signifikanten Zusammenhang zwischen Geschlecht und der Vorliebe für ein bestimmtes Eis: Frauen bevorzugen eher Schokoeis, Männer eher Vanilleeis, \(\chi^2\)(1) = 4.94, p = .0262.

Übung 2

Aufgabe

Die Inhaberin einer Firma möchte die Krankheitsabwesenheiten infolge Covid-19 möglichst gering halten und bietet seiner Belegschaft (184 Personen) ein Impfprogramm an. Die Hälfte der Angestellten sind bereit, sich impfen zu lassen, die andere Hälfte ist gegenüber der Impfung skeptisch und verzichtet darauf. In den folgenden 6 Monaten schickt die Unternehmerin eine Pflegefachperson zu allen Personen, die an einem Infekt erkranken. Diese entnimmt den Erkrankten eine Speichelprobe und schickt sie ins Labor, um festzustellen, welcher Erreger die Krankheit verursacht hat. Die Ergebnisse der Laboruntersuchung werden eingeteilt in Covid-19- und Nicht-Covid-19-Erkrankungen.

  • Die Resultate dieser Untersuchung sind im Datensatz impfung.csv abgelegt.

  • Der Datensatz umfasst 2 Variablen

Variable Beschreibung
geimpft ja, nein
Krankheit Covid, Nicht-Covid, gesund


  1. Wie lauten die Hypothesen? (Lege das Signifikanzniveau bei 0.05 fest.)
  2. Erstelle eine Kreuztabelle mit den beobachteten und den erwarteten Werten; führe einen \(\chi^2\)-Test durch.
  3. Prüfe die Voraussetzungen.
  4. Formuliere das Ergebnis und ziehe eine Schlussfolgerung in leicht verständlicher Sprache.


Lösung

  1. Wie lauten die Hypothesen? (Lege das Signifikanzniveau bei 0.5 fest.)
  • \(H_0\): Die Impfung hat keinen Einfluss auf die Art und die Häufigkeit der Erkrankungen.

  • \(H_A\): Die Impfung hat einen Einfluss auf die Art und die Häufigkeit der Erkrankung.

  • Signifikanzniveau \(\alpha = 0.05\)

  1. Erstelle eine Kreuztabelle mit den beobachteten und den erwarteten Werten; führe einen \(\chi^2\)-Test durch.
## 
##  CONTINGENCY TABLES
## 
##  Contingency Tables                                                 
##  ------------------------------------------------------------------ 
##    Krankheit                  ja           nein         Total       
##  ------------------------------------------------------------------ 
##    Covid          Observed            5           23           28   
##                   Expected    14.000000    14.000000     28.00000   
##                                                                     
##    gesund         Observed           77           61          138   
##                   Expected    69.000000    69.000000    138.00000   
##                                                                     
##    Nicht-Covid    Observed           10            8           18   
##                   Expected     9.000000     9.000000     18.00000   
##                                                                     
##    Total          Observed           92           92          184   
##                   Expected    92.000000    92.000000    184.00000   
##  ------------------------------------------------------------------ 
## 
## 
##  <U+03C7>² Tests                              
##  ------------------------------------- 
##          Value       df    p           
##  ------------------------------------- 
##    <U+03C7>²    13.64872     2    0.0010870   
##    N          184                      
##  -------------------------------------
  • für Geimpfte liegen die Werte für Covid-Erkrankung unter und für “gesund” über den erwarteten Werten. Die Nicht-Covid-Erkrankungen entsprechen den erwarteten Werten.
  • für Nicht-Geimpfte liegen die Werte für Covid-Erkrankung über und für "gesund unter den erwarteten Werten. Die Nicht-Covid-Erkrankungen entsprechen den Erwartungen.

  1. Prüfe die Voraussetzungen.
  • Es handelt sich nicht um eine Zufallsstichprobe im engeren Sinn (die Proband:innen waren alle Angestellten einer Firma, die Zuordnung zu den Gruppen erfolgte nach Wunsch und nicht randomisiert); keine erwartete Häufigkeit ist < 5. Obwohl die Voraussetzungen nicht zu 100% erfüllt sind, können wir einen \(\chi^2\)-Test durchführen.

  1. Formulieren Sie ihr Ergebnis.

Die Wahrscheinlichkeit für \(\chi^2 = 13.65\) für eine 3 x 2-Kreuztabelle (df = 2) unter der Nullhypothese ist p = 0.001; damit ist p kleiner als das festgelegte Signifikanzniveau und wir verwerfen die Nullhypothese zugunsten der Alternativhypothese.

Untersucht wurde anhand der Belegschaft einer Firma (geimpft n = 92, nicht geimpft n = 92) der Zusammenhang zwischen Covid-19-Impfung und der Erkrankungshäufigkeit sowie der Krankheitsursache (Covid-19, Nicht-Covid-19) in den Folgemonaten (Beobachtungsdauer: 6 Monate). Keine der erwarteten Zellhäufigkeiten waren kleiner als 5. Der Chi-Quadrat-Test ergab einen statistisch signifikanten Zusammenhang zwischen Impfstatus und Erkrankungshäufigkeit, \(\chi^2\)(2) = 13.7, p = .0011.

Übung 3

Aufgabe

Die Unternehmerin aus Übung 2 erzählt im Bekanntenkreis vom Erfolg ihrer Impfkampagne. Ein Kollege mit einer etwas kleineren Firma (36 Angestellte) findet das eine gute Sache und bietet seinen Angestellten ebenfalls eine Impfung an. Da er ein kleineres Budget hat, verzichtet er auf die Laboruntersuchung und erfasst nur, ob jemand erkrankt oder nicht erkrankt.

  • Die Resultate dieser Untersuchung sind im Datensatz impfung2.csvabgelegt.

  • Der Datensatz umfasst 2 Variablen

Variable Beschreibung
geimpft ja, nein
Krankheit ja, nein


  1. Wie lauten die Hypothesen? (Lege das Signifikanzniveau bei 0.05 fest.)
  2. Erstelle eine Kreuztabelle mit den beobachteten und den erwarteten Werten; führe einen \(\chi^2\)-Test durch.
  3. Prüfe die Voraussetzungen.
  4. Formuliere das Ergebnis und ziehe eine Schlussfolgerung in leicht verständlicher Sprache.


Lösung

  1. Wie lauten die Hypothesen?
  • \(H_0\): Die Impfung hat keinen Einfluss auf die Art und die Häufigkeit der Erkrankungen.

  • \(H_A\): Die Impfung hat einen Einfluss auf die Art und die Häufigkeit der Erkrankung.

  • Signifikanzniveau \(\alpha = 0.05\)

  1. Erstelle eine Kreuztabelle mit den beobachteten und den erwarteten Werten; führe einen \(\chi^2\)-Test durch.
## 
##  CONTINGENCY TABLES
## 
##  Contingency Tables                                               
##  ---------------------------------------------------------------- 
##    Krankheit                ja           nein         Total       
##  ---------------------------------------------------------------- 
##    ja           Observed            1            6            7   
##                 Expected     3.111111     3.888889     7.000000   
##                                                                   
##    nein         Observed           15           14           29   
##                 Expected    12.888889    16.111111    29.000000   
##                                                                   
##    Total        Observed           16           20           36   
##                 Expected    16.000000    20.000000    36.000000   
##  ---------------------------------------------------------------- 
## 
## 
##  <U+03C7>² Tests                              
##  ------------------------------------- 
##          Value       df    p           
##  ------------------------------------- 
##    <U+03C7>²    3.200985     1    0.0735939   
##    N           36                      
##  -------------------------------------
  • Für Geimpfte liegt die Erkrankungshäufigkeit unter den Erwartungen.
  • Für Nicht-Geimpfte liegt die Erkrankungshäufigkeit über den Erwartungen.

  1. Prüfe die Test-Voraussetzungen.
  • Der erwartete Wert ist in den Zellen Krankheit:ja <5, damit ist die Test-Voraussetzung für den Chi-Quadrat-Test nicht erfüllt und wir wählen den Fisher’s exakter Test.
## 
##  CONTINGENCY TABLES
## 
##  Contingency Tables                                               
##  ---------------------------------------------------------------- 
##    Krankheit                ja           nein         Total       
##  ---------------------------------------------------------------- 
##    ja           Observed            1            6            7   
##                 Expected     3.111111     3.888889     7.000000   
##                                                                   
##    nein         Observed           15           14           29   
##                 Expected    12.888889    16.111111    29.000000   
##                                                                   
##    Total        Observed           16           20           36   
##                 Expected    16.000000    20.000000    36.000000   
##  ---------------------------------------------------------------- 
## 
## 
##  <U+03C7>² Tests                                          
##  ------------------------------------------------- 
##                           Value        p           
##  ------------------------------------------------- 
##    Fisher's exact test    0.1628061    0.1041343   
##    N                             36                
##  -------------------------------------------------

Der p-Wert liegt mit 0.104 über dem festgelegten Signifikanzniveau \(\alpha = 0.05\) und wir haben keine Evidenz dafür, die Nullhypothese zu verwerfen.

  1. Formuliere das Ergebnis und ziehe eine Schlussfolgerung in leicht verständlicher Sprache.

Anhand der Belegschaft einer Firma (n = 36, geimpft n = 16, nicht geimpft n = 20) wurde untersucht, ob ein Zusammenhang zwischen Impfung und Erkrankungshäufigkeit in den Folgemonaten besteht. In zwei Zellen lagen die erwartete Werte < 5 und es wurde Fisher’s exakter Test für die Nullhypothesenprüfung verwendet. Die statistische Analyse ergab keinen signifikanten Zusammenhang zwischen Impfstatus und Erkrankungsrate, Fisher’s exakter Test , p = .104

Anmerkung: Fisher’s exakter Test ist zwar sehr genau, aber seine Power, d.h. ein Effekt zu entdecken, wenn die Nullhypothese falsch ist, ist eher klein. Wenn die Voraussetzungen erfüllt sind, sollte daher immer der \(\chi^2-Test\) bevorzugt werden.



Referenzen

The Jamovi Project. 2021. jamovi. https://www.jamovi.org/.
U. H. Cegla, A. Harten, H.-J. Jost, and S. Wissmann. 2002. “Krankheitsverlauf Bei Schwerer COPD Mit Und Ohne Physiotherapie Mit Dem RC-Cornet(r) - Eine Randomisierte 2-Jahres-Langzeitstudie.” Pneumologie 7 (36): 418–24. https://doi.org/10.1055/s-2002-32870.
LS0tDQp0aXRsZTogIkluZmVyZW56IGbDvHIgcXVhbGl0YXRpdmUgRGF0ZW46IMOcYnVuZ2VuIg0KYXV0aG9yOiAiTHVrYXMgU3RhbW1sZXIiDQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiDQpvdXRwdXQ6DQogIGh0bWxfZG9jdW1lbnQ6DQogICAgZmlnX2hlaWdodDogNg0KICAgIGZpZ193aWR0aDogNg0KICAgIGhpZ2hsaWdodDogcHlnbWVudHMNCiAgICB0aGVtZTogeWV0aQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCmJpYmxpb2dyYXBoeTogc2tlbGV0b24uYmliDQpsaW5rLWNpdGF0aW9uczogeWVzDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQpybShsaXN0ID0gbHMoKSkNCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQ0KDQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoam12KQ0KbGlicmFyeShrbml0cikNCmxpYnJhcnkoa2FibGVFeHRyYSkNCmBgYA0KDQojIFRlY2huaXNjaGUgVm9yYmVtZXJrdW5nDQoNCiogRGllIMOcYnVuZ2VuIHNpbmQgZsO8ciBkaWUgQXJiZWl0IG1pdCBgamFtb3ZpYCBbQGphbW92aV0gYW5nZWxlZ3QsIGvDtm5uZW4gYWJlciBtaXQgamVkZXIgYW5kZXJlbiBTdGF0aXN0aWtzb2Z0d2FyZSBiZWFyYmVpdGV0IHdlcmRlbi4gICAgDQoqIERpZSBEYXRlbnPDpHR6ZSBmw7xyIGFsbGUgw5xidW5nZW4ga8O2bm5lbiBbaGllcl0oaHR0cHM6Ly9naXRodWIuY29tL2x1a2Fzc3RhbW1sZXIvU1RBVC90cmVlL21haW4vRGF0YXNldHMpIGhlcnVudGVyZ2VsYWRlbiB3ZXJkZW4uIEVzIHdpcmQgZW1wZm9obGVuLCBhbGxlIERhdGVuc8OkdHplIGltIGdsZWljaGVuIE9yZG5lciBhYnp1bGVnZW4uICAgDQoqIERpZSBEYXRlbnPDpHR6ZSBsaWVnZW4gaW0gYC5jc3ZgLUZvcm1hdCB2b3IgKGhlYWRlciA9IFRSVUUsIHNlcCA9ICIsIiwgZGVjID0gIi4iKSB1bmQga8O2bm5lbiBkaXJla3QgaW4gamFtb3ZpIGdlw7ZmZm5ldCB3ZXJkZW4uIEVzIHdpcmQgZW1wZm9obGVuLCBuYWNoIGRlciBLYXRlZ29yaXNpZXJ1bmcgZGVyIFZhcmlhYmxlbiBpbiBgamFtb3ZpYCwgZGllIERhdGVpIGltIGBqYW1vdmlgLUZvcm1hdCBgLm9tdmAgenUgc3BlaWNoZXJuLiAgIA0KICAgIA0KPGJyIC8+DQoNCiMgQ2hpLVF1YWRyYXQtVGVzdCAoJFxjaGleMiQtVGVzdCkNCg0KVW50ZXJzdWNodCwgb2IgZWluIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiB6d2VpIHF1YWxpdGF0aXZlbiBWYXJpYWJsZW4gYmVzdGVodCBiencuIG9iIGRpZSBBdXNwcsOkZ3VuZ2VuIGRlciBlaW5lbiBWYXJpYWJsZW4gdm9uIGVpbmVyIGFuZGVyZW4gVmFyaWFibGVuIGFiaMOkbmdlbi4NCg0KKipCZWlzcGllbDoqKiANCg0KKiBEaWUgRWZmZWt0aXZpdMOkdCBlaW5lciBBdGVtcGh5c2lvdGhlcmFwaWUgbWl0IGNvbWJpbmVkLVBFUCAoUkMtQ29ybmV0wq4gQXVzZ2FuZ3Nwb3NpdGlvbikgaW4gZGVyIExhbmd6ZWl0dGhlcmFwaWUgd3VyZGUgaW0gZm9sZ2VuZGVuIFNldC11cCB1bnRlcnN1Y2h0LiBTdHVkaWVuZGVzaWduOiBSYW5kb21pc2llcnRlIHByb3NwZWt0aXZlIFN0dWRpZSDDvGJlciAyIEphaHJlIGFuIDUwIFBhdGllbnRlbiBtaXQgc2Nod2VyZXIgQ09QRCAoMTIgdywgMzggbSwgQWx0ZXIgNjMsMSBKYWhyZSwgRkVWMSA0MSAlLCBETENPIDUxICUgZGVzIFNvbGxzKS4gRGllIFBhdGllbnRlbiB3YXJlbiB6dSBCZWdpbm4gZGVyIFN0dWRpZSBpbmZla3RmcmVpIHVuZCBFeHJhdWNoZXIuIERpZSBlcnN0ZSBHcnVwcGUgd3VyZGUgbnVyIG1lZGlrYW1lbnTDtnMgdGhlcmFwaWVydCAoVGhlb3BoeWxsaW4sIFNhbG1ldGVyb2wsIElwcmF0cm9waXVtYnJvbWlkLCBHbHVjb2NvcnRpY29zdGVyb2lkZSBzeXN0ZW1pc2NoIDUgbWcgUHJlZG5pc29sb27DpHF1aXZhbGVudCkuIERpZSB6d2VpdGUgR3J1cHBlIGVyaGllbHQgZGllIE1lZGlrYXRpb24gd2llIGJlaSBHcnVwcGUgMSBwbHVzIFBoeXNpb3RoZXJhcGllIDMgw5cgdMOkZ2xpY2ggbWluZGVzdGVucyDDvGJlciA1IE1pbnV0ZW4gdW5kIGZhbGxzIGVyZm9yZGVybGljaCDDtmZ0ZXIgbWl0IGRlbSBSQy1Db3JuZXTCriBpbiBBdXNnYW5nc3N0ZWxsdW5nIChlcnpldWd0IGVpbmVuIGNvbWJpbmVkIFBFUCwgZC4gaC4sIERhdWVyLVBFUCBwbHVzIGF1Zmdlc2V0enRlIERydWNrb3N6aWxsYXRpb25lbikuIEluIDMtIGJ6dy4gaW0gendlaXRlbiBKYWhyIGluIDQtbW9uYXRpZ2VtIEFic3RhbmQgZXJmb2xndGVuIEx1bmdlbmZ1bmt0aW9uc2tvbnRyb2xsZW4gdW5kIGtsaW5pc2NoZSBVbnRlcnN1Y2h1bmdlbi4gRGllIENvbXBsaWFuY2Ugd3VyZGUgbWl0dGVscyBUaGVvcGh5bGxpbi0gdW5kIENvcnRpc29sc3BpZWdlbC1Lb250cm9sbGVuLCBJbnNwZWt0aW9uIGRlcyBSQy1Db3JuZXRzwq4gc293aWUgQmVmcmFndW5nIGRlciBQYXRpZW50ZW4gw7xiZXJwcsO8ZnQuIFtAY29wZF0NCg0KKiBFaW5lIGRlciBGb3JzY2h1bmdzZnJhZ2VuIHdhciwgb2IgZXMgaW0gVW50ZXJzdWNodW5nc3plaXRyYXVtIGVpbmVuIFp1c2FtbWVuaGFuZyBnaWJ0IHp3aXNjaGVuIGRlciBUaGVyYXBpZSB1bmQgZGVyIE5vdHdlbmRpZ2tlaXQsIEFudGliaW90aWthIGVpbnp1bmVobWVuLg0KDQoqIERpZSBFcmdlYm5pc3NlIHNpbmQgaW0gRGF0ZW5zZXQgYGNvcGQuY3N2YGFiZ2VsZWd0Lg0KDQoqIERlciBEYXRlbnNhdHogdW1mYXNzdCAyIFZhcmlhYmxlbjoNCg0KfFZhcmlhYmxlIHwgQmVzY2hyZWlidW5nfA0KfDotLS0tLS0tLTp8Oi0tLS0tLS0tLS0tLTp8DQp8R3J1cHBlIHwgS29udHJvbGxncnVwcGUgKG9obmUgUFQpIG9kZXIgSW50ZXJ2ZW50aW9uc2dydXBwZSAobWl0IFBUKXwNCnxBbnRpYmlvdGlrYSB8IG1pbmRlc3RlbnMgMSBNYWwgQW50aWJpb3Rpa2EgenVyIFRoZXJhcGllIGVpbmVyIEV4YXplcmJhdGlvbnwNCg0KDQpgYGB7cn0NCiMgR3J1cHBlIDwtIGMocmVwKCJLb250cm9sbGUiLCB0aW1lcyA9IDI1KSwgcmVwKCJJbnRlcnZlbnRpb24iLCB0aW1lcyA9IDI1KSkNCiMgQW50aWJpb3Rpa2EgPC0gYyhyZXAoIkphIiwgdGltZXMgPSAyNCksICJOZWluIiwgcmVwKCJKYSIsIHRpbWVzID0gMTMpLCByZXAoIk5laW4iLCAxMikpDQojIGNvcGQgPC0gdGliYmxlKEdydXBwZSwgQW50aWJpb3Rpa2EpDQojIHdyaXRlX2Nzdihjb3BkLCBmaWxlID0gImNvcGQuY3N2IikNCg0KY29wZCA8LSByZWFkX2NzdigiQzovVXNlcnMvYmFsYnUvc3dpdGNoZHJpdmUvUi9HaXRodWIvU1RBVC9EYXRhc2V0cy9jb3BkLmNzdiIpDQoNCmFkZG1hcmdpbnMoKHRhYmxlKGNvcGQpKSkgJT4lIA0KICBrYmwoY2FwdGlvbiA9ICJHcnVwcGVuIHVuZCBBbnRpYmlvdGlrYSwgYWJzb2x1dGUgSMOkdWZpZ2tlaXRlbiIpICU+JSANCiAga2FibGVfc3R5bGluZyhmdWxsX3dpZHRoID0gRkFMU0UpDQoNCmFkZG1hcmdpbnMocHJvcC50YWJsZSh0YWJsZShjb3BkKSkpICU+JSANCiAga2JsKGNhcHRpb24gPSAiR3J1cHBlbiB1bmQgQW50aWJpb3Rpa2EsIHJlbGF0aXZlIEjDpHVmaWdrZWl0ZW4iKSAlPiUgDQogIGthYmxlX3N0eWxpbmcoZnVsbF93aWR0aCA9IEZBTFNFKQ0KYGBgDQoNCiMjIEh5cG90aGVzZW4NCg0KKiAkSF8wJCA6IERlciBFaW5zYXR6IHZvbiBBbnRpb2Jpb3Rpa2EgaXN0IHVuYWJow6RuZ2lnIHZvbiBkZXIgQmVoYW5kbHVuZy4gICANCiogJEhfQSQgOiBEZXIgRWluc2F0eiB2b24gQW50aW9iaW90aWthIGlzdCBhYmjDpG5naWcgdm9uIGRlciBCZWhhbmRsdW5nLiAgDQoNCiogU2lnbmlmaWthbnpuaXZlYXUgJFxhbHBoYSA9IDAuMDUkICAgDQoNCiMjICRcY2hpXjIkLVRlc3QgaW4gamFtb3ZpDQoNCmBgYHtyfQ0KY2hpX2NvcGQgPC0gY2hpc3EudGVzdChjb3BkJEdydXBwZSwgY29wZCRBbnRpYmlvdGlrYSwgY29ycmVjdCA9IEZBTFNFKQ0KIyBjaGlfY29wZA0KIyBjaGlfY29wZCRvYnNlcnZlZA0KIyBjaGlfY29wZCRleHBlY3RlZA0KDQpqbXY6OmNvbnRUYWJsZXMoDQogIGZvcm11bGEgPSB+R3J1cHBlOkFudGliaW90aWthLA0KICBkYXRhID0gY29wZCwNCiAgZXhwID0gRkFMU0UNCikNCmBgYA0KU29ycnksIGhpZXIgaGF0IE1hcmtkb3duIGVpbiBQcm9ibGVtOiAgPFUrMDNDNz7CsiA9ICRcY2hpXjIkICANCg0KIyMgQmVkaW5ndW5nZW4gZsO8ciBkZW4gJFxjaGleMiQtVGVzdCBwcsO8ZmVuDQoNCiogQWxsZSB1bnRlciBkZXIgTnVsbGh5cG90aGVzZSBlcndhcnRldGVuIGFic29sdXRlbiBIw6R1Zmlna2VpdGVuIHNpbmQgPiA1LCBzb25zdCBGaXNoZXIncyBleGFrdGVuIFRlc3QgdmVyd2VuZGVuLiAgICANCiogRGllIGVyd2FydGV0ZW4gSMOkdWZpZ2tlaXRlbiBrw7ZubmVuIGluIGphbW92aSA+IGZyZXF1ZW5jaWVzID4gY29udGluZ2VuY3kgdGFibGVzID4gSW5kZXBlbmRlbnQgc2FtcGxlcyB1bnRlciAqY2VsbHMqIGF1c2dld8OkaGx0IHdlcmRlbi4gICAgDQoNCmBgYHtyfQ0Kam12Ojpjb250VGFibGVzKA0KICBmb3JtdWxhID0gfkdydXBwZTpBbnRpYmlvdGlrYSwNCiAgZGF0YSA9IGNvcGQsDQogIGNpID0gRkFMU0UsDQogIGV4cCA9IFRSVUUNCikNCmBgYA0KDQoqIEtlaW5lIGRlciBlcndhcnRldGVuIEjDpHVmaWdrZWl0ZW4gbGllZ3QgdW50ZXIgNSwgZGFoZXIgaXN0IGRpZSBUZXN0d2FobCBrb3JyZWt0LiAgDQoNCioqSW50ZXJwcmV0YXRpb24gZGVzICRcY2hpXjIkLVRlc3RzOioqIA0KDQoqIERpZSAkXGNoaV4yJC1UZXN0Z3LDtnNzZSBiZXRyw6RndCAxMi42ICAgIA0KKiBEaWUgQW56YWhsIEZyZWloZWl0c2dyYWRlICQoQW56YWhsIFplaWxlbiAtIDEpXHRpbWVzKEFuemFobCBSZWloZW4gLSAxKSA9IDEkICAgICANCiogRGVyIGJlcmVjaG5ldGUgcC1XZXJ0IGlzdCAwLjAwMDQgICAgIA0KDQoNCiMjIEVyZ2Vibmlzc2UgYmVyaWNodGVuDQoNCipFaW4gQ2hpLVF1YWRyYXQtVGVzdCB3dXJkZSBmw7xyIHp3ZWkgU3RpY2hwcm9iZW4gb2huZSAobiA9IDI1KSB1bmQgbWl0IFBoeXNpb3RoZXJhcGllIHVuZCBkZW0gRWluc2F0eiB2b24gQW50aW9iaW90aWthIChuID0gMjUpIGR1cmNoZ2Vmw7xocnQuIEtlaW5lIGVyd2FydGV0ZW4gWmVsbGjDpHVmaWdrZWl0ZW4gd2FyZW4ga2xlaW5lciBhbHMgNS4gRXMgZ2FiIGVpbmVuIHN0YXRpc3Rpc2NoIHNpZ25pZmlrYW50ZW4gWnVzYW1tZW5oYW5nIHp3aXNjaGVuIEJlaGFuZGx1bmdzZ3J1cHBlIHVuZCBkZW0gRWluc2F0eiB2b24gQW50aW9iaW90aWthLCAkXGNoaV4yJCgxKSA9IDEyLjYsIHAgPSAuMDAwNC4qDQoNCg0KIyDDnGJ1bmcgMSB7LnRhYnNldH0NCg0KIyMgQXVmZ2FiZQ0KDQpCZWkgZWluZW0gRWlzdmVya8OkdWZlciB3dXJkZSBhbiBlaW5lbSBUYWcgZXJmYXNzdCwgd2lldmllbCBTY2hva28tRWlzIHVuZCB3aWV2ZWwgVmFuaWxsZS1FaXMgdm9uIE3DpG5uZXJuIHVuZCBGcmF1ZW4gZ2VrYXVmdCB3dXJkZW4uIEZyYWdlOiBHaWJ0IGVzIGVpbmVuIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBHZXNjaGxlY2h0IHVuZCBBdXN3YWhsIHZvbiBFaXM/ICANCg0KRGF0ZW5zYXR6OiAgKmVpcy5jc3YqICAgDQoNCiogRGVyIERhdGVuc2F0eiB1bWZhc3N0IDIgVmFyaWFibGVuOiAgDQoNCnwgVmFyaWFibGUgfCBCZXNjaHJlaWJ1bmcgfCAgDQp8Oi0tLS0tLS0tOnw6LS0tLS0tLS0tLS0tOnwgDQp8R2VzY2hsZWNodCB8IE1hbm4sIEZyYXV8ICANCnxFaXMgfCBWYW5pbGxlLCBTY2hva28gIHwNCg0KDQpgYGB7cn0NCiMgZWlzIDwtIHRpYmJsZSgNCiMgICBHZXNjaGxlY2h0ID0gYyhyZXAoIkZyYXUiLCAzNyksIHJlcCgiTWFubiIsIDM2KSksDQojICAgRWlzID0gYyhyZXAoIlZhbmlsbGUiLCAxMiksIHJlcCgiU2Nob2tvIiwgMjUpLCByZXAoIlZhbmlsbGUiLCAyMSksIHJlcCgiU2Nob2tvIiwgMTUpKQ0KIyApDQojIHdyaXRlX2NzdihlaXMsICJlaXMuY3N2IikNCg0KZWlzIDwtIHJlYWRfY3N2KCJDOi9Vc2Vycy9iYWxidS9zd2l0Y2hkcml2ZS9SL0dpdGh1Yi9TVEFUL0RhdGFzZXRzL2Vpcy5jc3YiKQ0KYGBgDQoNCjEuIFdpZSBsYXV0ZW4gZGllIEh5cG90aGVzZW4/IChMZWdlIGRhcyBTaWduaWZpa2Fuem5pdmVhdSBiZWkgMC4wNSBmZXN0LikgICAgICAgICANCjIuIEVyc3RlbGxlIGVpbmUgS3JldXp0YWJlbGxlIG1pdCBkZW4gYmVvYmFjaHRldGVuIHVuZCBkZW4gZXJ3YXJ0ZXRlbiBXZXJ0ZW47IGbDvGhyZSBlaW5lbiAkXGNoaV4yJC1UZXN0IGR1cmNoLiAgICANCjMuIFByw7xmZSBkaWUgVm9yYXVzc2V0enVuZ2VuLiAgICAgICAgDQo0LiBGb3JtdWxpZXJlIGRhcyBFcmdlYm5pcyB1bmQgemllaGUgZWluZSBTY2hsdXNzZm9sZ2VydW5nIGluIGxlaWNodCB2ZXJzdMOkbmRsaWNoZXIgU3ByYWNoZS4gICANCjxiciAvPg0KPGJyIC8+DQoNCiMjIEzDtnN1bmcgICAgDQoNCjEuIFdpZSBsYXV0ZW4gZGllIEh5cG90aGVzZW4/ICAgDQoNCiogJEhfMCQ6IEVzIGJlc3RlaHQga2VpbiBadXNhbW1lbmhhbmcgendpc2NoZW4gR2VzY2hsZWNodCB1bmQgZGVyIFZvcmxpZWJlIGbDvHIgZWluIGJlc3RpbW10ZXMgRWlzLiAgICANCiogJEhfQSQ6IEVzIGJlc3RlaHQgZWluIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBHZXNjaGxlY2h0IHVuZCBkZXIgVm9ybGllYmUgZsO8ciBlaW4gYmVzdGltbXRlcyBFaXMuICANCg0KKiBTaWduaWZpa2Fuem5pdmVhdSAkXGFscGhhJCA9IDAuMDUNCg0KMi4gRXJzdGVsbGUgZWluZSBLcmV1enRhYmVsbGUgbWl0IGRlbiBiZW9iYWNodGV0ZW4gdW5kIGRlbiBlcndhcnRldGVuIFdlcnRlbjsgZsO8aHJlIGVpbmVuICRcY2hpXjIkLVRlc3QgZHVyY2guICAgDQoNCmBgYHtyfQ0Kam12Ojpjb250VGFibGVzKA0KICBmb3JtdWxhID0gfkVpczpHZXNjaGxlY2h0LA0KICBkYXRhID0gZWlzLA0KICBjaSA9IEZBTFNFLA0KICBleHAgPSBUUlVFDQopDQpgYGANCg0KKiBCZWkgRnJhdWVuIGxpZWd0IGRlciBiZW9iYWNodGV0ZSBXZXJ0IGbDvHIgU2Nob2tvZWlzIMO8YmVyIHVuZCBmw7xyIFZhbmlsbGVlaXMgdW50ZXIgZGVtIGVyd2FydGV0ZW4gV2VydC4gIA0KKiBCZWkgTcOkbm5lcm4gbGllZ3QgZGVyIGJlb2JhY2h0ZXRlIFdlcnQgZsO8ciBTY2hva29laXMgdW50ZXIgdW5kIGbDvHIgVmFuaWxsZWVpcyDDvGJlciBkZW0gZXJ3YXJ0ZXRlbiBXZXJ0LiAgDQoNCjMuIFByw7xmZSBkaWUgVm9yYXVzc2V0enVuZ2VuLiAgIA0KDQoqIEVzIGhhbmRlbHQgc2ljaCB1bSBlaW5lIFp1ZmFsbHNzdGljaHByb2JlbiB1bmQgZGllIGVyd2FydGV0ZSBIw6R1Zmlna2VpdCBpc3QgPCA1LiBEZXIgJFxjaGleMiQgVGVzdCBpc3QgZ8O8bHRpZy4NCjxiciAvPg0KDQo0LiBGb3JtdWxpZXJlIGRhcyBFcmdlYm5pcyB1bmQgemllaGUgZWluZSBTY2hsdXNzZm9sZ2VydW5nIGluIGxlaWNodCB2ZXJzdMOkbmRsaWNoZXIgU3ByYWNoZS4NCg0KRGllIFdhaHJzY2hlaW5saWNoa2VpdCBmw7xyICRcY2hpXjIgPSA0Ljk0MiQgZsO8ciBlaW5lIDIgeCAyLVZpZXJmZWxkZXJ0YWZlbCAoZGYgPSAxKSB1bnRlciBkZXIgTnVsbGh5cG90aGVzZSBpc3QgcCA9IDAuMDI2OyBkYW1pdCBpc3QgcCBrbGVpbmVyIGFscyBkYXMgZmVzdGdlbGVndGUgU2lnbmlmaWthbnpuaXZlYXUgdW5kIHdpciB2ZXJ3ZXJmZW4gZGllIE51bGxoeXBvdGhlc2UgenVndW5zdGVuIGRlciBBbHRlcm5hdGl2aHlwb3RoZXNlLiAgDQoNCioqU2NobHVzc2ZvbGdlcnVuZzogQW4gZWluZXIgWnVmYWxsc3N0aWNocHJvYmUgKEZyYXVlbiBuID0gMzcsIE3DpG5uZXIgbiA9IDM2KSwgb2IgZWluIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBHZXNjaGxlY2h0IHVuZCBWb3JsaWViZSBmw7xyIGVpbiBiZXN0aW1tdGVzIEVpcyBiZXN0ZWh0LiBLZWluZSBkZXIgZXJ3YXJ0ZXRlbiBaZWxsaMOkdWZpZ2tlaXRlbiB3YXJlbiBrbGVpbmVyIGFscyA1LiBEZXIgQ2hpLVF1YWRyYXQtVGVzdCBlcmdhYiBlaW5lbiBzdGF0aXN0aXNjaCBzaWduaWZpa2FudGVuIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBHZXNjaGxlY2h0IHVuZCBkZXIgVm9ybGllYmUgZsO8ciBlaW4gYmVzdGltbXRlcyBFaXM6IEZyYXVlbiBiZXZvcnp1Z2VuIGVoZXIgU2Nob2tvZWlzLCBNw6RubmVyIGVoZXIgVmFuaWxsZWVpcywgJFxjaGleMiQoMSkgPSA0Ljk0LCBwID0gLjAyNjIuKioNCjxiciAvPg0KPGJyIC8+DQoNCiMgw5xidW5nIDIgey50YWJzZXR9DQoNCiMjIEF1ZmdhYmUNCg0KRGllIEluaGFiZXJpbiBlaW5lciBGaXJtYSBtw7ZjaHRlIGRpZSBLcmFua2hlaXRzYWJ3ZXNlbmhlaXRlbiBpbmZvbGdlIENvdmlkLTE5IG3DtmdsaWNoc3QgZ2VyaW5nIGhhbHRlbiB1bmQgYmlldGV0IHNlaW5lciBCZWxlZ3NjaGFmdCAoMTg0IFBlcnNvbmVuKSBlaW4gSW1wZnByb2dyYW1tIGFuLiBEaWUgSMOkbGZ0ZSBkZXIgQW5nZXN0ZWxsdGVuIHNpbmQgYmVyZWl0LCBzaWNoIGltcGZlbiB6dSBsYXNzZW4sIGRpZSBhbmRlcmUgSMOkbGZ0ZSBpc3QgZ2VnZW7DvGJlciBkZXIgSW1wZnVuZyBza2VwdGlzY2ggdW5kIHZlcnppY2h0ZXQgZGFyYXVmLiBJbiBkZW4gZm9sZ2VuZGVuIDYgTW9uYXRlbiBzY2hpY2t0IGRpZSBVbnRlcm5laG1lcmluIGVpbmUgUGZsZWdlZmFjaHBlcnNvbiB6dSBhbGxlbiBQZXJzb25lbiwgZGllIGFuIGVpbmVtIEluZmVrdCBlcmtyYW5rZW4uIERpZXNlIGVudG5pbW10IGRlbiBFcmtyYW5rdGVuIGVpbmUgU3BlaWNoZWxwcm9iZSB1bmQgc2NoaWNrdCBzaWUgaW5zIExhYm9yLCB1bSBmZXN0enVzdGVsbGVuLCB3ZWxjaGVyIEVycmVnZXIgZGllIEtyYW5raGVpdCB2ZXJ1cnNhY2h0IGhhdC4gRGllIEVyZ2Vibmlzc2UgZGVyIExhYm9ydW50ZXJzdWNodW5nIHdlcmRlbiBlaW5nZXRlaWx0IGluIENvdmlkLTE5LSB1bmQgTmljaHQtQ292aWQtMTktRXJrcmFua3VuZ2VuLiAgIA0KDQoqIERpZSBSZXN1bHRhdGUgZGllc2VyIFVudGVyc3VjaHVuZyBzaW5kIGltIERhdGVuc2F0eiBgaW1wZnVuZy5jc3ZgIGFiZ2VsZWd0Lg0KDQpgYGB7cn0NCiMgaW1wZnVuZyA8LSB0aWJibGUoDQojICAgZ2VpbXBmdCA9IGMocmVwKCJqYSIsIDkyKSwgcmVwKCJuZWluIiwgOTIpKSwNCiMgICBLcmFua2hlaXQgPSBjKHJlcCgiQ292aWQiLCA1KSwgcmVwKCJOaWNodC1Db3ZpZCIsIDEwKSwgcmVwKCJnZXN1bmQiLCA3NyksIHJlcCgiQ292aWQiLCAyMyksIHJlcCgiTmljaHQtQ292aWQiLCA4KSwgcmVwKCJnZXN1bmQiLCA2MSkpDQojICkNCiMgd3JpdGVfY3N2KGltcGZ1bmcsIGZpbGUgPSAiaW1wZnVuZy5jc3YiKQ0KDQppbXBmdW5nIDwtIHJlYWRfY3N2KCJDOi9Vc2Vycy9iYWxidS9zd2l0Y2hkcml2ZS9SL0dpdGh1Yi9TVEFUL0RhdGFzZXRzL2ltcGZ1bmcuY3N2IikNCmBgYA0KDQoqIERlciBEYXRlbnNhdHogdW1mYXNzdCAyIFZhcmlhYmxlbiAgDQoNCnxWYXJpYWJsZSB8IEJlc2NocmVpYnVuZ3wNCnw6LS0tLS0tLTp8Oi0tLS0tLS0tLS0tLTp8DQp8Z2VpbXBmdCB8IGphLCBuZWlufA0KfEtyYW5raGVpdCB8IENvdmlkLCBOaWNodC1Db3ZpZCwgZ2VzdW5kfA0KPGJyIC8+DQoNCjEuIFdpZSBsYXV0ZW4gZGllIEh5cG90aGVzZW4/IChMZWdlIGRhcyBTaWduaWZpa2Fuem5pdmVhdSBiZWkgMC4wNSBmZXN0LikgICAgICAgICANCjIuIEVyc3RlbGxlIGVpbmUgS3JldXp0YWJlbGxlIG1pdCBkZW4gYmVvYmFjaHRldGVuIHVuZCBkZW4gZXJ3YXJ0ZXRlbiBXZXJ0ZW47IGbDvGhyZSBlaW5lbiAkXGNoaV4yJC1UZXN0IGR1cmNoLiAgICANCjMuIFByw7xmZSBkaWUgVm9yYXVzc2V0enVuZ2VuLiAgICAgICAgDQo0LiBGb3JtdWxpZXJlIGRhcyBFcmdlYm5pcyB1bmQgemllaGUgZWluZSBTY2hsdXNzZm9sZ2VydW5nIGluIGxlaWNodCB2ZXJzdMOkbmRsaWNoZXIgU3ByYWNoZS4gICANCjxiciAvPg0KPGJyIC8+DQoNCiMjIEzDtnN1bmcNCg0KMS4gV2llIGxhdXRlbiBkaWUgSHlwb3RoZXNlbj8gKExlZ2UgZGFzIFNpZ25pZmlrYW56bml2ZWF1IGJlaSAwLjUgZmVzdC4pICAgIA0KDQoqICRIXzAkOiBEaWUgSW1wZnVuZyBoYXQga2VpbmVuIEVpbmZsdXNzIGF1ZiBkaWUgQXJ0IHVuZCBkaWUgSMOkdWZpZ2tlaXQgZGVyIEVya3Jhbmt1bmdlbi4gICAgDQoqICRIX0EkOiBEaWUgSW1wZnVuZyBoYXQgZWluZW4gRWluZmx1c3MgYXVmIGRpZSBBcnQgdW5kIGRpZSBIw6R1Zmlna2VpdCBkZXIgRXJrcmFua3VuZy4gIA0KDQoqIFNpZ25pZmlrYW56bml2ZWF1ICRcYWxwaGEgPSAwLjA1JCAgDQoNCjIuIEVyc3RlbGxlIGVpbmUgS3JldXp0YWJlbGxlIG1pdCBkZW4gYmVvYmFjaHRldGVuIHVuZCBkZW4gZXJ3YXJ0ZXRlbiBXZXJ0ZW47IGbDvGhyZSBlaW5lbiAkXGNoaV4yJC1UZXN0IGR1cmNoLiAgICAgDQoNCmBgYHtyfQ0Kam12Ojpjb250VGFibGVzKA0KICBmb3JtdWxhID0gfktyYW5raGVpdDpnZWltcGZ0LA0KICBkYXRhID0gaW1wZnVuZywNCiAgY2kgPSBGQUxTRSwNCiAgZXhwID0gVFJVRQ0KKQ0KYGBgDQoNCiogZsO8ciBHZWltcGZ0ZSBsaWVnZW4gZGllIFdlcnRlIGbDvHIgQ292aWQtRXJrcmFua3VuZyB1bnRlciB1bmQgZsO8ciAiZ2VzdW5kIiDDvGJlciBkZW4gZXJ3YXJ0ZXRlbiBXZXJ0ZW4uIERpZSBOaWNodC1Db3ZpZC1FcmtyYW5rdW5nZW4gZW50c3ByZWNoZW4gZGVuIGVyd2FydGV0ZW4gV2VydGVuLiAgIA0KKiBmw7xyIE5pY2h0LUdlaW1wZnRlIGxpZWdlbiBkaWUgV2VydGUgZsO8ciBDb3ZpZC1FcmtyYW5rdW5nIMO8YmVyIHVuZCBmw7xyICJnZXN1bmQgdW50ZXIgZGVuIGVyd2FydGV0ZW4gV2VydGVuLiBEaWUgTmljaHQtQ292aWQtRXJrcmFua3VuZ2VuIGVudHNwcmVjaGVuIGRlbiBFcndhcnR1bmdlbi4gIA0KPGJyIC8+DQoNCjMuIFByw7xmZSBkaWUgVm9yYXVzc2V0enVuZ2VuLiANCg0KKiBFcyBoYW5kZWx0IHNpY2ggKm5pY2h0KiB1bSBlaW5lIFp1ZmFsbHNzdGljaHByb2JlIGltIGVuZ2VyZW4gU2lubiAoZGllIFByb2JhbmQ6aW5uZW4gd2FyZW4gYWxsZSBBbmdlc3RlbGx0ZW4gZWluZXIgRmlybWEsIGRpZSBadW9yZG51bmcgenUgZGVuIEdydXBwZW4gZXJmb2xndGUgbmFjaCBXdW5zY2ggdW5kIG5pY2h0IHJhbmRvbWlzaWVydCk7IGtlaW5lIGVyd2FydGV0ZSBIw6R1Zmlna2VpdCBpc3QgPCA1LiBPYndvaGwgZGllIFZvcmF1c3NldHp1bmdlbiBuaWNodCB6dSAxMDAlIGVyZsO8bGx0IHNpbmQsIGvDtm5uZW4gd2lyIGVpbmVuICRcY2hpXjIkLVRlc3QgZHVyY2hmw7xocmVuLiAgDQo8YnIgLz4NCg0KNC4gRm9ybXVsaWVyZW4gU2llIGlociBFcmdlYm5pcy4gIA0KDQpEaWUgV2FocnNjaGVpbmxpY2hrZWl0IGbDvHIgJFxjaGleMiA9IDEzLjY1JCBmw7xyIGVpbmUgMyB4IDItS3JldXp0YWJlbGxlIChkZiA9IDIpIHVudGVyIGRlciBOdWxsaHlwb3RoZXNlIGlzdCBwID0gMC4wMDE7IGRhbWl0IGlzdCBwIGtsZWluZXIgYWxzIGRhcyBmZXN0Z2VsZWd0ZSBTaWduaWZpa2Fuem5pdmVhdSB1bmQgd2lyIHZlcndlcmZlbiBkaWUgTnVsbGh5cG90aGVzZSB6dWd1bnN0ZW4gZGVyIEFsdGVybmF0aXZoeXBvdGhlc2UuDQoNCioqVW50ZXJzdWNodCB3dXJkZSBhbmhhbmQgZGVyIEJlbGVnc2NoYWZ0IGVpbmVyIEZpcm1hIChnZWltcGZ0IG4gPSA5MiwgbmljaHQgZ2VpbXBmdCBuID0gOTIpIGRlciBadXNhbW1lbmhhbmcgendpc2NoZW4gQ292aWQtMTktSW1wZnVuZyB1bmQgZGVyIEVya3Jhbmt1bmdzaMOkdWZpZ2tlaXQgc293aWUgZGVyIEtyYW5raGVpdHN1cnNhY2hlIChDb3ZpZC0xOSwgTmljaHQtQ292aWQtMTkpIGluIGRlbiBGb2xnZW1vbmF0ZW4gKEJlb2JhY2h0dW5nc2RhdWVyOiA2IE1vbmF0ZSkuIEtlaW5lIGRlciBlcndhcnRldGVuIFplbGxow6R1Zmlna2VpdGVuIHdhcmVuIGtsZWluZXIgYWxzIDUuIERlciBDaGktUXVhZHJhdC1UZXN0IGVyZ2FiIGVpbmVuIHN0YXRpc3Rpc2NoIHNpZ25pZmlrYW50ZW4gWnVzYW1tZW5oYW5nIHp3aXNjaGVuIEltcGZzdGF0dXMgdW5kIEVya3Jhbmt1bmdzaMOkdWZpZ2tlaXQsICRcY2hpXjIkKDIpID0gMTMuNywgcCA9IC4wMDExLioqDQo8YnIgLz4NCjxiciAvPg0KDQojIMOcYnVuZyAzIHsudGFic2V0fQ0KDQojIyBBdWZnYWJlDQoNCkRpZSBVbnRlcm5laG1lcmluIGF1cyDDnGJ1bmcgMiBlcnrDpGhsdCBpbSBCZWthbm50ZW5rcmVpcyB2b20gRXJmb2xnIGlocmVyIEltcGZrYW1wYWduZS4gRWluIEtvbGxlZ2UgbWl0IGVpbmVyIGV0d2FzIGtsZWluZXJlbiBGaXJtYSAoMzYgQW5nZXN0ZWxsdGUpIGZpbmRldCBkYXMgZWluZSBndXRlIFNhY2hlIHVuZCBiaWV0ZXQgc2VpbmVuIEFuZ2VzdGVsbHRlbiBlYmVuZmFsbHMgZWluZSBJbXBmdW5nIGFuLiBEYSBlciBlaW4ga2xlaW5lcmVzIEJ1ZGdldCBoYXQsIHZlcnppY2h0ZXQgZXIgYXVmIGRpZSBMYWJvcnVudGVyc3VjaHVuZyB1bmQgZXJmYXNzdCBudXIsIG9iIGplbWFuZCBlcmtyYW5rdCBvZGVyIG5pY2h0IGVya3Jhbmt0LiANCg0KKiBEaWUgUmVzdWx0YXRlIGRpZXNlciBVbnRlcnN1Y2h1bmcgc2luZCBpbSBEYXRlbnNhdHogYGltcGZ1bmcyLmNzdmBhYmdlbGVndC4gDQoNCmBgYHtyfQ0KIyBpbXBmdW5nMiA8LSB0aWJibGUoDQojICAgZ2VpbXBmdCA9IGMocmVwKCJqYSIsIDE2KSwgcmVwKCJuZWluIiwgMjApKSwNCiMgICBLcmFua2hlaXQgPSBjKHJlcCgiamEiLCAxKSwgcmVwKCJuZWluIiwgMTUpLCByZXAoImphIiwgNiksIHJlcCgibmVpbiIsIDE0KSkNCiMgKQ0KIyB3cml0ZV9jc3YoaW1wZnVuZzIsIGZpbGUgPSAiaW1wZnVuZzIuY3N2IikNCg0KaW1wZnVuZzIgPC0gcmVhZF9jc3YoIkM6L1VzZXJzL2JhbGJ1L3N3aXRjaGRyaXZlL1IvR2l0aHViL1NUQVQvRGF0YXNldHMvaW1wZnVuZzIuY3N2IikNCmBgYA0KDQoqIERlciBEYXRlbnNhdHogdW1mYXNzdCAyIFZhcmlhYmxlbg0KDQp8VmFyaWFibGUgfCBCZXNjaHJlaWJ1bmd8DQp8Oi0tLS0tLS06fDotLS0tLS0tLS0tLTp8DQp8Z2VpbXBmdCB8IGphLCBuZWlufA0KfEtyYW5raGVpdCB8IGphLCBuZWlufA0KPGJyIC8+DQoNCjEuIFdpZSBsYXV0ZW4gZGllIEh5cG90aGVzZW4/IChMZWdlIGRhcyBTaWduaWZpa2Fuem5pdmVhdSBiZWkgMC4wNSBmZXN0LikgICAgICAgICANCjIuIEVyc3RlbGxlIGVpbmUgS3JldXp0YWJlbGxlIG1pdCBkZW4gYmVvYmFjaHRldGVuIHVuZCBkZW4gZXJ3YXJ0ZXRlbiBXZXJ0ZW47IGbDvGhyZSBlaW5lbiAkXGNoaV4yJC1UZXN0IGR1cmNoLiAgICANCjMuIFByw7xmZSBkaWUgVm9yYXVzc2V0enVuZ2VuLiAgICAgICAgDQo0LiBGb3JtdWxpZXJlIGRhcyBFcmdlYm5pcyB1bmQgemllaGUgZWluZSBTY2hsdXNzZm9sZ2VydW5nIGluIGxlaWNodCB2ZXJzdMOkbmRsaWNoZXIgU3ByYWNoZS4gICANCjxiciAvPg0KPGJyIC8+DQoNCiMjIEzDtnN1bmcNCg0KMS4gV2llIGxhdXRlbiBkaWUgSHlwb3RoZXNlbj8gIA0KDQoqICRIXzAkOiBEaWUgSW1wZnVuZyBoYXQga2VpbmVuIEVpbmZsdXNzIGF1ZiBkaWUgQXJ0IHVuZCBkaWUgSMOkdWZpZ2tlaXQgZGVyIEVya3Jhbmt1bmdlbi4gICAgDQoqICRIX0EkOiBEaWUgSW1wZnVuZyBoYXQgZWluZW4gRWluZmx1c3MgYXVmIGRpZSBBcnQgdW5kIGRpZSBIw6R1Zmlna2VpdCBkZXIgRXJrcmFua3VuZy4gIA0KDQoqIFNpZ25pZmlrYW56bml2ZWF1ICRcYWxwaGEgPSAwLjA1JCAgDQo8YnIgLz4NCg0KMi4gRXJzdGVsbGUgZWluZSBLcmV1enRhYmVsbGUgbWl0IGRlbiBiZW9iYWNodGV0ZW4gdW5kIGRlbiBlcndhcnRldGVuIFdlcnRlbjsgZsO8aHJlIGVpbmVuICRcY2hpXjIkLVRlc3QgZHVyY2guICAgICANCg0KDQpgYGB7cn0NCmptdjo6Y29udFRhYmxlcygNCiAgZm9ybXVsYSA9IH5LcmFua2hlaXQ6Z2VpbXBmdCwNCiAgZGF0YSA9IGltcGZ1bmcyLA0KICBjaSA9IEZBTFNFLA0KICBleHAgPSBUUlVFDQopDQpgYGANCg0KKiBGw7xyIEdlaW1wZnRlIGxpZWd0IGRpZSBFcmtyYW5rdW5nc2jDpHVmaWdrZWl0IHVudGVyIGRlbiBFcndhcnR1bmdlbi4gICANCiogRsO8ciBOaWNodC1HZWltcGZ0ZSBsaWVndCBkaWUgRXJrcmFua3VuZ3Now6R1Zmlna2VpdCDDvGJlciBkZW4gRXJ3YXJ0dW5nZW4uICANCjxiciAvPg0KDQozLiBQcsO8ZmUgZGllIFRlc3QtVm9yYXVzc2V0enVuZ2VuLiAgIA0KDQoqIERlciBlcndhcnRldGUgV2VydCBpc3QgaW4gZGVuIFplbGxlbiBLcmFua2hlaXQ6amEgPDUsIGRhbWl0IGlzdCBkaWUgVGVzdC1Wb3JhdXNzZXR6dW5nIGbDvHIgZGVuIENoaS1RdWFkcmF0LVRlc3QgKipuaWNodCoqIGVyZsO8bGx0IHVuZCB3aXIgd8OkaGxlbiBkZW4gRmlzaGVyJ3MgZXhha3RlciBUZXN0Lg0KDQpgYGB7cn0NCmptdjo6Y29udFRhYmxlcygNCiAgZm9ybXVsYSA9IH5LcmFua2hlaXQ6Z2VpbXBmdCwNCiAgZGF0YSA9IGltcGZ1bmcyLA0KICBjaSA9IEZBTFNFLA0KICBleHAgPSBUUlVFLA0KICBjaGlTcSA9IEZBTFNFLA0KICBmaXNoZXIgPSBUUlVFDQopDQpgYGANCg0KRGVyIHAtV2VydCBsaWVndCBtaXQgMC4xMDQgw7xiZXIgZGVtIGZlc3RnZWxlZ3RlbiBTaWduaWZpa2Fuem5pdmVhdSAkXGFscGhhID0gMC4wNSQgdW5kIHdpciBoYWJlbiBrZWluZSBFdmlkZW56IGRhZsO8ciwgZGllIE51bGxoeXBvdGhlc2UgenUgdmVyd2VyZmVuLiAgDQo8YnIgLz4NCg0KNC4gRm9ybXVsaWVyZSBkYXMgRXJnZWJuaXMgdW5kIHppZWhlIGVpbmUgU2NobHVzc2ZvbGdlcnVuZyBpbiBsZWljaHQgdmVyc3TDpG5kbGljaGVyIFNwcmFjaGUuICANCg0KKipBbmhhbmQgZGVyIEJlbGVnc2NoYWZ0IGVpbmVyIEZpcm1hIChuID0gMzYsIGdlaW1wZnQgbiA9IDE2LCBuaWNodCBnZWltcGZ0IG4gPSAyMCkgd3VyZGUgdW50ZXJzdWNodCwgb2IgZWluIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBJbXBmdW5nIHVuZCBFcmtyYW5rdW5nc2jDpHVmaWdrZWl0IGluIGRlbiBGb2xnZW1vbmF0ZW4gYmVzdGVodC4gSW4gendlaSBaZWxsZW4gbGFnZW4gZGllIGVyd2FydGV0ZSBXZXJ0ZSA8IDUgdW5kIGVzIHd1cmRlIEZpc2hlcidzIGV4YWt0ZXIgVGVzdCBmw7xyIGRpZSBOdWxsaHlwb3RoZXNlbnByw7xmdW5nIHZlcndlbmRldC4gRGllIHN0YXRpc3Rpc2NoZSBBbmFseXNlIGVyZ2FiIGtlaW5lbiBzaWduaWZpa2FudGVuIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBJbXBmc3RhdHVzIHVuZCBFcmtyYW5rdW5nc3JhdGUsIEZpc2hlcidzIGV4YWt0ZXIgVGVzdCAsIHAgPSAuMTA0KiogIA0KDQpBbm1lcmt1bmc6IEZpc2hlcidzIGV4YWt0ZXIgVGVzdCBpc3QgendhciBzZWhyIGdlbmF1LCBhYmVyIHNlaW5lIFBvd2VyLCBkLmguIGVpbiBFZmZla3QgenUgZW50ZGVja2VuLCB3ZW5uIGRpZSBOdWxsaHlwb3RoZXNlIGZhbHNjaCBpc3QsIGlzdCBlaGVyIGtsZWluLiBXZW5uIGRpZSBWb3JhdXNzZXR6dW5nZW4gZXJmw7xsbHQgc2luZCwgc29sbHRlIGRhaGVyIGltbWVyIGRlciAkXGNoaV4yLVRlc3QkIGJldm9yenVndCB3ZXJkZW4uICANCg0KPGJyIC8+DQo8YnIgLz4NCg0KIyBSZWZlcmVuemVuICANCg==