Tugas Probabilitas

Statistika Dasar

Logo

Studi Kasus 1


Menghitung Probabilitas Produk Cacat

1. Rumus Teorema Bayes

Teorema Bayes digunakan untuk menghitung probabilitas bersyarat. Rumus dasar Teorema Bayes adalah:

\[ P(D = \text{Yes} \mid C = \text{Low}, P = \text{Below}) = \frac{P(C = \text{Low}, P = \text{Below} \mid D = \text{Yes}) \cdot P(D = \text{Yes})}{P(C = \text{Low}, P = \text{Below})} \]


2. Data Historis

Probabilitas yang diketahui berdasarkan data historis adalah:

  • \(P(D = \text{Yes}) = 0.05\) (Probabilitas produk cacat)
  • \(P(D = \text{No}) = 0.95\) (Probabilitas produk tidak cacat)
  • \(P(C = \text{Low}) = 0.30\) (Probabilitas komponen berkualitas rendah)
  • \(P(P = \text{Below}) = 0.40\) (Probabilitas proses produksi di bawah standar)

Kita asumsikan bahwa \(C\) (komponen rendah) dan \(P\) (proses di bawah standar) bersifat independen.


3. Perhitungan Probabilitas Bersyarat

3.1. Probabilitas Jika Produk Cacat

Kita hitung probabilitas gabungan antara komponen rendah dan proses produksi di bawah standar, jika diketahui produk cacat:

\[ P(C = \text{Low}, P = \text{Below} \mid D = \text{Yes}) = P(C = \text{Low}) \times P(P = \text{Below}) \]

Substitusi nilai:

\[ P(C = \text{Low}, P = \text{Below} \mid D = \text{Yes}) = 0.30 \times 0.40 = 0.12 \]


3.2. Probabilitas Total

Menggunakan aturan probabilitas total, kita hitung probabilitas gabungan \(P(C = \text{Low}, P = \text{Below})\):

\[ P(C = \text{Low}, P = \text{Below}) = P(C = \text{Low}, P = \text{Below} \mid D = \text{Yes}) \cdot P(D = \text{Yes}) + P(C = \text{Low}, P = \text{Below} \mid D = \text{No}) \cdot P(D = \text{No}) \]

Substitusi nilai untuk kedua kasus (dengan independensi):

\[ P(C = \text{Low}, P = \text{Below} \mid D = \text{No}) = P(C = \text{Low}) \times P(P = \text{Below}) = 0.30 \times 0.40 = 0.12 \]

Sehingga:

\[ P(C = \text{Low}, P = \text{Below}) = (0.12 \cdot 0.05) + (0.12 \cdot 0.95) \]

Hitung masing-masing bagian:

\[ P(C = \text{Low}, P = \text{Below}) = 0.006 + 0.114 = 0.12 \]


4. Menghitung Probabilitas dengan Teorema Bayes

Sekarang kita substitusi semua nilai ke dalam rumus Teorema Bayes:

\[ P(D = \text{Yes} \mid C = \text{Low}, P = \text{Below}) = \frac{P(C = \text{Low}, P = \text{Below} \mid D = \text{Yes}) \cdot P(D = \text{Yes})}{P(C = \text{Low}, P = \text{Below})} \]

Dengan nilai:

  • \(P(C = \text{Low}, P = \text{Below} \mid D = \text{Yes}) = 0.12\)
  • \(P(D = \text{Yes}) = 0.05\)
  • \(P(C = \text{Low}, P = \text{Below}) = 0.12\)

Substitusi ke dalam rumus:

\[ P(D = \text{Yes} \mid C = \text{Low}, P = \text{Below}) = \frac{0.12 \cdot 0.05}{0.12} \]

Hitung pembilang:

\[ 0.12 \cdot 0.05 = 0.006 \]

Sehingga:

\[ P(D = \text{Yes} \mid C = \text{Low}, P = \text{Below}) = \frac{0.006}{0.12} = 0.05 \]


5. Hasil dan Interpretasi

Probabilitas bahwa suatu produk cacat (\(D = \text{Yes}\)) jika diketahui komponen rendah (\(C = \text{Low}\)) dan proses produksi di bawah standar (\(P = \text{Below}\)) adalah:

\[ P(D = \text{Yes} \mid C = \text{Low}, P = \text{Below}) = 5\% \]

Interpretasi:
Meskipun komponen rendah dan proses produksi di bawah standar, probabilitas produk cacat tetap rendah sebesar 5%.


Studi Kasus 2


Penerapan Probabilitas dalam Deteksi Penipuan Transaksi

Sebuah perusahaan e-commerce ingin mendeteksi transaksi yang berpotensi penipuan. Berdasarkan data historis, hanya 1% transaksi yang tergolong penipuan. Perusahaan menggunakan fitur-fitur seperti lokasi transaksi, jumlah pembelian, dan metode pembayaran untuk membantu mendeteksi potensi penipuan.


1. Definisi Fitur Data

Berikut adalah fitur-fitur yang digunakan untuk memprediksi transaksi penipuan:

  1. Lokasi (\(L\)): Negara atau kota tempat transaksi dilakukan.
    • Contoh: Luar Negeri (\(L = \text{Foreign}\)) atau Domestik.
  2. Jumlah Pembelian (\(A\)): Jumlah uang yang dibelanjakan.
    • Contoh: Tinggi (\(A = \text{High}\)) jika lebih dari $500.
  3. Metode Pembayaran (\(M\)): Metode yang digunakan untuk pembayaran.
    • Contoh: Menggunakan Kartu Kredit (\(M = \text{Credit Card}\)).
  4. Penipuan (\(F\)): Status transaksi.
    • Penipuan (\(F = \text{Fraud}\)) atau Bukan Penipuan (\(F = \text{Not Fraud}\)).

2. Data Historis

Berdasarkan data historis perusahaan:

  • Probabilitas awal transaksi penipuan: \[ P(F = \text{Fraud}) = 0.01, \quad P(F = \text{Not Fraud}) = 0.99. \]

  • Probabilitas fitur secara umum:

    • Lokasi luar negeri: \[ P(L = \text{Foreign}) = 0.2. \]
    • Jumlah pembelian tinggi: \[ P(A = \text{High}) = 0.1. \]
    • Metode pembayaran kartu kredit: \[ P(M = \text{Credit Card}) = 0.5. \]

3. Tujuan

Kita ingin menghitung probabilitas transaksi penipuan jika diketahui:

  • Lokasi: Luar Negeri \(L = \text{Foreign}\),
  • Jumlah Pembelian: Tinggi \(A = \text{High}\),
  • Metode Pembayaran: Kartu Kredit \(M = \text{Credit Card}\).

Kita akan menggunakan Teorema Bayes:

\[ P(F = \text{Fraud} \mid L, A, M) = \frac{P(L, A, M \mid F) \cdot P(F)}{P(L, A, M)}. \]


4. Langkah Penyelesaian

4.1 Asumsi Independensi Fitur

Kita mengasumsikan bahwa fitur Lokasi, Jumlah Pembelian, dan Metode Pembayaran independen jika status penipuan diketahui. Artinya:

\[ P(L, A, M \mid F) = P(L \mid F) \cdot P(A \mid F) \cdot P(M \mid F). \]


4.2 Hitung Probabilitas Bersyarat

a) Jika Transaksi Penipuan (\(F = \text{Fraud}\)):

  • Probabilitas lokasi luar negeri: \[ P(L = \text{Foreign} \mid F = \text{Fraud}) = 0.5. \]
  • Probabilitas jumlah pembelian tinggi: \[ P(A = \text{High} \mid F = \text{Fraud}) = 0.6. \]
  • Probabilitas metode pembayaran kartu kredit: \[ P(M = \text{Credit Card} \mid F = \text{Fraud}) = 0.7. \]

Maka: \[ P(L, A, M \mid F = \text{Fraud}) = 0.5 \cdot 0.6 \cdot 0.7 = 0.21. \]

b) Jika Transaksi Bukan Penipuan (\(F = \text{Not Fraud}\)):

  • Probabilitas lokasi luar negeri: \[ P(L = \text{Foreign} \mid F = \text{Not Fraud}) = 0.2. \]
  • Probabilitas jumlah pembelian tinggi: \[ P(A = \text{High} \mid F = \text{Not Fraud}) = 0.1. \]
  • Probabilitas metode pembayaran kartu kredit: \[ P(M = \text{Credit Card} \mid F = \text{Not Fraud}) = 0.5. \]

Maka: \[ P(L, A, M \mid F = \text{Not Fraud}) = 0.2 \cdot 0.1 \cdot 0.5 = 0.01. \]


4.3 Hitung Probabilitas Total \(P(L, A, M)\)

Menggunakan aturan probabilitas total:

\[ P(L, A, M) = P(L, A, M \mid F) \cdot P(F) + P(L, A, M \mid F = \text{Not Fraud}) \cdot P(F = \text{Not Fraud}). \]

Substitusi nilai: \[ P(L, A, M) = (0.21 \cdot 0.01) + (0.01 \cdot 0.99). \]

Hitung: \[ P(L, A, M) = 0.0021 + 0.0099 = 0.012. \]


4.4 Hitung Probabilitas Posterior

Menggunakan Teorema Bayes:

\[ P(F = \text{Fraud} \mid L, A, M) = \frac{P(L, A, M \mid F) \cdot P(F)}{P(L, A, M)}. \]

Substitusi nilai: \[ P(F = \text{Fraud} \mid L, A, M) = \frac{0.21 \cdot 0.01}{0.012}. \]

Hitung: \[ P(F = \text{Fraud} \mid L, A, M) = \frac{0.0021}{0.012} = 0.175. \]

Konversi ke persentase: \[ P(F = \text{Fraud} \mid L, A, M) = 17.5\%. \]


5. Hasil Akhir

Probabilitas transaksi adalah penipuan jika diketahui:

  • Lokasi transaksi: Luar Negeri,
  • Jumlah pembelian: Tinggi (lebih dari $500),
  • Metode pembayaran: Kartu Kredit,

adalah:

\[ \boxed{17.5\%} \]


6. Kesimpulan

Dengan Teorema Bayes, probabilitas awal penipuan hanya 1%. Namun, setelah mempertimbangkan fitur-fitur transaksi, probabilitas meningkat menjadi 17.5%. Ini menunjukkan bahwa fitur-fitur tersebut memberikan informasi penting dalam mendeteksi transaksi yang berpotensi penipuan.

LS0tDQp0aXRsZTogIlR1Z2FzIFByb2JhYmlsaXRhcyINCnN1YnRpdGxlOiAiU3RhdGlzdGlrYSBEYXNhciINCmF1dGhvcjogIk11aGFtbWFkIE5hYmlsIFByYXRhbWEiDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOg0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQogICAgdGh1bWJuYWlsczogdHJ1ZQ0KICAgIGxpZ2h0Ym94OiB0cnVlDQogICAgZ2FsbGVyeTogdHJ1ZQ0KICAgIGxpYl9kaXI6IGxpYnMNCiAgICBkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgY3NzOiAic3R5bGUuY3NzIg0KLS0tDQoNCjxpbWcgaWQ9ImlzaV9uYW1hIiBzcmM9IkM6L1VzZXJzL00gTmFiaWwgUHJhdGFtYS9QaWN0dXJlcy9TY3JlZW5zaG90cy9HYW1iYXIgV2hhdHNBcHAgMjAyNC0xMi0wNiBwdWt1bCAxMy4zMy4xNV9jM2ZkMGZjNy5qcGciIGFsdD0iTG9nbyIgc3R5bGU9IndpZHRoOjIwMHB4OyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiBhdXRvOyI+DQoNCiMgKipTdHVkaSBLYXN1cyAxKioNCg0KLS0tDQoNCiMjICoqTWVuZ2hpdHVuZyBQcm9iYWJpbGl0YXMgUHJvZHVrIENhY2F0KioNCg0KDQojIyAqKjEuIFJ1bXVzIFRlb3JlbWEgQmF5ZXMqKg0KDQpUZW9yZW1hIEJheWVzIGRpZ3VuYWthbiB1bnR1ayBtZW5naGl0dW5nIHByb2JhYmlsaXRhcyBiZXJzeWFyYXQuIFJ1bXVzIGRhc2FyIFRlb3JlbWEgQmF5ZXMgYWRhbGFoOg0KDQpcWw0KUChEID0gXHRleHR7WWVzfSBcbWlkIEMgPSBcdGV4dHtMb3d9LCBQID0gXHRleHR7QmVsb3d9KSA9IFxmcmFje1AoQyA9IFx0ZXh0e0xvd30sIFAgPSBcdGV4dHtCZWxvd30gXG1pZCBEID0gXHRleHR7WWVzfSkgXGNkb3QgUChEID0gXHRleHR7WWVzfSl9e1AoQyA9IFx0ZXh0e0xvd30sIFAgPSBcdGV4dHtCZWxvd30pfQ0KXF0NCg0KLS0tDQoNCiMjICoqMi4gRGF0YSBIaXN0b3JpcyoqDQoNClByb2JhYmlsaXRhcyB5YW5nIGRpa2V0YWh1aSBiZXJkYXNhcmthbiBkYXRhIGhpc3RvcmlzIGFkYWxhaDoNCg0KLSBcKCBQKEQgPSBcdGV4dHtZZXN9KSA9IDAuMDUgXCkgKFByb2JhYmlsaXRhcyBwcm9kdWsgY2FjYXQpICANCi0gXCggUChEID0gXHRleHR7Tm99KSA9IDAuOTUgXCkgKFByb2JhYmlsaXRhcyBwcm9kdWsgdGlkYWsgY2FjYXQpICANCi0gXCggUChDID0gXHRleHR7TG93fSkgPSAwLjMwIFwpIChQcm9iYWJpbGl0YXMga29tcG9uZW4gYmVya3VhbGl0YXMgcmVuZGFoKSAgDQotIFwoIFAoUCA9IFx0ZXh0e0JlbG93fSkgPSAwLjQwIFwpIChQcm9iYWJpbGl0YXMgcHJvc2VzIHByb2R1a3NpIGRpIGJhd2FoIHN0YW5kYXIpDQoNCktpdGEgYXN1bXNpa2FuIGJhaHdhIFwoIEMgXCkgKGtvbXBvbmVuIHJlbmRhaCkgZGFuIFwoIFAgXCkgKHByb3NlcyBkaSBiYXdhaCBzdGFuZGFyKSBiZXJzaWZhdCBpbmRlcGVuZGVuLiAgDQoNCi0tLQ0KDQojIyAqKjMuIFBlcmhpdHVuZ2FuIFByb2JhYmlsaXRhcyBCZXJzeWFyYXQqKg0KDQojIyMgKiozLjEuIFByb2JhYmlsaXRhcyBKaWthIFByb2R1ayBDYWNhdCoqDQoNCktpdGEgaGl0dW5nIHByb2JhYmlsaXRhcyBnYWJ1bmdhbiBhbnRhcmEga29tcG9uZW4gcmVuZGFoIGRhbiBwcm9zZXMgcHJvZHVrc2kgZGkgYmF3YWggc3RhbmRhciwgamlrYSBkaWtldGFodWkgcHJvZHVrIGNhY2F0Og0KDQpcWw0KUChDID0gXHRleHR7TG93fSwgUCA9IFx0ZXh0e0JlbG93fSBcbWlkIEQgPSBcdGV4dHtZZXN9KSA9IFAoQyA9IFx0ZXh0e0xvd30pIFx0aW1lcyBQKFAgPSBcdGV4dHtCZWxvd30pDQpcXQ0KDQpTdWJzdGl0dXNpIG5pbGFpOg0KDQpcWw0KUChDID0gXHRleHR7TG93fSwgUCA9IFx0ZXh0e0JlbG93fSBcbWlkIEQgPSBcdGV4dHtZZXN9KSA9IDAuMzAgXHRpbWVzIDAuNDAgPSAwLjEyDQpcXQ0KDQotLS0NCg0KIyMjICoqMy4yLiBQcm9iYWJpbGl0YXMgVG90YWwqKg0KDQpNZW5nZ3VuYWthbiAqKmF0dXJhbiBwcm9iYWJpbGl0YXMgdG90YWwqKiwga2l0YSBoaXR1bmcgcHJvYmFiaWxpdGFzIGdhYnVuZ2FuIFwoIFAoQyA9IFx0ZXh0e0xvd30sIFAgPSBcdGV4dHtCZWxvd30pIFwpOg0KDQpcWw0KUChDID0gXHRleHR7TG93fSwgUCA9IFx0ZXh0e0JlbG93fSkgPSBQKEMgPSBcdGV4dHtMb3d9LCBQID0gXHRleHR7QmVsb3d9IFxtaWQgRCA9IFx0ZXh0e1llc30pIFxjZG90IFAoRCA9IFx0ZXh0e1llc30pICsgUChDID0gXHRleHR7TG93fSwgUCA9IFx0ZXh0e0JlbG93fSBcbWlkIEQgPSBcdGV4dHtOb30pIFxjZG90IFAoRCA9IFx0ZXh0e05vfSkNClxdDQoNClN1YnN0aXR1c2kgbmlsYWkgdW50dWsga2VkdWEga2FzdXMgKGRlbmdhbiBpbmRlcGVuZGVuc2kpOg0KDQpcWw0KUChDID0gXHRleHR7TG93fSwgUCA9IFx0ZXh0e0JlbG93fSBcbWlkIEQgPSBcdGV4dHtOb30pID0gUChDID0gXHRleHR7TG93fSkgXHRpbWVzIFAoUCA9IFx0ZXh0e0JlbG93fSkgPSAwLjMwIFx0aW1lcyAwLjQwID0gMC4xMg0KXF0NCg0KU2VoaW5nZ2E6DQoNClxbDQpQKEMgPSBcdGV4dHtMb3d9LCBQID0gXHRleHR7QmVsb3d9KSA9ICgwLjEyIFxjZG90IDAuMDUpICsgKDAuMTIgXGNkb3QgMC45NSkNClxdDQoNCkhpdHVuZyBtYXNpbmctbWFzaW5nIGJhZ2lhbjoNCg0KXFsNClAoQyA9IFx0ZXh0e0xvd30sIFAgPSBcdGV4dHtCZWxvd30pID0gMC4wMDYgKyAwLjExNCA9IDAuMTINClxdDQoNCi0tLQ0KDQojIyAqKjQuIE1lbmdoaXR1bmcgUHJvYmFiaWxpdGFzIGRlbmdhbiBUZW9yZW1hIEJheWVzKioNCg0KU2VrYXJhbmcga2l0YSBzdWJzdGl0dXNpIHNlbXVhIG5pbGFpIGtlIGRhbGFtIHJ1bXVzIFRlb3JlbWEgQmF5ZXM6DQoNClxbDQpQKEQgPSBcdGV4dHtZZXN9IFxtaWQgQyA9IFx0ZXh0e0xvd30sIFAgPSBcdGV4dHtCZWxvd30pID0gXGZyYWN7UChDID0gXHRleHR7TG93fSwgUCA9IFx0ZXh0e0JlbG93fSBcbWlkIEQgPSBcdGV4dHtZZXN9KSBcY2RvdCBQKEQgPSBcdGV4dHtZZXN9KX17UChDID0gXHRleHR7TG93fSwgUCA9IFx0ZXh0e0JlbG93fSl9DQpcXQ0KDQpEZW5nYW4gbmlsYWk6DQoNCi0gXCggUChDID0gXHRleHR7TG93fSwgUCA9IFx0ZXh0e0JlbG93fSBcbWlkIEQgPSBcdGV4dHtZZXN9KSA9IDAuMTIgXCkgIA0KLSBcKCBQKEQgPSBcdGV4dHtZZXN9KSA9IDAuMDUgXCkgIA0KLSBcKCBQKEMgPSBcdGV4dHtMb3d9LCBQID0gXHRleHR7QmVsb3d9KSA9IDAuMTIgXCkNCg0KU3Vic3RpdHVzaSBrZSBkYWxhbSBydW11czoNCg0KXFsNClAoRCA9IFx0ZXh0e1llc30gXG1pZCBDID0gXHRleHR7TG93fSwgUCA9IFx0ZXh0e0JlbG93fSkgPSBcZnJhY3swLjEyIFxjZG90IDAuMDV9ezAuMTJ9DQpcXQ0KDQpIaXR1bmcgcGVtYmlsYW5nOg0KDQpcWw0KMC4xMiBcY2RvdCAwLjA1ID0gMC4wMDYNClxdDQoNClNlaGluZ2dhOg0KDQpcWw0KUChEID0gXHRleHR7WWVzfSBcbWlkIEMgPSBcdGV4dHtMb3d9LCBQID0gXHRleHR7QmVsb3d9KSA9IFxmcmFjezAuMDA2fXswLjEyfSA9IDAuMDUNClxdDQoNCi0tLQ0KDQojIyAqKjUuIEhhc2lsIGRhbiBJbnRlcnByZXRhc2kqKg0KDQpQcm9iYWJpbGl0YXMgYmFod2Egc3VhdHUgcHJvZHVrICoqY2FjYXQqKiAoXCggRCA9IFx0ZXh0e1llc30gXCkpIGppa2EgZGlrZXRhaHVpIGtvbXBvbmVuIHJlbmRhaCAoXCggQyA9IFx0ZXh0e0xvd30gXCkpIGRhbiBwcm9zZXMgcHJvZHVrc2kgZGkgYmF3YWggc3RhbmRhciAoXCggUCA9IFx0ZXh0e0JlbG93fSBcKSkgYWRhbGFoOg0KDQpcWw0KUChEID0gXHRleHR7WWVzfSBcbWlkIEMgPSBcdGV4dHtMb3d9LCBQID0gXHRleHR7QmVsb3d9KSA9IDVcJQ0KXF0NCg0KKipJbnRlcnByZXRhc2kqKjogIA0KTWVza2lwdW4ga29tcG9uZW4gcmVuZGFoIGRhbiBwcm9zZXMgcHJvZHVrc2kgZGkgYmF3YWggc3RhbmRhciwgcHJvYmFiaWxpdGFzIHByb2R1ayBjYWNhdCB0ZXRhcCAqKnJlbmRhaCoqIHNlYmVzYXIgKio1JSoqLg0KDQotLS0NCg0KIyAqKlN0dWRpIEthc3VzIDIqKg0KDQotLS0NCg0KIyMgKipQZW5lcmFwYW4gUHJvYmFiaWxpdGFzIGRhbGFtIERldGVrc2kgUGVuaXB1YW4gVHJhbnNha3NpKioNCg0KU2VidWFoIHBlcnVzYWhhYW4gZS1jb21tZXJjZSBpbmdpbiBtZW5kZXRla3NpIHRyYW5zYWtzaSB5YW5nICoqYmVycG90ZW5zaSBwZW5pcHVhbioqLiBCZXJkYXNhcmthbiBkYXRhIGhpc3RvcmlzLCBoYW55YSAqKjElIHRyYW5zYWtzaSoqIHlhbmcgdGVyZ29sb25nIHBlbmlwdWFuLiBQZXJ1c2FoYWFuIG1lbmdndW5ha2FuIGZpdHVyLWZpdHVyIHNlcGVydGkgKipsb2thc2kgdHJhbnNha3NpKiosICoqanVtbGFoIHBlbWJlbGlhbioqLCBkYW4gKiptZXRvZGUgcGVtYmF5YXJhbioqIHVudHVrIG1lbWJhbnR1IG1lbmRldGVrc2kgcG90ZW5zaSBwZW5pcHVhbi4NCg0KLS0tDQoNCiMjICoqMS4gRGVmaW5pc2kgRml0dXIgRGF0YSoqDQoNCkJlcmlrdXQgYWRhbGFoIGZpdHVyLWZpdHVyIHlhbmcgZGlndW5ha2FuIHVudHVrIG1lbXByZWRpa3NpIHRyYW5zYWtzaSBwZW5pcHVhbjoNCg0KMS4gKipMb2thc2kgKFwoTFwpKSoqOiBOZWdhcmEgYXRhdSBrb3RhIHRlbXBhdCB0cmFuc2Frc2kgZGlsYWt1a2FuLiAgDQogICAtIENvbnRvaDogTHVhciBOZWdlcmkgKFwoTCA9IFx0ZXh0e0ZvcmVpZ259XCkpIGF0YXUgRG9tZXN0aWsuDQoNCjIuICoqSnVtbGFoIFBlbWJlbGlhbiAoXChBXCkpKio6IEp1bWxhaCB1YW5nIHlhbmcgZGliZWxhbmpha2FuLiAgDQogICAtIENvbnRvaDogVGluZ2dpIChcKEEgPSBcdGV4dHtIaWdofVwpKSBqaWthIGxlYmloIGRhcmkgKipcJDUwMCoqLg0KDQozLiAqKk1ldG9kZSBQZW1iYXlhcmFuIChcKE1cKSkqKjogTWV0b2RlIHlhbmcgZGlndW5ha2FuIHVudHVrIHBlbWJheWFyYW4uICANCiAgIC0gQ29udG9oOiBNZW5nZ3VuYWthbiAqKkthcnR1IEtyZWRpdCoqIChcKE0gPSBcdGV4dHtDcmVkaXQgQ2FyZH1cKSkuDQoNCjQuICoqUGVuaXB1YW4gKFwoRlwpKSoqOiBTdGF0dXMgdHJhbnNha3NpLiAgDQogICAtIFBlbmlwdWFuIChcKEYgPSBcdGV4dHtGcmF1ZH1cKSkgYXRhdSBCdWthbiBQZW5pcHVhbiAoXChGID0gXHRleHR7Tm90IEZyYXVkfVwpKS4NCg0KLS0tDQoNCiMjICoqMi4gRGF0YSBIaXN0b3JpcyoqDQoNCkJlcmRhc2Fya2FuIGRhdGEgaGlzdG9yaXMgcGVydXNhaGFhbjoNCg0KLSBQcm9iYWJpbGl0YXMgYXdhbCB0cmFuc2Frc2kgcGVuaXB1YW46DQogIFxbDQogIFAoRiA9IFx0ZXh0e0ZyYXVkfSkgPSAwLjAxLCBccXVhZCBQKEYgPSBcdGV4dHtOb3QgRnJhdWR9KSA9IDAuOTkuDQogIFxdDQoNCi0gUHJvYmFiaWxpdGFzIGZpdHVyIHNlY2FyYSB1bXVtOg0KICAtIExva2FzaSBsdWFyIG5lZ2VyaToNCiAgICBcWw0KICAgIFAoTCA9IFx0ZXh0e0ZvcmVpZ259KSA9IDAuMi4NCiAgICBcXQ0KICAtIEp1bWxhaCBwZW1iZWxpYW4gdGluZ2dpOg0KICAgIFxbDQogICAgUChBID0gXHRleHR7SGlnaH0pID0gMC4xLg0KICAgIFxdDQogIC0gTWV0b2RlIHBlbWJheWFyYW4ga2FydHUga3JlZGl0Og0KICAgIFxbDQogICAgUChNID0gXHRleHR7Q3JlZGl0IENhcmR9KSA9IDAuNS4NCiAgICBcXQ0KDQotLS0NCg0KIyMgKiozLiBUdWp1YW4qKg0KDQpLaXRhIGluZ2luIG1lbmdoaXR1bmcgcHJvYmFiaWxpdGFzICoqdHJhbnNha3NpIHBlbmlwdWFuKiogamlrYSBkaWtldGFodWk6DQoNCi0gTG9rYXNpOiAqKkx1YXIgTmVnZXJpKiogXChMID0gXHRleHR7Rm9yZWlnbn1cKSwNCi0gSnVtbGFoIFBlbWJlbGlhbjogKipUaW5nZ2kqKiBcKEEgPSBcdGV4dHtIaWdofVwpLA0KLSBNZXRvZGUgUGVtYmF5YXJhbjogKipLYXJ0dSBLcmVkaXQqKiBcKE0gPSBcdGV4dHtDcmVkaXQgQ2FyZH1cKS4NCg0KS2l0YSBha2FuIG1lbmdndW5ha2FuICoqVGVvcmVtYSBCYXllcyoqOg0KDQpcWw0KUChGID0gXHRleHR7RnJhdWR9IFxtaWQgTCwgQSwgTSkgPSBcZnJhY3tQKEwsIEEsIE0gXG1pZCBGKSBcY2RvdCBQKEYpfXtQKEwsIEEsIE0pfS4NClxdDQoNCi0tLQ0KDQojIyAqKjQuIExhbmdrYWggUGVueWVsZXNhaWFuKioNCg0KIyMjICoqNC4xIEFzdW1zaSBJbmRlcGVuZGVuc2kgRml0dXIqKg0KDQpLaXRhIG1lbmdhc3Vtc2lrYW4gYmFod2EgZml0dXIgKipMb2thc2kqKiwgKipKdW1sYWggUGVtYmVsaWFuKiosIGRhbiAqKk1ldG9kZSBQZW1iYXlhcmFuKiogKippbmRlcGVuZGVuKiogamlrYSBzdGF0dXMgcGVuaXB1YW4gZGlrZXRhaHVpLiBBcnRpbnlhOg0KDQpcWw0KUChMLCBBLCBNIFxtaWQgRikgPSBQKEwgXG1pZCBGKSBcY2RvdCBQKEEgXG1pZCBGKSBcY2RvdCBQKE0gXG1pZCBGKS4NClxdDQoNCi0tLQ0KDQojIyMgKio0LjIgSGl0dW5nIFByb2JhYmlsaXRhcyBCZXJzeWFyYXQqKg0KDQoqKmEpIEppa2EgVHJhbnNha3NpIFBlbmlwdWFuIChcKEYgPSBcdGV4dHtGcmF1ZH1cKSkqKjoNCg0KLSBQcm9iYWJpbGl0YXMgbG9rYXNpIGx1YXIgbmVnZXJpOg0KICBcWw0KICBQKEwgPSBcdGV4dHtGb3JlaWdufSBcbWlkIEYgPSBcdGV4dHtGcmF1ZH0pID0gMC41Lg0KICBcXQ0KLSBQcm9iYWJpbGl0YXMganVtbGFoIHBlbWJlbGlhbiB0aW5nZ2k6DQogIFxbDQogIFAoQSA9IFx0ZXh0e0hpZ2h9IFxtaWQgRiA9IFx0ZXh0e0ZyYXVkfSkgPSAwLjYuDQogIFxdDQotIFByb2JhYmlsaXRhcyBtZXRvZGUgcGVtYmF5YXJhbiBrYXJ0dSBrcmVkaXQ6DQogIFxbDQogIFAoTSA9IFx0ZXh0e0NyZWRpdCBDYXJkfSBcbWlkIEYgPSBcdGV4dHtGcmF1ZH0pID0gMC43Lg0KICBcXQ0KDQpNYWthOg0KXFsNClAoTCwgQSwgTSBcbWlkIEYgPSBcdGV4dHtGcmF1ZH0pID0gMC41IFxjZG90IDAuNiBcY2RvdCAwLjcgPSAwLjIxLg0KXF0NCg0KKipiKSBKaWthIFRyYW5zYWtzaSBCdWthbiBQZW5pcHVhbiAoXChGID0gXHRleHR7Tm90IEZyYXVkfVwpKSoqOg0KDQotIFByb2JhYmlsaXRhcyBsb2thc2kgbHVhciBuZWdlcmk6DQogIFxbDQogIFAoTCA9IFx0ZXh0e0ZvcmVpZ259IFxtaWQgRiA9IFx0ZXh0e05vdCBGcmF1ZH0pID0gMC4yLg0KICBcXQ0KLSBQcm9iYWJpbGl0YXMganVtbGFoIHBlbWJlbGlhbiB0aW5nZ2k6DQogIFxbDQogIFAoQSA9IFx0ZXh0e0hpZ2h9IFxtaWQgRiA9IFx0ZXh0e05vdCBGcmF1ZH0pID0gMC4xLg0KICBcXQ0KLSBQcm9iYWJpbGl0YXMgbWV0b2RlIHBlbWJheWFyYW4ga2FydHUga3JlZGl0Og0KICBcWw0KICBQKE0gPSBcdGV4dHtDcmVkaXQgQ2FyZH0gXG1pZCBGID0gXHRleHR7Tm90IEZyYXVkfSkgPSAwLjUuDQogIFxdDQoNCk1ha2E6DQpcWw0KUChMLCBBLCBNIFxtaWQgRiA9IFx0ZXh0e05vdCBGcmF1ZH0pID0gMC4yIFxjZG90IDAuMSBcY2RvdCAwLjUgPSAwLjAxLg0KXF0NCg0KLS0tDQoNCiMjIyAqKjQuMyBIaXR1bmcgUHJvYmFiaWxpdGFzIFRvdGFsIFwoUChMLCBBLCBNKVwpKioNCg0KTWVuZ2d1bmFrYW4gKiphdHVyYW4gcHJvYmFiaWxpdGFzIHRvdGFsKio6DQoNClxbDQpQKEwsIEEsIE0pID0gUChMLCBBLCBNIFxtaWQgRikgXGNkb3QgUChGKSArIFAoTCwgQSwgTSBcbWlkIEYgPSBcdGV4dHtOb3QgRnJhdWR9KSBcY2RvdCBQKEYgPSBcdGV4dHtOb3QgRnJhdWR9KS4NClxdDQoNClN1YnN0aXR1c2kgbmlsYWk6DQpcWw0KUChMLCBBLCBNKSA9ICgwLjIxIFxjZG90IDAuMDEpICsgKDAuMDEgXGNkb3QgMC45OSkuDQpcXQ0KDQpIaXR1bmc6DQpcWw0KUChMLCBBLCBNKSA9IDAuMDAyMSArIDAuMDA5OSA9IDAuMDEyLg0KXF0NCg0KLS0tDQoNCiMjIyAqKjQuNCBIaXR1bmcgUHJvYmFiaWxpdGFzIFBvc3RlcmlvcioqDQoNCk1lbmdndW5ha2FuICoqVGVvcmVtYSBCYXllcyoqOg0KDQpcWw0KUChGID0gXHRleHR7RnJhdWR9IFxtaWQgTCwgQSwgTSkgPSBcZnJhY3tQKEwsIEEsIE0gXG1pZCBGKSBcY2RvdCBQKEYpfXtQKEwsIEEsIE0pfS4NClxdDQoNClN1YnN0aXR1c2kgbmlsYWk6DQpcWw0KUChGID0gXHRleHR7RnJhdWR9IFxtaWQgTCwgQSwgTSkgPSBcZnJhY3swLjIxIFxjZG90IDAuMDF9ezAuMDEyfS4NClxdDQoNCkhpdHVuZzoNClxbDQpQKEYgPSBcdGV4dHtGcmF1ZH0gXG1pZCBMLCBBLCBNKSA9IFxmcmFjezAuMDAyMX17MC4wMTJ9ID0gMC4xNzUuDQpcXQ0KDQpLb252ZXJzaSBrZSBwZXJzZW50YXNlOg0KXFsNClAoRiA9IFx0ZXh0e0ZyYXVkfSBcbWlkIEwsIEEsIE0pID0gMTcuNVwlLg0KXF0NCg0KLS0tDQoNCiMjICoqNS4gSGFzaWwgQWtoaXIqKg0KDQpQcm9iYWJpbGl0YXMgdHJhbnNha3NpIGFkYWxhaCAqKnBlbmlwdWFuKiogamlrYSBkaWtldGFodWk6DQoNCi0gTG9rYXNpIHRyYW5zYWtzaTogKipMdWFyIE5lZ2VyaSoqLA0KLSBKdW1sYWggcGVtYmVsaWFuOiAqKlRpbmdnaSoqIChsZWJpaCBkYXJpIFwkNTAwKSwNCi0gTWV0b2RlIHBlbWJheWFyYW46ICoqS2FydHUgS3JlZGl0KiosDQoNCmFkYWxhaDoNCg0KXFsNClxib3hlZHsxNy41XCV9DQpcXQ0KDQotLS0NCg0KIyMgKio2LiBLZXNpbXB1bGFuKioNCg0KRGVuZ2FuICoqVGVvcmVtYSBCYXllcyoqLCBwcm9iYWJpbGl0YXMgYXdhbCBwZW5pcHVhbiBoYW55YSAqKjElKiouIE5hbXVuLCBzZXRlbGFoIG1lbXBlcnRpbWJhbmdrYW4gZml0dXItZml0dXIgdHJhbnNha3NpLCBwcm9iYWJpbGl0YXMgbWVuaW5na2F0IG1lbmphZGkgKioxNy41JSoqLiBJbmkgbWVudW5qdWtrYW4gYmFod2EgZml0dXItZml0dXIgdGVyc2VidXQgbWVtYmVyaWthbiBpbmZvcm1hc2kgcGVudGluZyBkYWxhbSBtZW5kZXRla3NpIHRyYW5zYWtzaSB5YW5nIGJlcnBvdGVuc2kgcGVuaXB1YW4uDQoNCg==