Prinsip Pengumpulan Sampel (Sampling)

Teknik Sampling dan Survei

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:

Fitur Populasi (N) Sampel (n)
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:

  • Efektivitas Biaya

Mengurangi pengeluaran dalam pengumpulan, pemrosesan, dan analisis data dibandingkan dengan meneliti seluruh populasi.

  • Efisiensi Waktu

Proses pengumpulan dan analisis data lebih cepat dibandingkan jika mencakup seluruh populasi.

  • Kelayakan

Memungkinkan penelitian pada populasi yang terlalu besar atau sulit dijangkau secara keseluruhan.

  • Akurasi dan Keandalan

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.

  • Pertimbangan Etis

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:

Aspek Keterangan Cara Mengatasi
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:

  1. 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.

  1. 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.

Tantangan Penyebab Solusi
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:

Industri Aplikasi Tujuan
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=