Hypothese
H1: Es gibt einen Zusammenhang zwischen der Nettowarmmiete(Netto_Warmmiete) und der Nettokosten in Prozentpunkten (Nebenkosten_Prozent_von_KaltMiete).
H0: Es gibt keinen Zusammenhang zwischen der Nettowarmmiete(Netto_Warmmiete) und der Nettokosten in Prozentpunkten (Nebenkosten_Prozent_von_KaltMiete).
Prüfen der Voraussetzungen der einfachen Regressionsanalyse
Die abhängige und die unabhängige Variable sind intervallskaliert.UV
Nettowarmmiete ist metrisch und die AV Nebenkosten_Prozent_von_KaltMiete
ist ebenfalls metrisch.
Linearität des Zusammenhangs: Es wird ein linearer Zusammenhang
zwischen der abhängigen und der unabhängigen Variablen modelliert.
<-siehe Scatterplot und Pearson
Unabhängigkeit des Fehlerwerts: Die Fehlerwerte hängen nicht voneinander ab. <- siehe Homoskedastizität
Normalverteilung des Fehlerwerts: Die Fehlerwerte sind näherungsweise normalverteilt. <- siehe Histogramm
Boxplots
boxplot(regression$Netto_Warmmiete, main="Boxplot zur Warmmiete", xlab="Warmiete in Euro", ylab="Preis pro m²")

Es liegen keine Ausreißer in der Einzelbetrachtung vor.
neben <- boxplot(regression$Nebenkosten_Prozent_von_KaltMiete, main="Boxplot zur Kosten in Prozent", xlab="Kaltmiete und Nebenkosten ins Verhältnis", ylab="Preis pro m²")

$stats
[,1]
[1,] 0.08333333
[2,] 0.25591667
[3,] 0.40445238
[4,] 0.59366667
[5,] 1.09250000
$n
[1] 100
$conf
[,1]
[1,] 0.3510879
[2,] 0.4578169
$out
[1] 1.888000 1.872000 1.788000 1.988000 1.362857 1.376667 1.116667
$group
[1] 1 1 1 1 1 1 1
$names
[1] ""
Es gibt einige Ausreißer. Grundsätzlich ist das für diese Auswertung eher kein Problem, da der Datensatz relativ groß ist.
Ausreißer finden und löschen
ausreisser <- neben$out
ausreisser
[1] 1.888000 1.872000 1.788000 1.988000 1.362857 1.376667 1.116667
drops <- c(21)
loeschen <- regression[-drops,]
View(regression)
Deskriptive Statistik
Für die deskriptive Statistik empfiehlt es sich das Package “psych” zu verwenden.
| | | | | | | | | | |
---|
ID | 1 | 100 | 50.50 | 29.01 | 50.50 | 50.50 | 37.06 | 1.00 | 100.00 | |
Netto_Kaltmiete | 2 | 100 | 14.97 | 5.70 | 15.00 | 14.97 | 7.41 | 5.00 | 25.00 | |
Netto_Warmmiete | 3 | 100 | 21.05 | 6.06 | 20.40 | 21.05 | 7.38 | 8.92 | 33.92 | |
Nebenkosten | 4 | 100 | 6.08 | 2.47 | 6.31 | 6.11 | 3.16 | 2.00 | 10.00 | |
Nebenkosten_Prozent_von_KaltMiete | 5 | 100 | 0.50 | 0.39 | 0.40 | 0.43 | 0.26 | 0.08 | 1.99 | |
Die Warmmiete liegt bei 21.05 Euro pro m²(SD=6.06, n= 100). Der
Anzahl der Kosten ins Verhätnis legt bei 50 Prozentpunkten (SD= .39, n=
100). Es zeigt sich, dass der Anzahl der Prozentpunkt nach oben
verschoben ist (Median=.40).
Scatterplot und Pearson
Nicht in jedem Fall besteht eine lineare Beziehung zwischen y und x.
Dennoch kann die Regressionsanalyse auch für nicht-lineare Zusammenhänge genutzt werden,
indem man die beteiligten Variablen zunächst so transformiert,
dass das Ergebnis linear wird. Typischerweise werden dafür geeignete
mathematische Transformationen (z.B. logarithmisch, polynomisch) auf
y und/oder x angewendet.
Anschließend wird nicht die ursprüngliche Beziehung zwischen y und x
modelliert, sondern zwischen den entsprechend veränderten Werten. Durch diesen Ansatz
lässt sich ein scheinbar nicht-linearer Zusammenhang mithilfe der linearen Regression
untersuchen, da die Methode nun auf die transformierten Variablen angewendet wird.
plot( regression$Nebenkosten_Prozent_von_KaltMiete ~ regression$Netto_Warmmiete, main= "Streudiagramm Warmmiete und Kosten ins Verhältnis", xlab = "Warmmiete" , ylab="Kaltmiete und die Nebenkosten ins Verhältnis (in %)")
abline(lm(Nebenkosten_Prozent_von_KaltMiete ~ Netto_Warmmiete, data = regression), col="tomato")

Das Streudiagramm lässt für das Beispiel einen negativen Zusammenhang
vermuten. Damit scheint die Voraussetzung, dass der Zusammenhang an
sich linear ist, erfüllt.
test <- cor.test(regression$Netto_Warmmiete, regression$Nebenkosten_Prozent_von_KaltMiete)
test
Pearson's product-moment correlation
data: regression$Netto_Warmmiete and regression$Nebenkosten_Prozent_von_KaltMiete
t = -4.0234, df = 98, p-value = 0.000113
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.5334832 -0.1944839
sample estimates:
cor
-0.3765189
Der R-Output in Abbildung gibt den Korrelationskoeffizienten sowie
den p-Wert (Signifikanz) und die Stichprobengrösse n wieder. Es wird
ersichtlich, dass ein Zusammenhang vorliegt zwischen Warmniete und
Nebenkosten in Prozent(r = -0.3763, p= .000113, n = 100). Da r einen
negativen Wert aufweist, kann von einem negativen, linearen und
signifikanten Zusammenhang zwischen Warmmiete und Kosten in Prozent
ausgegangen werden.
Da der Korrelation mittelstark und signifikant ist, ist es sinnvoll eine Regression durchzuführen zur Prüfung der Kausalität.
Homoskedastizität
Unter Homoskedastizität versteht man die Annahme, dass der Fehlerterm
für alle Werte der unabhängigen Variable dieselbe Varianz aufweist. Anders ausgedrückt:
Die Streuung der Residuen ändert sich nicht, egal welchen Wert x annimmt.
Diese Voraussetzung überprüft man häufig im selben Streudiagramm, in dem bereits der
bedingte Erwartungswert der Fehler kontrolliert wurde.
Weil die gemessenen Datenpunkte in der Realität meist nicht exakt auf der
Regressionsgeraden liegen, beinhaltet jedes Regressionsmodell
einen Fehlerterm (ε). Er spiegelt jene Einflüsse wider, die nicht durch die
unabhängige Variable erklärt werden können. Mit anderen Worten:
ε entspricht der Differenz zwischen dem vom Modell vorhergesagten Wert für eine
bestimmte Beobachtung (Proband i) und dem tatsächlich gemessenen Wert
dieses Probanden.
regression1 <- lm(regression$Nebenkosten_Prozent_von_KaltMiete ~ regression$Netto_Warmmiete )
zpred <- scale(fitted(regression1), center = T, scale = T)
sres <-rstandard(regression1)
plot (x=zpred, y=sres, main = "Streudiagramm der Residuen",
xlab ="Regression: Standardisierter geschätzter Wert",
ylab = "Regression: Standardisiertes Residuum",
col = "darkblue")
abline (a=0, b=0)

Bei der optischen Prüfung der Daten prüfen wir auf Homoskedastizität.
Unsere Daten lassen auf Homoskedastizität schließen. Das wäre nicht der
Fall, wenn die Daten eher Trompetenform sich darstellen. Gerne kann
hier großzügig gearbeitet werden.
Histogramme
hist (sres, freq = T, breaks = 10, main ="Verteilung des Fehlerwerts", xlab= "Regression: Standardisiertes Residuum", ylab="Häufigkeiten", xlim = c(-3,5),ylim = c(0,40), col = "lightblue" )

Das Histogramm ist normalverteilt, wenn auch nicht perfekt.
Signifikanz des Regressionsmodells und der Regressionskoeffizienten
Um zu ermitteln, ob ein Regressionsmodell in seiner Gesamtheit
signifikant ist, kommt der sogenannte F-Test zum Einsatz.
Er überprüft, ob die Einbeziehung einer oder mehrerer unabhängiger Variablen
die Vorhersage der abhängigen Variable tatsächlich verbessert.
Mit anderen Worten beurteilt der F-Test, ob das gesamte Modell einen
statistisch bedeutsamen Erklärungsbeitrag liefert.
regression1 <- lm(regression$Nebenkosten_Prozent_von_KaltMiete ~ regression$Netto_Warmmiete )
reg <- summary(regression1)
reg
Hinweis -> Zuerst die abhängige Varibale nennen und dann die
unabhängige Varibale. In unserem Beispiel ist die AV =
Nebenkosten_Prozent_von_KaltMiete und die UV = Warmmiete
Signifikanz des Regressionsmodells
Das Gesamtmodell wird signifikant(F(1,98)=16.19, p = .0001, n=100)
Regressionsmodells
Die Auswertung (siehe Abbildung) macht deutlich, dass sowohl der
Regressionskoeffizient für
Netto_Warmmiete
(t = -4.023, p < .001) als auch die
Konstante
(Y-Achsenabschnitt; t = 1.011, p < .001)
statistisch signifikant sind.
Eine signifikante Konstante bedeutet in diesem Fall,
dass der Schnittpunkt mit der Y-Achse ungleich null ist
und die Regressionsgerade somit nicht durch den Ursprung verläuft.
Ebenso ist der Regressionskoeffizient von
Nebenkosten_Prozent_von_KaltMiete
signifikant von null verschieden. Dies weist darauf hin,
dass die Variable Netto_Warmmiete einen
messbaren Einfluss auf die
Nebenkosten_Prozent_von_KaltMiete ausübt.
In der folgenden Regressionsgleichung wird dieser Zusammenhang
deutlich:
Nebenkosten_Prozent_von_KaltMiete = 1.011465 − 0.024114 × Netto_Warmmiete
Die Interpretation des Koeffizienten für Netto_Warmmiete
gestaltet sich wie folgt: Erhöht sich die Warmmiete um eine Einheit
(zum Beispiel einen Euro), so nimmt der Wert von
Nebenkosten_Prozent_von_KaltMiete im Durchschnitt um
0.024 Einheiten ab. Das entspricht einem Rückgang von
2,4 Prozentpunkten.
Bestimmtheitsmaß R2
[1] 0.133009
Das sogenannte R-Quadrat (auch als
Bestimmtheitsmaß bezeichnet) gibt Auskunft darüber,
wie gut ein Regressionsmodell zu den vorliegenden Daten passt.
Es zeigt an, welcher Anteil der Gesamtstreuung in der
abhängigen Variable durch die unabhängigen Variablen
erklärt wird. Das R-Quadrat kann zwischen 0 und 1 liegen:
Ein Wert von 0 bedeutet, dass das Modell keinerlei Vorhersagekraft besitzt,
während ein Wert von 1 darauf hindeutet, dass die beobachteten Daten
perfekt erklärt werden.
Mit wachsendem R-Quadratwert nimmt also die
Güte der Modellanpassung (engl. „Goodness of Fit“) zu.
Bei multiplen Regressionsmodellen steigt das R-Quadrat automatisch,
wenn weitere unabhängige Variablen in das Modell aufgenommen werden
– selbst wenn diese keine wirkliche Erklärungskraft besitzen.
Deshalb verwendet man zusätzlich das korrigierte R-Quadrat,
das diese Verzerrung abmildert, indem es die Zahl der Prädiktoren
sowie die Stichprobengröße in die Berechnung einbezieht.
Je mehr Einflussfaktoren im Modell enthalten sind und
je kleiner die Stichprobe ist, desto deutlicher fällt diese
Abschwächung von R-Quadrat aus.
In der Praxis berichten viele Programme deshalb standardmäßig
sowohl das „normale“ R-Quadrat als auch das korrigierte R-Quadrat.
Dies gilt sogar im Fall einer einfachen Regression (nur eine unabhängige Variable).
Im vorliegenden Beispiel beträgt das R-Quadrat .133.
Das bedeutet, dass rund 13,3 % der Streuung in
Nebenkosten_Prozent_von_KaltMiete durch die Variable
Netto_Warmmiete erklärt werden kann.
Berechnung der Effektstärke
Häufig genügt es nicht, allein festzustellen, dass ein statistischer Zusammenhang
signifikant ist. Um zusätzlich die Bedeutung oder
Größe des Effekts einzuschätzen, werden sogenannte
Effektstärken herangezogen. Im obigen Beispiel kann man zwar
sehen, dass 13,3 % der Gesamtstreuung in der abhängigen Variable durch die
unabhängige Variable erklärt werden (R-Quadrat = 0,133), doch stellt sich die Frage,
ob dies als klein, mittel oder groß zu bewerten ist.
In der Forschung werden dafür unterschiedliche Kennzahlen eingesetzt.
Besonders verbreitet ist die Effektgröße nach Cohen (d),
aber auch der Korrelationskoeffizient
(r) nach Pearson findet häufig Anwendung.
Letzterer kann Werte zwischen 0 (keinerlei Effekt) und 1 (maximaler Effekt) annehmen
und eignet sich daher gut zur Verdeutlichung der Effektstärke.
Das bei Regressionen oft berichtete Bestimmtheitsmaß (R-Quadrat)
lässt sich zudem in die Effektstärke f nach
Cohen (1988) umrechnen. Diese Effektgröße reicht
theoretisch von 0 bis unendlich und wird folgendermaßen berechnet:
R2)−−−−−−−−√
Auf diese Weise lässt sich abschätzen, wie viel Substanz hinter der reinen
Signifikanz steckt. Ein R-Quadrat von 0,133 bedeutet beispielsweise,
dass sich 13,3 % der Streuung in der abhängigen Variable mit Hilfe
der unabhängigen Variable erklären lassen. Ob das als
nennenswerte Effektstärke gilt, hängt jedoch vom konkreten
Forschungsfeld und den gängigen Richtwerten (z.B. nach Cohen) ab.
f<- sqrt(reg$adj.r.squared/ (1-reg$adj.r.squared))
f
Um die Stärke dieses Effekts zu beurteilen, eignet sich die Einteilung von Cohen (1988):
f = .10 entspricht einem schwachen Effekt
f = .25 entspricht einem mittleren Effekt
f = .40 entspricht einem starken Effekt
Damit entspricht die Effektstärke von 0.39 einem starken Effekt.
Eine Aussage
Die Höhe der Nettowarmmiete (Nettowarmmiete) hat einen Einfluss
darauf, wie hoch die Nebenkosten in Prozent von Kaltmiete
(Nebenkosten_Prozent_von_KaltMiete) sind(F(1, 95) = 16.19 p = .000, n =
100). Mit dem einem Euro mehr an der Warmmiete sinken die Nebenkosten in
Prozent um 2,4 Prozentpunkte. 13.3% der Streuung des Nebenkosten in
Prozent an der Kaltmiete wird durch die Warmmiete erklärt, was nach
Cohen (1988) einem starken Effekt entspricht. H0 kannn verworfen werden.
LS0tDQp0aXRsZTogImVpbmZhY2hlIFJlZ3Jlc3Npb24iDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCiMJSHlwb3RoZXNlDQpIMTogRXMgZ2lidCBlaW5lbiBadXNhbW1lbmhhbmcgendpc2NoZW4gZGVyIE5ldHRvd2FybW1pZXRlKCpOZXR0b19XYXJtbWlldGUqKSB1bmQgZGVyIE5ldHRva29zdGVuIGluIFByb3plbnRwdW5rdGVuIChOZWJlbmtvc3Rlbl9Qcm96ZW50X3Zvbl9LYWx0TWlldGUpLg0KDQpIMDogRXMgZ2lidCBrZWluZW4gWnVzYW1tZW5oYW5nIHp3aXNjaGVuIGRlciBOZXR0b3dhcm1taWV0ZSgqTmV0dG9fV2FybW1pZXRlKikgdW5kIGRlciBOZXR0b2tvc3RlbiBpbiBQcm96ZW50cHVua3RlbiAoTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlKS4NCg0KDQoNCiMgUHLDvGZlbiBkZXIgVm9yYXVzc2V0enVuZ2VuIGRlciBlaW5mYWNoZW4gUmVncmVzc2lvbnNhbmFseXNlDQoNCg0KRGllIGFiaMOkbmdpZ2UgdW5kIGRpZSB1bmFiaMOkbmdpZ2UgVmFyaWFibGUgc2luZCBpbnRlcnZhbGxza2FsaWVydC5VViBOZXR0b3dhcm1taWV0ZSBpc3QgbWV0cmlzY2ggdW5kIGRpZSBBViBOZWJlbmtvc3Rlbl9Qcm96ZW50X3Zvbl9LYWx0TWlldGUgaXN0IGViZW5mYWxscyBtZXRyaXNjaC4NCg0KTGluZWFyaXTDpHQgZGVzIFp1c2FtbWVuaGFuZ3M6IEVzIHdpcmQgZWluIGxpbmVhcmVyIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiBkZXIgYWJow6RuZ2lnZW4gdW5kIGRlciB1bmFiaMOkbmdpZ2VuIFZhcmlhYmxlbiBtb2RlbGxpZXJ0LiA8LXNpZWhlIFNjYXR0ZXJwbG90IHVuZCBQZWFyc29uDQoNClVuYWJow6RuZ2lna2VpdCBkZXMgRmVobGVyd2VydHM6IERpZSBGZWhsZXJ3ZXJ0ZSBow6RuZ2VuIG5pY2h0IHZvbmVpbmFuZGVyIGFiLiA8LSBzaWVoZSBIb21vc2tlZGFzdGl6aXTDpHQNCg0KTm9ybWFsdmVydGVpbHVuZyBkZXMgRmVobGVyd2VydHM6IERpZSBGZWhsZXJ3ZXJ0ZSBzaW5kIG7DpGhlcnVuZ3N3ZWlzZSBub3JtYWx2ZXJ0ZWlsdC4gPC0gc2llaGUgSGlzdG9ncmFtbQ0KDQoNCg0KIwlCb3hwbG90cw0KDQoNCg0KYGBge3J9DQpib3hwbG90KHJlZ3Jlc3Npb24kTmV0dG9fV2FybW1pZXRlLCBtYWluPSJCb3hwbG90IHp1ciBXYXJtbWlldGUiLCB4bGFiPSJXYXJtaWV0ZSBpbiBFdXJvIiwgeWxhYj0iUHJlaXMgcHJvIG3CsiIpDQoNCmBgYA0KRXMgbGllZ2VuIGtlaW5lIEF1c3JlacOfZXIgaW4gZGVyIEVpbnplbGJldHJhY2h0dW5nIHZvci4NCg0KDQoNCmBgYHtyfQ0KbmViZW4gPC0gYm94cGxvdChyZWdyZXNzaW9uJE5lYmVua29zdGVuX1Byb3plbnRfdm9uX0thbHRNaWV0ZSwgbWFpbj0iQm94cGxvdCB6dXIgS29zdGVuIGluIFByb3plbnQiLCB4bGFiPSJLYWx0bWlldGUgdW5kICBOZWJlbmtvc3RlbiBpbnMgVmVyaMOkbHRuaXMiLCB5bGFiPSJQcmVpcyBwcm8gbcKyIikNCm5lYmVuDQoNCmBgYA0KRXMgZ2lidCBlaW5pZ2UgQXVzcmVpw59lci4gR3J1bmRzw6R0emxpY2ggaXN0IGRhcyBmw7xyIGRpZXNlIEF1c3dlcnR1bmcgZWhlciBrZWluIFByb2JsZW0sIGRhIGRlciBEYXRlbnNhdHogcmVsYXRpdiBncm/DnyBpc3QuDQoNCg0KICMgQXVzcmVpw59lciBmaW5kZW4gdW5kIGzDtnNjaGVuDQpgYGB7cn0NCmF1c3JlaXNzZXIgPC0gbmViZW4kb3V0DQphdXNyZWlzc2VyDQoNCmBgYA0KDQoNCmBgYHtyfQ0KDQojIERpZXNlIFplaWxlbiBzb2xsZW4gZW50ZmVybnQgd2VyZGVuDQpkcm9wcyA8LSBjKDIxKQ0KDQojIFplaWxlbiBsw7ZzY2hlbg0KbG9lc2NoZW4gPC0gcmVncmVzc2lvblstZHJvcHMsXQ0KVmlldyhyZWdyZXNzaW9uKQ0KDQpgYGANCg0KDQoNCg0KIyBEZXNrcmlwdGl2ZSBTdGF0aXN0aWsNCkbDvHIgZGllIGRlc2tyaXB0aXZlIFN0YXRpc3RpayBlbXBmaWVobHQgZXMgc2ljaCBkYXMgUGFja2FnZSAicHN5Y2giIHp1IHZlcndlbmRlbi4NCg0KYGBge3J9DQpsaWJyYXJ5KHBzeWNoKQ0KDQpkZXNjcmliZShyZWdyZXNzaW9uKQ0KYGBgDQoNCkRpZSBXYXJtbWlldGUgbGllZ3QgYmVpIDIxLjA1IEV1cm8gcHJvIG3CsihTRD02LjA2LCBuPSAxMDApLiBEZXIgQW56YWhsIGRlciBLb3N0ZW4gaW5zIFZlcmjDpHRuaXMgbGVndCBiZWkgNTAgUHJvemVudHB1bmt0ZW4gKFNEPSAuMzksIG49IDEwMCkuIEVzIHplaWd0IHNpY2gsIGRhc3MgZGVyIEFuemFobCBkZXIgUHJvemVudHB1bmt0IG5hY2ggb2JlbiB2ZXJzY2hvYmVuIGlzdCAoTWVkaWFuPS40MCkuDQoNCg0KDQojCVNjYXR0ZXJwbG90IHVuZCBQZWFyc29uDQoNCkVzIGdpbHQgYW56dW1lcmtlbiwgZGFzcyBhdWNoIG5pY2h0LWxpbmVhcmUgWnVzYW1tZW5ow6RuZ2Ugendpc2NoZW4geSB1bmQgeCBtaXR0ZWxzIFJlZ3Jlc3Npb25zYW5hbHlzZSB1bnRlcnN1Y2h0IHdlcmRlbiBrw7ZubmVuLiBEYXp1IHdpcmQgZGVyIFp1c2FtbWVuaGFuZyB2b3IgZGVyIFJlZ3Jlc3Npb25zYW5hbHlzZSBkZXJhcnQgdHJhbnNmb3JtaWVydCwgZGFzcyBlciBsaW5lYXIgd2lyZC4gRGllcyBnZXNjaGllaHQgZHVyY2ggZWluZSBUcmFuc2Zvcm1hdGlvbiB2b24geSB1bmQvb2RlciB4LiBBbnNjaGxpZXNzZW5kIHdpcmQgbmljaHQgZGVyIFp1c2FtbWVuaGFuZyB6d2lzY2hlbiB5IHVuZCB4IG1vZGVsbGllcnQsIHNvbmRlcm4gendpc2NoZW4gZGVuIGFsbGVuZmFsbHMgdHJhbnNmb3JtaWVydGVuIFZhcmlhYmxlbi4NCg0KDQoNCg0KYGBge3J9DQpwbG90KHJlZ3Jlc3Npb24kTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlIH4gcmVncmVzc2lvbiROZXR0b19XYXJtbWlldGUsIG1haW49ICJTdHJldWRpYWdyYW1tIFdhcm1taWV0ZSB1bmQgS29zdGVuIGlucyBWZXJow6RsdG5pcyIsIHhsYWIgPSAiV2FybW1pZXRlIiAsIHlsYWI9IkthbHRtaWV0ZSB1bmQgZGllIE5lYmVua29zdGVuIGlucyBWZXJow6RsdG5pcyAoaW4gJSkiKQ0KYWJsaW5lKGxtKE5lYmVua29zdGVuX1Byb3plbnRfdm9uX0thbHRNaWV0ZSB+IE5ldHRvX1dhcm1taWV0ZSwgZGF0YSA9IHJlZ3Jlc3Npb24pLCBjb2w9InRvbWF0byIpDQoNCmBgYA0KRGFzIFN0cmV1ZGlhZ3JhbW0gbMOkc3N0IGbDvHIgZGFzIEJlaXNwaWVsIGVpbmVuIG5lZ2F0aXZlbiBadXNhbW1lbmhhbmcgdmVybXV0ZW4uIERhbWl0IHNjaGVpbnQgZGllIFZvcmF1c3NldHp1bmcsIGRhc3MgZGVyIFp1c2FtbWVuaGFuZyBhbiBzaWNoIGxpbmVhciBpc3QsIGVyZsO8bGx0Lg0KDQpgYGB7cn0NCg0KdGVzdCA8LSBjb3IudGVzdChyZWdyZXNzaW9uJE5ldHRvX1dhcm1taWV0ZSwgcmVncmVzc2lvbiROZWJlbmtvc3Rlbl9Qcm96ZW50X3Zvbl9LYWx0TWlldGUpDQp0ZXN0DQoNCmBgYA0KRGVyIFItT3V0cHV0IGluIEFiYmlsZHVuZyBnaWJ0IGRlbiBLb3JyZWxhdGlvbnNrb2VmZml6aWVudGVuIHNvd2llIGRlbiBwLVdlcnQgKFNpZ25pZmlrYW56KSB1bmQgZGllIFN0aWNocHJvYmVuZ3LDtnNzZSBuIHdpZWRlci4gRXMgd2lyZCBlcnNpY2h0bGljaCwgZGFzcyBlaW4gWnVzYW1tZW5oYW5nIHZvcmxpZWd0IHp3aXNjaGVuIFdhcm1uaWV0ZSB1bmQgIE5lYmVua29zdGVuIGluIFByb3plbnQociA9IC0wLjM3NjMsIHA9IC4wMDAxMTMsIG4gPSAxMDApLiANCkRhIHIgZWluZW4gbmVnYXRpdmVuIFdlcnQgYXVmd2Vpc3QsIGthbm4gdm9uIGVpbmVtIG5lZ2F0aXZlbiwgbGluZWFyZW4gdW5kIHNpZ25pZmlrYW50ZW4gWnVzYW1tZW5oYW5nIHp3aXNjaGVuIFdhcm1taWV0ZSB1bmQgS29zdGVuIGluIFByb3plbnQgYXVzZ2VnYW5nZW4gd2VyZGVuLiANCg0KRGEgZGVyIEtvcnJlbGF0aW9uIG1pdHRlbHN0YXJrIHVuZCBzaWduaWZpa2FudCBpc3QsIGlzdCBlcyBzaW5udm9sbCBlaW5lIFJlZ3Jlc3Npb24gZHVyY2h6dWbDvGhyZW4genVyIFByw7xmdW5nIGRlciBLYXVzYWxpdMOkdC4NCg0KDQoNCiMJSG9tb3NrZWRhc3Rpeml0w6R0DQoNCkhvbW9za2VkYXN0aXppdMOkdCBiZWRldXRldCwgZGFzcyBkZXIgRmVobGVyIGbDvHIgamVkZW4gV2VydCBkZXIgdW5hYmjDpG5naWdlIFZhcmlhYmxlIGRpZSBnbGVpY2hlIFZhcmlhbnogYXVmd2Vpc3QuIEdlcHLDvGZ0IHdpcmQgZGllc2UgVm9yYXVzc2V0enVuZyBvZnQgaW0gZ2xlaWNoZW4gU3RyZXVkaWFncmFtbSwgaW4gd2VsY2hlbSBiZXJlaXRzIGRlciBiZWRpbmd0ZSBFcndhcnR1bmdzd2VydCBkZXMgRmVobGVycyBnZXByw7xmdCB3dXJkZS4NCg0KRGEgZGllIGJlb2JhY2h0ZXRlbiBXZXJ0ZSBpbiBkZXIgUmVnZWwgbmljaHQgYXVmIGRlciBSZWdyZXNzaW9uc2dlcmFkZW4gbGllZ2VuLCBiZWluaGFsdGV0IGVpbiBSZWdyZXNzaW9uc21vZGVsbCBpbW1lciBhdWNoIGVpbmVuIEZlaGxlcndlcnQgKEZlaGxlcnRlcm0gzrUpLCBkZXIgZWJlbiBkaWVzZW4gVW50ZXJzY2hpZWRlbiB6d2lzY2hlbiBNb2RlbGwgdW5kIERhdGVuIFJlY2hudW5nIHRyw6RndC4gRXIgc3RlbGx0IGRpZSBFaW5mbMO8c3NlIGF1ZiBkaWUgYWJow6RuZ2lnZSBWYXJpYWJsZSBkYXIsIHdlbGNoZSBuaWNodCBhdWYgZGllIHVuYWJow6RuZ2lnZSBWYXJpYWJsZSB6dXLDvGNrenVmw7xocmVuIHNpbmQuIEFuZGVycyBhdXNnZWRyw7xja3QgaXN0IGRlciBGZWhsZXJ3ZXJ0IGRlciBVbnRlcnNjaGllZCB6d2lzY2hlbiBkZW0gZHVyY2ggZGllIFJlZ3Jlc3Npb25zZ2VyYWRlIHZvcmhlcmdlc2FndGVuIFdlcnQgZGVzIFByb2JhbmRlbiBpIHVuZCBkZW0gdGF0c8OkY2hsaWNoIGdlbWVzc2VuZW4gV2VydCBkZXMgUHJvYmFuZGVuIGkuIA0KDQoNCmBgYHtyfQ0KDQpyZWdyZXNzaW9uMSA8LSAgbG0ocmVncmVzc2lvbiROZWJlbmtvc3Rlbl9Qcm96ZW50X3Zvbl9LYWx0TWlldGUgfiByZWdyZXNzaW9uJE5ldHRvX1dhcm1taWV0ZSApDQoNCnpwcmVkIDwtIHNjYWxlKGZpdHRlZChyZWdyZXNzaW9uMSksIGNlbnRlciA9IFQsIHNjYWxlID0gVCkNCnNyZXMgPC1yc3RhbmRhcmQocmVncmVzc2lvbjEpDQoNCnBsb3QgKHg9enByZWQsIHk9c3JlcywgbWFpbiA9ICJTdHJldWRpYWdyYW1tIGRlciBSZXNpZHVlbiIsIA0KICAgICAgeGxhYiA9IlJlZ3Jlc3Npb246IFN0YW5kYXJkaXNpZXJ0ZXIgZ2VzY2jDpHR6dGVyIFdlcnQiLCANCiAgICAgIHlsYWIgPSAiUmVncmVzc2lvbjogU3RhbmRhcmRpc2llcnRlcyBSZXNpZHV1bSIsDQogICAgICBjb2wgPSAiZGFya2JsdWUiKQ0KDQphYmxpbmUgKGE9MCwgYj0wKQ0KDQpgYGANCg0KQmVpIGRlciBvcHRpc2NoZW4gUHLDvGZ1bmcgZGVyIERhdGVuIHByw7xmZW4gd2lyIGF1ZiBIb21vc2tlZGFzdGl6aXTDpHQuIFVuc2VyZSBEYXRlbiBsYXNzZW4gYXVmIEhvbW9za2VkYXN0aXppdMOkdCBzY2hsaWXDn2VuLiBEYXMgd8OkcmUgbmljaHQgZGVyIEZhbGwsIHdlbm4gZGllIERhdGVuIGVoZXIgVHJvbXBldGVuZm9ybSBzaWNoIGRhcnN0ZWxsZW4uIEdlcm5lIGthbm4gaGllciBncm/Dn3rDvGdpZyBnZWFyYmVpdGV0IHdlcmRlbi4gDQoNCg0KIwlIaXN0b2dyYW1tZSANCg0KYGBge3J9DQpoaXN0IChzcmVzLCBmcmVxID0gVCwgYnJlYWtzID0gMTAsIG1haW4gPSJWZXJ0ZWlsdW5nIGRlcyBGZWhsZXJ3ZXJ0cyIsIHhsYWI9ICJSZWdyZXNzaW9uOiBTdGFuZGFyZGlzaWVydGVzIFJlc2lkdXVtIiwgeWxhYj0iSMOkdWZpZ2tlaXRlbiIsIHhsaW0gPSBjKC0zLDUpLHlsaW0gPSBjKDAsNDApLCBjb2wgPSAibGlnaHRibHVlIiApDQpgYGANCkRhcyBIaXN0b2dyYW1tIGlzdCBub3JtYWx2ZXJ0ZWlsdCwgd2VubiBhdWNoIG5pY2h0IHBlcmZla3QuIA0KDQojIFNpZ25pZmlrYW56IGRlcyBSZWdyZXNzaW9uc21vZGVsbHMgdW5kIGRlciBSZWdyZXNzaW9uc2tvZWZmaXppZW50ZW4NCg0KDQpadXIgw5xiZXJwcsO8ZnVuZywgb2IgZGFzIFJlZ3Jlc3Npb25zbW9kZWxsIGluc2dlc2FtdCBzaWduaWZpa2FudCBpc3QsIHdpcmQgZWluIEYtVGVzdCBkdXJjaGdlZsO8aHJ0LiBEaWVzZXIgcHLDvGZ0LCBvYiBkaWUgVm9yaGVyc2FnZSBkZXIgYWJow6RuZ2lnZW4gVmFyaWFibGVuIGR1cmNoIGRhcyBIaW56dWbDvGdlbiBkZXIgdW5hYmjDpG5naWdlbiBWYXJpYWJsZW4gdmVyYmVzc2VydCB3aXJkLiBEYXMgaGVpc3N0LCBkZXIgRi1UZXN0IHByw7xmdCwgb2IgZGFzIE1vZGVsbCBpbnNnZXNhbXQgZWluZW4gRXJrbMOkcnVuZ3NiZWl0cmFnIGxlaXN0ZXQuIA0KDQpgYGB7cn0NCg0KcmVncmVzc2lvbjEgPC0gIGxtKHJlZ3Jlc3Npb24kTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlIH4gcmVncmVzc2lvbiROZXR0b19XYXJtbWlldGUgKQ0KDQpyZWcgPC0gc3VtbWFyeShyZWdyZXNzaW9uMSkNCnJlZw0KYGBgDQoNCkhpbndlaXMgLT4gWnVlcnN0IGRpZSBhYmjDpG5naWdlIFZhcmliYWxlICBuZW5uZW4gdW5kIGRhbm4gZGllIHVuYWJow6RuZ2lnZSBWYXJpYmFsZS4gSW4gdW5zZXJlbSBCZWlzcGllbCBpc3QgZGllIEFWID0gTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlIHVuZCBkaWUgVVYgPSBXYXJtbWlldGUNCg0KDQojIyMgU2lnbmlmaWthbnogZGVzIFJlZ3Jlc3Npb25zbW9kZWxscw0KRGFzIEdlc2FtdG1vZGVsbCB3aXJkIHNpZ25pZmlrYW50KEYoMSw5OCk9MTYuMTksIHAgPSAuMDAwMSwgbj0xMDApDQoNCg0KIyMjIFJlZ3Jlc3Npb25zbW9kZWxscw0KDQoNCkFiYmlsZHVuZyB6ZWlndCwgZGFzcyBkaWUgdC1UZXN0cyBmw7xyIGRlbiBSZWdyZXNzaW9uc2tvZWZmaXppZW50ZW4gdm9uIE5ldHRvX1dhcm1taWV0ZSAodCA9IC00LjAyMywgcCA9IC4wMDApIHVuZCBkaWUgS29uc3RhbnRlIChkLmguIGRlciBZLUFjaHNlbmFic2Nobml0dDsgdCA9IDEuMDExLCBwID0gLjAwMCkgc2lnbmlmaWthbnQgYXVzZmFsbGVuLiBFaW5lIHNpZ25pZmlrYW50ZSBLb25zdGFudGUgYmVkZXV0ZXQsIGRhc3MgZGVyIFktQWNoc2VuYWJzY2huaXR0IG5pY2h0IDAgYmV0csOkZ3QgdW5kIGRhbWl0IGRpZSBSZWdyZXNzaW9uc2dlcmFkZSBuaWNodCBkdXJjaCBkZW4gVXJzcHJ1bmcgZ2VodC4gDQoNCg0KRGVyIHNpZ25pZmlrYW50ZSBLb2VmZml6aWVudCB2b24gTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXQgYmVkZXV0ZXQsIGRhc3MgZGVyIFJlZ3Jlc3Npb25za29lZmZpemllbnQgdm9uIE5lYmVua29zdGVuX1Byb3plbnRfdm9uX0thbHRNaWV0IG5pY2h0IDAgaXN0IHVuZCBOZXR0b19XYXJtbWlldGUgc29taXQgZWluZW4gc2lnbmlmaWthbnRlbiBFaW5mbHVzcyBhdWYgTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlIGF1ZndlaXN0LiBTb21pdCBlcmdpYnQgc2ljaCBmb2xnZW5kZSBSZWdyZXNzaW9uc2dlcmFkZTogDQoNCiROZWJlbmtvc3Rlbl9Qcm96ZW50X3Zvbl9LYWx0TWlldGUgPSAxLjAxMTQ2NSAtMC4wMjQxMTQqTmV0dG9fV2FybW1pZXRlJA0KDQoNCkRlciBLb2VmZml6aWVudCBkZXIgdW5hYmjDpG5naWdlbiBWYXJpYWJsZSBOZXR0b19XYXJtbWlldGUgd2lyZCB3aWUgZm9sZ3QgaW50ZXJwcmV0aWVydDogV2VubiBXYXJtbWlldGUgdW0gZWluZSBFaW5oZWl0IHN0ZWlndCAoZWluIHp1c8OkdHpsaWNoZXIgRXVybyksIHNvIHNpbmt0IGRpZSBOZWJlbmtvc3Rlbl9Qcm96ZW50X3Zvbl9LYWx0TWlldGUgdW0gMCwwMjQgRWluaGVpdGVuIHp1IChhbHNvIHVtIDIsNCBQcm96ZW50cHVua3RlKS4gDQoNCiMJQmVzdGltbXRoZWl0c21hw58gUjINCg0KDQpgYGB7cn0NCnJlZyRhZGouci5zcXVhcmVkDQpgYGANCkRhcyBzb2dlbmFubnRlICJSLVF1YWRyYXQiIHdpcmQgYXVjaCBhbHMgIkJlc3RpbW10aGVpdHNtYXNzIiBiZXplaWNobmV0LiBFcyB6ZWlndCwgd2llIGd1dCBkYXMgZ2VzY2jDpHR6dGUgTW9kZWxsIHp1IGRlbiBlcmhvYmVuZW4gRGF0ZW4gcGFzc3QuIFItUXVhZHJhdCBiZXNjaHJlaWJ0LCB3ZWxjaGVyIEFudGVpbCBkZXIgR2VzYW10c3RyZXV1bmcgaW4gZGVyIGFiaMOkbmdpZ2VuIFZhcmlhYmxlIGR1cmNoIGRpZSB1bmFiaMOkbmdpZ2UgVmFyaWFibGUgZXJrbMOkcnQgd2VyZGVuIGthbm4uIFItUXVhZHJhdCBrYW5uIFdlcnRlIHp3aXNjaGVuIDAgdW5kIDEgYW5uZWhtZW4uIDAgYmVkZXV0ZXQsIGRhc3MgZGFzIE1vZGVsbCBrZWluZSBFcmtsw6RydW5nc2tyYWZ0IGJlc2l0enQsIDEgYmVkZXV0ZXQsIGRhc3MgZGFzIE1vZGVsbCBkaWUgYmVvYmFjaHRldGVuIFdlcnRlIHBlcmZla3Qgdm9yaGVyc2FnZW4ga2Fubi4gSmUgaMO2aGVyIGRlciBSLVF1YWRyYXQtV2VydCwgZGVzdG8gYmVzc2VyIGFsc28gZGllIFBhc3N1bmcgendpc2NoZW4gTW9kZWxsIHVuZCBEYXRlbiAoZGFoZXIgZW5nbC4gIkdvb2RuZXNzIG9mIGZpdCIpLg0KDQpSLVF1YWRyYXQgd2lyZCB2b24gZGVyIEFuemFobCBkZXIgdW5hYmjDpG5naWdlbiBWYXJpYWJsZW4gaW0gTW9kZWxsIGJlZWluZmx1c3N0LiBEaWVzIGlzdCBpbSBGYWxsZSBkZXIgbXVsdGlwbGVuIFJlZ3Jlc3Npb24gcHJvYmxlbWF0aXNjaCwgZGEgbWVocmVyZSB1bmFiaMOkbmdpZ2UgVmFyaWFibGVuIGluIGRhcyBNb2RlbGwgZWluYmV6b2dlbiB3ZXJkZW4uIEhpZXIgc3RlaWd0IGRhcyBSLVF1YWRyYXQgbWl0IGRlciBBbnphaGwgZGVyIHVuYWJow6RuZ2lnZW4gVmFyaWFibGVuLCBhdWNoIHdlbm4gZGllIHp1c8OkdHpsaWNoZW4gVmFyaWFibGVuIGtlaW5lbiBFcmtsw6RydW5nc3dlcnQgaGFiZW4uIERhaGVyIHdpcmQgUi1RdWFkcmF0IG5hY2ggdW50ZW4ga29ycmlnaWVydCAoIktvcnJpZ2llcnRlcyBSLVF1YWRyYXQiKS4gRGllc2UgS29ycmVrdHVyIGbDpGxsdCB1bXNvIGdyw7Zzc2VyIGF1cywgamUgbWVociBWYXJpYWJsZW4gaW0gTW9kZWxsIHNpbmQsIGFiZXIgdW1zbyBrbGVpbmVyLCBqZSBncsO2c3NlciBkaWUgU3RpY2hwcm9iZSBpc3QuIERlciBSLU91dHB1dCBlbnRow6RsdCBpbW1lciBSLVF1YWRyYXQgdW5kIGRhcyBrb3JyaWdpZXJ0ZSBSLVF1YWRyYXQuIEF1Y2ggaW0gRmFsbGUgZGVyIGVpbmZhY2hlbiBSZWdyZXNzaW9uLCB3byBudXIgZWluZSB1bmFiaMOkbmdpZ2UgVmFyaWFibGUgaW0gTW9kZWxsIGlzdCwgd2lyZCBpbiBkZXIgUmVnZWwgZGFzIGtvcnJpZ2llcnRlIFItUXVhZHJhdCBiZXJpY2h0ZXQuDQoNCkltIHZvcmxpZWdlbmRlbiBCZWlzcGllbCBiZXRyw6RndCBkYXMgUi1RdWFkcmF0IC4xMzMsIHdhcyBiZWRldXRldCwgZGFzcyAxMy4zJSBkZXIgR2VzYW10c3RyZXV1bmcgaW4gTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlIGR1cmNoIE5ldHRvX1dhcm1taWV0ZSBlcmtsw6RydCB3ZXJkZW4ga2Fubi4NCg0KDQoNCiMJQmVyZWNobnVuZyBkZXIgRWZmZWt0c3TDpHJrZQ0KDQoNClVtIGRpZSBCZWRldXRzYW1rZWl0IGVpbmVzIEVyZ2Vibmlzc2VzIHp1IGJldXJ0ZWlsZW4sIHdlcmRlbiBFZmZla3RzdMOkcmtlbiBiZXJlY2huZXQuIEltIEJlaXNwaWVsIHdpcmQgMTMuMyUgZGVyIEdlc2FtdHN0cmV1dW5nIGluIGRlciBhYmjDpG5naWdlbiBWYXJpYWJsZSBkdXJjaCBkaWUgdW5hYmjDpG5naWdlIFZhcmlhYmxlIGVya2zDpHJ0LCBkb2NoIGVzIHN0ZWxsdCBzaWNoIGRpZSBGcmFnZSwgb2IgZGllcyBob2NoIGdlbnVnIGlzdCwgdW0gYWxzIGJlZGV1dGVuZCBlaW5nZXN0dWZ0IHp1IHdlcmRlbi4NCg0KRXMgZ2lidCB2ZXJzY2hpZWRlbmUgQXJ0ZW4gZGllIEVmZmVrdHN0w6Rya2UgenUgbWVzc2VuLiBadSBkZW4gYmVrYW5udGVzdGVuIHrDpGhsZW4gZGllIEVmZmVrdHN0w6Rya2Ugdm9uIENvaGVuIChkKSB1bmQgZGVyIEtvcnJlbGF0aW9uc2tvZWZmaXppZW50IChyKSB2b24gUGVhcnNvbi4gRGVyIEtvcnJlbGF0aW9uc2tvZWZmaXppZW50IGVpZ25ldCBzaWNoIHNlaHIgZ3V0LCBkYSBkaWUgRWZmZWt0c3TDpHJrZSBkYWJlaSBpbW1lciB6d2lzY2hlbiAwIChrZWluIEVmZmVrdCkgdW5kIDEgKG1heGltYWxlciBFZmZla3QpIGxpZWd0Lg0KDQpEYXMgUi1RdWFkcmF0LCBkYXMgYmVpIFJlZ3Jlc3Npb25zYW5hbHlzZW4gYXVzZ2VnZWJlbiB3aXJkLCBrYW5uIGluIGVpbmUgRWZmZWt0c3TDpHJrZSBmIG5hY2ggQ29oZW4gKDE5ODgpIHVtZ2VyZWNobmV0IHdlcmRlbi4gSW4gZGllc2VtIEZhbGwgaXN0IGRlciBXZXJ0ZWJlcmVpY2ggZGVyIEVmZmVrdHN0w6Rya2Ugendpc2NoZW4gMCB1bmQgdW5lbmRsaWNoLiANCg0KICQkXHNxcnRcZnJhY3tSXjJ9eygxLVJeMil9JCQNCg0KRGllIEjDtmhlIGRlciBOZXR0b3dhcm1taWV0ZSAoTmV0dG93YXJtbWlldGUpIGhhdCBlaW5lbiBFaW5mbHVzcyBkYXJhdWYsIHdpZSBob2NoIGRpZSBOZWJlbmtvc3RlbiBpbiBQcm96ZW50IHZvbiBLYWx0bWlldGUgKE5lYmVua29zdGVuX1Byb3plbnRfdm9uX0thbHRNaWV0ZSkgc2luZChGKDEsIDk1KSA9IDE2LjE5IHAgPSAuMDAwLCBuID0gMTAwKS4gTWl0IGRlbSBlaW5lbSBFdXJvIG1laHIgYW4gZGVyIFdhcm1taWV0ZSBzaW5rZW4gZGllIE5lYmVua29zdGVuIGluIFByb3plbnQgdW0gMiw0IFByb3plbnRwdW5rdGUuIDEzLjMlIGRlciBTdHJldXVuZyBkZXMgTmViZW5rb3N0ZW4gaW4gUHJvemVudCBhbiBkZXIgS2FsdG1pZXRlIHdpcmQgZHVyY2ggZGllIFdhcm1taWV0ZSBlcmtsw6RydCwgd2FzIG5hY2ggQ29oZW4gKDE5OTIpIGVpbmVtIHN0YXJrZW4gRWZmZWt0IGVudHNwcmljaHQuIEgwIGthbm5uIHZlcndvcmZlbiB3ZXJkZW4uDQoNCg0KIA0KDQoNCg0KYGBge3J9DQoNCmY8LSBzcXJ0KHJlZyRhZGouci5zcXVhcmVkLyAoMS1yZWckYWRqLnIuc3F1YXJlZCkpDQpmDQpgYGANClVtIGRpZSBTdMOkcmtlIGRpZXNlcyBFZmZla3RzIHp1IGJldXJ0ZWlsZW4sIGVpZ25ldCBzaWNoIGRpZSBFaW50ZWlsdW5nIHZvbiBDb2hlbiAoMTk4OCk6DQoNCmYgPSAuMTAgZW50c3ByaWNodCBlaW5lbSBzY2h3YWNoZW4gRWZmZWt0DQpmID0gLjI1IGVudHNwcmljaHQgZWluZW0gbWl0dGxlcmVuIEVmZmVrdA0KZiA9IC40MCBlbnRzcHJpY2h0IGVpbmVtIHN0YXJrZW4gRWZmZWt0DQoNCg0KRGFtaXQgZW50c3ByaWNodCBkaWUgRWZmZWt0c3TDpHJrZSB2b24gMC4zOSBlaW5lbSBzdGFya2VuIEVmZmVrdC4gDQoNCg0KIwlFaW5lIEF1c3NhZ2UNCg0KDQpEaWUgSMO2aGUgZGVyIE5ldHRvd2FybW1pZXRlIChOZXR0b3dhcm1taWV0ZSkgaGF0IGVpbmVuIEVpbmZsdXNzIGRhcmF1Ziwgd2llIGhvY2ggZGllIE5lYmVua29zdGVuIGluIFByb3plbnQgdm9uIEthbHRtaWV0ZSAoTmViZW5rb3N0ZW5fUHJvemVudF92b25fS2FsdE1pZXRlKSBzaW5kKEYoMSwgOTUpID0gMTYuMTkgcCA9IC4wMDAsIG4gPSAxMDApLiBNaXQgZGVtIGVpbmVtIEV1cm8gbWVociBhbiBkZXIgV2FybW1pZXRlIHNpbmtlbiBkaWUgTmViZW5rb3N0ZW4gaW4gUHJvemVudCB1bSAyLDQgUHJvemVudHB1bmt0ZS4gMTMuMyUgZGVyIFN0cmV1dW5nIGRlcyBOZWJlbmtvc3RlbiBpbiBQcm96ZW50IGFuIGRlciBLYWx0bWlldGUgd2lyZCBkdXJjaCBkaWUgV2FybW1pZXRlIGVya2zDpHJ0LCB3YXMgbmFjaCBDb2hlbiAoMTk4OCkgZWluZW0gc3RhcmtlbiBFZmZla3QgZW50c3ByaWNodC4gSDAga2Fubm4gdmVyd29yZmVuIHdlcmRlbi4NCg==