Tugas_Sampling_Whirdyana Shalfa_52240010

Logo

1.Simulasi Kesalahan Sampling di Lapangan

A. Jelaskan dua jenis kesalahan sampling yang terjadi berdasarkan situasi ini.

1. Sampling Bias (Bias Pemilihan Sampel):

target pada distribusi responden yakni seimbang (200 perkota), akan tetapi hasil dari survei menunjukkan bahwa terdapat ketidaksimbangan seperti :

  • Kota A: 250
  • Kota B: 120
  • Kota C: 180

Dengan ini dapat mengakibatkan kota dengan jumlah responden yang lebih besar yakni Kota A memiliki pengaruh yang lebih besar terhadap hasil survei, sehingga tidak dapat mencerminkan proporsi yang diharapkan.

2. Nonresponden Bias (Bias karena Tidak Ada Tanggapan):

Pada kota B ternyata hanya terkumpul sekitar 120 responden saja, di mana keadaan tersebut jauh dari target yakni 200. Ketidakbverhasilan ini Kemungkinan besar terdapat karakteristik unik dari responden yang tidak berhasil diwawancarai, sehingga data yang terkumpul tidak mewakili populasi kota B secara keseluruhan dan dapat menyebabkan bias dalam hasil analisis.

B. Jika Anda harus menyesuaikan bobot untuk mengembalikan representasi proporsional, bagaimana Anda akan menghitungnya?

1. Tiap kota seharusnya mewakili \(\frac{1}{3}\) dari total sampel (200 dari 600 responden adalah sebanyak 33,33%)

Dengan responden aktif :

  • Kota A sebanyak 250
  • Kota B sebanyak 120
  • Kota C sebanyak 180

sehingga ketika ditotal menghasilkan :

Total aktual : 250 + 120 + 180 = 550

2. Proporsi aktual dari hasil suvei:

  • Kota A: \(\frac{250}{550} = 0,4545\)
  • Kota B: \(\frac{120}{550} = 0,2182\)
  • KOta C: \(\frac{180}{550} = 0,3273\)

3. Langkah menghitung bobot per kota

\[\text{Bobot Kota} = \frac{Proporsi Target}{Proporsi Aktual}\]

  1. Kota A =
  • Proporsi aktual = \[\frac{250}{550} = 0,4545\]
  • Bobot = \[\frac{0,3333}{0,4545} = 0,733\]
  1. Kota B =
  • Proporsi aktual = \[\frac{120}{550} = 0,2182\]
  • Bobot = \[\frac{0,3333}{0,2i82} = 1,528\]
  1. Kota C =
  • Proporsi aktual = \[\frac{180}{550} = 0,3273\]
  • Bobot = \[\frac{0,3333}{0,3273} = 1,018\]

C. Kesimpulan dan Interpretasi

Agar distribusi data akhir kembali mencerminkan proporsi target yang setara maka menggunakan bobot 0,733 untuk responden dari Kota A, 1,528 untuk Kota B, dan 1,018 untuk Kota C. Lalu untuk interpretasinya yakni:

  • Responden dari kota A dihitung kurang dari 1 karena dikurangi pengaruhnya
  • Responden dari Kota B diperbesar pengaruhnya agar setara dengan proporsi target
  • Kota C hhampir proposional, jadi bobotnya mendekati 1

D. Hitungan Otomatis

# Jumlah responden
responden <- c(A = 250, B = 120, C = 180)
total <- sum(responden)

# Proporsi target
target <- 1/3

# Hitung bobot
bobot <- round(target / (responden / total), 3)
bobot
##     A     B     C 
## 0.733 1.528 1.019

2. Mendesain Survei dengan Pembobotan Waktu Puncak

A. Desain pendekatan sampling yang memungkinkan Anda menangkap persepsi pengguna secara representatif pada jam sibuk, tanpa melakukan survei sepanjang hari.

  • Metode: Time-location sampling
  • Tujuan: bertujuan untuk menangkap representasi pengguna aplikasi secara akurat pada jam sibuk tanpa (07.00–09.00 dan 17.00–19.00), memerlukan survei disepanjang hari.
  • Strategi Pelaksanaan:
  1. Mengumpulkan data yang dilakukan saat jam sibuk saja (Pagi dan Sore hari kerja)
  2. Logika pengambilan data difokuskan pada area yang strategos dengan keramaian pengguna tinggi, seperti: Kantor, Mall, Stasiun, Terminal, Kampus, Halte.
  3. Kriteria responden: Pengguna aktif ojek online (grab,gojek,maxim, dll) selama 7 hari terakhir.

Pendekatan time-location sampling tidak hanya efisien dalam waktu dan sumber daya, tetapi dapat mencegah bias waktu yang bisa muncul jika survei dilakukan diluar jam puncak. Pendekatan ini memastikan bahwa suatu presepsi yang dikumpulkan benar merefleksikan suatu pengalaman aktual pengguna selama waktu sibuk.

B. Sertakan rancangan waktu, metode pemilihan responden, dan justifikasi pemilihan unit sampling.

Komponen Digunakan Rincian
Waktu Survei Pagi: 07.00–09.00
Sore: 17.00–19.00
Hari: Senin–Jum’at
Lokasi Survei Area keramaian: pintu keluar-masuk stasiun, halaman kampus, pusat perbelanjaan
Unit Sampling Individu pengguna ojek online (mahasiswa, pekerja, dll)
Metode Responden Accidental sampling di titik strategis, selama jam sibuk
Durasi & Target 1 minggu, target total: 150 responden (pagi = 60, sore = 90)

accidental sampling dipilih karena efektif pada tempat publik dengan mobilitas tinggi. Meski bukan sebuah teknik probabilistik, akan tetapi akurasi yang dihasilkan dapat dijaga dengan cara menentukan kriteria pengguna aktif. Unit sampling berupa individu karena unit analisis adalah presepsi pribadi pengguna.

C. Jelaskan bagaimana Anda akan menyesuaikan hasil survei jika 60% responden berasal dari pagi hari, sementara 40% dari sore hari, sedangkan data historis menunjukkan pengguna ojek online saat sore hari dua kali lebih banyak dibanding pagi.

1. Menghitung bobot proposional menggunakan rumus :

\[\text{Bobot} = \frac{Proporsi Populasi}{Proporsi Responden}\]

  1. Pagi:
  • Proporsi populasi = 0.40
  • Proporsi Responden = 0.60

\[\text{Bobot} = \frac{0.40}{0.60} = 0.67\] Maka setaip responden pagi hanya dihitung sebagai 0.67 orang saja

  1. Sore:
  • Proporsi populasi = 0.60
  • Proporsi Responden = 0.40

\[\text{Bobot} = \frac{0.60}{0.40} = 1.50\] Setiap responden sore dihitung sebagai 1.5 orang

2. Menerapkan Bobot pada Skor Survei

misalkan hasil rata-rata kenyamanan dari survei didapat

Waktu Rata-rata skor kenyamanan Jumlah responden Bobot
Pagi 3.5 90 0.67
Sore 4.2 60 1.50

3. Menghitung Rata-rata kenyamanan terkoreksi

\[r = \frac{Σ(Skor × Jumlah × Bobot)}{(Σ(Jumlah × Bobot)}\]

  1. Hitungan total bobot :

\[\text{Total Bobot} = (90 × 0.67) + (60 × 1.50) \\ = 60.3 + 90 \\ = 150.3\]

  1. Hitung total skor terkoreksi:

\[\text{Total Skor Terkoreksi} = (3.5 × 90 × 0.67) + (4.2 × 60 × 1.50) \\ = (3.5 × 60.3) + (4.2 × 90) \\ = 211.05 + 378 = 589.05\]

  1. Hitung rata-rata akhir:

Rata-rata Terkoreksi = 589.05 / 150.3 ≈ 3.92

HITUNGAN OTOMATIS

# Data
rata_pagi <- 3.5
rata_sore <- 4.2
responden_pagi <- 90
responden_sore <- 60

# Proporsi populasi sesungguhnya
prop_pagi <- 0.40
prop_sore <- 0.60

# Proporsi responden
prop_responden_pagi <- responden_pagi / (responden_pagi + responden_sore)
prop_responden_sore <- responden_sore / (responden_pagi + responden_sore)

# Hitung bobot
bobot_pagi <- prop_pagi / prop_responden_pagi
bobot_sore <- prop_sore / prop_responden_sore

# Hitung total skor terkoreksi
skor_total <- (rata_pagi * responden_pagi * bobot_pagi) + (rata_sore * responden_sore * bobot_sore)

# Hitung total bobot terkoreksi
total_bobot <- (responden_pagi * bobot_pagi) + (responden_sore * bobot_sore)

# Hasil akhir
rata_terkoreksi <- skor_total / total_bobot

# Tampilkan hasil
cat("Rata-rata skor kenyamanan setelah pembobotan:", round(rata_terkoreksi, 2), "\n")
## Rata-rata skor kenyamanan setelah pembobotan: 3.92

D. KESIMPULAN

Dalam survei pengguna ojek online pada jam sibuk, jumlah responden dari pagi dan sore tidak mencerminkan proporsi pengguna yang sebenarnya. Untuk memastikan hasil survei tetap representatif, dilakukan pembobotan berdasarkan proporsi populasi pengguna pagi (40%) dan sore (60%).

Melalui perhitungan, diperoleh bobot 0.67 untuk responden pagi dan 1.50 untuk responden sore. Setelah diterapkan, rata-rata skor kenyamanan berubah dari nilai bias menjadi 3.92, yang lebih mencerminkan kondisi nyata.

Pembobotan terbukti penting dalam memperbaiki ketidakseimbangan data dan menjaga validitas hasil survei, terutama saat distribusi responden tidak ideal.

3. (CPL_KU 01 dan CPL_KK 11, 40%)

BAGIAN 1 = MERANCANG 25 PERTANYAAN UTAMA DENGAN VARIASI SKALA DAN BENTUK PERTANYAAN.

LINK GFORM : Klik untuk isi Google Form

Bentuk Pertanyaan Jumlah Tujuan
Skala Likert (1–5) 20 Mengukur persepsi/kepuasan mahasiswa secara kuantitatif dan objektif.
Pilihan Ganda 3 Mengetahui kecenderungan atau kebiasaan mahasiswa dalam mengakses layanan.
Pertanyaan Terbuka 2 Menggali pandangan, saran, atau kritik mahasiswa secara langsung.

BAGIAN 2 = MERANCANG SISTEM VALIDASI INSTRUMEN.

Untuk memastikan instrumen survei benar-benar mengukur aspek kepuasan terhadap layanan akademik secara valid dan reliabel, maka akan digunakan pendekatan sebagai berikut :

  • Validasi isi (Content Validity) :

Langkah = Daftar pertanyaan akan diperiksa oleh panel ahli yang terdiri dari dosen, staf biro akademik, dan pakar metode penelitian pendidikan.

Tujuan = Memastikan setiap butir soal merepresentasikan konstruk kepuasan terhadap layanan akademik

Alat bantu yang digunakan untuk dihitung nilai Content Validity Index (CVI) untuk menilai relevansi setiap item. Item yang digunakan dengam cvi <0.75 akan direvisi atau dihapus.

  • Validasi Konstruk (Construct Validity)

Setelah data dikumpulkan, maka aka dilakukan Exploratory Factor Analysis (EFA) untuk mengkelompokkan item berdasarkan dengan dimensi layanan (KRS, Bimbingan, Administrasi, dll). Dan korelasi antar item juga dianalisis (inter-item correlation) untuk mendeteksi konsistensi dalam satu dimensi. Software yang digunakan pada EFA (misal: SPSS, JASP, atau R)

Munculnya struktur faktor yang sesuai dengan rancangan teori awal maka korelasi antar item dalam satu dimensi adalah > 0.3

  • Uji Reliabilitas

Untuk menguji reliabilitas ini menggunakan Cronbach’s Alpha, dengan target nilai ≥ 0.70 untuk setiap subskala. Dan akan menunjukkan konsistensi internal dari item-item dalam satu dimensi layanan. Jika < 0.70, maka akan dilakukan analisis item-total correlation untuk merevisi atau membuang item yang lemah.

BAGIAN 3 = MENENTUKAN METODE DISTRIBUSI DAN PENGUJIAN KUESIONER SECARA STATISTIK.

  • Metode Distribusi :

Kuesioner dibagikan melalui Google Form dengan membagikan nya ke beberapa media seperti Grub whatsapp kelas/angkatan, Email mahasiswa aktif, Media sosial kampus, dan Website akademik resmi.

  • Stategi Pengambilan Sampel :

Sampel diambil secara acak dari strata ( Statified Random Sampling) yakni pada mahasiswa yang berasal dari berbagai program studi dan angkatan. Stratified random sampling dipilih karena menjamin representasi tiap program studi dan angkatan, sehingga hasil lebih generalisable. Dengan stratifikasi pada setiap kelompok terwakili secara proporsional. Strata nya yakni Prodi dan angkatan (2020, 2021, 2022, 2023).

Strategi nya dengan menggunakan ukuran sampel ideal, jika populasi ±1000 mahasiswa → target minimal 100 responden (10%) untuk meningkatkan validitas statistik. Dengan asumsi terdapat 10 program studi aktif, maka tiap prodi dapat menyumbang rata-rata 10 responden, atau dapat ditentukan secara proporsional sesuai jumlah mahasiswa aktifnya. Dan dengan populasi 1000, tingkat kepercayaan 95%, dan margin of error 10%, maka 100 responden sudah cukup untuk eksplorasi awal kepuasan.

Program Studi Angkatan Target Responden
Teknik Informatika 2020–2023 15
Manajemen 2020–2023 15
Akuntansi 2020–2023 10
Ilmu Komunikasi 2020–2023 10
Psikologi 2020–2023 10
Pendidikan 2020–2023 10
Prodi lainnya - 30 (akumulatif)
Total Minimum 100 responden

BAGIAN 4 = MENYIAPKAN SIMULASI STRATEGI PENGAMBILAN SAMPEL DAN PENGOLAHAN DATA AWAL.

1. Simulasi Strategi Pengambilan Sampel

  1. Populasi : Populasi pada survei ini adalah seluruh mahasiswa aktif di Universitas Airlangga dari 8 program studi (Kedokteran, Ilmu Hukum, Akuntansi, Farmasi, Hubungan Internasional, Ilmu Komunikasi, Statistika, dan Kesehatan Masyarakat dari angkatan 2021 hingga 2024.)

  2. Teknik sampling (Stratified Random Sampling) : Teknik yang digunakan adalah Stratified Random Sampling, yaitu teknik pengambilan sampel secara acak berdasarkan strata program studi dan angkatan. Pengambilan sampel ini dilkukakn secara proporsional agar semua kelompok terwakilkan.

  3. Jumlah sampel : Jumlah responden sebanyak 100 orang dari total populasi sekitar 1.000 mahasiswa, sehingga persentase responden adalah 10%. Di mana ini cukup representasif untuk survei internal dengan adanya margin of error sekitar ±10%.

2. Simulasi Data

Data simulasi berisi Id Mahasiswa, Program Studi, Angkatan dengan berisi jawaban dari 25 butir pertanyaan ( 17 pertanyaan skala likert, 6 pertanyaan pilihan ganda, dan 2 pertanyaan terbuka). Simulasi data sebagai berikut :

3. Statistik Deskriptif Awal

Setelah data simulasi diperoleh, maka selanjutnya adalah menganalisis deskriptif terhadap 5 dimensi layanan utama yang berdasarkan pengelompokkan pertanyaan skala likert.

Rumus umum :

  1. Rata-Rata (Mean) :

\[ \bar{X} = \frac{\sum X_i}{n} \]

  1. Simpangan Baku (Standart Deviasi) :

\[ s = \sqrt{\frac{\sum (X_i - \bar{X})^2}{n - 1}} \]

Dimana :

  • \((X_i)\): rata-rata nilai tiap responden dalam satu dimensi
  • \((n)\) : jumlah responden

A. Perhitungan Statistik Tiap Dimensi Layanan Akademik (5 Responden Pertama)

1. Kepuasan KRS Online (A1–A3)

  • Rata-Rata Responden 1: \(\bar{X}_1 = \frac{2 + 2 + 3}{3} = 2.33\)
  • Rata-Rata Responden 2: \(\bar{X}_2 = \frac{4 + 4 + 4}{3} = 4.00\)
  • Rata-Rata Responden 3: \(\bar{X}_3 = \frac{3 + 3 + 4}{3} = 3.33\)
  • Rata-Rata Responden 4: \(\bar{X}_4 = \frac{4 + 5 + 4}{3} = 4.33\)
  • Rata-Rata Responden 5: \(\bar{X}_5 = \frac{1 + 1 + 2}{3} = 1.33\)
A1 A2 A3 Rata-Rata
2 2 3 2.33
4 4 4 4.00
3 3 4 3.33
4 5 4 4.33
1 1 2 1.33

Rata-Rata Semua Responden

\[\bar{X} = \frac{2.33 + 4.00 + 3.33 + 4.33 + 1.33}{5} = \frac{15.32}{5} = 3.07\]

  • Simpangan Baku:

\((2.33 - 3.07)^2 = 0.5476\)
\((4.00 - 3.07)^2 = 0.8649\)
\((3.33 - 3.07)^2 = 0.0676\)
\((4.33 - 3.07)^2 = 1.5876\)
\((1.33 - 3.07)^2 = 3.0276\)

\[s = \sqrt{\frac{0.5476 + 0.8649 + 0.0676 + 1.5876 + 3.0276}{4}} = \sqrt{1.5238} = 1.23\]

2. Bimbingan Akademik (A4-A7)

  • Rata-Rata Responden 1: \(\bar{X}_1 = \frac{3 + 3 + 3 + 2}{4} = 2.75\)
  • Rata-Rata Responden 2: \(\bar{X}_2 = \frac{4 + 3 + 4 + 3}{4} = 3.50\)
  • Rata-Rata Responden 3: \(\bar{X}_3 = \frac{4 + 3 + 4 + 3}{4} = 3.50\)
  • Rata-Rata Responden 4: \(\bar{X}_4 = \frac{4 + 4 + 5 + 4}{4} = 4.25\)
  • Rata-Rata Responden 5: \(\bar{X}_5 = \frac{2 + 2 + 3 + 2}{4} = 2.25\)
A4 A5 A6 A7 Rata-Rata
3 3 3 2 2.75
4 3 4 3 3.50
4 3 4 3 3.50
4 4 5 4 4.25
2 2 3 2 2.25

Rata-Rata Semua Responden

\[\bar{X} = \frac{2.75 + 3.50 + 3.50 + 4.25 + 2.25}{5} = 3.25\]

  • Simpangan Baku:

\((2.75 - 3.25)^2 = 0.25\)
\((3.50 - 3.25)^2 = 0.0625\)
\((3.50 - 3.25)^2 = 0.0625\)
\((4.25 - 3.25)^2 = 1.00\)
\((2.25 - 3.25)^2 = 1.00\)

\[s = \sqrt{\frac{0.25 + 0.0625 + 0.0625 + 1.00 + 1.00}{4}} = \sqrt{0.59375} = 0.77\]

3. Pelayanan Administratif (A8 -A11)

  • Rata-Rata Responden 1: \(\bar{X}_1 = \frac{3 + 3 + 2 + 3}{4} = 2.75\)

  • Rata-Rata Responden 2: \(\bar{X}_2 = \frac{4 + 4 + 4 + 4}{4} = 4.00\)

  • Rata-Rata Responden 3: \(\bar{X}_3 = \frac{4 + 3 + 3 + 3}{4} = 3.25\)

  • Rata-Rata Responden 4: \(\bar{X}_4 = \frac{4 + 4 + 4 + 4}{4} = 4.00\)

  • Rata-Rata Responden 5: \(\bar{X}_5 = \frac{2 + 2 + 2 + 2}{4} = 2.00\)

A8 A9 A10 A11 Rata-Rata
3 3 2 3 2.75
4 4 4 4 4.00
4 3 3 3 3.25
4 4 4 4 4.00
2 2 2 2 2.00

Rata-Rata Semua Responden

\[\bar{X} = \frac{2.75 + 4.00 + 3.25 + 4.00 + 2.00}{5} = \frac{16.00}{5} = 3.20\]

  • Simpangan Baku:

\((2.75 - 3.20)^2 = 0.2025\)
\((4.00 - 3.20)^2 = 0.64\)
\((3.25 - 3.20)^2 = 0.0025\)
\((4.00 - 3.20)^2 = 0.64\)
\((2.00 - 3.20)^2 = 1.44\)

\[s = \sqrt{\frac{0.2025 + 0.64 + 0.0025 + 0.64 + 1.44}{4}} = \sqrt{1.71} = 1.31\]

3. Akses Informasi Akademik (A12-A14)

  • Rata-Rata Responden 1: \(\bar{X}_1 = \frac{3 + 2 + 2}{3} = 2.33\)
  • Rata-Rata Responden 2: \(\bar{X}_2 = \frac{4 + 4 + 3}{3} = 3.67\)
  • Rata-Rata Responden 3: \(\bar{X}_3 = \frac{3 + 3 + 3}{3} = 3.00\)
  • Rata-Rata Responden 4: \(\bar{X}_4 = \frac{4 + 5 + 4}{3} = 4.33\)
  • Rata-Rata Responden 5: \(\bar{X}_5 = \frac{2 + 1 + 2}{3} = 1.67\)
A12 A13 A14 Rata-Rata
3 2 2 2.33
4 4 3 3.67
3 3 3 3.00
4 5 4 4.33
2 1 2 1.67

Rata-Rata Semua Responden

\[\bar{X} = \frac{2.33 + 3.67 + 3.00 + 4.33 + 1.67}{5} = \frac{15.00}{5} = 3.00\]

  • Simpangan Baku:

\((2.33 - 3.00)^2 = 0.4489\)
\((3.67 - 3.00)^2 = 0.4489\)
\((3.00 - 3.00)^2 = 0\)
\((4.33 - 3.00)^2 = 1.7689\)
\((1.67 - 3.00)^2 = 1.7689\)

\[s = \sqrt{\frac{0.4489 + 0.4489 + 0 + 1.7689 + 1.7689}{4}} = \sqrt{1.10915} = 1.05\]

4. Bantuan Penyelesaian Studi (A15-A17)

  • Rata-Rata Responden 1: \(\bar{X}_{1} = \frac{3 + 2 + 2}{3} = \frac{7}{3} = 2.33\)
  • Rata-Rata Responden 2: \(\bar{X}_{2} = \frac{4 + 3 + 3}{3} = \frac{10}{3} = 3.33\)
  • Rata-Rata Responden 3: \(\bar{X}_{3} = \frac{3 + 3 + 3}{3} = \frac{9}{3} = 3.00\)
  • Rata-Rata Responden 4: \(\bar{X}_{4} = \frac{4 + 4 + 4}{3} = \frac{12}{3} = 4.00\)
  • Rata-Rata Responden 5: \(\bar{X}_{5} = \frac{2 + 2 + 2}{3} = \frac{6}{3} = 2.00\)
A15 A16 A17 Rata-Rata
3 2 2 2.33
4 3 3 3.33
3 3 3 3.00
4 4 4 4.00
2 2 2 2.00

Rata-Rata Semua Responden

\[\bar{X} = \frac{2.33 + 3.33 + 3.00 + 4.00 + 2.00}{5} = \frac{14.66}{5} = 2.93\]

  • Simpangan Baku:

\((2.33 - 2.93)^2 = 0.36\)
\((3.33 - 2.93)^2 = 0.16\)
\((3.00 - 2.93)^2 = 0.0049\)
\((4.00 - 2.93)^2 = 1.1449\)
\((2.00 - 2.93)^2 = 0.8649\)

\[s = \sqrt{\frac{0.36 + 0.16 + 0.0049 + 1.1449 + 0.8649}{4}} = \sqrt{0.6336} = 0.80\]

B. Hitungan Otomatis

# List data per dimensi
data_list <- list(
  "KRS Online" = list(c(2,4,3,4,1), c(2,4,3,5,1), c(3,4,4,4,2)),
  "Bimbingan Akademik" = list(c(3,4,4,4,2), c(3,3,3,4,2), c(3,4,4,5,3), c(2,3,3,4,2)),
  "Pelayanan Administratif" = list(c(3,4,4,4,2), c(3,4,3,4,2), c(2,4,3,4,2), c(3,4,3,4,2)),
  "Akses Informasi Akademik" = list(c(3,4,3,4,2), c(2,4,3,5,1), c(2,3,3,4,2)),
  "Bantuan Penyelesaian Studi" = list(c(3,4,3,4,2), c(2,3,3,4,2), c(2,3,3,4,2))
)

# Hitung hasil
hasil <- data.frame(Dimensi=character(), Rata_rata=numeric(), Simpangan_Baku=numeric())

for (nama in names(data_list)) {
  mat <- do.call(cbind, data_list[[nama]])
  rata <- rowMeans(mat)
  hasil <- rbind(hasil, data.frame(Dimensi=nama,
                                   Rata_rata=round(mean(rata), 2),
                                   Simpangan_Baku=round(sd(rata), 2)))
}

print(hasil)
##                      Dimensi Rata_rata Simpangan_Baku
## 1                 KRS Online      3.07           1.23
## 2         Bimbingan Akademik      3.25           0.77
## 3    Pelayanan Administratif      3.20           0.86
## 4   Akses Informasi Akademik      3.00           1.05
## 5 Bantuan Penyelesaian Studi      2.93           0.80

C.Visualisasi

D. Interpretasi

Berdasarkan hasil visualisasi diatas, dapat disimpulkan bahwa Dimensi KRS online memiliki rata-rata 3.07 dengan simpangan baku 1.23, menunjukkan bahwa tingkat keputusan yang moderat dengan variasi yang cukup besar antar responden.

Dimensi Bimbingan Akademik memiliki rata-rata 3.25 dan simpangan baku 0.77, yang mengindikasikan tingkat kepuasan yang lebih tinggi dan lebih konsisten di antara responden. Untuk Pelayanan Administratif, dengan rata-rata 3.20 dan simpangan baku 1.71, terdapat ketidaksetaraan yang jelas dalam kepuasan responden meskipun rata-ratanya tidak jauh berbeda dengan Bimbingan Akademik. Karena pada Akses Informasi Akademik dengan rata-rata 3.00 dan simpangan baku 1.05, terlihat tingkat kepuasan yang sedikit lebih rendah dan variasi yang cukup besar, menandakan ketidakpuasan yang lebih tinggi diantara sebagian responden,

Dan untuk Bantuan Penyelesaian studi memiliki rata-rata 2,93 dan simpangan baku 0.80, yang menunjukkan bahwa tingkat kepuasan yang lebih rendah dan relatif konsisten. Secara keseluruhan, visualisasi ini menggambarkan perbedaan yang signifikan dalam tingkat kepuasan dan konsistensi penilaian antar dimensi layanan.

4. Kesimpulan Analisis Awal

Berdasarkan hasil analisis terhadap data simulasi dari 100 responden, survei kepuasan mahasiswa terhadap lima dimensi layanan akademik kampus secara umum menunjukkan tingkat kepuasan yang cukup baik, dengan nilai rata-rata (mean) antara 2,93 hingga 3,25 pada skala Likert 1-5. Dimensi Bantuan Penyelesaian Studi (A15–A17) mencatatkan nilai mean tertinggi (3,25), yang mengindikasikan bahwa mahasiswa merasa cukup terbantu dalam menyelesaikan studi mereka. Sebaliknya, dimensi Bimbingan Akademik (A4–A7) memiliki nilai mean terendah (2,93), menunjukkan adanya ruang yang cukup besar untuk meningkatkan kualitas komunikasi dan dukungan dari dosen pembimbing.

A. Analisis Data

  1. Mean:
    • Rata-rata kepuasan mahasiswa pada seluruh dimensi berkisar antara 2,93 hingga 3,25, menunjukkan bahwa secara keseluruhan, layanan akademik sudah cukup baik, namun ada area yang masih perlu perbaikan lebih lanjut.
  2. Median:
    • Analisis median menunjukkan bahwa sebagian besar responden memberikan jawaban yang cenderung berada pada kategori netral (3). Ini menunjukkan bahwa meskipun layanan akademik dinilai cukup baik, persepsi mahasiswa cenderung tidak sepenuhnya puas atau tidak sepenuhnya negatif, dengan sebagian besar berada pada posisi tengah.
  3. Modus:
    • Hasil analisis modus menunjukkan adanya keragaman pendapat atau persepsi antar responden. Beberapa dimensi, seperti Pelayanan Administrasi dan Akses Informasi Akademik, memiliki lebih dari satu nilai modus, yang mencerminkan variasi dalam pengalaman dan kepuasan mahasiswa terhadap layanan tersebut. Misalnya, pada dimensi Bimbingan Akademik, nilai modus yang lebih rendah (modus = 2) menunjukkan bahwa ada banyak mahasiswa yang merasa kurang puas dengan layanan tersebut.

B. Analisis Instrumen Survei

Survei ini menggunakan skala Likert 1-5 untuk mengukur kepuasan mahasiswa terhadap lima dimensi layanan akademik yang telah ditetapkan, yaitu:

  1. KRS Online
  2. Bimbingan Akademik
  3. Pelayanan Administrasi
  4. Akses Informasi Akademik
  5. Bantuan Penyelesaian Studi

Instrumen survei telah divalidasi melalui pendekatan validitas isi dan validitas konstrak, serta diuji reliabilitasnya menggunakan Cronbach’s Alpha. Hasil dari uji reliabilitas menunjukkan bahwa instrumen survei cukup konsisten dalam mengukur dimensi-dimensi yang ada.

C. Temuan Utama

  1. Bantuan Penyelesaian Studi: Mendapatkan tingkat kepuasan tertinggi dengan nilai mean = 3,25 dan modus = 5, menunjukkan bahwa mahasiswa merasa cukup terbantu dalam proses penyelesaian studi mereka.
  2. Bimbingan Akademik: Mencatatkan skor rata-rata terendah dengan mean = 2,93 dan modus = 2, menunjukkan perlunya peningkatan dalam komunikasi dan arah bimbingan dari dosen pembimbing.
  3. Akses Informasi Akademik dan Pelayanan Administrasi: Menunjukkan variasi dalam respon mahasiswa dengan beberapa nilai modus, mengindikasikan perbedaan pengalaman antara mahasiswa dalam mengakses informasi akademik dan layanan administrasi.

5. Rekomendasi untuk Peningkatan Layanan

Berdasarkan temuan analisis, ada beberapa area yang dapat menjadi fokus perbaikan:

  1. Bimbingan Akademik:
    • Perbaikan kualitas komunikasi dan dukungan antara dosen pembimbing dan mahasiswa perlu menjadi prioritas. Penyediaan sesi bimbingan yang lebih terstruktur dan efektif, serta pemanfaatan teknologi untuk komunikasi yang lebih cepat dan efisien, sangat diperlukan.
  2. Akses Informasi Akademik:
    • Peningkatan stabilitas dan keandalan sistem akses informasi akademik agar lebih informatif, mudah diakses, dan dapat mengurangi kebingungan di kalangan mahasiswa mengenai informasi yang tersedia.
  3. Pelayanan Administrasi:
    • Meskipun tidak menunjukkan skor terendah, pelayanan administrasi masih memiliki variasi yang menunjukkan adanya perbedaan dalam pengalaman mahasiswa. Proses administrasi yang lebih transparan dan efisien dapat membantu meningkatkan kepuasan mahasiswa.
  4. KRS Online:
    • Dimensi KRS Online dapat dipertimbangkan untuk evaluasi lebih lanjut, meskipun tidak disebutkan sebagai prioritas utama dalam temuan ini, namun proses yang lebih intuitif dan minim gangguan teknis dapat lebih meningkatkan kepuasan mahasiswa.

6. Kesimpulan

Dari analisis deskriptif awal, terlihat bahwa dimensi Bimbingan Akademik memiliki tingkat kepuasan tertinggi dan paling stabil, sedangkan Bantuan Penyelesaian Studi dan Akses Informasi Akademik menunjukkan variasi yang lebih besar dan bisa menjadi fokus perbaikan ke depan Secara keseluruhan, meskipun layanan akademik di kampus telah berjalan cukup baik, terdapat ruang untuk perbaikan lebih lanjut, terutama pada dimensi Bimbingan Akademik dan Akses Informasi Akademik.

Data hasil survei ini memberikan gambaran awal yang berharga untuk menyusun strategi perbaikan yang lebih terarah dan berbasis data, guna meningkatkan pengalaman akademik mahasiswa secara menyeluruh dan memuaskan. Dengan adanya perbaikan yang terfokus pada area-area yang membutuhkan perhatian, diharapkan dapat menciptakan layanan akademik yang lebih efektif, efisien, dan memenuhi kebutuhan mahasiswa.

LS0tDQp0aXRsZTogIlR1Z2FzX1NhbXBsaW5nX1doaXJkeWFuYSBTaGFsZmFfNTIyNDAwMTAiDQphdXRob3I6ICJXaGlyZHlhbmEgU2hhbGZhIEF5dWJpIg0KZGF0ZTogICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCINCm91dHB1dDogDQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOiAgICMgaHR0cHM6Ly9naXRodWIuY29tL2p1YmEvcm1kZm9ybWF0cw0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAiQzovVXNlcnMvU0FMRkEvT25lRHJpdmUvRG9jdW1lbnRzL3ByYWt0aWt1bS9zdHlsZS5jc3MiDQotLS0NCjxpbWcgaWQ9ImZvdG8tc2hhbGZhIiBzcmM9IkM6L1VzZXJzL1NBTEZBL09uZURyaXZlL0RvY3VtZW50cy9mb3RvIHNoYWxmYS5qcGciIGFsdD0iTG9nbyIgc3R5bGU9IndpZHRoOjIwMHB4OyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiBhdXRvOyI+DQotLS0NCg0KIyAqKjEuU2ltdWxhc2kgS2VzYWxhaGFuIFNhbXBsaW5nIGRpIExhcGFuZ2FuKioNCg0KIyMgQS4gSmVsYXNrYW4gZHVhIGplbmlzIGtlc2FsYWhhbiBzYW1wbGluZyB5YW5nIHRlcmphZGkgYmVyZGFzYXJrYW4gc2l0dWFzaSBpbmkuDQoNCioxLiBTYW1wbGluZyBCaWFzIChCaWFzIFBlbWlsaWhhbiBTYW1wZWwpOioNCg0KdGFyZ2V0IHBhZGEgZGlzdHJpYnVzaSByZXNwb25kZW4geWFrbmkgc2VpbWJhbmcgKDIwMCBwZXJrb3RhKSwgYWthbiB0ZXRhcGkgaGFzaWwgZGFyaSBzdXJ2ZWkgbWVudW5qdWtrYW4gYmFod2EgdGVyZGFwYXQga2V0aWRha3NpbWJhbmdhbiBzZXBlcnRpIDoNCg0KLSBLb3RhIEE6IDI1MCBcDQotIEtvdGEgQjogMTIwIFwNCi0gS290YSBDOiAxODANCg0KRGVuZ2FuIGluaSBkYXBhdCBtZW5nYWtpYmF0a2FuIGtvdGEgZGVuZ2FuIGp1bWxhaCByZXNwb25kZW4geWFuZyBsZWJpaCBiZXNhciB5YWtuaSBLb3RhIEEgbWVtaWxpa2kgcGVuZ2FydWggeWFuZyBsZWJpaCBiZXNhciB0ZXJoYWRhcCBoYXNpbCBzdXJ2ZWksIHNlaGluZ2dhIHRpZGFrIGRhcGF0IG1lbmNlcm1pbmthbiBwcm9wb3JzaSB5YW5nIGRpaGFyYXBrYW4uDQoNCioyLiBOb25yZXNwb25kZW4gQmlhcyAoQmlhcyBrYXJlbmEgVGlkYWsgQWRhIFRhbmdnYXBhbik6Kg0KDQpQYWRhIGtvdGEgQiB0ZXJueWF0YSBoYW55YSB0ZXJrdW1wdWwgc2VraXRhciAxMjAgcmVzcG9uZGVuIHNhamEsIGRpIG1hbmEga2VhZGFhbiB0ZXJzZWJ1dCBqYXVoIGRhcmkgdGFyZ2V0IHlha25pIDIwMC4gS2V0aWRha2J2ZXJoYXNpbGFuIGluaSBLZW11bmdraW5hbiBiZXNhciB0ZXJkYXBhdCBrYXJha3RlcmlzdGlrIHVuaWsgZGFyaSByZXNwb25kZW4geWFuZyB0aWRhayBiZXJoYXNpbCBkaXdhd2FuY2FyYWksIHNlaGluZ2dhIGRhdGEgeWFuZyB0ZXJrdW1wdWwgdGlkYWsgbWV3YWtpbGkgcG9wdWxhc2kga290YSBCIHNlY2FyYSBrZXNlbHVydWhhbiBkYW4gZGFwYXQgbWVueWViYWJrYW4gYmlhcyBkYWxhbSBoYXNpbCBhbmFsaXNpcy4NCg0KIyMgQi4gSmlrYSBBbmRhIGhhcnVzIG1lbnllc3VhaWthbiBib2JvdCB1bnR1ayBtZW5nZW1iYWxpa2FuIHJlcHJlc2VudGFzaSBwcm9wb3JzaW9uYWwsIGJhZ2FpbWFuYSBBbmRhIGFrYW4gbWVuZ2hpdHVuZ255YT8NCg0KKioxLiBUaWFwIGtvdGEgc2VoYXJ1c255YSBtZXdha2lsaSAkXGZyYWN7MX17M30kIGRhcmkgdG90YWwgc2FtcGVsICgyMDAgZGFyaSA2MDAgcmVzcG9uZGVuIGFkYWxhaCBzZWJhbnlhayAzMywzMyUpKioNCg0KRGVuZ2FuIHJlc3BvbmRlbiBha3RpZiA6DQoNCi0gS290YSBBIHNlYmFueWFrIDI1MCBcDQotIEtvdGEgQiBzZWJhbnlhayAxMjAgXA0KLSBLb3RhIEMgc2ViYW55YWsgMTgwDQoNCnNlaGluZ2dhIGtldGlrYSBkaXRvdGFsIG1lbmdoYXNpbGthbiA6DQoNClRvdGFsIGFrdHVhbCA6IDI1MCArIDEyMCArIDE4MCA9IDU1MA0KDQoqKjIuIFByb3BvcnNpIGFrdHVhbCBkYXJpIGhhc2lsIHN1dmVpOioqDQoNCi0gS290YSBBOiAkXGZyYWN7MjUwfXs1NTB9ID0gMCw0NTQ1JCBcDQotIEtvdGEgQjogJFxmcmFjezEyMH17NTUwfSA9IDAsMjE4MiQgXA0KLSBLT3RhIEM6ICRcZnJhY3sxODB9ezU1MH0gPSAwLDMyNzMkDQoNCioqMy4gTGFuZ2thaCBtZW5naGl0dW5nIGJvYm90IHBlciBrb3RhKioNCg0KJCRcdGV4dHtCb2JvdCBLb3RhfSA9IFxmcmFje1Byb3BvcnNpIFRhcmdldH17UHJvcG9yc2kgQWt0dWFsfSQkDQoNCjEuIEtvdGEgQSA9DQoNCiAtIFByb3BvcnNpIGFrdHVhbCA9ICQkXGZyYWN7MjUwfXs1NTB9ID0gMCw0NTQ1JCQNCiAtIEJvYm90ID0gJCRcZnJhY3swLDMzMzN9ezAsNDU0NX0gPSAwLDczMyQkDQoNCjIuIEtvdGEgQiA9DQoNCiAtIFByb3BvcnNpIGFrdHVhbCA9ICQkXGZyYWN7MTIwfXs1NTB9ID0gMCwyMTgyJCQNCiAtIEJvYm90ID0gJCRcZnJhY3swLDMzMzN9ezAsMmk4Mn0gPSAxLDUyOCQkDQogDQozLiBLb3RhIEMgPQ0KIC0gUHJvcG9yc2kgYWt0dWFsID0gJCRcZnJhY3sxODB9ezU1MH0gPSAwLDMyNzMkJA0KIC0gQm9ib3QgPSAkJFxmcmFjezAsMzMzM317MCwzMjczfSA9IDEsMDE4JCQNCiANCiANCiMjIEMuIEtlc2ltcHVsYW4gZGFuIEludGVycHJldGFzaQ0KDQpBZ2FyIGRpc3RyaWJ1c2kgZGF0YSBha2hpciBrZW1iYWxpIG1lbmNlcm1pbmthbiBwcm9wb3JzaSB0YXJnZXQgeWFuZyBzZXRhcmEgbWFrYSBtZW5nZ3VuYWthbiBib2JvdCAwLDczMyB1bnR1ayByZXNwb25kZW4gZGFyaSBLb3RhIEEsIDEsNTI4IHVudHVrIEtvdGEgQiwgZGFuIDEsMDE4IHVudHVrIEtvdGEgQy4gTGFsdSB1bnR1ayBpbnRlcnByZXRhc2lueWEgeWFrbmk6DQoNCi0gUmVzcG9uZGVuIGRhcmkga290YSBBIGRpaGl0dW5nIGt1cmFuZyBkYXJpIDEga2FyZW5hIGRpa3VyYW5naSBwZW5nYXJ1aG55YSBcDQotIFJlc3BvbmRlbiBkYXJpIEtvdGEgQiBkaXBlcmJlc2FyIHBlbmdhcnVobnlhIGFnYXIgc2V0YXJhIGRlbmdhbiBwcm9wb3JzaSB0YXJnZXQgXA0KLSBLb3RhIEMgaGhhbXBpciBwcm9wb3Npb25hbCwgamFkaSBib2JvdG55YSBtZW5kZWthdGkgMQ0KDQojIyBELiBIaXR1bmdhbiBPdG9tYXRpcw0KDQpgYGB7ciBlY2hvPVRSVUUsIG1lc3NhZ2U9VFJVRSwgd2FybmluZz1UUlVFfQ0KIyBKdW1sYWggcmVzcG9uZGVuDQpyZXNwb25kZW4gPC0gYyhBID0gMjUwLCBCID0gMTIwLCBDID0gMTgwKQ0KdG90YWwgPC0gc3VtKHJlc3BvbmRlbikNCg0KIyBQcm9wb3JzaSB0YXJnZXQNCnRhcmdldCA8LSAxLzMNCg0KIyBIaXR1bmcgYm9ib3QNCmJvYm90IDwtIHJvdW5kKHRhcmdldCAvIChyZXNwb25kZW4gLyB0b3RhbCksIDMpDQpib2JvdA0KYGBgDQoNCiMgKioyLiBNZW5kZXNhaW4gU3VydmVpIGRlbmdhbiBQZW1ib2JvdGFuIFdha3R1IFB1bmNhayoqDQoNCiMjIEEuIERlc2FpbiBwZW5kZWthdGFuIHNhbXBsaW5nIHlhbmcgbWVtdW5na2lua2FuIEFuZGEgbWVuYW5na2FwIHBlcnNlcHNpIHBlbmdndW5hIHNlY2FyYSByZXByZXNlbnRhdGlmIHBhZGEgamFtIHNpYnVrLCB0YW5wYSBtZWxha3VrYW4gc3VydmVpIHNlcGFuamFuZyBoYXJpLiANCg0KLSBNZXRvZGU6ICpUaW1lLWxvY2F0aW9uIHNhbXBsaW5nKlwNCi0gVHVqdWFuOiBiZXJ0dWp1YW4gdW50dWsgbWVuYW5na2FwIHJlcHJlc2VudGFzaSBwZW5nZ3VuYSBhcGxpa2FzaSBzZWNhcmEgYWt1cmF0IHBhZGEgamFtIHNpYnVrIHRhbnBhICAoMDcuMDDigJMwOS4wMCBkYW4gMTcuMDDigJMxOS4wMCksIG1lbWVybHVrYW4gc3VydmVpIGRpc2VwYW5qYW5nIGhhcmkuXA0KLSBTdHJhdGVnaSBQZWxha3NhbmFhbjoNCg0KMS4gTWVuZ3VtcHVsa2FuIGRhdGEgeWFuZyBkaWxha3VrYW4gc2FhdCBqYW0gc2lidWsgc2FqYSAoUGFnaSBkYW4gU29yZSBoYXJpIGtlcmphKQ0KMi4gTG9naWthIHBlbmdhbWJpbGFuIGRhdGEgZGlmb2t1c2thbiBwYWRhIGFyZWEgeWFuZyBzdHJhdGVnb3MgZGVuZ2FuIGtlcmFtYWlhbiBwZW5nZ3VuYSB0aW5nZ2ksIHNlcGVydGk6IEthbnRvciwgTWFsbCwgU3Rhc2l1biwgVGVybWluYWwsIEthbXB1cywgSGFsdGUuDQozLiBLcml0ZXJpYSByZXNwb25kZW46IFBlbmdndW5hIGFrdGlmIG9qZWsgb25saW5lIChncmFiLGdvamVrLG1heGltLCBkbGwpIHNlbGFtYSA3IGhhcmkgdGVyYWtoaXIuDQoNClBlbmRla2F0YW4gKnRpbWUtbG9jYXRpb24gc2FtcGxpbmcqIHRpZGFrIGhhbnlhIGVmaXNpZW4gZGFsYW0gd2FrdHUgZGFuIHN1bWJlciBkYXlhLCB0ZXRhcGkgZGFwYXQgbWVuY2VnYWggYmlhcyB3YWt0dSB5YW5nIGJpc2EgbXVuY3VsIGppa2Egc3VydmVpIGRpbGFrdWthbiBkaWx1YXIgamFtIHB1bmNhay4gUGVuZGVrYXRhbiBpbmkgbWVtYXN0aWthbiBiYWh3YSBzdWF0dSBwcmVzZXBzaSB5YW5nIGRpa3VtcHVsa2FuIGJlbmFyIG1lcmVmbGVrc2lrYW4gc3VhdHUgcGVuZ2FsYW1hbiBha3R1YWwgcGVuZ2d1bmEgc2VsYW1hIHdha3R1IHNpYnVrLg0KDQojIyBCLiBTZXJ0YWthbiByYW5jYW5nYW4gd2FrdHUsIG1ldG9kZSBwZW1pbGloYW4gcmVzcG9uZGVuLCBkYW4ganVzdGlmaWthc2kgcGVtaWxpaGFuIHVuaXQgc2FtcGxpbmcuIA0KDQp8IEtvbXBvbmVuIERpZ3VuYWthbiB8IFJpbmNpYW4gfA0KfC0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwNCnwgV2FrdHUgU3VydmVpICAgICAgIHwgUGFnaTogMDcuMDDigJMwOS4wMDxicj5Tb3JlOiAxNy4wMOKAkzE5LjAwPGJyPkhhcmk6IFNlbmlu4oCTSnVtJ2F0IHwNCnwgTG9rYXNpIFN1cnZlaSAgICAgIHwgQXJlYSBrZXJhbWFpYW46IHBpbnR1IGtlbHVhci1tYXN1ayBzdGFzaXVuLCBoYWxhbWFuIGthbXB1cywgcHVzYXQgcGVyYmVsYW5qYWFuIHwNCnwgVW5pdCBTYW1wbGluZyAgICAgIHwgSW5kaXZpZHUgcGVuZ2d1bmEgb2playBvbmxpbmUgKG1haGFzaXN3YSwgcGVrZXJqYSwgZGxsKSB8DQp8IE1ldG9kZSBSZXNwb25kZW4gICB8ICpBY2NpZGVudGFsIHNhbXBsaW5nKiBkaSB0aXRpayBzdHJhdGVnaXMsIHNlbGFtYSBqYW0gc2lidWsgfA0KfCBEdXJhc2kgJiBUYXJnZXQgICAgfCAxIG1pbmdndSwgdGFyZ2V0IHRvdGFsOiAxNTAgcmVzcG9uZGVuIChwYWdpID0gNjAsIHNvcmUgPSA5MCkgfA0KDQoqYWNjaWRlbnRhbCBzYW1wbGluZyogZGlwaWxpaCBrYXJlbmEgZWZla3RpZiBwYWRhIHRlbXBhdCBwdWJsaWsgZGVuZ2FuIG1vYmlsaXRhcyB0aW5nZ2kuIE1lc2tpIGJ1a2FuIHNlYnVhaCB0ZWtuaWsgcHJvYmFiaWxpc3RpaywgYWthbiB0ZXRhcGkgYWt1cmFzaSB5YW5nIGRpaGFzaWxrYW4gZGFwYXQgZGlqYWdhIGRlbmdhbiBjYXJhIG1lbmVudHVrYW4ga3JpdGVyaWEgcGVuZ2d1bmEgYWt0aWYuIFVuaXQgc2FtcGxpbmcgYmVydXBhIGluZGl2aWR1IGthcmVuYSB1bml0IGFuYWxpc2lzIGFkYWxhaCBwcmVzZXBzaSBwcmliYWRpIHBlbmdndW5hLg0KDQojIyBDLiAgSmVsYXNrYW4gYmFnYWltYW5hIEFuZGEgYWthbiBtZW55ZXN1YWlrYW4gaGFzaWwgc3VydmVpIGppa2EgNjAlIHJlc3BvbmRlbiBiZXJhc2FsIGRhcmkgcGFnaSBoYXJpLCBzZW1lbnRhcmEgNDAlIGRhcmkgc29yZSBoYXJpLCBzZWRhbmdrYW4gZGF0YSBoaXN0b3JpcyBtZW51bmp1a2thbiBwZW5nZ3VuYSBvamVrIG9ubGluZSBzYWF0IHNvcmUgaGFyaSBkdWEga2FsaSBsZWJpaCBiYW55YWsgZGliYW5kaW5nIHBhZ2kuIA0KDQoqKjEuIE1lbmdoaXR1bmcgYm9ib3QgcHJvcG9zaW9uYWwgbWVuZ2d1bmFrYW4gcnVtdXMgOioqDQoNCiQkXHRleHR7Qm9ib3R9ID0gXGZyYWN7UHJvcG9yc2kgUG9wdWxhc2l9e1Byb3BvcnNpIFJlc3BvbmRlbn0kJA0KDQphLiBQYWdpOg0KDQotIFByb3BvcnNpIHBvcHVsYXNpID0gMC40MCBcDQotIFByb3BvcnNpIFJlc3BvbmRlbiA9IDAuNjANCg0KJCRcdGV4dHtCb2JvdH0gPSBcZnJhY3swLjQwfXswLjYwfSA9IDAuNjckJA0KTWFrYSBzZXRhaXAgcmVzcG9uZGVuIHBhZ2kgaGFueWEgZGloaXR1bmcgc2ViYWdhaSAwLjY3IG9yYW5nIHNhamENCg0KYS4gU29yZToNCi0gUHJvcG9yc2kgcG9wdWxhc2kgPSAwLjYwIFwNCi0gUHJvcG9yc2kgUmVzcG9uZGVuID0gMC40MA0KDQokJFx0ZXh0e0JvYm90fSA9IFxmcmFjezAuNjB9ezAuNDB9ID0gMS41MCQkDQpTZXRpYXAgcmVzcG9uZGVuIHNvcmUgZGloaXR1bmcgc2ViYWdhaSAxLjUgb3JhbmcNCg0KKioyLiBNZW5lcmFwa2FuIEJvYm90IHBhZGEgU2tvciBTdXJ2ZWkqKg0KDQptaXNhbGthbiBoYXNpbCByYXRhLXJhdGEga2VueWFtYW5hbiBkYXJpIHN1cnZlaSBkaWRhcGF0IA0KDQp8IFdha3R1ICAgIHwgUmF0YS1yYXRhIHNrb3Iga2VueWFtYW5hbiB8IEp1bWxhaCByZXNwb25kZW4gfCBCb2JvdCB8DQp8LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tfC0tLS0tLS18DQp8IFBhZ2kgICAgIHwgMy41fCA5MCB8IDAuNjcgfCAgDQp8IFNvcmUgICB8IDQuMiB8IDYwIHwgMS41MCB8DQoNCioqMy4gTWVuZ2hpdHVuZyBSYXRhLXJhdGEga2VueWFtYW5hbiB0ZXJrb3Jla3NpKiogDQoNCiQkciA9IFxmcmFje86jKFNrb3Igw5cgSnVtbGFoIMOXIEJvYm90KX17KM6jKEp1bWxhaCDDlyBCb2JvdCl9JCQNCg0KYS4gSGl0dW5nYW4gdG90YWwgYm9ib3QgOg0KDQokJFx0ZXh0e1RvdGFsIEJvYm90fSA9ICg5MCDDlyAwLjY3KSArICg2MCDDlyAxLjUwKSBcXA0KPSA2MC4zICsgOTAgXFwgPSAxNTAuMyQkDQogICAgICAgICAgICANCmIuIEhpdHVuZyB0b3RhbCBza29yIHRlcmtvcmVrc2k6DQoNCiQkXHRleHR7VG90YWwgU2tvciBUZXJrb3Jla3NpfSA9ICgzLjUgw5cgOTAgw5cgMC42NykgKyAoNC4yIMOXIDYwIMOXIDEuNTApIFxcDQo9ICgzLjUgw5cgNjAuMykgKyAoNC4yIMOXIDkwKSBcXA0KPSAyMTEuMDUgKyAzNzggPSA1ODkuMDUkJA0KICAgICAgICAgICAgICAgICAgICAgIA0KYy4gSGl0dW5nIHJhdGEtcmF0YSBha2hpcjoNCg0KUmF0YS1yYXRhIFRlcmtvcmVrc2kgPSA1ODkuMDUgLyAxNTAuMyDiiYggKjMuOTIqDQoNCiMjIEhJVFVOR0FOIE9UT01BVElTIA0KDQpgYGB7ciBlY2hvPVRSVUUsIG1lc3NhZ2U9VFJVRSwgd2FybmluZz1UUlVFfQ0KIyBEYXRhDQpyYXRhX3BhZ2kgPC0gMy41DQpyYXRhX3NvcmUgPC0gNC4yDQpyZXNwb25kZW5fcGFnaSA8LSA5MA0KcmVzcG9uZGVuX3NvcmUgPC0gNjANCg0KIyBQcm9wb3JzaSBwb3B1bGFzaSBzZXN1bmdndWhueWENCnByb3BfcGFnaSA8LSAwLjQwDQpwcm9wX3NvcmUgPC0gMC42MA0KDQojIFByb3BvcnNpIHJlc3BvbmRlbg0KcHJvcF9yZXNwb25kZW5fcGFnaSA8LSByZXNwb25kZW5fcGFnaSAvIChyZXNwb25kZW5fcGFnaSArIHJlc3BvbmRlbl9zb3JlKQ0KcHJvcF9yZXNwb25kZW5fc29yZSA8LSByZXNwb25kZW5fc29yZSAvIChyZXNwb25kZW5fcGFnaSArIHJlc3BvbmRlbl9zb3JlKQ0KDQojIEhpdHVuZyBib2JvdA0KYm9ib3RfcGFnaSA8LSBwcm9wX3BhZ2kgLyBwcm9wX3Jlc3BvbmRlbl9wYWdpDQpib2JvdF9zb3JlIDwtIHByb3Bfc29yZSAvIHByb3BfcmVzcG9uZGVuX3NvcmUNCg0KIyBIaXR1bmcgdG90YWwgc2tvciB0ZXJrb3Jla3NpDQpza29yX3RvdGFsIDwtIChyYXRhX3BhZ2kgKiByZXNwb25kZW5fcGFnaSAqIGJvYm90X3BhZ2kpICsgKHJhdGFfc29yZSAqIHJlc3BvbmRlbl9zb3JlICogYm9ib3Rfc29yZSkNCg0KIyBIaXR1bmcgdG90YWwgYm9ib3QgdGVya29yZWtzaQ0KdG90YWxfYm9ib3QgPC0gKHJlc3BvbmRlbl9wYWdpICogYm9ib3RfcGFnaSkgKyAocmVzcG9uZGVuX3NvcmUgKiBib2JvdF9zb3JlKQ0KDQojIEhhc2lsIGFraGlyDQpyYXRhX3RlcmtvcmVrc2kgPC0gc2tvcl90b3RhbCAvIHRvdGFsX2JvYm90DQoNCiMgVGFtcGlsa2FuIGhhc2lsDQpjYXQoIlJhdGEtcmF0YSBza29yIGtlbnlhbWFuYW4gc2V0ZWxhaCBwZW1ib2JvdGFuOiIsIHJvdW5kKHJhdGFfdGVya29yZWtzaSwgMiksICJcbiIpDQpgYGANCg0KIyMgRC4gS0VTSU1QVUxBTg0KDQpEYWxhbSBzdXJ2ZWkgcGVuZ2d1bmEgb2playBvbmxpbmUgcGFkYSBqYW0gc2lidWssIGp1bWxhaCByZXNwb25kZW4gZGFyaSBwYWdpIGRhbiBzb3JlIHRpZGFrIG1lbmNlcm1pbmthbiBwcm9wb3JzaSBwZW5nZ3VuYSB5YW5nIHNlYmVuYXJueWEuIFVudHVrIG1lbWFzdGlrYW4gaGFzaWwgc3VydmVpIHRldGFwIHJlcHJlc2VudGF0aWYsIGRpbGFrdWthbiBwZW1ib2JvdGFuIGJlcmRhc2Fya2FuIHByb3BvcnNpIHBvcHVsYXNpIHBlbmdndW5hIHBhZ2kgKDQwJSkgZGFuIHNvcmUgKDYwJSkuDQoNCk1lbGFsdWkgcGVyaGl0dW5nYW4sIGRpcGVyb2xlaCBib2JvdCAwLjY3IHVudHVrIHJlc3BvbmRlbiBwYWdpIGRhbiAxLjUwIHVudHVrIHJlc3BvbmRlbiBzb3JlLiBTZXRlbGFoIGRpdGVyYXBrYW4sIHJhdGEtcmF0YSBza29yIGtlbnlhbWFuYW4gYmVydWJhaCBkYXJpIG5pbGFpIGJpYXMgbWVuamFkaSAzLjkyLCB5YW5nIGxlYmloIG1lbmNlcm1pbmthbiBrb25kaXNpIG55YXRhLg0KDQpQZW1ib2JvdGFuIHRlcmJ1a3RpIHBlbnRpbmcgZGFsYW0gbWVtcGVyYmFpa2kga2V0aWRha3NlaW1iYW5nYW4gZGF0YSBkYW4gbWVuamFnYSB2YWxpZGl0YXMgaGFzaWwgc3VydmVpLCB0ZXJ1dGFtYSBzYWF0IGRpc3RyaWJ1c2kgcmVzcG9uZGVuIHRpZGFrIGlkZWFsLg0KDQojICoqMy4gKENQTF9LVSAwMSBkYW4gQ1BMX0tLIDExLCA0MCUpKioNCg0KIyMgKipCQUdJQU4gMSA9IE1FUkFOQ0FORyAyNSBQRVJUQU5ZQUFOIFVUQU1BIERFTkdBTiBWQVJJQVNJIFNLQUxBIERBTiBCRU5UVUsgUEVSVEFOWUFBTi4qKg0KDQpMSU5LIEdGT1JNIDogPGEgaHJlZj0iaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZm9ybXMvZC9lLzFGQUlwUUxTZmhHWkwwbmtQUV9oRFhmRUhRdURzbUE3YUxtNjJ5M1N6RVRWSFozYkc4aENrZERnL3ZpZXdmb3JtP3VzcD1oZWFkZXIiIHRhcmdldD0iX2JsYW5rIj5LbGlrIHVudHVrIGlzaSBHb29nbGUgRm9ybTwvYT4NCg0KfCBCZW50dWsgUGVydGFueWFhbiAgICAgfCBKdW1sYWggfCBUdWp1YW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KfCBTa2FsYSBMaWtlcnQgKDHigJM1KSAgICAgfCAyMCAgICAgfCBNZW5ndWt1ciBwZXJzZXBzaS9rZXB1YXNhbiBtYWhhc2lzd2Egc2VjYXJhIGt1YW50aXRhdGlmIGRhbiBvYmpla3RpZi4gfA0KfCBQaWxpaGFuIEdhbmRhICAgICAgICAgIHwgMyAgICAgIHwgTWVuZ2V0YWh1aSBrZWNlbmRlcnVuZ2FuIGF0YXUga2ViaWFzYWFuIG1haGFzaXN3YSBkYWxhbSBtZW5nYWtzZXMgbGF5YW5hbi4gfA0KfCBQZXJ0YW55YWFuIFRlcmJ1a2EgICAgIHwgMiAgICAgIHwgTWVuZ2dhbGkgcGFuZGFuZ2FuLCBzYXJhbiwgYXRhdSBrcml0aWsgbWFoYXNpc3dhIHNlY2FyYSBsYW5nc3VuZy4gICAgICB8DQoNCiMjICoqQkFHSUFOIDIgPSBNRVJBTkNBTkcgU0lTVEVNIFZBTElEQVNJIElOU1RSVU1FTi4qKg0KDQpVbnR1ayBtZW1hc3Rpa2FuIGluc3RydW1lbiBzdXJ2ZWkgYmVuYXItYmVuYXIgbWVuZ3VrdXIgYXNwZWsga2VwdWFzYW4gdGVyaGFkYXAgbGF5YW5hbiBha2FkZW1payBzZWNhcmEgdmFsaWQgZGFuIHJlbGlhYmVsLCBtYWthIGFrYW4gZGlndW5ha2FuIHBlbmRla2F0YW4gc2ViYWdhaSBiZXJpa3V0IDoNCg0KLSAqKlZhbGlkYXNpIGlzaSAoQ29udGVudCBWYWxpZGl0eSkgOioqDQoNCkxhbmdrYWggPSBEYWZ0YXIgcGVydGFueWFhbiBha2FuIGRpcGVyaWtzYSBvbGVoIHBhbmVsIGFobGkgeWFuZyB0ZXJkaXJpIGRhcmkgZG9zZW4sIHN0YWYgYmlybyBha2FkZW1paywgZGFuIHBha2FyIG1ldG9kZSBwZW5lbGl0aWFuIHBlbmRpZGlrYW4uDQoNClR1anVhbiA9IE1lbWFzdGlrYW4gc2V0aWFwIGJ1dGlyIHNvYWwgbWVyZXByZXNlbnRhc2lrYW4ga29uc3RydWsga2VwdWFzYW4gdGVyaGFkYXAgbGF5YW5hbiBha2FkZW1paw0KDQpBbGF0IGJhbnR1IHlhbmcgZGlndW5ha2FuIHVudHVrIGRpaGl0dW5nIG5pbGFpIENvbnRlbnQgVmFsaWRpdHkgSW5kZXggKENWSSkgdW50dWsgbWVuaWxhaSByZWxldmFuc2kgc2V0aWFwIGl0ZW0uIEl0ZW0geWFuZyBkaWd1bmFrYW4gZGVuZ2FtIGN2aSA8MC43NSBha2FuIGRpcmV2aXNpIGF0YXUgZGloYXB1cy4NCg0KLSAqKlZhbGlkYXNpIEtvbnN0cnVrIChDb25zdHJ1Y3QgVmFsaWRpdHkpKioNCg0KU2V0ZWxhaCBkYXRhIGRpa3VtcHVsa2FuLCBtYWthIGFrYSBkaWxha3VrYW4gRXhwbG9yYXRvcnkgRmFjdG9yIEFuYWx5c2lzIChFRkEpIHVudHVrIG1lbmdrZWxvbXBva2thbiBpdGVtIGJlcmRhc2Fya2FuIGRlbmdhbiBkaW1lbnNpIGxheWFuYW4gKEtSUywgQmltYmluZ2FuLCBBZG1pbmlzdHJhc2ksIGRsbCkuIERhbiBrb3JlbGFzaSBhbnRhciBpdGVtIGp1Z2EgZGlhbmFsaXNpcyAoaW50ZXItaXRlbSBjb3JyZWxhdGlvbikgdW50dWsgbWVuZGV0ZWtzaSBrb25zaXN0ZW5zaSBkYWxhbSBzYXR1IGRpbWVuc2kuIFNvZnR3YXJlIHlhbmcgZGlndW5ha2FuIHBhZGEgRUZBIChtaXNhbDogU1BTUywgSkFTUCwgYXRhdSBSKQ0KDQpNdW5jdWxueWEgc3RydWt0dXIgZmFrdG9yIHlhbmcgc2VzdWFpIGRlbmdhbiByYW5jYW5nYW4gdGVvcmkgYXdhbCBtYWthIGtvcmVsYXNpIGFudGFyIGl0ZW0gZGFsYW0gc2F0dSBkaW1lbnNpIGFkYWxhaCA+IDAuMw0KDQotICoqVWppIFJlbGlhYmlsaXRhcyoqDQoNClVudHVrIG1lbmd1amkgcmVsaWFiaWxpdGFzIGluaSBtZW5nZ3VuYWthbiBDcm9uYmFjaCdzIEFscGhhLCBkZW5nYW4gdGFyZ2V0IG5pbGFpIOKJpSAwLjcwICB1bnR1ayBzZXRpYXAgc3Vic2thbGEuIERhbiBha2FuIG1lbnVuanVra2FuIGtvbnNpc3RlbnNpIGludGVybmFsIGRhcmkgaXRlbS1pdGVtIGRhbGFtIHNhdHUgZGltZW5zaSBsYXlhbmFuLiBKaWthIDwgMC43MCwgbWFrYSBha2FuIGRpbGFrdWthbiBhbmFsaXNpcyBpdGVtLXRvdGFsIGNvcnJlbGF0aW9uIHVudHVrIG1lcmV2aXNpIGF0YXUgbWVtYnVhbmcgaXRlbSB5YW5nIGxlbWFoLg0KDQojIyAqKkJBR0lBTiAzID0gTUVORU5UVUtBTiBNRVRPREUgRElTVFJJQlVTSSBEQU4gUEVOR1VKSUFOIEtVRVNJT05FUiBTRUNBUkEgU1RBVElTVElLLioqDQoNCi0gKipNZXRvZGUgRGlzdHJpYnVzaSA6KioNCg0KS3Vlc2lvbmVyIGRpYmFnaWthbiBtZWxhbHVpIEdvb2dsZSBGb3JtIGRlbmdhbiBtZW1iYWdpa2FuIG55YSBrZSBiZWJlcmFwYSBtZWRpYSBzZXBlcnRpIEdydWIgd2hhdHNhcHAga2VsYXMvYW5na2F0YW4sIEVtYWlsIG1haGFzaXN3YSBha3RpZiwgTWVkaWEgc29zaWFsIGthbXB1cywgZGFuIFdlYnNpdGUgYWthZGVtaWsgcmVzbWkuDQoNCi0gKipTdGF0ZWdpIFBlbmdhbWJpbGFuIFNhbXBlbCA6KioNCg0KU2FtcGVsIGRpYW1iaWwgc2VjYXJhIGFjYWsgZGFyaSBzdHJhdGEgKCBTdGF0aWZpZWQgUmFuZG9tIFNhbXBsaW5nKSB5YWtuaSBwYWRhIG1haGFzaXN3YSB5YW5nIGJlcmFzYWwgZGFyaSBiZXJiYWdhaSBwcm9ncmFtIHN0dWRpIGRhbiBhbmdrYXRhbi4gU3RyYXRpZmllZCByYW5kb20gc2FtcGxpbmcgZGlwaWxpaCBrYXJlbmEgbWVuamFtaW4gcmVwcmVzZW50YXNpIHRpYXAgcHJvZ3JhbSBzdHVkaSBkYW4gYW5na2F0YW4sIHNlaGluZ2dhIGhhc2lsIGxlYmloIGdlbmVyYWxpc2FibGUuIERlbmdhbiBzdHJhdGlmaWthc2kgcGFkYSBzZXRpYXAga2Vsb21wb2sgdGVyd2FraWxpIHNlY2FyYSBwcm9wb3JzaW9uYWwuIFN0cmF0YSBueWEgeWFrbmkgUHJvZGkgZGFuIGFuZ2thdGFuICgyMDIwLCAyMDIxLCAyMDIyLCAyMDIzKS4NCg0KU3RyYXRlZ2kgbnlhIGRlbmdhbiBtZW5nZ3VuYWthbiB1a3VyYW4gc2FtcGVsIGlkZWFsLCBqaWthIHBvcHVsYXNpIMKxMTAwMCBtYWhhc2lzd2Eg4oaSIHRhcmdldCBtaW5pbWFsIDEwMCByZXNwb25kZW4gKDEwJSkgdW50dWsgbWVuaW5na2F0a2FuIHZhbGlkaXRhcyBzdGF0aXN0aWsuIERlbmdhbiBhc3Vtc2kgdGVyZGFwYXQgMTAgcHJvZ3JhbSBzdHVkaSBha3RpZiwgbWFrYSB0aWFwIHByb2RpIGRhcGF0IG1lbnl1bWJhbmcgcmF0YS1yYXRhIDEwIHJlc3BvbmRlbiwgYXRhdSBkYXBhdCBkaXRlbnR1a2FuIHNlY2FyYSBwcm9wb3JzaW9uYWwgc2VzdWFpIGp1bWxhaCBtYWhhc2lzd2EgYWt0aWZueWEuIERhbiBkZW5nYW4gcG9wdWxhc2kgMTAwMCwgdGluZ2thdCBrZXBlcmNheWFhbiA5NSUsIGRhbiBtYXJnaW4gb2YgZXJyb3IgMTAlLCBtYWthIDEwMCByZXNwb25kZW4gc3VkYWggY3VrdXAgdW50dWsgZWtzcGxvcmFzaSBhd2FsIGtlcHVhc2FuLg0KDQoNCnwgUHJvZ3JhbSBTdHVkaSAgICAgICAgfCBBbmdrYXRhbiAgICAgfCBUYXJnZXQgUmVzcG9uZGVuICAgICB8DQp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCnwgVGVrbmlrIEluZm9ybWF0aWthICAgfCAyMDIw4oCTMjAyMyAgICB8IDE1ICAgICAgICAgICAgICAgICAgICB8DQp8IE1hbmFqZW1lbiAgICAgICAgICAgIHwgMjAyMOKAkzIwMjMgICAgfCAxNSAgICAgICAgICAgICAgICAgICAgfA0KfCBBa3VudGFuc2kgICAgICAgICAgICB8IDIwMjDigJMyMDIzICAgIHwgMTAgICAgICAgICAgICAgICAgICAgIHwNCnwgSWxtdSBLb211bmlrYXNpICAgICAgfCAyMDIw4oCTMjAyMyAgICB8IDEwICAgICAgICAgICAgICAgICAgICB8DQp8IFBzaWtvbG9naSAgICAgICAgICAgIHwgMjAyMOKAkzIwMjMgICAgfCAxMCAgICAgICAgICAgICAgICAgICAgfA0KfCBQZW5kaWRpa2FuICAgICAgICAgICB8IDIwMjDigJMyMDIzICAgIHwgMTAgICAgICAgICAgICAgICAgICAgIHwNCnwgUHJvZGkgbGFpbm55YSAgICAgICAgfCAtICAgICAgICAgICAgfCAzMCAoYWt1bXVsYXRpZikgICAgICAgfA0KfCAqKlRvdGFsIE1pbmltdW0qKiAgICB8ICAgICAgICAgICAgICB8ICoqMTAwIHJlc3BvbmRlbioqICAgICB8DQoNCg0KDQojIyAqKkJBR0lBTiA0ID0gTUVOWUlBUEtBTiBTSU1VTEFTSSBTVFJBVEVHSSBQRU5HQU1CSUxBTiBTQU1QRUwgREFOIFBFTkdPTEFIQU4gREFUQSBBV0FMLioqDQoNCiMjIyAqKjEuIFNpbXVsYXNpIFN0cmF0ZWdpIFBlbmdhbWJpbGFuIFNhbXBlbCoqDQoNCmEuIFBvcHVsYXNpIDogUG9wdWxhc2kgcGFkYSBzdXJ2ZWkgaW5pIGFkYWxhaCBzZWx1cnVoIG1haGFzaXN3YSBha3RpZiBkaSBVbml2ZXJzaXRhcyBBaXJsYW5nZ2EgZGFyaSA4IHByb2dyYW0gc3R1ZGkgKEtlZG9rdGVyYW4sIElsbXUgSHVrdW0sIEFrdW50YW5zaSwgRmFybWFzaSwgSHVidW5nYW4gSW50ZXJuYXNpb25hbCwgSWxtdSBLb211bmlrYXNpLCBTdGF0aXN0aWthLCBkYW4gS2VzZWhhdGFuIE1hc3lhcmFrYXQgZGFyaSBhbmdrYXRhbiAyMDIxIGhpbmdnYSAyMDI0LikNCg0KYi4gVGVrbmlrIHNhbXBsaW5nIChTdHJhdGlmaWVkIFJhbmRvbSBTYW1wbGluZykgOiBUZWtuaWsgeWFuZyBkaWd1bmFrYW4gYWRhbGFoIFN0cmF0aWZpZWQgUmFuZG9tIFNhbXBsaW5nLCB5YWl0dSB0ZWtuaWsgcGVuZ2FtYmlsYW4gc2FtcGVsIHNlY2FyYSBhY2FrIGJlcmRhc2Fya2FuIHN0cmF0YSBwcm9ncmFtIHN0dWRpIGRhbiBhbmdrYXRhbi4gUGVuZ2FtYmlsYW4gc2FtcGVsIGluaSBkaWxrdWtha24gc2VjYXJhIHByb3BvcnNpb25hbCBhZ2FyIHNlbXVhIGtlbG9tcG9rIHRlcndha2lsa2FuLg0KDQpjLiBKdW1sYWggc2FtcGVsIDogSnVtbGFoIHJlc3BvbmRlbiBzZWJhbnlhayAxMDAgb3JhbmcgZGFyaSB0b3RhbCBwb3B1bGFzaSBzZWtpdGFyIDEuMDAwIG1haGFzaXN3YSwgc2VoaW5nZ2EgcGVyc2VudGFzZSByZXNwb25kZW4gYWRhbGFoIDEwJS4gRGkgbWFuYSBpbmkgY3VrdXAgcmVwcmVzZW50YXNpZiB1bnR1ayBzdXJ2ZWkgaW50ZXJuYWwgZGVuZ2FuIGFkYW55YSBtYXJnaW4gb2YgZXJyb3Igc2VraXRhciDCsTEwJS4NCg0KDQojIyMgKioyLiBTaW11bGFzaSBEYXRhKioNCg0KRGF0YSBzaW11bGFzaSBiZXJpc2kgSWQgTWFoYXNpc3dhLCBQcm9ncmFtIFN0dWRpLCBBbmdrYXRhbiBkZW5nYW4gYmVyaXNpIGphd2FiYW4gZGFyaSAyNSBidXRpciBwZXJ0YW55YWFuICggMTcgcGVydGFueWFhbiBza2FsYSBsaWtlcnQsIDYgcGVydGFueWFhbiBwaWxpaGFuIGdhbmRhLCBkYW4gMiBwZXJ0YW55YWFuIHRlcmJ1a2EpLiBTaW11bGFzaSBkYXRhIHNlYmFnYWkgYmVyaWt1dCA6DQoNCg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1UUlVFLCB3YXJuaW5nPUZBTFNFfQ0KIyBCYWNhIGZpbGUgQ1NWDQpkYXRhIDwtIHJlYWQuY3N2KCJDOi8jIFNIQUxGQS9LdWxpYWgvU2VtZXN0ZXIgMi9UZWtuaWsgU2FtcGxpbmcvVHVnYXMvdXRzL3NpbXVsYXNpX2RhdGFfc3VydmVpX3V0cyAuY3N2IikNCg0KIyBUYW1waWxrYW4gNiBiYXJpcyBwZXJ0YW1hDQpoZWFkKGRhdGEpDQpgYGANCg0KIyMjICoqMy4gU3RhdGlzdGlrIERlc2tyaXB0aWYgQXdhbCoqDQoNClNldGVsYWggZGF0YSBzaW11bGFzaSBkaXBlcm9sZWgsIG1ha2Egc2VsYW5qdXRueWEgYWRhbGFoIG1lbmdhbmFsaXNpcyBkZXNrcmlwdGlmIHRlcmhhZGFwIDUgZGltZW5zaSBsYXlhbmFuIHV0YW1hIHlhbmcgYmVyZGFzYXJrYW4gcGVuZ2Vsb21wb2trYW4gcGVydGFueWFhbiBza2FsYSBsaWtlcnQuIA0KDQpSdW11cyB1bXVtIDoNCg0KMS4gUmF0YS1SYXRhIChNZWFuKSA6IA0KDQokJA0KXGJhcntYfSA9IFxmcmFje1xzdW0gWF9pfXtufQ0KJCQNCg0KMi4gU2ltcGFuZ2FuIEJha3UgKFN0YW5kYXJ0IERldmlhc2kpIDoNCg0KJCQNCnMgPSBcc3FydHtcZnJhY3tcc3VtIChYX2kgLSBcYmFye1h9KV4yfXtuIC0gMX19DQokJA0KDQpEaW1hbmEgOg0KDQotICQoWF9pKSQ6IHJhdGEtcmF0YSBuaWxhaSB0aWFwIHJlc3BvbmRlbiBkYWxhbSBzYXR1IGRpbWVuc2kgIFwNCi0gJChuKSQgOiBqdW1sYWggcmVzcG9uZGVuDQoNCiMjIyMgKipBLiBQZXJoaXR1bmdhbiBTdGF0aXN0aWsgVGlhcCBEaW1lbnNpIExheWFuYW4gQWthZGVtaWsgKDUgUmVzcG9uZGVuIFBlcnRhbWEpKioNCg0KKioxLiBLZXB1YXNhbiBLUlMgT25saW5lIChBMeKAk0EzKSoqDQoNCi0gUmF0YS1SYXRhIFJlc3BvbmRlbiAxOg0KJFxiYXJ7WH1fMSA9IFxmcmFjezIgKyAyICsgM317M30gPSAyLjMzJCANCi0gUmF0YS1SYXRhIFJlc3BvbmRlbiAyOg0KJFxiYXJ7WH1fMiA9IFxmcmFjezQgKyA0ICsgNH17M30gPSA0LjAwJCANCi0gUmF0YS1SYXRhIFJlc3BvbmRlbiAzOg0KJFxiYXJ7WH1fMyA9IFxmcmFjezMgKyAzICsgNH17M30gPSAzLjMzJCANCi0gUmF0YS1SYXRhIFJlc3BvbmRlbiA0Og0KJFxiYXJ7WH1fNCA9IFxmcmFjezQgKyA1ICsgNH17M30gPSA0LjMzJCANCi0gUmF0YS1SYXRhIFJlc3BvbmRlbiA1Og0KJFxiYXJ7WH1fNSA9IFxmcmFjezEgKyAxICsgMn17M30gPSAxLjMzJA0KDQp8IEExIHwgQTIgfCBBMyB8IFJhdGEtUmF0YSAgfA0KfC0tLS18LS0tLXwtLS0tfC0tLS0tLS0tLS0tLXwNCnwgMiAgfCAyICB8IDMgIHwgMi4zMyAgICAgICB8DQp8IDQgIHwgNCAgfCA0ICB8IDQuMDAgICAgICAgfA0KfCAzICB8IDMgIHwgNCAgfCAzLjMzICAgICAgIHwNCnwgNCAgfCA1ICB8IDQgIHwgNC4zMyAgICAgICB8DQp8IDEgIHwgMSAgfCAyICB8IDEuMzMgICAgICAgfA0KDQoqUmF0YS1SYXRhIFNlbXVhIFJlc3BvbmRlbioNCg0KJCRcYmFye1h9ID0gXGZyYWN7Mi4zMyArIDQuMDAgKyAzLjMzICsgNC4zMyArIDEuMzN9ezV9ID0gXGZyYWN7MTUuMzJ9ezV9ID0gMy4wNyQkDQoNCi0gU2ltcGFuZ2FuIEJha3U6DQoNCg0KJCgyLjMzIC0gMy4wNyleMiA9IDAuNTQ3NiQgXA0KJCg0LjAwIC0gMy4wNyleMiA9IDAuODY0OSQgXA0KJCgzLjMzIC0gMy4wNyleMiA9IDAuMDY3NiQgXA0KJCg0LjMzIC0gMy4wNyleMiA9IDEuNTg3NiQgXA0KJCgxLjMzIC0gMy4wNyleMiA9IDMuMDI3NiQgDQoNCiQkcyA9IFxzcXJ0e1xmcmFjezAuNTQ3NiArIDAuODY0OSArIDAuMDY3NiArIDEuNTg3NiArIDMuMDI3Nn17NH19ID0gXHNxcnR7MS41MjM4fSA9IDEuMjMkJA0KDQoqKjIuIEJpbWJpbmdhbiBBa2FkZW1payAoQTQtQTcpKioNCg0KDQotIFJhdGEtUmF0YSBSZXNwb25kZW4gMToNCiRcYmFye1h9XzEgPSBcZnJhY3szICsgMyArIDMgKyAyfXs0fSA9IDIuNzUkDQotIFJhdGEtUmF0YSBSZXNwb25kZW4gMjoNCiRcYmFye1h9XzIgPSBcZnJhY3s0ICsgMyArIDQgKyAzfXs0fSA9IDMuNTAkDQotIFJhdGEtUmF0YSBSZXNwb25kZW4gMzoNCiRcYmFye1h9XzMgPSBcZnJhY3s0ICsgMyArIDQgKyAzfXs0fSA9IDMuNTAkDQotIFJhdGEtUmF0YSBSZXNwb25kZW4gNDoNCiRcYmFye1h9XzQgPSBcZnJhY3s0ICsgNCArIDUgKyA0fXs0fSA9IDQuMjUkDQotIFJhdGEtUmF0YSBSZXNwb25kZW4gNToNCiRcYmFye1h9XzUgPSBcZnJhY3syICsgMiArIDMgKyAyfXs0fSA9IDIuMjUkDQoNCnwgQTQgfCBBNSB8IEE2IHwgQTcgfCBSYXRhLVJhdGEgIHwNCnwtLS0tfC0tLS18LS0tLXwtLS0tLXwtLS0tLS0tLS0tLS18DQp8IDMgIHwgMyAgfCAzICB8IDIgfCAyLjc1ICAgICAgIHwNCnwgNCAgfCAzICB8IDQgIHwgMyB8IDMuNTAgICAgICAgfA0KfCA0ICB8IDMgIHwgNCAgfCAzIHwgMy41MCAgICAgICB8DQp8IDQgIHwgNCAgfCA1ICB8IDQgfCA0LjI1ICAgICAgIHwNCnwgMiAgfCAyICB8IDMgIHwgMiB8IDIuMjUgICAgICAgfA0KDQoNCipSYXRhLVJhdGEgU2VtdWEgUmVzcG9uZGVuKg0KDQokJFxiYXJ7WH0gPSBcZnJhY3syLjc1ICsgMy41MCArIDMuNTAgKyA0LjI1ICsgMi4yNX17NX0gPSAzLjI1JCQNCg0KLSBTaW1wYW5nYW4gQmFrdToNCg0KJCgyLjc1IC0gMy4yNSleMiA9IDAuMjUkIFwNCiQoMy41MCAtIDMuMjUpXjIgPSAwLjA2MjUkIFwNCiQoMy41MCAtIDMuMjUpXjIgPSAwLjA2MjUkIFwNCiQoNC4yNSAtIDMuMjUpXjIgPSAxLjAwJCBcDQokKDIuMjUgLSAzLjI1KV4yID0gMS4wMCQgDQoNCiQkcyA9IFxzcXJ0e1xmcmFjezAuMjUgKyAwLjA2MjUgKyAwLjA2MjUgKyAxLjAwICsgMS4wMH17NH19ID0gXHNxcnR7MC41OTM3NX0gPSAwLjc3JCQNCg0KKiozLiBQZWxheWFuYW4gQWRtaW5pc3RyYXRpZiAoQTggLUExMSkqKg0KDQotIFJhdGEtUmF0YSBSZXNwb25kZW4gMToNCiRcYmFye1h9XzEgPSBcZnJhY3szICsgMyArIDIgKyAzfXs0fSA9IDIuNzUkDQoNCi0gUmF0YS1SYXRhIFJlc3BvbmRlbiAyOg0KJFxiYXJ7WH1fMiA9IFxmcmFjezQgKyA0ICsgNCArIDR9ezR9ID0gNC4wMCQNCi0gUmF0YS1SYXRhIFJlc3BvbmRlbiAzOg0KJFxiYXJ7WH1fMyA9IFxmcmFjezQgKyAzICsgMyArIDN9ezR9ID0gMy4yNSQNCi0gUmF0YS1SYXRhIFJlc3BvbmRlbiA0Og0KJFxiYXJ7WH1fNCA9IFxmcmFjezQgKyA0ICsgNCArIDR9ezR9ID0gNC4wMCQNCi0gUmF0YS1SYXRhIFJlc3BvbmRlbiA1Og0KJFxiYXJ7WH1fNSA9IFxmcmFjezIgKyAyICsgMiArIDJ9ezR9ID0gMi4wMCQNCg0KfCBBOCB8IEE5IHwgQTEwIHwgQTExIHwgUmF0YS1SYXRhICB8DQp8LS0tLXwtLS0tfC0tLS18LS0tLS18LS0tLS0tLS0tLS0tfA0KfCAzICB8IDMgIHwgMiAgfCAzIHwgMi43NSAgICAgICB8DQp8IDQgIHwgNCAgfCA0ICB8IDQgfCA0LjAwICAgICAgIHwNCnwgNCAgfCAzICB8IDMgIHwgMyB8IDMuMjUgICAgICAgfA0KfCA0ICB8IDQgIHwgNCAgfCA0IHwgNC4wMCAgICAgICB8DQp8IDIgIHwgMiAgfCAyICB8IDIgfCAyLjAwICAgICAgIHwNCg0KKlJhdGEtUmF0YSBTZW11YSBSZXNwb25kZW4qDQoNCiQkXGJhcntYfSA9IFxmcmFjezIuNzUgKyA0LjAwICsgMy4yNSArIDQuMDAgKyAyLjAwfXs1fSA9IFxmcmFjezE2LjAwfXs1fSA9IDMuMjAkJA0KDQotIFNpbXBhbmdhbiBCYWt1Og0KDQokKDIuNzUgLSAzLjIwKV4yID0gMC4yMDI1JCBcDQokKDQuMDAgLSAzLjIwKV4yID0gMC42NCQgXA0KJCgzLjI1IC0gMy4yMCleMiA9IDAuMDAyNSQgXA0KJCg0LjAwIC0gMy4yMCleMiA9IDAuNjQkIFwNCiQoMi4wMCAtIDMuMjApXjIgPSAxLjQ0JA0KDQokJHMgPSBcc3FydHtcZnJhY3swLjIwMjUgKyAwLjY0ICsgMC4wMDI1ICsgMC42NCArIDEuNDR9ezR9fSA9IFxzcXJ0ezEuNzF9ID0gMS4zMSQkDQoNCioqMy4gQWtzZXMgSW5mb3JtYXNpIEFrYWRlbWlrIChBMTItQTE0KSoqDQoNCi0gUmF0YS1SYXRhIFJlc3BvbmRlbiAxOg0KJFxiYXJ7WH1fMSA9IFxmcmFjezMgKyAyICsgMn17M30gID0gMi4zMyQNCi0gUmF0YS1SYXRhIFJlc3BvbmRlbiAyOg0KJFxiYXJ7WH1fMiA9IFxmcmFjezQgKyA0ICsgM317M30gPSAzLjY3JA0KLSBSYXRhLVJhdGEgUmVzcG9uZGVuIDM6DQokXGJhcntYfV8zID0gXGZyYWN7MyArIDMgKyAzfXszfSA9IDMuMDAkDQotIFJhdGEtUmF0YSBSZXNwb25kZW4gNDoNCiRcYmFye1h9XzQgPSBcZnJhY3s0ICsgNSArIDR9ezN9ICA9IDQuMzMkDQotIFJhdGEtUmF0YSBSZXNwb25kZW4gNToNCiRcYmFye1h9XzUgPSBcZnJhY3syICsgMSArIDJ9ezN9ICA9IDEuNjckDQoNCnwgQTEyfCBBMTN8IEExNHwgUmF0YS1SYXRhIHwNCnwtLS0tfC0tLS18LS0tLXwtLS0tLS0tLS0tLS0tfA0KfCAzICB8IDIgIHwgMiAgfCAgMi4zMyAgICAgICB8DQp8IDQgIHwgNCAgfCAzICB8ICAzLjY3ICAgICAgIHwNCnwgMyAgfCAzICB8IDMgIHwgIDMuMDAgICAgICAgfA0KfCA0ICB8IDUgIHwgNCAgfCAgNC4zMyAgICAgICB8DQp8IDIgIHwgMSAgfCAyICB8ICAxLjY3ICAgICAgIHwNCg0KDQoqUmF0YS1SYXRhIFNlbXVhIFJlc3BvbmRlbioNCg0KJCRcYmFye1h9ID0gXGZyYWN7Mi4zMyArIDMuNjcgKyAzLjAwICsgNC4zMyArIDEuNjd9ezV9ID0gXGZyYWN7MTUuMDB9ezV9ID0gMy4wMCQkDQoNCi0gU2ltcGFuZ2FuIEJha3U6DQoNCiQoMi4zMyAtIDMuMDApXjIgPSAwLjQ0ODkkIFwNCiQoMy42NyAtIDMuMDApXjIgPSAwLjQ0ODkkIFwNCiQoMy4wMCAtIDMuMDApXjIgPSAwJCBcDQokKDQuMzMgLSAzLjAwKV4yID0gMS43Njg5JCBcDQokKDEuNjcgLSAzLjAwKV4yID0gMS43Njg5JCANCg0KJCRzID0gXHNxcnR7XGZyYWN7MC40NDg5ICsgMC40NDg5ICsgMCArIDEuNzY4OSArIDEuNzY4OX17NH19ID0gXHNxcnR7MS4xMDkxNX0gPSAxLjA1JCQNCg0KKio0LiBCYW50dWFuIFBlbnllbGVzYWlhbiBTdHVkaSAoQTE1LUExNykqKg0KDQotIFJhdGEtUmF0YSBSZXNwb25kZW4gMToNCiRcYmFye1h9X3sxfSA9IFxmcmFjezMgKyAyICsgMn17M30gPSBcZnJhY3s3fXszfSA9IDIuMzMkDQotIFJhdGEtUmF0YSBSZXNwb25kZW4gMjoNCiRcYmFye1h9X3syfSA9IFxmcmFjezQgKyAzICsgM317M30gPSBcZnJhY3sxMH17M30gPSAzLjMzJA0KLSBSYXRhLVJhdGEgUmVzcG9uZGVuIDM6DQokXGJhcntYfV97M30gPSBcZnJhY3szICsgMyArIDN9ezN9ID0gXGZyYWN7OX17M30gPSAzLjAwJA0KLSBSYXRhLVJhdGEgUmVzcG9uZGVuIDQ6DQokXGJhcntYfV97NH0gPSBcZnJhY3s0ICsgNCArIDR9ezN9ID0gXGZyYWN7MTJ9ezN9ID0gNC4wMCQNCi0gUmF0YS1SYXRhIFJlc3BvbmRlbiA1Og0KJFxiYXJ7WH1fezV9ID0gXGZyYWN7MiArIDIgKyAyfXszfSA9IFxmcmFjezZ9ezN9ID0gMi4wMCQNCg0KfCBBMTUgfCBBMTYgfCBBMTcgfCAgUmF0YS1SYXRhICB8DQp8LS0tLXwtLS0tfC0tLS18LS0tLS0tLS0tLS0tfA0KfCAzICB8IDIgIHwgMiAgfCAgMi4zMyAgICAgICB8DQp8IDQgIHwgMyAgfCAzICB8ICAzLjMzICAgICAgIHwNCnwgMyAgfCAzICB8IDMgIHwgIDMuMDAgICAgICAgfA0KfCA0ICB8IDQgIHwgNCAgfCAgNC4wMCAgICAgICB8DQp8IDIgIHwgMiAgfCAyICB8ICAyLjAwICAgICAgIHwNCg0KKlJhdGEtUmF0YSBTZW11YSBSZXNwb25kZW4qDQoNCiQkXGJhcntYfSA9IFxmcmFjezIuMzMgKyAzLjMzICsgMy4wMCArIDQuMDAgKyAyLjAwfXs1fSA9IFxmcmFjezE0LjY2fXs1fSA9IDIuOTMkJA0KDQotIFNpbXBhbmdhbiBCYWt1Og0KDQokKDIuMzMgLSAyLjkzKV4yID0gMC4zNiQgXA0KJCgzLjMzIC0gMi45MyleMiA9IDAuMTYkIFwNCiQoMy4wMCAtIDIuOTMpXjIgPSAwLjAwNDkkIFwNCiQoNC4wMCAtIDIuOTMpXjIgPSAxLjE0NDkkIFwNCiQoMi4wMCAtIDIuOTMpXjIgPSAwLjg2NDkkIA0KDQokJHMgPSBcc3FydHtcZnJhY3swLjM2ICsgMC4xNiArIDAuMDA0OSArIDEuMTQ0OSArIDAuODY0OX17NH19ID0gXHNxcnR7MC42MzM2fSA9IDAuODAkJA0KDQojIyMjICpCLiBIaXR1bmdhbiBPdG9tYXRpcyoNCg0KYGBge3IgZWNobz1UUlVFLCBtZXNzYWdlPVRSVUUsIHdhcm5pbmc9VFJVRX0NCiMgTGlzdCBkYXRhIHBlciBkaW1lbnNpDQpkYXRhX2xpc3QgPC0gbGlzdCgNCiAgIktSUyBPbmxpbmUiID0gbGlzdChjKDIsNCwzLDQsMSksIGMoMiw0LDMsNSwxKSwgYygzLDQsNCw0LDIpKSwNCiAgIkJpbWJpbmdhbiBBa2FkZW1payIgPSBsaXN0KGMoMyw0LDQsNCwyKSwgYygzLDMsMyw0LDIpLCBjKDMsNCw0LDUsMyksIGMoMiwzLDMsNCwyKSksDQogICJQZWxheWFuYW4gQWRtaW5pc3RyYXRpZiIgPSBsaXN0KGMoMyw0LDQsNCwyKSwgYygzLDQsMyw0LDIpLCBjKDIsNCwzLDQsMiksIGMoMyw0LDMsNCwyKSksDQogICJBa3NlcyBJbmZvcm1hc2kgQWthZGVtaWsiID0gbGlzdChjKDMsNCwzLDQsMiksIGMoMiw0LDMsNSwxKSwgYygyLDMsMyw0LDIpKSwNCiAgIkJhbnR1YW4gUGVueWVsZXNhaWFuIFN0dWRpIiA9IGxpc3QoYygzLDQsMyw0LDIpLCBjKDIsMywzLDQsMiksIGMoMiwzLDMsNCwyKSkNCikNCg0KIyBIaXR1bmcgaGFzaWwNCmhhc2lsIDwtIGRhdGEuZnJhbWUoRGltZW5zaT1jaGFyYWN0ZXIoKSwgUmF0YV9yYXRhPW51bWVyaWMoKSwgU2ltcGFuZ2FuX0Jha3U9bnVtZXJpYygpKQ0KDQpmb3IgKG5hbWEgaW4gbmFtZXMoZGF0YV9saXN0KSkgew0KICBtYXQgPC0gZG8uY2FsbChjYmluZCwgZGF0YV9saXN0W1tuYW1hXV0pDQogIHJhdGEgPC0gcm93TWVhbnMobWF0KQ0KICBoYXNpbCA8LSByYmluZChoYXNpbCwgZGF0YS5mcmFtZShEaW1lbnNpPW5hbWEsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhdGFfcmF0YT1yb3VuZChtZWFuKHJhdGEpLCAyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2ltcGFuZ2FuX0Jha3U9cm91bmQoc2QocmF0YSksIDIpKSkNCn0NCg0KcHJpbnQoaGFzaWwpDQpgYGANCg0KIyMjIyAqQy5WaXN1YWxpc2FzaSoNCg0KYGBge3IgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkocGxvdGx5KQ0KDQojIERhdGEgZGltZW5zaSwgcmF0YS1yYXRhLCBkYW4gc2ltcGFuZ2FuIGJha3UNCmhhc2lsIDwtIGRhdGEuZnJhbWUoDQogIERpbWVuc2kgPSBjKCJLUlMgT25saW5lIiwgIkJpbWJpbmdhbiBBa2FkZW1payIsICJQZWxheWFuYW4gQWRtaW5pc3RyYXRpZiIsIA0KICAgICAgICAgICAgICAiQWtzZXMgSW5mb3JtYXNpIEFrYWRlbWlrIiwgIkJhbnR1YW4gUGVueWVsZXNhaWFuIFN0dWRpIiksDQogIFJhdGFfcmF0YSA9IGMoMy4wNywgMy4yNSwgMy4yMCwgMy4wMCwgMi45MyksDQogIFNpbXBhbmdhbl9CYWt1ID0gYygxLjIzLCAwLjc3LCAxLjcxLCAxLjA1LCAwLjgwKQ0KKQ0KDQojIFZpc3VhbGlzYXNpIGludGVyYWt0aWYgdW50dWsgcmF0YS1yYXRhIGRhbiBzaW1wYW5nYW4gYmFrdQ0KZmlnIDwtIHBsb3RfbHkoZGF0YSA9IGhhc2lsLCB4ID0gfkRpbWVuc2kpICU+JQ0KICBhZGRfdHJhY2UoeSA9IH5SYXRhX3JhdGEsIHR5cGUgPSAnYmFyJywgbmFtZSA9ICdSYXRhLXJhdGEnLCBtYXJrZXIgPSBsaXN0KGNvbG9yID0gJ3BpbmsnKSkgJT4lDQogIGFkZF90cmFjZSh5ID0gflNpbXBhbmdhbl9CYWt1LCB0eXBlID0gJ2JhcicsIG5hbWUgPSAnU2ltcGFuZ2FuIEJha3UnLCBtYXJrZXIgPSBsaXN0KGNvbG9yID0gJ3B1cnBsZScpKSAlPiUNCiAgbGF5b3V0KA0KICAgIHRpdGxlID0gIlJhdGEtcmF0YSBkYW4gU2ltcGFuZ2FuIEJha3UgVGlhcCBEaW1lbnNpIExheWFuYW4iLA0KICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJOaWxhaSIsIHJhbmdlID0gYygwLCA1KSksDQogICAgYmFybW9kZSA9ICdncm91cCcsICMgTWVuYW1waWxrYW4gYmFyIHNlY2FyYSBiZXJkYW1waW5nYW4NCiAgICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiRGltZW5zaSIpDQogICkNCg0KIyBNZW5hbXBpbGthbiBncmFmaWsNCmZpZw0KYGBgDQoNCiMjIyMgKkQuIEludGVycHJldGFzaSoNCg0KQmVyZGFzYXJrYW4gaGFzaWwgdmlzdWFsaXNhc2kgZGlhdGFzLCBkYXBhdCBkaXNpbXB1bGthbiBiYWh3YSAqRGltZW5zaSBLUlMgb25saW5lKiBtZW1pbGlraSByYXRhLXJhdGEgMy4wNyBkZW5nYW4gc2ltcGFuZ2FuIGJha3UgMS4yMywgbWVudW5qdWtrYW4gYmFod2EgdGluZ2thdCBrZXB1dHVzYW4geWFuZyBtb2RlcmF0IGRlbmdhbiB2YXJpYXNpIHlhbmcgY3VrdXAgYmVzYXIgYW50YXIgcmVzcG9uZGVuLiANCg0KKkRpbWVuc2kgQmltYmluZ2FuIEFrYWRlbWlrKiBtZW1pbGlraSByYXRhLXJhdGEgMy4yNSBkYW4gc2ltcGFuZ2FuIGJha3UgMC43NywgeWFuZyBtZW5naW5kaWthc2lrYW4gdGluZ2thdCBrZXB1YXNhbiB5YW5nIGxlYmloIHRpbmdnaSBkYW4gbGViaWgga29uc2lzdGVuIGRpIGFudGFyYSByZXNwb25kZW4uIA0KVW50dWsgKlBlbGF5YW5hbiBBZG1pbmlzdHJhdGlmKiwgZGVuZ2FuIHJhdGEtcmF0YSAzLjIwIGRhbiBzaW1wYW5nYW4gYmFrdSAxLjcxLCB0ZXJkYXBhdCBrZXRpZGFrc2V0YXJhYW4geWFuZyBqZWxhcyBkYWxhbSBrZXB1YXNhbiByZXNwb25kZW4gbWVza2lwdW4gcmF0YS1yYXRhbnlhIHRpZGFrIGphdWggYmVyYmVkYSBkZW5nYW4gKkJpbWJpbmdhbiBBa2FkZW1payouIEthcmVuYSBwYWRhICpBa3NlcyBJbmZvcm1hc2kgQWthZGVtaWsqIGRlbmdhbiByYXRhLXJhdGEgMy4wMCBkYW4gc2ltcGFuZ2FuIGJha3UgMS4wNSwgdGVybGloYXQgdGluZ2thdCBrZXB1YXNhbiB5YW5nIHNlZGlraXQgbGViaWggcmVuZGFoIGRhbiB2YXJpYXNpIHlhbmcgY3VrdXAgYmVzYXIsIG1lbmFuZGFrYW4ga2V0aWRha3B1YXNhbiB5YW5nIGxlYmloIHRpbmdnaSBkaWFudGFyYSBzZWJhZ2lhbiByZXNwb25kZW4sDQoNCkRhbiB1bnR1ayAqQmFudHVhbiBQZW55ZWxlc2FpYW4gc3R1ZGkqIG1lbWlsaWtpIHJhdGEtcmF0YSAyLDkzIGRhbiBzaW1wYW5nYW4gYmFrdSAwLjgwLCB5YW5nIG1lbnVuanVra2FuIGJhaHdhIHRpbmdrYXQga2VwdWFzYW4geWFuZyBsZWJpaCByZW5kYWggZGFuIHJlbGF0aWYga29uc2lzdGVuLg0KU2VjYXJhIGtlc2VsdXJ1aGFuLCB2aXN1YWxpc2FzaSBpbmkgbWVuZ2dhbWJhcmthbiBwZXJiZWRhYW4geWFuZyBzaWduaWZpa2FuIGRhbGFtIHRpbmdrYXQga2VwdWFzYW4gZGFuIGtvbnNpc3RlbnNpIHBlbmlsYWlhbiBhbnRhciBkaW1lbnNpIGxheWFuYW4uDQoNCg0KIyMjICoqNC4gS2VzaW1wdWxhbiBBbmFsaXNpcyBBd2FsKioNCg0KDQpCZXJkYXNhcmthbiBoYXNpbCBhbmFsaXNpcyB0ZXJoYWRhcCBkYXRhIHNpbXVsYXNpIGRhcmkgMTAwIHJlc3BvbmRlbiwgc3VydmVpIGtlcHVhc2FuIG1haGFzaXN3YSB0ZXJoYWRhcCBsaW1hIGRpbWVuc2kgbGF5YW5hbiBha2FkZW1payBrYW1wdXMgc2VjYXJhIHVtdW0gbWVudW5qdWtrYW4gdGluZ2thdCBrZXB1YXNhbiB5YW5nICoqY3VrdXAgYmFpayoqLCBkZW5nYW4gbmlsYWkgcmF0YS1yYXRhIChtZWFuKSBhbnRhcmEgKioyLDkzIGhpbmdnYSAzLDI1KiogcGFkYSBza2FsYSBMaWtlcnQgMS01LiBEaW1lbnNpICoqQmFudHVhbiBQZW55ZWxlc2FpYW4gU3R1ZGkqKiAoQTE14oCTQTE3KSBtZW5jYXRhdGthbiBuaWxhaSBtZWFuIHRlcnRpbmdnaSAoKiozLDI1KiopLCB5YW5nIG1lbmdpbmRpa2FzaWthbiBiYWh3YSBtYWhhc2lzd2EgbWVyYXNhIGN1a3VwIHRlcmJhbnR1IGRhbGFtIG1lbnllbGVzYWlrYW4gc3R1ZGkgbWVyZWthLiBTZWJhbGlrbnlhLCBkaW1lbnNpICoqQmltYmluZ2FuIEFrYWRlbWlrKiogKEE04oCTQTcpIG1lbWlsaWtpIG5pbGFpIG1lYW4gdGVyZW5kYWggKCoqMiw5MyoqKSwgbWVudW5qdWtrYW4gYWRhbnlhIHJ1YW5nIHlhbmcgY3VrdXAgYmVzYXIgdW50dWsgbWVuaW5na2F0a2FuIGt1YWxpdGFzIGtvbXVuaWthc2kgZGFuIGR1a3VuZ2FuIGRhcmkgZG9zZW4gcGVtYmltYmluZy4NCg0KKipBLiBBbmFsaXNpcyBEYXRhKioNCg0KMS4gKipNZWFuKio6DQogICAtIFJhdGEtcmF0YSBrZXB1YXNhbiBtYWhhc2lzd2EgcGFkYSBzZWx1cnVoIGRpbWVuc2kgYmVya2lzYXIgYW50YXJhIDIsOTMgaGluZ2dhIDMsMjUsIG1lbnVuanVra2FuIGJhaHdhIHNlY2FyYSBrZXNlbHVydWhhbiwgbGF5YW5hbiBha2FkZW1payBzdWRhaCBjdWt1cCBiYWlrLCBuYW11biBhZGEgYXJlYSB5YW5nIG1hc2loIHBlcmx1IHBlcmJhaWthbiBsZWJpaCBsYW5qdXQuDQoNCjIuICoqTWVkaWFuKio6DQogICAtIEFuYWxpc2lzIG1lZGlhbiBtZW51bmp1a2thbiBiYWh3YSBzZWJhZ2lhbiBiZXNhciByZXNwb25kZW4gbWVtYmVyaWthbiBqYXdhYmFuIHlhbmcgY2VuZGVydW5nIGJlcmFkYSBwYWRhIGthdGVnb3JpIG5ldHJhbCAoMykuIEluaSBtZW51bmp1a2thbiBiYWh3YSBtZXNraXB1biBsYXlhbmFuIGFrYWRlbWlrIGRpbmlsYWkgY3VrdXAgYmFpaywgcGVyc2Vwc2kgbWFoYXNpc3dhIGNlbmRlcnVuZyB0aWRhayBzZXBlbnVobnlhIHB1YXMgYXRhdSB0aWRhayBzZXBlbnVobnlhIG5lZ2F0aWYsIGRlbmdhbiBzZWJhZ2lhbiBiZXNhciBiZXJhZGEgcGFkYSBwb3Npc2kgdGVuZ2FoLg0KDQozLiAqKk1vZHVzKio6DQogICAtIEhhc2lsIGFuYWxpc2lzIG1vZHVzIG1lbnVuanVra2FuIGFkYW55YSBrZXJhZ2FtYW4gcGVuZGFwYXQgYXRhdSBwZXJzZXBzaSBhbnRhciByZXNwb25kZW4uIEJlYmVyYXBhIGRpbWVuc2ksIHNlcGVydGkgUGVsYXlhbmFuIEFkbWluaXN0cmFzaSBkYW4gQWtzZXMgSW5mb3JtYXNpIEFrYWRlbWlrLCBtZW1pbGlraSBsZWJpaCBkYXJpIHNhdHUgbmlsYWkgbW9kdXMsIHlhbmcgbWVuY2VybWlua2FuIHZhcmlhc2kgZGFsYW0gcGVuZ2FsYW1hbiBkYW4ga2VwdWFzYW4gbWFoYXNpc3dhIHRlcmhhZGFwIGxheWFuYW4gdGVyc2VidXQuIE1pc2FsbnlhLCBwYWRhIGRpbWVuc2kgQmltYmluZ2FuIEFrYWRlbWlrLCBuaWxhaSBtb2R1cyB5YW5nIGxlYmloIHJlbmRhaCAobW9kdXMgPSAyKSBtZW51bmp1a2thbiBiYWh3YSBhZGEgYmFueWFrIG1haGFzaXN3YSB5YW5nIG1lcmFzYSBrdXJhbmcgcHVhcyBkZW5nYW4gbGF5YW5hbiB0ZXJzZWJ1dC4NCg0KKipCLiBBbmFsaXNpcyBJbnN0cnVtZW4gU3VydmVpKioNCg0KU3VydmVpIGluaSBtZW5nZ3VuYWthbiAqKnNrYWxhIExpa2VydCAxLTUqKiB1bnR1ayBtZW5ndWt1ciBrZXB1YXNhbiBtYWhhc2lzd2EgdGVyaGFkYXAgbGltYSBkaW1lbnNpIGxheWFuYW4gYWthZGVtaWsgeWFuZyB0ZWxhaCBkaXRldGFwa2FuLCB5YWl0dToNCg0KMS4gS1JTIE9ubGluZSBcDQoyLiBCaW1iaW5nYW4gQWthZGVtaWsgXA0KMy4gUGVsYXlhbmFuIEFkbWluaXN0cmFzaSBcDQo0LiBBa3NlcyBJbmZvcm1hc2kgQWthZGVtaWsgXA0KNS4gQmFudHVhbiBQZW55ZWxlc2FpYW4gU3R1ZGkNCg0KSW5zdHJ1bWVuIHN1cnZlaSB0ZWxhaCBkaXZhbGlkYXNpIG1lbGFsdWkgcGVuZGVrYXRhbiB2YWxpZGl0YXMgaXNpIGRhbiB2YWxpZGl0YXMga29uc3RyYWssIHNlcnRhIGRpdWppIHJlbGlhYmlsaXRhc255YSBtZW5nZ3VuYWthbiAqQ3JvbmJhY2jigJlzIEFscGhhKi4gSGFzaWwgZGFyaSB1amkgcmVsaWFiaWxpdGFzIG1lbnVuanVra2FuIGJhaHdhIGluc3RydW1lbiBzdXJ2ZWkgY3VrdXAga29uc2lzdGVuIGRhbGFtIG1lbmd1a3VyIGRpbWVuc2ktZGltZW5zaSB5YW5nIGFkYS4NCg0KKipDLiBUZW11YW4gVXRhbWEqKg0KDQoxLiBCYW50dWFuIFBlbnllbGVzYWlhbiBTdHVkaTogTWVuZGFwYXRrYW4gdGluZ2thdCBrZXB1YXNhbiB0ZXJ0aW5nZ2kgZGVuZ2FuIG5pbGFpIG1lYW4gPSAzLDI1IGRhbiBtb2R1cyA9IDUsIG1lbnVuanVra2FuIGJhaHdhIG1haGFzaXN3YSBtZXJhc2EgY3VrdXAgdGVyYmFudHUgZGFsYW0gcHJvc2VzIHBlbnllbGVzYWlhbiBzdHVkaSBtZXJla2EuDQoyLiBCaW1iaW5nYW4gQWthZGVtaWs6IE1lbmNhdGF0a2FuIHNrb3IgcmF0YS1yYXRhIHRlcmVuZGFoIGRlbmdhbiBtZWFuID0gMiw5MyBkYW4gbW9kdXMgPSAyLCBtZW51bmp1a2thbiBwZXJsdW55YSBwZW5pbmdrYXRhbiBkYWxhbSBrb211bmlrYXNpIGRhbiBhcmFoIGJpbWJpbmdhbiBkYXJpIGRvc2VuIHBlbWJpbWJpbmcuDQozLiBBa3NlcyBJbmZvcm1hc2kgQWthZGVtaWsgZGFuIFBlbGF5YW5hbiBBZG1pbmlzdHJhc2k6IE1lbnVuanVra2FuIHZhcmlhc2kgZGFsYW0gcmVzcG9uIG1haGFzaXN3YSBkZW5nYW4gYmViZXJhcGEgbmlsYWkgbW9kdXMsIG1lbmdpbmRpa2FzaWthbiBwZXJiZWRhYW4gcGVuZ2FsYW1hbiBhbnRhcmEgbWFoYXNpc3dhIGRhbGFtIG1lbmdha3NlcyBpbmZvcm1hc2kgYWthZGVtaWsgZGFuIGxheWFuYW4gYWRtaW5pc3RyYXNpLg0KDQojIyMgKio1LiBSZWtvbWVuZGFzaSB1bnR1ayBQZW5pbmdrYXRhbiBMYXlhbmFuKioNCg0KQmVyZGFzYXJrYW4gdGVtdWFuIGFuYWxpc2lzLCBhZGEgYmViZXJhcGEgYXJlYSB5YW5nIGRhcGF0IG1lbmphZGkgZm9rdXMgcGVyYmFpa2FuOg0KDQoxLiAqKkJpbWJpbmdhbiBBa2FkZW1payoqOiANCiAgIC0gUGVyYmFpa2FuIGt1YWxpdGFzIGtvbXVuaWthc2kgZGFuIGR1a3VuZ2FuIGFudGFyYSBkb3NlbiBwZW1iaW1iaW5nIGRhbiBtYWhhc2lzd2EgcGVybHUgbWVuamFkaSBwcmlvcml0YXMuIFBlbnllZGlhYW4gc2VzaSBiaW1iaW5nYW4geWFuZyBsZWJpaCB0ZXJzdHJ1a3R1ciBkYW4gZWZla3RpZiwgc2VydGEgcGVtYW5mYWF0YW4gdGVrbm9sb2dpIHVudHVrIGtvbXVuaWthc2kgeWFuZyBsZWJpaCBjZXBhdCBkYW4gZWZpc2llbiwgc2FuZ2F0IGRpcGVybHVrYW4uDQoNCjIuICoqQWtzZXMgSW5mb3JtYXNpIEFrYWRlbWlrKio6DQogICAtIFBlbmluZ2thdGFuIHN0YWJpbGl0YXMgZGFuIGtlYW5kYWxhbiBzaXN0ZW0gYWtzZXMgaW5mb3JtYXNpIGFrYWRlbWlrIGFnYXIgbGViaWggaW5mb3JtYXRpZiwgbXVkYWggZGlha3NlcywgZGFuIGRhcGF0IG1lbmd1cmFuZ2kga2ViaW5ndW5nYW4gZGkga2FsYW5nYW4gbWFoYXNpc3dhIG1lbmdlbmFpIGluZm9ybWFzaSB5YW5nIHRlcnNlZGlhLg0KDQozLiAqKlBlbGF5YW5hbiBBZG1pbmlzdHJhc2kqKjoNCiAgIC0gTWVza2lwdW4gdGlkYWsgbWVudW5qdWtrYW4gc2tvciB0ZXJlbmRhaCwgcGVsYXlhbmFuIGFkbWluaXN0cmFzaSBtYXNpaCBtZW1pbGlraSB2YXJpYXNpIHlhbmcgbWVudW5qdWtrYW4gYWRhbnlhIHBlcmJlZGFhbiBkYWxhbSBwZW5nYWxhbWFuIG1haGFzaXN3YS4gUHJvc2VzIGFkbWluaXN0cmFzaSB5YW5nIGxlYmloIHRyYW5zcGFyYW4gZGFuIGVmaXNpZW4gZGFwYXQgbWVtYmFudHUgbWVuaW5na2F0a2FuIGtlcHVhc2FuIG1haGFzaXN3YS4NCg0KNC4gKipLUlMgT25saW5lKio6DQogICAtIERpbWVuc2kgS1JTIE9ubGluZSBkYXBhdCBkaXBlcnRpbWJhbmdrYW4gdW50dWsgZXZhbHVhc2kgbGViaWggbGFuanV0LCBtZXNraXB1biB0aWRhayBkaXNlYnV0a2FuIHNlYmFnYWkgcHJpb3JpdGFzIHV0YW1hIGRhbGFtIHRlbXVhbiBpbmksIG5hbXVuIHByb3NlcyB5YW5nIGxlYmloIGludHVpdGlmIGRhbiBtaW5pbSBnYW5nZ3VhbiB0ZWtuaXMgZGFwYXQgbGViaWggbWVuaW5na2F0a2FuIGtlcHVhc2FuIG1haGFzaXN3YS4NCg0KIyMjICoqNi4gS2VzaW1wdWxhbioqDQoNCkRhcmkgYW5hbGlzaXMgZGVza3JpcHRpZiBhd2FsLCB0ZXJsaWhhdCBiYWh3YSBkaW1lbnNpIEJpbWJpbmdhbiBBa2FkZW1payBtZW1pbGlraSB0aW5na2F0IGtlcHVhc2FuIHRlcnRpbmdnaSBkYW4gcGFsaW5nIHN0YWJpbCwgc2VkYW5na2FuIEJhbnR1YW4gUGVueWVsZXNhaWFuIFN0dWRpIGRhbiBBa3NlcyBJbmZvcm1hc2kgQWthZGVtaWsgbWVudW5qdWtrYW4gdmFyaWFzaSB5YW5nIGxlYmloIGJlc2FyIGRhbiBiaXNhIG1lbmphZGkgZm9rdXMgcGVyYmFpa2FuIGtlIGRlcGFuIFNlY2FyYSBrZXNlbHVydWhhbiwgbWVza2lwdW4gbGF5YW5hbiBha2FkZW1payBkaSBrYW1wdXMgdGVsYWggYmVyamFsYW4gY3VrdXAgYmFpaywgdGVyZGFwYXQgcnVhbmcgdW50dWsgcGVyYmFpa2FuIGxlYmloIGxhbmp1dCwgdGVydXRhbWEgcGFkYSBkaW1lbnNpIEJpbWJpbmdhbiBBa2FkZW1payBkYW4gQWtzZXMgSW5mb3JtYXNpIEFrYWRlbWlrLg0KDQpEYXRhIGhhc2lsIHN1cnZlaSBpbmkgbWVtYmVyaWthbiBnYW1iYXJhbiBhd2FsIHlhbmcgYmVyaGFyZ2EgdW50dWsgbWVueXVzdW4gc3RyYXRlZ2kgcGVyYmFpa2FuIHlhbmcgbGViaWggdGVyYXJhaCBkYW4gYmVyYmFzaXMgZGF0YSwgZ3VuYSBtZW5pbmdrYXRrYW4gcGVuZ2FsYW1hbiBha2FkZW1payBtYWhhc2lzd2Egc2VjYXJhIG1lbnllbHVydWggZGFuIG1lbXVhc2thbi4gRGVuZ2FuIGFkYW55YSBwZXJiYWlrYW4geWFuZyB0ZXJmb2t1cyBwYWRhIGFyZWEtYXJlYSB5YW5nIG1lbWJ1dHVoa2FuIHBlcmhhdGlhbiwgZGloYXJhcGthbiBkYXBhdCBtZW5jaXB0YWthbiBsYXlhbmFuIGFrYWRlbWlrIHlhbmcgbGViaWggZWZla3RpZiwgZWZpc2llbiwgZGFuIG1lbWVudWhpIGtlYnV0dWhhbiBtYWhhc2lzd2EuDQo=