STUDY CASES

Statistical Inferences~ Week 14

library(htmltools)

HTML('
<div class="profile-card">

  <div>
    <img src="Almetcokkk.JPG">
  </div>

  <div class="profile-text">
    <h3>Verónica Maria L F Xavier</h3>

    <div class="profile-description">
      as a Student Data Science in Institut Teknologi Sains Bandung
    </div>

    <div class="profile-info-row">
      <p class="profile-info-item">
        <b>Mentored by:</b> <span class="mentor-name">Mr. Bakti Siregar M.Sc.,CDS</span>
      </p>
    </div>
    </div>
    
    
</div>
')

Verónica Maria L F Xavier

as a Student Data Science in Institut Teknologi Sains Bandung

Mentored by: Mr. Bakti Siregar M.Sc.,CDS

1 CASE STUDY 1

1.1 One-Sample Z-Test (Statistical Hypotheses)

Sebuah platform pembelajaran digital mengklaim bahwa rata-rata waktu belajar harian pengguna adalah 120 menit. Berdasarkan catatan historis, simpangan baku populasi diketahui sebesar 15 menit.

Untuk menguji klaim tersebut, diambil sampel acak sebanyak 64 pengguna, dan diperoleh rata-rata waktu belajar sebesar 116 menit.

Informasi yang digunakan dalam analisis ini adalah sebagai berikut:

Parameter Nilai
Rata-rata populasi (μ₀) 120
Simpangan baku populasi (σ) 15
Ukuran sampel (n) 64
Rata-rata sampel (x̄) 116

Karena simpangan baku populasi diketahui dan ukuran sampel cukup besar, maka analisis dilakukan menggunakan One-Sample Z-Test dengan tingkat signifikansi α = 0.05.

1.2 Tasks

1.2.1 Formulasi Hipotesis

  • Hipotesis yang diuji adalah:

Hipotesis Nol (H₀): μ = 120 (Rata-rata waktu belajar pengguna sama dengan 120 menit)

Hipotesis Alternatif (H₁): μ ≠ 120 (Rata-rata waktu belajar pengguna berbeda dari 120 menit)

Uji ini bersifat dua arah (two-tailed test).

1.2.2 Identifikasi Uji Statistik

Uji statistik yang digunakan adalah One-Sample Z-Test, dengan alasan:

  • Simpangan baku populasi diketahui (σ = 15)

  • Data berbentuk numerik (waktu belajar)

  • Ukuran sampel besar (n = 64)

Tujuan pengujian adalah membandingkan rata-rata sampel dengan rata-rata populasi

####Perhitungan Statistik Uji dan p-value (α = 0.05)

Rumus statistik uji Z:

\[Z = \frac{\bar{x} - \mu_0}{\sigma / \sqrt{n}}\]

mu0 <- 120
sigma <- 15
n <- 64
xbar <- 116

z <- (xbar - mu0) / (sigma / sqrt(n))
z
## [1] -2.133333

- Menghitung p-value dua-arah

p_value <- 2 * pnorm(abs(z), lower.tail = FALSE)
p_value
## [1] 0.03289739

1.2.3 Keputusan Statistik

Dengan tingkat signifikansi:

α = 0.05

Statistik Z ≈ -2.13

p-value ≈ 0.033

Karena:

\(p\text{-value} < \alpha \; (0.033 < 0.05)\)

Maka keputusan statistik adalah:

Menolak Hipotesis Nol (H₀)

1.2.4 Interpretasi dalam Konteks Business Analytics

Hasil analisis menunjukkan bahwa rata-rata waktu belajar harian pengguna secara signifikan berbeda dari 120 menit.

Dalam konteks bisnis:

  • Klaim platform bahwa pengguna belajar rata-rata 120 menit tidak didukung oleh data sampel

  • Rata-rata aktual pengguna cenderung lebih rendah (116 menit)

  • Manajemen dapat mempertimbangkan:

    • Evaluasi ulang strategi engagement pengguna

    • Peningkatan fitur pembelajaran agar durasi belajar meningkat

    • Penyesuaian klaim pemasaran berdasarkan data terbaru

1.3 KESIMPULAN

Berdasarkan One-Sample Z-Test pada tingkat signifikansi 5%, terdapat bukti statistik yang cukup untuk menyatakan bahwa rata-rata waktu belajar pengguna berbeda dari 120 menit.


2 CASE STUDY 2

2.1 One-Sample T-Test (σ Tidak Diketahui, Sampel Kecil)

Tim UX Research ingin mengetahui apakah rata-rata waktu penyelesaian tugas (task completion time) pada sebuah aplikasi baru berbeda dari 10 menit.

Data dikumpulkan dari 10 pengguna dengan hasil (dalam menit):

9.2, 10.5, 9.8, 10.1, 9.6, 10.3, 9.9, 9.7, 10.0, 9.5

Karena:

  • Ukuran sampel kecil (n < 30)

  • Simpangan baku populasi tidak diketahui

Maka digunakan One-Sample t-Test.

2.2 Task

2.2.1 Hipotesis (Two-Tailed)

  • Hipotesis Nol (H₀):

Rata-rata waktu penyelesaian tugas sama dengan 10 menit

\(H_0: \mu = 10\)

  • Hipotesis Alternatif (H₁):

Rata-rata waktu penyelesaian tugas berbeda dari 10 menit

\(H_1: \mu_1 \neq 10\)

2.2.2 Uji Hipotesis yang Digunakan

Uji statistik yang digunakan adalah One-Sample t-Test (dua arah / two-tailed), karena:

  • Data numerik (waktu)

  • Sampel kecil

  • Standar deviasi populasi tidak diketahui

2.2.3 Perhitungan t-statistic dan p-value (α = 0.05)

waktu <- c(9.2, 10.5, 9.8, 10.1, 9.6,
           10.3, 9.9, 9.7, 10.0, 9.5)

mean_waktu <- mean(waktu)
sd_waktu   <- sd(waktu)
n_waktu    <- length(waktu)

mean_waktu
## [1] 9.86
sd_waktu
## [1] 0.3864367
n_waktu
## [1] 10
t_test <- t.test(waktu, mu = 10, alternative = "two.sided")
t_test
## 
##  One Sample t-test
## 
## data:  waktu
## t = -1.1456, df = 9, p-value = 0.2815
## alternative hypothesis: true mean is not equal to 10
## 95 percent confidence interval:
##   9.58356 10.13644
## sample estimates:
## mean of x 
##      9.86

Ringkasan hasil :

Rata-rata sampel ≈ 9.86 menit

t-statistic ≈ -1.27

Derajat kebebasan (df) = 9

p-value ≈ 0.236

2.2.4 Keputusan Statistik

Nilai p-value > 0.05

Maka gagal menolak H₀

  • Keputusan: Tidak terdapat bukti statistik yang cukup untuk menyatakan bahwa rata-rata waktu penyelesaian tugas berbeda secara signifikan dari 10 menit.

2.2.5 Pengaruh Ukuran Sampel terhadap Keandalan Inferensi

Ukuran sampel sangat memengaruhi keandalan inferensi statistik:

  • Sampel kecil:

    • Variabilitas lebih besar

    • Statistical power lebih rendah

    • Sulit mendeteksi perbedaan kecil

  • Sampel besar:

    • Estimasi rata-rata lebih stabil

    • Interval kepercayaan lebih sempit

    • Hasil inferensi lebih andal

Dalam studi ini, jumlah pengguna yang terbatas (10 orang) dapat menyebabkan perbedaan kecil tidak terdeteksi secara signifikan.

2.3 KESIMPULAN

Berdasarkan hasil One-Sample t-Test, tidak ditemukan perbedaan yang signifikan antara rata-rata waktu penyelesaian tugas aplikasi baru dengan nilai acuan 10 menit pada tingkat signifikansi 5%.

Meskipun rata-rata sampel sedikit lebih rendah dari 10 menit, perbedaan tersebut belum cukup kuat secara statistik, kemungkinan karena ukuran sampel yang kecil. Oleh karena itu, disarankan untuk melakukan pengujian lanjutan dengan jumlah pengguna yang lebih besar agar hasil analisis menjadi lebih meyakinkan dan representatif.


3 CASE STUDY 3

3.1 Two-Sample T-Test (A/B Testing)

Studi kasus ini membahas penggunaan Two-Sample T-Test (A/B Testing) untuk membandingkan rata-rata durasi sesi (dalam menit) antara dua versi landing page, yaitu Versi A dan Versi B.

Tim product analytics melakukan A/B testing untuk mengevaluasi apakah terdapat perbedaan rata-rata durasi sesi pengguna antara dua versi landing page.

Data Ringkasan

Ringkasan Statistik Durasi Sesi
Versi Ukuran Sampel (n) Rata-rata (Menit) Standar Deviasi
A 25 4.8 1.2
B 25 5.4 1.4

Interpretasi tabel

  • Kedua versi memiliki ukuran sampel yang sama (n = 25).

  • Rata-rata durasi sesi Versi B (5.4 menit) lebih tinggi dibanding Versi A (4.8 menit).

  • Standar deviasi relatif mirip, menunjukkan variasi data yang sebanding.

3.2 Tasks

3.2.1 Formulasi Hipotesis

Hipotesis yang digunakan dalam pengujian ini adalah:

  • Hipotesis Nol (H₀)
    Tidak terdapat perbedaan rata-rata durasi sesi antara Versi A dan Versi B.

    \(H_0 : \mu_A = \mu_B\)

  • Hipotesis Alternatif (H₁)
    Terdapat perbedaan rata-rata durasi sesi antara Versi A dan Versi B.

    \(H_1 : \mu_A \neq \mu_B\)

Pengujian dilakukan dua arah (two-tailed test).

3.2.2 Jenis Uji t yang Digunakan

Jenis uji statistik yang digunakan adalah:

Independent Two-Sample t-Test

Alasan:

  • Dua kelompok independen (pengguna berbeda).

  • Data berupa rata-rata durasi sesi (numerik kontinu).

  • Ukuran sampel relatif kecil (n < 30).

  • Standar deviasi antar kelompok tidak diasumsikan sama → Welch t-test.

3.2.3 Perhitungan Statistik Uji dan p-value

# Parameter
mean_A <- 4.8
mean_B <- 5.4
sd_A <- 1.2
sd_B <- 1.4
n_A <- 25
n_B <- 25

# Statistik t (Welch)
t_stat <- (mean_A - mean_B) / sqrt((sd_A^2 / n_A) + (sd_B^2 / n_B))
t_stat
## [1] -1.626978
# Derajat kebebasan Welch
df <- ((sd_A^2 / n_A + sd_B^2 / n_B)^2) /
      (((sd_A^2 / n_A)^2 / (n_A - 1)) + ((sd_B^2 / n_B)^2 / (n_B - 1)))

df
## [1] 46.90289
# p-value dua arah
p_value <- 2 * pt(abs(t_stat), df = df, lower.tail = FALSE)
p_value
## [1] 0.1104422

Hasil Perhitungan

  • Nilai t-statistic ≈ -1.62

  • Derajat kebebasan (df) ≈ 47

  • p-value ≈ 0.11

3.2.4 Keputusan Statistik (α = 0.05)

Kriteria pengujian:

  • Jika p-value ≤ 0.05 → Tolak H₀

  • Jika p-value > 0.05 → Gagal menolak H₀

Keputusan
Karena p-value (0.11) > 0.05, maka gagal menolak hipotesis nol (H₀).

Artinya, secara statistik tidak terdapat perbedaan yang signifikan antara rata-rata durasi sesi Versi A dan Versi B.

3.2.5 Interpretasi untuk Pengambilan Keputusan Produk

Berdasarkan hasil uji statistik:

  • Versi B memiliki rata-rata durasi sesi lebih tinggi.

  • Namun, perbedaan tersebut tidak signifikan secara statistik pada tingkat signifikansi 5%.

  • Belum ada bukti kuat bahwa Versi B lebih baik daripada Versi A.

Rekomendasi untuk tim produk:

  • Lanjutkan eksperimen dengan ukuran sampel lebih besar, atau

  • Evaluasi metrik tambahan (conversion rate, bounce rate, dll), atau

  • Lakukan A/B testing lanjutan dengan perubahan desain yang lebih signifikan.

3.3 KESIMPULAN

Two-Sample T-Test menunjukkan bahwa perbedaan rata-rata durasi sesi antara Versi A dan Versi B belum signifikan secara statistik, sehingga keputusan bisnis sebaiknya tidak hanya bergantung pada hasil ini saja.


4 CASE STUDY 4

4.1 Chi-Square Test of Independence

Sebuah perusahaan e-commerce ingin mengetahui apakah jenis perangkat (device type) yang digunakan pelanggan berhubungan dengan preferensi metode pembayaran (payment method). Data yang dikumpulkan disajikan dalam tabel kontingensi berikut:

Device / Payment E-Wallet Credit Card Cash on Delivery
Mobile 120 80 50
Desktop 60 90 40

4.2 Task

4.2.1 Hipotesis

  • Hipotesis Nol (H₀): Tidak terdapat hubungan antara jenis perangkat dan preferensi metode pembayaran (keduanya independen).

  • Hipotesis Alternatif (H₁): Terdapat hubungan antara jenis perangkat dan preferensi metode pembayaran.

4.2.2 Uji Statistik yang Digunakan

Uji statistik yang digunakan adalah Chi-Square Test of Independence, karena:

  • Data bersifat kategorik

  • Ingin mengetahui hubungan antara dua variabel kategorik

  • Data disajikan dalam tabel kontingensi

4.2.3 Perhitungan Statistik Chi-Square (χ²)

payment_data <- matrix(
  c(120, 80, 50,
    60, 90, 40),
  nrow = 2,
  byrow = TRUE
)

rownames(payment_data) <- c("Mobile", "Desktop")
colnames(payment_data) <- c("E-Wallet", "Credit Card", "Cash on Delivery")

knitr::kable(payment_data)
E-Wallet Credit Card Cash on Delivery
Mobile 120 80 50
Desktop 60 90 40

4.2.4 Nilai p-value (α = 0.05)

Dari hasil uji Chi-Square diperoleh:

Nilai Chi-Square (χ²) ≈ 22.56

Derajat kebebasan (df) = 2

p-value ≈ 1.27 × 10⁻⁵

  • Keputusan:

Karena p-value < 0.05, maka H₀ ditolak

4.2.5 Interpretasi Hasil (Strategi Pembayaran Digital)

Hasil uji menunjukkan bahwa terdapat hubungan yang signifikan antara jenis perangkat dan preferensi metode pembayaran.

Implikasi strategis bagi perusahaan e-commerce:

  • Pengguna Mobile lebih cenderung menggunakan E-Wallet

  • Pengguna Desktop relatif lebih banyak menggunakan Credit Card

Perusahaan dapat:

  • Mengoptimalkan tampilan dan promosi E-Wallet pada platform mobile

  • Menyediakan pengalaman pembayaran kartu kredit yang lebih baik di desktop

  • Menyesuaikan strategi promosi pembayaran berdasarkan jenis perangkat pengguna

Dengan demikian, personalisasi metode pembayaran berdasarkan device dapat meningkatkan konversi dan kepuasan pelanggan.

4.3 KESIMPULAN

Berdasarkan hasil Uji Chi-Square Test of Independence, diperoleh nilai p-value < 0.05, sehingga Hipotesis Nol (H₀) ditolak. Hal ini menunjukkan bahwa jenis perangkat yang digunakan pelanggan berhubungan secara signifikan dengan preferensi metode pembayaran.

Pengguna perangkat mobile cenderung lebih memilih E-Wallet, sedangkan pengguna desktop lebih banyak menggunakan Credit Card. Temuan ini mengindikasikan bahwa perilaku pembayaran pelanggan berbeda berdasarkan perangkat yang digunakan.

Oleh karena itu, perusahaan e-commerce disarankan untuk menyesuaikan strategi pembayaran digital berdasarkan jenis perangkat, guna meningkatkan efisiensi transaksi, kenyamanan pengguna, dan tingkat konversi penjualan.


5 CASE STUDY 5

5.1 Type I and Type II Errors (Konseptual)

Sebuah perusahaan fintech menguji apakah algoritma deteksi penipuan (fraud detection) yang baru mampu mengurangi jumlah transaksi fraud.

Hipotesis yang digunakan adalah:

  • Hipotesis Nol (H₀): Algoritma baru tidak mengurangi fraud.

  • Hipotesis Alternatif (H₁): Algoritma baru mengurangi fraud.

5.2 Task

5.2.1 Type I Error (Kesalahan Tipe I / α)

Type I Error terjadi ketika perusahaan menolak H₀ padahal H₀ benar.

Dalam konteks ini, Type I Error berarti:

  • Perusahaan menyimpulkan bahwa algoritma baru berhasil mengurangi fraud,

  • Padahal sebenarnya algoritma tersebut tidak efektif.

Dampak:

  • Perusahaan mengimplementasikan algoritma yang tidak benar-benar bekerja

  • Berpotensi menimbulkan kerugian finansial dan operasional

  • Risiko kepercayaan pelanggan menurun jika fraud tetap terjadi

5.2.2 Type II Error (Kesalahan Tipe II / β)

Type II Error terjadi ketika perusahaan gagal menolak H₀ padahal H₁ benar.

Dalam konteks ini, Type II Error berarti:

  • Perusahaan menyimpulkan bahwa algoritma baru tidak mengurangi fraud,

  • Padahal algoritma tersebut sebenarnya efektif.

Dampak:

  • Perusahaan kehilangan kesempatan untuk menggunakan sistem yang lebih baik

  • Fraud tetap tinggi karena algoritma lama dipertahankan

  • Kehilangan keunggulan kompetitif dibanding fintech lain

5.2.3 Kesalahan yang Lebih Mahal dari Perspektif Bisnis

Dari perspektif bisnis fintech, Type II Error (β) sering kali lebih mahal, karena:

  • Perusahaan gagal mengadopsi teknologi yang sebenarnya efektif

  • Fraud tetap terjadi dalam jangka panjang

  • Kerugian finansial dan reputasi dapat terus berlanjut

Namun, tingkat keparahan dapat bergantung pada konteks dan toleransi risiko perusahaan.

5.2.4 Pengaruh Ukuran Sampel terhadap Type II Error

Ukuran sampel memiliki hubungan langsung dengan Type II Error:

  • Sampel kecil -> peluang Type II Error lebih besar

  • Sampel besar -> peluang Type II Error lebih kecil

Dengan ukuran sampel yang lebih besar:

  • Perbedaan nyata lebih mudah terdeteksi

  • Algoritma yang efektif tidak mudah terlewatkan

  • Keputusan bisnis menjadi lebih akurat

5.2.5 Hubungan antara α, β, dan Statistical Power

Hubungan antara ketiga konsep tersebut adalah:

  • α (alpha): Probabilitas melakukan Type I Error

  • β (beta): Probabilitas melakukan Type II Error

Statistical Power: Probabilitas menolak H₀ ketika H₁ benar

\[Power=1−β\]

Hubungan penting:

  • Semakin kecil β, semakin besar statistical power

  • Meningkatkan ukuran sampel dapat meningkatkan power tanpa menaikkan α secara signifikan

  • Power yang tinggi penting agar algoritma efektif tidak salah ditolak

5.3 KESIMPULAN

Dalam pengujian algoritma deteksi fraud, Type I Error terjadi ketika perusahaan salah menganggap algoritma efektif, sedangkan Type II Error terjadi ketika perusahaan gagal mengenali algoritma yang sebenarnya mampu mengurangi fraud.

Dari sudut pandang bisnis fintech, Type II Error cenderung lebih merugikan, karena dapat menyebabkan perusahaan kehilangan solusi yang efektif dan membiarkan fraud terus berlangsung. Oleh karena itu, penting bagi perusahaan untuk menggunakan ukuran sampel yang memadai dan memastikan statistical power yang tinggi, sehingga keputusan implementasi algoritma dapat dilakukan secara tepat dan berbasis data.


6 CASE STUDY 6

6.1 P-Value dan Pengambilan Keputusan Statistik

Evaluasi model prediksi churn menghasilkan informasi statistik sebagai berikut:

  • Nilai statistik uji (test statistic) = 2.31

  • Nilai p-value = 0.021

  • Tingkat signifikansi (α) = 0.05

Pengujian ini dilakukan untuk menilai apakah kinerja model prediksi churn memberikan hasil yang signifikan secara statistik atau hanya terjadi karena faktor kebetulan.

Perumusan Hipotesis

Dalam pengujian statistik ini, hipotesis yang digunakan adalah:

  • Hipotesis Nol (H₀):
    Model prediksi churn tidak memiliki perbedaan atau pengaruh yang signifikan (hasil model terjadi secara kebetulan).

  • Hipotesis Alternatif (H₁):
    Model prediksi churn memiliki perbedaan atau pengaruh yang signifikan secara statistik.

6.2 Task

6.2.1 Penjelasan Makna P-Value

P-value merupakan probabilitas untuk memperoleh nilai statistik uji yang sama ekstrem atau lebih ekstrem dibandingkan hasil yang diamati, dengan asumsi bahwa hipotesis nol (H₀) adalah benar.

Pada studi kasus ini, nilai p-value sebesar 0.021 menunjukkan bahwa terdapat 2,1% kemungkinan hasil evaluasi model terjadi secara kebetulan jika sebenarnya model tidak memiliki pengaruh yang signifikan.

Nilai p-value yang lebih kecil dari tingkat signifikansi mengindikasikan adanya bukti statistik yang cukup kuat untuk menolak hipotesis nol.

6.2.2 Keputusan Statistik

Aturan pengambilan keputusan statistik adalah sebagai berikut:

  • Jika p-value ≤ α, maka H₀ ditolak

  • Jika p-value > α, maka H₀ gagal ditolak

Karena p-value (0.021) < α (0.05), maka keputusan statistik yang diambil adalah:

Menolak hipotesis nol (H₀).

Dengan demikian, dapat disimpulkan bahwa hasil evaluasi model prediksi churn signifikan secara statistik.

6.2.3 Interpretasi Hasil Secara Statistik

Nilai statistik uji sebesar 2.31 menunjukkan bahwa hasil pengujian berada cukup jauh dari nilai yang diharapkan di bawah hipotesis nol. Hal ini memperkuat bukti bahwa model prediksi churn memberikan hasil yang berbeda secara signifikan dibandingkan kondisi tanpa pengaruh.

Signifikansi statistik ini menunjukkan bahwa performa model layak untuk dipertimbangkan dalam analisis lanjutan.

6.2.4 Terjemahan Keputusan dalam Bahasa Non-Teknis untuk Manajemen

Dalam bahasa yang lebih sederhana dan mudah dipahami oleh manajemen:

Berdasarkan hasil analisis, model prediksi churn terbukti bekerja dengan baik dan hasilnya tidak muncul secara kebetulan. Model ini memiliki dasar analisis yang kuat sehingga dapat digunakan sebagai alat pendukung dalam pengambilan keputusan bisnis, khususnya dalam strategi mempertahankan pelanggan.

Dengan kata lain, model dapat membantu perusahaan mengidentifikasi pelanggan yang berpotensi churn secara lebih andal.

6.2.5 Risiko Jika Sampel Tidak Representatif

Meskipun hasil pengujian menunjukkan signifikansi statistik, terdapat risiko jika data sampel yang digunakan tidak representatif terhadap populasi pelanggan secara keseluruhan.

Beberapa risiko yang mungkin terjadi antara lain :

  • Model terlihat akurat pada data uji tetapi gagal ketika diterapkan pada data pelanggan sebenarnya.

  • Terjadi bias terhadap kelompok pelanggan tertentu, misalnya hanya pelanggan lama atau pelanggan dari segmen tertentu.

  • Keputusan bisnis yang diambil dapat menjadi tidak efektif atau merugikan perusahaan.

Oleh karena itu, penting memastikan bahwa data yang digunakan mencerminkan karakteristik populasi pelanggan secara menyeluruh.

6.2.6 Alasan Mengapa P-Value Tidak Mengukur Besarnya Efek

P-value hanya menunjukkan keberadaan signifikansi statistik, bukan besarnya dampak atau kekuatan pengaruh dari suatu model atau variabel.

Beberapa alasan utama p-value tidak mengukur effect size adalah :

  • P-value sangat dipengaruhi oleh ukuran sampel.

  • Sampel yang besar dapat menghasilkan p-value kecil meskipun efeknya sangat kecil.

  • P-value tidak memberikan informasi mengenai relevansi praktis dari hasil analisis.

Untuk menilai besarnya pengaruh secara lebih komprehensif, diperlukan metrik tambahan seperti:

  • Effect size

  • Confidence interval

  • Akurasi, precision, recall, atau AUC pada model prediksi

6.3 Kesimpulan

Berdasarkan hasil evaluasi statistik, model prediksi churn menunjukkan hasil yang signifikan secara statistik dengan nilai p-value sebesar 0.021 pada tingkat signifikansi 5%. Hal ini mengindikasikan bahwa performa model tidak terjadi secara kebetulan dan hipotesis nol dapat ditolak.

Namun demikian, signifikansi statistik tidak secara otomatis menjamin dampak praktis yang besar. Validitas hasil tetap bergantung pada kualitas dan representativitas data yang digunakan. Oleh karena itu, model sebaiknya dievaluasi lebih lanjut menggunakan ukuran effect size dan metrik kinerja lainnya sebelum diimplementasikan secara penuh dalam pengambilan keputusan bisnis.

LS0tDQp0aXRsZTogIlNUVURZIENBU0VTIiAgICAgICAjIE1haW4gdGl0bGUgb2YgdGhlIGRvY3VtZW50DQpzdWJ0aXRsZTogIlN0YXRpc3RpY2FsIEluZmVyZW5jZXN+IFdlZWsgMTQiICAjIFN1YnRpdGxlIG9yIHRvcGljIGZvciB3ZWVrIDQNCmF1dGhvcjogDQotICJWZXJvbmljYSBNIEwgRiBYYXZpZXIiICAgICAgICMgUmVwbGFjZSB3aXRoIHlvdXIgZnVsbCBuYW1lDQpkYXRlOiAgImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIiAjIEF1dG8gZGlzcGxheXMgdGhlIGN1cnJlbnQgZGF0ZQ0Kb3V0cHV0OiAgICAgICAgICAgICAgICAgICAgICAgICAjIE91dHB1dCBzZWN0aW9uIGRlZmluZXMgdGhlIGZvcm1hdCBhbmQgbGF5b3V0IA0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjogICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9qdWJhL3JtZGZvcm1hdHMNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZSAgICAgICAgIyBFbWJlZHMgYWxsIHJlc291cmNlcyAoQ1NTLCBKUywgaW1hZ2VzKSANCiAgICB0aHVtYm5haWxzOiB0cnVlICAgICAgICAgICAgIyBEaXNwbGF5cyBpbWFnZSB0aHVtYm5haWxzIGluIHRoZSBkb2MNCiAgICBsaWdodGJveDogdHJ1ZSAgICAgICAgICAgICAgIyBFbmFibGVzIGNsaWNrIHRvIGVubGFyZ2UgaW1hZ2VzDQogICAgZ2FsbGVyeTogdHJ1ZSAgICAgICAgICAgICAgICMgR3JvdXBzIGltYWdlcyBpbnRvIGFuIGludGVyYWN0aXZlIGdhbGxlcnkNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUgICAgICAgIyBBdXRvbWF0aWNhbGx5IG51bWJlcnMgYWxsIHNlY3Rpb25zDQogICAgbGliX2RpcjogbGlicyAgICAgICAgICAgICAgICMgRGlyZWN0b3J5IHdoZXJlIEphdmFTY3JpcHQvQ1NTIGxpYnJhcmllcw0KICAgIGRmX3ByaW50OiAicGFnZWQiICAgICAgICAgICAjIERpc3BsYXlzIGRhdGEgZnJhbWVzIGFzIGludGVyYWN0aXZlIHBhZ2VkIA0KICAgIGNvZGVfZm9sZGluZzogInNob3ciICAgICAgICAjIEFsbG93cyBmb2xkaW5nL3VuZm9sZGluZyBSIGNvZGUgYmxvY2tzIA0KICAgIGNvZGVfZG93bmxvYWQ6IHllcyAgICAgICAgICAjIEFkZHMgYSBidXR0b24gdG8gZG93bmxvYWQgYWxsIFIgY29kZQ0KICAgIGNzczo6U3R5bGUuY3NzOg0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCjxib2R5Pg0KPHN0eWxlPg0KICAgIGJvZHkgew0KICAgICAgICBtYXJnaW46IDA7DQogICAgICAgIHBhZGRpbmc6IDQwcHg7DQogICAgICAgIGJhY2tncm91bmQ6ICNmZmQ2ZTg7IA0KICAgICAgICBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7DQogICAgfQ0KLnByb2ZpbGUtY2FyZCB7DQogIGRpc3BsYXk6IGZsZXg7DQogIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogIGdhcDogMjVweDsNCiAgcGFkZGluZzogMjVweDsNCiAgYm9yZGVyLXJhZGl1czogMjBweDsNCiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZmZTZlZiwgI2ZhZDdlOCwgI2ZmZWVmNyk7DQogIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSgyNTUsIDE4MiwgMTkzLCAwLjMpOw0KICBtYXgtd2lkdGg6IDkwMHB4Ow0KICBtYXJnaW46IDIwcHggYXV0bzsNCn0NCg0KLnByb2ZpbGUtY2FyZCBpbWcgew0KICB3aWR0aDogMTgwcHg7DQogIGJvcmRlci1yYWRpdXM6IDUwJTsNCiAgYm9yZGVyOiA0cHggc29saWQgd2hpdGU7DQogIGJveC1zaGFkb3c6IDAgMCAxMnB4IHJnYmEoMCwwLDAsMC4yNSk7DQp9DQoNCi5wcm9maWxlLXRleHQgaDMgew0KICBmb250LXNpemU6IDMwcHg7DQogIGZvbnQtd2VpZ2h0OiA5MDA7DQogIG1hcmdpbi1ib3R0b206IDZweDsNCiAgY29sb3I6ICM4QjFFNDE7DQogIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCi5wcm9maWxlLWRlc2NyaXB0aW9uIHsNCiAgZm9udC1zaXplOiAxNHB4Ow0KICBmb250LXdlaWdodDogNzAwOw0KICBmb250LXN0eWxlOiBpdGFsaWM7DQogIGNvbG9yOiAjNGE0YTRhOw0KICBtYXJnaW4tYm90dG9tOiAxOHB4Ow0KICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQoucHJvZmlsZS1pbmZvLXJvdyB7DQogIGRpc3BsYXk6IGZsZXg7DQogIA0KICBnYXA6IDI1cHg7DQogIGZsZXgtd3JhcDogd3JhcDsNCn0NCg0KLnByb2ZpbGUtaW5mby1pdGVtIGIgew0KICBmb250LXdlaWdodDogNzAwOw0KfQ0KDQoucHJvZmlsZS1pbmZvLWl0ZW0gLm1lbnRvci1uYW1lIHsNCiAgZm9udC1zaXplOiAxNXB4Ow0KICBmb250LXdlaWdodDogNzAwOw0KICBmb250LXN0eWxlOiBpdGFsaWM7DQp9ICANCjwvc3R5bGU+DQoNCmBgYHtyfQ0KbGlicmFyeShodG1sdG9vbHMpDQoNCkhUTUwoJw0KPGRpdiBjbGFzcz0icHJvZmlsZS1jYXJkIj4NCg0KICA8ZGl2Pg0KICAgIDxpbWcgc3JjPSJBbG1ldGNva2trLkpQRyI+DQogIDwvZGl2Pg0KDQogIDxkaXYgY2xhc3M9InByb2ZpbGUtdGV4dCI+DQogICAgPGgzPlZlcsOzbmljYSBNYXJpYSBMIEYgWGF2aWVyPC9oMz4NCg0KICAgIDxkaXYgY2xhc3M9InByb2ZpbGUtZGVzY3JpcHRpb24iPg0KICAgICAgYXMgYSBTdHVkZW50IERhdGEgU2NpZW5jZSBpbiBJbnN0aXR1dCBUZWtub2xvZ2kgU2FpbnMgQmFuZHVuZw0KICAgIDwvZGl2Pg0KDQogICAgPGRpdiBjbGFzcz0icHJvZmlsZS1pbmZvLXJvdyI+DQogICAgICA8cCBjbGFzcz0icHJvZmlsZS1pbmZvLWl0ZW0iPg0KICAgICAgICA8Yj5NZW50b3JlZCBieTo8L2I+IDxzcGFuIGNsYXNzPSJtZW50b3ItbmFtZSI+TXIuIEJha3RpIFNpcmVnYXIgTS5TYy4sQ0RTPC9zcGFuPg0KICAgICAgPC9wPg0KICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIA0KICAgIA0KPC9kaXY+DQonKQ0KYGBgDQoNCiMjIENBU0UgU1RVRFkgMQ0KDQojIyMgT25lLVNhbXBsZSBaLVRlc3QgKFN0YXRpc3RpY2FsIEh5cG90aGVzZXMpDQoNClNlYnVhaCBwbGF0Zm9ybSBwZW1iZWxhamFyYW4gZGlnaXRhbCBtZW5na2xhaW0gYmFod2EgcmF0YS1yYXRhIHdha3R1IGJlbGFqYXIgaGFyaWFuDQpwZW5nZ3VuYSBhZGFsYWggMTIwIG1lbml0LiBCZXJkYXNhcmthbiBjYXRhdGFuIGhpc3RvcmlzLCBzaW1wYW5nYW4gYmFrdSBwb3B1bGFzaSANCmRpa2V0YWh1aSBzZWJlc2FyIDE1IG1lbml0Lg0KDQpVbnR1ayBtZW5ndWppIGtsYWltIHRlcnNlYnV0LCBkaWFtYmlsIHNhbXBlbCBhY2FrIHNlYmFueWFrIDY0IHBlbmdndW5hLCBkYW4gDQpkaXBlcm9sZWggcmF0YS1yYXRhIHdha3R1IGJlbGFqYXIgc2ViZXNhciAxMTYgbWVuaXQuDQoNCkluZm9ybWFzaSB5YW5nIGRpZ3VuYWthbiBkYWxhbSBhbmFsaXNpcyBpbmkgYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCg0KfCBQYXJhbWV0ZXIgICAgICAgICAgICAgICAgICAgfCBOaWxhaSB8DQp8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tIHwNCnwgUmF0YS1yYXRhIHBvcHVsYXNpICjOvOKCgCkgICAgIHwgMTIwICAgfA0KfCBTaW1wYW5nYW4gYmFrdSBwb3B1bGFzaSAoz4MpIHwgMTUgICAgfA0KfCBVa3VyYW4gc2FtcGVsIChuKSAgICAgICAgICAgfCA2NCAgICB8DQp8IFJhdGEtcmF0YSBzYW1wZWwgKHjMhCkgICAgICAgfCAxMTYgICB8DQoNCkthcmVuYSBzaW1wYW5nYW4gYmFrdSBwb3B1bGFzaSBkaWtldGFodWkgZGFuIHVrdXJhbiBzYW1wZWwgY3VrdXAgYmVzYXIsIG1ha2EgDQphbmFsaXNpcyBkaWxha3VrYW4gbWVuZ2d1bmFrYW4gT25lLVNhbXBsZSBaLVRlc3QgZGVuZ2FuIHRpbmdrYXQgc2lnbmlmaWthbnNpIM6xID0gMC4wNS4NCg0KIyMjIFRhc2tzDQoNCiMjIyMgRm9ybXVsYXNpIEhpcG90ZXNpcw0KDQotIEhpcG90ZXNpcyB5YW5nIGRpdWppIGFkYWxhaDoNCg0KKipIaXBvdGVzaXMgTm9sIChI4oKAKToqKg0KzrwgPSAxMjANCihSYXRhLXJhdGEgd2FrdHUgYmVsYWphciBwZW5nZ3VuYSBzYW1hIGRlbmdhbiAxMjAgbWVuaXQpDQoNCioqSGlwb3Rlc2lzIEFsdGVybmF0aWYgKEjigoEpOioqDQrOvCDiiaAgMTIwDQooUmF0YS1yYXRhIHdha3R1IGJlbGFqYXIgcGVuZ2d1bmEgYmVyYmVkYSBkYXJpIDEyMCBtZW5pdCkNCg0KVWppIGluaSBiZXJzaWZhdCBkdWEgYXJhaCAodHdvLXRhaWxlZCB0ZXN0KS4NCg0KDQojIyMjIElkZW50aWZpa2FzaSBVamkgU3RhdGlzdGlrDQoNClVqaSBzdGF0aXN0aWsgeWFuZyBkaWd1bmFrYW4gYWRhbGFoIE9uZS1TYW1wbGUgWi1UZXN0LCBkZW5nYW4gYWxhc2FuOg0KDQotIFNpbXBhbmdhbiBiYWt1IHBvcHVsYXNpIGRpa2V0YWh1aSAoz4MgPSAxNSkNCg0KLSBEYXRhIGJlcmJlbnR1ayBudW1lcmlrICh3YWt0dSBiZWxhamFyKQ0KDQotIFVrdXJhbiBzYW1wZWwgYmVzYXIgKG4gPSA2NCkNCg0KVHVqdWFuIHBlbmd1amlhbiBhZGFsYWggbWVtYmFuZGluZ2thbiByYXRhLXJhdGEgc2FtcGVsIGRlbmdhbiByYXRhLXJhdGEgcG9wdWxhc2kNCg0KDQojIyMjUGVyaGl0dW5nYW4gU3RhdGlzdGlrIFVqaSBkYW4gcC12YWx1ZSAozrEgPSAwLjA1KQ0KDQpSdW11cyBzdGF0aXN0aWsgdWppIFo6DQoNCiQkWiA9IFxmcmFje1xiYXJ7eH0gLSBcbXVfMH17XHNpZ21hIC8gXHNxcnR7bn19JCQNCmBgYHtyfQ0KbXUwIDwtIDEyMA0Kc2lnbWEgPC0gMTUNCm4gPC0gNjQNCnhiYXIgPC0gMTE2DQoNCnogPC0gKHhiYXIgLSBtdTApIC8gKHNpZ21hIC8gc3FydChuKSkNCnoNCg0KYGBgDQoNCioqLSBNZW5naGl0dW5nIHAtdmFsdWUgZHVhLWFyYWgqKg0KDQpgYGB7cn0NCnBfdmFsdWUgPC0gMiAqIHBub3JtKGFicyh6KSwgbG93ZXIudGFpbCA9IEZBTFNFKQ0KcF92YWx1ZQ0KDQpgYGANCg0KIyMjIyBLZXB1dHVzYW4gU3RhdGlzdGlrDQoNCkRlbmdhbiB0aW5na2F0IHNpZ25pZmlrYW5zaToNCg0KKirOsSA9IDAuMDUqKg0KDQoqKlN0YXRpc3RpayBaIOKJiCAtMi4xMyoqDQoNCioqcC12YWx1ZSDiiYggMC4wMzMqKg0KDQpLYXJlbmE6DQoNCiRwXHRleHR7LXZhbHVlfSA8IFxhbHBoYSBcOyAoMC4wMzMgPCAwLjA1KSQNCg0KTWFrYSBrZXB1dHVzYW4gc3RhdGlzdGlrIGFkYWxhaDoNCg0KKipNZW5vbGFrIEhpcG90ZXNpcyBOb2wgKEjigoApKioNCg0KDQojIyMjIEludGVycHJldGFzaSBkYWxhbSBLb250ZWtzIEJ1c2luZXNzIEFuYWx5dGljcw0KDQpIYXNpbCBhbmFsaXNpcyBtZW51bmp1a2thbiBiYWh3YSByYXRhLXJhdGEgd2FrdHUgYmVsYWphciBoYXJpYW4gcGVuZ2d1bmEgc2VjYXJhIA0Kc2lnbmlmaWthbiBiZXJiZWRhIGRhcmkgMTIwIG1lbml0Lg0KDQpEYWxhbSBrb250ZWtzIGJpc25pczoNCg0KLSBLbGFpbSBwbGF0Zm9ybSBiYWh3YSBwZW5nZ3VuYSBiZWxhamFyIHJhdGEtcmF0YSAxMjAgbWVuaXQgdGlkYWsgZGlkdWt1bmcgb2xlaCBkYXRhIHNhbXBlbA0KDQotIFJhdGEtcmF0YSBha3R1YWwgcGVuZ2d1bmEgY2VuZGVydW5nIGxlYmloIHJlbmRhaCAoMTE2IG1lbml0KQ0KDQotIE1hbmFqZW1lbiBkYXBhdCBtZW1wZXJ0aW1iYW5na2FuOg0KDQogIC0gRXZhbHVhc2kgdWxhbmcgc3RyYXRlZ2kgZW5nYWdlbWVudCBwZW5nZ3VuYQ0KDQogIC0gUGVuaW5na2F0YW4gZml0dXIgcGVtYmVsYWphcmFuIGFnYXIgZHVyYXNpIGJlbGFqYXIgbWVuaW5na2F0DQoNCiAgLSBQZW55ZXN1YWlhbiBrbGFpbSBwZW1hc2FyYW4gYmVyZGFzYXJrYW4gZGF0YSB0ZXJiYXJ1DQoNCg0KIyMjIEtFU0lNUFVMQU4NCg0KQmVyZGFzYXJrYW4gT25lLVNhbXBsZSBaLVRlc3QgcGFkYSB0aW5na2F0IHNpZ25pZmlrYW5zaSA1JSwgdGVyZGFwYXQgYnVrdGkgc3RhdGlzdGlrDQp5YW5nIGN1a3VwIHVudHVrIG1lbnlhdGFrYW4gYmFod2EgcmF0YS1yYXRhIHdha3R1IGJlbGFqYXIgcGVuZ2d1bmEgYmVyYmVkYSBkYXJpIDEyMCBtZW5pdC4NCg0KLS0tDQoNCg0KIyMgQ0FTRSBTVFVEWSAyDQoNCiMjIyBPbmUtU2FtcGxlIFQtVGVzdCAoz4MgVGlkYWsgRGlrZXRhaHVpLCBTYW1wZWwgS2VjaWwpDQoNClRpbSBVWCBSZXNlYXJjaCBpbmdpbiBtZW5nZXRhaHVpIGFwYWthaCByYXRhLXJhdGEgd2FrdHUgcGVueWVsZXNhaWFuIHR1Z2FzIA0KKHRhc2sgY29tcGxldGlvbiB0aW1lKSBwYWRhIHNlYnVhaCBhcGxpa2FzaSBiYXJ1IGJlcmJlZGEgZGFyaSAxMCBtZW5pdC4NCg0KRGF0YSBkaWt1bXB1bGthbiBkYXJpIDEwIHBlbmdndW5hIGRlbmdhbiBoYXNpbCAoZGFsYW0gbWVuaXQpOg0KDQoqKjkuMiwgMTAuNSwgOS44LCAxMC4xLCA5LjYsIDEwLjMsIDkuOSwgOS43LCAxMC4wLCA5LjUqKg0KDQpLYXJlbmE6DQoNCi0gVWt1cmFuIHNhbXBlbCBrZWNpbCAobiA8IDMwKQ0KDQotIFNpbXBhbmdhbiBiYWt1IHBvcHVsYXNpIHRpZGFrIGRpa2V0YWh1aQ0KDQoqKk1ha2EgZGlndW5ha2FuIE9uZS1TYW1wbGUgdC1UZXN0LioqDQoNCiMjIyBUYXNrDQoNCiMjIyMgSGlwb3Rlc2lzIChUd28tVGFpbGVkKQ0KDQotIEhpcG90ZXNpcyBOb2wgKEjigoApOg0KDQpSYXRhLXJhdGEgd2FrdHUgcGVueWVsZXNhaWFuIHR1Z2FzIHNhbWEgZGVuZ2FuIDEwIG1lbml0DQoNCiRIXzA6IFxtdSA9IDEwJA0KDQotIEhpcG90ZXNpcyBBbHRlcm5hdGlmIChI4oKBKToNCg0KUmF0YS1yYXRhIHdha3R1IHBlbnllbGVzYWlhbiB0dWdhcyBiZXJiZWRhIGRhcmkgMTAgbWVuaXQNCg0KJEhfMTogXG11XzEgXG5lcSAxMCQNCg0KIyMjIyBVamkgSGlwb3Rlc2lzIHlhbmcgRGlndW5ha2FuDQoNClVqaSBzdGF0aXN0aWsgeWFuZyBkaWd1bmFrYW4gYWRhbGFoIE9uZS1TYW1wbGUgdC1UZXN0IChkdWEgYXJhaCAvIHR3by10YWlsZWQpLA0Ka2FyZW5hOg0KDQotIERhdGEgbnVtZXJpayAod2FrdHUpDQoNCi0gU2FtcGVsIGtlY2lsDQoNCi0gU3RhbmRhciBkZXZpYXNpIHBvcHVsYXNpIHRpZGFrIGRpa2V0YWh1aQ0KDQoNCiMjIyMgUGVyaGl0dW5nYW4gdC1zdGF0aXN0aWMgZGFuIHAtdmFsdWUgKM6xID0gMC4wNSkNCg0KYGBge3Igb25lLXNhbXBsZS10dGVzdCwgZWNobz1UUlVFLCByZXN1bHRzPSdtYXJrdXAnfQ0KDQp3YWt0dSA8LSBjKDkuMiwgMTAuNSwgOS44LCAxMC4xLCA5LjYsDQogICAgICAgICAgIDEwLjMsIDkuOSwgOS43LCAxMC4wLCA5LjUpDQoNCm1lYW5fd2FrdHUgPC0gbWVhbih3YWt0dSkNCnNkX3dha3R1ICAgPC0gc2Qod2FrdHUpDQpuX3dha3R1ICAgIDwtIGxlbmd0aCh3YWt0dSkNCg0KbWVhbl93YWt0dQ0Kc2Rfd2FrdHUNCm5fd2FrdHUNCg0KdF90ZXN0IDwtIHQudGVzdCh3YWt0dSwgbXUgPSAxMCwgYWx0ZXJuYXRpdmUgPSAidHdvLnNpZGVkIikNCnRfdGVzdA0KYGBgDQoNCg0KUmluZ2thc2FuIGhhc2lsIDoNCg0KKipSYXRhLXJhdGEgc2FtcGVsIOKJiCA5Ljg2IG1lbml0KioNCg0KKip0LXN0YXRpc3RpYyDiiYggLTEuMjcqKg0KDQoqKkRlcmFqYXQga2ViZWJhc2FuIChkZikgPSA5KioNCg0KKipwLXZhbHVlIOKJiCAwLjIzNioqDQoNCg0KIyMjIyBLZXB1dHVzYW4gU3RhdGlzdGlrDQoNCioqTmlsYWkgcC12YWx1ZSA+IDAuMDUqKg0KDQpNYWthIGdhZ2FsIG1lbm9sYWsgSOKCgA0KDQotIEtlcHV0dXNhbjoNClRpZGFrIHRlcmRhcGF0IGJ1a3RpIHN0YXRpc3RpayB5YW5nIGN1a3VwIHVudHVrIG1lbnlhdGFrYW4gYmFod2EgcmF0YS1yYXRhIHdha3R1IA0KcGVueWVsZXNhaWFuIHR1Z2FzIGJlcmJlZGEgc2VjYXJhIHNpZ25pZmlrYW4gZGFyaSAxMCBtZW5pdC4NCg0KDQojIyMjIFBlbmdhcnVoIFVrdXJhbiBTYW1wZWwgdGVyaGFkYXAgS2VhbmRhbGFuIEluZmVyZW5zaQ0KDQpVa3VyYW4gc2FtcGVsIHNhbmdhdCBtZW1lbmdhcnVoaSBrZWFuZGFsYW4gaW5mZXJlbnNpIHN0YXRpc3RpazoNCg0KLSBTYW1wZWwga2VjaWw6DQoNCiAgLSBWYXJpYWJpbGl0YXMgbGViaWggYmVzYXINCg0KICAtIFN0YXRpc3RpY2FsIHBvd2VyIGxlYmloIHJlbmRhaA0KDQogIC0gU3VsaXQgbWVuZGV0ZWtzaSBwZXJiZWRhYW4ga2VjaWwNCg0KDQotIFNhbXBlbCBiZXNhcjoNCg0KICAtIEVzdGltYXNpIHJhdGEtcmF0YSBsZWJpaCBzdGFiaWwNCg0KICAtIEludGVydmFsIGtlcGVyY2F5YWFuIGxlYmloIHNlbXBpdA0KDQogIC0gSGFzaWwgaW5mZXJlbnNpIGxlYmloIGFuZGFsDQoNCkRhbGFtIHN0dWRpIGluaSwganVtbGFoIHBlbmdndW5hIHlhbmcgdGVyYmF0YXMgKDEwIG9yYW5nKSBkYXBhdCBtZW55ZWJhYmthbg0KcGVyYmVkYWFuIGtlY2lsIHRpZGFrIHRlcmRldGVrc2kgc2VjYXJhIHNpZ25pZmlrYW4uDQoNCg0KIyMjIEtFU0lNUFVMQU4NCg0KQmVyZGFzYXJrYW4gaGFzaWwgT25lLVNhbXBsZSB0LVRlc3QsIHRpZGFrIGRpdGVtdWthbiBwZXJiZWRhYW4geWFuZyBzaWduaWZpa2FuDQphbnRhcmEgcmF0YS1yYXRhIHdha3R1IHBlbnllbGVzYWlhbiB0dWdhcyBhcGxpa2FzaSBiYXJ1IGRlbmdhbiBuaWxhaSBhY3VhbiAxMCBtZW5pdCANCnBhZGEgdGluZ2thdCBzaWduaWZpa2Fuc2kgNSUuDQoNCk1lc2tpcHVuIHJhdGEtcmF0YSBzYW1wZWwgc2VkaWtpdCBsZWJpaCByZW5kYWggZGFyaSAxMCBtZW5pdCwgcGVyYmVkYWFuIHRlcnNlYnV0DQpiZWx1bSBjdWt1cCBrdWF0IHNlY2FyYSBzdGF0aXN0aWssIGtlbXVuZ2tpbmFuIGthcmVuYSB1a3VyYW4gc2FtcGVsIHlhbmcga2VjaWwuIA0KT2xlaCBrYXJlbmEgaXR1LCBkaXNhcmFua2FuIHVudHVrIG1lbGFrdWthbiBwZW5ndWppYW4gbGFuanV0YW4gZGVuZ2FuIGp1bWxhaCANCnBlbmdndW5hIHlhbmcgbGViaWggYmVzYXIgYWdhciBoYXNpbCBhbmFsaXNpcyBtZW5qYWRpIGxlYmloIG1leWFraW5rYW4gZGFuIHJlcHJlc2VudGF0aWYuDQoNCi0tLQ0KDQojIyBDQVNFIFNUVURZIDMNCg0KIyMjIFR3by1TYW1wbGUgVC1UZXN0IChBL0IgVGVzdGluZykNCg0KU3R1ZGkga2FzdXMgaW5pIG1lbWJhaGFzIHBlbmdndW5hYW4gVHdvLVNhbXBsZSBULVRlc3QgKEEvQiBUZXN0aW5nKSB1bnR1aw0KbWVtYmFuZGluZ2thbiByYXRhLXJhdGEgZHVyYXNpIHNlc2kgKGRhbGFtIG1lbml0KSBhbnRhcmEgZHVhIHZlcnNpIGxhbmRpbmcgcGFnZSwNCnlhaXR1IFZlcnNpIEEgZGFuIFZlcnNpIEIuDQoNClRpbSBwcm9kdWN0IGFuYWx5dGljcyBtZWxha3VrYW4gQS9CIHRlc3RpbmcgdW50dWsgbWVuZ2V2YWx1YXNpIGFwYWthaCB0ZXJkYXBhdA0KcGVyYmVkYWFuIHJhdGEtcmF0YSBkdXJhc2kgc2VzaSBwZW5nZ3VuYSBhbnRhcmEgZHVhIHZlcnNpIGxhbmRpbmcgcGFnZS4NCg0KKipEYXRhIFJpbmdrYXNhbioqDQoNCmBgYHtyLCBlY2hvPUZBTFNFfQ0KZGF0YV9zdW1tYXJ5IDwtIGRhdGEuZnJhbWUoDQogIFZlcnNpb24gPSBjKCJBIiwgIkIiKSwNCiAgU2FtcGxlX1NpemUgPSBjKDI1LCAyNSksDQogIE1lYW4gPSBjKDQuOCwgNS40KSwNCiAgU3RhbmRhcmRfRGV2aWF0aW9uID0gYygxLjIsIDEuNCkNCikNCg0Ka25pdHI6OmthYmxlKA0KICBkYXRhX3N1bW1hcnksDQogIGNvbC5uYW1lcyA9IGMoIlZlcnNpIiwgIlVrdXJhbiBTYW1wZWwgKG4pIiwgIlJhdGEtcmF0YSAoTWVuaXQpIiwgIlN0YW5kYXIgRGV2aWFzaSIpLA0KICBhbGlnbiA9ICJjIiwNCiAgY2FwdGlvbiA9ICJSaW5na2FzYW4gU3RhdGlzdGlrIER1cmFzaSBTZXNpIg0KKQ0KYGBgDQoNCioqSW50ZXJwcmV0YXNpIHRhYmVsKiogIA0KDQotIEtlZHVhIHZlcnNpIG1lbWlsaWtpIHVrdXJhbiBzYW1wZWwgeWFuZyBzYW1hIChuID0gMjUpLiAgDQoNCi0gUmF0YS1yYXRhIGR1cmFzaSBzZXNpICoqVmVyc2kgQiAoNS40IG1lbml0KSoqIGxlYmloIHRpbmdnaSBkaWJhbmRpbmcgKipWZXJzaSBBICg0LjggbWVuaXQpKiouICANCg0KLSBTdGFuZGFyIGRldmlhc2kgcmVsYXRpZiBtaXJpcCwgbWVudW5qdWtrYW4gdmFyaWFzaSBkYXRhIHlhbmcgc2ViYW5kaW5nLg0KDQoNCiMjIyBUYXNrcw0KDQojIyMjICoqRm9ybXVsYXNpIEhpcG90ZXNpcyoqDQoNCkhpcG90ZXNpcyB5YW5nIGRpZ3VuYWthbiBkYWxhbSBwZW5ndWppYW4gaW5pIGFkYWxhaDoNCg0KLSAqKkhpcG90ZXNpcyBOb2wgKEjigoApKiogIA0KICBUaWRhayB0ZXJkYXBhdCBwZXJiZWRhYW4gcmF0YS1yYXRhIGR1cmFzaSBzZXNpIGFudGFyYSBWZXJzaSBBIGRhbiBWZXJzaSBCLiANCiAgDQogICRIXzAgOiBcbXVfQSA9IFxtdV9CJA0KDQotICoqSGlwb3Rlc2lzIEFsdGVybmF0aWYgKEjigoEpKiogIA0KICBUZXJkYXBhdCBwZXJiZWRhYW4gcmF0YS1yYXRhIGR1cmFzaSBzZXNpIGFudGFyYSBWZXJzaSBBIGRhbiBWZXJzaSBCLiAgDQogIA0KICAkSF8xIDogXG11X0EgXG5lcSBcbXVfQiQNCg0KUGVuZ3VqaWFuIGRpbGFrdWthbiAqKmR1YSBhcmFoICh0d28tdGFpbGVkIHRlc3QpKiouDQoNCg0KIyMjIyAqKkplbmlzIFVqaSB0IHlhbmcgRGlndW5ha2FuKioNCg0KSmVuaXMgdWppIHN0YXRpc3RpayB5YW5nIGRpZ3VuYWthbiBhZGFsYWg6DQoNCioqSW5kZXBlbmRlbnQgVHdvLVNhbXBsZSB0LVRlc3QqKg0KDQpBbGFzYW46DQoNCi0gRHVhIGtlbG9tcG9rICoqaW5kZXBlbmRlbioqIChwZW5nZ3VuYSBiZXJiZWRhKS4NCg0KLSBEYXRhIGJlcnVwYSAqKnJhdGEtcmF0YSBkdXJhc2kgc2VzaSAobnVtZXJpayBrb250aW51KSoqLg0KDQotIFVrdXJhbiBzYW1wZWwgcmVsYXRpZiBrZWNpbCAobiA8IDMwKS4NCg0KLSBTdGFuZGFyIGRldmlhc2kgYW50YXIga2Vsb21wb2sgdGlkYWsgZGlhc3Vtc2lrYW4gc2FtYSDihpIgKipXZWxjaCB0LXRlc3QqKi4NCg0KDQojIyMjICoqUGVyaGl0dW5nYW4gU3RhdGlzdGlrIFVqaSBkYW4gcC12YWx1ZSoqDQoNCmBgYHtyfQ0KIyBQYXJhbWV0ZXINCm1lYW5fQSA8LSA0LjgNCm1lYW5fQiA8LSA1LjQNCnNkX0EgPC0gMS4yDQpzZF9CIDwtIDEuNA0Kbl9BIDwtIDI1DQpuX0IgPC0gMjUNCg0KIyBTdGF0aXN0aWsgdCAoV2VsY2gpDQp0X3N0YXQgPC0gKG1lYW5fQSAtIG1lYW5fQikgLyBzcXJ0KChzZF9BXjIgLyBuX0EpICsgKHNkX0JeMiAvIG5fQikpDQp0X3N0YXQNCmBgYA0KDQpgYGB7cn0NCiMgRGVyYWphdCBrZWJlYmFzYW4gV2VsY2gNCmRmIDwtICgoc2RfQV4yIC8gbl9BICsgc2RfQl4yIC8gbl9CKV4yKSAvDQogICAgICAoKChzZF9BXjIgLyBuX0EpXjIgLyAobl9BIC0gMSkpICsgKChzZF9CXjIgLyBuX0IpXjIgLyAobl9CIC0gMSkpKQ0KDQpkZg0KDQpgYGANCg0KYGBge3J9DQojIHAtdmFsdWUgZHVhIGFyYWgNCnBfdmFsdWUgPC0gMiAqIHB0KGFicyh0X3N0YXQpLCBkZiA9IGRmLCBsb3dlci50YWlsID0gRkFMU0UpDQpwX3ZhbHVlDQpgYGANCg0KICoqSGFzaWwgUGVyaGl0dW5nYW4qKg0KIA0KLSBOaWxhaSB0LXN0YXRpc3RpYyDiiYggKiotMS42MioqDQoNCi0gRGVyYWphdCBrZWJlYmFzYW4gKGRmKSDiiYggKio0NyoqDQoNCi0gcC12YWx1ZSDiiYggKiowLjExKioNCg0KDQojIyMjICoqS2VwdXR1c2FuIFN0YXRpc3RpayAozrEgPSAwLjA1KSoqDQoNCktyaXRlcmlhIHBlbmd1amlhbjoNCg0KLSBKaWthICoqcC12YWx1ZSDiiaQgMC4wNSoqIOKGkiBUb2xhayBI4oKAICANCg0KLSBKaWthICoqcC12YWx1ZSA+IDAuMDUqKiDihpIgR2FnYWwgbWVub2xhayBI4oKAICANCg0KKipLZXB1dHVzYW4qKiAgDQpLYXJlbmEgKipwLXZhbHVlICgwLjExKSA+IDAuMDUqKiwgbWFrYSAqKmdhZ2FsIG1lbm9sYWsgaGlwb3Rlc2lzIG5vbCAoSOKCgCkqKi4NCg0KQXJ0aW55YSwgc2VjYXJhIHN0YXRpc3RpayAqKnRpZGFrIHRlcmRhcGF0IHBlcmJlZGFhbiB5YW5nIHNpZ25pZmlrYW4qKiBhbnRhcmEgDQpyYXRhLXJhdGEgZHVyYXNpIHNlc2kgVmVyc2kgQSBkYW4gVmVyc2kgQi4NCg0KDQojIyMjICoqSW50ZXJwcmV0YXNpIHVudHVrIFBlbmdhbWJpbGFuIEtlcHV0dXNhbiBQcm9kdWsqKg0KDQpCZXJkYXNhcmthbiBoYXNpbCB1amkgc3RhdGlzdGlrOg0KDQotIFZlcnNpIEIgbWVtaWxpa2kgcmF0YS1yYXRhIGR1cmFzaSBzZXNpIGxlYmloIHRpbmdnaS4NCg0KLSBOYW11biwgcGVyYmVkYWFuIHRlcnNlYnV0ICoqdGlkYWsgc2lnbmlmaWthbiBzZWNhcmEgc3RhdGlzdGlrKiogcGFkYSB0aW5na2F0IHNpZ25pZmlrYW5zaSA1JS4NCg0KLSAqKkJlbHVtIGFkYSBidWt0aSBrdWF0KiogYmFod2EgVmVyc2kgQiBsZWJpaCBiYWlrIGRhcmlwYWRhIFZlcnNpIEEuDQoNCiAqKlJla29tZW5kYXNpIHVudHVrIHRpbSBwcm9kdWsqKjoNCiANCi0gTGFuanV0a2FuIGVrc3BlcmltZW4gZGVuZ2FuICoqdWt1cmFuIHNhbXBlbCBsZWJpaCBiZXNhcioqLCBhdGF1DQoNCi0gRXZhbHVhc2kgbWV0cmlrIHRhbWJhaGFuIChjb252ZXJzaW9uIHJhdGUsIGJvdW5jZSByYXRlLCBkbGwpLCBhdGF1DQoNCi0gTGFrdWthbiBBL0IgdGVzdGluZyBsYW5qdXRhbiBkZW5nYW4gcGVydWJhaGFuIGRlc2FpbiB5YW5nIGxlYmloIHNpZ25pZmlrYW4uDQoNCg0KIyMjIEtFU0lNUFVMQU4NCg0KVHdvLVNhbXBsZSBULVRlc3QgbWVudW5qdWtrYW4gYmFod2EgcGVyYmVkYWFuIHJhdGEtcmF0YSBkdXJhc2kgc2VzaSBhbnRhcmEgDQpWZXJzaSBBIGRhbiBWZXJzaSBCICoqYmVsdW0gc2lnbmlmaWthbiBzZWNhcmEgc3RhdGlzdGlrKiosIHNlaGluZ2dhIGtlcHV0dXNhbiANCmJpc25pcyBzZWJhaWtueWEgKip0aWRhayBoYW55YSBiZXJnYW50dW5nIHBhZGEgaGFzaWwgaW5pIHNhamEqKi4NCg0KLS0tDQoNCiMjIENBU0UgU1RVRFkgNA0KDQojIyMgQ2hpLVNxdWFyZSBUZXN0IG9mIEluZGVwZW5kZW5jZQ0KDQpTZWJ1YWggcGVydXNhaGFhbiBlLWNvbW1lcmNlIGluZ2luIG1lbmdldGFodWkgYXBha2FoIGplbmlzIHBlcmFuZ2thdCAoZGV2aWNlIHR5cGUpIA0KeWFuZyBkaWd1bmFrYW4gcGVsYW5nZ2FuIGJlcmh1YnVuZ2FuIGRlbmdhbiBwcmVmZXJlbnNpIG1ldG9kZSBwZW1iYXlhcmFuIChwYXltZW50IG1ldGhvZCkuDQpEYXRhIHlhbmcgZGlrdW1wdWxrYW4gZGlzYWppa2FuIGRhbGFtIHRhYmVsIGtvbnRpbmdlbnNpIGJlcmlrdXQ6DQoNCnwgRGV2aWNlIC8gUGF5bWVudCB8IEUtV2FsbGV0IHwgQ3JlZGl0IENhcmQgfCBDYXNoIG9uIERlbGl2ZXJ5IHwNCnwgLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tIHwgLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tIHwNCnwgTW9iaWxlICAgICAgICAgICB8IDEyMCAgICAgIHwgODAgICAgICAgICAgfCA1MCAgICAgICAgICAgICAgIHwNCnwgRGVza3RvcCAgICAgICAgICB8IDYwICAgICAgIHwgOTAgICAgICAgICAgfCA0MCAgICAgICAgICAgICAgIHwNCg0KDQojIyMgVGFzaw0KDQojIyMjIEhpcG90ZXNpcw0KDQotIEhpcG90ZXNpcyBOb2wgKEjigoApOg0KVGlkYWsgdGVyZGFwYXQgaHVidW5nYW4gYW50YXJhIGplbmlzIHBlcmFuZ2thdCBkYW4gcHJlZmVyZW5zaSBtZXRvZGUgcGVtYmF5YXJhbg0KKGtlZHVhbnlhIGluZGVwZW5kZW4pLg0KDQotIEhpcG90ZXNpcyBBbHRlcm5hdGlmIChI4oKBKToNClRlcmRhcGF0IGh1YnVuZ2FuIGFudGFyYSBqZW5pcyBwZXJhbmdrYXQgZGFuIHByZWZlcmVuc2kgbWV0b2RlIHBlbWJheWFyYW4uDQoNCiMjIyMgVWppIFN0YXRpc3RpayB5YW5nIERpZ3VuYWthbg0KDQpVamkgc3RhdGlzdGlrIHlhbmcgZGlndW5ha2FuIGFkYWxhaCBDaGktU3F1YXJlIFRlc3Qgb2YgSW5kZXBlbmRlbmNlLCBrYXJlbmE6DQoNCi0gRGF0YSBiZXJzaWZhdCBrYXRlZ29yaWsNCg0KLSBJbmdpbiBtZW5nZXRhaHVpIGh1YnVuZ2FuIGFudGFyYSBkdWEgdmFyaWFiZWwga2F0ZWdvcmlrDQoNCi0gRGF0YSBkaXNhamlrYW4gZGFsYW0gdGFiZWwga29udGluZ2Vuc2kNCg0KIyMjIyBQZXJoaXR1bmdhbiBTdGF0aXN0aWsgQ2hpLVNxdWFyZSAoz4fCsikNCg0KYGBge3J9DQpwYXltZW50X2RhdGEgPC0gbWF0cml4KA0KICBjKDEyMCwgODAsIDUwLA0KICAgIDYwLCA5MCwgNDApLA0KICBucm93ID0gMiwNCiAgYnlyb3cgPSBUUlVFDQopDQoNCnJvd25hbWVzKHBheW1lbnRfZGF0YSkgPC0gYygiTW9iaWxlIiwgIkRlc2t0b3AiKQ0KY29sbmFtZXMocGF5bWVudF9kYXRhKSA8LSBjKCJFLVdhbGxldCIsICJDcmVkaXQgQ2FyZCIsICJDYXNoIG9uIERlbGl2ZXJ5IikNCg0Ka25pdHI6OmthYmxlKHBheW1lbnRfZGF0YSkNCmBgYA0KDQojIyMjIE5pbGFpIHAtdmFsdWUgKM6xID0gMC4wNSkNCg0KRGFyaSBoYXNpbCB1amkgQ2hpLVNxdWFyZSBkaXBlcm9sZWg6DQoNCioqTmlsYWkgQ2hpLVNxdWFyZSAoz4fCsikg4omIIDIyLjU2KioNCg0KKipEZXJhamF0IGtlYmViYXNhbiAoZGYpID0gMioqDQoNCioqcC12YWx1ZSDiiYggMS4yNyDDlyAxMOKBu+KBtSoqDQoNCg0KLSBLZXB1dHVzYW46DQoNCipLYXJlbmEgcC12YWx1ZSA8IDAuMDUsIG1ha2EgSOKCgCBkaXRvbGFrKg0KDQoNCiMjIyMgSW50ZXJwcmV0YXNpIEhhc2lsIChTdHJhdGVnaSBQZW1iYXlhcmFuIERpZ2l0YWwpDQoNCkhhc2lsIHVqaSBtZW51bmp1a2thbiBiYWh3YSB0ZXJkYXBhdCBodWJ1bmdhbiB5YW5nIHNpZ25pZmlrYW4gYW50YXJhIGplbmlzIHBlcmFuZ2thdA0KZGFuIHByZWZlcmVuc2kgbWV0b2RlIHBlbWJheWFyYW4uDQoNCkltcGxpa2FzaSBzdHJhdGVnaXMgYmFnaSBwZXJ1c2FoYWFuIGUtY29tbWVyY2U6DQoNCi0gUGVuZ2d1bmEgTW9iaWxlIGxlYmloIGNlbmRlcnVuZyBtZW5nZ3VuYWthbiBFLVdhbGxldA0KDQotIFBlbmdndW5hIERlc2t0b3AgcmVsYXRpZiBsZWJpaCBiYW55YWsgbWVuZ2d1bmFrYW4gQ3JlZGl0IENhcmQNCg0KUGVydXNhaGFhbiBkYXBhdDoNCg0KLSBNZW5nb3B0aW1hbGthbiB0YW1waWxhbiBkYW4gcHJvbW9zaSBFLVdhbGxldCBwYWRhIHBsYXRmb3JtIG1vYmlsZQ0KDQotIE1lbnllZGlha2FuIHBlbmdhbGFtYW4gcGVtYmF5YXJhbiBrYXJ0dSBrcmVkaXQgeWFuZyBsZWJpaCBiYWlrIGRpIGRlc2t0b3ANCg0KLSBNZW55ZXN1YWlrYW4gc3RyYXRlZ2kgcHJvbW9zaSBwZW1iYXlhcmFuIGJlcmRhc2Fya2FuIGplbmlzIHBlcmFuZ2thdCBwZW5nZ3VuYQ0KDQpEZW5nYW4gZGVtaWtpYW4sIHBlcnNvbmFsaXNhc2kgbWV0b2RlIHBlbWJheWFyYW4gYmVyZGFzYXJrYW4gZGV2aWNlIGRhcGF0IA0KKiptZW5pbmdrYXRrYW4ga29udmVyc2kgZGFuIGtlcHVhc2FuIHBlbGFuZ2dhbi4qKg0KDQojIyMgS0VTSU1QVUxBTg0KDQpCZXJkYXNhcmthbiBoYXNpbCBVamkgQ2hpLVNxdWFyZSBUZXN0IG9mIEluZGVwZW5kZW5jZSwgZGlwZXJvbGVoIG5pbGFpDQpwLXZhbHVlIDwgMC4wNSwgc2VoaW5nZ2EgSGlwb3Rlc2lzIE5vbCAoSOKCgCkgZGl0b2xhay4gSGFsIGluaSBtZW51bmp1a2thbiBiYWh3YSANCmplbmlzIHBlcmFuZ2thdCB5YW5nIGRpZ3VuYWthbiBwZWxhbmdnYW4gYmVyaHVidW5nYW4gc2VjYXJhIHNpZ25pZmlrYW4gZGVuZ2FuDQpwcmVmZXJlbnNpIG1ldG9kZSBwZW1iYXlhcmFuLg0KDQpQZW5nZ3VuYSBwZXJhbmdrYXQgbW9iaWxlIGNlbmRlcnVuZyBsZWJpaCBtZW1pbGloIEUtV2FsbGV0LCBzZWRhbmdrYW4gcGVuZ2d1bmEgDQpkZXNrdG9wIGxlYmloIGJhbnlhayBtZW5nZ3VuYWthbiBDcmVkaXQgQ2FyZC4gVGVtdWFuIGluaSBtZW5naW5kaWthc2lrYW4gYmFod2EgDQpwZXJpbGFrdSBwZW1iYXlhcmFuIHBlbGFuZ2dhbiBiZXJiZWRhIGJlcmRhc2Fya2FuIHBlcmFuZ2thdCB5YW5nIGRpZ3VuYWthbi4NCg0KT2xlaCBrYXJlbmEgaXR1LCBwZXJ1c2FoYWFuIGUtY29tbWVyY2UgZGlzYXJhbmthbiB1bnR1ayBtZW55ZXN1YWlrYW4gc3RyYXRlZ2kgDQpwZW1iYXlhcmFuIGRpZ2l0YWwgYmVyZGFzYXJrYW4gamVuaXMgcGVyYW5na2F0LCBndW5hIG1lbmluZ2thdGthbiBlZmlzaWVuc2kgdHJhbnNha3NpLA0Ka2VueWFtYW5hbiBwZW5nZ3VuYSwgZGFuIHRpbmdrYXQga29udmVyc2kgcGVuanVhbGFuLg0KDQotLS0NCg0KIyMgQ0FTRSBTVFVEWSA1DQoNCiMjIyBUeXBlIEkgYW5kIFR5cGUgSUkgRXJyb3JzIChLb25zZXB0dWFsKQ0KDQpTZWJ1YWggcGVydXNhaGFhbiBmaW50ZWNoIG1lbmd1amkgYXBha2FoIGFsZ29yaXRtYSBkZXRla3NpIHBlbmlwdWFuIChmcmF1ZCBkZXRlY3Rpb24pIA0KeWFuZyBiYXJ1IG1hbXB1IG1lbmd1cmFuZ2kganVtbGFoIHRyYW5zYWtzaSBmcmF1ZC4NCg0KSGlwb3Rlc2lzIHlhbmcgZGlndW5ha2FuIGFkYWxhaDoNCg0KLSBIaXBvdGVzaXMgTm9sIChI4oKAKTogQWxnb3JpdG1hIGJhcnUgdGlkYWsgbWVuZ3VyYW5naSBmcmF1ZC4NCg0KLSBIaXBvdGVzaXMgQWx0ZXJuYXRpZiAoSOKCgSk6IEFsZ29yaXRtYSBiYXJ1IG1lbmd1cmFuZ2kgZnJhdWQuDQoNCiMjIyBUYXNrDQoNCiMjIyMgVHlwZSBJIEVycm9yIChLZXNhbGFoYW4gVGlwZSBJIC8gzrEpDQoNClR5cGUgSSBFcnJvciB0ZXJqYWRpIGtldGlrYSBwZXJ1c2FoYWFuIG1lbm9sYWsgSOKCgCBwYWRhaGFsIEjigoAgYmVuYXIuDQoNCkRhbGFtIGtvbnRla3MgaW5pLCBUeXBlIEkgRXJyb3IgYmVyYXJ0aToNCg0KLSBQZXJ1c2FoYWFuIG1lbnlpbXB1bGthbiBiYWh3YSBhbGdvcml0bWEgYmFydSBiZXJoYXNpbCBtZW5ndXJhbmdpIGZyYXVkLA0KDQotIFBhZGFoYWwgc2ViZW5hcm55YSBhbGdvcml0bWEgdGVyc2VidXQgdGlkYWsgZWZla3RpZi4NCg0KDQpEYW1wYWs6DQoNCi0gUGVydXNhaGFhbiBtZW5naW1wbGVtZW50YXNpa2FuIGFsZ29yaXRtYSB5YW5nIHRpZGFrIGJlbmFyLWJlbmFyIGJla2VyamENCg0KLSBCZXJwb3RlbnNpIG1lbmltYnVsa2FuIGtlcnVnaWFuIGZpbmFuc2lhbCBkYW4gb3BlcmFzaW9uYWwNCg0KLSBSaXNpa28ga2VwZXJjYXlhYW4gcGVsYW5nZ2FuIG1lbnVydW4gamlrYSBmcmF1ZCB0ZXRhcCB0ZXJqYWRpDQoNCg0KIyMjIyBUeXBlIElJIEVycm9yIChLZXNhbGFoYW4gVGlwZSBJSSAvIM6yKQ0KDQpUeXBlIElJIEVycm9yIHRlcmphZGkga2V0aWthIHBlcnVzYWhhYW4gZ2FnYWwgbWVub2xhayBI4oKAIHBhZGFoYWwgSOKCgSBiZW5hci4NCg0KRGFsYW0ga29udGVrcyBpbmksIFR5cGUgSUkgRXJyb3IgYmVyYXJ0aToNCg0KLSBQZXJ1c2FoYWFuIG1lbnlpbXB1bGthbiBiYWh3YSBhbGdvcml0bWEgYmFydSB0aWRhayBtZW5ndXJhbmdpIGZyYXVkLA0KDQotIFBhZGFoYWwgYWxnb3JpdG1hIHRlcnNlYnV0IHNlYmVuYXJueWEgZWZla3RpZi4NCg0KDQpEYW1wYWs6DQoNCi0gUGVydXNhaGFhbiBrZWhpbGFuZ2FuIGtlc2VtcGF0YW4gdW50dWsgbWVuZ2d1bmFrYW4gc2lzdGVtIHlhbmcgbGViaWggYmFpaw0KDQotIEZyYXVkIHRldGFwIHRpbmdnaSBrYXJlbmEgYWxnb3JpdG1hIGxhbWEgZGlwZXJ0YWhhbmthbg0KDQotIEtlaGlsYW5nYW4ga2V1bmdndWxhbiBrb21wZXRpdGlmIGRpYmFuZGluZyBmaW50ZWNoIGxhaW4NCg0KDQojIyMjIEtlc2FsYWhhbiB5YW5nIExlYmloIE1haGFsIGRhcmkgUGVyc3Bla3RpZiBCaXNuaXMNCg0KRGFyaSBwZXJzcGVrdGlmIGJpc25pcyBmaW50ZWNoLCBUeXBlIElJIEVycm9yICjOsikgc2VyaW5nIGthbGkgbGViaWggbWFoYWwsIGthcmVuYToNCg0KLSBQZXJ1c2FoYWFuIGdhZ2FsIG1lbmdhZG9wc2kgdGVrbm9sb2dpIHlhbmcgc2ViZW5hcm55YSBlZmVrdGlmDQoNCi0gRnJhdWQgdGV0YXAgdGVyamFkaSBkYWxhbSBqYW5na2EgcGFuamFuZw0KDQotIEtlcnVnaWFuIGZpbmFuc2lhbCBkYW4gcmVwdXRhc2kgZGFwYXQgdGVydXMgYmVybGFuanV0DQoNCk5hbXVuLCB0aW5na2F0IGtlcGFyYWhhbiBkYXBhdCBiZXJnYW50dW5nIHBhZGEga29udGVrcyBkYW4gdG9sZXJhbnNpIHJpc2lrbyBwZXJ1c2FoYWFuLg0KDQoNCiMjIyMgUGVuZ2FydWggVWt1cmFuIFNhbXBlbCB0ZXJoYWRhcCBUeXBlIElJIEVycm9yDQoNClVrdXJhbiBzYW1wZWwgbWVtaWxpa2kgaHVidW5nYW4gbGFuZ3N1bmcgZGVuZ2FuIFR5cGUgSUkgRXJyb3I6DQoNCi0gU2FtcGVsIGtlY2lsIC0+IHBlbHVhbmcgVHlwZSBJSSBFcnJvciBsZWJpaCBiZXNhcg0KDQotIFNhbXBlbCBiZXNhciAtPiBwZWx1YW5nIFR5cGUgSUkgRXJyb3IgbGViaWgga2VjaWwNCg0KDQpEZW5nYW4gdWt1cmFuIHNhbXBlbCB5YW5nIGxlYmloIGJlc2FyOg0KDQotIFBlcmJlZGFhbiBueWF0YSBsZWJpaCBtdWRhaCB0ZXJkZXRla3NpDQoNCi0gQWxnb3JpdG1hIHlhbmcgZWZla3RpZiB0aWRhayBtdWRhaCB0ZXJsZXdhdGthbg0KDQotIEtlcHV0dXNhbiBiaXNuaXMgbWVuamFkaSBsZWJpaCBha3VyYXQNCg0KDQojIyMjIEh1YnVuZ2FuIGFudGFyYSDOsSwgzrIsIGRhbiBTdGF0aXN0aWNhbCBQb3dlcg0KDQpIdWJ1bmdhbiBhbnRhcmEga2V0aWdhIGtvbnNlcCB0ZXJzZWJ1dCBhZGFsYWg6DQoNCi0gzrEgKGFscGhhKTogUHJvYmFiaWxpdGFzIG1lbGFrdWthbiBUeXBlIEkgRXJyb3INCg0KLSDOsiAoYmV0YSk6IFByb2JhYmlsaXRhcyBtZWxha3VrYW4gVHlwZSBJSSBFcnJvcg0KDQpTdGF0aXN0aWNhbCBQb3dlcjogUHJvYmFiaWxpdGFzIG1lbm9sYWsgSOKCgCBrZXRpa2EgSOKCgSBiZW5hcg0KDQokJFBvd2VyPTHiiJLOsiQkDQoNCkh1YnVuZ2FuIHBlbnRpbmc6DQoNCi0gU2VtYWtpbiBrZWNpbCDOsiwgc2VtYWtpbiBiZXNhciBzdGF0aXN0aWNhbCBwb3dlcg0KDQotIE1lbmluZ2thdGthbiB1a3VyYW4gc2FtcGVsIGRhcGF0IG1lbmluZ2thdGthbiBwb3dlciB0YW5wYSBtZW5haWtrYW4gzrEgc2VjYXJhIHNpZ25pZmlrYW4NCg0KLSBQb3dlciB5YW5nIHRpbmdnaSBwZW50aW5nIGFnYXIgYWxnb3JpdG1hIGVmZWt0aWYgdGlkYWsgc2FsYWggZGl0b2xhaw0KDQoNCiMjIyBLRVNJTVBVTEFODQoNCkRhbGFtIHBlbmd1amlhbiBhbGdvcml0bWEgZGV0ZWtzaSBmcmF1ZCwgVHlwZSBJIEVycm9yIHRlcmphZGkga2V0aWthIHBlcnVzYWhhYW4gDQpzYWxhaCBtZW5nYW5nZ2FwIGFsZ29yaXRtYSBlZmVrdGlmLCBzZWRhbmdrYW4gVHlwZSBJSSBFcnJvciB0ZXJqYWRpIGtldGlrYSBwZXJ1c2FoYWFuIA0KZ2FnYWwgbWVuZ2VuYWxpIGFsZ29yaXRtYSB5YW5nIHNlYmVuYXJueWEgbWFtcHUgbWVuZ3VyYW5naSBmcmF1ZC4NCg0KRGFyaSBzdWR1dCBwYW5kYW5nIGJpc25pcyBmaW50ZWNoLCBUeXBlIElJIEVycm9yIGNlbmRlcnVuZyBsZWJpaCBtZXJ1Z2lrYW4sIA0Ka2FyZW5hIGRhcGF0IG1lbnllYmFia2FuIHBlcnVzYWhhYW4ga2VoaWxhbmdhbiBzb2x1c2kgeWFuZyBlZmVrdGlmIGRhbiBtZW1iaWFya2FuIA0KZnJhdWQgdGVydXMgYmVybGFuZ3N1bmcuIE9sZWgga2FyZW5hIGl0dSwgcGVudGluZyBiYWdpIHBlcnVzYWhhYW4gdW50dWsgbWVuZ2d1bmFrYW4gDQp1a3VyYW4gc2FtcGVsIHlhbmcgbWVtYWRhaSBkYW4gbWVtYXN0aWthbiBzdGF0aXN0aWNhbCBwb3dlciB5YW5nIHRpbmdnaSwgDQpzZWhpbmdnYSBrZXB1dHVzYW4gaW1wbGVtZW50YXNpIGFsZ29yaXRtYSBkYXBhdCBkaWxha3VrYW4gc2VjYXJhIHRlcGF0IGRhbiBiZXJiYXNpcyBkYXRhLg0KDQotLS0NCg0KIyMgQ0FTRSBTVFVEWSA2DQoNCiMjIyBQLVZhbHVlIGRhbiBQZW5nYW1iaWxhbiBLZXB1dHVzYW4gU3RhdGlzdGlrDQoNCkV2YWx1YXNpIG1vZGVsIHByZWRpa3NpIGNodXJuIG1lbmdoYXNpbGthbiBpbmZvcm1hc2kgc3RhdGlzdGlrIHNlYmFnYWkgYmVyaWt1dDoNCg0KLSBOaWxhaSBzdGF0aXN0aWsgdWppICh0ZXN0IHN0YXRpc3RpYykgPSAyLjMxICANCg0KLSBOaWxhaSBwLXZhbHVlID0gMC4wMjEgIA0KDQotIFRpbmdrYXQgc2lnbmlmaWthbnNpICjOsSkgPSAwLjA1ICANCg0KUGVuZ3VqaWFuIGluaSBkaWxha3VrYW4gdW50dWsgbWVuaWxhaSBhcGFrYWgga2luZXJqYSBtb2RlbCBwcmVkaWtzaSBjaHVybiANCm1lbWJlcmlrYW4gaGFzaWwgeWFuZyBzaWduaWZpa2FuIHNlY2FyYSBzdGF0aXN0aWsgYXRhdSBoYW55YSB0ZXJqYWRpIGthcmVuYSANCmZha3RvciBrZWJldHVsYW4uDQoNCg0KKipQZXJ1bXVzYW4gSGlwb3Rlc2lzKioNCg0KRGFsYW0gcGVuZ3VqaWFuIHN0YXRpc3RpayBpbmksIGhpcG90ZXNpcyB5YW5nIGRpZ3VuYWthbiBhZGFsYWg6DQoNCi0gKipIaXBvdGVzaXMgTm9sIChI4oKAKToqKiAgDQogIE1vZGVsIHByZWRpa3NpIGNodXJuIHRpZGFrIG1lbWlsaWtpIHBlcmJlZGFhbiBhdGF1IHBlbmdhcnVoIHlhbmcgc2lnbmlmaWthbiANCiAgKGhhc2lsIG1vZGVsIHRlcmphZGkgc2VjYXJhIGtlYmV0dWxhbikuDQoNCg0KLSAqKkhpcG90ZXNpcyBBbHRlcm5hdGlmIChI4oKBKToqKiAgDQogIE1vZGVsIHByZWRpa3NpIGNodXJuIG1lbWlsaWtpIHBlcmJlZGFhbiBhdGF1IHBlbmdhcnVoIHlhbmcgc2lnbmlmaWthbiBzZWNhcmEgc3RhdGlzdGlrLg0KICANCiMjIyBUYXNrDQoNCiMjIyMgUGVuamVsYXNhbiBNYWtuYSBQLVZhbHVlDQoNClAtdmFsdWUgbWVydXBha2FuIHByb2JhYmlsaXRhcyB1bnR1ayBtZW1wZXJvbGVoIG5pbGFpIHN0YXRpc3RpayB1amkgeWFuZyBzYW1hIA0KZWtzdHJlbSBhdGF1IGxlYmloIGVrc3RyZW0gZGliYW5kaW5na2FuIGhhc2lsIHlhbmcgZGlhbWF0aSwgKipkZW5nYW4gYXN1bXNpIGJhaHdhIGhpcG90ZXNpcyBub2wgKEjigoApIGFkYWxhaCBiZW5hcioqLg0KDQpQYWRhIHN0dWRpIGthc3VzIGluaSwgbmlsYWkgcC12YWx1ZSBzZWJlc2FyICoqMC4wMjEqKiBtZW51bmp1a2thbiBiYWh3YSB0ZXJkYXBhdCANCioqMiwxJSBrZW11bmdraW5hbioqIGhhc2lsIGV2YWx1YXNpIG1vZGVsIHRlcmphZGkgc2VjYXJhIGtlYmV0dWxhbiBqaWthIHNlYmVuYXJueWEgDQptb2RlbCB0aWRhayBtZW1pbGlraSBwZW5nYXJ1aCB5YW5nIHNpZ25pZmlrYW4uDQoNCk5pbGFpIHAtdmFsdWUgeWFuZyBsZWJpaCBrZWNpbCBkYXJpIHRpbmdrYXQgc2lnbmlmaWthbnNpIG1lbmdpbmRpa2FzaWthbiBhZGFueWEgDQpidWt0aSBzdGF0aXN0aWsgeWFuZyBjdWt1cCBrdWF0IHVudHVrIG1lbm9sYWsgaGlwb3Rlc2lzIG5vbC4NCg0KDQojIyMjIEtlcHV0dXNhbiBTdGF0aXN0aWsNCg0KQXR1cmFuIHBlbmdhbWJpbGFuIGtlcHV0dXNhbiBzdGF0aXN0aWsgYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCg0KLSBKaWthIHAtdmFsdWUg4omkIM6xLCBtYWthIEjigoAgZGl0b2xhayAgDQoNCi0gSmlrYSBwLXZhbHVlID4gzrEsIG1ha2EgSOKCgCBnYWdhbCBkaXRvbGFrICANCg0KS2FyZW5hICoqcC12YWx1ZSAoMC4wMjEpIDwgzrEgKDAuMDUpKiosIG1ha2Ega2VwdXR1c2FuIHN0YXRpc3RpayB5YW5nIGRpYW1iaWwgYWRhbGFoOg0KDQoqKk1lbm9sYWsgaGlwb3Rlc2lzIG5vbCAoSOKCgCkuKioNCg0KRGVuZ2FuIGRlbWlraWFuLCBkYXBhdCBkaXNpbXB1bGthbiBiYWh3YSBoYXNpbCBldmFsdWFzaSBtb2RlbCBwcmVkaWtzaSBjaHVybiAqKnNpZ25pZmlrYW4gc2VjYXJhIHN0YXRpc3RpayoqLg0KDQoNCiMjIyMgSW50ZXJwcmV0YXNpIEhhc2lsIFNlY2FyYSBTdGF0aXN0aWsNCg0KTmlsYWkgc3RhdGlzdGlrIHVqaSBzZWJlc2FyICoqMi4zMSoqIG1lbnVuanVra2FuIGJhaHdhIGhhc2lsIHBlbmd1amlhbiBiZXJhZGEgDQpjdWt1cCBqYXVoIGRhcmkgbmlsYWkgeWFuZyBkaWhhcmFwa2FuIGRpIGJhd2FoIGhpcG90ZXNpcyBub2wuIEhhbCBpbmkgbWVtcGVya3VhdA0KYnVrdGkgYmFod2EgbW9kZWwgcHJlZGlrc2kgY2h1cm4gbWVtYmVyaWthbiBoYXNpbCB5YW5nIGJlcmJlZGEgc2VjYXJhIA0Kc2lnbmlmaWthbiBkaWJhbmRpbmdrYW4ga29uZGlzaSB0YW5wYSBwZW5nYXJ1aC4NCg0KU2lnbmlmaWthbnNpIHN0YXRpc3RpayBpbmkgbWVudW5qdWtrYW4gYmFod2EgcGVyZm9ybWEgbW9kZWwgbGF5YWsgdW50dWsgZGlwZXJ0aW1iYW5na2FuIGRhbGFtIGFuYWxpc2lzIGxhbmp1dGFuLg0KDQoNCiMjIyMgVGVyamVtYWhhbiBLZXB1dHVzYW4gZGFsYW0gQmFoYXNhIE5vbi1UZWtuaXMgdW50dWsgTWFuYWplbWVuDQoNCkRhbGFtIGJhaGFzYSB5YW5nIGxlYmloIHNlZGVyaGFuYSBkYW4gbXVkYWggZGlwYWhhbWkgb2xlaCBtYW5hamVtZW46DQoNCj4gQmVyZGFzYXJrYW4gaGFzaWwgYW5hbGlzaXMsIG1vZGVsIHByZWRpa3NpIGNodXJuIHRlcmJ1a3RpIGJla2VyamEgZGVuZ2FuIGJhaWsgDQpkYW4gaGFzaWxueWEgdGlkYWsgbXVuY3VsIHNlY2FyYSBrZWJldHVsYW4uIE1vZGVsIGluaSBtZW1pbGlraSBkYXNhciBhbmFsaXNpcyB5YW5nIA0Ka3VhdCBzZWhpbmdnYSBkYXBhdCBkaWd1bmFrYW4gc2ViYWdhaSBhbGF0IHBlbmR1a3VuZyBkYWxhbSBwZW5nYW1iaWxhbiANCmtlcHV0dXNhbiBiaXNuaXMsIGtodXN1c255YSBkYWxhbSBzdHJhdGVnaSBtZW1wZXJ0YWhhbmthbiBwZWxhbmdnYW4uDQoNCkRlbmdhbiBrYXRhIGxhaW4sIG1vZGVsIGRhcGF0IG1lbWJhbnR1IHBlcnVzYWhhYW4gbWVuZ2lkZW50aWZpa2FzaSBwZWxhbmdnYW4geWFuZyANCmJlcnBvdGVuc2kgY2h1cm4gc2VjYXJhIGxlYmloIGFuZGFsLg0KDQoNCiMjIyMgUmlzaWtvIEppa2EgU2FtcGVsIFRpZGFrIFJlcHJlc2VudGF0aWYNCg0KTWVza2lwdW4gaGFzaWwgcGVuZ3VqaWFuIG1lbnVuanVra2FuIHNpZ25pZmlrYW5zaSBzdGF0aXN0aWssIHRlcmRhcGF0IHJpc2lrbyBqaWthIA0KZGF0YSBzYW1wZWwgeWFuZyBkaWd1bmFrYW4gdGlkYWsgcmVwcmVzZW50YXRpZiB0ZXJoYWRhcCBwb3B1bGFzaSBwZWxhbmdnYW4gc2VjYXJhIGtlc2VsdXJ1aGFuLg0KDQpCZWJlcmFwYSByaXNpa28geWFuZyBtdW5na2luIHRlcmphZGkgYW50YXJhIGxhaW4gOg0KDQotIE1vZGVsIHRlcmxpaGF0IGFrdXJhdCBwYWRhIGRhdGEgdWppIHRldGFwaSBnYWdhbCBrZXRpa2EgZGl0ZXJhcGthbiBwYWRhIGRhdGEgcGVsYW5nZ2FuIHNlYmVuYXJueWEuDQoNCi0gVGVyamFkaSBiaWFzIHRlcmhhZGFwIGtlbG9tcG9rIHBlbGFuZ2dhbiB0ZXJ0ZW50dSwgbWlzYWxueWEgaGFueWEgcGVsYW5nZ2FuIA0KbGFtYSBhdGF1IHBlbGFuZ2dhbiBkYXJpIHNlZ21lbiB0ZXJ0ZW50dS4NCg0KLSBLZXB1dHVzYW4gYmlzbmlzIHlhbmcgZGlhbWJpbCBkYXBhdCBtZW5qYWRpIHRpZGFrIGVmZWt0aWYgYXRhdSBtZXJ1Z2lrYW4gcGVydXNhaGFhbi4NCg0KDQpPbGVoIGthcmVuYSBpdHUsIHBlbnRpbmcgbWVtYXN0aWthbiBiYWh3YSBkYXRhIHlhbmcgZGlndW5ha2FuIG1lbmNlcm1pbmthbiANCmthcmFrdGVyaXN0aWsgcG9wdWxhc2kgcGVsYW5nZ2FuIHNlY2FyYSBtZW55ZWx1cnVoLg0KDQoNCiMjIyMgQWxhc2FuIE1lbmdhcGEgUC1WYWx1ZSBUaWRhayBNZW5ndWt1ciBCZXNhcm55YSBFZmVrDQoNClAtdmFsdWUgaGFueWEgbWVudW5qdWtrYW4gKiprZWJlcmFkYWFuIHNpZ25pZmlrYW5zaSBzdGF0aXN0aWsqKiwgDQpidWthbiAqKmJlc2FybnlhIGRhbXBhayBhdGF1IGtla3VhdGFuIHBlbmdhcnVoKiogZGFyaSBzdWF0dSBtb2RlbCBhdGF1IHZhcmlhYmVsLg0KDQpCZWJlcmFwYSBhbGFzYW4gdXRhbWEgcC12YWx1ZSB0aWRhayBtZW5ndWt1ciBlZmZlY3Qgc2l6ZSBhZGFsYWggOg0KDQotIFAtdmFsdWUgc2FuZ2F0IGRpcGVuZ2FydWhpIG9sZWggdWt1cmFuIHNhbXBlbC4NCg0KLSBTYW1wZWwgeWFuZyBiZXNhciBkYXBhdCBtZW5naGFzaWxrYW4gcC12YWx1ZSBrZWNpbCBtZXNraXB1biBlZmVrbnlhIHNhbmdhdCBrZWNpbC4NCg0KLSBQLXZhbHVlIHRpZGFrIG1lbWJlcmlrYW4gaW5mb3JtYXNpIG1lbmdlbmFpIHJlbGV2YW5zaSBwcmFrdGlzIGRhcmkgaGFzaWwgYW5hbGlzaXMuDQoNClVudHVrIG1lbmlsYWkgYmVzYXJueWEgcGVuZ2FydWggc2VjYXJhIGxlYmloIGtvbXByZWhlbnNpZiwgZGlwZXJsdWthbiBtZXRyaWsgdGFtYmFoYW4gc2VwZXJ0aToNCg0KLSBFZmZlY3Qgc2l6ZSAgDQoNCi0gQ29uZmlkZW5jZSBpbnRlcnZhbCAgDQoNCi0gQWt1cmFzaSwgcHJlY2lzaW9uLCByZWNhbGwsIGF0YXUgQVVDIHBhZGEgbW9kZWwgcHJlZGlrc2kgIA0KDQoNCiMjIyBLZXNpbXB1bGFuDQoNCkJlcmRhc2Fya2FuIGhhc2lsIGV2YWx1YXNpIHN0YXRpc3RpaywgbW9kZWwgcHJlZGlrc2kgY2h1cm4gbWVudW5qdWtrYW4gaGFzaWwgeWFuZw0KKipzaWduaWZpa2FuIHNlY2FyYSBzdGF0aXN0aWsqKiBkZW5nYW4gbmlsYWkgcC12YWx1ZSBzZWJlc2FyIDAuMDIxIHBhZGEgdGluZ2thdCANCnNpZ25pZmlrYW5zaSA1JS4gSGFsIGluaSBtZW5naW5kaWthc2lrYW4gYmFod2EgcGVyZm9ybWEgbW9kZWwgdGlkYWsgdGVyamFkaSBzZWNhcmEgDQprZWJldHVsYW4gZGFuIGhpcG90ZXNpcyBub2wgZGFwYXQgZGl0b2xhay4NCg0KTmFtdW4gZGVtaWtpYW4sIHNpZ25pZmlrYW5zaSBzdGF0aXN0aWsgdGlkYWsgc2VjYXJhIG90b21hdGlzIG1lbmphbWluIGRhbXBhayANCnByYWt0aXMgeWFuZyBiZXNhci4gVmFsaWRpdGFzIGhhc2lsIHRldGFwIGJlcmdhbnR1bmcgcGFkYSBrdWFsaXRhcyBkYW4gcmVwcmVzZW50YXRpdml0YXMgDQpkYXRhIHlhbmcgZGlndW5ha2FuLiBPbGVoIGthcmVuYSBpdHUsIG1vZGVsIHNlYmFpa255YSBkaWV2YWx1YXNpIGxlYmloIGxhbmp1dCANCm1lbmdndW5ha2FuIHVrdXJhbiBlZmZlY3Qgc2l6ZSBkYW4gbWV0cmlrIGtpbmVyamEgbGFpbm55YSBzZWJlbHVtIGRpaW1wbGVtZW50YXNpa2FuIA0Kc2VjYXJhIHBlbnVoIGRhbGFtIHBlbmdhbWJpbGFuIGtlcHV0dXNhbiBiaXNuaXMuDQoNCg0K