
1. Pendahuluan
1.1 Tujuan
Laporan ini bertujuan untuk menganalisis dan membandingkan Margin of
Error (MoE) antara metode Probability Sampling dan Non-Probability
Sampling dalam memperkirakan pengeluaran makanan bulanan mahasiswa.
Perbandingan ini diharapkan dapat memberikan wawasan mengenai
efektivitas masing-masing metode dalam menghasilkan estimasi yang lebih
akurat.
Adapun tujuan lebih spesifik dari penelitian ini adalah sebagai
berikut:
Menentukan besarnya Margin of Error (MoE) yang dihasilkan dari
Probability Sampling.
Menentukan besarnya Margin of Error (MoE) yang dihasilkan dari
Non-Probability Sampling.
Membandingkan hasil kedua metode dan menilai tingkat akurasinya
dalam memperkirakan pengeluaran makanan bulanan mahasiswa.
Memberikan rekomendasi metode sampling yang lebih sesuai untuk
penelitian sejenis di masa mendatang.
1.2 Pentingnya Menghitung MoE Dalam Pengambilan Sampel
Margin of Error (MoE) merupakan indikator statistik yang
menunjukkan seberapa besar hasil estimasi dari sampel dapat menyimpang
dari nilai sebenarnya dalam populasi. MoE dinyatakan dalam bentuk
persentase dan dipengaruhi oleh berbagai faktor, seperti ukuran sampel,
variasi dalam populasi, serta metode pengambilan sampel yang
digunakan.
Dalam pengambilan sampel, MoE menjadi krusial karena:
- Menentukan Akurasi Estimasi
Semakin kecil Margin of Error, semakin dekat hasil estimasi
terhadap nilai sebenarnya dalam populasi.
MoE yang besar menunjukkan bahwa hasil estimasi dari sampel
memiliki kemungkinan penyimpangan yang lebih besar dari populasi
sesungguhnya.
- Membantu Dalam Pengambilan Keputusan
Dalam penelitian, terutama yang berkaitan dengan kebijakan atau
bisnis, memahami batas ketidakpastian sangat penting agar keputusan yang
dibuat lebih informatif dan tepat.
Contohnya, jika universitas ingin menentukan kebijakan subsidi
makanan bagi mahasiswa, perhitungan MoE yang akurat dapat membantu
memastikan bahwa estimasi pengeluaran makanan mahasiswa cukup dapat
diandalkan.
- Membedakan Kualitas Metode Sampling
Probability Sampling umumnya memiliki MoE yang lebih kecil
dibandingkan Non-Probability Sampling karena setiap elemen dalam
populasi memiliki probabilitas yang diketahui untuk terpilih, sehingga
hasilnya lebih representatif.
Non-Probability Sampling sering kali memiliki MoE yang lebih
besar karena keterbatasan dalam pengacakan, yang dapat menyebabkan bias
dalam sampel.
Dengan memahami Margin of Error dan pentingnya dalam pengambilan
sampel, penelitian ini akan mengevaluasi dan membandingkan metode
Probability Sampling dan Non-Probability Sampling untuk menentukan
metode mana yang lebih optimal dalam memperkirakan pengeluaran makanan
bulanan mahasiswa.
2. Metode Pengambilan Sampling
2.1 Probability Sampling
Simple Random Sampling (SRS): Memilih sampel
secara acak dari populasi tanpa mempertimbangkan karakteristik tertentu,
sehingga setiap individu memiliki peluang yang sama untuk terpilih.
| 102 |
Laki-laki |
21 |
Ekonomi |
1.200.000 |
| 205 |
Perempuan |
22 |
Teknik |
1.500.000 |
| 310 |
Laki-laki |
23 |
Hukum |
1.250.000 |
| 415 |
Perempuan |
21 |
Kedokteran |
1.600.000 |
Stratified Sampling: Membagi populasi ke dalam
kelompok (strata) berdasarkan fakultas dan mengambil sampel secara
proporsional dari setiap kelompok untuk memastikan keterwakilan yang
seimbang.
| Fakultas Ekonomi |
304 |
Perempuan |
23 |
Ekonomi |
1.300.000 |
| Fakultas Teknik |
410 |
Laki-laki |
22 |
Teknik |
1.400.000 |
| Fakultas Hukum |
520 |
Perempuan |
21 |
Hukum |
1.450.000 |
Systematic Sampling: Memilih setiap siswa ke-k
dari daftar yang diurutkan berdasarkan nomor ID mahasiswa untuk
memastikan pemerataan dalam pengambilan sampel.
| 150 |
Perempuan |
21 |
Kedokteran |
1.800.000 |
| 300 |
Laki-laki |
23 |
Hukum |
1.600.000 |
| 450 |
Perempuan |
22 |
Ekonomi |
1.500.000 |
Cluster Sampling: Memilih beberapa fakultas
secara acak dan mensurvei seluruh mahasiswa dalam fakultas yang terpilih
untuk mengurangi biaya dan waktu.
| 501 |
Ekonomi |
2023 |
1.250.000 |
| 502 |
Ekonomi |
2024 |
1.350.000 |
| 601 |
Teknik |
2022 |
1.500.000 |
| 602 |
Teknik |
2023 |
1.600.000 |
Multi-Stage Sampling: Menggunakan kombinasi
beberapa teknik sampling, yaitu memilih beberapa fakultas secara acak
lalu memilih beberapa mahasiswa secara acak dari fakultas tersebut.
| 701 |
Teknik |
2023 |
1.450.000 |
| 702 |
Ekonomi |
2021 |
1.320.000 |
| 703 |
Hukum |
2024 |
1.380.000 |
| 704 |
Kedokteran |
2022 |
1.500.000 |
2.2 Non-Probability Sampling
Convenience Sampling: Memilih responden yang
mudah diakses seperti mahasiswa yang berada di sekitar kampus atau
memiliki hubungan dengan peneliti.
| 801 |
Laki-laki |
20 |
Kedokteran |
1.700.000 |
| 802 |
Perempuan |
21 |
Teknik |
1.400.000 |
| 803 |
Laki-laki |
22 |
Ekonomi |
1.600.000 |
Purposive Sampling: Memilih responden
berdasarkan kriteria tertentu seperti mahasiswa dengan pengeluaran
makanan lebih dari Rp 1.500.000.
| Pengeluaran > Rp 1.500.000 |
1003 |
Laki-laki |
23 |
Teknik |
1.800.000 |
| Pengeluaran > Rp 1.500.000 |
1004 |
Perempuan |
22 |
Hukum |
1.600.000 |
Quota Sampling: Memilih responden berdasarkan
kuota tertentu dari subkelompok, misalnya membagi jumlah sampel dengan
persentase yang sama antara fakultas Teknik dan Ekonomi.
| 50% Teknik, 50% Ekonomi |
1205 |
Laki-laki |
21 |
Teknik |
1.450.000 |
| 50% Teknik, 50% Ekonomi |
1306 |
Perempuan |
23 |
Ekonomi |
1.380.000 |
Snowball Sampling: Memilih responden berdasarkan
referensi dari peserta sebelumnya, seperti mahasiswa yang
merekomendasikan teman mereka untuk berpartisipasi dalam survei.
| 1407 |
Laki-laki |
22 |
Ekonomi |
1.420.000 |
| 1408 |
Perempuan |
21 |
Teknik |
1.500.000 |
| 1409 |
Laki-laki |
23 |
Kedokteran |
1.600.000 |
3. Perhitungan MoE untuk Pengambilan Sampel Probabilitas
Margin of Error (MoE) adalah konsep statistik yang mengukur
ketidakpastian dalam hasil survei atau estimasi berbasis sampel. Konsep
ini memberikan rentang di mana parameter populasi sebenarnya cenderung
berada.
Secara umum, MoE dihitung dengan rumus:
\[
MoE = Z \times \frac{\sigma}{\sqrt{n}}
\]
Dimana: - \(Z = 1.96\) (untuk
tingkat kepercayaan 95%)
Simpangan baku (\(\sigma\)) dihitung
dengan rumus:
\[
\sigma = \sqrt{\frac{\sum (X_i - \bar{X})^2}{n - 1}}
\]
Dimana: - \(X_i\) = Pengeluaran
makanan mahasiswa ke-\(i\)
- \(\bar{X}\) = Rata-rata pengeluaran
makanan mahasiswa
3.1 Simple Random Sampling (SRS)
Diketahui:
\(Z = 1.96\)
\(n = 277\)
\(\sigma = 421.205,59\)
Maka:
\[
MoE = 1.96 \times \frac{421.205,59}{\sqrt{277}}
\]
\[
MoE = 49.602,36
\]
3.2 Stratified Sampling
Diketahui:
\(Z = 1.96\)
\(n = 250\)
\(\sigma = 391.242,90\)
Maka:
\[
MoE = 1.96 \times \frac{391.242,90}{\sqrt{250}}
\]
\[
MoE = 48.459,72
\]
3.3 Cluster Sampling
Diketahui:
\(Z = 1.96\)
\(n = 300\)
\(\sigma = 375.114,78\)
Maka:
\[
MoE = 1.96 \times \frac{375.114,78}{\sqrt{300}}
\]
\[
MoE = 43.263,15
\]
3.4 Systematic Sampling
Diketahui:
\(Z = 1.96\)
\(n = 280\)
\(\sigma = 405.312,40\)
Maka:
\[
MoE = 1.96 \times \frac{405.312,40}{\sqrt{280}}
\]
\[
MoE = 47.485,93
\]
3.5 Multi-Stage Sampling
Diketahui:
\(Z = 1.96\)
\(n = 260\)
\(\sigma = 398.102,75\)
Maka:
\[
MoE = 1.96 \times \frac{398.102,75}{\sqrt{260}}
\]
\[
MoE = 48.377,64
\]
4. Perhitungan MoE untuk Pengambilan Sampel Non-Probabilitas
4.1 Convenience Sampling
Diketahui:
\(Z = 1.96\)
\(n = 223\)
\(\sigma = 425.090,14\)
Maka:
\[
MoE = 1.96 \times \frac{425.090,14}{\sqrt{223}}
\]
\[
MoE = 55.792,61
\]
4.2 Snowball Sampling
Diketahui:
\(Z = 1.96\)
\(n = 200\)
\(\sigma = 412.312,47\)
Maka:
\[
MoE = 1.96 \times \frac{412.312,47}{\sqrt{200}}
\]
\[
MoE = 57.102,84
\]
4.3 Purposive Sampling
Diketahui:
\(Z = 1.96\)
\(n = 210\)
\(\sigma = 398.541,22\)
Maka:
\[
MoE = 1.96 \times \frac{398.541,22}{\sqrt{210}}
\]
\[
MoE = 53.723,10
\]
4.4 Quota Sampling
Diketahui:
\(Z = 1.96\)
\(n = 230\)
\(\sigma = 389.214,78\)
Maka:
\[
MoE = 1.96 \times \frac{389.214,78}{\sqrt{230}}
\]
\[
MoE = 50.208,56
\]
5. Perbandingan Setiap Metode
Dari hasil perhitungan di atas, dapat disimpulkan bahwa metode
probability sampling memiliki Margin of Error yang lebih rendah
dibandingkan dengan metode non-probability sampling. Berikut adalah
perbandingan rinci grafik Margin of Error (MoE) dari berbagai metode
sampling :
Visualisasi Perbandingan MoE

- Metode Stratified Sampling memiliki MoE terendah dalam
Probability Sampling, yang menunjukkan bahwa metode ini lebih
stabil dan akurat dibandingkan yang lain.
- Metode Convenience Sampling memiliki MoE tertinggi dalam
Non-Probability Sampling, yang menunjukkan adanya tingkat
ketidakpastian yang tinggi dalam hasil estimasi.
- Cluster Sampling juga cukup baik dalam mengurangi
MoE, terutama dalam populasi besar.
- Snowball Sampling memberikan hasil yang lebih baik
dibandingkan Convenience Sampling, tetapi masih lebih tinggi
dibandingkan Stratified Sampling.
6. Ukuran Sampel yang Diperlukan untuk MoE = 5
Untuk mendapatkan Margin of Error sebesar 5, kita dapat menggunakan
rumus:
\[
n = \left( \frac{Z \times \sigma}{MoE} \right)^2
\]
Misalnya untuk Stratified Sampling:
\[
n = \left( \frac{1.96 \times 391.242,90}{5} \right)^2 = 594.899
\]
Jadi, dibutuhkan sekitar 595 responden agar MoE
mencapai 5 dengan tingkat kepercayaan 95%.
7. Kesimpulan
Berdasarkan perhitungan MoE dari berbagai metode sampling, dapat
disimpulkan bahwa metode probability sampling menghasilkan estimasi yang
lebih akurat dibandingkan dengan non-probability sampling. Metode
Stratified Sampling dan Cluster Sampling memberikan Margin of Error yang
paling kecil, menunjukkan bahwa metode ini lebih andal dalam
memperkirakan pengeluaran mahasiswa.
Sebaliknya, metode non-probability sampling cenderung memiliki Margin
of Error yang lebih tinggi, terutama pada Convenience Sampling. Oleh
karena itu, metode ini kurang direkomendasikan untuk penelitian yang
membutuhkan estimasi yang sangat akurat.
8. Rekomendasi
- Gunakan metode Stratified atau Cluster Sampling untuk hasil lebih
akurat.
- Non-Probability Sampling hanya jika keterbatasan waktu dan sumber
daya menjadi kendala.
- Jika ingin MoE sangat kecil, jumlah sampel harus lebih besar.
LS0tICANCnRpdGxlOiAiU0FNUExJTkcgJiBTVVJWRVkgVEVDSE5JUVVFUyIgIA0Kc3VidGl0bGU6ICJMYXBvcmFuIFBlcmJhbmRpbmdhbiBNYXJnaW4gT2YgRXJyb3IgcGFkYSBQcm9iYWJpbGl0eSBTYW1wbGluZyBkYW4gTm9uLVByb2JhYmlsaXR5IFNhbXBsaW5nIiAgDQphdXRob3I6ICJEYWRhbiBSYW1kYW4gSGlkYXlhdCAoNTIyNDAwMjgpIiAgDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiICANCm91dHB1dDogIA0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjogICANCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZSAgDQogICAgdGh1bWJuYWlsczogdHJ1ZSAgDQogICAgbGlnaHRib3g6IHRydWUgIA0KICAgIGdhbGxlcnk6IHRydWUgIA0KICAgIGxpYl9kaXI6IGxpYnMgIA0KICAgIGRmX3ByaW50OiAicGFnZWQiICANCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93IiAgDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZSAgDQogICAgY3NzOiAic3R5bGUuY3NzIiAgDQotLS0gIA0KDQo8aW1nIHNyYz0iRk9UTyBURVJCQVJVXzExem9uLmpwZyIgd2lkdGg9IjkwMCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IGF1dG87IiBhbHQ9IiI+DQoNCg0KDQojIDEuIFBlbmRhaHVsdWFuDQojIyAxLjEgVHVqdWFuDQoNCkxhcG9yYW4gaW5pIGJlcnR1anVhbiB1bnR1ayBtZW5nYW5hbGlzaXMgZGFuIG1lbWJhbmRpbmdrYW4gTWFyZ2luIG9mIEVycm9yIChNb0UpIGFudGFyYSBtZXRvZGUgUHJvYmFiaWxpdHkgU2FtcGxpbmcgZGFuIE5vbi1Qcm9iYWJpbGl0eSBTYW1wbGluZyBkYWxhbSBtZW1wZXJraXJha2FuIHBlbmdlbHVhcmFuIG1ha2FuYW4gYnVsYW5hbiBtYWhhc2lzd2EuIFBlcmJhbmRpbmdhbiBpbmkgZGloYXJhcGthbiBkYXBhdCBtZW1iZXJpa2FuIHdhd2FzYW4gbWVuZ2VuYWkgZWZla3Rpdml0YXMgbWFzaW5nLW1hc2luZyBtZXRvZGUgZGFsYW0gbWVuZ2hhc2lsa2FuIGVzdGltYXNpIHlhbmcgbGViaWggYWt1cmF0Lg0KDQpBZGFwdW4gdHVqdWFuIGxlYmloIHNwZXNpZmlrIGRhcmkgcGVuZWxpdGlhbiBpbmkgYWRhbGFoIHNlYmFnYWkgYmVyaWt1dDoNCg0KLSBNZW5lbnR1a2FuIGJlc2FybnlhIE1hcmdpbiBvZiBFcnJvciAoTW9FKSB5YW5nIGRpaGFzaWxrYW4gZGFyaSBQcm9iYWJpbGl0eSBTYW1wbGluZy4NCg0KLSBNZW5lbnR1a2FuIGJlc2FybnlhIE1hcmdpbiBvZiBFcnJvciAoTW9FKSB5YW5nIGRpaGFzaWxrYW4gZGFyaSBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcuDQoNCi0gTWVtYmFuZGluZ2thbiBoYXNpbCBrZWR1YSBtZXRvZGUgZGFuIG1lbmlsYWkgdGluZ2thdCBha3VyYXNpbnlhIGRhbGFtIG1lbXBlcmtpcmFrYW4gcGVuZ2VsdWFyYW4gbWFrYW5hbiBidWxhbmFuIG1haGFzaXN3YS4NCg0KLSBNZW1iZXJpa2FuIHJla29tZW5kYXNpIG1ldG9kZSBzYW1wbGluZyB5YW5nIGxlYmloIHNlc3VhaSB1bnR1ayBwZW5lbGl0aWFuIHNlamVuaXMgZGkgbWFzYSBtZW5kYXRhbmcuDQoNCiMjIDEuMiBQZW50aW5nbnlhIE1lbmdoaXR1bmcgTW9FIERhbGFtIFBlbmdhbWJpbGFuIFNhbXBlbA0KDQoqTWFyZ2luIG9mIEVycm9yIChNb0UpKiBtZXJ1cGFrYW4gaW5kaWthdG9yIHN0YXRpc3RpayB5YW5nIG1lbnVuanVra2FuIHNlYmVyYXBhIGJlc2FyIGhhc2lsIGVzdGltYXNpIGRhcmkgc2FtcGVsIGRhcGF0IG1lbnlpbXBhbmcgZGFyaSBuaWxhaSBzZWJlbmFybnlhIGRhbGFtIHBvcHVsYXNpLiBNb0UgZGlueWF0YWthbiBkYWxhbSBiZW50dWsgcGVyc2VudGFzZSBkYW4gZGlwZW5nYXJ1aGkgb2xlaCBiZXJiYWdhaSBmYWt0b3IsIHNlcGVydGkgdWt1cmFuIHNhbXBlbCwgdmFyaWFzaSBkYWxhbSBwb3B1bGFzaSwgc2VydGEgbWV0b2RlIHBlbmdhbWJpbGFuIHNhbXBlbCB5YW5nIGRpZ3VuYWthbi4NCg0KRGFsYW0gcGVuZ2FtYmlsYW4gc2FtcGVsLCBNb0UgbWVuamFkaSBrcnVzaWFsIGthcmVuYToNCg0KMS4gKk1lbmVudHVrYW4gQWt1cmFzaSBFc3RpbWFzaSoNCg0KLSBTZW1ha2luIGtlY2lsIE1hcmdpbiBvZiBFcnJvciwgc2VtYWtpbiBkZWthdCBoYXNpbCBlc3RpbWFzaSB0ZXJoYWRhcCBuaWxhaSBzZWJlbmFybnlhIGRhbGFtIHBvcHVsYXNpLg0KDQotIE1vRSB5YW5nIGJlc2FyIG1lbnVuanVra2FuIGJhaHdhIGhhc2lsIGVzdGltYXNpIGRhcmkgc2FtcGVsIG1lbWlsaWtpIGtlbXVuZ2tpbmFuIHBlbnlpbXBhbmdhbiB5YW5nIGxlYmloIGJlc2FyIGRhcmkgcG9wdWxhc2kgc2VzdW5nZ3VobnlhLg0KDQoyLiAqTWVtYmFudHUgRGFsYW0gUGVuZ2FtYmlsYW4gS2VwdXR1c2FuKg0KDQotIERhbGFtIHBlbmVsaXRpYW4sIHRlcnV0YW1hIHlhbmcgYmVya2FpdGFuIGRlbmdhbiBrZWJpamFrYW4gYXRhdSBiaXNuaXMsIG1lbWFoYW1pIGJhdGFzIGtldGlkYWtwYXN0aWFuIHNhbmdhdCBwZW50aW5nIGFnYXIga2VwdXR1c2FuIHlhbmcgZGlidWF0IGxlYmloIGluZm9ybWF0aWYgZGFuIHRlcGF0Lg0KDQotIENvbnRvaG55YSwgamlrYSB1bml2ZXJzaXRhcyBpbmdpbiBtZW5lbnR1a2FuIGtlYmlqYWthbiBzdWJzaWRpIG1ha2FuYW4gYmFnaSBtYWhhc2lzd2EsIHBlcmhpdHVuZ2FuIE1vRSB5YW5nIGFrdXJhdCBkYXBhdCBtZW1iYW50dSBtZW1hc3Rpa2FuIGJhaHdhIGVzdGltYXNpIHBlbmdlbHVhcmFuIG1ha2FuYW4gbWFoYXNpc3dhIGN1a3VwIGRhcGF0IGRpYW5kYWxrYW4uDQoNCjMuICpNZW1iZWRha2FuIEt1YWxpdGFzIE1ldG9kZSBTYW1wbGluZyoNCg0KLSBQcm9iYWJpbGl0eSBTYW1wbGluZyB1bXVtbnlhIG1lbWlsaWtpIE1vRSB5YW5nIGxlYmloIGtlY2lsIGRpYmFuZGluZ2thbiBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcga2FyZW5hIHNldGlhcCBlbGVtZW4gZGFsYW0gcG9wdWxhc2kgbWVtaWxpa2kgcHJvYmFiaWxpdGFzIHlhbmcgZGlrZXRhaHVpIHVudHVrIHRlcnBpbGloLCBzZWhpbmdnYSBoYXNpbG55YSBsZWJpaCByZXByZXNlbnRhdGlmLg0KDQotIE5vbi1Qcm9iYWJpbGl0eSBTYW1wbGluZyBzZXJpbmcga2FsaSBtZW1pbGlraSBNb0UgeWFuZyBsZWJpaCBiZXNhciBrYXJlbmEga2V0ZXJiYXRhc2FuIGRhbGFtIHBlbmdhY2FrYW4sIHlhbmcgZGFwYXQgbWVueWViYWJrYW4gYmlhcyBkYWxhbSBzYW1wZWwuDQoNCkRlbmdhbiBtZW1haGFtaSBNYXJnaW4gb2YgRXJyb3IgZGFuIHBlbnRpbmdueWEgZGFsYW0gcGVuZ2FtYmlsYW4gc2FtcGVsLCBwZW5lbGl0aWFuIGluaSBha2FuIG1lbmdldmFsdWFzaSBkYW4gbWVtYmFuZGluZ2thbiBtZXRvZGUgUHJvYmFiaWxpdHkgU2FtcGxpbmcgZGFuIE5vbi1Qcm9iYWJpbGl0eSBTYW1wbGluZyB1bnR1ayBtZW5lbnR1a2FuIG1ldG9kZSBtYW5hIHlhbmcgbGViaWggb3B0aW1hbCBkYWxhbSBtZW1wZXJraXJha2FuIHBlbmdlbHVhcmFuIG1ha2FuYW4gYnVsYW5hbiBtYWhhc2lzd2EuDQoNCiMgMi4gTWV0b2RlIFBlbmdhbWJpbGFuIFNhbXBsaW5nDQoNCiMjIDIuMSBQcm9iYWJpbGl0eSBTYW1wbGluZw0KDQoxLiAqKlNpbXBsZSBSYW5kb20gU2FtcGxpbmcgKFNSUykqKjogTWVtaWxpaCBzYW1wZWwgc2VjYXJhIGFjYWsgZGFyaSBwb3B1bGFzaSB0YW5wYSBtZW1wZXJ0aW1iYW5na2FuIGthcmFrdGVyaXN0aWsgdGVydGVudHUsIHNlaGluZ2dhIHNldGlhcCBpbmRpdmlkdSBtZW1pbGlraSBwZWx1YW5nIHlhbmcgc2FtYSB1bnR1ayB0ZXJwaWxpaC4NCiAgIA0KICAgfCBJRCBNYWhhc2lzd2EgfCBKZW5pcyBLZWxhbWluIHwgVXNpYSB8IEZha3VsdGFzIHwgUGVuZ2VsdWFyYW4gTWFrYW5hbiBCdWxhbmFuIChScCkgfA0KICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCiAgIHwgMTAyICAgICAgICAgfCBMYWtpLWxha2kgICAgfCAyMSAgIHwgRWtvbm9taSAgfCAxLjIwMC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICB8IDIwNSAgICAgICAgIHwgUGVyZW1wdWFuICAgIHwgMjIgICB8IFRla25payAgIHwgMS41MDAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgfCAzMTAgICAgICAgICB8IExha2ktbGFraSAgICB8IDIzICAgfCBIdWt1bSAgICB8IDEuMjUwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgNDE1ICAgICAgICAgfCBQZXJlbXB1YW4gICAgfCAyMSAgIHwgS2Vkb2t0ZXJhbiB8IDEuNjAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCg0KMi4gKipTdHJhdGlmaWVkIFNhbXBsaW5nKio6IE1lbWJhZ2kgcG9wdWxhc2kga2UgZGFsYW0ga2Vsb21wb2sgKHN0cmF0YSkgYmVyZGFzYXJrYW4gZmFrdWx0YXMgZGFuIG1lbmdhbWJpbCBzYW1wZWwgc2VjYXJhIHByb3BvcnNpb25hbCBkYXJpIHNldGlhcCBrZWxvbXBvayB1bnR1ayBtZW1hc3Rpa2FuIGtldGVyd2FraWxhbiB5YW5nIHNlaW1iYW5nLg0KICAgDQogICB8IFN0cmF0YSAgICAgICAgIHwgSUQgTWFoYXNpc3dhIHwgSmVuaXMgS2VsYW1pbiB8IFVzaWEgfCBGYWt1bHRhcyB8IFBlbmdlbHVhcmFuIE1ha2FuYW4gQnVsYW5hbiAoUnApIHwNCiAgIHwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KICAgfCBGYWt1bHRhcyBFa29ub21pIHwgMzA0ICAgICAgICAgfCBQZXJlbXB1YW4gICAgfCAyMyAgIHwgRWtvbm9taSAgfCAxLjMwMC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICB8IEZha3VsdGFzIFRla25payAgfCA0MTAgICAgICAgICB8IExha2ktbGFraSAgICB8IDIyICAgfCBUZWtuaWsgICB8IDEuNDAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgRmFrdWx0YXMgSHVrdW0gICB8IDUyMCAgICAgICAgIHwgUGVyZW1wdWFuICAgIHwgMjEgICB8IEh1a3VtICAgIHwgMS40NTAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KDQozLiAqKlN5c3RlbWF0aWMgU2FtcGxpbmcqKjogTWVtaWxpaCBzZXRpYXAgc2lzd2Ega2UtayBkYXJpIGRhZnRhciB5YW5nIGRpdXJ1dGthbiBiZXJkYXNhcmthbiBub21vciBJRCBtYWhhc2lzd2EgdW50dWsgbWVtYXN0aWthbiBwZW1lcmF0YWFuIGRhbGFtIHBlbmdhbWJpbGFuIHNhbXBlbC4NCiAgIA0KICAgfCBJRCBNYWhhc2lzd2EgfCBKZW5pcyBLZWxhbWluIHwgVXNpYSB8IEZha3VsdGFzICAgIHwgUGVuZ2VsdWFyYW4gTWFrYW5hbiBCdWxhbmFuIChScCkgfA0KICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KICAgfCAxNTAgICAgICAgICB8IFBlcmVtcHVhbiAgICB8IDIxICAgfCBLZWRva3RlcmFuIHwgMS44MDAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgfCAzMDAgICAgICAgICB8IExha2ktbGFraSAgICB8IDIzICAgfCBIdWt1bSAgICAgIHwgMS42MDAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgfCA0NTAgICAgICAgICB8IFBlcmVtcHVhbiAgICB8IDIyICAgfCBFa29ub21pICAgIHwgMS41MDAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KDQo0LiAqKkNsdXN0ZXIgU2FtcGxpbmcqKjogTWVtaWxpaCBiZWJlcmFwYSBmYWt1bHRhcyBzZWNhcmEgYWNhayBkYW4gbWVuc3VydmVpIHNlbHVydWggbWFoYXNpc3dhIGRhbGFtIGZha3VsdGFzIHlhbmcgdGVycGlsaWggdW50dWsgbWVuZ3VyYW5naSBiaWF5YSBkYW4gd2FrdHUuDQogICANCiAgIHwgSUQgTWFoYXNpc3dhIHwgRmFrdWx0YXMgICAgICAgfCBUYWh1biBBa2FkZW1payB8IFBlbmdlbHVhcmFuIE1ha2FuYW4gQnVsYW5hbiAoUnApIHwNCiAgIHwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCiAgIHwgNTAxICAgICAgICAgfCBFa29ub21pICAgICAgICB8IDIwMjMgICAgICAgICAgfCAxLjI1MC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICB8IDUwMiAgICAgICAgIHwgRWtvbm9taSAgICAgICAgfCAyMDI0ICAgICAgICAgIHwgMS4zNTAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgfCA2MDEgICAgICAgICB8IFRla25payAgICAgICAgIHwgMjAyMiAgICAgICAgICB8IDEuNTAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgNjAyICAgICAgICAgfCBUZWtuaWsgICAgICAgICB8IDIwMjMgICAgICAgICAgfCAxLjYwMC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQoNCjUuICoqTXVsdGktU3RhZ2UgU2FtcGxpbmcqKjogTWVuZ2d1bmFrYW4ga29tYmluYXNpIGJlYmVyYXBhIHRla25payBzYW1wbGluZywgeWFpdHUgbWVtaWxpaCBiZWJlcmFwYSBmYWt1bHRhcyBzZWNhcmEgYWNhayBsYWx1IG1lbWlsaWggYmViZXJhcGEgbWFoYXNpc3dhIHNlY2FyYSBhY2FrIGRhcmkgZmFrdWx0YXMgdGVyc2VidXQuDQogICANCiAgIHwgSUQgTWFoYXNpc3dhIHwgRmFrdWx0YXMgfCBUYWh1biBBa2FkZW1payB8IFBlbmdlbHVhcmFuIE1ha2FuYW4gQnVsYW5hbiAoUnApIHwNCiAgIHwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCiAgIHwgNzAxICAgICAgICAgfCBUZWtuaWsgIHwgMjAyMyAgICAgICAgICB8IDEuNDUwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgNzAyICAgICAgICAgfCBFa29ub21pIHwgMjAyMSAgICAgICAgICB8IDEuMzIwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgNzAzICAgICAgICAgfCBIdWt1bSAgIHwgMjAyNCAgICAgICAgICB8IDEuMzgwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgNzA0ICAgICAgICAgfCBLZWRva3RlcmFuIHwgMjAyMiAgICAgICAgfCAxLjUwMC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQoNCiMjIDIuMiBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcNCg0KMS4gKipDb252ZW5pZW5jZSBTYW1wbGluZyoqOiBNZW1pbGloIHJlc3BvbmRlbiB5YW5nIG11ZGFoIGRpYWtzZXMgc2VwZXJ0aSBtYWhhc2lzd2EgeWFuZyBiZXJhZGEgZGkgc2VraXRhciBrYW1wdXMgYXRhdSBtZW1pbGlraSBodWJ1bmdhbiBkZW5nYW4gcGVuZWxpdGkuDQogICANCiAgIHwgSUQgTWFoYXNpc3dhIHwgSmVuaXMgS2VsYW1pbiB8IFVzaWEgfCBGYWt1bHRhcyAgICB8IFBlbmdlbHVhcmFuIE1ha2FuYW4gQnVsYW5hbiAoUnApIHwNCiAgIHwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCiAgIHwgODAxICAgICAgICAgfCBMYWtpLWxha2kgICAgfCAyMCAgIHwgS2Vkb2t0ZXJhbiB8IDEuNzAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgODAyICAgICAgICAgfCBQZXJlbXB1YW4gICAgfCAyMSAgIHwgVGVrbmlrICAgICB8IDEuNDAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgODAzICAgICAgICAgfCBMYWtpLWxha2kgICAgfCAyMiAgIHwgRWtvbm9taSAgICB8IDEuNjAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCg0KMi4gKipQdXJwb3NpdmUgU2FtcGxpbmcqKjogTWVtaWxpaCByZXNwb25kZW4gYmVyZGFzYXJrYW4ga3JpdGVyaWEgdGVydGVudHUgc2VwZXJ0aSBtYWhhc2lzd2EgZGVuZ2FuIHBlbmdlbHVhcmFuIG1ha2FuYW4gbGViaWggZGFyaSBScCAxLjUwMC4wMDAuDQogICANCiAgIHwgS3JpdGVyaWEgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSUQgTWFoYXNpc3dhIHwgSmVuaXMgS2VsYW1pbiB8IFVzaWEgfCBGYWt1bHRhcyB8IFBlbmdlbHVhcmFuIE1ha2FuYW4gQnVsYW5hbiAoUnApIHwNCiAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCiAgIHwgUGVuZ2VsdWFyYW4gPiBScCAxLjUwMC4wMDAgICAgICAgfCAxMDAzICAgICAgICB8IExha2ktbGFraSAgICB8IDIzICAgfCBUZWtuaWsgICB8IDEuODAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCiAgIHwgUGVuZ2VsdWFyYW4gPiBScCAxLjUwMC4wMDAgICAgICAgfCAxMDA0ICAgICAgICB8IFBlcmVtcHVhbiAgICB8IDIyICAgfCBIdWt1bSAgICB8IDEuNjAwLjAwMCAgICAgICAgICAgICAgICAgICAgICAgIHwNCg0KMy4gKipRdW90YSBTYW1wbGluZyoqOiBNZW1pbGloIHJlc3BvbmRlbiBiZXJkYXNhcmthbiBrdW90YSB0ZXJ0ZW50dSBkYXJpIHN1YmtlbG9tcG9rLCBtaXNhbG55YSBtZW1iYWdpIGp1bWxhaCBzYW1wZWwgZGVuZ2FuIHBlcnNlbnRhc2UgeWFuZyBzYW1hIGFudGFyYSBmYWt1bHRhcyBUZWtuaWsgZGFuIEVrb25vbWkuDQogICANCiAgIHwgS3VvdGEgICAgICAgICAgICAgICAgfCBJRCBNYWhhc2lzd2EgfCBKZW5pcyBLZWxhbWluIHwgVXNpYSB8IEZha3VsdGFzIHwgUGVuZ2VsdWFyYW4gTWFrYW5hbiBCdWxhbmFuIChScCkgfA0KICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQogICB8IDUwJSBUZWtuaWssIDUwJSBFa29ub21pIHwgMTIwNSAgICAgICAgfCBMYWtpLWxha2kgICAgfCAyMSAgIHwgVGVrbmlrICAgfCAxLjQ1MC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICB8IDUwJSBUZWtuaWssIDUwJSBFa29ub21pIHwgMTMwNiAgICAgICAgfCBQZXJlbXB1YW4gICAgfCAyMyAgIHwgRWtvbm9taSAgfCAxLjM4MC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQoNCjQuICoqU25vd2JhbGwgU2FtcGxpbmcqKjogTWVtaWxpaCByZXNwb25kZW4gYmVyZGFzYXJrYW4gcmVmZXJlbnNpIGRhcmkgcGVzZXJ0YSBzZWJlbHVtbnlhLCBzZXBlcnRpIG1haGFzaXN3YSB5YW5nIG1lcmVrb21lbmRhc2lrYW4gdGVtYW4gbWVyZWthIHVudHVrIGJlcnBhcnRpc2lwYXNpIGRhbGFtIHN1cnZlaS4NCiAgIA0KICAgfCBJRCBNYWhhc2lzd2EgfCBKZW5pcyBLZWxhbWluIHwgVXNpYSB8IEZha3VsdGFzIHwgUGVuZ2VsdWFyYW4gTWFrYW5hbiBCdWxhbmFuIChScCkgfA0KICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18LS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCiAgIHwgMTQwNyAgICAgICAgfCBMYWtpLWxha2kgICAgfCAyMiAgIHwgRWtvbm9taSAgfCAxLjQyMC4wMDAgICAgICAgICAgICAgICAgICAgICAgICB8DQogICB8IDE0MDggICAgICAgIHwgUGVyZW1wdWFuICAgIHwgMjEgICB8IFRla25payAgIHwgMS41MDAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgfCAxNDA5ICAgICAgICB8IExha2ktbGFraSAgICB8IDIzICAgfCBLZWRva3RlcmFuIHwgMS42MDAuMDAwICAgICAgICAgICAgICAgICAgICAgICAgfA0KICAgDQoNCiMgMy4gUGVyaGl0dW5nYW4gTW9FIHVudHVrIFBlbmdhbWJpbGFuIFNhbXBlbCBQcm9iYWJpbGl0YXMNCg0KTWFyZ2luIG9mIEVycm9yIChNb0UpIGFkYWxhaCBrb25zZXAgc3RhdGlzdGlrIHlhbmcgbWVuZ3VrdXIga2V0aWRha3Bhc3RpYW4gZGFsYW0gaGFzaWwgc3VydmVpIGF0YXUgZXN0aW1hc2kgYmVyYmFzaXMgc2FtcGVsLiBLb25zZXAgaW5pIG1lbWJlcmlrYW4gcmVudGFuZyBkaSBtYW5hIHBhcmFtZXRlciBwb3B1bGFzaSBzZWJlbmFybnlhIGNlbmRlcnVuZyBiZXJhZGEuDQoNClNlY2FyYSB1bXVtLCBNb0UgZGloaXR1bmcgZGVuZ2FuIHJ1bXVzOg0KDQo+ICQkDQpNb0UgPSBaIFx0aW1lcyBcZnJhY3tcc2lnbWF9e1xzcXJ0e259fQ0KPiAkJA0KDQpEaW1hbmE6DQotIFwoIFogPSAxLjk2IFwpICh1bnR1ayB0aW5na2F0IGtlcGVyY2F5YWFuIDk1JSkNCg0KLSBcKCBuIFwpID0ganVtbGFoIHNhbXBlbA0KDQotIFwoIFxzaWdtYSBcKSA9IFNpbXBhbmdhbiBiYWt1IHNhbXBlbA0KDQpTaW1wYW5nYW4gYmFrdSAoXCggXHNpZ21hIFwpKSBkaWhpdHVuZyBkZW5nYW4gcnVtdXM6DQoNCj4gJCQNClxzaWdtYSA9IFxzcXJ0e1xmcmFje1xzdW0gKFhfaSAtIFxiYXJ7WH0pXjJ9e24gLSAxfX0NCj4gJCQNCg0KRGltYW5hOg0KLSBcKCBYX2kgXCkgPSBQZW5nZWx1YXJhbiBtYWthbmFuIG1haGFzaXN3YSBrZS1cKCBpIFwpDQoNCi0gXCggXGJhcntYfSBcKSA9IFJhdGEtcmF0YSBwZW5nZWx1YXJhbiBtYWthbmFuIG1haGFzaXN3YQ0KDQojIyAzLjEgU2ltcGxlIFJhbmRvbSBTYW1wbGluZyAoU1JTKQ0KDQpEaWtldGFodWk6DQoNCi0gXCggWiA9IDEuOTYgXCkNCg0KLSBcKCBuID0gMjc3IFwpDQoNCi0gXCggXHNpZ21hID0gNDIxLjIwNSw1OSBcKQ0KDQpNYWthOg0KDQo+ICQkDQpNb0UgPSAxLjk2IFx0aW1lcyBcZnJhY3s0MjEuMjA1LDU5fXtcc3FydHsyNzd9fQ0KPiAkJA0KDQo+ICQkDQpNb0UgPSA0OS42MDIsMzYNCj4gJCQNCg0KIyMgMy4yIFN0cmF0aWZpZWQgU2FtcGxpbmcNCg0KRGlrZXRhaHVpOg0KDQotIFwoIFogPSAxLjk2IFwpDQoNCi0gXCggbiA9IDI1MCBcKQ0KDQotIFwoIFxzaWdtYSA9IDM5MS4yNDIsOTAgXCkNCg0KTWFrYToNCg0KPiAkJA0KTW9FID0gMS45NiBcdGltZXMgXGZyYWN7MzkxLjI0Miw5MH17XHNxcnR7MjUwfX0NCj4gJCQNCg0KPiAkJA0KTW9FID0gNDguNDU5LDcyDQo+ICQkDQoNCiMjIDMuMyBDbHVzdGVyIFNhbXBsaW5nDQoNCkRpa2V0YWh1aToNCg0KLSBcKCBaID0gMS45NiBcKQ0KDQotIFwoIG4gPSAzMDAgXCkNCg0KLSBcKCBcc2lnbWEgPSAzNzUuMTE0LDc4IFwpDQoNCk1ha2E6DQoNCj4gJCQNCk1vRSA9IDEuOTYgXHRpbWVzIFxmcmFjezM3NS4xMTQsNzh9e1xzcXJ0ezMwMH19DQo+ICQkDQoNCj4gJCQNCk1vRSA9IDQzLjI2MywxNQ0KPiAkJA0KDQojIyAzLjQgU3lzdGVtYXRpYyBTYW1wbGluZw0KDQpEaWtldGFodWk6DQoNCi0gXCggWiA9IDEuOTYgXCkNCg0KLSBcKCBuID0gMjgwIFwpDQoNCi0gXCggXHNpZ21hID0gNDA1LjMxMiw0MCBcKQ0KDQpNYWthOg0KDQo+ICQkDQpNb0UgPSAxLjk2IFx0aW1lcyBcZnJhY3s0MDUuMzEyLDQwfXtcc3FydHsyODB9fQ0KPiAkJA0KDQo+ICQkDQpNb0UgPSA0Ny40ODUsOTMNCj4gJCQNCg0KIyMgMy41IE11bHRpLVN0YWdlIFNhbXBsaW5nDQoNCkRpa2V0YWh1aToNCg0KLSBcKCBaID0gMS45NiBcKQ0KDQotIFwoIG4gPSAyNjAgXCkNCg0KLSBcKCBcc2lnbWEgPSAzOTguMTAyLDc1IFwpDQoNCk1ha2E6DQoNCj4gJCQNCk1vRSA9IDEuOTYgXHRpbWVzIFxmcmFjezM5OC4xMDIsNzV9e1xzcXJ0ezI2MH19DQo+ICQkDQoNCj4gJCQNCk1vRSA9IDQ4LjM3Nyw2NA0KPiAkJA0KDQojIDQuIFBlcmhpdHVuZ2FuIE1vRSB1bnR1ayBQZW5nYW1iaWxhbiBTYW1wZWwgTm9uLVByb2JhYmlsaXRhcw0KDQojIyA0LjEgQ29udmVuaWVuY2UgU2FtcGxpbmcNCg0KRGlrZXRhaHVpOg0KDQotIFwoIFogPSAxLjk2IFwpDQoNCi0gXCggbiA9IDIyMyBcKQ0KDQotIFwoIFxzaWdtYSA9IDQyNS4wOTAsMTQgXCkNCg0KTWFrYToNCg0KPiAkJA0KTW9FID0gMS45NiBcdGltZXMgXGZyYWN7NDI1LjA5MCwxNH17XHNxcnR7MjIzfX0NCj4gJCQNCg0KPiAkJA0KTW9FID0gNTUuNzkyLDYxDQo+ICQkDQoNCiMjIDQuMiBTbm93YmFsbCBTYW1wbGluZw0KDQpEaWtldGFodWk6DQoNCi0gXCggWiA9IDEuOTYgXCkNCg0KLSBcKCBuID0gMjAwIFwpDQoNCi0gXCggXHNpZ21hID0gNDEyLjMxMiw0NyBcKQ0KDQpNYWthOg0KDQo+ICQkDQpNb0UgPSAxLjk2IFx0aW1lcyBcZnJhY3s0MTIuMzEyLDQ3fXtcc3FydHsyMDB9fQ0KPiAkJA0KDQo+ICQkDQpNb0UgPSA1Ny4xMDIsODQNCj4gJCQNCg0KIyMgNC4zIFB1cnBvc2l2ZSBTYW1wbGluZw0KDQpEaWtldGFodWk6DQoNCi0gXCggWiA9IDEuOTYgXCkNCg0KLSBcKCBuID0gMjEwIFwpDQoNCi0gXCggXHNpZ21hID0gMzk4LjU0MSwyMiBcKQ0KDQpNYWthOg0KDQo+ICQkDQpNb0UgPSAxLjk2IFx0aW1lcyBcZnJhY3szOTguNTQxLDIyfXtcc3FydHsyMTB9fQ0KPiAkJA0KDQo+ICQkDQpNb0UgPSA1My43MjMsMTANCj4gJCQNCg0KIyMgNC40IFF1b3RhIFNhbXBsaW5nDQoNCkRpa2V0YWh1aToNCg0KLSBcKCBaID0gMS45NiBcKQ0KDQotIFwoIG4gPSAyMzAgXCkNCg0KLSBcKCBcc2lnbWEgPSAzODkuMjE0LDc4IFwpDQoNCk1ha2E6DQoNCj4gJCQNCk1vRSA9IDEuOTYgXHRpbWVzIFxmcmFjezM4OS4yMTQsNzh9e1xzcXJ0ezIzMH19DQo+ICQkDQoNCj4gJCQNCk1vRSA9IDUwLjIwOCw1Ng0KPiAkJA0KDQojIDUuIFBlcmJhbmRpbmdhbiBTZXRpYXAgTWV0b2RlDQoNCkRhcmkgaGFzaWwgcGVyaGl0dW5nYW4gZGkgYXRhcywgZGFwYXQgZGlzaW1wdWxrYW4gYmFod2EgbWV0b2RlIHByb2JhYmlsaXR5IHNhbXBsaW5nIG1lbWlsaWtpIE1hcmdpbiBvZiBFcnJvciB5YW5nIGxlYmloIHJlbmRhaCBkaWJhbmRpbmdrYW4gZGVuZ2FuIG1ldG9kZSBub24tcHJvYmFiaWxpdHkgc2FtcGxpbmcuIEJlcmlrdXQgYWRhbGFoIHBlcmJhbmRpbmdhbiByaW5jaSBncmFmaWsgTWFyZ2luIG9mIEVycm9yIChNb0UpIGRhcmkgYmVyYmFnYWkgbWV0b2RlIHNhbXBsaW5nIDoNCg0KVmlzdWFsaXNhc2kgUGVyYmFuZGluZ2FuIE1vRQ0KDQpgYGB7ciwgbWFzc2FnZT1GQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0KbGlicmFyeShnZ3Bsb3QyKQ0KDQojIERhdGEgTWFyZ2luIG9mIEVycm9yIChNb0UpDQptZXRob2RzIDwtIGMoIlNpbXBsZSBSYW5kb20iLCAiU3RyYXRpZmllZCIsICJDbHVzdGVyIiwgIlN5c3RlbWF0aWMiLCAiTXVsdGktU3RhZ2UiLCANCiAgICAgICAgICAgICAiQ29udmVuaWVuY2UiLCAiU25vd2JhbGwiLCAiUHVycG9zaXZlIiwgIlF1b3RhIikNCm1vZV92YWx1ZXMgPC0gYyg0OS42MDIzNiwgNDguNDU5NzIsIDQzLjI2MzE1LCA0Ny40ODU5MywgNDguMzc3NjQsIA0KICAgICAgICAgICAgICAgIDU1Ljc5MjYxLCA1Ny4xMDI4NCwgNTMuNzIzMTAsIDUwLjIwODU2KQ0KDQojIFdhcm5hIHVudHVrIFByb2JhYmlsaXR5IHZzIE5vbi1Qcm9iYWJpbGl0eSBTYW1wbGluZw0KY29sb3JzIDwtIGMocmVwKCJibHVlIiwgNSksIHJlcCgicmVkIiwgNCkpDQoNCmRhdGEgPC0gZGF0YS5mcmFtZShNZXRob2QgPSBmYWN0b3IobWV0aG9kcywgbGV2ZWxzID0gcmV2KG1ldGhvZHMpKSwgTW9FID0gbW9lX3ZhbHVlcywgQ29sb3IgPSBjb2xvcnMpDQoNCiMgTWVtYnVhdCBncmFmaWsgYmF0YW5nDQpnZ3Bsb3QoZGF0YSwgYWVzKHggPSBNb0UsIHkgPSBNZXRob2QsIGZpbGwgPSBDb2xvcikpICsNCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIsIGNvbG9yID0gImJsYWNrIikgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKCJibHVlIiA9ICJibHVlIiwgInJlZCIgPSAicmVkIikpICsNCiAgbGFicyh0aXRsZSA9ICJQZXJiYW5kaW5nYW4gTWFyZ2luIG9mIEVycm9yIChNb0UpIHBhZGEgQmVyYmFnYWkgTWV0b2RlIFNhbXBsaW5nIiwgDQogICAgICAgeCA9ICJNYXJnaW4gb2YgRXJyb3IgKE1vRSkiLCB5ID0gIk1ldG9kZSBTYW1wbGluZyIpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IHJvdW5kKE1vRSwgMikpLCBoanVzdCA9IC0wLjIsIHNpemUgPSA0KSArDQogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCg0KDQpgYGANCg0KLSAqKk1ldG9kZSBTdHJhdGlmaWVkIFNhbXBsaW5nIG1lbWlsaWtpIE1vRSB0ZXJlbmRhaCBkYWxhbSBQcm9iYWJpbGl0eSBTYW1wbGluZyoqLCB5YW5nIG1lbnVuanVra2FuIGJhaHdhIG1ldG9kZSBpbmkgbGViaWggc3RhYmlsIGRhbiBha3VyYXQgZGliYW5kaW5na2FuIHlhbmcgbGFpbi4NCi0gKipNZXRvZGUgQ29udmVuaWVuY2UgU2FtcGxpbmcgbWVtaWxpa2kgTW9FIHRlcnRpbmdnaSBkYWxhbSBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcqKiwgeWFuZyBtZW51bmp1a2thbiBhZGFueWEgdGluZ2thdCBrZXRpZGFrcGFzdGlhbiB5YW5nIHRpbmdnaSBkYWxhbSBoYXNpbCBlc3RpbWFzaS4NCi0gKipDbHVzdGVyIFNhbXBsaW5nIGp1Z2EgY3VrdXAgYmFpayBkYWxhbSBtZW5ndXJhbmdpIE1vRSoqLCB0ZXJ1dGFtYSBkYWxhbSBwb3B1bGFzaSBiZXNhci4NCi0gKipTbm93YmFsbCBTYW1wbGluZyBtZW1iZXJpa2FuIGhhc2lsIHlhbmcgbGViaWggYmFpayBkaWJhbmRpbmdrYW4gQ29udmVuaWVuY2UgU2FtcGxpbmcsIHRldGFwaSBtYXNpaCBsZWJpaCB0aW5nZ2kgZGliYW5kaW5na2FuIFN0cmF0aWZpZWQgU2FtcGxpbmcuKioNCg0KDQoNCiMgNi4gVWt1cmFuIFNhbXBlbCB5YW5nIERpcGVybHVrYW4gdW50dWsgTW9FID0gNQ0KDQpVbnR1ayBtZW5kYXBhdGthbiBNYXJnaW4gb2YgRXJyb3Igc2ViZXNhciA1LCBraXRhIGRhcGF0IG1lbmdndW5ha2FuIHJ1bXVzOg0KDQpcWw0KbiA9IFxsZWZ0KCBcZnJhY3taIFx0aW1lcyBcc2lnbWF9e01vRX0gXHJpZ2h0KV4yDQpcXQ0KDQpNaXNhbG55YSB1bnR1ayBTdHJhdGlmaWVkIFNhbXBsaW5nOg0KDQo+ICQkDQpuID0gXGxlZnQoIFxmcmFjezEuOTYgXHRpbWVzIDM5MS4yNDIsOTB9ezV9IFxyaWdodCleMiA9IDU5NC44OTkNCj4gJCQNCg0KSmFkaSwgZGlidXR1aGthbiBzZWtpdGFyICoqNTk1IHJlc3BvbmRlbioqIGFnYXIgTW9FIG1lbmNhcGFpIDUgZGVuZ2FuIHRpbmdrYXQga2VwZXJjYXlhYW4gOTUlLg0KDQojIDcuIEtlc2ltcHVsYW4NCg0KQmVyZGFzYXJrYW4gcGVyaGl0dW5nYW4gTW9FIGRhcmkgYmVyYmFnYWkgbWV0b2RlIHNhbXBsaW5nLCBkYXBhdCBkaXNpbXB1bGthbiBiYWh3YSBtZXRvZGUgcHJvYmFiaWxpdHkgc2FtcGxpbmcgbWVuZ2hhc2lsa2FuIGVzdGltYXNpIHlhbmcgbGViaWggYWt1cmF0IGRpYmFuZGluZ2thbiBkZW5nYW4gbm9uLXByb2JhYmlsaXR5IHNhbXBsaW5nLiBNZXRvZGUgU3RyYXRpZmllZCBTYW1wbGluZyBkYW4gQ2x1c3RlciBTYW1wbGluZyBtZW1iZXJpa2FuIE1hcmdpbiBvZiBFcnJvciB5YW5nIHBhbGluZyBrZWNpbCwgbWVudW5qdWtrYW4gYmFod2EgbWV0b2RlIGluaSBsZWJpaCBhbmRhbCBkYWxhbSBtZW1wZXJraXJha2FuIHBlbmdlbHVhcmFuIG1haGFzaXN3YS4NCg0KU2ViYWxpa255YSwgbWV0b2RlIG5vbi1wcm9iYWJpbGl0eSBzYW1wbGluZyBjZW5kZXJ1bmcgbWVtaWxpa2kgTWFyZ2luIG9mIEVycm9yIHlhbmcgbGViaWggdGluZ2dpLCB0ZXJ1dGFtYSBwYWRhIENvbnZlbmllbmNlIFNhbXBsaW5nLiBPbGVoIGthcmVuYSBpdHUsIG1ldG9kZSBpbmkga3VyYW5nIGRpcmVrb21lbmRhc2lrYW4gdW50dWsgcGVuZWxpdGlhbiB5YW5nIG1lbWJ1dHVoa2FuIGVzdGltYXNpIHlhbmcgc2FuZ2F0IGFrdXJhdC4NCg0KIyA4LiBSZWtvbWVuZGFzaQ0KDQoxLiBHdW5ha2FuIG1ldG9kZSBTdHJhdGlmaWVkIGF0YXUgQ2x1c3RlciBTYW1wbGluZyB1bnR1ayBoYXNpbCBsZWJpaCBha3VyYXQuDQoyLiBOb24tUHJvYmFiaWxpdHkgU2FtcGxpbmcgaGFueWEgamlrYSBrZXRlcmJhdGFzYW4gd2FrdHUgZGFuIHN1bWJlciBkYXlhIG1lbmphZGkga2VuZGFsYS4NCjMuIEppa2EgaW5naW4gTW9FIHNhbmdhdCBrZWNpbCwganVtbGFoIHNhbXBlbCBoYXJ1cyBsZWJpaCBiZXNhci4NCg0KIyA5LiBSZWZlcmVuc2kNCg0KDQpodHRwczovL2Jvb2tkb3duLm9yZy9kc2NpZW5jZWxhYnMvc2FtcGxpbmdfYW5kX3N1cnZleV90ZWNobmlxdWVzL2RvY3MvMDQtTWFyZ2luLW9mLUVycm9yLmh0bWwjY29udmVuaWVuY2Utc2FtcGxpbmcNCg0KaHR0cHM6Ly9yZXNlYXJjaHNjYXBlLmNvbS9ibG9nL3RoZS1teXRoLW9mLW1hcmdpbi1vZi1lcnJvcg0KDQpodHRwczovL2RvdmV0YWlsLmNvbS9zdXJ2ZXlzL21hcmdpbi1vZi1lcnJvci8NCg0KaHR0cHM6Ly93d3cucXVhbHRyaWNzLmNvbS9leHBlcmllbmNlLW1hbmFnZW1lbnQvcmVzZWFyY2gvbWFyZ2luLW9mLWVycm9yLw0KDQpodHRwczovL3BtYy5uY2JpLm5sbS5uaWguZ292L2FydGljbGVzL1BNQzQ4MTc2NDUvDQoNCg0K