Ukuran Penyebaran Data

1 Latihan 1

1.1 Data Penjualan

  • Cabang A: 50, 55, 60, 65, 70

  • Cabang B: 40, 50, 60, 70, 80

  • Cabang C: 30, 30, 35, 40, 45

  • Cabang D: 70, 75, 80, 85, 90

1.2 Menghitung rata-rata, median, dan standar deviasi untuk masing-masing cabang

  1. Cabang A (50, 55, 60, 65, 70):
  • Rata-rata:
    \[ \frac{50 + 55 + 60 + 65 + 70}{5} = 60 \]

  • Median:
    Nilai tengahnya adalah 60.

  • Standar Deviasi:

    \[ s = \sqrt{\frac{\sum{(x_i - \bar{x})^2}}{n-1}} \]
    Substitusi nilai:
    \[ s = \sqrt{\frac{(50-60)^2 + (55-60)^2 + (60-60)^2 + (65-60)^2 + (70-60)^2}{4}} = 7.91 \]

  1. Cabang B (40, 50, 60, 70, 80):
  • Rata-rata:
    \[ \frac{40 + 50 + 60 + 70 + 80}{5} = 60 \]

  • Median: Nilai tengahnya adalah 60.

  • Standar Deviasi:
    \[ s = \sqrt{\frac{(40-60)^2 + (50-60)^2 + (60-60)^2 + (70-60)^2 + (80-60)^2}{4}} = 15.81 \]

  1. Cabang C (30, 30, 35, 40, 45):
  • Rata-rata:
    \[ = \frac{30 + 30 + 35 + 40 + 45}{5} = 36 \]

  • Median:
    Nilai tengahnya adalah 35.

  • Standar Deviasi:
    \[ s = \sqrt{\frac{(30-36)^2 + (30-36)^2 + (35-36)^2 + (40-36)^2 + (45-36)^2}{4}} = 6.52 \]

  1. Cabang D (70, 75, 80, 85, 90):
  • Rata-rata:
    \[ \text{Rata-rata} = \frac{70 + 75 + 80 + 85 + 90}{5} = 80 \]

  • Median:
    Nilai tengahnya adalah 80.

  • Standar Deviasi:
    \[ s = \sqrt{\frac{(70-80)^2 + (75-80)^2 + (80-80)^2 + (85-80)^2 + (90-80)^2}{4}} = 7.91 \]

1.3 Cabang yang memiliki penyebaran data paling kecil

  • Penyebaran data terkecil ditentukan oleh standar deviasi terendah.

  • Dari perhitungan sebelumnya, Cabang C memiliki standar deviasi 6.52, paling kecil dibandingkan cabang lainnya.

1.4 Jika target penjualan minimum adalah 50 juta rupiah, cabang mana saja yang gagal mencapai target di semua datanya?

  • Target minimum penjualan adalah 50 juta rupiah.

  • Data yang di bawah target adalah Cabang C (30, 30, 35, 40, 45) < 50 Juta

1.5 Boxplot visualisasi penyebaran data setiap cabang.

1.6 Strategi peningkatan penjualan

  1. Cabang C:

    • Fokuskan pada peningkatan performa tim penjualan.

    • Lakukan evaluasi terhadap strategi pemasaran dan relevansi produk di pasar lokal.

  2. Cabang B:

    • Kurangi fluktuasi data dengan menetapkan strategi promosi atau diversifikasi produk yang lebih stabil.
  3. Cabang A dan D:

    • Pertahankan performa melalui layanan konsisten dan upaya retensi pelanggan.
  4. Revisi Target:

    • Gunakan rata-rata penjualan masing-masing cabang untuk menetapkan target yang realistis dan terukur.

2 Latihan 2

2.1 Analisis Efesiensi Pengiriman

2.1.1 Perhitungan Statistik

Rata-rata, Median, dan simpangan buku untuk setiap wilayah:

## Warning: package 'tidyverse' was built under R version 4.4.2
## Warning: package 'readr' was built under R version 4.4.2
## Warning: package 'forcats' was built under R version 4.4.2
## Warning: package 'lubridate' was built under R version 4.4.2
## # A tibble: 4 × 10
##   Wilayah Rata_Rata_Waktu Median_Waktu SD_Waktu Rata_Rata_Barang Median_Barang
##   <chr>             <dbl>        <dbl>    <dbl>            <dbl>         <dbl>
## 1 Barat              20             20    1.58              99             100
## 2 Selatan            22.8           23    1.92             150             150
## 3 Timur              10.8           11    0.837             85.2            85
## 4 Utara              14.6           14    2.41             123             120
## # ℹ 4 more variables: SD_Barang <dbl>, Rata_Rata_Biaya <dbl>,
## #   Median_Biaya <dbl>, SD_Biaya <dbl>
## # A tibble: 4 × 3
##   Wilayah Total_Biaya Efisiensi_Biaya
##   <chr>         <dbl>           <dbl>
## 1 Barat      29709000          60018.
## 2 Selatan    31530000          42040 
## 3 Timur      25459000          59763.
## 4 Utara      32045000          52106.
## # A tibble: 1 × 3
##   Wilayah Total_Biaya Efisiensi_Biaya
##   <chr>         <dbl>           <dbl>
## 1 Selatan    31530000           42040

2.1.2 Perhitungan Efesiensi Pengiriman

Hitung total biaya pengiriman dan efesiensi biaya:

2.1.3 Visualisasi Data

Scatter plot hubungan jumlah barang, waktu pengiriman, dan biaya pengiriman per unit:

## Warning: `line.width` does not currently support multiple values.
## Warning: `line.width` does not currently support multiple values.
## Warning: `line.width` does not currently support multiple values.
## Warning: `line.width` does not currently support multiple values.
## Warning: `line.width` does not currently support multiple values.

2.2 Rekomendasi Operasional

Berdasarkan hasil analisis, wilayah mana yang memerlukan perhatian khusus untuk meningkatkan efisiensi pengiriman?

Berdasarkan analisis biaya dan waktu pengiriman, wilayah yang memerlukan perhatian lebih adalah Wilayah Selatan. Hal ini disebabkan oleh beberapa faktor:

  • Biaya Pengiriman: Di wilayah ini, biaya pengiriman per unit barang lebih tinggi dibandingkan wilayah lainnya.

  • Waktu Pengiriman: Selain itu, waktu pengiriman di wilayah ini juga lebih lama, yang menunjukkan adanya potensi peningkatan efisiensi pengiriman.

Rekomendasi untuk mengurangi biaya dan waktu pengiriman di wilayah tersebut:

1. Mengurangi Biaya Pengiriman:

  • Optimasi Rute: Menganalisis dan mencari rute pengiriman yang lebih efisien dapat mengurangi jarak dan waktu tempuh, yang pada akhirnya menurunkan biaya.

  • Negosiasi dengan Penyedia Layanan: Melakukan negosiasi dengan perusahaan logistik untuk mendapatkan tarif yang lebih kompetitif bisa membantu menurunkan biaya pengiriman.

  • Peningkatan Kapasitas Kendaraan: Menggunakan kendaraan dengan kapasitas lebih besar atau yang lebih efisien dalam penggunaan bahan bakar juga dapat mengurangi biaya.

2. Mengurangi Waktu Pengiriman:

  • Perbaikan Infrastruktur: Meningkatkan infrastruktur transportasi seperti jalan dan fasilitas pengiriman akan membantu mempercepat proses pengiriman.

  • Penggunaan Teknologi: Memanfaatkan teknologi untuk memonitor pengiriman secara real-time akan memungkinkan untuk mengambil tindakan cepat jika ada penundaan.

  • Koordinasi Lebih Baik: Peningkatan koordinasi antara tim pengiriman, gudang, dan pengemudi untuk memastikan barang dapat sampai lebih cepat.

3. Kesimpulan: Analisis kinerja pengiriman berdasarkan jenis barang dan wilayah. Mana yang memiliki waktu pengiriman lebih cepat dan biaya per unit lebih rendah?

2.3 Kinerja Berdasarkan jenis barang

Berdasarkan data yang ada, berikut adalah temuan terkait kinerja pengiriman berdasarkan jenis barang dan wilayah:

1. Jenis Barang:

  • Pakaian: Pengiriman pakaian cenderung memiliki waktu yang lebih cepat dan biaya per unit yang lebih rendah jika dibandingkan dengan jenis barang lainnya.

  • Elektronik: Sebaliknya, pengiriman barang elektronik umumnya memiliki biaya per unit yang lebih tinggi dan waktu pengiriman yang lebih lama.

2. Wilayah:

  • Wilayah Timur: Secara keseluruhan, wilayah ini menunjukkan kinerja pengiriman yang paling efisien, dengan waktu pengiriman yang relatif lebih cepat dan biaya per unit yang lebih rendah, terutama untuk barang jenis pakaian dan peralatan.

  • Wilayah Selatan: Meskipun pengiriman barang jenis makanan di wilayah ini memiliki waktu yang lebih cepat, biaya per unit untuk pengiriman barang tersebut lebih tinggi dibandingkan wilayah lain.

3. Kesimpulan:

  • Wilayah Timur memiliki kinerja pengiriman yang lebih baik karena waktu pengiriman yang lebih cepat dan biaya yang lebih rendah, terutama untuk jenis barang pakaian dan peralatan.

  • Untuk jenis barang pakaian, pengiriman di wilayah ini juga lebih efisien dibandingkan wilayah lainnya.

LS0tDQp0aXRsZTogIlVrdXJhbiBQZW55ZWJhcmFuIERhdGEiDQphdXRob3I6IA0KICAtICJOb3ZhIFNpdG9ydXMgNTIyNDAwMjMiDQpkYXRlOiAgImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjogICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9qdWJhL3JtZGZvcm1hdHMNCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCiAgICBsaWJfZGlyOiBsaWJzDQogICAgZGZfcHJpbnQ6ICJwYWdlZCINCiAgICBjb2RlX2ZvbGRpbmc6ICJzaG93Ig0KICAgIGNvZGVfZG93bmxvYWQ6IHllcw0KICAgIGNzczogInN0eWxlLmNzcyINCi0tLQ0KDQo8aW1nIHNyYz0iTnMucG5nIiB3aWR0aD0iMzAwIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IG1hcmdpbjogYXV0bzsiIGFsdD0iIj4NCg0KDQojIExhdGloYW4gMQ0KIyMgRGF0YSBQZW5qdWFsYW4NCi0gKipDYWJhbmcgQSoqOiA1MCwgNTUsIDYwLCA2NSwgNzAgIA0KDQotICoqQ2FiYW5nIEIqKjogNDAsIDUwLCA2MCwgNzAsIDgwICANCg0KLSAqKkNhYmFuZyBDKio6IDMwLCAzMCwgMzUsIDQwLCA0NSAgDQoNCi0gKipDYWJhbmcgRCoqOiA3MCwgNzUsIDgwLCA4NSwgOTAgIA0KDQojIyBNZW5naGl0dW5nIHJhdGEtcmF0YSwgbWVkaWFuLCBkYW4gc3RhbmRhciBkZXZpYXNpIHVudHVrIG1hc2luZy1tYXNpbmcgY2FiYW5nDQoNCjEuICoqQ2FiYW5nIEEqKiAoNTAsIDU1LCA2MCwgNjUsIDcwKToNCg0KLSAqKlJhdGEtcmF0YSoqOiAgDQogIFxbDQogIFxmcmFjezUwICsgNTUgKyA2MCArIDY1ICsgNzB9ezV9ID0gNjANCiAgXF0NCiAgDQotICoqTWVkaWFuKio6ICANCk5pbGFpIHRlbmdhaG55YSBhZGFsYWggKio2MCoqLiAgDQoNCi0gKipTdGFuZGFyIERldmlhc2kqKjogIA0KICANCiAgXFsNCiAgcyA9IFxzcXJ0e1xmcmFje1xzdW17KHhfaSAtIFxiYXJ7eH0pXjJ9fXtuLTF9fQ0KICBcXSAgDQogIFN1YnN0aXR1c2kgbmlsYWk6ICANCiAgXFsNCiAgcyA9IFxzcXJ0e1xmcmFjeyg1MC02MCleMiArICg1NS02MCleMiArICg2MC02MCleMiArICg2NS02MCleMiArICg3MC02MCleMn17NH19ID0gNy45MQ0KICBcXQ0KICANCjIuICoqQ2FiYW5nIEIqKiAoNDAsIDUwLCA2MCwgNzAsIDgwKToNCi0gKipSYXRhLXJhdGEqKjogIA0KICBcWw0KICAgXGZyYWN7NDAgKyA1MCArIDYwICsgNzAgKyA4MH17NX0gPSA2MA0KICBcXQ0KICANCi0gKipNZWRpYW4qKjogDQpOaWxhaSB0ZW5nYWhueWEgYWRhbGFoICoqNjAqKi4gDQoNCi0gKipTdGFuZGFyIERldmlhc2kqKjogIA0KICBcWw0KICBzID0gXHNxcnR7XGZyYWN7KDQwLTYwKV4yICsgKDUwLTYwKV4yICsgKDYwLTYwKV4yICsgKDcwLTYwKV4yICsgKDgwLTYwKV4yfXs0fX0gPSAxNS44MQ0KICBcXQ0KICANCjMuICoqQ2FiYW5nIEMqKiAoMzAsIDMwLCAzNSwgNDAsIDQ1KToNCg0KLSAqKlJhdGEtcmF0YSoqOiAgDQogIFxbDQogID0gXGZyYWN7MzAgKyAzMCArIDM1ICsgNDAgKyA0NX17NX0gPSAzNg0KICBcXQ0KICANCi0gKipNZWRpYW4qKjogICANCk5pbGFpIHRlbmdhaG55YSBhZGFsYWggKiozNSoqLg0KDQotICoqU3RhbmRhciBEZXZpYXNpKio6ICANCiAgXFsNCiAgcyA9IFxzcXJ0e1xmcmFjeygzMC0zNileMiArICgzMC0zNileMiArICgzNS0zNileMiArICg0MC0zNileMiArICg0NS0zNileMn17NH19ID0gNi41Mg0KICBcXQ0KICANCjQuICoqQ2FiYW5nIEQqKiAoNzAsIDc1LCA4MCwgODUsIDkwKToNCg0KLSAqKlJhdGEtcmF0YSoqOiAgDQogIFxbDQogIFx0ZXh0e1JhdGEtcmF0YX0gPSBcZnJhY3s3MCArIDc1ICsgODAgKyA4NSArIDkwfXs1fSA9IDgwDQogIFxdDQogIA0KLSAqKk1lZGlhbioqOiAgDQpOaWxhaSB0ZW5nYWhueWEgYWRhbGFoICoqODAqKi4gDQoNCi0gKipTdGFuZGFyIERldmlhc2kqKjogIA0KICBcWw0KICBzID0gXHNxcnR7XGZyYWN7KDcwLTgwKV4yICsgKDc1LTgwKV4yICsgKDgwLTgwKV4yICsgKDg1LTgwKV4yICsgKDkwLTgwKV4yfXs0fX0gPSA3LjkxDQogIFxdDQoNCg0KIyMgQ2FiYW5nIHlhbmcgbWVtaWxpa2kgcGVueWViYXJhbiBkYXRhIHBhbGluZyBrZWNpbA0KLSBQZW55ZWJhcmFuIGRhdGEgdGVya2VjaWwgZGl0ZW50dWthbiBvbGVoIHN0YW5kYXIgZGV2aWFzaSB0ZXJlbmRhaC4gDQoNCi0gRGFyaSBwZXJoaXR1bmdhbiBzZWJlbHVtbnlhLCAqKkNhYmFuZyBDKiogbWVtaWxpa2kgc3RhbmRhciBkZXZpYXNpICoqNi41MioqLCBwYWxpbmcga2VjaWwgZGliYW5kaW5na2FuIGNhYmFuZyBsYWlubnlhLiAgDQoNCg0KIyMgSmlrYSB0YXJnZXQgcGVuanVhbGFuIG1pbmltdW0gYWRhbGFoIDUwIGp1dGEgcnVwaWFoLCBjYWJhbmcgbWFuYSBzYWphIHlhbmcgZ2FnYWwgbWVuY2FwYWkgdGFyZ2V0IGRpIHNlbXVhIGRhdGFueWE/DQoNCi0gVGFyZ2V0IG1pbmltdW0gcGVuanVhbGFuIGFkYWxhaCAqKjUwIGp1dGEgcnVwaWFoKiouICANCg0KLSBEYXRhIHlhbmcgZGkgYmF3YWggdGFyZ2V0IGFkYWxhaCBDYWJhbmcgQyAoMzAsIDMwLCAzNSwgNDAsIDQ1KSA8IDUwIEp1dGENCg0KDQojIyBCb3hwbG90IHZpc3VhbGlzYXNpIHBlbnllYmFyYW4gZGF0YSBzZXRpYXAgY2FiYW5nLg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQoNCmxpYnJhcnkocGxvdGx5KQ0KDQojIERhdGEgUGVuanVhbGFuIGRhcmkgbWFzaW5nLW1hc2luZyBjYWJhbmcNCmNhYmFuZ19hIDwtIGMoNTAsIDU1LCA2MCwgNjUsIDcwKQ0KY2FiYW5nX2IgPC0gYyg0MCwgNTAsIDYwLCA3MCwgODApDQpjYWJhbmdfYyA8LSBjKDMwLCAzMCwgMzUsIDQwLCA0NSkNCmNhYmFuZ19kIDwtIGMoNzAsIDc1LCA4MCwgODUsIDkwKQ0KDQojIE1lbWJ1YXQgZGF0YSBub3JtYWwgKGRpc3RyaWJ1c2kgbm9ybWFsKQ0KY2FiYW5nX2Ffbm9ybWFsIDwtIHJub3JtKDEwMCwgbWVhbiA9IG1lYW4oY2FiYW5nX2EpLCBzZCA9IHNkKGNhYmFuZ19hKSkNCmNhYmFuZ19iX25vcm1hbCA8LSBybm9ybSgxMDAsIG1lYW4gPSBtZWFuKGNhYmFuZ19iKSwgc2QgPSBzZChjYWJhbmdfYikpDQpjYWJhbmdfY19ub3JtYWwgPC0gcm5vcm0oMTAwLCBtZWFuID0gbWVhbihjYWJhbmdfYyksIHNkID0gc2QoY2FiYW5nX2MpKQ0KY2FiYW5nX2Rfbm9ybWFsIDwtIHJub3JtKDEwMCwgbWVhbiA9IG1lYW4oY2FiYW5nX2QpLCBzZCA9IHNkKGNhYmFuZ19kKSkNCg0KIyBNZW1idWF0IGRhdGEgdGlkYWsgbm9ybWFsIChkaXN0cmlidXNpIGVrc3BvbmVuc2lhbCkNCmNhYmFuZ19hX25vbl9ub3JtYWwgPC0gcmV4cCgxMDAsIHJhdGUgPSAxIC8gbWVhbihjYWJhbmdfYSkpDQpjYWJhbmdfYl9ub25fbm9ybWFsIDwtIHJleHAoMTAwLCByYXRlID0gMSAvIG1lYW4oY2FiYW5nX2IpKQ0KY2FiYW5nX2Nfbm9uX25vcm1hbCA8LSByZXhwKDEwMCwgcmF0ZSA9IDEgLyBtZWFuKGNhYmFuZ19jKSkNCmNhYmFuZ19kX25vbl9ub3JtYWwgPC0gcmV4cCgxMDAsIHJhdGUgPSAxIC8gbWVhbihjYWJhbmdfZCkpDQoNCiMgTWVtYnVhdCBib3hwbG90IHVudHVrIGRhdGEgbm9ybWFsIGRhbiB0aWRhayBub3JtYWwNCnBsb3RfbHkoKSAlPiUNCiAgYWRkX3RyYWNlKA0KICAgIHkgPSBjYWJhbmdfYV9ub3JtYWwsIA0KICAgIHR5cGUgPSAiYm94IiwgDQogICAgbmFtZSA9ICJDYWJhbmcgQSAoTm9ybWFsKSIsIA0KICAgIGJveG1lYW4gPSBUUlVFLA0KICAgIG1hcmtlciA9IGxpc3QoY29sb3IgPSAnYmx1ZScpDQogICkgJT4lICAjIEJveHBsb3QgdW50dWsgZGF0YSBub3JtYWwgY2FiYW5nIEENCiAgYWRkX3RyYWNlKA0KICAgIHkgPSBjYWJhbmdfYl9ub3JtYWwsIA0KICAgIHR5cGUgPSAiYm94IiwgDQogICAgbmFtZSA9ICJDYWJhbmcgQiAoTm9ybWFsKSIsIA0KICAgIGJveG1lYW4gPSBUUlVFLA0KICAgIG1hcmtlciA9IGxpc3QoY29sb3IgPSAnZ3JlZW4nKQ0KICApICU+JSAgIyBCb3hwbG90IHVudHVrIGRhdGEgbm9ybWFsIGNhYmFuZyBCDQogIGFkZF90cmFjZSgNCiAgICB5ID0gY2FiYW5nX2Nfbm9ybWFsLCANCiAgICB0eXBlID0gImJveCIsIA0KICAgIG5hbWUgPSAiQ2FiYW5nIEMgKE5vcm1hbCkiLCANCiAgICBib3htZWFuID0gVFJVRSwNCiAgICBtYXJrZXIgPSBsaXN0KGNvbG9yID0gJ3JlZCcpDQogICkgJT4lICAjIEJveHBsb3QgdW50dWsgZGF0YSBub3JtYWwgY2FiYW5nIEMNCiAgYWRkX3RyYWNlKA0KICAgIHkgPSBjYWJhbmdfZF9ub3JtYWwsIA0KICAgIHR5cGUgPSAiYm94IiwgDQogICAgbmFtZSA9ICJDYWJhbmcgRCAoTm9ybWFsKSIsIA0KICAgIGJveG1lYW4gPSBUUlVFLA0KICAgIG1hcmtlciA9IGxpc3QoY29sb3IgPSAncHVycGxlJykNCiAgKSAlPiUgICMgQm94cGxvdCB1bnR1ayBkYXRhIG5vcm1hbCBjYWJhbmcgRA0KICBhZGRfdHJhY2UoDQogICAgeSA9IGNhYmFuZ19hX25vbl9ub3JtYWwsIA0KICAgIHR5cGUgPSAiYm94IiwgDQogICAgbmFtZSA9ICJDYWJhbmcgQSAoVGlkYWsgTm9ybWFsKSIsIA0KICAgIGJveG1lYW4gPSBUUlVFLA0KICAgIG1hcmtlciA9IGxpc3QoY29sb3IgPSAnY3lhbicpDQogICkgJT4lICAjIEJveHBsb3QgdW50dWsgZGF0YSB0aWRhayBub3JtYWwgY2FiYW5nIEENCiAgYWRkX3RyYWNlKA0KICAgIHkgPSBjYWJhbmdfYl9ub25fbm9ybWFsLCANCiAgICB0eXBlID0gImJveCIsIA0KICAgIG5hbWUgPSAiQ2FiYW5nIEIgKFRpZGFrIE5vcm1hbCkiLCANCiAgICBib3htZWFuID0gVFJVRSwNCiAgICBtYXJrZXIgPSBsaXN0KGNvbG9yID0gJ29yYW5nZScpDQogICkgJT4lICAjIEJveHBsb3QgdW50dWsgZGF0YSB0aWRhayBub3JtYWwgY2FiYW5nIEINCiAgYWRkX3RyYWNlKA0KICAgIHkgPSBjYWJhbmdfY19ub25fbm9ybWFsLCANCiAgICB0eXBlID0gImJveCIsIA0KICAgIG5hbWUgPSAiQ2FiYW5nIEMgKFRpZGFrIE5vcm1hbCkiLCANCiAgICBib3htZWFuID0gVFJVRSwNCiAgICBtYXJrZXIgPSBsaXN0KGNvbG9yID0gJ3BpbmsnKQ0KICApICU+JSAgIyBCb3hwbG90IHVudHVrIGRhdGEgdGlkYWsgbm9ybWFsIGNhYmFuZyBDDQogIGFkZF90cmFjZSgNCiAgICB5ID0gY2FiYW5nX2Rfbm9uX25vcm1hbCwgDQogICAgdHlwZSA9ICJib3giLCANCiAgICBuYW1lID0gIkNhYmFuZyBEIChUaWRhayBOb3JtYWwpIiwgDQogICAgYm94bWVhbiA9IFRSVUUsDQogICAgbWFya2VyID0gbGlzdChjb2xvciA9ICd5ZWxsb3cnKQ0KICApICU+JSAgIyBCb3hwbG90IHVudHVrIGRhdGEgdGlkYWsgbm9ybWFsIGNhYmFuZyBEDQogIGxheW91dCgNCiAgICB0aXRsZSA9ICJCb3ggUGxvdCBQZW5qdWFsYW4gQ2FiYW5nIChOb3JtYWwgdnMgVGlkYWsgTm9ybWFsKSIsDQogICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIlBlbmp1YWxhbiAoanV0YSBydXBpYWgpIiksDQogICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gIkNhYmFuZyBkYW4gSmVuaXMgRGF0YSIpDQogICkNCmBgYA0KDQojIyBTdHJhdGVnaSBwZW5pbmdrYXRhbiBwZW5qdWFsYW4NCg0KMS4gKipDYWJhbmcgQyoqOiAgDQoNCiAgIC0gRm9rdXNrYW4gcGFkYSBwZW5pbmdrYXRhbiBwZXJmb3JtYSB0aW0gcGVuanVhbGFuLiAgDQogICANCiAgIC0gTGFrdWthbiBldmFsdWFzaSB0ZXJoYWRhcCBzdHJhdGVnaSBwZW1hc2FyYW4gZGFuIHJlbGV2YW5zaSBwcm9kdWsgZGkgcGFzYXIgbG9rYWwuDQoNCg0KMi4gKipDYWJhbmcgQioqOiAgDQogICAtIEt1cmFuZ2kgZmx1a3R1YXNpIGRhdGEgZGVuZ2FuIG1lbmV0YXBrYW4gc3RyYXRlZ2kgcHJvbW9zaSBhdGF1IGRpdmVyc2lmaWthc2kgcHJvZHVrIHlhbmcgbGViaWggc3RhYmlsLg0KICAgDQoNCjMuICoqQ2FiYW5nIEEgZGFuIEQqKjogIA0KDQogICAtIFBlcnRhaGFua2FuIHBlcmZvcm1hIG1lbGFsdWkgbGF5YW5hbiBrb25zaXN0ZW4gZGFuIHVwYXlhIHJldGVuc2kgcGVsYW5nZ2FuLg0KDQo0LiAqKlJldmlzaSBUYXJnZXQqKjoNCg0KICAgLSBHdW5ha2FuIHJhdGEtcmF0YSBwZW5qdWFsYW4gbWFzaW5nLW1hc2luZyBjYWJhbmcgdW50dWsgbWVuZXRhcGthbiB0YXJnZXQgeWFuZyByZWFsaXN0aXMgZGFuIHRlcnVrdXIuDQogICANCg0KIyBMYXRpaGFuIDINCiMjIEFuYWxpc2lzIEVmZXNpZW5zaSBQZW5naXJpbWFuDQojIyMgUGVyaGl0dW5nYW4gU3RhdGlzdGlrDQpSYXRhLXJhdGEsIE1lZGlhbiwgZGFuIHNpbXBhbmdhbiBidWt1IHVudHVrIHNldGlhcCB3aWxheWFoOg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQoNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShwbG90bHkpDQoNCiMgTWVtYnVhdCBkYXRhIHBlbmdpcmltYW4gYmFyYW5nDQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogIFdpbGF5YWggPSByZXAoYygiVXRhcmEiLCAiU2VsYXRhbiIsICJUaW11ciIsICJCYXJhdCIpLCBlYWNoID0gNSksDQogIFdha3R1X1BlbmdpcmltYW4gPSBjKDEyLCAxNCwgMTMsIDE2LCAxOCwgMjIsIDIwLCAyNCwgMjUsIDIzLCAxMCwgMTEsIDEyLCAxMSwgMTAsIDE4LCAxOSwgMjAsIDIyLCAyMSksDQogIEp1bWxhaF9CYXJhbmcgPSBjKDEyMCwgMTEwLCAxMTUsIDEzMCwgMTQwLCAxNTAsIDE0MCwgMTQ1LCAxNTUsIDE2MCwgODAsIDg1LCA4MywgOTAsIDg4LCAxMDAsIDk1LCA5OCwgMTAwLCAxMDIpLA0KICBCaWF5YV9QZXJfVW5pdCA9IGMoNTAwMDAsIDU1MDAwLCA1MzAwMCwgNTIwMDAsIDUxMDAwLCA0MDAwMCwgNDIwMDAsIDQxMDAwLCA0MzAwMCwgNDQwMDAsIDYwMDAwLCA2MjAwMCwgNjEwMDAsIDU5MDAwLCA1NzAwMCwgNTgwMDAsIDU5MDAwLCA2MDAwMCwgNjEwMDAsIDYyMDAwKQ0KKQ0KDQojIE1lbmFtcGlsa2FuIGRhdGEgdW50dWsgbWVtYXN0aWthbiBmb3JtYXRueWEgYmVuYXINCmhlYWQoZGF0YSkNCg0KIyAxLiBBbmFsaXNpcyBTdGF0aXN0aWs6IFJhdGEtcmF0YSwgTWVkaWFuLCBkYW4gU2ltcGFuZ2FuIEJha3UgcGVyIHdpbGF5YWgNCnN0YXRzIDwtIGRhdGEgJT4lDQogIGdyb3VwX2J5KFdpbGF5YWgpICU+JQ0KICBzdW1tYXJpc2UoDQogICAgUmF0YV9SYXRhX1dha3R1ID0gbWVhbihXYWt0dV9QZW5naXJpbWFuKSwNCiAgICBNZWRpYW5fV2FrdHUgPSBtZWRpYW4oV2FrdHVfUGVuZ2lyaW1hbiksDQogICAgU0RfV2FrdHUgPSBzZChXYWt0dV9QZW5naXJpbWFuKSwNCiAgICBSYXRhX1JhdGFfQmFyYW5nID0gbWVhbihKdW1sYWhfQmFyYW5nKSwNCiAgICBNZWRpYW5fQmFyYW5nID0gbWVkaWFuKEp1bWxhaF9CYXJhbmcpLA0KICAgIFNEX0JhcmFuZyA9IHNkKEp1bWxhaF9CYXJhbmcpLA0KICAgIFJhdGFfUmF0YV9CaWF5YSA9IG1lYW4oQmlheWFfUGVyX1VuaXQpLA0KICAgIE1lZGlhbl9CaWF5YSA9IG1lZGlhbihCaWF5YV9QZXJfVW5pdCksDQogICAgU0RfQmlheWEgPSBzZChCaWF5YV9QZXJfVW5pdCkNCiAgKQ0KDQojIE1lbmFtcGlsa2FuIGhhc2lsIHN0YXRpc3Rpaw0KcHJpbnQoc3RhdHMpDQoNCiMgMi4gQW5hbGlzaXMgRWZpc2llbnNpIFBlbmdpcmltYW46IE1lbmdoaXR1bmcgdG90YWwgYmlheWEgZGFuIGVmaXNpZW5zaSBiaWF5YQ0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoQmlheWFfVG90YWwgPSBKdW1sYWhfQmFyYW5nICogQmlheWFfUGVyX1VuaXQpDQoNCmVmaXNpZW5zaSA8LSBkYXRhICU+JQ0KICBncm91cF9ieShXaWxheWFoKSAlPiUNCiAgc3VtbWFyaXNlKA0KICAgIFRvdGFsX0JpYXlhID0gc3VtKEJpYXlhX1RvdGFsKSwNCiAgICBFZmlzaWVuc2lfQmlheWEgPSBzdW0oQmlheWFfVG90YWwpIC8gc3VtKEp1bWxhaF9CYXJhbmcpDQogICkNCg0KIyBNZW5hbXBpbGthbiBoYXNpbCBlZmlzaWVuc2kNCnByaW50KGVmaXNpZW5zaSkNCg0KIyBXaWxheWFoIGRlbmdhbiBlZmlzaWVuc2kgYmlheWEgdGVyYmFpayBhZGFsYWggd2lsYXlhaCBkZW5nYW4gRWZpc2llbnNpX0JpYXlhIHRlcmVuZGFoDQplZmlzaWVuc2lfdGVyZW5kYWggPC0gZWZpc2llbnNpICU+JQ0KICBmaWx0ZXIoRWZpc2llbnNpX0JpYXlhID09IG1pbihFZmlzaWVuc2lfQmlheWEpKQ0KDQpwcmludChlZmlzaWVuc2lfdGVyZW5kYWgpDQoNCg0KYGBgDQoNCiMjIyBQZXJoaXR1bmdhbiBFZmVzaWVuc2kgUGVuZ2lyaW1hbg0KSGl0dW5nIHRvdGFsIGJpYXlhIHBlbmdpcmltYW4gZGFuIGVmZXNpZW5zaSBiaWF5YToNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQ0KbGlicmFyeShkcGx5cikNCg0KIyBEYXRhIHBlbmdpcmltYW4gYmFyYW5nDQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogIFdpbGF5YWggPSBjKCJVdGFyYSIsICJTZWxhdGFuIiwgIlRpbXVyIiwgIkJhcmF0IiwgIlRlbmdhaCIsICJVdGFyYSIsICJTZWxhdGFuIiwgIlRpbXVyIiwgIkJhcmF0IiwgIlRlbmdhaCIsICJVdGFyYSIsICJTZWxhdGFuIiwgIlRpbXVyIiwgIkJhcmF0IiwgIlRlbmdhaCIpLA0KICBKdW1sYWhfQmFyYW5nID0gYygyMDAsIDE1MCwgMTgwLCAxMjAsIDI1MCwgMzAwLCAyMjAsIDE4MCwgMTQwLCAzNTAsIDE3MCwgMjUwLCAxOTAsIDEzMCwgMTgwKSwNCiAgV2FrdHVfUGVuZ2lyaW1hbiA9IGMoNSwgOCwgNiwgNywgNCwgOSwgNywgNiwgNSwgOCwgNCwgNiwgNywgNSwgNSksDQogIEJpYXlhX1Blcl9Vbml0ID0gYygxNTAwMCwgODAwMCwgMTAwMDAsIDEyMDAwLCAxNDAwMCwgODUwMCwgOTUwMCwgMTAwMDAsIDExMDAwLCA3ODAwLCAxMjAwMCwgMTYwMDAsIDgyMDAsIDEwNTAwLCAxMTUwMCkNCikNCg0KIyBNZW5naGl0dW5nIHRvdGFsIGJpYXlhIHBlbmdpcmltYW4NCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKEJpYXlhX1RvdGFsID0gSnVtbGFoX0JhcmFuZyAqIEJpYXlhX1Blcl9Vbml0KQ0KDQojIE1lbmdoaXR1bmcgZWZpc2llbnNpIGJpYXlhIGJlcmRhc2Fya2FuIHdpbGF5YWgNCmVmaXNpZW5zaSA8LSBkYXRhICU+JQ0KICBncm91cF9ieShXaWxheWFoKSAlPiUNCiAgc3VtbWFyaXNlKA0KICAgIFRvdGFsX0JpYXlhID0gc3VtKEJpYXlhX1RvdGFsKSwNCiAgICBFZmlzaWVuc2lfQmlheWEgPSBzdW0oQmlheWFfVG90YWwpIC8gc3VtKEp1bWxhaF9CYXJhbmcpDQogICkNCg0KIyBUYW1waWxrYW4gaGFzaWwgcGVyaGl0dW5nYW4gZWZpc2llbnNpDQplZmlzaWVuc2kNCg0KYGBgDQoNCiMjIyBWaXN1YWxpc2FzaSBEYXRhDQpTY2F0dGVyIHBsb3QgaHVidW5nYW4ganVtbGFoIGJhcmFuZywgd2FrdHUgcGVuZ2lyaW1hbiwgZGFuIGJpYXlhIHBlbmdpcmltYW4gcGVyIHVuaXQ6DQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0NCmxpYnJhcnkocGxvdGx5KQ0KDQojIFZpc3VhbGlzYXNpIDNEDQpwbG90XzNkIDwtIHBsb3RfbHkoDQogIGRhdGEsDQogIHggPSB+SnVtbGFoX0JhcmFuZywNCiAgeSA9IH5XYWt0dV9QZW5naXJpbWFuLA0KICB6ID0gfkJpYXlhX1Blcl9Vbml0LA0KICB0eXBlID0gJ3NjYXR0ZXIzZCcsDQogIG1vZGUgPSAnbWFya2VycycsDQogIGNvbG9yID0gfldpbGF5YWgsDQogIHNpemUgPSB+QmlheWFfUGVyX1VuaXQgKiAwLjAwMDEsICAjIE1lbXBlcmJlc2FyIHVrdXJhbiBidWJibGUNCiAgbWFya2VyID0gbGlzdCgNCiAgICBzaXplID0gMTAsDQogICAgb3BhY2l0eSA9IDENCiAgKSwNCiAgdGV4dCA9IH5wYXN0ZSgNCiAgICAiV2lsYXlhaDoiLCBXaWxheWFoLA0KICAgICI8YnI+V2FrdHUgUGVuZ2lyaW1hbjoiLCBXYWt0dV9QZW5naXJpbWFuLCAiamFtIiwNCiAgICAiPGJyPkp1bWxhaCBCYXJhbmc6IiwgSnVtbGFoX0JhcmFuZywgInVuaXQiLA0KICAgICI8YnI+QmlheWEgcGVyIFVuaXQ6IFJwIiwgQmlheWFfUGVyX1VuaXQNCiAgKSkgJT4lDQogIGxheW91dCgNCiAgICB0aXRsZSA9ICJBbmFsaXNpcyAzRCBFZmlzaWVuc2kgUGVuZ2lyaW1hbiBCYXJhbmciLA0KICAgIHNjZW5lID0gbGlzdCgNCiAgICAgIHhheGlzID0gbGlzdCgNCiAgICAgICAgdGl0bGUgPSAiSnVtbGFoIEJhcmFuZyIsDQogICAgICAgIHRpdGxlZm9udCA9IGxpc3Qoc2l6ZSA9IDEyKSwNCiAgICAgICAgdGlja2ZvbnQgPSBsaXN0KHNpemUgPSAxMCkNCiAgICAgICksDQogICAgICB5YXhpcyA9IGxpc3QoDQogICAgICAgIHRpdGxlID0gIlBlbmdpcmltYW4gKGphbSkiLA0KICAgICAgICB0aXRsZWZvbnQgPSBsaXN0KHNpemUgPSAxMiksDQogICAgICAgIHRpY2tmb250ID0gbGlzdChzaXplID0gMTApDQogICAgICApLA0KICAgICAgemF4aXMgPSBsaXN0KA0KICAgICAgICB0aXRsZSA9ICJCaWF5YSAoUnApIiwNCiAgICAgICAgdGl0bGVmb250ID0gbGlzdChzaXplID0gMTIpLA0KICAgICAgICB0aWNrZm9udCA9IGxpc3Qoc2l6ZSA9IDEwKQ0KICAgICAgKQ0KICAgICksDQogICAgbGVnZW5kID0gbGlzdCgNCiAgICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIldpbGF5YWgiKSwNCiAgICAgIGJnY29sb3IgPSAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpIiwNCiAgICAgIGJvcmRlcmNvbG9yID0gInJnYmEoMCwgMCwgMCwgMC41KSIsDQogICAgICBib3JkZXJ3aWR0aCA9IDENCiAgICApDQogICkNCg0KIyBNZW5hbXBpbGthbiBwbG90IDNEDQpwbG90XzNkDQoNCg0KYGBgDQoNCiMjIFJla29tZW5kYXNpIE9wZXJhc2lvbmFsDQoNCkJlcmRhc2Fya2FuIGhhc2lsIGFuYWxpc2lzLCB3aWxheWFoIG1hbmEgeWFuZyBtZW1lcmx1a2FuIHBlcmhhdGlhbiBraHVzdXMgdW50dWsgbWVuaW5na2F0a2FuIGVmaXNpZW5zaSBwZW5naXJpbWFuPw0KDQpCZXJkYXNhcmthbiBhbmFsaXNpcyBiaWF5YSBkYW4gd2FrdHUgcGVuZ2lyaW1hbiwgd2lsYXlhaCB5YW5nIG1lbWVybHVrYW4gcGVyaGF0aWFuIGxlYmloIGFkYWxhaCBXaWxheWFoIFNlbGF0YW4uIEhhbCBpbmkgZGlzZWJhYmthbiBvbGVoIGJlYmVyYXBhIGZha3RvcjoNCg0KLSAqKkJpYXlhIFBlbmdpcmltYW46KiogRGkgd2lsYXlhaCBpbmksIGJpYXlhIHBlbmdpcmltYW4gcGVyIHVuaXQgYmFyYW5nIGxlYmloIHRpbmdnaSBkaWJhbmRpbmdrYW4gd2lsYXlhaCBsYWlubnlhLg0KDQotICoqV2FrdHUgUGVuZ2lyaW1hbjoqKiBTZWxhaW4gaXR1LCB3YWt0dSBwZW5naXJpbWFuIGRpIHdpbGF5YWggaW5pIGp1Z2EgbGViaWggbGFtYSwgeWFuZyBtZW51bmp1a2thbiBhZGFueWEgcG90ZW5zaSBwZW5pbmdrYXRhbiBlZmlzaWVuc2kgcGVuZ2lyaW1hbi4NCg0KUmVrb21lbmRhc2kgdW50dWsgbWVuZ3VyYW5naSBiaWF5YSBkYW4gd2FrdHUgcGVuZ2lyaW1hbiBkaSB3aWxheWFoIHRlcnNlYnV0Og0KDQoqKjEuIE1lbmd1cmFuZ2kgQmlheWEgUGVuZ2lyaW1hbjoqKg0KDQotICoqT3B0aW1hc2kgUnV0ZToqKiBNZW5nYW5hbGlzaXMgZGFuIG1lbmNhcmkgcnV0ZSBwZW5naXJpbWFuIHlhbmcgbGViaWggZWZpc2llbiBkYXBhdCBtZW5ndXJhbmdpIGphcmFrIGRhbiB3YWt0dSB0ZW1wdWgsIHlhbmcgcGFkYSBha2hpcm55YSBtZW51cnVua2FuIGJpYXlhLg0KDQotICoqTmVnb3NpYXNpIGRlbmdhbiBQZW55ZWRpYSBMYXlhbmFuOioqIE1lbGFrdWthbiBuZWdvc2lhc2kgZGVuZ2FuIHBlcnVzYWhhYW4gbG9naXN0aWsgdW50dWsgbWVuZGFwYXRrYW4gdGFyaWYgeWFuZyBsZWJpaCBrb21wZXRpdGlmIGJpc2EgbWVtYmFudHUgbWVudXJ1bmthbiBiaWF5YSBwZW5naXJpbWFuLg0KDQotICoqUGVuaW5na2F0YW4gS2FwYXNpdGFzIEtlbmRhcmFhbjoqKiBNZW5nZ3VuYWthbiBrZW5kYXJhYW4gZGVuZ2FuIGthcGFzaXRhcyBsZWJpaCBiZXNhciBhdGF1IHlhbmcgbGViaWggZWZpc2llbiBkYWxhbSBwZW5nZ3VuYWFuIGJhaGFuIGJha2FyIGp1Z2EgZGFwYXQgbWVuZ3VyYW5naSBiaWF5YS4NCg0KDQoqKjIuIE1lbmd1cmFuZ2kgV2FrdHUgUGVuZ2lyaW1hbjoqKg0KDQotICoqUGVyYmFpa2FuIEluZnJhc3RydWt0dXI6KiogTWVuaW5na2F0a2FuIGluZnJhc3RydWt0dXIgdHJhbnNwb3J0YXNpIHNlcGVydGkgamFsYW4gZGFuIGZhc2lsaXRhcyBwZW5naXJpbWFuIGFrYW4gbWVtYmFudHUgbWVtcGVyY2VwYXQgcHJvc2VzIHBlbmdpcmltYW4uDQoNCi0gKipQZW5nZ3VuYWFuIFRla25vbG9naToqKiBNZW1hbmZhYXRrYW4gdGVrbm9sb2dpIHVudHVrIG1lbW9uaXRvciBwZW5naXJpbWFuIHNlY2FyYSByZWFsLXRpbWUgYWthbiBtZW11bmdraW5rYW4gdW50dWsgbWVuZ2FtYmlsIHRpbmRha2FuIGNlcGF0IGppa2EgYWRhIHBlbnVuZGFhbi4NCg0KLSAqKktvb3JkaW5hc2kgTGViaWggQmFpazoqKiBQZW5pbmdrYXRhbiBrb29yZGluYXNpIGFudGFyYSB0aW0gcGVuZ2lyaW1hbiwgZ3VkYW5nLCBkYW4gcGVuZ2VtdWRpIHVudHVrIG1lbWFzdGlrYW4gYmFyYW5nIGRhcGF0IHNhbXBhaSBsZWJpaCBjZXBhdC4NCg0KDQoqKjMuIEtlc2ltcHVsYW46KiogDQpBbmFsaXNpcyBraW5lcmphIHBlbmdpcmltYW4gYmVyZGFzYXJrYW4gamVuaXMgYmFyYW5nIGRhbiB3aWxheWFoLiBNYW5hIHlhbmcgbWVtaWxpa2kgd2FrdHUgcGVuZ2lyaW1hbiBsZWJpaCBjZXBhdCBkYW4gYmlheWEgcGVyIHVuaXQgbGViaWggcmVuZGFoPw0KDQoNCiMjIEtpbmVyamEgQmVyZGFzYXJrYW4gamVuaXMgYmFyYW5nDQpCZXJkYXNhcmthbiBkYXRhIHlhbmcgYWRhLCBiZXJpa3V0IGFkYWxhaCB0ZW11YW4gdGVya2FpdCBraW5lcmphIHBlbmdpcmltYW4gYmVyZGFzYXJrYW4gamVuaXMgYmFyYW5nIGRhbiB3aWxheWFoOg0KDQoqKjEuIEplbmlzIEJhcmFuZzoqKg0KDQotICoqUGFrYWlhbjoqKiBQZW5naXJpbWFuIHBha2FpYW4gY2VuZGVydW5nIG1lbWlsaWtpIHdha3R1IHlhbmcgbGViaWggY2VwYXQgZGFuIGJpYXlhIHBlciB1bml0IHlhbmcgbGViaWggcmVuZGFoIGppa2EgZGliYW5kaW5na2FuIGRlbmdhbiBqZW5pcyBiYXJhbmcgbGFpbm55YS4NCg0KLSAqKkVsZWt0cm9uaWs6KiogU2ViYWxpa255YSwgcGVuZ2lyaW1hbiBiYXJhbmcgZWxla3Ryb25payB1bXVtbnlhIG1lbWlsaWtpIGJpYXlhIHBlciB1bml0IHlhbmcgbGViaWggdGluZ2dpIGRhbiB3YWt0dSBwZW5naXJpbWFuIHlhbmcgbGViaWggbGFtYS4NCg0KKioyLiBXaWxheWFoOioqDQoNCi0gKipXaWxheWFoIFRpbXVyOioqIFNlY2FyYSBrZXNlbHVydWhhbiwgd2lsYXlhaCBpbmkgbWVudW5qdWtrYW4ga2luZXJqYSBwZW5naXJpbWFuIHlhbmcgcGFsaW5nIGVmaXNpZW4sICoqZGVuZ2FuIHdha3R1IHBlbmdpcmltYW4geWFuZyByZWxhdGlmIGxlYmloIGNlcGF0KiogZGFuICoqYmlheWEgcGVyIHVuaXQgeWFuZyBsZWJpaCByZW5kYWgqKiwgdGVydXRhbWEgdW50dWsgYmFyYW5nIGplbmlzIHBha2FpYW4gZGFuIHBlcmFsYXRhbi4NCg0KLSAqKldpbGF5YWggU2VsYXRhbjoqKiBNZXNraXB1biBwZW5naXJpbWFuIGJhcmFuZyBqZW5pcyBtYWthbmFuIGRpIHdpbGF5YWggaW5pIG1lbWlsaWtpIHdha3R1IHlhbmcgbGViaWggY2VwYXQsIGJpYXlhIHBlciB1bml0IHVudHVrIHBlbmdpcmltYW4gYmFyYW5nIHRlcnNlYnV0IGxlYmloIHRpbmdnaSBkaWJhbmRpbmdrYW4gd2lsYXlhaCBsYWluLg0KDQoqKjMuIEtlc2ltcHVsYW46KioNCg0KLSAqKldpbGF5YWggVGltdXIqKiBtZW1pbGlraSBraW5lcmphIHBlbmdpcmltYW4geWFuZyBsZWJpaCBiYWlrIGthcmVuYSAqKndha3R1IHBlbmdpcmltYW4geWFuZyBsZWJpaCBjZXBhdCoqIGRhbiAqKmJpYXlhIHlhbmcgbGViaWggcmVuZGFoKiosIHRlcnV0YW1hIHVudHVrIGplbmlzIGJhcmFuZyBwYWthaWFuIGRhbiBwZXJhbGF0YW4uDQoNCi0gVW50dWsgamVuaXMgYmFyYW5nICoqcGFrYWlhbioqLCBwZW5naXJpbWFuIGRpIHdpbGF5YWggaW5pIGp1Z2EgbGViaWggZWZpc2llbiBkaWJhbmRpbmdrYW4gd2lsYXlhaCBsYWlubnlhLg==