1.1 Apa itu Pengambilan Sampel ?
Pengambilan sampel adalah metode dalam statistik untuk memilih
sebagian individu, item, atau pengamatan dari suatu populasi untuk
menentukan karakteristik keseluruhan populasi. Teknik ini digunakan
dalam berbagai bidang seperti penelitian, bisnis, dan kebijakan publik
untuk membuat keputusan yang lebih efisien tanpa harus mengumpulkan data
dari seluruh populasi.
Dalam proses pengambilan sampel, penting untuk memastikan bahwa
sampel yang dipilih cukup besar dan representatif agar dapat mewakili
populasi dengan akurat. Beberapa strategi untuk meningkatkan
representasi sampel meliputi pemilihan sampel secara acak dan penggunaan
beberapa kelompok sampel untuk mengonfirmasi temuan.
Sampel tidak selalu terdiri dari manusia, tetapi juga bisa berupa
objek lain seperti negara, perusahaan, atau spesies hewan. Dengan
menggunakan teknik sampling yang tepat, analisis data dapat dilakukan
lebih efisien tanpa kehilangan akurasi dalam menggambarkan karakteristik
populasi yang lebih besar.
1.2 Populasi vs. Sampel
Dalam statistik, memahami perbedaan antara populasi dan sampel sangat
penting dalam analisis data, inferensi, dan pengambilan keputusan.
Populasi mencakup seluruh elemen yang menjadi objek penelitian,
sementara sampel adalah bagian kecil dari populasi yang dipilih untuk
dianalisis.
1.2.1 Populasi
Populasi (N) adalah seluruh kelompok individu, objek, atau peristiwa
yang menjadi fokus penelitian. Populasi mencakup semua elemen yang
relevan dengan penelitian yang sedang dilakukan.
Contoh Populasi:
- Semua penduduk suatu kota dalam penelitian perilaku pemilih.
- Setiap ponsel pintar yang diproduksi oleh suatu pabrik saat meneliti
tingkat kerusakan.
- Semua mahasiswa di suatu universitas dalam pengukuran nilai
rata-rata ujian.
Jenis-jenis Populasi:
- Populasi Terbatas: Populasi dengan jumlah elemen
tetap, seperti karyawan di sebuah perusahaan.
- Populasi Tak Terbatas: Populasi dengan jumlah
elemen yang tidak dapat dihitung, seperti bakteri dalam cawan
petri.
- Populasi Target: Populasi spesifik yang menjadi
objek penelitian.
- Populasi yang Dapat Diakses: Bagian dari populasi
target yang tersedia untuk penelitian.
1.2.2 Sampel
Sampel (n) adalah bagian dari populasi yang dipilih untuk dianalisis.
Karena meneliti seluruh populasi sering kali tidak memungkinkan akibat
keterbatasan biaya, waktu, dan aksesibilitas, sampel digunakan untuk
membuat estimasi atau kesimpulan tentang populasi.
Contoh Sampel:
- Survei terhadap 1.000 penduduk kota untuk mencerminkan opini
publik.
- Pemeriksaan terhadap 500 ponsel pintar yang dipilih secara acak
untuk menilai tingkat kerusakan.
- Analisis nilai ujian dari 200 mahasiswa yang dipilih secara
acak.
Karakteristik Sampel yang Baik:
- Representatif: Mencerminkan karakteristik populasi
dengan akurat.
- Acak: Dipilih tanpa bias agar hasilnya lebih
objektif.
- Cukup Besar: Memastikan estimasi yang dapat
diandalkan.
- Bias Minimal: Menghindari kesalahan sistematis
dalam pengambilan data.
1.2.3 Perbedaan Utama antara Populasi dan Sampel
Saat melakukan penelitian statistik, penting untuk membedakan antara
populasi dan sampel. Populasi mencakup seluruh elemen yang menjadi objek
studi, sedangkan sampel adalah bagian kecil dari populasi yang dipilih
untuk dianalisis. Memahami perbedaan ini sangat penting untuk
mendapatkan kesimpulan yang akurat dan valid.
Berikut adalah perbedaan utama antara populasi dan sampel:
Definisi |
Seluruh kelompok yang menjadi fokus penelitian |
Bagian yang dipilih dari populasi untuk dianalisis |
Ukuran |
Besar atau tak terbatas |
Lebih kecil dan dapat dikelola |
Notasi |
Menggunakan huruf besar (misalnya, N, µ, σ) |
Menggunakan huruf kecil (misalnya, n, x̄, s) |
Parameter |
Nilai sebenarnya dari populasi (misalnya, rata-rata populasi µ,
standar deviasi populasi σ) |
Estimasi dari parameter populasi (misalnya, rata-rata sampel x̄,
standar deviasi sampel s) |
Biaya & Waktu |
Lebih tinggi |
Lebih rendah |
Ketepatan |
Memberikan informasi yang akurat tentang seluruh populasi |
Memberikan perkiraan dengan margin kesalahan tertentu |
1.3 Mengapa Menggunakan Sampel?
Dalam penelitian, penggunaan sampel menjadi pilihan utama karena
meneliti seluruh populasi sering kali tidak praktis. Beberapa alasan
utama penggunaan sampel meliputi:
Mengurangi pengeluaran dalam pengumpulan, pemrosesan, dan analisis
data dibandingkan dengan meneliti seluruh populasi.
Proses pengumpulan dan analisis data lebih cepat dibandingkan jika
mencakup seluruh populasi.
Memungkinkan penelitian pada populasi yang terlalu besar atau sulit
dijangkau secara keseluruhan.
Dengan teknik pemilihan yang tepat, sampel dapat merepresentasikan
populasi dan memberikan hasil yang valid.
- Mengurangi Kompleksitas Pengelolaan Data
Menyederhanakan analisis dengan jumlah data yang lebih sedikit,
tetapi tetap bermakna.
Beberapa penelitian (misalnya uji coba medis) tidak dapat dilakukan
pada seluruh populasi karena alasan etika.
1.4 Menghindari Bias Sampel
Bias pengambilan sampel terjadi ketika anggota populasi tertentu
secara sistematis dikecualikan atau terwakili secara berlebihan dalam
sampel. Hal ini dapat menghasilkan hasil yang tidak akurat dan tidak
representatif, yang berpotensi mendistorsi kesimpulan serta mengurangi
validitas sebuah studi.
Dalam penelitian, bias adalah kesalahan sistematis yang mempengaruhi
hasil dan dapat terjadi dalam berbagai bentuk:
- Bias Pengukuran (Measurement Bias)
terjadi ketika alat atau metode pengukuran menyebabkan kesalahan yang
konsisten. Misalnya, termometer yang selalu menunjukkan suhu lebih
tinggi dari yang sebenarnya akan memberikan hasil yang keliru.
- Bias Seleksi (Selection Bias)
muncul ketika sampel yang digunakan dalam penelitian tidak mewakili
populasi secara keseluruhan. Contohnya, studi vaksin yang hanya
menggunakan responden pria muda, sehingga hasilnya tidak dapat
digeneralisasi untuk populasi lain seperti wanita atau orang tua.
- Bias Konfirmasi (Confirmation Bias)
terjadi ketika peneliti hanya mempertimbangkan data yang mendukung
hipotesis mereka dan mengabaikan faktor lain yang mungkin mempengaruhi
hasil. Misalnya, studi yang menyimpulkan bahwa pewarna makanan
menyebabkan hiperaktif pada anak-anak tanpa mempertimbangkan kandungan
gula dalam makanan tersebut.
Bias dapat terjadi di berbagai tahap penelitian, mulai dari desain
metode, pengumpulan data, hingga interpretasi hasil. Oleh karena itu,
penting untuk mengidentifikasi dan mengurangi bias agar hasil penelitian
lebih akurat dan dapat diandalkan. Berikut ini beberapa penyebab bias
pengambilan sampel:
Kurangnya Cakupan (Undercoverage Bias) |
Beberapa kelompok dalam populasi tidak dimasukkan dalam kerangka
sampel. |
Gunakan kerangka sampel yang representatif untuk memastikan semua
kelompok tercakup. |
Representasi Berlebih (Overrepresentation Bias) |
Kelompok tertentu memiliki peluang yang jauh lebih tinggi untuk
dipilih, sehingga hasil penelitian menjadi tidak seimbang. |
Gunakan pengambilan sampel berstrata untuk menjaga proporsi yang
seimbang. |
Bias Seleksi Diri (Self-Selection Bias) |
Peserta secara sukarela memilih untuk ikut serta dalam penelitian,
yang dapat menyebabkan sampel tidak mewakili populasi secara
keseluruhan. |
Gunakan undangan acak dan pertimbangkan insentif untuk menarik
kelompok responden yang lebih beragam. |
Meminimalkan bias pengambilan sampel sangat penting untuk
menghasilkan temuan penelitian yang valid, andal, dan dapat
digeneralisasi. Dengan memastikan metode pengambilan sampel yang baik
dan menerapkan teknik pemilihan acak, peneliti dapat meningkatkan
akurasi serta kredibilitas penelitian mereka.
1.5 Pengacakan dalam Pengambilan Sampel
Pengacakan adalah proses yang memastikan setiap anggota populasi
memiliki peluang yang sama untuk dipilih dalam sebuah sampel. Pengacakan
membantu mengurangi bias dalam pengambilan sampel dan meningkatkan
generalisasi hasil penelitian.
Dalam penelitian data sains, pengambilan sampel dan pengacakan
menjadi bagian penting dalam desain riset. Beberapa hal yang perlu
diperhatikan dalam pengambilan sampel:
- Masalah representasi populasi: Data yang
dikumpulkan harus mencerminkan karakteristik populasi yang diteliti agar
hasilnya dapat digeneralisasikan.
- Variabel yang berpengaruh: Faktor seperti lokasi
geografis, gender, dan kondisi sosial ekonomi dapat mempengaruhi hasil
penelitian.
- Kepercayaan partisipan: Partisipan harus memahami
tujuan pengumpulan data dan bagaimana data mereka akan digunakan agar
mereka memberikan jawaban yang akurat. _ Reliabilitas dan
validitas: Pengukuran harus konsisten dan benar-benar mengukur
aspek yang ingin diteliti.
Terdapat dua pendekatan utama dalam penelitian:
- Studi Eksperimental
Melibatkan pengendalian variabel dalam lingkungan penelitian, dengan
pengacakan peserta ke dalam kelompok yang berbeda untuk memungkinkan
perbandingan dan penjelasan kausal.
Contoh: Untuk mengetahui dampak keterampilan data
sains terhadap gaji, peserta secara acak diberikan pelatihan data sains,
lalu dibandingkan gajinya dengan kelompok lain. Tantangan: Sulit
mengontrol faktor-faktor lain seperti budaya perusahaan dan negosiasi
gaji individu.
- Studi Observasional
Mengumpulkan data tanpa mengganggu bagaimana data itu muncul secara
alami. Walaupun tidak memungkinkan untuk menyimpulkan hubungan
sebab-akibat, pendekatan ini tetap berguna untuk memahami pola dalam
dunia nyata.
Contoh: Melakukan survei kepada data scientist untuk
mengetahui gaji mereka berdasarkan pengalaman dan lokasi kerja.
Tantangan: Data yang dikumpulkan mungkin bias karena tidak semua orang
bersedia melaporkan gaji mereka dengan jujur.
Karena eksperimen sulit diterapkan dalam banyak situasi, penelitian
sering kali menggunakan metode observasional dengan berbagai teknik
pengambilan sampel acak. Berikut beberapa metode pengambilan sampel
acak:
1.5.1 Pengambilan Sampel Acak Sederhana (Simple Random
Sampling)
Setiap elemen dalam populasi memiliki peluang yang sama untuk
dipilih. Langkah-langkahnya:
- Menetapkan nomor unik bagi setiap anggota populasi.
- Menggunakan generator angka acak atau sistem undian untuk memilih
sampel.
Contoh: Sebuah perusahaan ingin mensurvei 500 dari
5.000 karyawan, sehingga setiap karyawan diberi nomor, lalu 500 dipilih
secara acak.
1.5.2 Pengambilan Sampel Sistematis (Systematic Sampling)
Metode ini memilih elemen dengan interval tetap dari daftar yang
telah diurutkan. Langkah-langkahnya:
- Menentukan ukuran sampel yang dibutuhkan.
- Menghitung interval pemilihan (misalnya, 1.000 populasi / 100 sampel
= interval 10).
- Memilih titik awal secara acak, lalu memilih elemen berdasarkan
interval yang ditetapkan.
Contoh: Seorang peneliti ingin mensurvei setiap
pelanggan ke-5 dari daftar 1.000 pembeli. Jika titik awalnya 3, maka
yang dipilih adalah urutan ke-3, ke-8, ke-13, dan seterusnya.
1.5.3 Pengambilan Sampel Berstrata (Stratified Sampling)
Populasi dibagi menjadi subkelompok (strata) berdasarkan
karakteristik tertentu, lalu sampel dipilih secara acak dari setiap
strata secara proporsional. Langkah-langkahnya:
- Mengidentifikasi strata yang relevan (misalnya, usia, tingkat
pendidikan).
- Menentukan proporsi setiap strata dalam populasi.
- Melakukan pengambilan sampel secara acak dalam setiap strata.
Contoh: Sebuah universitas ingin mensurvei mahasiswa
dari berbagai tahun akademik. Jika 40% mahasiswa adalah tahun pertama,
30% tahun kedua, 20% tahun ketiga, dan 10% tahun keempat, maka sampel
akan mencerminkan proporsi ini.
Metode pengambilan sampel acak membantu memastikan hasil penelitian
lebih representatif dan mengurangi bias dalam pengumpulan data.
1.6 Tantangan dalam Pengambilan Sampel
Pengambilan sampel merupakan proses penting dalam penelitian, tetapi
proses ini memiliki beberapa tantangan yang dapat memengaruhi akurasi
dan keandalan. Berikut ini adalah ikhtisar tantangan utama pengambilan
sampel beserta penyebabnya dan kemungkinan solusinya.
Bias Non-Respon |
Peserta tidak mau atau tidak mampu menanggapi survei karena terlalu
panjang atau rumit. Kelompok tertentu cenderung tidak
berpartisipasi. |
Mengirim pengingat tindak lanjut, menawarkan insentif, dan
menyederhanakan format survei. |
Kesalahan Kerangka Sampling |
Daftar sampel kedaluwarsa atau tidak lengkap, klasifikasi salah,
serta adanya peserta duplikat atau tidak memenuhi syarat. |
Memastikan kerangka sampel tetap mutakhir, memeriksa kembali sumber
data, dan menggunakan metode sampel berstrata. |
Ukuran Sampel |
Tidak Memadai Sumber daya terbatas untuk pengambilan sampel besar,
perhitungan ukuran sampel tidak tepat, serta tingkat dropout tinggi
dalam studi longitudinal. |
Menggunakan metode statistik untuk menentukan ukuran sampel yang
tepat serta mempertimbangkan kemungkinan adanya dropout. |
Kendala Biaya dan Waktu |
Biaya tinggi dalam pengumpulan data, keterlambatan dalam menjangkau
partisipan, serta perlunya peralatan atau personel khusus. |
Menggunakan metode yang hemat biaya seperti survei online,
otomatisasi pengumpulan data, dan optimalisasi sumber daya. |
Mengatasi tantangan ini memastikan bahwa proses pengambilan sampel
lebih andal, efisien, dan mewakili populasi sasaran. Dengan menerapkan
solusi yang efektif, peneliti dapat meminimalkan kesalahan dan
meningkatkan kualitas studi mereka secara keseluruhan.
1.7 Aplikasi dalam Industri
Pengambilan sampel memainkan peran penting di berbagai industri, yang
memungkinkan organisasi mengumpulkan wawasan, membuat keputusan yang
tepat, dan mengoptimalkan proses. Berikut ini adalah area utama di mana
pengambilan sampel digunakan secara luas:
Keuangan |
Menganalisis transaksi keuangan dan tren pasar. |
Menilai risiko, mendeteksi penipuan, dan membuat keputusan
investasi. |
Kontrol Kualitas |
Memeriksa sebagian produk dalam proses produksi. |
Memastikan kualitas produk dan kepatuhan terhadap standar
industri. |
Pelayanan Kesehatan |
Mempelajari data pasien dan uji klinis. |
Memperkirakan prevalensi penyakit, efektivitas pengobatan, dan tren
kesehatan masyarakat. |
Riset Pasar |
Melakukan kelompok fokus dan survei. |
Memahami preferensi, tren, dan perilaku pelanggan. |
Dengan menerapkan teknik pengambilan sampel yang tepat, industri
dapat memperoleh wawasan yang akurat dan andal sekaligus meminimalkan
kesalahan dan bias. Hal ini memastikan pengambilan keputusan yang lebih
baik, penghematan biaya, dan peningkatan efisiensi operasional.
LS0tDQp0aXRsZTogIlByaW5zaXAgUGVuZ3VtcHVsYW4gU2FtcGVsIChTYW1wbGluZykiDQpzdWJ0aXRsZTogIlRla25payBTYW1wbGluZyBkYW4gU3VydmVpIg0KYXV0aG9yOiAiSk9BTlMgSEVOS1kgU0VSVkFUSVVTIFNJTUFOVUxMQU5HIg0KZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjoNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBsaWJfZGlyOiBsaWJzDQogICAgZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNzczogInN0eWxlMSAxLmNzcyINCi0tLQ0KDQojIyAxLjEgQXBhIGl0dSBQZW5nYW1iaWxhbiBTYW1wZWwgPw0KUGVuZ2FtYmlsYW4gc2FtcGVsIGFkYWxhaCBtZXRvZGUgZGFsYW0gc3RhdGlzdGlrIHVudHVrIG1lbWlsaWggc2ViYWdpYW4gaW5kaXZpZHUsIGl0ZW0sIGF0YXUgcGVuZ2FtYXRhbiBkYXJpIHN1YXR1IHBvcHVsYXNpIHVudHVrIG1lbmVudHVrYW4ga2FyYWt0ZXJpc3RpayBrZXNlbHVydWhhbiBwb3B1bGFzaS4gVGVrbmlrIGluaSBkaWd1bmFrYW4gZGFsYW0gYmVyYmFnYWkgYmlkYW5nIHNlcGVydGkgcGVuZWxpdGlhbiwgYmlzbmlzLCBkYW4ga2ViaWpha2FuIHB1YmxpayB1bnR1ayBtZW1idWF0IGtlcHV0dXNhbiB5YW5nIGxlYmloIGVmaXNpZW4gdGFucGEgaGFydXMgbWVuZ3VtcHVsa2FuIGRhdGEgZGFyaSBzZWx1cnVoIHBvcHVsYXNpLg0KDQpEYWxhbSBwcm9zZXMgcGVuZ2FtYmlsYW4gc2FtcGVsLCBwZW50aW5nIHVudHVrIG1lbWFzdGlrYW4gYmFod2Egc2FtcGVsIHlhbmcgZGlwaWxpaCBjdWt1cCBiZXNhciBkYW4gcmVwcmVzZW50YXRpZiBhZ2FyIGRhcGF0IG1ld2FraWxpIHBvcHVsYXNpIGRlbmdhbiBha3VyYXQuIEJlYmVyYXBhIHN0cmF0ZWdpIHVudHVrIG1lbmluZ2thdGthbiByZXByZXNlbnRhc2kgc2FtcGVsIG1lbGlwdXRpIHBlbWlsaWhhbiBzYW1wZWwgc2VjYXJhIGFjYWsgZGFuIHBlbmdndW5hYW4gYmViZXJhcGEga2Vsb21wb2sgc2FtcGVsIHVudHVrIG1lbmdvbmZpcm1hc2kgdGVtdWFuLg0KDQpTYW1wZWwgdGlkYWsgc2VsYWx1IHRlcmRpcmkgZGFyaSBtYW51c2lhLCB0ZXRhcGkganVnYSBiaXNhIGJlcnVwYSBvYmplayBsYWluIHNlcGVydGkgbmVnYXJhLCBwZXJ1c2FoYWFuLCBhdGF1IHNwZXNpZXMgaGV3YW4uIERlbmdhbiBtZW5nZ3VuYWthbiB0ZWtuaWsgc2FtcGxpbmcgeWFuZyB0ZXBhdCwgYW5hbGlzaXMgZGF0YSBkYXBhdCBkaWxha3VrYW4gbGViaWggZWZpc2llbiB0YW5wYSBrZWhpbGFuZ2FuIGFrdXJhc2kgZGFsYW0gbWVuZ2dhbWJhcmthbiBrYXJha3RlcmlzdGlrIHBvcHVsYXNpIHlhbmcgbGViaWggYmVzYXIuDQoNCiMjIDEuMiBQb3B1bGFzaSB2cy4gU2FtcGVsDQpEYWxhbSBzdGF0aXN0aWssIG1lbWFoYW1pIHBlcmJlZGFhbiBhbnRhcmEgcG9wdWxhc2kgZGFuIHNhbXBlbCBzYW5nYXQgcGVudGluZyBkYWxhbSBhbmFsaXNpcyBkYXRhLCBpbmZlcmVuc2ksIGRhbiBwZW5nYW1iaWxhbiBrZXB1dHVzYW4uIFBvcHVsYXNpIG1lbmNha3VwIHNlbHVydWggZWxlbWVuIHlhbmcgbWVuamFkaSBvYmplayBwZW5lbGl0aWFuLCBzZW1lbnRhcmEgc2FtcGVsIGFkYWxhaCBiYWdpYW4ga2VjaWwgZGFyaSBwb3B1bGFzaSB5YW5nIGRpcGlsaWggdW50dWsgZGlhbmFsaXNpcy4NCg0KIyMjIDEuMi4xIFBvcHVsYXNpDQpQb3B1bGFzaSAoTikgYWRhbGFoIHNlbHVydWgga2Vsb21wb2sgaW5kaXZpZHUsIG9iamVrLCBhdGF1IHBlcmlzdGl3YSB5YW5nIG1lbmphZGkgZm9rdXMgcGVuZWxpdGlhbi4gUG9wdWxhc2kgbWVuY2FrdXAgc2VtdWEgZWxlbWVuIHlhbmcgcmVsZXZhbiBkZW5nYW4gcGVuZWxpdGlhbiB5YW5nIHNlZGFuZyBkaWxha3VrYW4uDQoNCioqQ29udG9oIFBvcHVsYXNpKio6DQoNCi0gU2VtdWEgcGVuZHVkdWsgc3VhdHUga290YSBkYWxhbSBwZW5lbGl0aWFuIHBlcmlsYWt1IHBlbWlsaWguDQotIFNldGlhcCBwb25zZWwgcGludGFyIHlhbmcgZGlwcm9kdWtzaSBvbGVoIHN1YXR1IHBhYnJpayBzYWF0IG1lbmVsaXRpIHRpbmdrYXQga2VydXNha2FuLg0KLSBTZW11YSBtYWhhc2lzd2EgZGkgc3VhdHUgdW5pdmVyc2l0YXMgZGFsYW0gcGVuZ3VrdXJhbiBuaWxhaSByYXRhLXJhdGEgdWppYW4uDQoNCioqSmVuaXMtamVuaXMgUG9wdWxhc2kqKjoNCg0KLSAqKlBvcHVsYXNpIFRlcmJhdGFzKio6IFBvcHVsYXNpIGRlbmdhbiBqdW1sYWggZWxlbWVuIHRldGFwLCBzZXBlcnRpIGthcnlhd2FuIGRpIHNlYnVhaCBwZXJ1c2FoYWFuLg0KLSAqKlBvcHVsYXNpIFRhayBUZXJiYXRhcyoqOiBQb3B1bGFzaSBkZW5nYW4ganVtbGFoIGVsZW1lbiB5YW5nIHRpZGFrIGRhcGF0IGRpaGl0dW5nLCBzZXBlcnRpIGJha3RlcmkgZGFsYW0gY2F3YW4gcGV0cmkuDQotICoqUG9wdWxhc2kgVGFyZ2V0Kio6IFBvcHVsYXNpIHNwZXNpZmlrIHlhbmcgbWVuamFkaSBvYmplayBwZW5lbGl0aWFuLg0KLSAqKlBvcHVsYXNpIHlhbmcgRGFwYXQgRGlha3NlcyoqOiBCYWdpYW4gZGFyaSBwb3B1bGFzaSB0YXJnZXQgeWFuZyB0ZXJzZWRpYSB1bnR1ayBwZW5lbGl0aWFuLg0KDQojIyMgMS4yLjIgU2FtcGVsDQpTYW1wZWwgKG4pIGFkYWxhaCBiYWdpYW4gZGFyaSBwb3B1bGFzaSB5YW5nIGRpcGlsaWggdW50dWsgZGlhbmFsaXNpcy4gS2FyZW5hIG1lbmVsaXRpIHNlbHVydWggcG9wdWxhc2kgc2VyaW5nIGthbGkgdGlkYWsgbWVtdW5na2lua2FuIGFraWJhdCBrZXRlcmJhdGFzYW4gYmlheWEsIHdha3R1LCBkYW4gYWtzZXNpYmlsaXRhcywgc2FtcGVsIGRpZ3VuYWthbiB1bnR1ayBtZW1idWF0IGVzdGltYXNpIGF0YXUga2VzaW1wdWxhbiB0ZW50YW5nIHBvcHVsYXNpLg0KDQoqKkNvbnRvaCBTYW1wZWwqKjoNCg0KLSBTdXJ2ZWkgdGVyaGFkYXAgMS4wMDAgcGVuZHVkdWsga290YSB1bnR1ayBtZW5jZXJtaW5rYW4gb3BpbmkgcHVibGlrLg0KLSBQZW1lcmlrc2FhbiB0ZXJoYWRhcCA1MDAgcG9uc2VsIHBpbnRhciB5YW5nIGRpcGlsaWggc2VjYXJhIGFjYWsgdW50dWsgbWVuaWxhaSB0aW5na2F0IGtlcnVzYWthbi4NCi0gQW5hbGlzaXMgbmlsYWkgdWppYW4gZGFyaSAyMDAgbWFoYXNpc3dhIHlhbmcgZGlwaWxpaCBzZWNhcmEgYWNhay4NCg0KKipLYXJha3RlcmlzdGlrIFNhbXBlbCB5YW5nIEJhaWsqKjoNCg0KLSAqKlJlcHJlc2VudGF0aWYqKjogTWVuY2VybWlua2FuIGthcmFrdGVyaXN0aWsgcG9wdWxhc2kgZGVuZ2FuIGFrdXJhdC4NCi0gKipBY2FrKio6IERpcGlsaWggdGFucGEgYmlhcyBhZ2FyIGhhc2lsbnlhIGxlYmloIG9iamVrdGlmLg0KLSAqKkN1a3VwIEJlc2FyKio6IE1lbWFzdGlrYW4gZXN0aW1hc2kgeWFuZyBkYXBhdCBkaWFuZGFsa2FuLg0KLSAqKkJpYXMgTWluaW1hbCoqOiBNZW5naGluZGFyaSBrZXNhbGFoYW4gc2lzdGVtYXRpcyBkYWxhbSBwZW5nYW1iaWxhbiBkYXRhLg0KDQojIyMgMS4yLjMgUGVyYmVkYWFuIFV0YW1hIGFudGFyYSBQb3B1bGFzaSBkYW4gU2FtcGVsDQpTYWF0IG1lbGFrdWthbiBwZW5lbGl0aWFuIHN0YXRpc3RpaywgcGVudGluZyB1bnR1ayBtZW1iZWRha2FuIGFudGFyYSBwb3B1bGFzaSBkYW4gc2FtcGVsLiBQb3B1bGFzaSBtZW5jYWt1cCBzZWx1cnVoIGVsZW1lbiB5YW5nIG1lbmphZGkgb2JqZWsgc3R1ZGksIHNlZGFuZ2thbiBzYW1wZWwgYWRhbGFoIGJhZ2lhbiBrZWNpbCBkYXJpIHBvcHVsYXNpIHlhbmcgZGlwaWxpaCB1bnR1ayBkaWFuYWxpc2lzLiBNZW1haGFtaSBwZXJiZWRhYW4gaW5pIHNhbmdhdCBwZW50aW5nIHVudHVrIG1lbmRhcGF0a2FuIGtlc2ltcHVsYW4geWFuZyBha3VyYXQgZGFuIHZhbGlkLg0KDQpCZXJpa3V0IGFkYWxhaCBwZXJiZWRhYW4gdXRhbWEgYW50YXJhIHBvcHVsYXNpIGRhbiBzYW1wZWw6DQoNCnwgRml0dXIJfCBQb3B1bGFzaSAoTikgfAlTYW1wZWwgKG4pIHwNCnwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS18DQp8IERlZmluaXNpIHwJU2VsdXJ1aCBrZWxvbXBvayB5YW5nIG1lbmphZGkgZm9rdXMgcGVuZWxpdGlhbiB8CUJhZ2lhbiB5YW5nIGRpcGlsaWggZGFyaSBwb3B1bGFzaSB1bnR1ayBkaWFuYWxpc2lzIHwNCnwgVWt1cmFuIHwgQmVzYXIgYXRhdSB0YWsgdGVyYmF0YXMgfCBMZWJpaCBrZWNpbCBkYW4gZGFwYXQgZGlrZWxvbGEgfA0KfCBOb3Rhc2kgfCBNZW5nZ3VuYWthbiBodXJ1ZiBiZXNhciAobWlzYWxueWEsIE4sIMK1LCDPgykgfAlNZW5nZ3VuYWthbiBodXJ1ZiBrZWNpbCAobWlzYWxueWEsIG4sIHjMhCwgcykgfA0KfCBQYXJhbWV0ZXIJfCBOaWxhaSBzZWJlbmFybnlhIGRhcmkgcG9wdWxhc2kgKG1pc2FsbnlhLCByYXRhLXJhdGEgcG9wdWxhc2kgwrUsIHN0YW5kYXIgZGV2aWFzaSBwb3B1bGFzaSDPgykJfCBFc3RpbWFzaSBkYXJpIHBhcmFtZXRlciBwb3B1bGFzaSAobWlzYWxueWEsIHJhdGEtcmF0YSBzYW1wZWwgeMyELCBzdGFuZGFyIGRldmlhc2kgc2FtcGVsIHMpIHwNCnwgQmlheWEgJiBXYWt0dSB8CUxlYmloIHRpbmdnaSB8CUxlYmloIHJlbmRhaCB8DQp8IEtldGVwYXRhbiB8CU1lbWJlcmlrYW4gaW5mb3JtYXNpIHlhbmcgYWt1cmF0IHRlbnRhbmcgc2VsdXJ1aCBwb3B1bGFzaSB8CU1lbWJlcmlrYW4gcGVya2lyYWFuIGRlbmdhbiBtYXJnaW4ga2VzYWxhaGFuIHRlcnRlbnR1IHwNCg0KIyMgMS4zIE1lbmdhcGEgTWVuZ2d1bmFrYW4gU2FtcGVsPw0KRGFsYW0gcGVuZWxpdGlhbiwgcGVuZ2d1bmFhbiBzYW1wZWwgbWVuamFkaSBwaWxpaGFuIHV0YW1hIGthcmVuYSBtZW5lbGl0aSBzZWx1cnVoIHBvcHVsYXNpIHNlcmluZyBrYWxpIHRpZGFrIHByYWt0aXMuIEJlYmVyYXBhIGFsYXNhbiB1dGFtYSBwZW5nZ3VuYWFuIHNhbXBlbCBtZWxpcHV0aToNCg0KLSAqKkVmZWt0aXZpdGFzIEJpYXlhKioNCg0KTWVuZ3VyYW5naSBwZW5nZWx1YXJhbiBkYWxhbSBwZW5ndW1wdWxhbiwgcGVtcm9zZXNhbiwgZGFuIGFuYWxpc2lzIGRhdGEgZGliYW5kaW5na2FuIGRlbmdhbiBtZW5lbGl0aSBzZWx1cnVoIHBvcHVsYXNpLg0KDQotICoqRWZpc2llbnNpIFdha3R1KioNCg0KUHJvc2VzIHBlbmd1bXB1bGFuIGRhbiBhbmFsaXNpcyBkYXRhIGxlYmloIGNlcGF0IGRpYmFuZGluZ2thbiBqaWthIG1lbmNha3VwIHNlbHVydWggcG9wdWxhc2kuDQoNCi0gKipLZWxheWFrYW4qKg0KDQpNZW11bmdraW5rYW4gcGVuZWxpdGlhbiBwYWRhIHBvcHVsYXNpIHlhbmcgdGVybGFsdSBiZXNhciBhdGF1IHN1bGl0IGRpamFuZ2thdSBzZWNhcmEga2VzZWx1cnVoYW4uDQoNCi0gKipBa3VyYXNpIGRhbiBLZWFuZGFsYW4qKg0KDQpEZW5nYW4gdGVrbmlrIHBlbWlsaWhhbiB5YW5nIHRlcGF0LCBzYW1wZWwgZGFwYXQgbWVyZXByZXNlbnRhc2lrYW4gcG9wdWxhc2kgZGFuIG1lbWJlcmlrYW4gaGFzaWwgeWFuZyB2YWxpZC4NCg0KLSAqKk1lbmd1cmFuZ2kgS29tcGxla3NpdGFzIFBlbmdlbG9sYWFuIERhdGEqKg0KDQpNZW55ZWRlcmhhbmFrYW4gYW5hbGlzaXMgZGVuZ2FuIGp1bWxhaCBkYXRhIHlhbmcgbGViaWggc2VkaWtpdCwgdGV0YXBpIHRldGFwIGJlcm1ha25hLg0KDQotICoqUGVydGltYmFuZ2FuIEV0aXMqKg0KDQpCZWJlcmFwYSBwZW5lbGl0aWFuIChtaXNhbG55YSB1amkgY29iYSBtZWRpcykgdGlkYWsgZGFwYXQgZGlsYWt1a2FuIHBhZGEgc2VsdXJ1aCBwb3B1bGFzaSBrYXJlbmEgYWxhc2FuIGV0aWthLg0KDQojIyAxLjQgTWVuZ2hpbmRhcmkgQmlhcyBTYW1wZWwNCkJpYXMgcGVuZ2FtYmlsYW4gc2FtcGVsIHRlcmphZGkga2V0aWthIGFuZ2dvdGEgcG9wdWxhc2kgdGVydGVudHUgc2VjYXJhIHNpc3RlbWF0aXMgZGlrZWN1YWxpa2FuIGF0YXUgdGVyd2FraWxpIHNlY2FyYSBiZXJsZWJpaGFuIGRhbGFtIHNhbXBlbC4gSGFsIGluaSBkYXBhdCBtZW5naGFzaWxrYW4gaGFzaWwgeWFuZyB0aWRhayBha3VyYXQgZGFuIHRpZGFrIHJlcHJlc2VudGF0aWYsIHlhbmcgYmVycG90ZW5zaSBtZW5kaXN0b3JzaSBrZXNpbXB1bGFuIHNlcnRhIG1lbmd1cmFuZ2kgdmFsaWRpdGFzIHNlYnVhaCBzdHVkaS4NCg0KRGFsYW0gcGVuZWxpdGlhbiwgYmlhcyBhZGFsYWgga2VzYWxhaGFuIHNpc3RlbWF0aXMgeWFuZyBtZW1wZW5nYXJ1aGkgaGFzaWwgZGFuIGRhcGF0IHRlcmphZGkgZGFsYW0gYmVyYmFnYWkgYmVudHVrOg0KDQotICoqQmlhcyBQZW5ndWt1cmFuIChNZWFzdXJlbWVudCBCaWFzKSoqDQoNCnRlcmphZGkga2V0aWthIGFsYXQgYXRhdSBtZXRvZGUgcGVuZ3VrdXJhbiBtZW55ZWJhYmthbiBrZXNhbGFoYW4geWFuZyBrb25zaXN0ZW4uIE1pc2FsbnlhLCB0ZXJtb21ldGVyIHlhbmcgc2VsYWx1IG1lbnVuanVra2FuIHN1aHUgbGViaWggdGluZ2dpIGRhcmkgeWFuZyBzZWJlbmFybnlhIGFrYW4gbWVtYmVyaWthbiBoYXNpbCB5YW5nIGtlbGlydS4NCg0KLSAqKkJpYXMgU2VsZWtzaSAoU2VsZWN0aW9uIEJpYXMpKioNCg0KbXVuY3VsIGtldGlrYSBzYW1wZWwgeWFuZyBkaWd1bmFrYW4gZGFsYW0gcGVuZWxpdGlhbiB0aWRhayBtZXdha2lsaSBwb3B1bGFzaSBzZWNhcmEga2VzZWx1cnVoYW4uIENvbnRvaG55YSwgc3R1ZGkgdmFrc2luIHlhbmcgaGFueWEgbWVuZ2d1bmFrYW4gcmVzcG9uZGVuIHByaWEgbXVkYSwgc2VoaW5nZ2EgaGFzaWxueWEgdGlkYWsgZGFwYXQgZGlnZW5lcmFsaXNhc2kgdW50dWsgcG9wdWxhc2kgbGFpbiBzZXBlcnRpIHdhbml0YSBhdGF1IG9yYW5nIHR1YS4NCg0KLSAqKkJpYXMgS29uZmlybWFzaSAoQ29uZmlybWF0aW9uIEJpYXMpKioNCg0KdGVyamFkaSBrZXRpa2EgcGVuZWxpdGkgaGFueWEgbWVtcGVydGltYmFuZ2thbiBkYXRhIHlhbmcgbWVuZHVrdW5nIGhpcG90ZXNpcyBtZXJla2EgZGFuIG1lbmdhYmFpa2FuIGZha3RvciBsYWluIHlhbmcgbXVuZ2tpbiBtZW1wZW5nYXJ1aGkgaGFzaWwuIE1pc2FsbnlhLCBzdHVkaSB5YW5nIG1lbnlpbXB1bGthbiBiYWh3YSBwZXdhcm5hIG1ha2FuYW4gbWVueWViYWJrYW4gaGlwZXJha3RpZiBwYWRhIGFuYWstYW5hayB0YW5wYSBtZW1wZXJ0aW1iYW5na2FuIGthbmR1bmdhbiBndWxhIGRhbGFtIG1ha2FuYW4gdGVyc2VidXQuDQoNCg0KQmlhcyBkYXBhdCB0ZXJqYWRpIGRpIGJlcmJhZ2FpIHRhaGFwIHBlbmVsaXRpYW4sIG11bGFpIGRhcmkgZGVzYWluIG1ldG9kZSwgcGVuZ3VtcHVsYW4gZGF0YSwgaGluZ2dhIGludGVycHJldGFzaSBoYXNpbC4gT2xlaCBrYXJlbmEgaXR1LCBwZW50aW5nIHVudHVrIG1lbmdpZGVudGlmaWthc2kgZGFuIG1lbmd1cmFuZ2kgYmlhcyBhZ2FyIGhhc2lsIHBlbmVsaXRpYW4gbGViaWggYWt1cmF0IGRhbiBkYXBhdCBkaWFuZGFsa2FuLiBCZXJpa3V0IGluaSBiZWJlcmFwYSBwZW55ZWJhYiBiaWFzIHBlbmdhbWJpbGFuIHNhbXBlbDoNCg0KfCBBc3BlayB8CUtldGVyYW5nYW4gfAlDYXJhIE1lbmdhdGFzaSB8DQp8LS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS18DQp8IEt1cmFuZ255YSBDYWt1cGFuCShVbmRlcmNvdmVyYWdlIEJpYXMpIHwgQmViZXJhcGEga2Vsb21wb2sgZGFsYW0gcG9wdWxhc2kgdGlkYWsgZGltYXN1a2thbiBkYWxhbSBrZXJhbmdrYSBzYW1wZWwuIHwJR3VuYWthbiBrZXJhbmdrYSBzYW1wZWwgeWFuZyByZXByZXNlbnRhdGlmIHVudHVrIG1lbWFzdGlrYW4gc2VtdWEga2Vsb21wb2sgdGVyY2FrdXAuIHwNCnwgUmVwcmVzZW50YXNpIEJlcmxlYmloIChPdmVycmVwcmVzZW50YXRpb24gQmlhcykgfAlLZWxvbXBvayB0ZXJ0ZW50dSBtZW1pbGlraSBwZWx1YW5nIHlhbmcgamF1aCBsZWJpaCB0aW5nZ2kgdW50dWsgZGlwaWxpaCwgc2VoaW5nZ2EgaGFzaWwgcGVuZWxpdGlhbiBtZW5qYWRpIHRpZGFrIHNlaW1iYW5nLiB8CUd1bmFrYW4gcGVuZ2FtYmlsYW4gc2FtcGVsIGJlcnN0cmF0YSB1bnR1ayBtZW5qYWdhIHByb3BvcnNpIHlhbmcgc2VpbWJhbmcuIHwNCnwgQmlhcyBTZWxla3NpIERpcmkJKFNlbGYtU2VsZWN0aW9uIEJpYXMpIHwgUGVzZXJ0YSBzZWNhcmEgc3VrYXJlbGEgbWVtaWxpaCB1bnR1ayBpa3V0IHNlcnRhIGRhbGFtIHBlbmVsaXRpYW4sIHlhbmcgZGFwYXQgbWVueWViYWJrYW4gc2FtcGVsIHRpZGFrIG1ld2FraWxpIHBvcHVsYXNpIHNlY2FyYSBrZXNlbHVydWhhbi4gfAlHdW5ha2FuIHVuZGFuZ2FuIGFjYWsgZGFuIHBlcnRpbWJhbmdrYW4gaW5zZW50aWYgdW50dWsgbWVuYXJpayBrZWxvbXBvayByZXNwb25kZW4geWFuZyBsZWJpaCBiZXJhZ2FtLiB8DQoNCk1lbWluaW1hbGthbiBiaWFzIHBlbmdhbWJpbGFuIHNhbXBlbCBzYW5nYXQgcGVudGluZyB1bnR1ayBtZW5naGFzaWxrYW4gdGVtdWFuIHBlbmVsaXRpYW4geWFuZyB2YWxpZCwgYW5kYWwsIGRhbiBkYXBhdCBkaWdlbmVyYWxpc2FzaS4gRGVuZ2FuIG1lbWFzdGlrYW4gbWV0b2RlIHBlbmdhbWJpbGFuIHNhbXBlbCB5YW5nIGJhaWsgZGFuIG1lbmVyYXBrYW4gdGVrbmlrIHBlbWlsaWhhbiBhY2FrLCBwZW5lbGl0aSBkYXBhdCBtZW5pbmdrYXRrYW4gYWt1cmFzaSBzZXJ0YSBrcmVkaWJpbGl0YXMgcGVuZWxpdGlhbiBtZXJla2EuDQoNCiMjIDEuNSBQZW5nYWNha2FuIGRhbGFtIFBlbmdhbWJpbGFuIFNhbXBlbA0KUGVuZ2FjYWthbiBhZGFsYWggcHJvc2VzIHlhbmcgbWVtYXN0aWthbiBzZXRpYXAgYW5nZ290YSBwb3B1bGFzaSBtZW1pbGlraSBwZWx1YW5nIHlhbmcgc2FtYSB1bnR1ayBkaXBpbGloIGRhbGFtIHNlYnVhaCBzYW1wZWwuIFBlbmdhY2FrYW4gbWVtYmFudHUgbWVuZ3VyYW5naSBiaWFzIGRhbGFtIHBlbmdhbWJpbGFuIHNhbXBlbCBkYW4gbWVuaW5na2F0a2FuIGdlbmVyYWxpc2FzaSBoYXNpbCBwZW5lbGl0aWFuLg0KDQpEYWxhbSBwZW5lbGl0aWFuIGRhdGEgc2FpbnMsIHBlbmdhbWJpbGFuIHNhbXBlbCBkYW4gcGVuZ2FjYWthbiBtZW5qYWRpIGJhZ2lhbiBwZW50aW5nIGRhbGFtIGRlc2FpbiByaXNldC4gQmViZXJhcGEgaGFsIHlhbmcgcGVybHUgZGlwZXJoYXRpa2FuIGRhbGFtIHBlbmdhbWJpbGFuIHNhbXBlbDoNCg0KLSAqKk1hc2FsYWggcmVwcmVzZW50YXNpIHBvcHVsYXNpKio6IERhdGEgeWFuZyBkaWt1bXB1bGthbiBoYXJ1cyBtZW5jZXJtaW5rYW4ga2FyYWt0ZXJpc3RpayBwb3B1bGFzaSB5YW5nIGRpdGVsaXRpIGFnYXIgaGFzaWxueWEgZGFwYXQgZGlnZW5lcmFsaXNhc2lrYW4uDQotICoqVmFyaWFiZWwgeWFuZyBiZXJwZW5nYXJ1aCoqOiBGYWt0b3Igc2VwZXJ0aSBsb2thc2kgZ2VvZ3JhZmlzLCBnZW5kZXIsIGRhbiBrb25kaXNpIHNvc2lhbCBla29ub21pIGRhcGF0IG1lbXBlbmdhcnVoaSBoYXNpbCBwZW5lbGl0aWFuLg0KLSAqKktlcGVyY2F5YWFuIHBhcnRpc2lwYW4qKjogUGFydGlzaXBhbiBoYXJ1cyBtZW1haGFtaSB0dWp1YW4gcGVuZ3VtcHVsYW4gZGF0YSBkYW4gYmFnYWltYW5hIGRhdGEgbWVyZWthIGFrYW4gZGlndW5ha2FuIGFnYXIgbWVyZWthIG1lbWJlcmlrYW4gamF3YWJhbiB5YW5nIGFrdXJhdC4NCl8gKipSZWxpYWJpbGl0YXMgZGFuIHZhbGlkaXRhcyoqOiBQZW5ndWt1cmFuIGhhcnVzIGtvbnNpc3RlbiBkYW4gYmVuYXItYmVuYXIgbWVuZ3VrdXIgYXNwZWsgeWFuZyBpbmdpbiBkaXRlbGl0aS4NCg0KVGVyZGFwYXQgZHVhIHBlbmRla2F0YW4gdXRhbWEgZGFsYW0gcGVuZWxpdGlhbjoNCg0KMS4gU3R1ZGkgRWtzcGVyaW1lbnRhbCANCg0KTWVsaWJhdGthbiBwZW5nZW5kYWxpYW4gdmFyaWFiZWwgZGFsYW0gbGluZ2t1bmdhbiBwZW5lbGl0aWFuLCBkZW5nYW4gcGVuZ2FjYWthbiBwZXNlcnRhIGtlIGRhbGFtIGtlbG9tcG9rIHlhbmcgYmVyYmVkYSB1bnR1ayBtZW11bmdraW5rYW4gcGVyYmFuZGluZ2FuIGRhbiBwZW5qZWxhc2FuIGthdXNhbC4NCg0KKipDb250b2gqKjogVW50dWsgbWVuZ2V0YWh1aSBkYW1wYWsga2V0ZXJhbXBpbGFuIGRhdGEgc2FpbnMgdGVyaGFkYXAgZ2FqaSwgcGVzZXJ0YSBzZWNhcmEgYWNhayBkaWJlcmlrYW4gcGVsYXRpaGFuIGRhdGEgc2FpbnMsIGxhbHUgZGliYW5kaW5na2FuIGdhamlueWEgZGVuZ2FuIGtlbG9tcG9rIGxhaW4uDQpUYW50YW5nYW46IFN1bGl0IG1lbmdvbnRyb2wgZmFrdG9yLWZha3RvciBsYWluIHNlcGVydGkgYnVkYXlhIHBlcnVzYWhhYW4gZGFuIG5lZ29zaWFzaSBnYWppIGluZGl2aWR1Lg0KDQoyLiBTdHVkaSBPYnNlcnZhc2lvbmFsDQoNCk1lbmd1bXB1bGthbiBkYXRhIHRhbnBhIG1lbmdnYW5nZ3UgYmFnYWltYW5hIGRhdGEgaXR1IG11bmN1bCBzZWNhcmEgYWxhbWkuIFdhbGF1cHVuIHRpZGFrIG1lbXVuZ2tpbmthbiB1bnR1ayBtZW55aW1wdWxrYW4gaHVidW5nYW4gc2ViYWItYWtpYmF0LCBwZW5kZWthdGFuIGluaSB0ZXRhcCBiZXJndW5hIHVudHVrIG1lbWFoYW1pIHBvbGEgZGFsYW0gZHVuaWEgbnlhdGEuDQoNCioqQ29udG9oKio6IE1lbGFrdWthbiBzdXJ2ZWkga2VwYWRhIGRhdGEgc2NpZW50aXN0IHVudHVrIG1lbmdldGFodWkgZ2FqaSBtZXJla2EgYmVyZGFzYXJrYW4gcGVuZ2FsYW1hbiBkYW4gbG9rYXNpIGtlcmphLg0KVGFudGFuZ2FuOiBEYXRhIHlhbmcgZGlrdW1wdWxrYW4gbXVuZ2tpbiBiaWFzIGthcmVuYSB0aWRhayBzZW11YSBvcmFuZyBiZXJzZWRpYSBtZWxhcG9ya2FuIGdhamkgbWVyZWthIGRlbmdhbiBqdWp1ci4NCg0KS2FyZW5hIGVrc3BlcmltZW4gc3VsaXQgZGl0ZXJhcGthbiBkYWxhbSBiYW55YWsgc2l0dWFzaSwgcGVuZWxpdGlhbiBzZXJpbmcga2FsaSBtZW5nZ3VuYWthbiBtZXRvZGUgb2JzZXJ2YXNpb25hbCBkZW5nYW4gYmVyYmFnYWkgdGVrbmlrIHBlbmdhbWJpbGFuIHNhbXBlbCBhY2FrLiBCZXJpa3V0IGJlYmVyYXBhIG1ldG9kZSBwZW5nYW1iaWxhbiBzYW1wZWwgYWNhazoNCg0KIyMjIDEuNS4xIFBlbmdhbWJpbGFuIFNhbXBlbCBBY2FrIFNlZGVyaGFuYSAoU2ltcGxlIFJhbmRvbSBTYW1wbGluZykNClNldGlhcCBlbGVtZW4gZGFsYW0gcG9wdWxhc2kgbWVtaWxpa2kgcGVsdWFuZyB5YW5nIHNhbWEgdW50dWsgZGlwaWxpaC4gTGFuZ2thaC1sYW5na2FobnlhOg0KDQotIE1lbmV0YXBrYW4gbm9tb3IgdW5payBiYWdpIHNldGlhcCBhbmdnb3RhIHBvcHVsYXNpLg0KLSBNZW5nZ3VuYWthbiBnZW5lcmF0b3IgYW5na2EgYWNhayBhdGF1IHNpc3RlbSB1bmRpYW4gdW50dWsgbWVtaWxpaCBzYW1wZWwuDQoNCioqQ29udG9oKio6IFNlYnVhaCBwZXJ1c2FoYWFuIGluZ2luIG1lbnN1cnZlaSA1MDAgZGFyaSA1LjAwMCBrYXJ5YXdhbiwgc2VoaW5nZ2Egc2V0aWFwIGthcnlhd2FuIGRpYmVyaSBub21vciwgbGFsdSA1MDAgZGlwaWxpaCBzZWNhcmEgYWNhay4NCg0KIyMjIDEuNS4yIFBlbmdhbWJpbGFuIFNhbXBlbCBTaXN0ZW1hdGlzIChTeXN0ZW1hdGljIFNhbXBsaW5nKQ0KTWV0b2RlIGluaSBtZW1pbGloIGVsZW1lbiBkZW5nYW4gaW50ZXJ2YWwgdGV0YXAgZGFyaSBkYWZ0YXIgeWFuZyB0ZWxhaCBkaXVydXRrYW4uIExhbmdrYWgtbGFuZ2thaG55YToNCg0KLSBNZW5lbnR1a2FuIHVrdXJhbiBzYW1wZWwgeWFuZyBkaWJ1dHVoa2FuLg0KLSBNZW5naGl0dW5nIGludGVydmFsIHBlbWlsaWhhbiAobWlzYWxueWEsIDEuMDAwIHBvcHVsYXNpIC8gMTAwIHNhbXBlbCA9IGludGVydmFsIDEwKS4NCi0gTWVtaWxpaCB0aXRpayBhd2FsIHNlY2FyYSBhY2FrLCBsYWx1IG1lbWlsaWggZWxlbWVuIGJlcmRhc2Fya2FuIGludGVydmFsIHlhbmcgZGl0ZXRhcGthbi4NCg0KKipDb250b2gqKjogU2VvcmFuZyBwZW5lbGl0aSBpbmdpbiBtZW5zdXJ2ZWkgc2V0aWFwIHBlbGFuZ2dhbiBrZS01IGRhcmkgZGFmdGFyIDEuMDAwIHBlbWJlbGkuIEppa2EgdGl0aWsgYXdhbG55YSAzLCBtYWthIHlhbmcgZGlwaWxpaCBhZGFsYWggdXJ1dGFuIGtlLTMsIGtlLTgsIGtlLTEzLCBkYW4gc2V0ZXJ1c255YS4NCg0KIyMjIDEuNS4zIFBlbmdhbWJpbGFuIFNhbXBlbCBCZXJzdHJhdGEgKFN0cmF0aWZpZWQgU2FtcGxpbmcpDQpQb3B1bGFzaSBkaWJhZ2kgbWVuamFkaSBzdWJrZWxvbXBvayAoc3RyYXRhKSBiZXJkYXNhcmthbiBrYXJha3RlcmlzdGlrIHRlcnRlbnR1LCBsYWx1IHNhbXBlbCBkaXBpbGloIHNlY2FyYSBhY2FrIGRhcmkgc2V0aWFwIHN0cmF0YSBzZWNhcmEgcHJvcG9yc2lvbmFsLiBMYW5na2FoLWxhbmdrYWhueWE6DQoNCi0gTWVuZ2lkZW50aWZpa2FzaSBzdHJhdGEgeWFuZyByZWxldmFuIChtaXNhbG55YSwgdXNpYSwgdGluZ2thdCBwZW5kaWRpa2FuKS4NCi0gTWVuZW50dWthbiBwcm9wb3JzaSBzZXRpYXAgc3RyYXRhIGRhbGFtIHBvcHVsYXNpLg0KLSBNZWxha3VrYW4gcGVuZ2FtYmlsYW4gc2FtcGVsIHNlY2FyYSBhY2FrIGRhbGFtIHNldGlhcCBzdHJhdGEuDQoNCioqQ29udG9oKio6IFNlYnVhaCB1bml2ZXJzaXRhcyBpbmdpbiBtZW5zdXJ2ZWkgbWFoYXNpc3dhIGRhcmkgYmVyYmFnYWkgdGFodW4gYWthZGVtaWsuIEppa2EgNDAlIG1haGFzaXN3YSBhZGFsYWggdGFodW4gcGVydGFtYSwgMzAlIHRhaHVuIGtlZHVhLCAyMCUgdGFodW4ga2V0aWdhLCBkYW4gMTAlIHRhaHVuIGtlZW1wYXQsIG1ha2Egc2FtcGVsIGFrYW4gbWVuY2VybWlua2FuIHByb3BvcnNpIGluaS4NCg0KDQpNZXRvZGUgcGVuZ2FtYmlsYW4gc2FtcGVsIGFjYWsgbWVtYmFudHUgbWVtYXN0aWthbiBoYXNpbCBwZW5lbGl0aWFuIGxlYmloIHJlcHJlc2VudGF0aWYgZGFuIG1lbmd1cmFuZ2kgYmlhcyBkYWxhbSBwZW5ndW1wdWxhbiBkYXRhLg0KDQojIyAxLjYgVGFudGFuZ2FuIGRhbGFtIFBlbmdhbWJpbGFuIFNhbXBlbA0KDQpQZW5nYW1iaWxhbiBzYW1wZWwgbWVydXBha2FuIHByb3NlcyBwZW50aW5nIGRhbGFtIHBlbmVsaXRpYW4sIHRldGFwaSBwcm9zZXMgaW5pIG1lbWlsaWtpIGJlYmVyYXBhIHRhbnRhbmdhbiB5YW5nIGRhcGF0IG1lbWVuZ2FydWhpIGFrdXJhc2kgZGFuIGtlYW5kYWxhbi4gQmVyaWt1dCBpbmkgYWRhbGFoIGlraHRpc2FyIHRhbnRhbmdhbiB1dGFtYSBwZW5nYW1iaWxhbiBzYW1wZWwgYmVzZXJ0YSBwZW55ZWJhYm55YSBkYW4ga2VtdW5na2luYW4gc29sdXNpbnlhLg0KDQp8IFRhbnRhbmdhbgl8IFBlbnllYmFiIHwJU29sdXNpIHwNCnwtLS0tLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLXwNCnwgQmlhcyBOb24tUmVzcG9uCXwgUGVzZXJ0YSB0aWRhayBtYXUgYXRhdSB0aWRhayBtYW1wdSBtZW5hbmdnYXBpIHN1cnZlaSBrYXJlbmEgdGVybGFsdSBwYW5qYW5nIGF0YXUgcnVtaXQuIEtlbG9tcG9rIHRlcnRlbnR1IGNlbmRlcnVuZyB0aWRhayBiZXJwYXJ0aXNpcGFzaS4gfCBNZW5naXJpbSBwZW5naW5nYXQgdGluZGFrIGxhbmp1dCwgbWVuYXdhcmthbiBpbnNlbnRpZiwgZGFuIG1lbnllZGVyaGFuYWthbiBmb3JtYXQgc3VydmVpLiB8DQp8IEtlc2FsYWhhbiBLZXJhbmdrYSBTYW1wbGluZwl8IERhZnRhciBzYW1wZWwga2VkYWx1d2Fyc2EgYXRhdSB0aWRhayBsZW5na2FwLCBrbGFzaWZpa2FzaSBzYWxhaCwgc2VydGEgYWRhbnlhIHBlc2VydGEgZHVwbGlrYXQgYXRhdSB0aWRhayBtZW1lbnVoaSBzeWFyYXQuIHwJTWVtYXN0aWthbiBrZXJhbmdrYSBzYW1wZWwgdGV0YXAgbXV0YWtoaXIsIG1lbWVyaWtzYSBrZW1iYWxpIHN1bWJlciBkYXRhLCBkYW4gbWVuZ2d1bmFrYW4gbWV0b2RlIHNhbXBlbCBiZXJzdHJhdGEuIHwNCnwgVWt1cmFuIFNhbXBlbCB8IFRpZGFrIE1lbWFkYWkJU3VtYmVyIGRheWEgdGVyYmF0YXMgdW50dWsgcGVuZ2FtYmlsYW4gc2FtcGVsIGJlc2FyLCBwZXJoaXR1bmdhbiB1a3VyYW4gc2FtcGVsIHRpZGFrIHRlcGF0LCBzZXJ0YSB0aW5na2F0IGRyb3BvdXQgdGluZ2dpIGRhbGFtIHN0dWRpIGxvbmdpdHVkaW5hbC4JfCBNZW5nZ3VuYWthbiBtZXRvZGUgc3RhdGlzdGlrIHVudHVrIG1lbmVudHVrYW4gdWt1cmFuIHNhbXBlbCB5YW5nIHRlcGF0IHNlcnRhIG1lbXBlcnRpbWJhbmdrYW4ga2VtdW5na2luYW4gYWRhbnlhIGRyb3BvdXQuIHwNCnwgS2VuZGFsYSBCaWF5YSBkYW4gV2FrdHUgfAlCaWF5YSB0aW5nZ2kgZGFsYW0gcGVuZ3VtcHVsYW4gZGF0YSwga2V0ZXJsYW1iYXRhbiBkYWxhbSBtZW5qYW5na2F1IHBhcnRpc2lwYW4sIHNlcnRhIHBlcmx1bnlhIHBlcmFsYXRhbiBhdGF1IHBlcnNvbmVsIGtodXN1cy4gfAlNZW5nZ3VuYWthbiBtZXRvZGUgeWFuZyBoZW1hdCBiaWF5YSBzZXBlcnRpIHN1cnZlaSBvbmxpbmUsIG90b21hdGlzYXNpIHBlbmd1bXB1bGFuIGRhdGEsIGRhbiBvcHRpbWFsaXNhc2kgc3VtYmVyIGRheWEuIHwNCg0KTWVuZ2F0YXNpIHRhbnRhbmdhbiBpbmkgbWVtYXN0aWthbiBiYWh3YSBwcm9zZXMgcGVuZ2FtYmlsYW4gc2FtcGVsIGxlYmloIGFuZGFsLCBlZmlzaWVuLCBkYW4gbWV3YWtpbGkgcG9wdWxhc2kgc2FzYXJhbi4gRGVuZ2FuIG1lbmVyYXBrYW4gc29sdXNpIHlhbmcgZWZla3RpZiwgcGVuZWxpdGkgZGFwYXQgbWVtaW5pbWFsa2FuIGtlc2FsYWhhbiBkYW4gbWVuaW5na2F0a2FuIGt1YWxpdGFzIHN0dWRpIG1lcmVrYSBzZWNhcmEga2VzZWx1cnVoYW4uDQoNCiMjIDEuNyBBcGxpa2FzaSBkYWxhbSBJbmR1c3RyaQ0KUGVuZ2FtYmlsYW4gc2FtcGVsIG1lbWFpbmthbiBwZXJhbiBwZW50aW5nIGRpIGJlcmJhZ2FpIGluZHVzdHJpLCB5YW5nIG1lbXVuZ2tpbmthbiBvcmdhbmlzYXNpIG1lbmd1bXB1bGthbiB3YXdhc2FuLCBtZW1idWF0IGtlcHV0dXNhbiB5YW5nIHRlcGF0LCBkYW4gbWVuZ29wdGltYWxrYW4gcHJvc2VzLiBCZXJpa3V0IGluaSBhZGFsYWggYXJlYSB1dGFtYSBkaSBtYW5hIHBlbmdhbWJpbGFuIHNhbXBlbCBkaWd1bmFrYW4gc2VjYXJhIGx1YXM6DQoNCnwgSW5kdXN0cmkgfAlBcGxpa2FzaSB8CVR1anVhbiB8DQp8LS0tLS0tLS0tLXwtLS0tLS0tLS0tLXwtLS0tLS0tLS18DQp8IEtldWFuZ2FuIHwJTWVuZ2FuYWxpc2lzIHRyYW5zYWtzaSBrZXVhbmdhbiBkYW4gdHJlbiBwYXNhci4JfCBNZW5pbGFpIHJpc2lrbywgbWVuZGV0ZWtzaSBwZW5pcHVhbiwgZGFuIG1lbWJ1YXQga2VwdXR1c2FuIGludmVzdGFzaS4gfA0KfCBLb250cm9sIEt1YWxpdGFzIHwJTWVtZXJpa3NhIHNlYmFnaWFuIHByb2R1ayBkYWxhbSBwcm9zZXMgcHJvZHVrc2kuIHwgTWVtYXN0aWthbiBrdWFsaXRhcyBwcm9kdWsgZGFuIGtlcGF0dWhhbiB0ZXJoYWRhcCBzdGFuZGFyIGluZHVzdHJpLiB8DQp8IFBlbGF5YW5hbiBLZXNlaGF0YW4JfCBNZW1wZWxhamFyaSBkYXRhIHBhc2llbiBkYW4gdWppIGtsaW5pcy4JfCBNZW1wZXJraXJha2FuIHByZXZhbGVuc2kgcGVueWFraXQsIGVmZWt0aXZpdGFzIHBlbmdvYmF0YW4sIGRhbiB0cmVuIGtlc2VoYXRhbiBtYXN5YXJha2F0LiB8DQp8IFJpc2V0IFBhc2FyCXwgTWVsYWt1a2FuIGtlbG9tcG9rIGZva3VzIGRhbiBzdXJ2ZWkuIHwJTWVtYWhhbWkgcHJlZmVyZW5zaSwgdHJlbiwgZGFuIHBlcmlsYWt1IHBlbGFuZ2dhbi4gfA0KDQpEZW5nYW4gbWVuZXJhcGthbiB0ZWtuaWsgcGVuZ2FtYmlsYW4gc2FtcGVsIHlhbmcgdGVwYXQsIGluZHVzdHJpIGRhcGF0IG1lbXBlcm9sZWggd2F3YXNhbiB5YW5nIGFrdXJhdCBkYW4gYW5kYWwgc2VrYWxpZ3VzIG1lbWluaW1hbGthbiBrZXNhbGFoYW4gZGFuIGJpYXMuIEhhbCBpbmkgbWVtYXN0aWthbiBwZW5nYW1iaWxhbiBrZXB1dHVzYW4geWFuZyBsZWJpaCBiYWlrLCBwZW5naGVtYXRhbiBiaWF5YSwgZGFuIHBlbmluZ2thdGFuIGVmaXNpZW5zaSBvcGVyYXNpb25hbC4NCg0KDQojIyBSZWZlcmVuc2kNCmh0dHBzOi8vYm9va2Rvd24ub3JnL2RzY2llbmNlbGFicy9zYW1wbGluZ19hbmRfc3VydmV5X3RlY2huaXF1ZXMvZG9jcy8wMS1QcmluY2lwbGVzLW9mLVNhbXBsaW5nLmh0bWw=