

Email : brigita.melantika@student.matanauniversity.ac.id
RPubs : https://rpubs.com/brigitatiaraem/
Jurusan : Statistika
Address : ARA Center, Matana University Tower
Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.
(3.3.1.) Functions of Random Variables and their Distributions
Sub bab ini membahas mengenai cara-cara untuk membuat distribusi probabilitas parametrik baru dari distribusi yang sudah ada. Secara khusus, misalkan X sebuah variabel acak kontinu dengan pdf (probability distribution function) yang diketahui \(fX(x)\) dan fungsi distribusi \(FX(x)\). Kemudian distribusi \(Y = g(X)\) , di mana \(g(X)\) adalah transformasi satu-ke-satu yang mendefinisikan variabel acak baru \(Y\) .
Dengan demikian pada sub bab ini menerapkan teknik-teknik berikut untuk membuat keluarga distribusi baru:
perkalian dengan sebuah konstanta
pemangkatan,
eksponensial, dan
pencampuran.
(3.3.2.) Multiplication by a Constant
Jika data klaim menunjukkan perubahan dari waktu ke waktu, maka transformasi tersebut dapat berguna untuk menyesuaikan inflasi. Jika tingkat inflasi positif maka biaya klaim meningkat, dan jika negatif maka biaya menurun. Untuk menyesuaikan dengan inflasi, maka mengalikan biaya X dengan 1+ tingkat inflasi (inflasi negatif adalah deflasi). Untuk memperhitungkan dampak mata uang terhadap biaya klaim, maka menggunakan transformasi untuk menerapkan konversi mata uang dari mata uang dasar ke mata uang lawan.
Pertimbangkan transformasi \(Y = c_X\) , dimana \(c>0\) , maka fungsi distribusi dari \(Y\) diberikan oleh

Dengan menggunakan aturan rantai untuk diferensiasi, pdf bunga \(f_Y(y)\) dapat ditulis sebagai

Misalkan X termasuk dalam himpunan distribusi parametrik tertentu dan mendefinisikan versi yang diskalakan \(Y = c_X , c > 0\) . Jika \(Y\) berada dalam himpunan distribusi yang sama maka distribusi tersebut dikatakan sebagai distribusi skala. Ketika sebuah anggota dari distribusi skala dikalikan dengan sebuah konstanta \(c\) \(( c>0 )\), parameter skala untuk distribusi skala ini memenuhi dua kondisi:
Contoh 3.3.1. Pertanyaan Ujian Aktuaria. Kerugian Asuransi Mobil Eiffel dilambangkan dalam mata uang Euro dan mengikuti distribusi lognormal dengan \(μ = 8\) dan \(σ = 2\) . Mengingat bahwa 1 euro = 1,3 dolar, tentukan himpunan parameter lognormal yang menggambarkan distribusi kerugian Eiffel dalam dolar.

Maka Y mengikuti distribusi lognormal dengan parameter \(4log1.3+μ=8.26\) dan \(σ = 2.00\). Jika \(μ = log(m)\), dengan mudah dapat dilihat bahwa \(m = e^μ\) adalah parameter skala yang dikalikan dengan 1,3 sedangkan σ adalah parameter bentuk yang tidak berubah.
(3.3.3) Raising to a Power
Pada Bagian 3.2.3, telah membahas tentang fleksibilitas distribusi Weibull dalam menyesuaikan data keandalan. Distribusi Weibull adalah transformasi pangkat dari distribusi eksponensial. Ini adalah aplikasi dari jenis transformasi lain yang melibatkan peningkatan variabel acak menjadi pangkat.
Pertimbangkan transformasi \(Y = X^τ\) dengan \(τ>0\) , maka fungsi distribusi dari \(Y\) diberikan oleh

Oleh karena itu, pdf dari bunga \(f_Y(y)\) dapat ditulis sebagai

Di sisi lain, jika \(τ < 0\) maka fungsi distribusi dari \(Y\) diberikan oleh

Contoh 3.3.3. Asumsikan bahwa \(X\) mengikuti distribusi eksponensial dengan rata-rata \(θ\) dan pertimbangkan variabel yang ditransformasi \(Y = X^τ\) . Tunjukkan bahwa \(Y\) mengikuti distribusi Weibull ketika \(τ\) positif dan tentukan parameter-parameter dari distribusi Weibull.

di mana \(α = 1/τ\) dan \(β = θ^τ\). Kemudian, \(Y\) mengikuti distribusi Weibull dengan parameter bentuk \(α\) dan parameter skala \(β\) .
(3.3.4.) Exponentiation
Distribusi normal adalah model yang sangat populer untuk sejumlah besar aplikasi ketika ukuran sampel besar, distribusi ini dapat berfungsi sebagai distribusi perkiraan untuk model lainnya. Jika variabel acak X memiliki distribusi normal dengan rata-rata \(μ\) dan varians \(σ^2\) maka \(Y = e^X\) memiliki distribusi lognormal dengan parameter \(μ\) dan \(σ^2\) . Variabel acak lognormal memiliki batas bawah nol, condong ke kanan, dan memiliki ekor kanan yang panjang. Distribusi lognormal biasanya digunakan untuk menggambarkan distribusi aset keuangan seperti harga saham. Distribusi ini juga digunakan untuk menyesuaikan jumlah klaim untuk asuransi mobil dan kesehatan. Ini adalah contoh jenis transformasi lain yang melibatkan eksponensial.
Secara umum, pertimbangkan transformasi \(Y = e^X\) . Kemudian, fungsi distribusi dari \(Y\) diberikan oleh

Dengan mengambil turunan bahwa pdf bunga \(f_Y(y)\) dapat ditulis sebagai

Sebagai kasus khusus yang penting, misalkan \(X\) berdistribusi normal dengan rata-rata \(μ\) dan varians \(σ^2\) . Maka, distribusi dari \(Y = e^X\) adalah

Ini dikenal sebagai distribusi lognormal.
Contoh 3.3.4. Pertanyaan Ujian Aktuaria. Asumsikan bahwa \(X\) memiliki distribusi seragam pada interval \((0, c)\) dan mendefinisikan \(Y = e^X\) . Tentukan distribusi dari \(Y\).

(3.3.5.) Finite Mixtures
Distribusi campuran merupakan cara yang berguna untuk memodelkan data yang diambil dari populasi yang heterogen. Populasi induk ini dapat dianggap dibagi menjadi beberapa subpopulasi dengan distribusi yang berbeda.
(3.3.5.1) Two-point Mixture
Jika fenomena yang mendasari beragam dan sebenarnya dapat digambarkan sebagai dua fenomena yang mewakili dua subpopulasi de_ngan modus yang berbeda, dapat membangun variabel acak campuran dua titik \(X\) . Diberikan variabel acak \(X_1\) dan \(X_2\) dengan pdf \(fX_1(x)\) dan \(fX_2(x)\) masing-masing, pdf dari \(X\) adalah rata-rata tertimbang dari komponen pdf \(fX_1(x)\) dan \(fX_2(x)\). Pdf dan fungsi distribusi dari \(X\) diberikan oleh

untuk \(0<a<1\) , dengan parameter pencampuran \(a\) dan \((1-a)\) masing-masing mewakili proporsi titik data yang termasuk dalam masing-masing dua subpopulasi. Rata-rata tertimbang ini dapat diterapkan pada sejumlah besaran terkait distribusi lainnya. Momen mentah ke-k dan fungsi pembangkit momen dari \(X\) diberikan oleh

dan

Contoh 3.3.5. Pertanyaan Ujian Aktuaria. Kumpulan polis asuransi terdiri dari dua jenis. 25% polis adalah Tipe 1 dan 75% polis adalah Tipe 2. Untuk polis Tipe 1, jumlah kerugian per tahun mengikuti distribusi eksponensial dengan rata-rata 200, dan untuk polis Tipe 2, jumlah kerugian per tahun mengikuti distribusi Pareto dengan parameter \(α = 3\) dan \(θ = 200\) . Untuk sebuah polis yang dipilih secara acak dari seluruh kumpulan kedua jenis polis tersebut, tentukan probabilitas bahwa kerugian tahunan akan kurang dari 100, dan tentukan rata-rata kerugiannya.

(3.3.5.2.) k-point Mixture
Dalam kasus distribusi campuran berhingga, variabel acak yang diminati \(X\) memiliki probabilitas \(p_i\) untuk terambil dari subpopulasi homogen \(i\) dengan \(i = 1,2,...,k\) dan \(k\) adalah jumlah subpopulasi yang ditentukan pada awalnya dalam campuran. Parameter pencampuran \(p_i\) merepresentasikan proporsi observasi dari subpopulasi \(i\) . Pertimbangkan variabel acak \(X\) yang dihasilkan dari k subpopulasi yang berbeda, di mana subpopulasi \(i\) dimodelkan dengan distribusi kontinu \(fX_i(x)\) . Distribusi probabilitas dari \(X\) diberikan oleh

Model ini sering disebut sebagai campuran terbatas atau campuran k-point mixture. Fungsi distribusi, r momen mentah ke-k dan fungsi pembangkit momen dari k-point mixture ke-k diberikan sebagai

Contoh 3.3.6. Pertanyaan Ujian Aktuaria. \(Y_1\) adalah campuran dari \(X_1\) dan \(X_2\) dengan bobot-bobot pencampuran \(a\) dan \((1-a)\). \(Y_2\) adalah campuran dari \(X_3\) dan \(X_4\) dengan bobot pencampuran \(b\) dan \((1-b)\). \(Z\) adalah campuran dari \(Y_1\) dan \(Y_2\) dengan bobot pencampuran \(c\) dan \((1-c)\). Tunjukkan bahwa \(Z\) adalah campuran dari \(X_1, X_2, X_3 dan X_4\) dan tentukan bobot pencampurannya.

(3.3.5.6.) Continuous Mixtures
Campuran dengan jumlah subpopulasi yang sangat banyak (k menuju tak terhingga) sering disebut sebagai campuran kontinu. Dalam campuran kontinu, subpopulasi tidak dibedakan oleh parameter pencampuran diskrit tetapi oleh variabel kontinu \(Θ\) dimana \(Θ\) memainkan peran sebagai \(p_i\) dalam campuran berhingga. Pertimbangkan variabel acak \(X\) dengan distribusi yang bergantung pada parameter \(Θ\) , dimana \(Θ\) itu sendiri adalah variabel acak kontinu. Deskripsi ini menghasilkan model berikut untuk \(X\).

di mana \(f_X(x|θ)\) adalah distribusi bersyarat dari \(X\) pada nilai tertentu dari \(Θ = θ\) dan \(g_Θ(θ)\) adalah pernyataan probabilitas yang dibuat tentang parameter \(θ\) yang tidak diketahui . Dalam konteks Bayesian (dijelaskan pada Bagian 4.4), hal ini dikenal sebagai distribusi prior dari \(Θ\) (informasi sebelumnya atau pendapat ahli yang akan digunakan dalam analisis).
Fungsi distribusi, k momen mentah ke-k dan fungsi pembangkit momen dari campuran kontinu diberikan sebagai

Momen mentah ke-k ke-k dari distribusi campuran dapat ditulis ulang sebagai

Dengan menggunakan hukum ekspektasi berulang (lihat Lampiran Bab 16), dapat mendefinisikan rata-rata dan varians dari \(X\) sebagai

Contoh 3.3.7. Pertanyaan Ujian Aktuaria. \(X\) memiliki distribusi normal dengan mean sebesar \(Λ\) sebesar 1 dan variansi sebesar 1. \(Λ\) memiliki distribusi normal dengan mean 1 dan varians 1. Tentukan mean dan varians dari \(X\) .

LS0tDQp0aXRsZTogIlRFT1JJIFJJU0lLTyINCnN1YnRpdGxlOiAiV0VFSyAzIg0KYXV0aG9yOiAiQnJpZ2l0YSBUaWFyYSBFbGdpdHlhbmEgTWVsYW50aWthICgyMDIwNDkyMDAwMSkiDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy5EYXRlKCksICclQiAlZCwgJVknKWAiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50OiANCiAgICBodG1sX2RvY3VtZW50OiBudWxsDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IHllcw0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgdGhlbWU6IHNhbmRzdG9uZQ0KICAgIGNzczogc3R5bGUxLmNzcw0KICAgIGhpZ2hsaWdodDogbW9ub2Nocm9tZQ0KLS0tDQoNCmBgYHtyIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoY2xhc3Muc291cmNlID0gIm5vY29weSIsDQogICAgICAgICAgICAgICAgICAgICAgY2xhc3Mub3V0cHV0ID0gIm5vY29weSIsDQogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEYsDQogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEYpDQpgYGANCg0KPGltZyBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBtYXJnaW46IDBweCAxMDBweCAwcHggMHB4OyB3aWR0aDoyNSUiIHNyYz0iZm90b2JhcnVrdS5qcGVnIi8+IA0KDQpgYGB7ciBsb2dvLCBlY2hvPUZBTFNFLGZpZy5hbGlnbj0nY2VudGVyJywgb3V0LndpZHRoID0gJzMwJSd9DQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygibG9nb21hdGFuYS5wbmciKQ0KYGBgDQoNCkVtYWlsICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZuYnNwOzogIGJyaWdpdGEubWVsYW50aWthQHN0dWRlbnQubWF0YW5hdW5pdmVyc2l0eS5hYy5pZCA8YnI+DQpSUHVicyAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7OiBodHRwczovL3JwdWJzLmNvbS9icmlnaXRhdGlhcmFlbS8gPGJyPg0KSnVydXNhbiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7OiBbU3RhdGlzdGlrYV0oaHR0cHM6Ly9tYXRhbmF1bml2ZXJzaXR5LmFjLmlkLz9seT1hY2FkZW1pYyZjPXNiKSA8YnI+DQpBZGRyZXNzICAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgOiBBUkEgQ2VudGVyLCBNYXRhbmEgVW5pdmVyc2l0eSBUb3dlciA8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZuYnNwOyBKbC4gQ0JEIEJhcmF0IEthdiwgUlQuMSwgQ3VydWcgU2FuZ2VyZW5nLCBLZWxhcGEgRHVhLCBUYW5nZXJhbmcsIEJhbnRlbiAxNTgxMC4NCg0KKioqKg0KDQojICgzLjMuMS4pIEZ1bmN0aW9ucyBvZiBSYW5kb20gVmFyaWFibGVzIGFuZCB0aGVpciBEaXN0cmlidXRpb25zDQoNClN1YiBiYWIgaW5pIG1lbWJhaGFzIG1lbmdlbmFpIGNhcmEtY2FyYSB1bnR1ayBtZW1idWF0IGRpc3RyaWJ1c2kgcHJvYmFiaWxpdGFzIHBhcmFtZXRyaWsgYmFydSBkYXJpIGRpc3RyaWJ1c2kgeWFuZyBzdWRhaCBhZGEuIFNlY2FyYSBraHVzdXMsIG1pc2Fsa2FuIFggc2VidWFoIHZhcmlhYmVsIGFjYWsga29udGludSBkZW5nYW4gcGRmIChwcm9iYWJpbGl0eSBkaXN0cmlidXRpb24gZnVuY3Rpb24pIHlhbmcgZGlrZXRhaHVpICRmWCh4KSQgZGFuIGZ1bmdzaSBkaXN0cmlidXNpICRGWCh4KSQuIEtlbXVkaWFuIGRpc3RyaWJ1c2kgJFkgPSBnKFgpJCAsIGRpIG1hbmEgJGcoWCkkIGFkYWxhaCB0cmFuc2Zvcm1hc2kgc2F0dS1rZS1zYXR1IHlhbmcgbWVuZGVmaW5pc2lrYW4gdmFyaWFiZWwgYWNhayBiYXJ1ICRZJCAuIA0KDQpEZW5nYW4gZGVtaWtpYW4gcGFkYSBzdWIgYmFiIGluaSBtZW5lcmFwa2FuIHRla25pay10ZWtuaWsgYmVyaWt1dCB1bnR1ayBtZW1idWF0IGtlbHVhcmdhIGRpc3RyaWJ1c2kgYmFydTogDQoNCihhKSBwZXJrYWxpYW4gZGVuZ2FuIHNlYnVhaCBrb25zdGFudGEgDQoNCihiKSBwZW1hbmdrYXRhbiwgDQoNCihjKSBla3Nwb25lbnNpYWwsIGRhbiANCg0KKGQpIHBlbmNhbXB1cmFuLiANCg0KIyMgKDMuMy4yLikgTXVsdGlwbGljYXRpb24gYnkgYSBDb25zdGFudA0KDQpKaWthIGRhdGEga2xhaW0gbWVudW5qdWtrYW4gcGVydWJhaGFuIGRhcmkgd2FrdHUga2Ugd2FrdHUsIG1ha2EgdHJhbnNmb3JtYXNpIHRlcnNlYnV0IGRhcGF0IGJlcmd1bmEgdW50dWsgbWVueWVzdWFpa2FuIGluZmxhc2kuICpKaWthIHRpbmdrYXQgaW5mbGFzaSBwb3NpdGlmIG1ha2EgYmlheWEga2xhaW0gbWVuaW5na2F0LCBkYW4gamlrYSBuZWdhdGlmIG1ha2EgYmlheWEgbWVudXJ1biouIFVudHVrIG1lbnllc3VhaWthbiBkZW5nYW4gaW5mbGFzaSwgbWFrYSBtZW5nYWxpa2FuIGJpYXlhIFggZGVuZ2FuIDErIHRpbmdrYXQgaW5mbGFzaSAoaW5mbGFzaSBuZWdhdGlmIGFkYWxhaCBkZWZsYXNpKS4gVW50dWsgbWVtcGVyaGl0dW5na2FuIGRhbXBhayBtYXRhIHVhbmcgdGVyaGFkYXAgYmlheWEga2xhaW0sIG1ha2EgbWVuZ2d1bmFrYW4gdHJhbnNmb3JtYXNpIHVudHVrIG1lbmVyYXBrYW4ga29udmVyc2kgbWF0YSB1YW5nIGRhcmkgbWF0YSB1YW5nIGRhc2FyIGtlIG1hdGEgdWFuZyBsYXdhbi4gDQoNClBlcnRpbWJhbmdrYW4gdHJhbnNmb3JtYXNpICRZID0gY19YJCAsIGRpbWFuYSAkYz4wJCAsIG1ha2EgZnVuZ3NpIGRpc3RyaWJ1c2kgZGFyaSAkWSQgZGliZXJpa2FuIG9sZWgNCg0KYGBge3IgaW1hZ2UxLCBlY2hvPUZBTFNFLCBmaWcuY2FwPSIiLGZpZy5hbGlnbj0nY2VudGVyJywgb3V0LndpZHRoID0gJzEwMCUnfQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIjMzMi4xLnBuZyIpDQpgYGANCg0KRGVuZ2FuIG1lbmdndW5ha2FuIGF0dXJhbiByYW50YWkgdW50dWsgZGlmZXJlbnNpYXNpLCBwZGYgYnVuZ2EgJGZfWSh5KSQgZGFwYXQgZGl0dWxpcyBzZWJhZ2FpDQoNCmBgYHtyIGltYWdlMiwgZWNobz1GQUxTRSwgZmlnLmNhcD0iIixmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICcxMDAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCIzMzIuMi5wbmciKQ0KYGBgDQoNCk1pc2Fsa2FuIFggdGVybWFzdWsgZGFsYW0gaGltcHVuYW4gZGlzdHJpYnVzaSBwYXJhbWV0cmlrIHRlcnRlbnR1IGRhbiBtZW5kZWZpbmlzaWthbiB2ZXJzaSB5YW5nIGRpc2thbGFrYW4gJFkgPSBjX1ggLCBjID4gMCQgLiBKaWthICRZJCBiZXJhZGEgZGFsYW0gaGltcHVuYW4gZGlzdHJpYnVzaSB5YW5nIHNhbWEgbWFrYSBkaXN0cmlidXNpIHRlcnNlYnV0IGRpa2F0YWthbiBzZWJhZ2FpIGRpc3RyaWJ1c2kgc2thbGEuIEtldGlrYSBzZWJ1YWggYW5nZ290YSBkYXJpIGRpc3RyaWJ1c2kgc2thbGEgZGlrYWxpa2FuIGRlbmdhbiBzZWJ1YWgga29uc3RhbnRhICRjJCAkKCBjPjAgKSQsIHBhcmFtZXRlciBza2FsYSB1bnR1ayBkaXN0cmlidXNpIHNrYWxhIGluaSBtZW1lbnVoaSBkdWEga29uZGlzaToNCg0KLSBQYXJhbWV0ZXIgZGl1YmFoIGRlbmdhbiBtZW5nYWxpa2FuIGRlbmdhbiBjDQogDQotIFNlbXVhIHBhcmFtZXRlciBsYWlubnlhIHRldGFwIHRpZGFrIGJlcnViYWgNCg0KKkNvbnRvaCAzLjMuMS4gUGVydGFueWFhbiBVamlhbiBBa3R1YXJpYS4qIEtlcnVnaWFuIEFzdXJhbnNpIE1vYmlsIEVpZmZlbCBkaWxhbWJhbmdrYW4gZGFsYW0gbWF0YSB1YW5nIEV1cm8gZGFuIG1lbmdpa3V0aSBkaXN0cmlidXNpIGxvZ25vcm1hbCBkZW5nYW4gJM68ID0gOCQgZGFuICTPgyA9IDIkIC4gTWVuZ2luZ2F0IGJhaHdhICoxIGV1cm8gPSAxLDMgZG9sYXIqLCB0ZW50dWthbiBoaW1wdW5hbiBwYXJhbWV0ZXIgbG9nbm9ybWFsIHlhbmcgbWVuZ2dhbWJhcmthbiBkaXN0cmlidXNpIGtlcnVnaWFuIEVpZmZlbCBkYWxhbSBkb2xhci4NCg0KYGBge3IgaW1hZ2UzLCBlY2hvPUZBTFNFLCBmaWcuY2FwPSIiLGZpZy5hbGlnbj0nY2VudGVyJywgb3V0LndpZHRoID0gJzEwMCUnfQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIjMzMi4zLnBuZyIpDQpgYGANCg0KTWFrYSBZIG1lbmdpa3V0aSBkaXN0cmlidXNpIGxvZ25vcm1hbCBkZW5nYW4gcGFyYW1ldGVyICQ0bG9nMS4zK868PTguMjYkIGRhbiAkz4MgPSAyLjAwJC4gSmlrYSAkzrwgPSBsb2cobSkkLCBkZW5nYW4gbXVkYWggZGFwYXQgZGlsaWhhdCBiYWh3YSAkbSA9IGVezrwkIGFkYWxhaCBwYXJhbWV0ZXIgc2thbGEgeWFuZyBkaWthbGlrYW4gZGVuZ2FuIDEsMyBzZWRhbmdrYW4gz4MgYWRhbGFoIHBhcmFtZXRlciBiZW50dWsgeWFuZyB0aWRhayBiZXJ1YmFoLg0KDQojICgzLjMuMykgUmFpc2luZyB0byBhIFBvd2VyDQoNClBhZGEgQmFnaWFuIDMuMi4zLCB0ZWxhaCBtZW1iYWhhcyB0ZW50YW5nIGZsZWtzaWJpbGl0YXMgZGlzdHJpYnVzaSBXZWlidWxsIGRhbGFtIG1lbnllc3VhaWthbiBkYXRhIGtlYW5kYWxhbi4gRGlzdHJpYnVzaSBXZWlidWxsIGFkYWxhaCB0cmFuc2Zvcm1hc2kgcGFuZ2thdCBkYXJpIGRpc3RyaWJ1c2kgZWtzcG9uZW5zaWFsLiBJbmkgYWRhbGFoIGFwbGlrYXNpIGRhcmkgamVuaXMgdHJhbnNmb3JtYXNpIGxhaW4geWFuZyBtZWxpYmF0a2FuIHBlbmluZ2thdGFuIHZhcmlhYmVsIGFjYWsgbWVuamFkaSBwYW5na2F0Lg0KDQpQZXJ0aW1iYW5na2FuIHRyYW5zZm9ybWFzaSAkWSA9IFhez4QkIGRlbmdhbiAkz4Q+MCQgLCBtYWthIGZ1bmdzaSBkaXN0cmlidXNpIGRhcmkgJFkkIGRpYmVyaWthbiBvbGVoDQoNCmBgYHtyIGltYWdlNCwgZWNobz1GQUxTRSwgZmlnLmNhcD0iIixmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICcxMDAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCIzMzMuMS5wbmciKQ0KYGBgDQoNCk9sZWgga2FyZW5hIGl0dSwgcGRmIGRhcmkgYnVuZ2EgJGZfWSh5KSQgZGFwYXQgZGl0dWxpcyBzZWJhZ2FpDQoNCmBgYHtyIGltYWdlNSwgZWNobz1GQUxTRSwgZmlnLmNhcD0iIixmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICcxMDAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCIzMzMuMi5wbmciKQ0KYGBgDQoNCkRpIHNpc2kgbGFpbiwgamlrYSAkz4QgPCAwJCBtYWthIGZ1bmdzaSBkaXN0cmlidXNpIGRhcmkgJFkkIGRpYmVyaWthbiBvbGVoDQoNCmBgYHtyIGltYWdlNiwgZWNobz1GQUxTRSwgZmlnLmNhcD0iIixmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICcxMDAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCIzMzMuMy5wbmciKQ0KYGBgDQoNCipDb250b2ggMy4zLjMuKiBBc3Vtc2lrYW4gYmFod2EgJFgkIG1lbmdpa3V0aSBkaXN0cmlidXNpIGVrc3BvbmVuc2lhbCBkZW5nYW4gcmF0YS1yYXRhICTOuCQgZGFuIHBlcnRpbWJhbmdrYW4gdmFyaWFiZWwgeWFuZyBkaXRyYW5zZm9ybWFzaSAkWSA9IFhez4QkIC4gVHVuanVra2FuIGJhaHdhICRZJCBtZW5naWt1dGkgZGlzdHJpYnVzaSBXZWlidWxsIGtldGlrYSAkz4QkIHBvc2l0aWYgZGFuIHRlbnR1a2FuIHBhcmFtZXRlci1wYXJhbWV0ZXIgZGFyaSBkaXN0cmlidXNpIFdlaWJ1bGwuDQoNCmBgYHtyIGltYWdlNywgZWNobz1GQUxTRSwgZmlnLmNhcD0iIixmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICcxMDAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCIzMzMuNC5wbmciKQ0KYGBgDQoNCmRpIG1hbmEgJM6xID0gMS/PhCQgZGFuICTOsiA9IM64Xs+EJC4gS2VtdWRpYW4sICRZJCBtZW5naWt1dGkgZGlzdHJpYnVzaSBXZWlidWxsIGRlbmdhbiBwYXJhbWV0ZXIgYmVudHVrICTOsSQgZGFuIHBhcmFtZXRlciBza2FsYSAkzrIkIC4NCg0KIyAoMy4zLjQuKSBFeHBvbmVudGlhdGlvbg0KDQpEaXN0cmlidXNpIG5vcm1hbCBhZGFsYWggbW9kZWwgeWFuZyBzYW5nYXQgcG9wdWxlciB1bnR1ayBzZWp1bWxhaCBiZXNhciBhcGxpa2FzaSBrZXRpa2EgdWt1cmFuIHNhbXBlbCBiZXNhciwgZGlzdHJpYnVzaSBpbmkgZGFwYXQgYmVyZnVuZ3NpIHNlYmFnYWkgZGlzdHJpYnVzaSBwZXJraXJhYW4gdW50dWsgbW9kZWwgbGFpbm55YS4gSmlrYSB2YXJpYWJlbCBhY2FrIFggbWVtaWxpa2kgZGlzdHJpYnVzaSBub3JtYWwgZGVuZ2FuIHJhdGEtcmF0YSAkzrwkIGRhbiB2YXJpYW5zICTPg14yJCBtYWthICRZID0gZV5YJCBtZW1pbGlraSBkaXN0cmlidXNpIGxvZ25vcm1hbCBkZW5nYW4gcGFyYW1ldGVyICTOvCQgZGFuICTPg14yJCAuIFZhcmlhYmVsIGFjYWsgbG9nbm9ybWFsIG1lbWlsaWtpIGJhdGFzIGJhd2FoIG5vbCwgY29uZG9uZyBrZSBrYW5hbiwgZGFuIG1lbWlsaWtpIGVrb3Iga2FuYW4geWFuZyBwYW5qYW5nLiBEaXN0cmlidXNpIGxvZ25vcm1hbCBiaWFzYW55YSBkaWd1bmFrYW4gdW50dWsgbWVuZ2dhbWJhcmthbiBkaXN0cmlidXNpIGFzZXQga2V1YW5nYW4gc2VwZXJ0aSBoYXJnYSBzYWhhbS4gRGlzdHJpYnVzaSBpbmkganVnYSBkaWd1bmFrYW4gdW50dWsgbWVueWVzdWFpa2FuIGp1bWxhaCBrbGFpbSB1bnR1ayBhc3VyYW5zaSBtb2JpbCBkYW4ga2VzZWhhdGFuLiBJbmkgYWRhbGFoIGNvbnRvaCBqZW5pcyB0cmFuc2Zvcm1hc2kgbGFpbiB5YW5nIG1lbGliYXRrYW4gZWtzcG9uZW5zaWFsLg0KDQpTZWNhcmEgdW11bSwgcGVydGltYmFuZ2thbiB0cmFuc2Zvcm1hc2kgJFkgPSBlXlgkIC4gS2VtdWRpYW4sIGZ1bmdzaSBkaXN0cmlidXNpIGRhcmkgJFkkIGRpYmVyaWthbiBvbGVoDQoNCmBgYHtyIGltYWdlOCwgZWNobz1GQUxTRSwgZmlnLmNhcD0iIixmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICcxMDAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCIzMzQuMS5wbmciKQ0KYGBgDQoNCkRlbmdhbiBtZW5nYW1iaWwgdHVydW5hbiBiYWh3YSBwZGYgYnVuZ2EgJGZfWSh5KSQgZGFwYXQgZGl0dWxpcyBzZWJhZ2FpDQoNCmBgYHtyIGltYWdlOSwgZWNobz1GQUxTRSwgZmlnLmNhcD0iIixmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICcxMDAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCIzMzQuMi5wbmciKQ0KYGBgDQoNClNlYmFnYWkga2FzdXMga2h1c3VzIHlhbmcgcGVudGluZywgbWlzYWxrYW4gJFgkIGJlcmRpc3RyaWJ1c2kgbm9ybWFsIGRlbmdhbiByYXRhLXJhdGEgJM68JCBkYW4gdmFyaWFucyAkz4NeMiQgLiBNYWthLCBkaXN0cmlidXNpIGRhcmkgJFkgPSBlXlgkIGFkYWxhaA0KDQpgYGB7ciBpbWFnZTEwLCBlY2hvPUZBTFNFLCBmaWcuY2FwPSIiLGZpZy5hbGlnbj0nY2VudGVyJywgb3V0LndpZHRoID0gJzEwMCUnfQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIjMzNC4zLnBuZyIpDQpgYGANCg0KSW5pIGRpa2VuYWwgc2ViYWdhaSBkaXN0cmlidXNpIGxvZ25vcm1hbC4gDQoNCipDb250b2ggMy4zLjQuIFBlcnRhbnlhYW4gVWppYW4gQWt0dWFyaWEuKiBBc3Vtc2lrYW4gYmFod2EgJFgkIG1lbWlsaWtpIGRpc3RyaWJ1c2kgc2VyYWdhbSBwYWRhIGludGVydmFsICQoMCwgYykkIGRhbiBtZW5kZWZpbmlzaWthbiAkWSA9IGVeWCQgLiBUZW50dWthbiBkaXN0cmlidXNpIGRhcmkgJFkkLg0KDQpgYGB7ciBpbWFnZTExLCBlY2hvPUZBTFNFLCBmaWcuY2FwPSIiLGZpZy5hbGlnbj0nY2VudGVyJywgb3V0LndpZHRoID0gJzEwMCUnfQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIjMzNC40LnBuZyIpDQpgYGANCg0KIyAoMy4zLjUuKSBGaW5pdGUgTWl4dHVyZXMNCg0KRGlzdHJpYnVzaSBjYW1wdXJhbiBtZXJ1cGFrYW4gY2FyYSB5YW5nIGJlcmd1bmEgdW50dWsgbWVtb2RlbGthbiBkYXRhIHlhbmcgZGlhbWJpbCBkYXJpIHBvcHVsYXNpIHlhbmcgaGV0ZXJvZ2VuLiBQb3B1bGFzaSBpbmR1ayBpbmkgZGFwYXQgZGlhbmdnYXAgZGliYWdpIG1lbmphZGkgYmViZXJhcGEgc3VicG9wdWxhc2kgZGVuZ2FuIGRpc3RyaWJ1c2kgeWFuZyBiZXJiZWRhLg0KDQojIyAoMy4zLjUuMSkgVHdvLXBvaW50IE1peHR1cmUNCg0KSmlrYSBmZW5vbWVuYSB5YW5nIG1lbmRhc2FyaSBiZXJhZ2FtIGRhbiBzZWJlbmFybnlhIGRhcGF0IGRpZ2FtYmFya2FuIHNlYmFnYWkgZHVhIGZlbm9tZW5hIHlhbmcgbWV3YWtpbGkgZHVhIHN1YnBvcHVsYXNpIGRlX25nYW4gbW9kdXMgeWFuZyBiZXJiZWRhLCAgIGRhcGF0IG1lbWJhbmd1biB2YXJpYWJlbCBhY2FrIGNhbXB1cmFuIGR1YSB0aXRpayAkWCQgLiBEaWJlcmlrYW4gdmFyaWFiZWwgYWNhayAkWF8xJCBkYW4gJFhfMiQgZGVuZ2FuIHBkZiAkZlhfMSh4KSQgZGFuICRmWF8yKHgpJCBtYXNpbmctbWFzaW5nLCBwZGYgZGFyaSAkWCQgYWRhbGFoIHJhdGEtcmF0YSB0ZXJ0aW1iYW5nIGRhcmkga29tcG9uZW4gcGRmICRmWF8xKHgpJCBkYW4gJGZYXzIoeCkkLiBQZGYgZGFuIGZ1bmdzaSBkaXN0cmlidXNpIGRhcmkgJFgkIGRpYmVyaWthbiBvbGVoDQoNCmBgYHtyIGltYWdlMTIsIGVjaG89RkFMU0UsIGZpZy5jYXA9IiIsZmlnLmFsaWduPSdjZW50ZXInLCBvdXQud2lkdGggPSAnMTAwJSd9DQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygiMzM1LjEucG5nIikNCmBgYA0KDQp1bnR1ayAkMDxhPDEkICwgZGVuZ2FuIHBhcmFtZXRlciBwZW5jYW1wdXJhbiAkYSQgZGFuICQoMS1hKSQgbWFzaW5nLW1hc2luZyBtZXdha2lsaSBwcm9wb3JzaSB0aXRpayBkYXRhIHlhbmcgdGVybWFzdWsgZGFsYW0gbWFzaW5nLW1hc2luZyBkdWEgc3VicG9wdWxhc2kuIFJhdGEtcmF0YSB0ZXJ0aW1iYW5nIGluaSBkYXBhdCBkaXRlcmFwa2FuIHBhZGEgc2VqdW1sYWggYmVzYXJhbiB0ZXJrYWl0IGRpc3RyaWJ1c2kgbGFpbm55YS4gTW9tZW4gbWVudGFoIGtlLWsgZGFuIGZ1bmdzaSBwZW1iYW5na2l0IG1vbWVuIGRhcmkgJFgkIGRpYmVyaWthbiBvbGVoDQoNCmBgYHtyIGltYWdlMTMsIGVjaG89RkFMU0UsIGZpZy5jYXA9IiIsZmlnLmFsaWduPSdjZW50ZXInLCBvdXQud2lkdGggPSAnMTAwJSd9DQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygiMzM1LjIucG5nIikNCmBgYA0KDQpkYW4NCg0KYGBge3IgaW1hZ2UxNCwgZWNobz1GQUxTRSwgZmlnLmNhcD0iIixmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICcxMDAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCIzMzUuMy5wbmciKQ0KYGBgDQoNCipDb250b2ggMy4zLjUuIFBlcnRhbnlhYW4gVWppYW4gQWt0dWFyaWEuKiBLdW1wdWxhbiBwb2xpcyBhc3VyYW5zaSB0ZXJkaXJpIGRhcmkgZHVhIGplbmlzLiAyNSUgcG9saXMgYWRhbGFoIFRpcGUgMSBkYW4gNzUlIHBvbGlzIGFkYWxhaCBUaXBlIDIuIFVudHVrIHBvbGlzIFRpcGUgMSwganVtbGFoIGtlcnVnaWFuIHBlciB0YWh1biBtZW5naWt1dGkgZGlzdHJpYnVzaSBla3Nwb25lbnNpYWwgZGVuZ2FuIHJhdGEtcmF0YSAyMDAsIGRhbiB1bnR1ayBwb2xpcyBUaXBlIDIsIGp1bWxhaCBrZXJ1Z2lhbiBwZXIgdGFodW4gbWVuZ2lrdXRpIGRpc3RyaWJ1c2kgUGFyZXRvIGRlbmdhbiBwYXJhbWV0ZXIgJM6xID0gMyQgZGFuICTOuCA9IDIwMCQgLiBVbnR1ayBzZWJ1YWggcG9saXMgeWFuZyBkaXBpbGloIHNlY2FyYSBhY2FrIGRhcmkgc2VsdXJ1aCBrdW1wdWxhbiBrZWR1YSBqZW5pcyBwb2xpcyB0ZXJzZWJ1dCwgdGVudHVrYW4gcHJvYmFiaWxpdGFzIGJhaHdhIGtlcnVnaWFuIHRhaHVuYW4gYWthbiBrdXJhbmcgZGFyaSAxMDAsIGRhbiB0ZW50dWthbiByYXRhLXJhdGEga2VydWdpYW5ueWEuDQoNCmBgYHtyIGltYWdlMTUsIGVjaG89RkFMU0UsIGZpZy5jYXA9IiIsZmlnLmFsaWduPSdjZW50ZXInLCBvdXQud2lkdGggPSAnMTAwJSd9DQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygiMzM1LjQucG5nIikNCmBgYA0KDQojIyAoMy4zLjUuMi4pIGstcG9pbnQgTWl4dHVyZQ0KDQpEYWxhbSBrYXN1cyBkaXN0cmlidXNpIGNhbXB1cmFuIGJlcmhpbmdnYSwgdmFyaWFiZWwgYWNhayB5YW5nIGRpbWluYXRpICRYJCBtZW1pbGlraSBwcm9iYWJpbGl0YXMgJHBfaSQgdW50dWsgdGVyYW1iaWwgZGFyaSBzdWJwb3B1bGFzaSBob21vZ2VuICRpJCBkZW5nYW4gJGkgPSAxLDIsLi4uLGskIGRhbiAkayQgYWRhbGFoIGp1bWxhaCBzdWJwb3B1bGFzaSB5YW5nIGRpdGVudHVrYW4gcGFkYSBhd2FsbnlhIGRhbGFtIGNhbXB1cmFuLiBQYXJhbWV0ZXIgcGVuY2FtcHVyYW4gJHBfaSQgbWVyZXByZXNlbnRhc2lrYW4gcHJvcG9yc2kgb2JzZXJ2YXNpIGRhcmkgc3VicG9wdWxhc2kgJGkkIC4gUGVydGltYmFuZ2thbiB2YXJpYWJlbCBhY2FrICRYJCB5YW5nIGRpaGFzaWxrYW4gZGFyaSBrIHN1YnBvcHVsYXNpIHlhbmcgYmVyYmVkYSwgZGkgbWFuYSBzdWJwb3B1bGFzaSAkaSQgZGltb2RlbGthbiBkZW5nYW4gZGlzdHJpYnVzaSBrb250aW51ICRmWF9pKHgpJCAuIERpc3RyaWJ1c2kgcHJvYmFiaWxpdGFzIGRhcmkgJFgkIGRpYmVyaWthbiBvbGVoDQoNCmBgYHtyIGltYWdlMTYsIGVjaG89RkFMU0UsIGZpZy5jYXA9IiIsZmlnLmFsaWduPSdjZW50ZXInLCBvdXQud2lkdGggPSAnMTAwJSd9DQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygiMzM1LjUucG5nIikNCmBgYA0KDQpNb2RlbCBpbmkgc2VyaW5nIGRpc2VidXQgc2ViYWdhaSBjYW1wdXJhbiB0ZXJiYXRhcyBhdGF1IGNhbXB1cmFuIGstcG9pbnQgbWl4dHVyZS4gRnVuZ3NpIGRpc3RyaWJ1c2ksIHIgbW9tZW4gbWVudGFoIGtlLWsgZGFuIGZ1bmdzaSBwZW1iYW5na2l0IG1vbWVuIGRhcmkgay1wb2ludCBtaXh0dXJlIGtlLWsgZGliZXJpa2FuIHNlYmFnYWkNCg0KYGBge3IgaW1hZ2UxNywgZWNobz1GQUxTRSwgZmlnLmNhcD0iIixmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICcxMDAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCIzMzUuNi5wbmciKQ0KYGBgDQoNCipDb250b2ggMy4zLjYuIFBlcnRhbnlhYW4gVWppYW4gQWt0dWFyaWEuKiAgJFlfMSQgYWRhbGFoIGNhbXB1cmFuIGRhcmkgJFhfMSQgZGFuICRYXzIkIGRlbmdhbiBib2JvdC1ib2JvdCBwZW5jYW1wdXJhbiAkYSQgZGFuICQoMS1hKSQuICAkWV8yJCBhZGFsYWggY2FtcHVyYW4gZGFyaSAkWF8zJCBkYW4gJFhfNCQgZGVuZ2FuIGJvYm90IHBlbmNhbXB1cmFuICRiJCBkYW4gJCgxLWIpJC4gICRaJCBhZGFsYWggY2FtcHVyYW4gZGFyaSAkWV8xJCBkYW4gJFlfMiQgZGVuZ2FuIGJvYm90IHBlbmNhbXB1cmFuICRjJCBkYW4gJCgxLWMpJC4gVHVuanVra2FuIGJhaHdhICRaJCBhZGFsYWggY2FtcHVyYW4gZGFyaSAkWF8xLCBYXzIsIFhfMyBkYW4gWF80JCBkYW4gdGVudHVrYW4gYm9ib3QgcGVuY2FtcHVyYW5ueWEuDQoNCmBgYHtyIGltYWdlMTgsIGVjaG89RkFMU0UsIGZpZy5jYXA9IiIsZmlnLmFsaWduPSdjZW50ZXInLCBvdXQud2lkdGggPSAnMTAwJSd9DQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygiMzM1LjcucG5nIikNCmBgYA0KDQojIyAoMy4zLjUuNi4pIENvbnRpbnVvdXMgTWl4dHVyZXMNCg0KQ2FtcHVyYW4gZGVuZ2FuIGp1bWxhaCBzdWJwb3B1bGFzaSB5YW5nIHNhbmdhdCBiYW55YWsgKGsgbWVudWp1IHRhayB0ZXJoaW5nZ2EpIHNlcmluZyBkaXNlYnV0IHNlYmFnYWkgY2FtcHVyYW4ga29udGludS4gRGFsYW0gY2FtcHVyYW4ga29udGludSwgc3VicG9wdWxhc2kgdGlkYWsgZGliZWRha2FuIG9sZWggcGFyYW1ldGVyIHBlbmNhbXB1cmFuIGRpc2tyaXQgdGV0YXBpIG9sZWggdmFyaWFiZWwga29udGludSAkzpgkIGRpbWFuYSAkzpgkIG1lbWFpbmthbiBwZXJhbiBzZWJhZ2FpICRwX2kkIGRhbGFtIGNhbXB1cmFuIGJlcmhpbmdnYS4gUGVydGltYmFuZ2thbiB2YXJpYWJlbCBhY2FrICRYJCBkZW5nYW4gZGlzdHJpYnVzaSB5YW5nIGJlcmdhbnR1bmcgcGFkYSBwYXJhbWV0ZXIgJM6YJCAsIGRpbWFuYSAkzpgkIGl0dSBzZW5kaXJpIGFkYWxhaCB2YXJpYWJlbCBhY2FrIGtvbnRpbnUuIERlc2tyaXBzaSBpbmkgbWVuZ2hhc2lsa2FuIG1vZGVsIGJlcmlrdXQgdW50dWsgJFgkLg0KDQpgYGB7ciBpbWFnZTE5LCBlY2hvPUZBTFNFLCBmaWcuY2FwPSIiLGZpZy5hbGlnbj0nY2VudGVyJywgb3V0LndpZHRoID0gJzEwMCUnfQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIjMzNi4xLnBuZyIpDQpgYGANCg0KZGkgbWFuYSAkZl9YKHh8zrgpJCBhZGFsYWggZGlzdHJpYnVzaSBiZXJzeWFyYXQgZGFyaSAkWCQgcGFkYSBuaWxhaSB0ZXJ0ZW50dSBkYXJpICTOmCA9IM64JCBkYW4gJGdfzpgozrgpJCBhZGFsYWggcGVybnlhdGFhbiBwcm9iYWJpbGl0YXMgeWFuZyBkaWJ1YXQgdGVudGFuZyBwYXJhbWV0ZXIgJM64JCB5YW5nIHRpZGFrIGRpa2V0YWh1aSAuIERhbGFtIGtvbnRla3MgQmF5ZXNpYW4gKGRpamVsYXNrYW4gcGFkYSBCYWdpYW4gNC40KSwgaGFsIGluaSBkaWtlbmFsIHNlYmFnYWkgZGlzdHJpYnVzaSBwcmlvciBkYXJpICTOmCQgKGluZm9ybWFzaSBzZWJlbHVtbnlhIGF0YXUgcGVuZGFwYXQgYWhsaSB5YW5nIGFrYW4gZGlndW5ha2FuIGRhbGFtIGFuYWxpc2lzKS4NCg0KRnVuZ3NpIGRpc3RyaWJ1c2ksIGsgbW9tZW4gbWVudGFoIGtlLWsgZGFuIGZ1bmdzaSBwZW1iYW5na2l0IG1vbWVuIGRhcmkgY2FtcHVyYW4ga29udGludSBkaWJlcmlrYW4gc2ViYWdhaQ0KDQpgYGB7ciBpbWFnZTIwLCBlY2hvPUZBTFNFLCBmaWcuY2FwPSIiLGZpZy5hbGlnbj0nY2VudGVyJywgb3V0LndpZHRoID0gJzEwMCUnfQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIjMzNi4yLnBuZyIpDQpgYGANCg0KTW9tZW4gbWVudGFoIGtlLWsga2UtayBkYXJpIGRpc3RyaWJ1c2kgY2FtcHVyYW4gZGFwYXQgZGl0dWxpcyB1bGFuZyBzZWJhZ2FpDQoNCmBgYHtyIGltYWdlMjEsIGVjaG89RkFMU0UsIGZpZy5jYXA9IiIsZmlnLmFsaWduPSdjZW50ZXInLCBvdXQud2lkdGggPSAnMTAwJSd9DQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygiMzM2LjMucG5nIikNCmBgYA0KDQpEZW5nYW4gbWVuZ2d1bmFrYW4gaHVrdW0gZWtzcGVrdGFzaSBiZXJ1bGFuZyAobGloYXQgTGFtcGlyYW4gQmFiIDE2KSwgICBkYXBhdCBtZW5kZWZpbmlzaWthbiByYXRhLXJhdGEgZGFuIHZhcmlhbnMgZGFyaSAkWCQgc2ViYWdhaQ0KDQpgYGB7ciBpbWFnZTIyLCBlY2hvPUZBTFNFLCBmaWcuY2FwPSIiLGZpZy5hbGlnbs6bPSdjZW50ZXInLCBvdXQud2lkdGggPSAnMTAwJSd9DQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygiMzM2LjQucG5nIikNCmBgYA0KDQoqQ29udG9oIDMuMy43LiBQZXJ0YW55YWFuIFVqaWFuIEFrdHVhcmlhLiogICRYJCBtZW1pbGlraSBkaXN0cmlidXNpIG5vcm1hbCBkZW5nYW4gbWVhbiBzZWJlc2FyICTOmyQgc2ViZXNhciAxIGRhbiB2YXJpYW5zaSBzZWJlc2FyIDEuICTOmyQgbWVtaWxpa2kgZGlzdHJpYnVzaSBub3JtYWwgZGVuZ2FuIG1lYW4gMSBkYW4gdmFyaWFucyAxLiBUZW50dWthbiBtZWFuIGRhbiB2YXJpYW5zIGRhcmkgJFgkIC4NCg0KYGBge3IgaW1hZ2UyMywgZWNobz1GQUxTRSwgZmlnLmNhcD0iIixmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICcxMDAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCIzMzYuNS5wbmciKQ0KYGBgDQoNCg0KDQoNCg0KDQoNCg==