Release de CPI de SEK de abr-26. Conteúdo:

  1. Tabela de inflação em diversas medidas (Mom, SAAR e YoY)
  2. Sazonalidade da inflação nas várias aberturas.
  3. Inflação YOY e SAAR nas principais aberturas.

Tabela do CPI

MoM
SAAR
YoY
Grupo Nome fev/26 mar/26 abr/26 fev/26 mar/26 abr/26 fev/26 mar/26 abr/26
Headline CPI all items 0.6 -0.6 -0.6 0.3 1.2 0.4 0.5 0.5 -0.1
Categoria Food and Nonalcoholic Beverages 0.4 -1.0 -5.5 1.8 -0.8 -9.7 1.8 0.0 -5.7
Alcoholic Beverages, Tobacco and Narcotics 0.3 0.4 -0.1 2.7 2.7 2.5 2.6 2.4 2.3
Clothing and Footwear 2.3 2.2 0.9 0.1 2.7 2.7 -0.3 1.6 1.2
Housing, Water, Electricity, Gas and Other Fuels 0.4 -2.8 -0.7 12.0 13.1 4.6 5.3 3.5 3.2
Furnishings, Household Equipment and Routine Household Maintenance -0.2 -0.2 0.3 -4.5 -1.9 -2.2 -3.2 -3.6 -2.0
Health 1.3 0.0 -0.5 -16.3 -25.1 -17.7 -4.1 -4.6 -5.3
Transport 0.3 4.0 2.4 -0.8 2.2 8.8 -1.2 3.3 5.2
Information and Communication 1.0 -0.3 -0.7 -3.3 -1.0 0.1 -2.9 -1.8 -2.1
Recreation, Sport and Culture 0.6 -2.9 0.0 -2.8 -5.3 -5.6 -0.5 -0.6 -2.4
Education Services 0.2 -0.3 0.0 3.2 2.8 2.2 3.5 3.2 2.7
Restaurants and Accommodation Services 1.6 0.0 0.7 0.3 1.7 4.2 3.8 3.3 4.0
Insurance and Financial Services
Core CPIF excluding energy and unprocessed food 0.4 -0.7 -0.7 0.6 0.8 -0.0 1.3 1.1 0.2
Core - TRIM85 -0.1 -0.9 -1.3 1.0 0.8 0.1 1.7 1.8 0.7
Core - TRIM1 0.8 -1.3 0.3 1.0 0.7 0.5 1.8 2.1 1.5
Core - UND24 -1.0 -0.7 -0.8 0.7 0.2 -0.6 1.4 1.3 0.5
Core - KPIFPC -0.2 -0.1 -0.7 1.4 1.3 0.6 2.1 1.8 1.2
Services 0.8 -0.3 0.2 1.2 0.8 1.1 2.4 2.2 1.7
Goods 0.5 -1.0 -1.5 3.3 5.0 0.5 1.0 0.9 -0.3
Durable goods 0.5 -0.0 -0.4 -2.8 1.0 0.9 -2.7 -2.0 -1.8
Semidurable goods -0.3 0.3 1.9 -1.9 -1.5 -1.5 -2.0 -1.2 -0.6
Nondurable goods 0.6 -1.7 -2.8 5.2 5.2 -0.8 2.9 2.3 0.2

Sazonalidade

Headline

Headline - abertura

Core ex-alimentos e energia

Core Trimmed means 85

Core Trimmed means 1

Core Und24 - reponderação dos pesos

Core KPIFPC - core estatístico por PCA

Core Services

Core Goods

Inflação nas medidas SAAR e YoY

Headline

Core ex-food and energy

Core TRIM 85

Core TRIM 1

Core UND 24

Core KPIFPC - estatístico por PCA

Core services

Core goods

LS0tDQp0aXRsZTogIkNQSSByZWxlYXNlIC0gU0VLIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KDQpgYGB7ciBwYWNrYWdlcywgaW5jbHVkZSA9IEZ9DQpybShsaXN0ID0gbHMoKSkNCnN1cHByZXNzV2FybmluZ3MobGlicmFyeSh5YW1sKSkNCnN1cHByZXNzV2FybmluZ3MobGlicmFyeShkcGx5cikpDQpzdXBwcmVzc1dhcm5pbmdzKGxpYnJhcnkocmVhZHhsKSkNCnN1cHByZXNzV2FybmluZ3MobGlicmFyeShyb2xsKSkNCnN1cHByZXNzV2FybmluZ3MobGlicmFyeShrbml0cikpDQpzdXBwcmVzc1dhcm5pbmdzKGxpYnJhcnkoa2FibGVFeHRyYSkpDQoNCnNldHdkKCJDOi9Vc2Vycy9MRlNJSEtKL09uZURyaXZlIC0gQmFuY28gSXRhw7ogU0EvRG9jdW1lbnRvcy9DaGFydGJvb2tzL1NFSyIpDQpzb3VyY2UoInV0aWxzX2NwaV9jaGFydGJvb2suUiIpDQpgYGANCg0KYGBge3IgcGFyYW1ldGVycywgaW5jbHVkZT1GfQ0KDQpjb25maWdzX2NwaSA9IHJlYWRfeWFtbCgiY29uZmlnLnltbCIpDQpwYXRoX2RhdGEgPSAiQzovVXNlcnMvTEZTSUhLSi9PbmVEcml2ZSAtIEJhbmNvIEl0YcO6IFNBL0RvY3VtZW50b3MvQ2hhcnRib29rcy9TRUsvREJfY2hhcnRib29rX0NQSV9TRUsueGxzeCINCmNwaV90YXJnZXQgPSAyDQpzdGFydF9kYXRlX3NlYXMgPSBhcy5EYXRlKCIyMDAwLTAxLTAxIikgIyBEYXRhIGRlIGluw61jaW8gcGFyYSBjYWxjdWxhciBhcyBtZWRpZGFzIGRlIHNhem9uYWxpZGFkZQ0KbnBlcl95b3kgPSAyNCAjIE7Dum1lcm8gZGUgbWVzZXMgcGFyYSBwbG90YXIgbyBncsOhZmljbyBkYXMgaW5mbGHDp8O1ZXMgWU9ZIGUgU0FBUg0KDQpgYGANCg0KDQpgYGB7ciBkYXRhYmFzZSwgaW5jbHVkZSA9IEYsIGVjaG8gPSBGfQ0KZGJfbnNhID0gcmVhZF9leGNlbChwYXRoX2RhdGEsIHNoZWV0ID0gIkhhdmVyIiwgY29sX3R5cGVzID0gInRleHQiKQ0KZGJfbnNhID0gZ2V0X2NsZWFuZWRfZGF0YWJhc2UoZGJfbnNhLCBjb25maWdzX2NwaSkNCmRiX25zYV9tb20gPSBkYl9uc2ENCmRiX25zYV9tb21bLC0xXSA9IDEwMCAqIChkYl9uc2FfbW9tWywtMV0gLyBsYWcoZGJfbnNhX21vbVssLTFdKSAtIDEpDQpkYl9uc2FfeW95ID0gZGJfbnNhDQpkYl9uc2FfeW95WywtMV0gPSAxMDAgKiAoZGJfbnNhX3lveVssLTFdIC8gbGFnKGRiX25zYV95b3lbLC0xXSwgMTIpIC0gMSkNCmRiX3NhID0gZ2V0X3NlYXNvbmFsbHlfYWRqdXN0ZWQoZGJfbnNhKQ0KZGJfc2Ffc2FhciA9IGRiX3NhDQpkYl9zYV9zYWFyWywtMV0gPSBzYXBwbHkoZGJfc2Ffc2FhclssLTFdLCBmdW5jdGlvbih4KSByb2xsX21lYW4oeCwgd2lkdGggPSAzLCBtaW5fb2JzID0gMykpDQpkYl9zYV9zYWFyWywtMV0gPSAxMDAgKiAoKGRiX3NhX3NhYXJbLC0xXSAvIGxhZyhkYl9zYV9zYWFyWywtMV0sIDMpKSBeIDQgLTEpDQpsYXN0X2RhdGVfcmVsZWFzZSA9IHRhaWwobmEub21pdChkYl9uc2EpJGRhdGVTZXNzaW9uLDEpDQpsYXN0X2RhdGVfcmVsZWFzZSA9IHRvbG93ZXIoZm9ybWF0KGxhc3RfZGF0ZV9yZWxlYXNlLCAiJWItJXkiKSkNCmBgYA0KDQoNClJlbGVhc2UgZGUgQ1BJIGRlIFNFSyBkZSAqKmByIGxhc3RfZGF0ZV9yZWxlYXNlYCoqLiBDb250ZcO6ZG86DQoNCjEuIFRhYmVsYSBkZSBpbmZsYcOnw6NvIGVtIGRpdmVyc2FzIG1lZGlkYXMgKE1vbSwgU0FBUiBlIFlvWSkNCjIuIFNhem9uYWxpZGFkZSBkYSBpbmZsYcOnw6NvIG5hcyB2w6FyaWFzIGFiZXJ0dXJhcy4NCjMuIEluZmxhw6fDo28gWU9ZIGUgU0FBUiBuYXMgcHJpbmNpcGFpcyBhYmVydHVyYXMuDQoNCiMgKipUYWJlbGEgZG8gQ1BJKioNCg0KYGBge3IgY3BpX3RhYmxlLCBlY2hvPUYsIHdhcm5pbmc9RiwgbWVzc2FnZT1GfQ0KDQppdGVtc190YmwgPC0gZGF0YS5mcmFtZSgNCiAgR3J1cG8gPSBjKA0KICAgICJIZWFkbGluZSIsDQogICAgcmVwKCJDYXRlZ29yaWEiLCAxMiksDQogICAgcmVwKCJDb3JlIiwgMTApDQogICksDQogIE5vbWUgPSBjKA0KICAgICJDUEkgYWxsIGl0ZW1zIiwNCiAgICAiRm9vZCBhbmQgTm9uYWxjb2hvbGljIEJldmVyYWdlcyIsDQogICAgIkFsY29ob2xpYyBCZXZlcmFnZXMsIFRvYmFjY28gYW5kIE5hcmNvdGljcyIsDQogICAgIkNsb3RoaW5nIGFuZCBGb290d2VhciIsDQogICAgIkhvdXNpbmcsIFdhdGVyLCBFbGVjdHJpY2l0eSwgR2FzIGFuZCBPdGhlciBGdWVscyIsDQogICAgIkZ1cm5pc2hpbmdzLCBIb3VzZWhvbGQgRXF1aXBtZW50IGFuZCBSb3V0aW5lIEhvdXNlaG9sZCBNYWludGVuYW5jZSIsDQogICAgIkhlYWx0aCIsDQogICAgIlRyYW5zcG9ydCIsDQogICAgIkluZm9ybWF0aW9uIGFuZCBDb21tdW5pY2F0aW9uIiwNCiAgICAiUmVjcmVhdGlvbiwgU3BvcnQgYW5kIEN1bHR1cmUiLA0KICAgICJFZHVjYXRpb24gU2VydmljZXMgIiwNCiAgICAiUmVzdGF1cmFudHMgYW5kIEFjY29tbW9kYXRpb24gU2VydmljZXMiLA0KICAgICJJbnN1cmFuY2UgYW5kIEZpbmFuY2lhbCBTZXJ2aWNlcyIsDQogICAgIkNQSUYgZXhjbHVkaW5nIGVuZXJneSBhbmQgdW5wcm9jZXNzZWQgZm9vZCIsDQogICAgIkNvcmUgLSBUUklNODUiLA0KICAgICJDb3JlIC0gVFJJTTEiLA0KICAgICJDb3JlIC0gVU5EMjQiLA0KICAgICJDb3JlIC0gS1BJRlBDIiwNCiAgICAiU2VydmljZXMiLA0KICAgICJHb29kcyIsDQogICAgIkR1cmFibGUgZ29vZHMiLA0KICAgICJTZW1pZHVyYWJsZSBnb29kcyIsDQogICAgIk5vbmR1cmFibGUgZ29vZHMiDQogICksDQogIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRQ0KKQ0KDQpnZXRfbGFzdF9kYXRlcyA8LSBmdW5jdGlvbihkYiwgbiA9IDMpIHsNCiAgZGIgJT4lDQogICAgZmlsdGVyKCFpcy5uYShkYXRlU2Vzc2lvbikpICU+JQ0KICAgIGFycmFuZ2UoZGF0ZVNlc3Npb24pICU+JQ0KICAgIHRhaWwobikgJT4lDQogICAgcHVsbChkYXRlU2Vzc2lvbikNCn0NCg0KDQojIFVzYXIgb3Mgw7psdGltb3MgMyBtZXNlcyBkaXNwb27DrXZlaXMgZW0gY2FkYSBtZWRpZGENCmRhdGVzX21vbSAgPC0gZ2V0X2xhc3RfZGF0ZXMobmEub21pdChkYl9uc2FfbW9tKSwgMykNCmRhdGVzX3NhYXIgPC0gZ2V0X2xhc3RfZGF0ZXMobmEub21pdChkYl9zYV9zYWFyKSwgMykNCmRhdGVzX3lveSAgPC0gZ2V0X2xhc3RfZGF0ZXMobmEub21pdChkYl9uc2FfeW95KSwgMykNCg0KZm9ybWF0X21vbnRoX2xhYmVsIDwtIGZ1bmN0aW9uKHgpIHsNCiAgbWVzZXNfcHQgPC0gYygNCiAgICAiamFuIiwgImZldiIsICJtYXIiLCAiYWJyIiwgIm1haSIsICJqdW4iLA0KICAgICJqdWwiLCAiYWdvIiwgInNldCIsICJvdXQiLCAibm92IiwgImRleiINCiAgKQ0KICANCiAgcGFzdGUwKA0KICAgIG1lc2VzX3B0W2FzLmludGVnZXIoZm9ybWF0KHgsICIlbSIpKV0sDQogICAgIi8iLA0KICAgIGZvcm1hdCh4LCAiJXkiKQ0KICApDQp9DQoNCmNvbHNfbW9tICA8LSBmb3JtYXRfbW9udGhfbGFiZWwoZGF0ZXNfbW9tKQ0KY29sc19zYWFyIDwtIGZvcm1hdF9tb250aF9sYWJlbChkYXRlc19zYWFyKQ0KY29sc195b3kgIDwtIGZvcm1hdF9tb250aF9sYWJlbChkYXRlc195b3kpDQoNCmV4dHJhY3RfdmFsdWVzIDwtIGZ1bmN0aW9uKGRiLCBpdGVtcywgZGF0ZXMpIHsNCiAgDQogIGRiX2F1eCA8LSBkYiAlPiUNCiAgICBmaWx0ZXIoZGF0ZVNlc3Npb24gJWluJSBkYXRlcykgJT4lDQogICAgYXJyYW5nZShkYXRlU2Vzc2lvbikNCiAgDQogIG91dCA8LSBzYXBwbHkoaXRlbXMsIGZ1bmN0aW9uKGl0ZW0pIHsNCiAgICANCiAgICBpZiAoIWl0ZW0gJWluJSBuYW1lcyhkYl9hdXgpKSB7DQogICAgICByZXAoTkFfcmVhbF8sIGxlbmd0aChkYXRlcykpDQogICAgfSBlbHNlIHsNCiAgICAgIGFzLm51bWVyaWMoZGJfYXV4W1tpdGVtXV0pDQogICAgfQ0KICAgIA0KICB9KQ0KICANCiAgb3V0IDwtIHQob3V0KQ0KICBvdXQgPC0gYXMuZGF0YS5mcmFtZShvdXQpDQogIA0KICByZXR1cm4ob3V0KQ0KfQ0KDQoNCm1vbV92YWx1ZXMgIDwtIGV4dHJhY3RfdmFsdWVzKGRiX25zYV9tb20sIGl0ZW1zX3RibCROb21lLCBkYXRlc19tb20pDQpzYWFyX3ZhbHVlcyA8LSBleHRyYWN0X3ZhbHVlcyhkYl9zYV9zYWFyLCBpdGVtc190YmwkTm9tZSwgZGF0ZXNfc2FhcikNCnlveV92YWx1ZXMgIDwtIGV4dHJhY3RfdmFsdWVzKGRiX25zYV95b3ksIGl0ZW1zX3RibCROb21lLCBkYXRlc195b3kpDQoNCm5hbWVzKG1vbV92YWx1ZXMpICA8LSBjb2xzX21vbQ0KbmFtZXMoc2Fhcl92YWx1ZXMpIDwtIGNvbHNfc2Fhcg0KbmFtZXMoeW95X3ZhbHVlcykgIDwtIGNvbHNfeW95DQoNCmluZmxhdGlvbl90YWJsZSA8LSBiaW5kX2NvbHMoDQogIGl0ZW1zX3RibCwNCiAgbW9tX3ZhbHVlcywNCiAgc2Fhcl92YWx1ZXMsDQogIHlveV92YWx1ZXMNCikNCg0KDQppbmZsYXRpb25fdGFibGVfZm10IDwtIGluZmxhdGlvbl90YWJsZQ0KDQpudW1fY29scyA8LSAzOm5jb2woaW5mbGF0aW9uX3RhYmxlX2ZtdCkNCg0KaW5mbGF0aW9uX3RhYmxlX2ZtdFtudW1fY29sc10gPC0gbGFwcGx5KA0KICBpbmZsYXRpb25fdGFibGVfZm10W251bV9jb2xzXSwNCiAgZnVuY3Rpb24oeCkgaWZlbHNlKGlzLm5hKHgpLCAiIiwgc3ByaW50ZigiJS4xZiIsIGFzLm51bWVyaWMoeCkpKQ0KKQ0KDQojIEdyw6FmaWNvDQoNCg0Ka2FibGUoDQogIGluZmxhdGlvbl90YWJsZV9mbXQsDQogIGZvcm1hdCA9ICJodG1sIiwNCiAgZXNjYXBlID0gRkFMU0UsDQogIHJvdy5uYW1lcyA9IEZBTFNFLA0KICBhbGlnbiA9IGMoImwiLCAibCIsIHJlcCgiciIsIDkpKSwNCiAgY29sLm5hbWVzID0gYygNCiAgICAiR3J1cG8iLA0KICAgICJOb21lIiwNCiAgICBjb2xzX21vbSwNCiAgICBjb2xzX3NhYXIsDQogICAgY29sc195b3kNCiAgKQ0KKSAlPiUNCiAgYWRkX2hlYWRlcl9hYm92ZSgNCiAgICBjKA0KICAgICAgIiAiID0gMiwNCiAgICAgICJNb00iID0gMywNCiAgICAgICJTQUFSIiA9IDMsDQogICAgICAiWW9ZIiA9IDMNCiAgICApDQogICkgJT4lDQogIGNvbHVtbl9zcGVjKDIsIGJvcmRlcl9yaWdodCA9IFRSVUUpICU+JQ0KICBjb2x1bW5fc3BlYyg1LCBib3JkZXJfcmlnaHQgPSBUUlVFKSAlPiUNCiAgY29sdW1uX3NwZWMoOCwgYm9yZGVyX3JpZ2h0ID0gVFJVRSkgJT4lDQogIGthYmxlX3N0eWxpbmcoDQogICAgZnVsbF93aWR0aCA9IEZBTFNFLA0KICAgIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJjb25kZW5zZWQiLCAiaG92ZXIiKQ0KICApICU+JQ0KICByb3dfc3BlYygNCiAgICAxLA0KICAgIGJvbGQgPSBUUlVFDQogICkgJT4lDQogIGNvbGxhcHNlX3Jvd3MoDQogICAgY29sdW1ucyA9IDEsDQogICAgdmFsaWduID0gIm1pZGRsZSINCiAgKQ0KDQoNCg0KYGBgDQoNCiMgKipTYXpvbmFsaWRhZGUqKg0KDQojIyBIZWFkbGluZQ0KDQpgYGB7ciBjcGlfaGVhZGxpbmVfc2Vhc29uYWwsIGVjaG8gPSBGLCBtZXNzYWdlPUYsIHdhcm5pbmc9Rn0NCmxhYmVsX2NwaSA9ICJDUEkgYWxsIGl0ZW1zIg0KDQpkYl9jcGlfc2VhcyA9IHN1YnNldChkYl9uc2FfbW9tWyxjKCJkYXRlU2Vzc2lvbiIsIGxhYmVsX2NwaSldLCBkYXRlU2Vzc2lvbiA+PSBzdGFydF9kYXRlX3NlYXMpDQpkYl9jcGlfc2VhcyA9IGdldF9zZWFzb25hbF9wYXR0ZXJuKGRiX2NwaV9zZWFzKQ0KDQojIEdyw6FmaWNvcw0KDQpwbG90KGRiX2NwaV9zZWFzJG1vbnRoLCBkYl9jcGlfc2VhcyRxMDUsIHR5cGUgPSAibCIsIGNvbCA9ICJyZWQiLCB4bGFiID0gIk1vbnRocyIsIHlsYWIgPSAiJSwgTW9NIiwgeWxpbSA9IHJhbmdlKG5hLm9taXQodW5saXN0KGRiX2NwaV9zZWFzWywtMV0pKSksIG1haW4gPSAiU2F6b25hbGlkYWRlIGRhIGluZmxhw6fDo28gaGVhZGxpbmUiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2NwaV9zZWFzJG1vbnRoLCBkYl9jcGlfc2VhcyRxNTAsIHR5cGUgPSAibCIsIGNvbCA9ICJibGFjayIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfY3BpX3NlYXMkbW9udGgsIGRiX2NwaV9zZWFzJHE5NSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY3BpX3NlYXMkbW9udGgsIGRiX2NwaV9zZWFzJGAyMDI0YCwgdHlwZSA9ICJsIiwgY29sID0gInB1cnBsZSIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfY3BpX3NlYXMkbW9udGgsIGRiX2NwaV9zZWFzJGAyMDI1YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtncmVlbiIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfY3BpX3NlYXMkbW9udGgsIGRiX2NwaV9zZWFzJGAyMDI2YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoImJvdHRvbXJpZ2h0IiwgYygicTA1IiwgInE1MCIsICJxOTUiLCAiMjAyNCIsICIyMDI1IiwgIjIwMjYiKSwgY29sID0gYygicmVkIiwgImJsYWNrIiwgInJlZCIsICJwdXJwbGUiLCAiZGFya2dyZWVuIiwgImRhcmtibHVlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAwLjYpDQpncmlkKCkNCg0KYGBgDQoNCiMjIEhlYWRsaW5lIC0gYWJlcnR1cmENCg0KYGBge3IgY3BpX2Zvb2Rfc2VhcywgZWNobyA9IEYsIG1lc3NhZ2U9Riwgd2FybmluZz1GfQ0KbGFiZWxfZm9vZCA9ICJGb29kIGFuZCBOb25hbGNvaG9saWMgQmV2ZXJhZ2VzIg0KbGFiZWxfYmV2ZXJhZ2VzID0gIkFsY29ob2xpYyBCZXZlcmFnZXMsIFRvYmFjY28gYW5kIE5hcmNvdGljcyINCg0KZGJfZm9vZF9zZWFzID0gc3Vic2V0KGRiX25zYV9tb21bLGMoImRhdGVTZXNzaW9uIiwgbGFiZWxfZm9vZCldLCBkYXRlU2Vzc2lvbiA+PSBzdGFydF9kYXRlX3NlYXMpDQpkYl9mb29kX3NlYXMgPSBnZXRfc2Vhc29uYWxfcGF0dGVybihkYl9mb29kX3NlYXMpDQoNCmRiX2JldmVyYWdlc19zZWFzID0gc3Vic2V0KGRiX25zYV9tb21bLGMoImRhdGVTZXNzaW9uIiwgbGFiZWxfYmV2ZXJhZ2VzKV0sIGRhdGVTZXNzaW9uID49IHN0YXJ0X2RhdGVfc2VhcykNCmRiX2JldmVyYWdlc19zZWFzID0gZ2V0X3NlYXNvbmFsX3BhdHRlcm4oZGJfYmV2ZXJhZ2VzX3NlYXMpDQoNCg0KDQojIEdyw6FmaWNvcw0KDQpwYXIobWZyb3c9YygxLDIpKQ0KDQpwbG90KGRiX2Zvb2Rfc2VhcyRtb250aCwgZGJfZm9vZF9zZWFzJHEwNSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHhsYWIgPSAiTW9udGhzIiwgeWxhYiA9ICIlLCBNb00iLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfZm9vZF9zZWFzWywtMV0pKSksIG1haW4gPSAiRm9vZCBhbmQgbm9uYWxjLiBiZXZlcmFnZXMiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2Zvb2Rfc2VhcyRtb250aCwgZGJfZm9vZF9zZWFzJHE1MCwgdHlwZSA9ICJsIiwgY29sID0gImJsYWNrIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9mb29kX3NlYXMkbW9udGgsIGRiX2Zvb2Rfc2VhcyRxOTUsIHR5cGUgPSAibCIsIGNvbCA9ICJyZWQiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2Zvb2Rfc2VhcyRtb250aCwgZGJfZm9vZF9zZWFzJGAyMDI0YCwgdHlwZSA9ICJsIiwgY29sID0gInB1cnBsZSIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfZm9vZF9zZWFzJG1vbnRoLCBkYl9mb29kX3NlYXMkYDIwMjVgLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya2dyZWVuIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9mb29kX3NlYXMkbW9udGgsIGRiX2Zvb2Rfc2VhcyRgMjAyNmAsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrYmx1ZSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGVnZW5kKCJib3R0b21yaWdodCIsIGMoInEwNSIsICJxNTAiLCAicTk1IiwgIjIwMjQiLCAiMjAyNSIsICIyMDI2IiksIGNvbCA9IGMoInJlZCIsICJibGFjayIsICJyZWQiLCAicHVycGxlIiwgImRhcmtncmVlbiIsICJkYXJrYmx1ZSIpLCBwY2ggPSAxOSwgbHdkID0gMywgY2V4ID0gMC42KQ0KZ3JpZCgpDQoNCg0KcGxvdChkYl9iZXZlcmFnZXNfc2VhcyRtb250aCwgZGJfYmV2ZXJhZ2VzX3NlYXMkcTA1LCB0eXBlID0gImwiLCBjb2wgPSAicmVkIiwgeGxhYiA9ICJNb250aHMiLCB5bGFiID0gIiUsIE1vTSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9iZXZlcmFnZXNfc2Vhc1ssLTFdKSkpLCBtYWluID0gIkFsY29ob2xpYyBiZXZlcmFnZXMiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2JldmVyYWdlc19zZWFzJG1vbnRoLCBkYl9iZXZlcmFnZXNfc2VhcyRxNTAsIHR5cGUgPSAibCIsIGNvbCA9ICJibGFjayIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfYmV2ZXJhZ2VzX3NlYXMkbW9udGgsIGRiX2JldmVyYWdlc19zZWFzJHE5NSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfYmV2ZXJhZ2VzX3NlYXMkbW9udGgsIGRiX2JldmVyYWdlc19zZWFzJGAyMDI0YCwgdHlwZSA9ICJsIiwgY29sID0gInB1cnBsZSIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfYmV2ZXJhZ2VzX3NlYXMkbW9udGgsIGRiX2JldmVyYWdlc19zZWFzJGAyMDI1YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtncmVlbiIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfYmV2ZXJhZ2VzX3NlYXMkbW9udGgsIGRiX2JldmVyYWdlc19zZWFzJGAyMDI2YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoInRvcHJpZ2h0IiwgYygicTA1IiwgInE1MCIsICJxOTUiLCAiMjAyNCIsICIyMDI1IiwgIjIwMjYiKSwgY29sID0gYygicmVkIiwgImJsYWNrIiwgInJlZCIsICJwdXJwbGUiLCAiZGFya2dyZWVuIiwgImRhcmtibHVlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAwLjYpDQpncmlkKCkNCg0KDQpgYGANCg0KYGBge3IgY3BpX2Nsb3RoaW5nX3NlYXMsIGVjaG8gPSBGLCBtZXNzYWdlPUYsIHdhcm5pbmc9Rn0NCg0KbGFiZWxfY2xvdGhpbmcgPSAiQ2xvdGhpbmcgYW5kIEZvb3R3ZWFyIg0KbGFiZWxfaG91c2luZyA9ICJIb3VzaW5nLCBXYXRlciwgRWxlY3RyaWNpdHksIEdhcyBhbmQgT3RoZXIgRnVlbHMiDQoNCmRiX2Nsb3RoaW5nX3NlYXMgPSBzdWJzZXQoZGJfbnNhX21vbVssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9jbG90aGluZyldLCBkYXRlU2Vzc2lvbiA+PSBzdGFydF9kYXRlX3NlYXMpDQpkYl9jbG90aGluZ19zZWFzID0gZ2V0X3NlYXNvbmFsX3BhdHRlcm4oZGJfY2xvdGhpbmdfc2VhcykNCg0KZGJfaG91c2luZ19zZWFzID0gc3Vic2V0KGRiX25zYV9tb21bLGMoImRhdGVTZXNzaW9uIiwgbGFiZWxfaG91c2luZyldLCBkYXRlU2Vzc2lvbiA+PSBzdGFydF9kYXRlX3NlYXMpDQpkYl9ob3VzaW5nX3NlYXMgPSBnZXRfc2Vhc29uYWxfcGF0dGVybihkYl9ob3VzaW5nX3NlYXMpDQoNCg0KIyBHcsOhZmljb3MNCg0KcGFyKG1mcm93PWMoMSwyKSkNCg0KcGxvdChkYl9jbG90aGluZ19zZWFzJG1vbnRoLCBkYl9jbG90aGluZ19zZWFzJHEwNSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHhsYWIgPSAiTW9udGhzIiwgeWxhYiA9ICIlLCBNb00iLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfY2xvdGhpbmdfc2Vhc1ssLTFdKSkpLCBtYWluID0gIkNsb3RoaW5nIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsaW5lcyhkYl9jbG90aGluZ19zZWFzJG1vbnRoLCBkYl9jbG90aGluZ19zZWFzJHE1MCwgdHlwZSA9ICJsIiwgY29sID0gImJsYWNrIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9jbG90aGluZ19zZWFzJG1vbnRoLCBkYl9jbG90aGluZ19zZWFzJHE5NSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY2xvdGhpbmdfc2VhcyRtb250aCwgZGJfY2xvdGhpbmdfc2VhcyRgMjAyNGAsIHR5cGUgPSAibCIsIGNvbCA9ICJwdXJwbGUiLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2Nsb3RoaW5nX3NlYXMkbW9udGgsIGRiX2Nsb3RoaW5nX3NlYXMkYDIwMjVgLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya2dyZWVuIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9jbG90aGluZ19zZWFzJG1vbnRoLCBkYl9jbG90aGluZ19zZWFzJGAyMDI2YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoImJvdHRvbXJpZ2h0IiwgYygicTA1IiwgInE1MCIsICJxOTUiLCAiMjAyNCIsICIyMDI1IiwgIjIwMjYiKSwgY29sID0gYygicmVkIiwgImJsYWNrIiwgInJlZCIsICJwdXJwbGUiLCAiZGFya2dyZWVuIiwgImRhcmtibHVlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAwLjYpDQpncmlkKCkNCg0KDQpwbG90KGRiX2hvdXNpbmdfc2VhcyRtb250aCwgZGJfaG91c2luZ19zZWFzJHEwNSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHhsYWIgPSAiTW9udGhzIiwgeWxhYiA9ICIlLCBNb00iLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfaG91c2luZ19zZWFzWywtMV0pKSksIG1haW4gPSAiSG91c2luZyIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfaG91c2luZ19zZWFzJG1vbnRoLCBkYl9ob3VzaW5nX3NlYXMkcTUwLCB0eXBlID0gImwiLCBjb2wgPSAiYmxhY2siLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2hvdXNpbmdfc2VhcyRtb250aCwgZGJfaG91c2luZ19zZWFzJHE5NSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfaG91c2luZ19zZWFzJG1vbnRoLCBkYl9ob3VzaW5nX3NlYXMkYDIwMjRgLCB0eXBlID0gImwiLCBjb2wgPSAicHVycGxlIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9ob3VzaW5nX3NlYXMkbW9udGgsIGRiX2hvdXNpbmdfc2VhcyRgMjAyNWAsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrZ3JlZW4iLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2hvdXNpbmdfc2VhcyRtb250aCwgZGJfaG91c2luZ19zZWFzJGAyMDI2YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoInRvcHJpZ2h0IiwgYygicTA1IiwgInE1MCIsICJxOTUiLCAiMjAyNCIsICIyMDI1IiwgIjIwMjYiKSwgY29sID0gYygicmVkIiwgImJsYWNrIiwgInJlZCIsICJwdXJwbGUiLCAiZGFya2dyZWVuIiwgImRhcmtibHVlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAwLjYpDQpncmlkKCkNCg0KDQpgYGANCg0KYGBge3IgY3BpX2Z1cm5pc2hpbmdfc2VhcywgZWNobyA9IEYsIG1lc3NhZ2U9Riwgd2FybmluZz1GfQ0KDQpsYWJlbF9mdXJuaXNoaW5nID0gIkZ1cm5pc2hpbmdzLCBIb3VzZWhvbGQgRXF1aXBtZW50IGFuZCBSb3V0aW5lIEhvdXNlaG9sZCBNYWludGVuYW5jZSINCmxhYmVsX2hlYWx0aCA9ICJIZWFsdGgiDQoNCmRiX2Z1cm5pc2hpbmdfc2VhcyA9IHN1YnNldChkYl9uc2FfbW9tWyxjKCJkYXRlU2Vzc2lvbiIsIGxhYmVsX2Z1cm5pc2hpbmcpXSwgZGF0ZVNlc3Npb24gPj0gc3RhcnRfZGF0ZV9zZWFzKQ0KZGJfZnVybmlzaGluZ19zZWFzID0gZ2V0X3NlYXNvbmFsX3BhdHRlcm4oZGJfZnVybmlzaGluZ19zZWFzKQ0KDQpkYl9oZWFsdGhfc2VhcyA9IHN1YnNldChkYl9uc2FfbW9tWyxjKCJkYXRlU2Vzc2lvbiIsIGxhYmVsX2hlYWx0aCldLCBkYXRlU2Vzc2lvbiA+PSBzdGFydF9kYXRlX3NlYXMpDQpkYl9oZWFsdGhfc2VhcyA9IGdldF9zZWFzb25hbF9wYXR0ZXJuKGRiX2hlYWx0aF9zZWFzKQ0KDQoNCiMgR3LDoWZpY29zDQoNCnBhcihtZnJvdz1jKDEsMikpDQoNCnBsb3QoZGJfZnVybmlzaGluZ19zZWFzJG1vbnRoLCBkYl9mdXJuaXNoaW5nX3NlYXMkcTA1LCB0eXBlID0gImwiLCBjb2wgPSAicmVkIiwgeGxhYiA9ICJNb250aHMiLCB5bGFiID0gIiUsIE1vTSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9mdXJuaXNoaW5nX3NlYXNbLC0xXSkpKSwgbWFpbiA9ICJGdXJuaXNoaW5nIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsaW5lcyhkYl9mdXJuaXNoaW5nX3NlYXMkbW9udGgsIGRiX2Z1cm5pc2hpbmdfc2VhcyRxNTAsIHR5cGUgPSAibCIsIGNvbCA9ICJibGFjayIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfZnVybmlzaGluZ19zZWFzJG1vbnRoLCBkYl9mdXJuaXNoaW5nX3NlYXMkcTk1LCB0eXBlID0gImwiLCBjb2wgPSAicmVkIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsaW5lcyhkYl9mdXJuaXNoaW5nX3NlYXMkbW9udGgsIGRiX2Z1cm5pc2hpbmdfc2VhcyRgMjAyNGAsIHR5cGUgPSAibCIsIGNvbCA9ICJwdXJwbGUiLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2Z1cm5pc2hpbmdfc2VhcyRtb250aCwgZGJfZnVybmlzaGluZ19zZWFzJGAyMDI1YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtncmVlbiIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfZnVybmlzaGluZ19zZWFzJG1vbnRoLCBkYl9mdXJuaXNoaW5nX3NlYXMkYDIwMjZgLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya2JsdWUiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxlZ2VuZCgiYm90dG9tcmlnaHQiLCBjKCJxMDUiLCAicTUwIiwgInE5NSIsICIyMDI0IiwgIjIwMjUiLCAiMjAyNiIpLCBjb2wgPSBjKCJyZWQiLCAiYmxhY2siLCAicmVkIiwgInB1cnBsZSIsICJkYXJrZ3JlZW4iLCAiZGFya2JsdWUiKSwgcGNoID0gMTksIGx3ZCA9IDMsIGNleCA9IDAuNikNCmdyaWQoKQ0KDQoNCnBsb3QoZGJfaGVhbHRoX3NlYXMkbW9udGgsIGRiX2hlYWx0aF9zZWFzJHEwNSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHhsYWIgPSAiTW9udGhzIiwgeWxhYiA9ICIlLCBNb00iLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfaGVhbHRoX3NlYXNbLC0xXSkpKSwgbWFpbiA9ICJIZWFsdGgiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2hlYWx0aF9zZWFzJG1vbnRoLCBkYl9oZWFsdGhfc2VhcyRxNTAsIHR5cGUgPSAibCIsIGNvbCA9ICJibGFjayIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfaGVhbHRoX3NlYXMkbW9udGgsIGRiX2hlYWx0aF9zZWFzJHE5NSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfaGVhbHRoX3NlYXMkbW9udGgsIGRiX2hlYWx0aF9zZWFzJGAyMDI0YCwgdHlwZSA9ICJsIiwgY29sID0gInB1cnBsZSIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfaGVhbHRoX3NlYXMkbW9udGgsIGRiX2hlYWx0aF9zZWFzJGAyMDI1YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtncmVlbiIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfaGVhbHRoX3NlYXMkbW9udGgsIGRiX2hlYWx0aF9zZWFzJGAyMDI2YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoImJvdHRvbXJpZ2h0IiwgYygicTA1IiwgInE1MCIsICJxOTUiLCAiMjAyNCIsICIyMDI1IiwgIjIwMjYiKSwgY29sID0gYygicmVkIiwgImJsYWNrIiwgInJlZCIsICJwdXJwbGUiLCAiZGFya2dyZWVuIiwgImRhcmtibHVlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAwLjYpDQpncmlkKCkNCg0KDQpgYGANCg0KYGBge3IgY3BpX3RyYW5zcG9ydF9zZWFzLCBlY2hvID0gRiwgbWVzc2FnZT1GLCB3YXJuaW5nPUZ9DQoNCmxhYmVsX3RyYW5zcG9ydCA9ICJUcmFuc3BvcnQiDQpsYWJlbF9pbmZvcm1hdGlvbiA9ICJJbmZvcm1hdGlvbiBhbmQgQ29tbXVuaWNhdGlvbiINCg0KZGJfdHJhbnNwb3J0X3NlYXMgPSBzdWJzZXQoZGJfbnNhX21vbVssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF90cmFuc3BvcnQpXSwgZGF0ZVNlc3Npb24gPj0gc3RhcnRfZGF0ZV9zZWFzKQ0KZGJfdHJhbnNwb3J0X3NlYXMgPSBnZXRfc2Vhc29uYWxfcGF0dGVybihkYl90cmFuc3BvcnRfc2VhcykNCg0KZGJfaW5mb3JtYXRpb25fc2VhcyA9IHN1YnNldChkYl9uc2FfbW9tWyxjKCJkYXRlU2Vzc2lvbiIsIGxhYmVsX2luZm9ybWF0aW9uKV0sIGRhdGVTZXNzaW9uID49IHN0YXJ0X2RhdGVfc2VhcykNCmRiX2luZm9ybWF0aW9uX3NlYXMgPSBnZXRfc2Vhc29uYWxfcGF0dGVybihkYl9pbmZvcm1hdGlvbl9zZWFzKQ0KDQoNCiMgR3LDoWZpY29zDQoNCnBhcihtZnJvdz1jKDEsMikpDQoNCnBsb3QoZGJfdHJhbnNwb3J0X3NlYXMkbW9udGgsIGRiX3RyYW5zcG9ydF9zZWFzJHEwNSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHhsYWIgPSAiTW9udGhzIiwgeWxhYiA9ICIlLCBNb00iLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfdHJhbnNwb3J0X3NlYXNbLC0xXSkpKSwgbWFpbiA9ICJUcmFuc3BvcnQiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX3RyYW5zcG9ydF9zZWFzJG1vbnRoLCBkYl90cmFuc3BvcnRfc2VhcyRxNTAsIHR5cGUgPSAibCIsIGNvbCA9ICJibGFjayIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfdHJhbnNwb3J0X3NlYXMkbW9udGgsIGRiX3RyYW5zcG9ydF9zZWFzJHE5NSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfdHJhbnNwb3J0X3NlYXMkbW9udGgsIGRiX3RyYW5zcG9ydF9zZWFzJGAyMDI0YCwgdHlwZSA9ICJsIiwgY29sID0gInB1cnBsZSIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfdHJhbnNwb3J0X3NlYXMkbW9udGgsIGRiX3RyYW5zcG9ydF9zZWFzJGAyMDI1YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtncmVlbiIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfdHJhbnNwb3J0X3NlYXMkbW9udGgsIGRiX3RyYW5zcG9ydF9zZWFzJGAyMDI2YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoImJvdHRvbXJpZ2h0IiwgYygicTA1IiwgInE1MCIsICJxOTUiLCAiMjAyNCIsICIyMDI1IiwgIjIwMjYiKSwgY29sID0gYygicmVkIiwgImJsYWNrIiwgInJlZCIsICJwdXJwbGUiLCAiZGFya2dyZWVuIiwgImRhcmtibHVlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAwLjYpDQpncmlkKCkNCg0KDQpwbG90KGRiX2luZm9ybWF0aW9uX3NlYXMkbW9udGgsIGRiX2luZm9ybWF0aW9uX3NlYXMkcTA1LCB0eXBlID0gImwiLCBjb2wgPSAicmVkIiwgeGxhYiA9ICJNb250aHMiLCB5bGFiID0gIiUsIE1vTSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9pbmZvcm1hdGlvbl9zZWFzWywtMV0pKSksIG1haW4gPSAiSW5mb3JtYXRpb24iLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2luZm9ybWF0aW9uX3NlYXMkbW9udGgsIGRiX2luZm9ybWF0aW9uX3NlYXMkcTUwLCB0eXBlID0gImwiLCBjb2wgPSAiYmxhY2siLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2luZm9ybWF0aW9uX3NlYXMkbW9udGgsIGRiX2luZm9ybWF0aW9uX3NlYXMkcTk1LCB0eXBlID0gImwiLCBjb2wgPSAicmVkIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsaW5lcyhkYl9pbmZvcm1hdGlvbl9zZWFzJG1vbnRoLCBkYl9pbmZvcm1hdGlvbl9zZWFzJGAyMDI0YCwgdHlwZSA9ICJsIiwgY29sID0gInB1cnBsZSIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfaW5mb3JtYXRpb25fc2VhcyRtb250aCwgZGJfaW5mb3JtYXRpb25fc2VhcyRgMjAyNWAsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrZ3JlZW4iLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2luZm9ybWF0aW9uX3NlYXMkbW9udGgsIGRiX2luZm9ybWF0aW9uX3NlYXMkYDIwMjZgLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya2JsdWUiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxlZ2VuZCgiYm90dG9tcmlnaHQiLCBjKCJxMDUiLCAicTUwIiwgInE5NSIsICIyMDI0IiwgIjIwMjUiLCAiMjAyNiIpLCBjb2wgPSBjKCJyZWQiLCAiYmxhY2siLCAicmVkIiwgInB1cnBsZSIsICJkYXJrZ3JlZW4iLCAiZGFya2JsdWUiKSwgcGNoID0gMTksIGx3ZCA9IDMsIGNleCA9IDAuNikNCmdyaWQoKQ0KDQoNCmBgYA0KDQpgYGB7ciBjcGlfcmVjcmVhdGlvbl9zZWFzLCBlY2hvID0gRiwgbWVzc2FnZT1GLCB3YXJuaW5nPUZ9DQoNCmxhYmVsX3JlY3JlYXRpb24gPSAiUmVjcmVhdGlvbiwgU3BvcnQgYW5kIEN1bHR1cmUiDQpsYWJlbF9lZHVjYXRpb24gPSAiRWR1Y2F0aW9uIFNlcnZpY2VzICINCg0KZGJfcmVjcmVhdGlvbl9zZWFzID0gc3Vic2V0KGRiX25zYV9tb21bLGMoImRhdGVTZXNzaW9uIiwgbGFiZWxfcmVjcmVhdGlvbildLCBkYXRlU2Vzc2lvbiA+PSBzdGFydF9kYXRlX3NlYXMpDQpkYl9yZWNyZWF0aW9uX3NlYXMgPSBnZXRfc2Vhc29uYWxfcGF0dGVybihkYl9yZWNyZWF0aW9uX3NlYXMpDQoNCmRiX2VkdWNhdGlvbl9zZWFzID0gc3Vic2V0KGRiX25zYV9tb21bLGMoImRhdGVTZXNzaW9uIiwgbGFiZWxfZWR1Y2F0aW9uKV0sIGRhdGVTZXNzaW9uID49IHN0YXJ0X2RhdGVfc2VhcykNCmRiX2VkdWNhdGlvbl9zZWFzID0gZ2V0X3NlYXNvbmFsX3BhdHRlcm4oZGJfZWR1Y2F0aW9uX3NlYXMpDQoNCg0KIyBHcsOhZmljb3MNCg0KcGFyKG1mcm93PWMoMSwyKSkNCg0KcGxvdChkYl9yZWNyZWF0aW9uX3NlYXMkbW9udGgsIGRiX3JlY3JlYXRpb25fc2VhcyRxMDUsIHR5cGUgPSAibCIsIGNvbCA9ICJyZWQiLCB4bGFiID0gIk1vbnRocyIsIHlsYWIgPSAiJSwgTW9NIiwgeWxpbSA9IHJhbmdlKG5hLm9taXQodW5saXN0KGRiX3JlY3JlYXRpb25fc2Vhc1ssLTFdKSkpLCBtYWluID0gIlJlY3JlYXRpb24iLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX3JlY3JlYXRpb25fc2VhcyRtb250aCwgZGJfcmVjcmVhdGlvbl9zZWFzJHE1MCwgdHlwZSA9ICJsIiwgY29sID0gImJsYWNrIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9yZWNyZWF0aW9uX3NlYXMkbW9udGgsIGRiX3JlY3JlYXRpb25fc2VhcyRxOTUsIHR5cGUgPSAibCIsIGNvbCA9ICJyZWQiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX3JlY3JlYXRpb25fc2VhcyRtb250aCwgZGJfcmVjcmVhdGlvbl9zZWFzJGAyMDI0YCwgdHlwZSA9ICJsIiwgY29sID0gInB1cnBsZSIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfcmVjcmVhdGlvbl9zZWFzJG1vbnRoLCBkYl9yZWNyZWF0aW9uX3NlYXMkYDIwMjVgLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya2dyZWVuIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9yZWNyZWF0aW9uX3NlYXMkbW9udGgsIGRiX3JlY3JlYXRpb25fc2VhcyRgMjAyNmAsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrYmx1ZSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGVnZW5kKCJib3R0b21yaWdodCIsIGMoInEwNSIsICJxNTAiLCAicTk1IiwgIjIwMjQiLCAiMjAyNSIsICIyMDI2IiksIGNvbCA9IGMoInJlZCIsICJibGFjayIsICJyZWQiLCAicHVycGxlIiwgImRhcmtncmVlbiIsICJkYXJrYmx1ZSIpLCBwY2ggPSAxOSwgbHdkID0gMywgY2V4ID0gMC42KQ0KZ3JpZCgpDQoNCg0KcGxvdChkYl9lZHVjYXRpb25fc2VhcyRtb250aCwgZGJfZWR1Y2F0aW9uX3NlYXMkcTA1LCB0eXBlID0gImwiLCBjb2wgPSAicmVkIiwgeGxhYiA9ICJNb250aHMiLCB5bGFiID0gIiUsIE1vTSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9lZHVjYXRpb25fc2Vhc1ssLTFdKSkpLCBtYWluID0gIkVkdWNhdGlvbiIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfZWR1Y2F0aW9uX3NlYXMkbW9udGgsIGRiX2VkdWNhdGlvbl9zZWFzJHE1MCwgdHlwZSA9ICJsIiwgY29sID0gImJsYWNrIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9lZHVjYXRpb25fc2VhcyRtb250aCwgZGJfZWR1Y2F0aW9uX3NlYXMkcTk1LCB0eXBlID0gImwiLCBjb2wgPSAicmVkIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsaW5lcyhkYl9lZHVjYXRpb25fc2VhcyRtb250aCwgZGJfZWR1Y2F0aW9uX3NlYXMkYDIwMjRgLCB0eXBlID0gImwiLCBjb2wgPSAicHVycGxlIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9lZHVjYXRpb25fc2VhcyRtb250aCwgZGJfZWR1Y2F0aW9uX3NlYXMkYDIwMjVgLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya2dyZWVuIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9lZHVjYXRpb25fc2VhcyRtb250aCwgZGJfZWR1Y2F0aW9uX3NlYXMkYDIwMjZgLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya2JsdWUiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxlZ2VuZCgidG9wcmlnaHQiLCBjKCJxMDUiLCAicTUwIiwgInE5NSIsICIyMDI0IiwgIjIwMjUiLCAiMjAyNiIpLCBjb2wgPSBjKCJyZWQiLCAiYmxhY2siLCAicmVkIiwgInB1cnBsZSIsICJkYXJrZ3JlZW4iLCAiZGFya2JsdWUiKSwgcGNoID0gMTksIGx3ZCA9IDMsIGNleCA9IDAuNikNCmdyaWQoKQ0KDQoNCmBgYA0KDQpgYGB7ciBjcGlfcmVzdGF1cmFudHNfc2VhcywgZWNobyA9IEYsIG1lc3NhZ2U9Riwgd2FybmluZz1GfQ0KDQpsYWJlbF9yZXN0YXVyYW50cyA9ICJSZXN0YXVyYW50cyBhbmQgQWNjb21tb2RhdGlvbiBTZXJ2aWNlcyINCmxhYmVsX2luc3VyYW5jZSA9ICJJbnN1cmFuY2UgYW5kIEZpbmFuY2lhbCBTZXJ2aWNlcyAiDQoNCmRiX3Jlc3RhdXJhbnRzX3NlYXMgPSBzdWJzZXQoZGJfbnNhX21vbVssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9yZXN0YXVyYW50cyldLCBkYXRlU2Vzc2lvbiA+PSBzdGFydF9kYXRlX3NlYXMpDQpkYl9yZXN0YXVyYW50c19zZWFzID0gZ2V0X3NlYXNvbmFsX3BhdHRlcm4oZGJfcmVzdGF1cmFudHNfc2VhcykNCg0KZGJfaW5zdXJhbmNlX3NlYXMgPSBzdWJzZXQoZGJfbnNhX21vbVssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9pbnN1cmFuY2UpXSwgZGF0ZVNlc3Npb24gPj0gc3RhcnRfZGF0ZV9zZWFzKQ0KZGJfaW5zdXJhbmNlX3NlYXMgPSBnZXRfc2Vhc29uYWxfcGF0dGVybihkYl9pbnN1cmFuY2Vfc2VhcykNCg0KDQojIEdyw6FmaWNvcw0KDQpwYXIobWZyb3c9YygxLDIpKQ0KDQpwbG90KGRiX3Jlc3RhdXJhbnRzX3NlYXMkbW9udGgsIGRiX3Jlc3RhdXJhbnRzX3NlYXMkcTA1LCB0eXBlID0gImwiLCBjb2wgPSAicmVkIiwgeGxhYiA9ICJNb250aHMiLCB5bGFiID0gIiUsIE1vTSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9yZXN0YXVyYW50c19zZWFzWywtMV0pKSksIG1haW4gPSAiUmVzdGF1cmFudHMiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX3Jlc3RhdXJhbnRzX3NlYXMkbW9udGgsIGRiX3Jlc3RhdXJhbnRzX3NlYXMkcTUwLCB0eXBlID0gImwiLCBjb2wgPSAiYmxhY2siLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX3Jlc3RhdXJhbnRzX3NlYXMkbW9udGgsIGRiX3Jlc3RhdXJhbnRzX3NlYXMkcTk1LCB0eXBlID0gImwiLCBjb2wgPSAicmVkIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsaW5lcyhkYl9yZXN0YXVyYW50c19zZWFzJG1vbnRoLCBkYl9yZXN0YXVyYW50c19zZWFzJGAyMDI0YCwgdHlwZSA9ICJsIiwgY29sID0gInB1cnBsZSIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfcmVzdGF1cmFudHNfc2VhcyRtb250aCwgZGJfcmVzdGF1cmFudHNfc2VhcyRgMjAyNWAsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrZ3JlZW4iLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX3Jlc3RhdXJhbnRzX3NlYXMkbW9udGgsIGRiX3Jlc3RhdXJhbnRzX3NlYXMkYDIwMjZgLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya2JsdWUiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxlZ2VuZCgidG9wcmlnaHQiLCBjKCJxMDUiLCAicTUwIiwgInE5NSIsICIyMDI0IiwgIjIwMjUiLCAiMjAyNiIpLCBjb2wgPSBjKCJyZWQiLCAiYmxhY2siLCAicmVkIiwgInB1cnBsZSIsICJkYXJrZ3JlZW4iLCAiZGFya2JsdWUiKSwgcGNoID0gMTksIGx3ZCA9IDMsIGNleCA9IDAuNikNCmdyaWQoKQ0KDQoNCnBsb3QoZGJfaW5zdXJhbmNlX3NlYXMkbW9udGgsIGRiX2luc3VyYW5jZV9zZWFzJHEwNSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHhsYWIgPSAiTW9udGhzIiwgeWxhYiA9ICIlLCBNb00iLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfaW5zdXJhbmNlX3NlYXNbLC0xXSkpKSwgbWFpbiA9ICJJbnN1cmFuY2UiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2luc3VyYW5jZV9zZWFzJG1vbnRoLCBkYl9pbnN1cmFuY2Vfc2VhcyRxNTAsIHR5cGUgPSAibCIsIGNvbCA9ICJibGFjayIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfaW5zdXJhbmNlX3NlYXMkbW9udGgsIGRiX2luc3VyYW5jZV9zZWFzJHE5NSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfaW5zdXJhbmNlX3NlYXMkbW9udGgsIGRiX2luc3VyYW5jZV9zZWFzJGAyMDI0YCwgdHlwZSA9ICJsIiwgY29sID0gInB1cnBsZSIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfaW5zdXJhbmNlX3NlYXMkbW9udGgsIGRiX2luc3VyYW5jZV9zZWFzJGAyMDI1YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtncmVlbiIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfaW5zdXJhbmNlX3NlYXMkbW9udGgsIGRiX2luc3VyYW5jZV9zZWFzJGAyMDI2YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoInRvcHJpZ2h0IiwgYygicTA1IiwgInE1MCIsICJxOTUiLCAiMjAyNCIsICIyMDI1IiwgIjIwMjYiKSwgY29sID0gYygicmVkIiwgImJsYWNrIiwgInJlZCIsICJwdXJwbGUiLCAiZGFya2dyZWVuIiwgImRhcmtibHVlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAwLjYpDQpncmlkKCkNCg0KDQpgYGANCg0KIyMgQ29yZSBleC1hbGltZW50b3MgZSBlbmVyZ2lhDQoNCmBgYHtyIGNwaV9jb3JlX2V4Zm9vZF9zZWFzLCBlY2hvID0gRiwgbWVzc2FnZT1GLCB3YXJuaW5nPUZ9DQoNCmxhYmVsX2NvcmUgPSAiQ1BJRiBleGNsdWRpbmcgZW5lcmd5IGFuZCB1bnByb2Nlc3NlZCBmb29kIg0KDQpkYl9jb3JlX3NlYXMgPSBzdWJzZXQoZGJfbnNhX21vbVssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9jb3JlKV0sIGRhdGVTZXNzaW9uID49IHN0YXJ0X2RhdGVfc2VhcykNCmRiX2NvcmVfc2VhcyA9IGdldF9zZWFzb25hbF9wYXR0ZXJuKGRiX2NvcmVfc2VhcykNCg0KIyBHcsOhZmljbw0KDQpwbG90KGRiX2NvcmVfc2VhcyRtb250aCwgZGJfY29yZV9zZWFzJHEwNSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHhsYWIgPSAiTW9udGhzIiwgeWxhYiA9ICIlLCBNb00iLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfY29yZV9zZWFzWywtMV0pKSksIG1haW4gPSAiU2F6b25hbGlkYWRlIGRhIGluZmxhw6fDo28gY29yZSBleC1hbGltZW50b3MgZSBlbmVyZ2lhIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsaW5lcyhkYl9jb3JlX3NlYXMkbW9udGgsIGRiX2NvcmVfc2VhcyRxNTAsIHR5cGUgPSAibCIsIGNvbCA9ICJibGFjayIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfY29yZV9zZWFzJG1vbnRoLCBkYl9jb3JlX3NlYXMkcTk1LCB0eXBlID0gImwiLCBjb2wgPSAicmVkIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsaW5lcyhkYl9jb3JlX3NlYXMkbW9udGgsIGRiX2NvcmVfc2VhcyRgMjAyNGAsIHR5cGUgPSAibCIsIGNvbCA9ICJwdXJwbGUiLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2NvcmVfc2VhcyRtb250aCwgZGJfY29yZV9zZWFzJGAyMDI1YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtncmVlbiIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfY29yZV9zZWFzJG1vbnRoLCBkYl9jb3JlX3NlYXMkYDIwMjZgLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya2JsdWUiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxlZ2VuZCgidG9wcmlnaHQiLCBjKCJxMDUiLCAicTUwIiwgInE5NSIsICIyMDI0IiwgIjIwMjUiLCAiMjAyNiIpLCBjb2wgPSBjKCJyZWQiLCAiYmxhY2siLCAicmVkIiwgInB1cnBsZSIsICJkYXJrZ3JlZW4iLCAiZGFya2JsdWUiKSwgcGNoID0gMTksIGx3ZCA9IDMsIGNleCA9IDAuNikNCmdyaWQoKQ0KDQpgYGANCg0KDQojIyBDb3JlIFRyaW1tZWQgbWVhbnMgODUNCg0KDQpgYGB7ciBjcGlfY29yZV90cmltODVfc2VhcywgZWNobyA9IEYsIG1lc3NhZ2U9Riwgd2FybmluZz1GfQ0KDQpsYWJlbF9jb3JlX3RyaW04NSA9ICJDb3JlIC0gVFJJTTg1Ig0KDQpkYl9jb3JlX3RyaW04NV9zZWFzID0gc3Vic2V0KGRiX25zYV9tb21bLGMoImRhdGVTZXNzaW9uIiwgbGFiZWxfY29yZV90cmltODUpXSwgZGF0ZVNlc3Npb24gPj0gc3RhcnRfZGF0ZV9zZWFzKQ0KZGJfY29yZV90cmltODVfc2VhcyA9IGdldF9zZWFzb25hbF9wYXR0ZXJuKGRiX2NvcmVfdHJpbTg1X3NlYXMpDQoNCiMgR3LDoWZpY28NCg0KcGxvdChkYl9jb3JlX3RyaW04NV9zZWFzJG1vbnRoLCBkYl9jb3JlX3RyaW04NV9zZWFzJHEwNSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHhsYWIgPSAiTW9udGhzIiwgeWxhYiA9ICIlLCBNb00iLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfY29yZV90cmltODVfc2Vhc1ssLTFdKSkpLCBtYWluID0gIlNhem9uYWxpZGFkZSBkYSBpbmZsYcOnw6NvIGNvcmUgVHJpbSA4NSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV90cmltODVfc2VhcyRtb250aCwgZGJfY29yZV90cmltODVfc2VhcyRxNTAsIHR5cGUgPSAibCIsIGNvbCA9ICJibGFjayIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfY29yZV90cmltODVfc2VhcyRtb250aCwgZGJfY29yZV90cmltODVfc2VhcyRxOTUsIHR5cGUgPSAibCIsIGNvbCA9ICJyZWQiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2NvcmVfdHJpbTg1X3NlYXMkbW9udGgsIGRiX2NvcmVfdHJpbTg1X3NlYXMkYDIwMjRgLCB0eXBlID0gImwiLCBjb2wgPSAicHVycGxlIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9jb3JlX3RyaW04NV9zZWFzJG1vbnRoLCBkYl9jb3JlX3RyaW04NV9zZWFzJGAyMDI1YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtncmVlbiIsIHBjaCA9IDE5LCBsd2QgPSAxKQ0KbGluZXMoZGJfY29yZV90cmltODVfc2VhcyRtb250aCwgZGJfY29yZV90cmltODVfc2VhcyRgMjAyNmAsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrYmx1ZSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGVnZW5kKCJ0b3ByaWdodCIsIGMoInEwNSIsICJxNTAiLCAicTk1IiwgIjIwMjQiLCAiMjAyNSIsICIyMDI2IiksIGNvbCA9IGMoInJlZCIsICJibGFjayIsICJyZWQiLCAicHVycGxlIiwgImRhcmtncmVlbiIsICJkYXJrYmx1ZSIpLCBwY2ggPSAxOSwgbHdkID0gMywgY2V4ID0gMC42KQ0KZ3JpZCgpDQoNCmBgYA0KDQoNCiMjIENvcmUgVHJpbW1lZCBtZWFucyAxDQoNCmBgYHtyIGNwaV9jb3JlX3RyaW0xX3NlYXMsIGVjaG8gPSBGLCBtZXNzYWdlPUYsIHdhcm5pbmc9Rn0NCg0KbGFiZWxfY29yZV90cmltMSA9ICJDb3JlIC0gVFJJTTEiDQoNCmRiX2NvcmVfdHJpbTFfc2VhcyA9IHN1YnNldChkYl9uc2FfbW9tWyxjKCJkYXRlU2Vzc2lvbiIsIGxhYmVsX2NvcmVfdHJpbTEpXSwgZGF0ZVNlc3Npb24gPj0gc3RhcnRfZGF0ZV9zZWFzKQ0KZGJfY29yZV90cmltMV9zZWFzID0gZ2V0X3NlYXNvbmFsX3BhdHRlcm4oZGJfY29yZV90cmltMV9zZWFzKQ0KDQojIEdyw6FmaWNvDQoNCnBsb3QoZGJfY29yZV90cmltMV9zZWFzJG1vbnRoLCBkYl9jb3JlX3RyaW0xX3NlYXMkcTA1LCB0eXBlID0gImwiLCBjb2wgPSAicmVkIiwgeGxhYiA9ICJNb250aHMiLCB5bGFiID0gIiUsIE1vTSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9jb3JlX3RyaW0xX3NlYXNbLC0xXSkpKSwgbWFpbiA9ICJTYXpvbmFsaWRhZGUgZGEgaW5mbGHDp8OjbyBjb3JlIFRyaW0gMSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV90cmltMV9zZWFzJG1vbnRoLCBkYl9jb3JlX3RyaW0xX3NlYXMkcTUwLCB0eXBlID0gImwiLCBjb2wgPSAiYmxhY2siLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2NvcmVfdHJpbTFfc2VhcyRtb250aCwgZGJfY29yZV90cmltMV9zZWFzJHE5NSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV90cmltMV9zZWFzJG1vbnRoLCBkYl9jb3JlX3RyaW0xX3NlYXMkYDIwMjRgLCB0eXBlID0gImwiLCBjb2wgPSAicHVycGxlIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9jb3JlX3RyaW0xX3NlYXMkbW9udGgsIGRiX2NvcmVfdHJpbTFfc2VhcyRgMjAyNWAsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrZ3JlZW4iLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2NvcmVfdHJpbTFfc2VhcyRtb250aCwgZGJfY29yZV90cmltMV9zZWFzJGAyMDI2YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoInRvcHJpZ2h0IiwgYygicTA1IiwgInE1MCIsICJxOTUiLCAiMjAyNCIsICIyMDI1IiwgIjIwMjYiKSwgY29sID0gYygicmVkIiwgImJsYWNrIiwgInJlZCIsICJwdXJwbGUiLCAiZGFya2dyZWVuIiwgImRhcmtibHVlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAwLjYpDQpncmlkKCkNCg0KDQpgYGANCg0KDQojIyBDb3JlIFVuZDI0IC0gcmVwb25kZXJhw6fDo28gZG9zIHBlc29zDQoNCmBgYHtyIGNwaV9jb3JlX3VuZDI0X3NlYXMsIGVjaG8gPSBGLCBtZXNzYWdlPUYsIHdhcm5pbmc9Rn0NCg0KbGFiZWxfY29yZV91bmQyNCA9ICJDb3JlIC0gVU5EMjQiDQoNCmRiX2NvcmVfdW5kMjRfc2VhcyA9IHN1YnNldChkYl9uc2FfbW9tWyxjKCJkYXRlU2Vzc2lvbiIsIGxhYmVsX2NvcmVfdW5kMjQpXSwgZGF0ZVNlc3Npb24gPj0gc3RhcnRfZGF0ZV9zZWFzKQ0KZGJfY29yZV91bmQyNF9zZWFzID0gZ2V0X3NlYXNvbmFsX3BhdHRlcm4oZGJfY29yZV91bmQyNF9zZWFzKQ0KDQojIEdyw6FmaWNvDQoNCnBsb3QoZGJfY29yZV91bmQyNF9zZWFzJG1vbnRoLCBkYl9jb3JlX3VuZDI0X3NlYXMkcTA1LCB0eXBlID0gImwiLCBjb2wgPSAicmVkIiwgeGxhYiA9ICJNb250aHMiLCB5bGFiID0gIiUsIE1vTSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9jb3JlX3VuZDI0X3NlYXNbLC0xXSkpKSwgbWFpbiA9ICJTYXpvbmFsaWRhZGUgZGEgaW5mbGHDp8OjbyBjb3JlIFVuZCAyNCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV91bmQyNF9zZWFzJG1vbnRoLCBkYl9jb3JlX3VuZDI0X3NlYXMkcTUwLCB0eXBlID0gImwiLCBjb2wgPSAiYmxhY2siLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2NvcmVfdW5kMjRfc2VhcyRtb250aCwgZGJfY29yZV91bmQyNF9zZWFzJHE5NSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV91bmQyNF9zZWFzJG1vbnRoLCBkYl9jb3JlX3VuZDI0X3NlYXMkYDIwMjRgLCB0eXBlID0gImwiLCBjb2wgPSAicHVycGxlIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9jb3JlX3VuZDI0X3NlYXMkbW9udGgsIGRiX2NvcmVfdW5kMjRfc2VhcyRgMjAyNWAsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrZ3JlZW4iLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2NvcmVfdW5kMjRfc2VhcyRtb250aCwgZGJfY29yZV91bmQyNF9zZWFzJGAyMDI2YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoInRvcHJpZ2h0IiwgYygicTA1IiwgInE1MCIsICJxOTUiLCAiMjAyNCIsICIyMDI1IiwgIjIwMjYiKSwgY29sID0gYygicmVkIiwgImJsYWNrIiwgInJlZCIsICJwdXJwbGUiLCAiZGFya2dyZWVuIiwgImRhcmtibHVlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAwLjYpDQpncmlkKCkNCg0KDQpgYGANCg0KDQojIyBDb3JlIEtQSUZQQyAtIGNvcmUgZXN0YXTDrXN0aWNvIHBvciBQQ0ENCg0KDQpgYGB7ciBjcGlfY29yZV9rcGlmcGNfc2VhcywgZWNobyA9IEYsIG1lc3NhZ2U9Riwgd2FybmluZz1GfQ0KDQpsYWJlbF9jb3JlX2twaWZwYyA9ICJDb3JlIC0gS1BJRlBDIg0KDQpkYl9jb3JlX2twaWZwY19zZWFzID0gc3Vic2V0KGRiX25zYV9tb21bLGMoImRhdGVTZXNzaW9uIiwgbGFiZWxfY29yZV9rcGlmcGMpXSwgZGF0ZVNlc3Npb24gPj0gc3RhcnRfZGF0ZV9zZWFzKQ0KZGJfY29yZV9rcGlmcGNfc2VhcyA9IGdldF9zZWFzb25hbF9wYXR0ZXJuKGRiX2NvcmVfa3BpZnBjX3NlYXMpDQoNCiMgR3LDoWZpY28NCg0KcGxvdChkYl9jb3JlX2twaWZwY19zZWFzJG1vbnRoLCBkYl9jb3JlX2twaWZwY19zZWFzJHEwNSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHhsYWIgPSAiTW9udGhzIiwgeWxhYiA9ICIlLCBNb00iLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfY29yZV9rcGlmcGNfc2Vhc1ssLTFdKSkpLCBtYWluID0gIlNhem9uYWxpZGFkZSBkYSBpbmZsYcOnw6NvIGNvcmUgS1BJRlBDIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsaW5lcyhkYl9jb3JlX2twaWZwY19zZWFzJG1vbnRoLCBkYl9jb3JlX2twaWZwY19zZWFzJHE1MCwgdHlwZSA9ICJsIiwgY29sID0gImJsYWNrIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9jb3JlX2twaWZwY19zZWFzJG1vbnRoLCBkYl9jb3JlX2twaWZwY19zZWFzJHE5NSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV9rcGlmcGNfc2VhcyRtb250aCwgZGJfY29yZV9rcGlmcGNfc2VhcyRgMjAyNGAsIHR5cGUgPSAibCIsIGNvbCA9ICJwdXJwbGUiLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2NvcmVfa3BpZnBjX3NlYXMkbW9udGgsIGRiX2NvcmVfa3BpZnBjX3NlYXMkYDIwMjVgLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya2dyZWVuIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9jb3JlX2twaWZwY19zZWFzJG1vbnRoLCBkYl9jb3JlX2twaWZwY19zZWFzJGAyMDI2YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoInRvcHJpZ2h0IiwgYygicTA1IiwgInE1MCIsICJxOTUiLCAiMjAyNCIsICIyMDI1IiwgIjIwMjYiKSwgY29sID0gYygicmVkIiwgImJsYWNrIiwgInJlZCIsICJwdXJwbGUiLCAiZGFya2dyZWVuIiwgImRhcmtibHVlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAwLjYpDQpncmlkKCkNCg0KYGBgDQoNCiMjIENvcmUgU2VydmljZXMNCg0KYGBge3IgY3BpX2NvcmVfc2VydmljZXNfc2VhcywgZWNobyA9IEYsIG1lc3NhZ2U9Riwgd2FybmluZz1GfQ0KDQpsYWJlbF9jb3JlX3NlcnZpY2VzID0gIlNlcnZpY2VzIg0KDQpkYl9jb3JlX3NlcnZpY2VzX3NlYXMgPSBzdWJzZXQoZGJfbnNhX21vbVssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9jb3JlX3NlcnZpY2VzKV0sIGRhdGVTZXNzaW9uID49IHN0YXJ0X2RhdGVfc2VhcykNCmRiX2NvcmVfc2VydmljZXNfc2VhcyA9IGdldF9zZWFzb25hbF9wYXR0ZXJuKGRiX2NvcmVfc2VydmljZXNfc2VhcykNCg0KIyBHcsOhZmljbw0KDQpwbG90KGRiX2NvcmVfc2VydmljZXNfc2VhcyRtb250aCwgZGJfY29yZV9zZXJ2aWNlc19zZWFzJHEwNSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHhsYWIgPSAiTW9udGhzIiwgeWxhYiA9ICIlLCBNb00iLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfY29yZV9zZXJ2aWNlc19zZWFzWywtMV0pKSksIG1haW4gPSAiU2F6b25hbGlkYWRlIGRhIGluZmxhw6fDo28gY29yZSBzZXJ2aWNlcyIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV9zZXJ2aWNlc19zZWFzJG1vbnRoLCBkYl9jb3JlX3NlcnZpY2VzX3NlYXMkcTUwLCB0eXBlID0gImwiLCBjb2wgPSAiYmxhY2siLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2NvcmVfc2VydmljZXNfc2VhcyRtb250aCwgZGJfY29yZV9zZXJ2aWNlc19zZWFzJHE5NSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV9zZXJ2aWNlc19zZWFzJG1vbnRoLCBkYl9jb3JlX3NlcnZpY2VzX3NlYXMkYDIwMjRgLCB0eXBlID0gImwiLCBjb2wgPSAicHVycGxlIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9jb3JlX3NlcnZpY2VzX3NlYXMkbW9udGgsIGRiX2NvcmVfc2VydmljZXNfc2VhcyRgMjAyNWAsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrZ3JlZW4iLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2NvcmVfc2VydmljZXNfc2VhcyRtb250aCwgZGJfY29yZV9zZXJ2aWNlc19zZWFzJGAyMDI2YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoInRvcHJpZ2h0IiwgYygicTA1IiwgInE1MCIsICJxOTUiLCAiMjAyNCIsICIyMDI1IiwgIjIwMjYiKSwgY29sID0gYygicmVkIiwgImJsYWNrIiwgInJlZCIsICJwdXJwbGUiLCAiZGFya2dyZWVuIiwgImRhcmtibHVlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAwLjYpDQpncmlkKCkNCg0KYGBgDQoNCiMjIENvcmUgR29vZHMNCg0KYGBge3IgY3BpX2NvcmVfZ29vZHNfc2VhcywgZWNobyA9IEYsIG1lc3NhZ2U9Riwgd2FybmluZz1GfQ0KDQpsYWJlbF9jb3JlX2dvb2RzID0gIkdvb2RzIg0KDQpkYl9jb3JlX2dvb2RzX3NlYXMgPSBzdWJzZXQoZGJfbnNhX21vbVssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9jb3JlX2dvb2RzKV0sIGRhdGVTZXNzaW9uID49IHN0YXJ0X2RhdGVfc2VhcykNCmRiX2NvcmVfZ29vZHNfc2VhcyA9IGdldF9zZWFzb25hbF9wYXR0ZXJuKGRiX2NvcmVfZ29vZHNfc2VhcykNCg0KIyBHcsOhZmljbw0KDQpwbG90KGRiX2NvcmVfZ29vZHNfc2VhcyRtb250aCwgZGJfY29yZV9nb29kc19zZWFzJHEwNSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHhsYWIgPSAiTW9udGhzIiwgeWxhYiA9ICIlLCBNb00iLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfY29yZV9nb29kc19zZWFzWywtMV0pKSksIG1haW4gPSAiU2F6b25hbGlkYWRlIGRhIGluZmxhw6fDo28gY29yZSBnb29kcyIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV9nb29kc19zZWFzJG1vbnRoLCBkYl9jb3JlX2dvb2RzX3NlYXMkcTUwLCB0eXBlID0gImwiLCBjb2wgPSAiYmxhY2siLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2NvcmVfZ29vZHNfc2VhcyRtb250aCwgZGJfY29yZV9nb29kc19zZWFzJHE5NSwgdHlwZSA9ICJsIiwgY29sID0gInJlZCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV9nb29kc19zZWFzJG1vbnRoLCBkYl9jb3JlX2dvb2RzX3NlYXMkYDIwMjRgLCB0eXBlID0gImwiLCBjb2wgPSAicHVycGxlIiwgcGNoID0gMTksIGx3ZCA9IDEpDQpsaW5lcyhkYl9jb3JlX2dvb2RzX3NlYXMkbW9udGgsIGRiX2NvcmVfZ29vZHNfc2VhcyRgMjAyNWAsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrZ3JlZW4iLCBwY2ggPSAxOSwgbHdkID0gMSkNCmxpbmVzKGRiX2NvcmVfZ29vZHNfc2VhcyRtb250aCwgZGJfY29yZV9nb29kc19zZWFzJGAyMDI2YCwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoImJvdHRvbXJpZ2h0IiwgYygicTA1IiwgInE1MCIsICJxOTUiLCAiMjAyNCIsICIyMDI1IiwgIjIwMjYiKSwgY29sID0gYygicmVkIiwgImJsYWNrIiwgInJlZCIsICJwdXJwbGUiLCAiZGFya2dyZWVuIiwgImRhcmtibHVlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAwLjYpDQpncmlkKCkNCg0KYGBgDQoNCiMgKipJbmZsYcOnw6NvIG5hcyBtZWRpZGFzIFNBQVIgZSBZb1kqKg0KDQojIyBIZWFkbGluZQ0KDQpgYGB7ciBjcGlfaGVhZGxpbmVfeW95X3NhYXIsIGVjaG89Riwgd2FybmluZz1GLCBtZXNzYWdlPUZ9DQoNCmRiX2NwaV95b3kgPSBuYS5vbWl0KGRiX25zYV95b3lbLGMoImRhdGVTZXNzaW9uIiwgbGFiZWxfY3BpKV0pDQpjb2xuYW1lcyhkYl9jcGlfeW95KVstMV0gPSAiWW9ZIg0KZGJfY3BpX3NhYXIgPSBuYS5vbWl0KGRiX3NhX3NhYXJbLGMoImRhdGVTZXNzaW9uIiwgbGFiZWxfY3BpKV0pDQpjb2xuYW1lcyhkYl9jcGlfc2FhcilbLTFdID0gIlNBQVIiDQoNCmRiX2NwaSA9IGxlZnRfam9pbihkYl9jcGlfeW95LCBkYl9jcGlfc2FhciwgYnkgPSAiZGF0ZVNlc3Npb24iKQ0KZGJfY3BpID0gc3Vic2V0KGRiX2NwaSwgZGF0ZVNlc3Npb24gPj0gc3RhcnRfZGF0ZV9zZWFzKQ0KZGJfY3BpX3Nob3J0ID0gdGFpbChkYl9jcGksIG5wZXJfeW95KQ0KDQppZHhfbGFzdCA9IG5yb3coZGJfY3BpX3Nob3J0KQ0KDQoNCiMgQ2hhcnQNCnBhcihtZnJvdz1jKDEsMikpDQoNCnBsb3QoZGJfY3BpJGRhdGVTZXNzaW9uLCBkYl9jcGkkWW9ZLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya2JsdWUiLCB4bGFiID0gIkRhdGUiLCB5bGFiID0gIiUiLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfY3BpWywtMV0pKSksIG1haW4gPSAiQ1BJIGhlYWRsaW5lIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsaW5lcyhkYl9jcGkkZGF0ZVNlc3Npb24sIGRiX2NwaSRTQUFSLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya29yYW5nZSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGVnZW5kKCJ0b3BsZWZ0IiwgYygiWW9ZIiwgIlNBQVIiKSwgY29sID0gYygiZGFya2JsdWUiLCAiZGFya29yYW5nZSIpLCBwY2ggPSAxOSwgbHdkID0gMywgY2V4ID0gMSkNCmFibGluZShoID0gY3BpX3RhcmdldCwgY29sID0gImJsYWNrIiwgcGNoID0gMTksIGx3ZCA9IDMsIGx0eSA9IDMpDQpncmlkKCkNCg0KcGxvdChkYl9jcGlfc2hvcnQkZGF0ZVNlc3Npb24sIGRiX2NwaV9zaG9ydCRZb1ksIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrYmx1ZSIsIHhsYWIgPSAiRGF0ZSIsIHlsYWIgPSAiJSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9jcGlfc2hvcnRbLC0xXSkpKSwgbWFpbiA9ICJDUEkgaGVhZGxpbmUgLSByZWNlbnRlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsaW5lcyhkYl9jcGlfc2hvcnQkZGF0ZVNlc3Npb24sIGRiX2NwaV9zaG9ydCRTQUFSLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya29yYW5nZSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGVnZW5kKCJ0b3ByaWdodCIsIGMoIllvWSIsICJTQUFSIiksIGNvbCA9IGMoImRhcmtibHVlIiwgImRhcmtvcmFuZ2UiKSwgcGNoID0gMTksIGx3ZCA9IDMsIGNleCA9IDEpDQphYmxpbmUoaCA9IGNwaV90YXJnZXQsIGNvbCA9ICJibGFjayIsIHBjaCA9IDE5LCBsd2QgPSAzLCBsdHkgPSAzKQ0KdGV4dCgNCiAgeCA9IGRiX2NwaV9zaG9ydCRkYXRlU2Vzc2lvbltpZHhfbGFzdF0sDQogIHkgPSBkYl9jcGlfc2hvcnQkWW9ZW2lkeF9sYXN0XSwNCiAgbGFiZWxzID0gcm91bmQoZGJfY3BpX3Nob3J0JFlvWVtpZHhfbGFzdF0sIDEpLA0KICBwb3MgPSAxLA0KICBjZXggPSAwLjYsDQogIGNvbCA9ICJkYXJrYmx1ZSINCikNCnRleHQoDQogIHggPSBkYl9jcGlfc2hvcnQkZGF0ZVNlc3Npb25baWR4X2xhc3RdLA0KICB5ID0gZGJfY3BpX3Nob3J0JFNBQVJbaWR4X2xhc3RdLA0KICBsYWJlbHMgPSByb3VuZChkYl9jcGlfc2hvcnQkU0FBUltpZHhfbGFzdF0sIDEpLA0KICBwb3MgPSAxLA0KICBjZXggPSAwLjYsDQogIGNvbCA9ICJkYXJrb3JhbmdlIg0KKQ0KZ3JpZCgpDQoNCg0KYGBgDQoNCg0KIyMgQ29yZSBleC1mb29kIGFuZCBlbmVyZ3kNCg0KYGBge3IgY29yZV9leGZvb2RfeW95X3NhYXIsIGVjaG89Riwgd2FybmluZz1GLCBtZXNzYWdlPUZ9DQoNCmRiX2NvcmVfZXhmb29kX3lveSA9IG5hLm9taXQoZGJfbnNhX3lveVssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9jb3JlKV0pDQpjb2xuYW1lcyhkYl9jb3JlX2V4Zm9vZF95b3kpWy0xXSA9ICJZb1kiDQpkYl9jb3JlX2V4Zm9vZF9zYWFyID0gbmEub21pdChkYl9zYV9zYWFyWyxjKCJkYXRlU2Vzc2lvbiIsIGxhYmVsX2NvcmUpXSkNCmNvbG5hbWVzKGRiX2NvcmVfZXhmb29kX3NhYXIpWy0xXSA9ICJTQUFSIg0KDQpkYl9jb3JlID0gbGVmdF9qb2luKGRiX2NvcmVfZXhmb29kX3lveSwgZGJfY29yZV9leGZvb2Rfc2FhciwgYnkgPSAiZGF0ZVNlc3Npb24iKQ0KZGJfY29yZSA9IHN1YnNldChkYl9jb3JlLCBkYXRlU2Vzc2lvbiA+PSBzdGFydF9kYXRlX3NlYXMpDQpkYl9jb3JlX3Nob3J0ID0gdGFpbChkYl9jb3JlLCBucGVyX3lveSkNCg0KaWR4X2xhc3QgPSBucm93KGRiX2NvcmVfc2hvcnQpDQoNCg0KIyBDaGFydA0KcGFyKG1mcm93PWMoMSwyKSkNCg0KcGxvdChkYl9jb3JlJGRhdGVTZXNzaW9uLCBkYl9jb3JlJFlvWSwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgeGxhYiA9ICJEYXRlIiwgeWxhYiA9ICIlIiwgeWxpbSA9IHJhbmdlKG5hLm9taXQodW5saXN0KGRiX2NvcmVbLC0xXSkpKSwgbWFpbiA9ICJDUEkgY29yZSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZSRkYXRlU2Vzc2lvbiwgZGJfY29yZSRTQUFSLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya29yYW5nZSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGVnZW5kKCJ0b3BsZWZ0IiwgYygiWW9ZIiwgIlNBQVIiKSwgY29sID0gYygiZGFya2JsdWUiLCAiZGFya29yYW5nZSIpLCBwY2ggPSAxOSwgbHdkID0gMywgY2V4ID0gMSkNCmFibGluZShoID0gY3BpX3RhcmdldCwgY29sID0gImJsYWNrIiwgcGNoID0gMTksIGx3ZCA9IDMsIGx0eSA9IDMpDQpncmlkKCkNCg0KcGxvdChkYl9jb3JlX3Nob3J0JGRhdGVTZXNzaW9uLCBkYl9jb3JlX3Nob3J0JFlvWSwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgeGxhYiA9ICJEYXRlIiwgeWxhYiA9ICIlIiwgeWxpbSA9IHJhbmdlKG5hLm9taXQodW5saXN0KGRiX2NvcmVfc2hvcnRbLC0xXSkpKSwgbWFpbiA9ICJDUEkgY29yZSAtIHJlY2VudGUiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2NvcmVfc2hvcnQkZGF0ZVNlc3Npb24sIGRiX2NvcmVfc2hvcnQkU0FBUiwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtvcmFuZ2UiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxlZ2VuZCgidG9wcmlnaHQiLCBjKCJZb1kiLCAiU0FBUiIpLCBjb2wgPSBjKCJkYXJrYmx1ZSIsICJkYXJrb3JhbmdlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAxKQ0KYWJsaW5lKGggPSBjcGlfdGFyZ2V0LCBjb2wgPSAiYmxhY2siLCBwY2ggPSAxOSwgbHdkID0gMywgbHR5ID0gMykNCnRleHQoDQogIHggPSBkYl9jb3JlX3Nob3J0JGRhdGVTZXNzaW9uW2lkeF9sYXN0XSwNCiAgeSA9IGRiX2NvcmVfc2hvcnQkWW9ZW2lkeF9sYXN0XSwNCiAgbGFiZWxzID0gcm91bmQoZGJfY29yZV9zaG9ydCRZb1lbaWR4X2xhc3RdLCAxKSwNCiAgcG9zID0gMSwNCiAgY2V4ID0gMC42LA0KICBjb2wgPSAiZGFya2JsdWUiDQopDQp0ZXh0KA0KICB4ID0gZGJfY29yZV9zaG9ydCRkYXRlU2Vzc2lvbltpZHhfbGFzdF0sDQogIHkgPSBkYl9jb3JlX3Nob3J0JFNBQVJbaWR4X2xhc3RdLA0KICBsYWJlbHMgPSByb3VuZChkYl9jb3JlX3Nob3J0JFNBQVJbaWR4X2xhc3RdLCAxKSwNCiAgcG9zID0gMSwNCiAgY2V4ID0gMC42LA0KICBjb2wgPSAiZGFya29yYW5nZSINCikNCmdyaWQoKQ0KDQoNCmBgYA0KDQojIyBDb3JlIFRSSU0gODUNCg0KYGBge3IgY29yZV90cmltODVfeW95X3NhYXIsIGVjaG89Riwgd2FybmluZz1GLCBtZXNzYWdlPUZ9DQoNCmRiX2NvcmVfdHJpbTg1X3lveSA9IG5hLm9taXQoZGJfbnNhX3lveVssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9jb3JlX3RyaW04NSldKQ0KY29sbmFtZXMoZGJfY29yZV90cmltODVfeW95KVstMV0gPSAiWW9ZIg0KZGJfY29yZV90cmltODVfc2FhciA9IG5hLm9taXQoZGJfc2Ffc2FhclssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9jb3JlX3RyaW04NSldKQ0KY29sbmFtZXMoZGJfY29yZV90cmltODVfc2FhcilbLTFdID0gIlNBQVIiDQoNCmRiX2NvcmVfdHJpbTg1ID0gbGVmdF9qb2luKGRiX2NvcmVfdHJpbTg1X3lveSwgZGJfY29yZV90cmltODVfc2FhciwgYnkgPSAiZGF0ZVNlc3Npb24iKQ0KZGJfY29yZV90cmltODUgPSBzdWJzZXQoZGJfY29yZV90cmltODUsIGRhdGVTZXNzaW9uID49IHN0YXJ0X2RhdGVfc2VhcykNCmRiX2NvcmVfdHJpbTg1X3Nob3J0ID0gdGFpbChkYl9jb3JlX3RyaW04NSwgbnBlcl95b3kpDQoNCmlkeF9sYXN0ID0gbnJvdyhkYl9jb3JlX3RyaW04NV9zaG9ydCkNCg0KDQojIENoYXJ0DQpwYXIobWZyb3c9YygxLDIpKQ0KDQpwbG90KGRiX2NvcmVfdHJpbTg1JGRhdGVTZXNzaW9uLCBkYl9jb3JlX3RyaW04NSRZb1ksIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrYmx1ZSIsIHhsYWIgPSAiRGF0ZSIsIHlsYWIgPSAiJSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9jb3JlX3RyaW04NVssLTFdKSkpLCBtYWluID0gIkNQSSBjb3JlIFRyaW0gODUiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2NvcmVfdHJpbTg1JGRhdGVTZXNzaW9uLCBkYl9jb3JlX3RyaW04NSRTQUFSLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya29yYW5nZSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGVnZW5kKCJ0b3BsZWZ0IiwgYygiWW9ZIiwgIlNBQVIiKSwgY29sID0gYygiZGFya2JsdWUiLCAiZGFya29yYW5nZSIpLCBwY2ggPSAxOSwgbHdkID0gMywgY2V4ID0gMSkNCmFibGluZShoID0gY3BpX3RhcmdldCwgY29sID0gImJsYWNrIiwgcGNoID0gMTksIGx3ZCA9IDMsIGx0eSA9IDMpDQpncmlkKCkNCg0KcGxvdChkYl9jb3JlX3RyaW04NV9zaG9ydCRkYXRlU2Vzc2lvbiwgZGJfY29yZV90cmltODVfc2hvcnQkWW9ZLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya2JsdWUiLCB4bGFiID0gIkRhdGUiLCB5bGFiID0gIiUiLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfY29yZV90cmltODVfc2hvcnRbLC0xXSkpKSwgbWFpbiA9ICJDUEkgY29yZSBUcmltIDg1IC0gcmVjZW50ZSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV90cmltODVfc2hvcnQkZGF0ZVNlc3Npb24sIGRiX2NvcmVfdHJpbTg1X3Nob3J0JFNBQVIsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrb3JhbmdlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoImJvdHRvbWxlZnQiLCBjKCJZb1kiLCAiU0FBUiIpLCBjb2wgPSBjKCJkYXJrYmx1ZSIsICJkYXJrb3JhbmdlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAxKQ0KYWJsaW5lKGggPSBjcGlfdGFyZ2V0LCBjb2wgPSAiYmxhY2siLCBwY2ggPSAxOSwgbHdkID0gMywgbHR5ID0gMykNCnRleHQoDQogIHggPSBkYl9jb3JlX3RyaW04NV9zaG9ydCRkYXRlU2Vzc2lvbltpZHhfbGFzdF0sDQogIHkgPSBkYl9jb3JlX3RyaW04NV9zaG9ydCRZb1lbaWR4X2xhc3RdLA0KICBsYWJlbHMgPSByb3VuZChkYl9jb3JlX3RyaW04NV9zaG9ydCRZb1lbaWR4X2xhc3RdLCAxKSwNCiAgcG9zID0gMSwNCiAgY2V4ID0gMC42LA0KICBjb2wgPSAiZGFya2JsdWUiDQopDQp0ZXh0KA0KICB4ID0gZGJfY29yZV90cmltODVfc2hvcnQkZGF0ZVNlc3Npb25baWR4X2xhc3RdLA0KICB5ID0gZGJfY29yZV90cmltODVfc2hvcnQkU0FBUltpZHhfbGFzdF0sDQogIGxhYmVscyA9IHJvdW5kKGRiX2NvcmVfdHJpbTg1X3Nob3J0JFNBQVJbaWR4X2xhc3RdLCAxKSwNCiAgcG9zID0gMSwNCiAgY2V4ID0gMC42LA0KICBjb2wgPSAiZGFya29yYW5nZSINCikNCmdyaWQoKQ0KDQoNCmBgYA0KDQojIyBDb3JlIFRSSU0gMQ0KDQpgYGB7ciBjb3JlX3RyaW0xX3lveV9zYWFyLCBlY2hvPUYsIHdhcm5pbmc9RiwgbWVzc2FnZT1GfQ0KDQpkYl9jb3JlX3RyaW0xX3lveSA9IG5hLm9taXQoZGJfbnNhX3lveVssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9jb3JlX3RyaW0xKV0pDQpjb2xuYW1lcyhkYl9jb3JlX3RyaW0xX3lveSlbLTFdID0gIllvWSINCmRiX2NvcmVfdHJpbTFfc2FhciA9IG5hLm9taXQoZGJfc2Ffc2FhclssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9jb3JlX3RyaW0xKV0pDQpjb2xuYW1lcyhkYl9jb3JlX3RyaW0xX3NhYXIpWy0xXSA9ICJTQUFSIg0KDQpkYl9jb3JlX3RyaW0xID0gbGVmdF9qb2luKGRiX2NvcmVfdHJpbTFfeW95LCBkYl9jb3JlX3RyaW0xX3NhYXIsIGJ5ID0gImRhdGVTZXNzaW9uIikNCmRiX2NvcmVfdHJpbTEgPSBzdWJzZXQoZGJfY29yZV90cmltMSwgZGF0ZVNlc3Npb24gPj0gc3RhcnRfZGF0ZV9zZWFzKQ0KZGJfY29yZV90cmltMV9zaG9ydCA9IHRhaWwoZGJfY29yZV90cmltMSwgbnBlcl95b3kpDQoNCmlkeF9sYXN0ID0gbnJvdyhkYl9jb3JlX3RyaW0xX3Nob3J0KQ0KDQoNCiMgQ2hhcnQNCnBhcihtZnJvdz1jKDEsMikpDQoNCnBsb3QoZGJfY29yZV90cmltMSRkYXRlU2Vzc2lvbiwgZGJfY29yZV90cmltMSRZb1ksIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrYmx1ZSIsIHhsYWIgPSAiRGF0ZSIsIHlsYWIgPSAiJSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9jb3JlX3RyaW0xWywtMV0pKSksIG1haW4gPSAiQ1BJIGNvcmUgVHJpbSAxIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsaW5lcyhkYl9jb3JlX3RyaW0xJGRhdGVTZXNzaW9uLCBkYl9jb3JlX3RyaW0xJFNBQVIsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrb3JhbmdlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoInRvcGxlZnQiLCBjKCJZb1kiLCAiU0FBUiIpLCBjb2wgPSBjKCJkYXJrYmx1ZSIsICJkYXJrb3JhbmdlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAxKQ0KYWJsaW5lKGggPSBjcGlfdGFyZ2V0LCBjb2wgPSAiYmxhY2siLCBwY2ggPSAxOSwgbHdkID0gMywgbHR5ID0gMykNCmdyaWQoKQ0KDQpwbG90KGRiX2NvcmVfdHJpbTFfc2hvcnQkZGF0ZVNlc3Npb24sIGRiX2NvcmVfdHJpbTFfc2hvcnQkWW9ZLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya2JsdWUiLCB4bGFiID0gIkRhdGUiLCB5bGFiID0gIiUiLCB5bGltID0gcmFuZ2UobmEub21pdCh1bmxpc3QoZGJfY29yZV90cmltMV9zaG9ydFssLTFdKSkpLCBtYWluID0gIkNQSSBjb3JlIFRyaW0gMSAtIHJlY2VudGUiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2NvcmVfdHJpbTFfc2hvcnQkZGF0ZVNlc3Npb24sIGRiX2NvcmVfdHJpbTFfc2hvcnQkU0FBUiwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtvcmFuZ2UiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxlZ2VuZCgiYm90dG9tbGVmdCIsIGMoIllvWSIsICJTQUFSIiksIGNvbCA9IGMoImRhcmtibHVlIiwgImRhcmtvcmFuZ2UiKSwgcGNoID0gMTksIGx3ZCA9IDMsIGNleCA9IDEpDQphYmxpbmUoaCA9IGNwaV90YXJnZXQsIGNvbCA9ICJibGFjayIsIHBjaCA9IDE5LCBsd2QgPSAzLCBsdHkgPSAzKQ0KdGV4dCgNCiAgeCA9IGRiX2NvcmVfdHJpbTFfc2hvcnQkZGF0ZVNlc3Npb25baWR4X2xhc3RdLA0KICB5ID0gZGJfY29yZV90cmltMV9zaG9ydCRZb1lbaWR4X2xhc3RdLA0KICBsYWJlbHMgPSByb3VuZChkYl9jb3JlX3RyaW0xX3Nob3J0JFlvWVtpZHhfbGFzdF0sIDEpLA0KICBwb3MgPSAxLA0KICBjZXggPSAwLjYsDQogIGNvbCA9ICJkYXJrYmx1ZSINCikNCnRleHQoDQogIHggPSBkYl9jb3JlX3RyaW0xX3Nob3J0JGRhdGVTZXNzaW9uW2lkeF9sYXN0XSwNCiAgeSA9IGRiX2NvcmVfdHJpbTFfc2hvcnQkU0FBUltpZHhfbGFzdF0sDQogIGxhYmVscyA9IHJvdW5kKGRiX2NvcmVfdHJpbTFfc2hvcnQkU0FBUltpZHhfbGFzdF0sIDEpLA0KICBwb3MgPSAxLA0KICBjZXggPSAwLjYsDQogIGNvbCA9ICJkYXJrb3JhbmdlIg0KKQ0KZ3JpZCgpDQoNCg0KYGBgDQoNCiMjIENvcmUgVU5EIDI0DQoNCmBgYHtyIGNvcmVfdW5kMjRfeW95X3NhYXIsIGVjaG89Riwgd2FybmluZz1GLCBtZXNzYWdlPUZ9DQoNCmRiX2NvcmVfdW5kMjRfeW95ID0gbmEub21pdChkYl9uc2FfeW95WyxjKCJkYXRlU2Vzc2lvbiIsIGxhYmVsX2NvcmVfdW5kMjQpXSkNCmNvbG5hbWVzKGRiX2NvcmVfdW5kMjRfeW95KVstMV0gPSAiWW9ZIg0KZGJfY29yZV91bmQyNF9zYWFyID0gbmEub21pdChkYl9zYV9zYWFyWyxjKCJkYXRlU2Vzc2lvbiIsIGxhYmVsX2NvcmVfdW5kMjQpXSkNCmNvbG5hbWVzKGRiX2NvcmVfdW5kMjRfc2FhcilbLTFdID0gIlNBQVIiDQoNCmRiX2NvcmVfdW5kMjQgPSBsZWZ0X2pvaW4oZGJfY29yZV91bmQyNF95b3ksIGRiX2NvcmVfdW5kMjRfc2FhciwgYnkgPSAiZGF0ZVNlc3Npb24iKQ0KZGJfY29yZV91bmQyNCA9IHN1YnNldChkYl9jb3JlX3VuZDI0LCBkYXRlU2Vzc2lvbiA+PSBzdGFydF9kYXRlX3NlYXMpDQpkYl9jb3JlX3VuZDI0X3Nob3J0ID0gdGFpbChkYl9jb3JlX3VuZDI0LCBucGVyX3lveSkNCg0KaWR4X2xhc3QgPSBucm93KGRiX2NvcmVfdW5kMjRfc2hvcnQpDQoNCg0KIyBDaGFydA0KcGFyKG1mcm93PWMoMSwyKSkNCg0KcGxvdChkYl9jb3JlX3VuZDI0JGRhdGVTZXNzaW9uLCBkYl9jb3JlX3VuZDI0JFlvWSwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgeGxhYiA9ICJEYXRlIiwgeWxhYiA9ICIlIiwgeWxpbSA9IHJhbmdlKG5hLm9taXQodW5saXN0KGRiX2NvcmVfdW5kMjRbLC0xXSkpKSwgbWFpbiA9ICJDUEkgY29yZSBVTkQyNCIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV91bmQyNCRkYXRlU2Vzc2lvbiwgZGJfY29yZV91bmQyNCRTQUFSLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya29yYW5nZSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGVnZW5kKCJ0b3BsZWZ0IiwgYygiWW9ZIiwgIlNBQVIiKSwgY29sID0gYygiZGFya2JsdWUiLCAiZGFya29yYW5nZSIpLCBwY2ggPSAxOSwgbHdkID0gMywgY2V4ID0gMSkNCmFibGluZShoID0gY3BpX3RhcmdldCwgY29sID0gImJsYWNrIiwgcGNoID0gMTksIGx3ZCA9IDMsIGx0eSA9IDMpDQpncmlkKCkNCg0KcGxvdChkYl9jb3JlX3VuZDI0X3Nob3J0JGRhdGVTZXNzaW9uLCBkYl9jb3JlX3VuZDI0X3Nob3J0JFlvWSwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgeGxhYiA9ICJEYXRlIiwgeWxhYiA9ICIlIiwgeWxpbSA9IHJhbmdlKG5hLm9taXQodW5saXN0KGRiX2NvcmVfdW5kMjRfc2hvcnRbLC0xXSkpKSwgbWFpbiA9ICJDUEkgY29yZSBVTkQyNCAtIHJlY2VudGUiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2NvcmVfdW5kMjRfc2hvcnQkZGF0ZVNlc3Npb24sIGRiX2NvcmVfdW5kMjRfc2hvcnQkU0FBUiwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtvcmFuZ2UiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxlZ2VuZCgiYm90dG9tbGVmdCIsIGMoIllvWSIsICJTQUFSIiksIGNvbCA9IGMoImRhcmtibHVlIiwgImRhcmtvcmFuZ2UiKSwgcGNoID0gMTksIGx3ZCA9IDMsIGNleCA9IDEpDQphYmxpbmUoaCA9IGNwaV90YXJnZXQsIGNvbCA9ICJibGFjayIsIHBjaCA9IDE5LCBsd2QgPSAzLCBsdHkgPSAzKQ0KdGV4dCgNCiAgeCA9IGRiX2NvcmVfdW5kMjRfc2hvcnQkZGF0ZVNlc3Npb25baWR4X2xhc3RdLA0KICB5ID0gZGJfY29yZV91bmQyNF9zaG9ydCRZb1lbaWR4X2xhc3RdLA0KICBsYWJlbHMgPSByb3VuZChkYl9jb3JlX3VuZDI0X3Nob3J0JFlvWVtpZHhfbGFzdF0sIDEpLA0KICBwb3MgPSAxLA0KICBjZXggPSAwLjYsDQogIGNvbCA9ICJkYXJrYmx1ZSINCikNCnRleHQoDQogIHggPSBkYl9jb3JlX3VuZDI0X3Nob3J0JGRhdGVTZXNzaW9uW2lkeF9sYXN0XSwNCiAgeSA9IGRiX2NvcmVfdW5kMjRfc2hvcnQkU0FBUltpZHhfbGFzdF0sDQogIGxhYmVscyA9IHJvdW5kKGRiX2NvcmVfdW5kMjRfc2hvcnQkU0FBUltpZHhfbGFzdF0sIDEpLA0KICBwb3MgPSAxLA0KICBjZXggPSAwLjYsDQogIGNvbCA9ICJkYXJrb3JhbmdlIg0KKQ0KZ3JpZCgpDQoNCg0KYGBgDQoNCiMjIENvcmUgS1BJRlBDIC0gZXN0YXTDrXN0aWNvIHBvciBQQ0ENCg0KYGBge3IgY29yZV9rcGlmcGNfeW95X3NhYXIsIGVjaG89Riwgd2FybmluZz1GLCBtZXNzYWdlPUZ9DQoNCmRiX2NvcmVfa3BpZnBjX3lveSA9IG5hLm9taXQoZGJfbnNhX3lveVssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9jb3JlX2twaWZwYyldKQ0KY29sbmFtZXMoZGJfY29yZV9rcGlmcGNfeW95KVstMV0gPSAiWW9ZIg0KZGJfY29yZV9rcGlmcGNfc2FhciA9IG5hLm9taXQoZGJfc2Ffc2FhclssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9jb3JlX2twaWZwYyldKQ0KY29sbmFtZXMoZGJfY29yZV9rcGlmcGNfc2FhcilbLTFdID0gIlNBQVIiDQoNCmRiX2NvcmVfa3BpZnBjID0gbGVmdF9qb2luKGRiX2NvcmVfa3BpZnBjX3lveSwgZGJfY29yZV9rcGlmcGNfc2FhciwgYnkgPSAiZGF0ZVNlc3Npb24iKQ0KZGJfY29yZV9rcGlmcGMgPSBzdWJzZXQoZGJfY29yZV9rcGlmcGMsIGRhdGVTZXNzaW9uID49IHN0YXJ0X2RhdGVfc2VhcykNCmRiX2NvcmVfa3BpZnBjX3Nob3J0ID0gdGFpbChkYl9jb3JlX2twaWZwYywgbnBlcl95b3kpDQoNCmlkeF9sYXN0ID0gbnJvdyhkYl9jb3JlX2twaWZwY19zaG9ydCkNCg0KDQojIENoYXJ0DQpwYXIobWZyb3c9YygxLDIpKQ0KDQpwbG90KGRiX2NvcmVfa3BpZnBjJGRhdGVTZXNzaW9uLCBkYl9jb3JlX2twaWZwYyRZb1ksIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrYmx1ZSIsIHhsYWIgPSAiRGF0ZSIsIHlsYWIgPSAiJSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9jb3JlX2twaWZwY1ssLTFdKSkpLCBtYWluID0gIkNQSSBjb3JlIGtwaWZwYyIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV9rcGlmcGMkZGF0ZVNlc3Npb24sIGRiX2NvcmVfa3BpZnBjJFNBQVIsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrb3JhbmdlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoInRvcGxlZnQiLCBjKCJZb1kiLCAiU0FBUiIpLCBjb2wgPSBjKCJkYXJrYmx1ZSIsICJkYXJrb3JhbmdlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAxKQ0KYWJsaW5lKGggPSBjcGlfdGFyZ2V0LCBjb2wgPSAiYmxhY2siLCBwY2ggPSAxOSwgbHdkID0gMywgbHR5ID0gMykNCmdyaWQoKQ0KDQpwbG90KGRiX2NvcmVfa3BpZnBjX3Nob3J0JGRhdGVTZXNzaW9uLCBkYl9jb3JlX2twaWZwY19zaG9ydCRZb1ksIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrYmx1ZSIsIHhsYWIgPSAiRGF0ZSIsIHlsYWIgPSAiJSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9jb3JlX2twaWZwY19zaG9ydFssLTFdKSkpLCBtYWluID0gIkNQSSBjb3JlIGtwaWZwYyAtIHJlY2VudGUiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2NvcmVfa3BpZnBjX3Nob3J0JGRhdGVTZXNzaW9uLCBkYl9jb3JlX2twaWZwY19zaG9ydCRTQUFSLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya29yYW5nZSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGVnZW5kKCJib3R0b21sZWZ0IiwgYygiWW9ZIiwgIlNBQVIiKSwgY29sID0gYygiZGFya2JsdWUiLCAiZGFya29yYW5nZSIpLCBwY2ggPSAxOSwgbHdkID0gMywgY2V4ID0gMSkNCmFibGluZShoID0gY3BpX3RhcmdldCwgY29sID0gImJsYWNrIiwgcGNoID0gMTksIGx3ZCA9IDMsIGx0eSA9IDMpDQp0ZXh0KA0KICB4ID0gZGJfY29yZV9rcGlmcGNfc2hvcnQkZGF0ZVNlc3Npb25baWR4X2xhc3RdLA0KICB5ID0gZGJfY29yZV9rcGlmcGNfc2hvcnQkWW9ZW2lkeF9sYXN0XSwNCiAgbGFiZWxzID0gcm91bmQoZGJfY29yZV9rcGlmcGNfc2hvcnQkWW9ZW2lkeF9sYXN0XSwgMSksDQogIHBvcyA9IDEsDQogIGNleCA9IDAuNiwNCiAgY29sID0gImRhcmtibHVlIg0KKQ0KdGV4dCgNCiAgeCA9IGRiX2NvcmVfa3BpZnBjX3Nob3J0JGRhdGVTZXNzaW9uW2lkeF9sYXN0XSwNCiAgeSA9IGRiX2NvcmVfa3BpZnBjX3Nob3J0JFNBQVJbaWR4X2xhc3RdLA0KICBsYWJlbHMgPSByb3VuZChkYl9jb3JlX2twaWZwY19zaG9ydCRTQUFSW2lkeF9sYXN0XSwgMSksDQogIHBvcyA9IDEsDQogIGNleCA9IDAuNiwNCiAgY29sID0gImRhcmtvcmFuZ2UiDQopDQpncmlkKCkNCg0KDQpgYGANCg0KIyMgQ29yZSBzZXJ2aWNlcw0KDQpgYGB7ciBjb3JlX3NlcnZpY2VzX3lveV9zYWFyLCBlY2hvPUYsIHdhcm5pbmc9RiwgbWVzc2FnZT1GfQ0KDQpkYl9jb3JlX3NlcnZpY2VzX3lveSA9IG5hLm9taXQoZGJfbnNhX3lveVssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9jb3JlX3NlcnZpY2VzKV0pDQpjb2xuYW1lcyhkYl9jb3JlX3NlcnZpY2VzX3lveSlbLTFdID0gIllvWSINCmRiX2NvcmVfc2VydmljZXNfc2FhciA9IG5hLm9taXQoZGJfc2Ffc2FhclssYygiZGF0ZVNlc3Npb24iLCBsYWJlbF9jb3JlX3NlcnZpY2VzKV0pDQpjb2xuYW1lcyhkYl9jb3JlX3NlcnZpY2VzX3NhYXIpWy0xXSA9ICJTQUFSIg0KDQpkYl9jb3JlX3NlcnZpY2VzID0gbGVmdF9qb2luKGRiX2NvcmVfc2VydmljZXNfeW95LCBkYl9jb3JlX3NlcnZpY2VzX3NhYXIsIGJ5ID0gImRhdGVTZXNzaW9uIikNCmRiX2NvcmVfc2VydmljZXMgPSBzdWJzZXQoZGJfY29yZV9zZXJ2aWNlcywgZGF0ZVNlc3Npb24gPj0gc3RhcnRfZGF0ZV9zZWFzKQ0KZGJfY29yZV9zZXJ2aWNlc19zaG9ydCA9IHRhaWwoZGJfY29yZV9zZXJ2aWNlcywgbnBlcl95b3kpDQoNCmlkeF9sYXN0ID0gbnJvdyhkYl9jb3JlX3NlcnZpY2VzX3Nob3J0KQ0KDQoNCiMgQ2hhcnQNCnBhcihtZnJvdz1jKDEsMikpDQoNCnBsb3QoZGJfY29yZV9zZXJ2aWNlcyRkYXRlU2Vzc2lvbiwgZGJfY29yZV9zZXJ2aWNlcyRZb1ksIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrYmx1ZSIsIHhsYWIgPSAiRGF0ZSIsIHlsYWIgPSAiJSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9jb3JlX3NlcnZpY2VzWywtMV0pKSksIG1haW4gPSAiQ1BJIGNvcmUgc2VydmljZXMiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2NvcmVfc2VydmljZXMkZGF0ZVNlc3Npb24sIGRiX2NvcmVfc2VydmljZXMkU0FBUiwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtvcmFuZ2UiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxlZ2VuZCgidG9wbGVmdCIsIGMoIllvWSIsICJTQUFSIiksIGNvbCA9IGMoImRhcmtibHVlIiwgImRhcmtvcmFuZ2UiKSwgcGNoID0gMTksIGx3ZCA9IDMsIGNleCA9IDEpDQphYmxpbmUoaCA9IGNwaV90YXJnZXQsIGNvbCA9ICJibGFjayIsIHBjaCA9IDE5LCBsd2QgPSAzLCBsdHkgPSAzKQ0KZ3JpZCgpDQoNCnBsb3QoZGJfY29yZV9zZXJ2aWNlc19zaG9ydCRkYXRlU2Vzc2lvbiwgZGJfY29yZV9zZXJ2aWNlc19zaG9ydCRZb1ksIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrYmx1ZSIsIHhsYWIgPSAiRGF0ZSIsIHlsYWIgPSAiJSIsIHlsaW0gPSByYW5nZShuYS5vbWl0KHVubGlzdChkYl9jb3JlX3NlcnZpY2VzX3Nob3J0WywtMV0pKSksIG1haW4gPSAiQ1BJIGNvcmUgc2VydmljZXMgLSByZWNlbnRlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsaW5lcyhkYl9jb3JlX3NlcnZpY2VzX3Nob3J0JGRhdGVTZXNzaW9uLCBkYl9jb3JlX3NlcnZpY2VzX3Nob3J0JFNBQVIsIHR5cGUgPSAibCIsIGNvbCA9ICJkYXJrb3JhbmdlIiwgcGNoID0gMTksIGx3ZCA9IDMpDQpsZWdlbmQoImJvdHRvbWxlZnQiLCBjKCJZb1kiLCAiU0FBUiIpLCBjb2wgPSBjKCJkYXJrYmx1ZSIsICJkYXJrb3JhbmdlIiksIHBjaCA9IDE5LCBsd2QgPSAzLCBjZXggPSAxKQ0KYWJsaW5lKGggPSBjcGlfdGFyZ2V0LCBjb2wgPSAiYmxhY2siLCBwY2ggPSAxOSwgbHdkID0gMywgbHR5ID0gMykNCnRleHQoDQogIHggPSBkYl9jb3JlX3NlcnZpY2VzX3Nob3J0JGRhdGVTZXNzaW9uW2lkeF9sYXN0XSwNCiAgeSA9IGRiX2NvcmVfc2VydmljZXNfc2hvcnQkWW9ZW2lkeF9sYXN0XSwNCiAgbGFiZWxzID0gcm91bmQoZGJfY29yZV9zZXJ2aWNlc19zaG9ydCRZb1lbaWR4X2xhc3RdLCAxKSwNCiAgcG9zID0gMSwNCiAgY2V4ID0gMC42LA0KICBjb2wgPSAiZGFya2JsdWUiDQopDQp0ZXh0KA0KICB4ID0gZGJfY29yZV9zZXJ2aWNlc19zaG9ydCRkYXRlU2Vzc2lvbltpZHhfbGFzdF0sDQogIHkgPSBkYl9jb3JlX3NlcnZpY2VzX3Nob3J0JFNBQVJbaWR4X2xhc3RdLA0KICBsYWJlbHMgPSByb3VuZChkYl9jb3JlX3NlcnZpY2VzX3Nob3J0JFNBQVJbaWR4X2xhc3RdLCAxKSwNCiAgcG9zID0gMSwNCiAgY2V4ID0gMC42LA0KICBjb2wgPSAiZGFya29yYW5nZSINCikNCmdyaWQoKQ0KDQoNCmBgYA0KDQojIyBDb3JlIGdvb2RzDQoNCmBgYHtyIGNvcmVfZ29vZHNfeW95X3NhYXIsIGVjaG89Riwgd2FybmluZz1GLCBtZXNzYWdlPUZ9DQoNCmRiX2NvcmVfZ29vZHNfeW95ID0gbmEub21pdChkYl9uc2FfeW95WyxjKCJkYXRlU2Vzc2lvbiIsIGxhYmVsX2NvcmVfZ29vZHMpXSkNCmNvbG5hbWVzKGRiX2NvcmVfZ29vZHNfeW95KVstMV0gPSAiWW9ZIg0KZGJfY29yZV9nb29kc19zYWFyID0gbmEub21pdChkYl9zYV9zYWFyWyxjKCJkYXRlU2Vzc2lvbiIsIGxhYmVsX2NvcmVfZ29vZHMpXSkNCmNvbG5hbWVzKGRiX2NvcmVfZ29vZHNfc2FhcilbLTFdID0gIlNBQVIiDQoNCmRiX2NvcmVfZ29vZHMgPSBsZWZ0X2pvaW4oZGJfY29yZV9nb29kc195b3ksIGRiX2NvcmVfZ29vZHNfc2FhciwgYnkgPSAiZGF0ZVNlc3Npb24iKQ0KZGJfY29yZV9nb29kcyA9IHN1YnNldChkYl9jb3JlX2dvb2RzLCBkYXRlU2Vzc2lvbiA+PSBzdGFydF9kYXRlX3NlYXMpDQpkYl9jb3JlX2dvb2RzX3Nob3J0ID0gdGFpbChkYl9jb3JlX2dvb2RzLCBucGVyX3lveSkNCg0KaWR4X2xhc3QgPSBucm93KGRiX2NvcmVfZ29vZHNfc2hvcnQpDQoNCg0KIyBDaGFydA0KcGFyKG1mcm93PWMoMSwyKSkNCg0KcGxvdChkYl9jb3JlX2dvb2RzJGRhdGVTZXNzaW9uLCBkYl9jb3JlX2dvb2RzJFlvWSwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgeGxhYiA9ICJEYXRlIiwgeWxhYiA9ICIlIiwgeWxpbSA9IHJhbmdlKG5hLm9taXQodW5saXN0KGRiX2NvcmVfZ29vZHNbLC0xXSkpKSwgbWFpbiA9ICJDUEkgY29yZSBnb29kcyIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGluZXMoZGJfY29yZV9nb29kcyRkYXRlU2Vzc2lvbiwgZGJfY29yZV9nb29kcyRTQUFSLCB0eXBlID0gImwiLCBjb2wgPSAiZGFya29yYW5nZSIsIHBjaCA9IDE5LCBsd2QgPSAzKQ0KbGVnZW5kKCJ0b3BsZWZ0IiwgYygiWW9ZIiwgIlNBQVIiKSwgY29sID0gYygiZGFya2JsdWUiLCAiZGFya29yYW5nZSIpLCBwY2ggPSAxOSwgbHdkID0gMywgY2V4ID0gMSkNCmFibGluZShoID0gY3BpX3RhcmdldCwgY29sID0gImJsYWNrIiwgcGNoID0gMTksIGx3ZCA9IDMsIGx0eSA9IDMpDQpncmlkKCkNCg0KcGxvdChkYl9jb3JlX2dvb2RzX3Nob3J0JGRhdGVTZXNzaW9uLCBkYl9jb3JlX2dvb2RzX3Nob3J0JFlvWSwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtibHVlIiwgeGxhYiA9ICJEYXRlIiwgeWxhYiA9ICIlIiwgeWxpbSA9IHJhbmdlKG5hLm9taXQodW5saXN0KGRiX2NvcmVfZ29vZHNfc2hvcnRbLC0xXSkpKSwgbWFpbiA9ICJDUEkgY29yZSBnb29kcyAtIHJlY2VudGUiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxpbmVzKGRiX2NvcmVfZ29vZHNfc2hvcnQkZGF0ZVNlc3Npb24sIGRiX2NvcmVfZ29vZHNfc2hvcnQkU0FBUiwgdHlwZSA9ICJsIiwgY29sID0gImRhcmtvcmFuZ2UiLCBwY2ggPSAxOSwgbHdkID0gMykNCmxlZ2VuZCgiYm90dG9tbGVmdCIsIGMoIllvWSIsICJTQUFSIiksIGNvbCA9IGMoImRhcmtibHVlIiwgImRhcmtvcmFuZ2UiKSwgcGNoID0gMTksIGx3ZCA9IDMsIGNleCA9IDEpDQphYmxpbmUoaCA9IGNwaV90YXJnZXQsIGNvbCA9ICJibGFjayIsIHBjaCA9IDE5LCBsd2QgPSAzLCBsdHkgPSAzKQ0KdGV4dCgNCiAgeCA9IGRiX2NvcmVfZ29vZHNfc2hvcnQkZGF0ZVNlc3Npb25baWR4X2xhc3RdLA0KICB5ID0gZGJfY29yZV9nb29kc19zaG9ydCRZb1lbaWR4X2xhc3RdLA0KICBsYWJlbHMgPSByb3VuZChkYl9jb3JlX2dvb2RzX3Nob3J0JFlvWVtpZHhfbGFzdF0sIDEpLA0KICBwb3MgPSAxLA0KICBjZXggPSAwLjYsDQogIGNvbCA9ICJkYXJrYmx1ZSINCikNCnRleHQoDQogIHggPSBkYl9jb3JlX2dvb2RzX3Nob3J0JGRhdGVTZXNzaW9uW2lkeF9sYXN0XSwNCiAgeSA9IGRiX2NvcmVfZ29vZHNfc2hvcnQkU0FBUltpZHhfbGFzdF0sDQogIGxhYmVscyA9IHJvdW5kKGRiX2NvcmVfZ29vZHNfc2hvcnQkU0FBUltpZHhfbGFzdF0sIDEpLA0KICBwb3MgPSAxLA0KICBjZXggPSAwLjYsDQogIGNvbCA9ICJkYXJrb3JhbmdlIg0KKQ0KZ3JpZCgpDQoNCg0KYGBgDQoNCg0KDQo=