ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMTljZjUKLS0tIC9kZXYvbnVsbAorKysgYi8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMjMgQEAKKyouZFNZTS8KKyouYQorKi5keWxpYgorKi5vCisKKyouY2N+CisqLmhwcH4KKyouaH4KKworCisuRFNfU3RvcmUKKy5sb2NrKgorLndhZi0xKgorLndhZi10b29scy8qLnB5YworYnVpbGQvCisKKyouZGIKKyouZGF0CisqLnByb3BlcnRpZXMKKyoucHljCisqLmRiKgorCisudGFncyoKZGlmZiAtLWdpdCBhLy53YWYtdG9vbHMvYm9vc3QucHkgYi8ud2FmLXRvb2xzL2Jvb3N0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNTk0NWEKLS0tIC9kZXYvbnVsbAorKysgYi8ud2FmLXRvb2xzL2Jvb3N0LnB5CkBAIC0wLDAgKzEsMzc4IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgZW5jb2Rpbmc6IHV0Zi04CisjCisjIHBhcnRpYWxseSBiYXNlZCBvbiBib29zdC5weSB3cml0dGVuIGJ5IEdlcm5vdCBWb3JtYXlyCisjIHdyaXR0ZW4gYnkgUnVlZGlnZXIgU29uZGVyZmVsZCA8cnVlZGlnZXJAYy1wbHVzcGx1cy5kZT4sIDIwMDgKKyMgbW9kaWZpZWQgYnkgQmpvZXJuIE1pY2hhZWxzZW4sIDIwMDgKKyMgbW9kaWZpZWQgYnkgTHVjYSBGb3NzYXRpLCAyMDA4CisjIHJld3JpdHRlbiBmb3Igd2FmIDEuNS4xLCBUaG9tYXMgTmFneSwgMjAwOAorIyByZXdyaXR0ZW4gZm9yIHdhZiAxLjYuMiwgU3lsdmFpbiBSb3VxdWV0dGUsIDIwMTEKKworJycnCisKK1RoaXMgaXMgYW4gZXh0cmEgdG9vbCwgbm90IGJ1bmRsZWQgd2l0aCB0aGUgZGVmYXVsdCB3YWYgYmluYXJ5LgorVG8gYWRkIHRoZSBib29zdCB0b29sIHRvIHRoZSB3YWYgZmlsZToKKyQgLi93YWYtbGlnaHQgLS10b29scz1jb21wYXQxNSxib29zdAorCW9yLCBpZiB5b3UgaGF2ZSB3YWYgPj0gMS42LjIKKyQgLi93YWYgdXBkYXRlIC0tZmlsZXM9Ym9vc3QKKworV2hlbiB1c2luZyB0aGlzIHRvb2wsIHRoZSB3c2NyaXB0IHdpbGwgbG9vayBsaWtlOgorCisJZGVmIG9wdGlvbnMob3B0KToKKwkJb3B0LmxvYWQoJ2NvbXBpbGVyX2N4eCBib29zdCcpCisKKwlkZWYgY29uZmlndXJlKGNvbmYpOgorCQljb25mLmxvYWQoJ2NvbXBpbGVyX2N4eCBib29zdCcpCisJCWNvbmYuY2hlY2tfYm9vc3QobGliPSdzeXN0ZW0gZmlsZXN5c3RlbScpCisKKwlkZWYgYnVpbGQoYmxkKToKKwkJYmxkKHNvdXJjZT0nbWFpbi5jcHAnLCB0YXJnZXQ9J2FwcCcsIHVzZT0nQk9PU1QnKQorCitPcHRpb25zIGFyZSBnZW5lcmF0ZWQsIGluIG9yZGVyIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mIGJvb3N0IGluY2x1ZGVzL2xpYnJhcmllcy4KK1RoZSBgY2hlY2tfYm9vc3RgIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24gYWxsb3dzIHRvIHNwZWNpZnkgdGhlIHVzZWQgYm9vc3QgbGlicmFyaWVzLgorSXQgY2FuIGFsc28gcHJvdmlkZSBkZWZhdWx0IGFyZ3VtZW50cyB0byB0aGUgLS1ib29zdC1zdGF0aWMgYW5kIC0tYm9vc3QtbXQgY29tbWFuZC1saW5lIGFyZ3VtZW50cy4KK0V2ZXJ5dGhpbmcgd2lsbCBiZSBwYWNrYWdlZCB0b2dldGhlciBpbiBhIEJPT1NUIGNvbXBvbmVudCB0aGF0IHlvdSBjYW4gdXNlLgorCitXaGVuIHVzaW5nIE1TVkMsIGEgbG90IG9mIGNvbXBpbGF0aW9uIGZsYWdzIG5lZWQgdG8gbWF0Y2ggeW91ciBCT09TVCBidWlsZCBjb25maWd1cmF0aW9uOgorIC0geW91IG1heSBoYXZlIHRvIGFkZCAvRUhzYyB0byB5b3VyIENYWEZMQUdTIG9yIGRlZmluZSBib29zdDo6dGhyb3dfZXhjZXB0aW9uIGlmIEJPT1NUX05PX0VYQ0VQVElPTlMgaXMgZGVmaW5lZC4KKyAgIEVycm9yczogQzQ1MzAKKyAtIGJvb3N0IGxpYnJhcmllcyB3aWxsIHRyeSB0byBiZSBzbWFydCBhbmQgdXNlIHRoZSAocHJldHR5IGJ1dCBvZnRlbiBub3QgdXNlZnVsKSBhdXRvLWxpbmtpbmcgZmVhdHVyZSBvZiBNU1ZDCisgICBTbyBiZWZvcmUgY2FsbGluZyBgY29uZi5jaGVja19ib29zdGAgeW91IG1pZ2h0IHdhbnQgdG8gZGlzYWJsaW5nIGJ5IGFkZGluZzoKKyAgIAljb25mLmVudi5ERUZJTkVTX0JPT1NUICs9IFsnQk9PU1RfQUxMX05PX0xJQiddCisgICBFcnJvcnM6CisgLSBib29zdCBtaWdodCBhbHNvIGJlIGNvbXBpbGVkIHdpdGggL01ULCB3aGljaCBsaW5rcyB0aGUgcnVudGltZSBzdGF0aWNhbGx5LgorICAgSWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCByZWRlZmluZWQgc3ltYm9scywKKwkJc2VsZi5lbnZbJ0RFRklORVNfJXMnICUgdmFyXSArPSBbJ0JPT1NUX0FMTF9OT19MSUInXQorCQlzZWxmLmVudlsnQ1hYRkxBR1NfJXMnICUgdmFyXSArPSBbJy9NRCcsICcvRUhzYyddCitQYXNzaW5nIGAtLWJvb3N0LWxpbmthZ2VfYXV0b2RldGVjdGAgbWlnaHQgaGVscCBlbnN1cmluZyBoYXZpbmcgYSBjb3JyZWN0IGxpbmthZ2UgaW4gc29tZSBiYXNpYyBjYXNlcy4KKworJycnCisKK2ltcG9ydCBzeXMKK2ltcG9ydCByZQorZnJvbSB3YWZsaWIgaW1wb3J0IFV0aWxzLCBMb2dzLCBFcnJvcnMKK2Zyb20gd2FmbGliLkNvbmZpZ3VyZSBpbXBvcnQgY29uZgorCitCT09TVF9MSUJTID0gWycvdXNyL2xpYicsICcvdXNyL2xvY2FsL2xpYicsICcvb3B0L2xvY2FsL2xpYicsICcvc3cvbGliJywgJy9saWInLCAnL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudScsICcvdXNyL2xpYi9pMzg2LWxpbnV4LWdudScsICcvdXNyL2xvY2FsL25kbi9saWInXQorQk9PU1RfSU5DTFVERVMgPSBbJy91c3IvaW5jbHVkZScsICcvdXNyL2xvY2FsL2luY2x1ZGUnLCAnL29wdC9sb2NhbC9pbmNsdWRlJywgJy9zdy9pbmNsdWRlJywgJy91c3IvbG9jYWwvbmRuL2luY2x1ZGUnXQorQk9PU1RfVkVSU0lPTl9GSUxFID0gJ2Jvb3N0L3ZlcnNpb24uaHBwJworQk9PU1RfVkVSU0lPTl9DT0RFID0gJycnCisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8Ym9vc3QvdmVyc2lvbi5ocHA+CitpbnQgbWFpbigpIHsgc3RkOjpjb3V0IDw8IEJPT1NUX0xJQl9WRVJTSU9OIDw8ICI6IiA8PCBCT09TVF9WRVJTSU9OIDw8IHN0ZDo6ZW5kbDsgfQorJycnCitCT09TVF9TWVNURU1fQ09ERSA9ICcnJworI2luY2x1ZGUgPGJvb3N0L3N5c3RlbS9lcnJvcl9jb2RlLmhwcD4KK2ludCBtYWluKCkgeyBib29zdDo6c3lzdGVtOjplcnJvcl9jb2RlIGM7IH0KKycnJworQk9PU1RfVEhSRUFEX0NPREUgPSAnJycKKyNpbmNsdWRlIDxib29zdC90aHJlYWQuaHBwPgoraW50IG1haW4oKSB7IGJvb3N0Ojp0aHJlYWQgdDsgfQorJycnCisKKyMgdG9vbHNldHMgZnJvbSB7Ym9vc3RfZGlyfS90b29scy9idWlsZC92Mi90b29scy9jb21tb24uamFtCitQTEFURk9STSA9IFV0aWxzLnVudmVyc2lvbmVkX3N5c19wbGF0Zm9ybSgpCitkZXRlY3RfaW50ZWwgPSBsYW1iZGEgZW52OiAoUExBVEZPUk0gPT0gJ3dpbjMyJykgYW5kICdpdycgb3IgJ2lsJworZGV0ZWN0X2NsYW5nID0gbGFtYmRhIGVudjogKFBMQVRGT1JNID09ICdkYXJ3aW4nKSBhbmQgJ2NsYW5nLWRhcndpbicgb3IgJ2NsYW5nJworZGV0ZWN0X21pbmd3ID0gbGFtYmRhIGVudjogKHJlLnNlYXJjaCgnTWluR1cnLCBlbnYuQ1hYWzBdKSkgYW5kICdtZ3cnIG9yICdnY2MnCitCT09TVF9UT09MU0VUUyA9IHsKKwknYm9ybGFuZCc6ICAnYmNiJywKKwknY2xhbmcnOglkZXRlY3RfY2xhbmcsCisJJ2NvbW8nOgkgJ2NvbW8nLAorCSdjdyc6CSAgICdjdycsCisJJ2Rhcndpbic6ICAgJ3hnY2MnLAorCSdlZGcnOgkgICdlZGcnLAorCSdnKysnOgkgIGRldGVjdF9taW5ndywKKwknZ2NjJzoJICBkZXRlY3RfbWluZ3csCisJJ2ljcGMnOgkgZGV0ZWN0X2ludGVsLAorCSdpbnRlbCc6CWRldGVjdF9pbnRlbCwKKwkna2NjJzoJICAna2NjJywKKwkna3lsaXgnOgknYmNrJywKKwknbWlwc3Bybyc6ICAnbXAnLAorCSdtaW5ndyc6CSdtZ3cnLAorCSdtc3ZjJzoJICd2YycsCisJJ3FjYyc6CSAgJ3FjYycsCisJJ3N1bic6CSAgJ3N3JywKKwknc3VuYysrJzogICAnc3cnLAorCSd0cnU2NGN4eCc6ICd0cnUnLAorCSd2YWNwcCc6CSd4bGMnCit9CisKKworZGVmIG9wdGlvbnMob3B0KToKKwlvcHQgPSBvcHQuYWRkX29wdGlvbl9ncm91cCgnQm9vc3QgT3B0aW9ucycpCisKKwlvcHQuYWRkX29wdGlvbignLS1ib29zdC1pbmNsdWRlcycsIHR5cGU9J3N0cmluZycsCisJCQkJICAgZGVmYXVsdD0nJywgZGVzdD0nYm9vc3RfaW5jbHVkZXMnLAorCQkJCSAgIGhlbHA9JycncGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBib29zdCBpbmNsdWRlcyBhcmUsIGUuZy4sIC9wYXRoL3RvL2Jvb3N0XzFfNTVfMC9zdGFnZS9pbmNsdWRlJycnKQorCW9wdC5hZGRfb3B0aW9uKCctLWJvb3N0LWxpYnMnLCB0eXBlPSdzdHJpbmcnLAorCQkJCSAgIGRlZmF1bHQ9JycsIGRlc3Q9J2Jvb3N0X2xpYnMnLAorCQkJCSAgIGhlbHA9JycncGF0aCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBib29zdCBsaWJzIGFyZSwgZS5nLiwgL3BhdGgvdG8vYm9vc3RfMV81NV8wL3N0YWdlL2xpYicnJykKKwlvcHQuYWRkX29wdGlvbignLS1ib29zdC1zdGF0aWMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorCQkJCSAgIGRlZmF1bHQ9RmFsc2UsIGRlc3Q9J2Jvb3N0X3N0YXRpYycsCisJCQkJICAgaGVscD0nbGluayB3aXRoIHN0YXRpYyBib29zdCBsaWJyYXJpZXMgKC5saWIvLmEpJykKKwlvcHQuYWRkX29wdGlvbignLS1ib29zdC1tdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisJCQkJICAgZGVmYXVsdD1GYWxzZSwgZGVzdD0nYm9vc3RfbXQnLAorCQkJCSAgIGhlbHA9J3NlbGVjdCBtdWx0aS10aHJlYWRlZCBsaWJyYXJpZXMnKQorCW9wdC5hZGRfb3B0aW9uKCctLWJvb3N0LWFiaScsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9JycsIGRlc3Q9J2Jvb3N0X2FiaScsCisJCQkJICAgaGVscD0nJydzZWxlY3QgbGlicmFyaWVzIHdpdGggdGFncyAoZGdzeXAsIGQgZm9yIGRlYnVnKSwgc2VlIGRvYyBCb29zdCwgR2V0dGluZyBTdGFydGVkLCBjaGFwdGVyIDYuMScnJykKKwlvcHQuYWRkX29wdGlvbignLS1ib29zdC1saW5rYWdlX2F1dG9kZXRlY3QnLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdib29zdF9saW5rYWdlX2F1dG9kZXRlY3QnLAorCQkJCSAgIGhlbHA9ImF1dG8tZGV0ZWN0IGJvb3N0IGxpbmthZ2Ugb3B0aW9ucyAoZG9uJ3QgZ2V0IHVzZWQgdG8gaXQgLyBtaWdodCBicmVhayBvdGhlciBzdHVmZikiKQorCW9wdC5hZGRfb3B0aW9uKCctLWJvb3N0LXRvb2xzZXQnLCB0eXBlPSdzdHJpbmcnLAorCQkJCSAgIGRlZmF1bHQ9JycsIGRlc3Q9J2Jvb3N0X3Rvb2xzZXQnLAorCQkJCSAgIGhlbHA9J2ZvcmNlIGEgdG9vbHNldCBlLmcuIG1zdmMsIHZjOTAsIGdjYywgbWluZ3csIG1ndzQ1IChkZWZhdWx0OiBhdXRvKScpCisJcHlfdmVyc2lvbiA9ICclZCVkJyAlIChzeXMudmVyc2lvbl9pbmZvWzBdLCBzeXMudmVyc2lvbl9pbmZvWzFdKQorCW9wdC5hZGRfb3B0aW9uKCctLWJvb3N0LXB5dGhvbicsIHR5cGU9J3N0cmluZycsCisJCQkJICAgZGVmYXVsdD1weV92ZXJzaW9uLCBkZXN0PSdib29zdF9weXRob24nLAorCQkJCSAgIGhlbHA9J3NlbGVjdCB0aGUgbGliIHB5dGhvbiB3aXRoIHRoaXMgdmVyc2lvbiAoZGVmYXVsdDogJXMpJyAlIHB5X3ZlcnNpb24pCisKKworQGNvbmYKK2RlZiBfX2Jvb3N0X2dldF92ZXJzaW9uX2ZpbGUoc2VsZiwgZCk6CisJZG5vZGUgPSBzZWxmLnJvb3QuZmluZF9kaXIoZCkKKwlpZiBkbm9kZToKKwkJcmV0dXJuIGRub2RlLmZpbmRfbm9kZShCT09TVF9WRVJTSU9OX0ZJTEUpCisJcmV0dXJuIE5vbmUKKworQGNvbmYKK2RlZiBib29zdF9nZXRfdmVyc2lvbihzZWxmLCBkKToKKwkiIiJzaWxlbnRseSByZXRyaWV2ZSB0aGUgYm9vc3QgdmVyc2lvbiBudW1iZXIiIiIKKwlub2RlID0gc2VsZi5fX2Jvb3N0X2dldF92ZXJzaW9uX2ZpbGUoZCkKKwlpZiBub2RlOgorCQl0cnk6CisJCQl0eHQgPSBub2RlLnJlYWQoKQorCQlleGNlcHQgKE9TRXJyb3IsIElPRXJyb3IpOgorCQkJTG9ncy5lcnJvcigiQ291bGQgbm90IHJlYWQgdGhlIGZpbGUgJXIiICUgbm9kZS5hYnNwYXRoKCkpCisJCWVsc2U6CisJCQlyZV9idXQxID0gcmUuY29tcGlsZSgnXiNkZWZpbmVcXHMrQk9PU1RfTElCX1ZFUlNJT05cXHMrIiguKykiJywgcmUuTSkKKwkJCW0xID0gcmVfYnV0MS5zZWFyY2godHh0KQorCisJCQlyZV9idXQyID0gcmUuY29tcGlsZSgnXiNkZWZpbmVcXHMrQk9PU1RfVkVSU0lPTlxccysoXFxkKyknLCByZS5NKQorCQkJbTIgPSByZV9idXQyLnNlYXJjaCh0eHQpCisKKwkJCWlmIG0xIGFuZCBtMjoKKwkJCQlyZXR1cm4gKG0xLmdyb3VwKDEpLCBtMi5ncm91cCgxKSkKKworCXJldHVybiBzZWxmLmNoZWNrX2N4eChmcmFnbWVudD1CT09TVF9WRVJTSU9OX0NPREUsIGluY2x1ZGVzPVtkXSwgZXhlY3V0ZT1UcnVlLCBkZWZpbmVfcmV0PVRydWUpLnNwbGl0KCI6IikKKworQGNvbmYKK2RlZiBib29zdF9nZXRfaW5jbHVkZXMoc2VsZiwgKmssICoqa3cpOgorCWluY2x1ZGVzID0gayBhbmQga1swXSBvciBrdy5nZXQoJ2luY2x1ZGVzJywgTm9uZSkKKwlpZiBpbmNsdWRlcyBhbmQgc2VsZi5fX2Jvb3N0X2dldF92ZXJzaW9uX2ZpbGUoaW5jbHVkZXMpOgorCQlyZXR1cm4gaW5jbHVkZXMKKwlmb3IgZCBpbiBVdGlscy50b19saXN0KHNlbGYuZW52aXJvbi5nZXQoJ0lOQ0xVREUnLCAnJykpICsgQk9PU1RfSU5DTFVERVM6CisJCWlmIHNlbGYuX19ib29zdF9nZXRfdmVyc2lvbl9maWxlKGQpOgorCQkJcmV0dXJuIGQKKwlpZiBpbmNsdWRlczoKKwkJc2VsZi5lbmRfbXNnKCdoZWFkZXJzIG5vdCBmb3VuZCBpbiAlcycgJSBpbmNsdWRlcykKKwkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKwllbHNlOgorCQlzZWxmLmVuZF9tc2coJ2hlYWRlcnMgbm90IGZvdW5kLCBwbGVhc2UgcHJvdmlkZSBhIC0tYm9vc3QtaW5jbHVkZXMgYXJndW1lbnQgKHNlZSBoZWxwKScpCisJCXNlbGYuZmF0YWwoJ1RoZSBjb25maWd1cmF0aW9uIGZhaWxlZCcpCisKKworQGNvbmYKK2RlZiBib29zdF9nZXRfdG9vbHNldChzZWxmLCBjYyk6CisJdG9vbHNldCA9IGNjCisJaWYgbm90IGNjOgorCQlidWlsZF9wbGF0Zm9ybSA9IFV0aWxzLnVudmVyc2lvbmVkX3N5c19wbGF0Zm9ybSgpCisJCWlmIGJ1aWxkX3BsYXRmb3JtIGluIEJPT1NUX1RPT0xTRVRTOgorCQkJY2MgPSBidWlsZF9wbGF0Zm9ybQorCQllbHNlOgorCQkJY2MgPSBzZWxmLmVudi5DWFhfTkFNRQorCWlmIGNjIGluIEJPT1NUX1RPT0xTRVRTOgorCQl0b29sc2V0ID0gQk9PU1RfVE9PTFNFVFNbY2NdCisJcmV0dXJuIGlzaW5zdGFuY2UodG9vbHNldCwgc3RyKSBhbmQgdG9vbHNldCBvciB0b29sc2V0KHNlbGYuZW52KQorCisKK0Bjb25mCitkZWYgX19ib29zdF9nZXRfbGlic19wYXRoKHNlbGYsICprLCAqKmt3KToKKwknJycgcmV0dXJuIHRoZSBsaWIgcGF0aCBhbmQgYWxsIHRoZSBmaWxlcyBpbiBpdCAnJycKKwlpZiAnZmlsZXMnIGluIGt3OgorCQlyZXR1cm4gc2VsZi5yb290LmZpbmRfZGlyKCcuJyksIFV0aWxzLnRvX2xpc3Qoa3dbJ2ZpbGVzJ10pCisJbGlicyA9IGsgYW5kIGtbMF0gb3Iga3cuZ2V0KCdsaWJzJywgTm9uZSkKKwlpZiBsaWJzOgorCQlwYXRoID0gc2VsZi5yb290LmZpbmRfZGlyKGxpYnMpCisJCWZpbGVzID0gcGF0aC5hbnRfZ2xvYignKmJvb3N0XyonKQorCWlmIG5vdCBsaWJzIG9yIG5vdCBmaWxlczoKKwkJZm9yIGQgaW4gVXRpbHMudG9fbGlzdChzZWxmLmVudmlyb24uZ2V0KCdMSUInLCBbXSkpICsgQk9PU1RfTElCUzoKKwkJCXBhdGggPSBzZWxmLnJvb3QuZmluZF9kaXIoZCkKKwkJCWlmIHBhdGg6CisJCQkJZmlsZXMgPSBwYXRoLmFudF9nbG9iKCcqYm9vc3RfKicpCisJCQkJaWYgZmlsZXM6CisJCQkJCWJyZWFrCisJCQlwYXRoID0gc2VsZi5yb290LmZpbmRfZGlyKGQgKyAnNjQnKQorCQkJaWYgcGF0aDoKKwkJCQlmaWxlcyA9IHBhdGguYW50X2dsb2IoJypib29zdF8qJykKKwkJCQlpZiBmaWxlczoKKwkJCQkJYnJlYWsKKwlpZiBub3QgcGF0aDoKKwkJaWYgbGliczoKKwkJCXNlbGYuZW5kX21zZygnbGlicyBub3QgZm91bmQgaW4gJXMnICUgbGlicykKKwkJCXNlbGYuZmF0YWwoJ1RoZSBjb25maWd1cmF0aW9uIGZhaWxlZCcpCisJCWVsc2U6CisJCQlzZWxmLmVuZF9tc2coJ2xpYnMgbm90IGZvdW5kLCBwbGVhc2UgcHJvdmlkZSBhIC0tYm9vc3QtbGlicyBhcmd1bWVudCAoc2VlIGhlbHApJykKKwkJCXNlbGYuZmF0YWwoJ1RoZSBjb25maWd1cmF0aW9uIGZhaWxlZCcpCisKKwlzZWxmLnRvX2xvZygnRm91bmQgdGhlIGJvb3N0IHBhdGggaW4gJXIgd2l0aCB0aGUgbGlicmFyaWVzOicgJSBwYXRoKQorCWZvciB4IGluIGZpbGVzOgorCQlzZWxmLnRvX2xvZygnICAgICVyJyAlIHgpCisJcmV0dXJuIHBhdGgsIGZpbGVzCisKK0Bjb25mCitkZWYgYm9vc3RfZ2V0X2xpYnMoc2VsZiwgKmssICoqa3cpOgorCScnJworCXJldHVybiB0aGUgbGliIHBhdGggYW5kIHRoZSByZXF1aXJlZCBsaWJzCisJYWNjb3JkaW5nIHRvIHRoZSBwYXJhbWV0ZXJzCisJJycnCisJcGF0aCwgZmlsZXMgPSBzZWxmLl9fYm9vc3RfZ2V0X2xpYnNfcGF0aCgqKmt3KQorCXQgPSBbXQorCWlmIGt3LmdldCgnbXQnLCBGYWxzZSk6CisJCXQuYXBwZW5kKCdtdCcpCisJaWYga3cuZ2V0KCdhYmknLCBOb25lKToKKwkJdC5hcHBlbmQoa3dbJ2FiaSddKQorCXRhZ3MgPSB0IGFuZCAnKC0lcykrJyAlICctJy5qb2luKHQpIG9yICcnCisJdG9vbHNldCA9IHNlbGYuYm9vc3RfZ2V0X3Rvb2xzZXQoa3cuZ2V0KCd0b29sc2V0JywgJycpKQorCXRvb2xzZXRfcGF0ID0gJygtJXNbMC05XXswLDN9KSsnICUgdG9vbHNldAorCXZlcnNpb24gPSAnKC0lcykrJyAlIHNlbGYuZW52LkJPT1NUX1ZFUlNJT04KKworCWRlZiBmaW5kX2xpYihyZV9saWIsIGZpbGVzKToKKwkJZm9yIGZpbGUgaW4gZmlsZXM6CisJCQlpZiByZV9saWIuc2VhcmNoKGZpbGUubmFtZSk6CisJCQkJc2VsZi50b19sb2coJ0ZvdW5kIGJvb3N0IGxpYiAlcycgJSBmaWxlKQorCQkJCXJldHVybiBmaWxlCisJCXJldHVybiBOb25lCisKKwlkZWYgZm9ybWF0X2xpYl9uYW1lKG5hbWUpOgorCQlpZiBuYW1lLnN0YXJ0c3dpdGgoJ2xpYicpIGFuZCBzZWxmLmVudi5DQ19OQU1FICE9ICdtc3ZjJzoKKwkJCW5hbWUgPSBuYW1lWzM6XQorCQlyZXR1cm4gbmFtZVs6bmFtZS5yZmluZCgnLicpXQorCisJbGlicyA9IFtdCisJZm9yIGxpYiBpbiBVdGlscy50b19saXN0KGsgYW5kIGtbMF0gb3Iga3cuZ2V0KCdsaWInLCBOb25lKSk6CisJCXB5ID0gKGxpYiA9PSAncHl0aG9uJykgYW5kICcoLXB5JXMpKycgJSBrd1sncHl0aG9uJ10gb3IgJycKKwkJIyBUcnlpbmcgbGlicmFyaWVzLCBmcm9tIG1vc3Qgc3RyaWN0IG1hdGNoIHRvIGxlYXN0IG9uZQorCQlmb3IgcGF0dGVybiBpbiBbJ2Jvb3N0XyVzJXMlcyVzJXMnICUgKGxpYiwgdG9vbHNldF9wYXQsIHRhZ3MsIHB5LCB2ZXJzaW9uKSwKKwkJCQkJCSdib29zdF8lcyVzJXMlcycgJSAobGliLCB0YWdzLCBweSwgdmVyc2lvbiksCisJCQkJCQknYm9vc3RfJXMlcyVzJyAlIChsaWIsIHRhZ3MsIHZlcnNpb24pLAorCQkJCQkJIyBHaXZlIHVwIHRyeWluZyB0byBmaW5kIHRoZSByaWdodCB2ZXJzaW9uCisJCQkJCQknYm9vc3RfJXMlcyVzJXMnICUgKGxpYiwgdG9vbHNldF9wYXQsIHRhZ3MsIHB5KSwKKwkJCQkJCSdib29zdF8lcyVzJXMnICUgKGxpYiwgdGFncywgcHkpLAorCQkJCQkJJ2Jvb3N0XyVzJXMnICUgKGxpYiwgdGFncyldOgorCQkJc2VsZi50b19sb2coJ1RyeWluZyBwYXR0ZXJuICVzJyAlIHBhdHRlcm4pCisJCQlmaWxlID0gZmluZF9saWIocmUuY29tcGlsZShwYXR0ZXJuKSwgZmlsZXMpCisJCQlpZiBmaWxlOgorCQkJCWxpYnMuYXBwZW5kKGZvcm1hdF9saWJfbmFtZShmaWxlLm5hbWUpKQorCQkJCWJyZWFrCisJCWVsc2U6CisJCQlzZWxmLmVuZF9tc2coJ2xpYiAlcyBub3QgZm91bmQgaW4gJXMnICUgKGxpYiwgcGF0aC5hYnNwYXRoKCkpKQorCQkJc2VsZi5mYXRhbCgnVGhlIGNvbmZpZ3VyYXRpb24gZmFpbGVkJykKKworCXJldHVybiBwYXRoLmFic3BhdGgoKSwgbGlicworCisKK0Bjb25mCitkZWYgY2hlY2tfYm9vc3Qoc2VsZiwgKmssICoqa3cpOgorCSIiIgorCUluaXRpYWxpemUgYm9vc3QgbGlicmFyaWVzIHRvIGJlIHVzZWQuCisKKwlLZXl3b3JkczogeW91IGNhbiBwYXNzIHRoZSBzYW1lIHBhcmFtZXRlcnMgYXMgd2l0aCB0aGUgY29tbWFuZCBsaW5lICh3aXRob3V0ICItLWJvb3N0LSIpLgorCU5vdGUgdGhhdCB0aGUgY29tbWFuZCBsaW5lIGhhcyB0aGUgcHJpb3JpdHksIGFuZCBzaG91bGQgcHJlZmVyYWJseSBiZSB1c2VkLgorCSIiIgorCWlmIG5vdCBzZWxmLmVudlsnQ1hYJ106CisJCXNlbGYuZmF0YWwoJ2xvYWQgYSBjKysgY29tcGlsZXIgZmlyc3QsIGNvbmYubG9hZCgiY29tcGlsZXJfY3h4IiknKQorCisJcGFyYW1zID0geydsaWInOiBrIGFuZCBrWzBdIG9yIGt3LmdldCgnbGliJywgTm9uZSl9CisJZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5vcHRpb25zLl9fZGljdF9fLml0ZW1zKCk6CisJCWlmIG5vdCBrZXkuc3RhcnRzd2l0aCgnYm9vc3RfJyk6CisJCQljb250aW51ZQorCQlrZXkgPSBrZXlbbGVuKCdib29zdF8nKTpdCisJCXBhcmFtc1trZXldID0gdmFsdWUgYW5kIHZhbHVlIG9yIGt3LmdldChrZXksICcnKQorCisJdmFyID0ga3cuZ2V0KCd1c2VsaWJfc3RvcmUnLCAnQk9PU1QnKQorCisJc2VsZi5zdGFydF9tc2coJ0NoZWNraW5nIGJvb3N0IGluY2x1ZGVzJykKKwlzZWxmLmVudlsnSU5DTFVERVNfJXMnICUgdmFyXSA9IGluYyA9IHNlbGYuYm9vc3RfZ2V0X2luY2x1ZGVzKCoqcGFyYW1zKQorCXZlcnNpb25zID0gc2VsZi5ib29zdF9nZXRfdmVyc2lvbihpbmMpCisJc2VsZi5lbnYuQk9PU1RfVkVSU0lPTiA9IHZlcnNpb25zWzBdCisJc2VsZi5lbnYuQk9PU1RfVkVSU0lPTl9OVU1CRVIgPSBpbnQodmVyc2lvbnNbMV0pCisJc2VsZi5lbmRfbXNnKCIlZC4lZC4lZCIgJSAoaW50KHZlcnNpb25zWzFdKSAvIDEwMDAwMCwKKwkJCQkgICBpbnQodmVyc2lvbnNbMV0pIC8gMTAwICUgMTAwMCwKKwkJCQkgICBpbnQodmVyc2lvbnNbMV0pICUgMTAwKSkKKwlpZiBMb2dzLnZlcmJvc2U6CisJCUxvZ3MucHByaW50KCdDWUFOJywgJwlwYXRoIDogJXMnICUgc2VsZi5lbnZbJ0lOQ0xVREVTXyVzJyAlIHZhcl0pCisKKwlpZiBub3QgcGFyYW1zWydsaWInXToKKwkJcmV0dXJuCisJc2VsZi5zdGFydF9tc2coJ0NoZWNraW5nIGJvb3N0IGxpYnMnKQorCXN1ZmZpeCA9IHBhcmFtcy5nZXQoJ3N0YXRpYycsIE5vbmUpIGFuZCAnU1QnIG9yICcnCisJcGF0aCwgbGlicyA9IHNlbGYuYm9vc3RfZ2V0X2xpYnMoKipwYXJhbXMpCisJc2VsZi5lbnZbJyVzTElCUEFUSF8lcycgJSAoc3VmZml4LCB2YXIpXSA9IFtwYXRoXQorCXNlbGYuZW52Wyclc0xJQl8lcycgJSAoc3VmZml4LCB2YXIpXSA9IGxpYnMKKwlzZWxmLmVuZF9tc2coJ29rJykKKwlpZiBMb2dzLnZlcmJvc2U6CisJCUxvZ3MucHByaW50KCdDWUFOJywgJwlwYXRoIDogJXMnICUgcGF0aCkKKwkJTG9ncy5wcHJpbnQoJ0NZQU4nLCAnCWxpYnMgOiAlcycgJSBsaWJzKQorCisKKwlkZWYgdHJ5X2xpbmsoKToKKwkJaWYgJ3N5c3RlbScgaW4gcGFyYW1zWydsaWInXToKKwkJCXNlbGYuY2hlY2tfY3h4KAorCQkJIGZyYWdtZW50PUJPT1NUX1NZU1RFTV9DT0RFLAorCQkJIHVzZT12YXIsCisJCQkgZXhlY3V0ZT1GYWxzZSwKKwkJCSkKKwkJaWYgJ3RocmVhZCcgaW4gcGFyYW1zWydsaWInXToKKwkJCXNlbGYuY2hlY2tfY3h4KAorCQkJIGZyYWdtZW50PUJPT1NUX1RIUkVBRF9DT0RFLAorCQkJIHVzZT12YXIsCisJCQkgZXhlY3V0ZT1GYWxzZSwKKwkJCSkKKworCWlmIHBhcmFtcy5nZXQoJ2xpbmthZ2VfYXV0b2RldGVjdCcsIEZhbHNlKToKKwkJc2VsZi5zdGFydF9tc2coIkF0dGVtcHRpbmcgdG8gZGV0ZWN0IGJvb3N0IGxpbmthZ2UgZmxhZ3MiKQorCQl0b29sc2V0ID0gc2VsZi5ib29zdF9nZXRfdG9vbHNldChrdy5nZXQoJ3Rvb2xzZXQnLCAnJykpCisJCWlmIHRvb2xzZXQgaW4gWyd2YyddOgorCQkJIyBkaXNhYmxlIGF1dG8tbGlua2luZyBmZWF0dXJlLCBjYXVzaW5nIGVycm9yIExOSzExODEKKwkJCSMgYmVjYXVzZSB0aGUgY29kZSB3YW50cyB0byBiZSBsaW5rZWQgYWdhaW5zdAorCQkJc2VsZi5lbnZbJ0RFRklORVNfJXMnICUgdmFyXSArPSBbJ0JPT1NUX0FMTF9OT19MSUInXQorCisJCQkjIGlmIG5vIGRsbHMgYXJlIHByZXNlbnQsIHdlIGd1ZXNzIHRoZSAubGliIGZpbGVzIGFyZSBub3Qgc3R1YnMKKwkJCWhhc19kbGxzID0gRmFsc2UKKwkJCWZvciB4IGluIFV0aWxzLmxpc3RkaXIocGF0aCk6CisJCQkJaWYgeC5lbmRzd2l0aChzZWxmLmVudi5jeHhzaGxpYl9QQVRURVJOICUgJycpOgorCQkJCQloYXNfZGxscyA9IFRydWUKKwkJCQkJYnJlYWsKKwkJCWlmIG5vdCBoYXNfZGxsczoKKwkJCQlzZWxmLmVudlsnU1RMSUJQQVRIXyVzJyAlIHZhcl0gPSBbcGF0aF0KKwkJCQlzZWxmLmVudlsnU1RMSUJfJXMnICUgdmFyXSA9IGxpYnMKKwkJCQlkZWwgc2VsZi5lbnZbJ0xJQl8lcycgJSB2YXJdCisJCQkJZGVsIHNlbGYuZW52WydMSUJQQVRIXyVzJyAlIHZhcl0KKworCQkJIyB3ZSBhdHRlbXB0IHRvIHBsYXkgd2l0aCBzb21lIGtub3duLXRvLXdvcmsgQ1hYRkxBR1MgY29tYmluYXRpb25zCisJCQlmb3IgY3h4ZmxhZ3MgaW4gKFsnL01EJywgJy9FSHNjJ10sIFtdKToKKwkJCQlzZWxmLmVudi5zdGFzaCgpCisJCQkJc2VsZi5lbnZbIkNYWEZMQUdTXyVzIiAlIHZhcl0gKz0gY3h4ZmxhZ3MKKwkJCQl0cnk6CisJCQkJCXRyeV9saW5rKCkKKwkJCQkJc2VsZi5lbmRfbXNnKCJvazogd2lubmluZyBjeHhmbGFncyBjb21iaW5hdGlvbjogJXMiICUgKHNlbGYuZW52WyJDWFhGTEFHU18lcyIgJSB2YXJdKSkKKwkJCQkJZSA9IE5vbmUKKwkJCQkJYnJlYWsKKwkJCQlleGNlcHQgRXJyb3JzLkNvbmZpZ3VyYXRpb25FcnJvciBhcyBleGM6CisJCQkJCXNlbGYuZW52LnJldmVydCgpCisJCQkJCWUgPSBleGMKKworCQkJaWYgZSBpcyBub3QgTm9uZToKKwkJCQlzZWxmLmVuZF9tc2coIkNvdWxkIG5vdCBhdXRvLWRldGVjdCBib29zdCBsaW5raW5nIGZsYWdzIGNvbWJpbmF0aW9uLCB5b3UgbWF5IHJlcG9ydCBpdCB0byBib29zdC5weSBhdXRob3IiLCBleD1lKQorCQkJCXNlbGYuZmF0YWwoJ1RoZSBjb25maWd1cmF0aW9uIGZhaWxlZCcpCisJCWVsc2U6CisJCQlzZWxmLmVuZF9tc2coIkJvb3N0IGxpbmthZ2UgZmxhZ3MgYXV0by1kZXRlY3Rpb24gbm90IGltcGxlbWVudGVkIChuZWVkZWQgPykgZm9yIHRoaXMgdG9vbGNoYWluIikKKwkJCXNlbGYuZmF0YWwoJ1RoZSBjb25maWd1cmF0aW9uIGZhaWxlZCcpCisJZWxzZToKKwkJc2VsZi5zdGFydF9tc2coJ0NoZWNraW5nIGZvciBib29zdCBsaW5rYWdlJykKKwkJdHJ5OgorCQkJdHJ5X2xpbmsoKQorCQlleGNlcHQgRXJyb3JzLkNvbmZpZ3VyYXRpb25FcnJvciBhcyBlOgorCQkJc2VsZi5lbmRfbXNnKCJDb3VsZCBub3QgbGluayBhZ2FpbnN0IGJvb3N0IGxpYnJhcmllcyB1c2luZyBzdXBwbGllZCBvcHRpb25zIikKKwkJCXNlbGYuZmF0YWwoJ1RoZSBjb25maWd1cmF0aW9uIGZhaWxlZCcpCisJCXNlbGYuZW5kX21zZygnb2snKQpkaWZmIC0tZ2l0IGEvLndhZi10b29scy9jb3ZlcmFnZS5weSBiLy53YWYtdG9vbHMvY292ZXJhZ2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEzZGI2NQotLS0gL2Rldi9udWxsCisrKyBiLy53YWYtdG9vbHMvY292ZXJhZ2UucHkKQEAgLTAsMCArMSwyNCBAQAorIyAtKi0gTW9kZTogcHl0aG9uOyBweS1pbmRlbnQtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGNvZGluZzogdXRmLTg7IC0qLQorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorIworIyBHUEwgMy4wIGxpY2Vuc2UsIHNlZSB0aGUgQ09QWUlORy5tZCBmaWxlIGZvciBtb3JlIGluZm9ybWF0aW9uCisKK2Zyb20gd2FmbGliIGltcG9ydCBUYXNrR2VuCisKK2RlZiBvcHRpb25zKG9wdCk6CisgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1jb3ZlcmFnZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsIGRlc3Q9J3dpdGhfY292ZXJhZ2UnLAorICAgICAgICAgICAgICAgICAgIGhlbHA9JycnU2V0IGNvbXBpbGVyIGZsYWdzIGZvciBnY2MgdG8gZW5hYmxlIGNvZGUgY292ZXJhZ2UgaW5mb3JtYXRpb24nJycpCisKK2RlZiBjb25maWd1cmUoY29uZik6CisgICAgaWYgY29uZi5vcHRpb25zLndpdGhfY292ZXJhZ2U6CisgICAgICAgIGNvbmYuY2hlY2tfY3h4KGN4eGZsYWdzPVsnLWZwcm9maWxlLWFyY3MnLCAnLWZ0ZXN0LWNvdmVyYWdlJywgJy1mUElDJ10sCisgICAgICAgICAgICAgICAgICAgICAgIGxpbmtmbGFncz1bJy1mcHJvZmlsZS1hcmNzJ10sIHVzZWxpYl9zdG9yZT0nR0NPVicsIG1hbmRhdG9yeT1UcnVlKQorCitAVGFza0dlbi5mZWF0dXJlKCdjeHgnLCdjYycpCitAVGFza0dlbi5hZnRlcigncHJvY2Vzc19zb3VyY2UnKQorZGVmIGFkZF9jb3ZlcmFnZShzZWxmKToKKyAgICBpZiBnZXRhdHRyKHNlbGYsICd1c2UnLCAnJyk6CisgICAgICAgIHNlbGYudXNlICs9ICcgR0NPVicKKyAgICBlbHNlOgorICAgICAgICBzZWxmLnVzZSA9ICdHQ09WJwpkaWZmIC0tZ2l0IGEvLndhZi10b29scy9kZWZhdWx0LWNvbXBpbGVyLWZsYWdzLnB5IGIvLndhZi10b29scy9kZWZhdWx0LWNvbXBpbGVyLWZsYWdzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMjM3ZjUKLS0tIC9kZXYvbnVsbAorKysgYi8ud2FmLXRvb2xzL2RlZmF1bHQtY29tcGlsZXItZmxhZ3MucHkKQEAgLTAsMCArMSw2MiBAQAorIyAtKi0gTW9kZTogcHl0aG9uOyBweS1pbmRlbnQtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGNvZGluZzogdXRmLTg7IC0qLQorIworIyBDb3B5cmlnaHQgKGMpIDIwMTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorIworIyBHUEwgMy4wIGxpY2Vuc2UsIHNlZSB0aGUgQ09QWUlORy5tZCBmaWxlIGZvciBtb3JlIGluZm9ybWF0aW9uCisKK2Zyb20gd2FmbGliIGltcG9ydCBMb2dzLCBDb25maWd1cmUKKworZGVmIG9wdGlvbnMob3B0KToKKyAgICBvcHQuYWRkX29wdGlvbignLS1kZWJ1ZycsICctLXdpdGgtZGVidWcnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLCBkZXN0PSdkZWJ1ZycsCisgICAgICAgICAgICAgICAgICAgaGVscD0nJydDb21waWxlIGluIGRlYnVnZ2luZyBtb2RlIHdpdGhvdXQgYWxsIG9wdGltaXphdGlvbnMgKC1PMCknJycpCisgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1jKysxMScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsIGRlc3Q9J3VzZV9jeHgxMScsCisgICAgICAgICAgICAgICAgICAgaGVscD0nJydFbmFibGUgQysrMTEgbW9kZSAoZXhwZXJpbWVudGFsLCBtYXkgbm90IHdvcmspJycnKQorCitkZWYgY29uZmlndXJlKGNvbmYpOgorICAgIGFyZUN1c3RvbUN4eGZsYWdzUHJlc2VudCA9IChsZW4oY29uZi5lbnYuQ1hYRkxBR1MpID4gMCkKKyAgICBkZWZhdWx0RmxhZ3MgPSBbXQorCisgICAgaWYgY29uZi5vcHRpb25zLnVzZV9jeHgxMToKKyAgICAgICAgZGVmYXVsdEZsYWdzICs9IFsnLXN0ZD1jKysweCcsICctc3RkPWMrKzExJ10KKyAgICBlbHNlOgorICAgICAgICBkZWZhdWx0RmxhZ3MgKz0gWyctc3RkPWMrKzAzJ10KKworICAgIGRlZmF1bHRGbGFncyArPSBbJy1wZWRhbnRpYycsICctV2FsbCcsICctV25vLWxvbmctbG9uZycsICctV25vLXVubmVlZGVkLWludGVybmFsLWRlY2xhcmF0aW9uJ10KKworICAgIGlmIGNvbmYub3B0aW9ucy5kZWJ1ZzoKKyAgICAgICAgY29uZi5kZWZpbmUoJ19ERUJVRycsIDEpCisgICAgICAgIGRlZmF1bHRGbGFncyArPSBbJy1PMCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJy1PZycsICMgZ2NjID49IDQuOAorICAgICAgICAgICAgICAgICAgICAgICAgICctZzMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICctZmNvbG9yLWRpYWdub3N0aWNzJywgIyBjbGFuZworICAgICAgICAgICAgICAgICAgICAgICAgICctZmRpYWdub3N0aWNzLWNvbG9yJywgIyBnY2MgPj0gNC45CisgICAgICAgICAgICAgICAgICAgICAgICAgJy1XZXJyb3InLAorICAgICAgICAgICAgICAgICAgICAgICAgICctV25vLWVycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWQnLCAjIEJ1ZyAjMTU2MAorICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICBpZiBhcmVDdXN0b21DeHhmbGFnc1ByZXNlbnQ6CisgICAgICAgICAgICBtaXNzaW5nRmxhZ3MgPSBbeCBmb3IgeCBpbiBkZWZhdWx0RmxhZ3MgaWYgeCBub3QgaW4gY29uZi5lbnYuQ1hYRkxBR1NdCisgICAgICAgICAgICBpZiBsZW4obWlzc2luZ0ZsYWdzKSA+IDA6CisgICAgICAgICAgICAgICAgTG9ncy53YXJuKCJTZWxlY3RlZCBkZWJ1ZyBtb2RlLCBidXQgQ1hYRkxBR1MgaXMgc2V0IHRvIGEgY3VzdG9tIHZhbHVlICclcyciCisgICAgICAgICAgICAgICAgICAgICAgICAgICUgIiAiLmpvaW4oY29uZi5lbnYuQ1hYRkxBR1MpKQorICAgICAgICAgICAgICAgIExvZ3Mud2FybigiRGVmYXVsdCBmbGFncyAnJXMnIGFyZSBub3QgYWN0aXZhdGVkIiAlICIgIi5qb2luKG1pc3NpbmdGbGFncykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25mLmFkZF9zdXBwb3J0ZWRfY3h4ZmxhZ3MoZGVmYXVsdEZsYWdzKQorICAgIGVsc2U6CisgICAgICAgIGRlZmF1bHRGbGFncyArPSBbJy1PMicsICctZyddCisgICAgICAgIGlmIG5vdCBhcmVDdXN0b21DeHhmbGFnc1ByZXNlbnQ6CisgICAgICAgICAgICBjb25mLmFkZF9zdXBwb3J0ZWRfY3h4ZmxhZ3MoZGVmYXVsdEZsYWdzKQorCitAQ29uZmlndXJlLmNvbmYKK2RlZiBhZGRfc3VwcG9ydGVkX2N4eGZsYWdzKHNlbGYsIGN4eGZsYWdzKToKKyAgICAiIiIKKyAgICBDaGVjayB3aGljaCBjeHhmbGFncyBhcmUgc3VwcG9ydGVkIGJ5IGNvbXBpbGVyIGFuZCBhZGQgdGhlbSB0byBlbnYuQ1hYRkxBR1MgdmFyaWFibGUKKyAgICAiIiIKKyAgICBzZWxmLnN0YXJ0X21zZygnQ2hlY2tpbmcgYWxsb3dlZCBmbGFncyBmb3IgYysrIGNvbXBpbGVyJykKKworICAgIHN1cHBvcnRlZEZsYWdzID0gW10KKyAgICBmb3IgZmxhZyBpbiBjeHhmbGFnczoKKyAgICAgICAgaWYgc2VsZi5jaGVja19jeHgoY3h4ZmxhZ3M9WyctV2Vycm9yJywgZmxhZ10sIG1hbmRhdG9yeT1GYWxzZSk6CisgICAgICAgICAgICBzdXBwb3J0ZWRGbGFncyArPSBbZmxhZ10KKworICAgIHNlbGYuZW5kX21zZygnICcuam9pbihzdXBwb3J0ZWRGbGFncykpCisgICAgc2VsZi5lbnYuQ1hYRkxBR1MgPSBzdXBwb3J0ZWRGbGFncyArIHNlbGYuZW52LkNYWEZMQUdTCmRpZmYgLS1naXQgYS8ud2FmLXRvb2xzL2RlcGVuZGVuY3ktY2hlY2tlci5weSBiLy53YWYtdG9vbHMvZGVwZW5kZW5jeS1jaGVja2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyOWZiZmQKLS0tIC9kZXYvbnVsbAorKysgYi8ud2FmLXRvb2xzL2RlcGVuZGVuY3ktY2hlY2tlci5weQpAQCAtMCwwICsxLDI4IEBACisjIGVuY29kaW5nOiB1dGYtOAorCitmcm9tIHdhZmxpYiBpbXBvcnQgT3B0aW9ucywgTG9ncworZnJvbSB3YWZsaWIuQ29uZmlndXJlIGltcG9ydCBjb25mCisKK2RlZiBhZGREZXBlbmRlbmN5T3B0aW9ucyhzZWxmLCBvcHQsIG5hbWUsIGV4dHJhSGVscD0nJyk6CisgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC0lcycgJSBuYW1lLCB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgZGVzdD0nd2l0aF8lcycgJSBuYW1lLAorICAgICAgICAgICAgICAgICAgIGhlbHA9J1BhdGggdG8gJXMsIGUuZy4sIC91c3IvbG9jYWwgJXMnICUgKG5hbWUsIGV4dHJhSGVscCkpCitzZXRhdHRyKE9wdGlvbnMuT3B0aW9uc0NvbnRleHQsICJhZGREZXBlbmRlbmN5T3B0aW9ucyIsIGFkZERlcGVuZGVuY3lPcHRpb25zKQorCitAY29uZgorZGVmIGNoZWNrRGVwZW5kZW5jeShzZWxmLCBuYW1lLCAqKmt3KToKKyAgICByb290ID0ga3cuZ2V0KCdwYXRoJywgZ2V0YXR0cihPcHRpb25zLm9wdGlvbnMsICd3aXRoXyVzJyAlIG5hbWUpKQorICAgIGt3Wydtc2cnXSA9IGt3LmdldCgnbXNnJywgJ0NoZWNraW5nIGZvciAlcyBsaWJyYXJ5JyAlIG5hbWUpCisgICAga3dbJ3VzZWxpYl9zdG9yZSddID0ga3cuZ2V0KCd1c2VsaWJfc3RvcmUnLCBuYW1lLnVwcGVyKCkpCisgICAga3dbJ2RlZmluZV9uYW1lJ10gPSBrdy5nZXQoJ2RlZmluZV9uYW1lJywgJ0hBVkVfJXMnICUga3dbJ3VzZWxpYl9zdG9yZSddKQorICAgIGt3WydtYW5kYXRvcnknXSA9IGt3LmdldCgnbWFuZGF0b3J5JywgVHJ1ZSkKKworICAgIGlmIHJvb3Q6CisgICAgICAgIGlzT2sgPSBzZWxmLmNoZWNrX2N4eChpbmNsdWRlcz0iJXMvaW5jbHVkZSIgJSByb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicGF0aD0iJXMvbGliIiAlIHJvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3KQorICAgIGVsc2U6CisgICAgICAgIGlzT2sgPSBzZWxmLmNoZWNrX2N4eCgqKmt3KQorCisgICAgaWYgaXNPazoKKyAgICAgICAgc2VsZi5lbnZba3dbJ2RlZmluZV9uYW1lJ11dID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvLndhZi10b29scy9kb3h5Z2VuLnB5IGIvLndhZi10b29scy9kb3h5Z2VuLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjOGM3MGIKLS0tIC9kZXYvbnVsbAorKysgYi8ud2FmLXRvb2xzL2RveHlnZW4ucHkKQEAgLTAsMCArMSwyMTQgQEAKKyMhIC91c3IvYmluL2VudiBweXRob24KKyMgZW5jb2Rpbmc6IFVURi04CisjIFRob21hcyBOYWd5IDIwMDgtMjAxMCAoaXRhKQorCisiIiIKKworRG94eWdlbiBzdXBwb3J0CisKK1ZhcmlhYmxlcyBwYXNzZWQgdG8gYmxkKCk6CisqIGRveHlmaWxlIC0tIHRoZSBEb3h5ZmlsZSB0byB1c2UKKworV2hlbiB1c2luZyB0aGlzIHRvb2wsIHRoZSB3c2NyaXB0IHdpbGwgbG9vayBsaWtlOgorCisJZGVmIG9wdGlvbnMob3B0KToKKwkJb3B0LmxvYWQoJ2RveHlnZW4nKQorCisJZGVmIGNvbmZpZ3VyZShjb25mKToKKwkJY29uZi5sb2FkKCdkb3h5Z2VuJykKKwkJIyBjaGVjayBjb25mLmVudi5ET1hZR0VOLCBpZiBpdCBpcyBtYW5kYXRvcnkKKworCWRlZiBidWlsZChibGQpOgorCQlpZiBibGQuZW52LkRPWFlHRU46CisJCQlibGQoZmVhdHVyZXM9ImRveHlnZW4iLCBkb3h5ZmlsZT0nRG94eWZpbGUnLCAuLi4pCisKKyAgICAgICAgZGVmIGRveHlnZW4oYmxkKToKKwkJaWYgYmxkLmVudi5ET1hZR0VOOgorCQkJYmxkKGZlYXR1cmVzPSJkb3h5Z2VuIiwgZG94eWZpbGU9J0RveHlmaWxlJywgLi4uKQorIiIiCisKK2Zyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaGNhc2UKK2ltcG9ydCBvcywgb3MucGF0aCwgcmUsIHN0YXQKK2Zyb20gd2FmbGliIGltcG9ydCBUYXNrLCBVdGlscywgTm9kZSwgTG9ncywgRXJyb3JzLCBCdWlsZAorZnJvbSB3YWZsaWIuVGFza0dlbiBpbXBvcnQgZmVhdHVyZQorCitET1hZX1NUUiA9ICciJHtET1hZR0VOfSIgLSAnCitET1hZX0ZNVFMgPSAnaHRtbCBsYXRleCBtYW4gcmZ0IHhtbCcuc3BsaXQoKQorRE9YWV9GSUxFX1BBVFRFUk5TID0gJyouJyArICcgKi4nLmpvaW4oJycnCitjIGNjIGN4eCBjcHAgYysrIGphdmEgaWkgaXh4IGlwcCBpKysgaW5sIGggaGggaHh4IGhwcCBoKysgaWRsIG9kbCBjcyBwaHAgcGhwMworaW5jIG0gbW0gcHkgZjkwYyBjYyBjeHggY3BwIGMrKyBqYXZhIGlpIGl4eCBpcHAgaSsrIGlubCBoIGhoIGh4eAorJycnLnNwbGl0KCkpCisKK3JlX3JsID0gcmUuY29tcGlsZSgnXFxcXFxyKlxuJywgcmUuTVVMVElMSU5FKQorcmVfbmwgPSByZS5jb21waWxlKCdccipcbicsIHJlLk0pCitkZWYgcGFyc2VfZG94eSh0eHQpOgorCXRibCA9IHt9CisJdHh0ICAgPSByZV9ybC5zdWIoJycsIHR4dCkKKwlsaW5lcyA9IHJlX25sLnNwbGl0KHR4dCkKKwlmb3IgeCBpbiBsaW5lczoKKwkJeCA9IHguc3RyaXAoKQorCQlpZiBub3QgeCBvciB4LnN0YXJ0c3dpdGgoJyMnKSBvciB4LmZpbmQoJz0nKSA8IDA6CisJCQljb250aW51ZQorCQlpZiB4LmZpbmQoJys9JykgPj0gMDoKKwkJCXRtcCA9IHguc3BsaXQoJys9JykKKwkJCWtleSA9IHRtcFswXS5zdHJpcCgpCisJCQlpZiBrZXkgaW4gdGJsOgorCQkJCXRibFtrZXldICs9ICcgJyArICcrPScuam9pbih0bXBbMTpdKS5zdHJpcCgpCisJCQllbHNlOgorCQkJCXRibFtrZXldID0gJys9Jy5qb2luKHRtcFsxOl0pLnN0cmlwKCkKKwkJZWxzZToKKwkJCXRtcCA9IHguc3BsaXQoJz0nKQorCQkJdGJsW3RtcFswXS5zdHJpcCgpXSA9ICc9Jy5qb2luKHRtcFsxOl0pLnN0cmlwKCkKKwlyZXR1cm4gdGJsCisKK2NsYXNzIGRveHlnZW4oVGFzay5UYXNrKToKKwl2YXJzICA9IFsnRE9YWUdFTicsICdET1hZRkxBR1MnXQorCWNvbG9yID0gJ0JMVUUnCisKKwlkZWYgcnVubmFibGVfc3RhdHVzKHNlbGYpOgorCQknJycKKwkJc2VsZi5wYXJzIGFyZSBwb3B1bGF0ZWQgaW4gcnVubmFibGVfc3RhdHVzIC0gYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nCisJCXJ1biAqYmVmb3JlKiBib3RoIHNlbGYucGFycyAiY29uc3VtZXJzIiAtIHNjYW4oKSBhbmQgcnVuKCkKKworCQlzZXQgb3V0cHV0X2RpciAobm9kZSkgZm9yIHRoZSBvdXRwdXQKKwkJJycnCisKKwkJZm9yIHggaW4gc2VsZi5ydW5fYWZ0ZXI6CisJCQlpZiBub3QgeC5oYXNydW46CisJCQkJcmV0dXJuIFRhc2suQVNLX0xBVEVSCisKKwkJaWYgbm90IGdldGF0dHIoc2VsZiwgJ3BhcnMnLCBOb25lKToKKwkJCXR4dCA9IHNlbGYuaW5wdXRzWzBdLnJlYWQoKQorCQkJc2VsZi5wYXJzID0gcGFyc2VfZG94eSh0eHQpCisJCQlpZiBub3Qgc2VsZi5wYXJzLmdldCgnT1VUUFVUX0RJUkVDVE9SWScpOgorCQkJCXNlbGYucGFyc1snT1VUUFVUX0RJUkVDVE9SWSddID0gc2VsZi5pbnB1dHNbMF0ucGFyZW50LmdldF9ibGQoKS5hYnNwYXRoKCkKKworCQkJIyBPdmVycmlkZSB3aXRoIGFueSBwYXJhbWV0ZXJzIHBhc3NlZCB0byB0aGUgdGFzayBnZW5lcmF0b3IKKwkJCWlmIGdldGF0dHIoc2VsZi5nZW5lcmF0b3IsICdwYXJzJywgTm9uZSk6CisJCQkJZm9yIGssIHYgaW4gc2VsZi5nZW5lcmF0b3IucGFycy5pdGVyaXRlbXMoKToKKwkJCQkJc2VsZi5wYXJzW2tdID0gdgorCisJCQlzZWxmLmRveHlfaW5wdXRzID0gZ2V0YXR0cihzZWxmLCAnZG94eV9pbnB1dHMnLCBbXSkKKwkJCWlmIG5vdCBzZWxmLnBhcnMuZ2V0KCdJTlBVVCcpOgorCQkJCXNlbGYuZG94eV9pbnB1dHMuYXBwZW5kKHNlbGYuaW5wdXRzWzBdLnBhcmVudCkKKwkJCWVsc2U6CisJCQkJZm9yIGkgaW4gc2VsZi5wYXJzLmdldCgnSU5QVVQnKS5zcGxpdCgpOgorCQkJCQlpZiBvcy5wYXRoLmlzYWJzKGkpOgorCQkJCQkJbm9kZSA9IHNlbGYuZ2VuZXJhdG9yLmJsZC5yb290LmZpbmRfbm9kZShpKQorCQkJCQllbHNlOgorCQkJCQkJbm9kZSA9IHNlbGYuZ2VuZXJhdG9yLnBhdGguZmluZF9ub2RlKGkpCisJCQkJCWlmIG5vdCBub2RlOgorCQkJCQkJc2VsZi5nZW5lcmF0b3IuYmxkLmZhdGFsKCdDb3VsZCBub3QgZmluZCB0aGUgZG94eWdlbiBpbnB1dCAlcicgJSBpKQorCQkJCQlzZWxmLmRveHlfaW5wdXRzLmFwcGVuZChub2RlKQorCisJCWlmIG5vdCBnZXRhdHRyKHNlbGYsICdvdXRwdXRfZGlyJywgTm9uZSk6CisJCQlibGQgPSBzZWxmLmdlbmVyYXRvci5ibGQKKwkJCSMgRmlyc3QgdHJ5IHRvIGZpbmQgYW4gYWJzb2x1dGUgcGF0aCwgdGhlbiBmaW5kIG9yIGRlY2xhcmUgYSByZWxhdGl2ZSBwYXRoCisJCQlzZWxmLm91dHB1dF9kaXIgPSBibGQucm9vdC5maW5kX2RpcihzZWxmLnBhcnNbJ09VVFBVVF9ESVJFQ1RPUlknXSkKKwkJCWlmIG5vdCBzZWxmLm91dHB1dF9kaXI6CisJCQkJc2VsZi5vdXRwdXRfZGlyID0gYmxkLnBhdGguZmluZF9vcl9kZWNsYXJlKHNlbGYucGFyc1snT1VUUFVUX0RJUkVDVE9SWSddKQorCisJCXNlbGYuc2lnbmF0dXJlKCkKKwkJcmV0dXJuIFRhc2suVGFzay5ydW5uYWJsZV9zdGF0dXMoc2VsZikKKworCWRlZiBzY2FuKHNlbGYpOgorCQlleGNsdWRlX3BhdHRlcm5zID0gc2VsZi5wYXJzLmdldCgnRVhDTFVERV9QQVRURVJOUycsJycpLnNwbGl0KCkKKwkJZmlsZV9wYXR0ZXJucyA9IHNlbGYucGFycy5nZXQoJ0ZJTEVfUEFUVEVSTlMnLCcnKS5zcGxpdCgpCisJCWlmIG5vdCBmaWxlX3BhdHRlcm5zOgorCQkJZmlsZV9wYXR0ZXJucyA9IERPWFlfRklMRV9QQVRURVJOUworCQlpZiBzZWxmLnBhcnMuZ2V0KCdSRUNVUlNJVkUnKSA9PSAnWUVTJzoKKwkJCWZpbGVfcGF0dGVybnMgPSBbIioqLyVzIiAlIHBhdHRlcm4gZm9yIHBhdHRlcm4gaW4gZmlsZV9wYXR0ZXJuc10KKwkJbm9kZXMgPSBbXQorCQluYW1lcyA9IFtdCisJCWZvciBub2RlIGluIHNlbGYuZG94eV9pbnB1dHM6CisJCQlpZiBvcy5wYXRoLmlzZGlyKG5vZGUuYWJzcGF0aCgpKToKKwkJCQlmb3IgbSBpbiBub2RlLmFudF9nbG9iKGluY2w9ZmlsZV9wYXR0ZXJucywgZXhjbD1leGNsdWRlX3BhdHRlcm5zKToKKwkJCQkJbm9kZXMuYXBwZW5kKG0pCisJCQllbHNlOgorCQkJCW5vZGVzLmFwcGVuZChub2RlKQorCQlyZXR1cm4gKG5vZGVzLCBuYW1lcykKKworCWRlZiBydW4oc2VsZik6CisJCWRjdCA9IHNlbGYucGFycy5jb3B5KCkKKwkJZGN0WydJTlBVVCddID0gJyAnLmpvaW4oWyciJXMiJyAlIHguYWJzcGF0aCgpIGZvciB4IGluIHNlbGYuZG94eV9pbnB1dHNdKQorCQljb2RlID0gJ1xuJy5qb2luKFsnJXMgPSAlcycgJSAoeCwgZGN0W3hdKSBmb3IgeCBpbiBzZWxmLnBhcnNdKQorCQljb2RlID0gY29kZS5lbmNvZGUoKSAjIGZvciBweXRob24gMworCQkjZm10ID0gRE9YWV9TVFIgJSAoc2VsZi5pbnB1dHNbMF0ucGFyZW50LmFic3BhdGgoKSkKKwkJY21kID0gVXRpbHMuc3Vic3RfdmFycyhET1hZX1NUUiwgc2VsZi5lbnYpCisJCWVudiA9IHNlbGYuZW52LmVudiBvciBOb25lCisJCXByb2MgPSBVdGlscy5zdWJwcm9jZXNzLlBvcGVuKGNtZCwgc2hlbGw9VHJ1ZSwgc3RkaW49VXRpbHMuc3VicHJvY2Vzcy5QSVBFLCBlbnY9ZW52LCBjd2Q9c2VsZi5nZW5lcmF0b3IuYmxkLnBhdGguZ2V0X2JsZCgpLmFic3BhdGgoKSkKKwkJcHJvYy5jb21tdW5pY2F0ZShjb2RlKQorCQlyZXR1cm4gcHJvYy5yZXR1cm5jb2RlCisKKwlkZWYgcG9zdF9ydW4oc2VsZik6CisJCW5vZGVzID0gc2VsZi5vdXRwdXRfZGlyLmFudF9nbG9iKCcqKi8qJywgcXVpZXQ9VHJ1ZSkKKwkJZm9yIHggaW4gbm9kZXM6CisJCQl4LnNpZyA9IFV0aWxzLmhfZmlsZSh4LmFic3BhdGgoKSkKKwkJc2VsZi5vdXRwdXRzICs9IG5vZGVzCisJCXJldHVybiBUYXNrLlRhc2sucG9zdF9ydW4oc2VsZikKKworY2xhc3MgdGFyKFRhc2suVGFzayk6CisJInF1aWNrIHRhciBjcmVhdGlvbiIKKwlydW5fc3RyID0gJyR7VEFSfSAke1RBUk9QVFN9ICR7VEdUfSAke1NSQ30nCisJY29sb3IgICA9ICdSRUQnCisJYWZ0ZXIgICA9IFsnZG94eWdlbiddCisJZGVmIHJ1bm5hYmxlX3N0YXR1cyhzZWxmKToKKwkJZm9yIHggaW4gZ2V0YXR0cihzZWxmLCAnaW5wdXRfdGFza3MnLCBbXSk6CisJCQlpZiBub3QgeC5oYXNydW46CisJCQkJcmV0dXJuIFRhc2suQVNLX0xBVEVSCisKKwkJaWYgbm90IGdldGF0dHIoc2VsZiwgJ3Rhcl9kb25lX2FkZGluZycsIE5vbmUpOgorCQkJIyBleGVjdXRlIHRoaXMgb25seSBvbmNlCisJCQlzZWxmLnRhcl9kb25lX2FkZGluZyA9IFRydWUKKwkJCWZvciB4IGluIGdldGF0dHIoc2VsZiwgJ2lucHV0X3Rhc2tzJywgW10pOgorCQkJCXNlbGYuc2V0X2lucHV0cyh4Lm91dHB1dHMpCisJCQlpZiBub3Qgc2VsZi5pbnB1dHM6CisJCQkJcmV0dXJuIFRhc2suU0tJUF9NRQorCQlyZXR1cm4gVGFzay5UYXNrLnJ1bm5hYmxlX3N0YXR1cyhzZWxmKQorCisJZGVmIF9fc3RyX18oc2VsZik6CisJCXRndF9zdHIgPSAnICcuam9pbihbYS5uaWNlX3BhdGgoc2VsZi5lbnYpIGZvciBhIGluIHNlbGYub3V0cHV0c10pCisJCXJldHVybiAnJXM6ICVzXG4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCB0Z3Rfc3RyKQorCitAZmVhdHVyZSgnZG94eWdlbicpCitkZWYgcHJvY2Vzc19kb3h5KHNlbGYpOgorCWlmIG5vdCBnZXRhdHRyKHNlbGYsICdkb3h5ZmlsZScsIE5vbmUpOgorCQlzZWxmLmdlbmVyYXRvci5ibGQuZmF0YWwoJ25vIGRveHlmaWxlPz8nKQorCisJbm9kZSA9IHNlbGYuZG94eWZpbGUKKwlpZiBub3QgaXNpbnN0YW5jZShub2RlLCBOb2RlLk5vZGUpOgorCQlub2RlID0gc2VsZi5wYXRoLmZpbmRfcmVzb3VyY2Uobm9kZSkKKwlpZiBub3Qgbm9kZToKKwkJcmFpc2UgVmFsdWVFcnJvcignZG94eWdlbiBmaWxlIG5vdCBmb3VuZCcpCisKKwkjIHRoZSB0YXNrIGluc3RhbmNlCisJZHNrID0gc2VsZi5jcmVhdGVfdGFzaygnZG94eWdlbicsIG5vZGUpCisKKwlpZiBnZXRhdHRyKHNlbGYsICdkb3h5X3RhcicsIE5vbmUpOgorCQl0c2sgPSBzZWxmLmNyZWF0ZV90YXNrKCd0YXInKQorCQl0c2suaW5wdXRfdGFza3MgPSBbZHNrXQorCQl0c2suc2V0X291dHB1dHMoc2VsZi5wYXRoLmZpbmRfb3JfZGVjbGFyZShzZWxmLmRveHlfdGFyKSkKKwkJaWYgc2VsZi5kb3h5X3Rhci5lbmRzd2l0aCgnYnoyJyk6CisJCQl0c2suZW52WydUQVJPUFRTJ10gPSBbJ2NqZiddCisJCWVsaWYgc2VsZi5kb3h5X3Rhci5lbmRzd2l0aCgnZ3onKToKKwkJCXRzay5lbnZbJ1RBUk9QVFMnXSA9IFsnY3pmJ10KKwkJZWxzZToKKwkJCXRzay5lbnZbJ1RBUk9QVFMnXSA9IFsnY2YnXQorCitkZWYgY29uZmlndXJlKGNvbmYpOgorCScnJworCUNoZWNrIGlmIGRveHlnZW4gYW5kIHRhciBjb21tYW5kcyBhcmUgcHJlc2VudCBpbiB0aGUgc3lzdGVtCisKKwlJZiB0aGUgY29tbWFuZHMgYXJlIHByZXNlbnQsIHRoZW4gY29uZi5lbnYuRE9YWUdFTiBhbmQgY29uZi5lbnYuVEFSCisJdmFyaWFibGVzIHdpbGwgYmUgc2V0LiBEZXRlY3Rpb24gY2FuIGJlIGNvbnRyb2xsZWQgYnkgc2V0dGluZyBET1hZR0VOIGFuZAorCVRBUiBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcy4KKwknJycKKworCWNvbmYuZmluZF9wcm9ncmFtKCdkb3h5Z2VuJywgdmFyPSdET1hZR0VOJywgbWFuZGF0b3J5PUZhbHNlKQorCWNvbmYuZmluZF9wcm9ncmFtKCd0YXInLCB2YXI9J1RBUicsIG1hbmRhdG9yeT1GYWxzZSkKKworIyBkb3h5Z2VuIGRvY3MKK2Zyb20gd2FmbGliLkJ1aWxkIGltcG9ydCBCdWlsZENvbnRleHQKK2NsYXNzIGRveHkoQnVpbGRDb250ZXh0KToKKyAgICBjbWQgPSAiZG94eWdlbiIKKyAgICBmdW4gPSAiZG94eWdlbiIKZGlmZiAtLWdpdCBhLy53YWYtdG9vbHMvcGNoLnB5IGIvLndhZi10b29scy9wY2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhjYzVkZQotLS0gL2Rldi9udWxsCisrKyBiLy53YWYtdG9vbHMvcGNoLnB5CkBAIC0wLDAgKzEsMTQ4IEBACisjISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIGVuY29kaW5nOiB1dGYtOAorIyBBbGV4YW5kZXIgQWZhbmFzeWV2IChVQ0xBKSwgMjAxNAorCisiIiIKK0VuYWJsZSBwcmVjb21waWxlZCBDKysgaGVhZGVyIHN1cHBvcnQgKGN1cnJlbnRseSBvbmx5IGNsYW5nKysgYW5kIGcrKyBhcmUgc3VwcG9ydGVkKQorCitUbyB1c2UgdGhpcyB0b29sLCB3c2NyaXB0IHNob3VsZCBsb29rIGxpa2U6CisKKwlkZWYgb3B0aW9ucyhvcHQpOgorCQlvcHQubG9hZCgncGNoJykKKwkJIyBUaGlzIHdpbGwgYWRkIGAtLXdpdGgtcGNoYCBjb25maWd1cmUgb3B0aW9uLgorCQkjIFVubGVzcyAtLXdpdGgtcGNoIGR1cmluZyBjb25maWd1cmUgc3RhZ2Ugc3BlY2lmaWVkLCB0aGUgcHJlY29tcGlsZWQgaGVhZGVyIHN1cHBvcnQgaXMgZGlzYWJsZWQKKworCWRlZiBjb25maWd1cmUoY29uZik6CisJCWNvbmYubG9hZCgncGNoJykKKwkJIyB0aGlzIHdpbGwgc2V0IGNvbmYuZW52LldJVEhfUENIIGlmIC0td2l0aC1wY2ggaXMgc3BlY2lmaWVkIGFuZCB0aGUgc3VwcG9ydGVkIGNvbXBpbGVyIGlzIHVzZWQKKwkJIyBVbmxlc3MgY29uZi5lbnYuV0lUSF9QQ0ggaXMgc2V0LCB0aGUgcHJlY29tcGlsZWQgaGVhZGVyIHN1cHBvcnQgaXMgZGlzYWJsZWQKKworCWRlZiBidWlsZChibGQpOgorCQlibGQoZmVhdHVyZXM9J2N4eCBwY2gnLAorCQkJdGFyZ2V0PSdwcmVjb21waWxlZC1oZWFkZXJzJywKKwkJCW5hbWU9J3ByZWNvbXBpbGVkLWhlYWRlcnMnLAorCQkJaGVhZGVycz0nYS5oIGIuaCBjLmgnLCAjIGhlYWRlcnMgdG8gcHJlLWNvbXBpbGUgaW50byBgcHJlY29tcGlsZWQtaGVhZGVyc2AKKworCQkJIyBPdGhlciBwYXJhbWV0ZXJzIHRvIGNvbXBpbGUgcHJlY29tcGlsZWQgaGVhZGVycworCQkJIyBpbmNsdWRlcz0uLi4sCisJCQkjIGV4cG9ydF9pbmNsdWRlcz0uLi4sCisJCQkjIHVzZT0uLi4sCisJCQkjIC4uLgorCisJCQkjIEV4cG9ydGVkIHBhcmFtZXRlcnMgd2lsbCBiZSBwcm9wYWdhdGVkIGV2ZW4gaWYgcHJlY29tcGlsZWQgaGVhZGVycyBhcmUgZGlzYWJsZWQKKwkJKQorCisJCWJsZCgKKwkJCXRhcmdldD0ndGVzdCcsCisJCQlmZWF0dXJlcz0nY3h4IGN4eHByb2dyYW0nLAorCQkJc291cmNlPSdhLmNwcCBiLmNwcCBkLmNwcCBtYWluLmNwcCcsCisJCQl1c2U9J3ByZWNvbXBpbGVkLWhlYWRlcnMnLAorCQkpCisKKwkJIyBvcgorCisJCWJsZCgKKwkJCXRhcmdldD0ndGVzdCcsCisJCQlmZWF0dXJlcz0ncGNoIGN4eCBjeHhwcm9ncmFtJywKKwkJCXNvdXJjZT0nYS5jcHAgYi5jcHAgZC5jcHAgbWFpbi5jcHAnLAorCQkJaGVhZGVycz0nYS5oIGIuaCBjLmgnLAorCQkpCisKK05vdGUgdGhhdCBwcmVjb21waWxlZCBoZWFkZXIgbXVzdCBoYXZlIG11bHRpcGxlIGluY2x1c2lvbiBndWFyZHMuICBJZiB0aGUgZ3VhcmRzIGFyZSBtaXNzaW5nLCBhbnkgYmVuZWZpdCBvZiBwcmVjb21waWxlZCBoZWFkZXIgd2lsbCBiZSB2b2lkZWQgYW5kIGNvbXBpbGF0aW9uIG1heSBmYWlsIGluIHNvbWUgY2FzZXMuCisiIiIKKworaW1wb3J0IG9zCitmcm9tIHdhZmxpYiBpbXBvcnQgVGFzaywgVGFza0dlbiwgTG9ncywgVXRpbHMKK2Zyb20gd2FmbGliLlRvb2xzIGltcG9ydCBjX3ByZXByb2MsIGN4eAorCisKK1BDSF9DT01QSUxFUl9PUFRJT05TID0geworCSdjbGFuZysrJzogW1snLWluY2x1ZGUnXSwgJy5wY2gnLCBbJy14JywgJ2MrKy1oZWFkZXInXV0sCisJJ2crKyc6ICAgICBbWyctaW5jbHVkZSddLCAnLmdjaCcsIFsnLXgnLCAnYysrLWhlYWRlciddXSwKK30KKworCitkZWYgb3B0aW9ucyhvcHQpOgorCW9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtcGNoJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwgZGVzdD0nd2l0aF9wY2gnLCBoZWxwPScnJ1RyeSB0byB1c2UgcHJlY29tcGlsZWQgaGVhZGVyIHRvIHNwZWVkIHVwIGNvbXBpbGF0aW9uIChvbmx5IGcrKyBhbmQgY2xhbmcrKyknJycpCisKK2RlZiBjb25maWd1cmUoY29uZik6CisJaWYgKGNvbmYub3B0aW9ucy53aXRoX3BjaCBhbmQgY29uZi5lbnZbJ0NPTVBJTEVSX0NYWCddIGluIFBDSF9DT01QSUxFUl9PUFRJT05TLmtleXMoKSk6CisJCWNvbmYuZW52LldJVEhfUENIID0gVHJ1ZQorCQlmbGFncyA9IFBDSF9DT01QSUxFUl9PUFRJT05TW2NvbmYuZW52WydDT01QSUxFUl9DWFgnXV0KKwkJY29uZi5lbnYuQ1hYUENIX0YgPSBmbGFnc1swXQorCQljb25mLmVudi5DWFhQQ0hfRVhUID0gZmxhZ3NbMV0KKwkJY29uZi5lbnYuQ1hYUENIX0ZMQUdTID0gZmxhZ3NbMl0KKworCitAVGFza0dlbi5mZWF0dXJlKCdwY2gnKQorQFRhc2tHZW4uYmVmb3JlKCdwcm9jZXNzX3NvdXJjZScpCitkZWYgYXBwbHlfcGNoKHNlbGYpOgorCWlmIG5vdCBzZWxmLmVudi5XSVRIX1BDSDoKKwkJcmV0dXJuCisKKwlpZiBnZXRhdHRyKHNlbGYuYmxkLCAncGNoX3Rhc2tzJywgTm9uZSkgaXMgTm9uZToKKwkJc2VsZi5ibGQucGNoX3Rhc2tzID0ge30KKworCWlmIGdldGF0dHIoc2VsZiwgJ2hlYWRlcnMnLCBOb25lKSBpcyBOb25lOgorCQlyZXR1cm4KKworCXNlbGYuaGVhZGVycyA9IHNlbGYudG9fbm9kZXMoc2VsZi5oZWFkZXJzKQorCisJaWYgZ2V0YXR0cihzZWxmLCAnbmFtZScsIE5vbmUpOgorCQl0cnk6CisJCQl0YXNrID0gc2VsZi5ibGQucGNoX3Rhc2tzW3NlbGYubmFtZV0KKwkJCXNlbGYuYmxkLmZhdGFsKCJEdXBsaWNhdGVkICdwY2gnIHRhc2sgd2l0aCBuYW1lICVyIiAlIHNlbGYubmFtZSkKKwkJZXhjZXB0IEtleUVycm9yOgorCQkJcGFzcworCisJb3V0ID0gJyVzLiVkJXMnICUgKHNlbGYudGFyZ2V0LCBzZWxmLmlkeCwgc2VsZi5lbnZbJ0NYWFBDSF9FWFQnXSkKKwlvdXQgPSBzZWxmLnBhdGguZmluZF9vcl9kZWNsYXJlKG91dCkKKwl0YXNrID0gc2VsZi5jcmVhdGVfdGFzaygnZ2NoeCcsIHNlbGYuaGVhZGVycywgb3V0KQorCisJIyB0YXJnZXQgc2hvdWxkIGJlIGFuIGFic29sdXRlIHBhdGggb2YgYG91dGAsIGJ1dCB3aXRob3V0IHByZWNvbXBpbGVkIGhlYWRlciBleHRlbnNpb24KKwl0YXNrLnRhcmdldCA9IG91dC5hYnNwYXRoKClbOi1sZW4ob3V0LnN1ZmZpeCgpKV0KKworCXNlbGYucGNoX3Rhc2sgPSB0YXNrCisJaWYgZ2V0YXR0cihzZWxmLCAnbmFtZScsIE5vbmUpOgorCQlzZWxmLmJsZC5wY2hfdGFza3Nbc2VsZi5uYW1lXSA9IHRhc2sKKworQFRhc2tHZW4uZmVhdHVyZSgnY3h4JykKK0BUYXNrR2VuLmFmdGVyX21ldGhvZCgncHJvY2Vzc19zb3VyY2UnLCAncHJvcGFnYXRlX3VzZWxpYl92YXJzJykKK2RlZiBhZGRfcGNoKHNlbGYpOgorCWlmIG5vdCAoc2VsZi5lbnZbJ1dJVEhfUENIJ10gYW5kIGdldGF0dHIoc2VsZiwgJ3VzZScsIE5vbmUpIGFuZCBnZXRhdHRyKHNlbGYsICdjb21waWxlZF90YXNrcycsIE5vbmUpIGFuZCBnZXRhdHRyKHNlbGYuYmxkLCAncGNoX3Rhc2tzJywgTm9uZSkpOgorCQlyZXR1cm4KKworCXBjaCA9IE5vbmUKKwkjIGZpbmQgcGNoIHRhc2ssIGlmIGFueQorCisJaWYgZ2V0YXR0cihzZWxmLCAncGNoX3Rhc2snLCBOb25lKToKKwkJcGNoID0gc2VsZi5wY2hfdGFzaworCWVsc2U6CisJCWZvciB1c2UgaW4gVXRpbHMudG9fbGlzdChzZWxmLnVzZSk6CisJCQl0cnk6CisJCQkJcGNoID0gc2VsZi5ibGQucGNoX3Rhc2tzW3VzZV0KKwkJCWV4Y2VwdCBLZXlFcnJvcjoKKwkJCQlwYXNzCisKKwlpZiBwY2g6CisJCWZvciB4IGluIHNlbGYuY29tcGlsZWRfdGFza3M6CisJCQl4LmVudi5hcHBlbmRfdmFsdWUoJ0NYWEZMQUdTJywgc2VsZi5lbnZbJ0NYWFBDSF9GJ10gKyBbcGNoLnRhcmdldF0pCisKK2NsYXNzIGdjaHgoVGFzay5UYXNrKToKKwlydW5fc3RyID0gJyR7Q1hYfSAke0FSQ0hfU1Q6QVJDSH0gJHtDWFhGTEFHU30gJHtDUFBGTEFHU30gJHtDWFhQQ0hfRkxBR1N9ICR7RlJBTUVXT1JLUEFUSF9TVDpGUkFNRVdPUktQQVRIfSAke0NQUFBBVEhfU1Q6SU5DUEFUSFN9ICR7REVGSU5FU19TVDpERUZJTkVTfSAke0NYWFBDSF9GOlNSQ30gJHtDWFhfU1JDX0Z9JHtTUkNbMF0uYWJzcGF0aCgpfSAke0NYWF9UR1RfRn0ke1RHVFswXS5hYnNwYXRoKCl9JworCXNjYW4gICAgPSBjX3ByZXByb2Muc2NhbgorCWNvbG9yICAgPSAnQkxVRScKKwlleHRfb3V0PVsnLmgnXQorCisJZGVmIHJ1bm5hYmxlX3N0YXR1cyhzZWxmKToKKwkJdHJ5OgorCQkJbm9kZV9kZXBzID0gc2VsZi5nZW5lcmF0b3IuYmxkLm5vZGVfZGVwc1tzZWxmLnVpZCgpXQorCQlleGNlcHQgS2V5RXJyb3I6CisJCQlub2RlX2RlcHMgPSBbXQorCQlyZXQgPSBUYXNrLlRhc2sucnVubmFibGVfc3RhdHVzKHNlbGYpCisJCWlmIHJldCA9PSBUYXNrLlNLSVBfTUUgYW5kIHNlbGYuZW52LkNYWF9OQU1FID09ICdjbGFuZyc6CisJCQl0ID0gb3Muc3RhdChzZWxmLm91dHB1dHNbMF0uYWJzcGF0aCgpKS5zdF9tdGltZQorCQkJZm9yIG4gaW4gc2VsZi5pbnB1dHMgKyBub2RlX2RlcHM6CisJCQkJaWYgb3Muc3RhdChuLmFic3BhdGgoKSkuc3RfbXRpbWUgPiB0OgorCQkJCQlyZXR1cm4gVGFzay5SVU5fTUUKKwkJcmV0dXJuIHJldApkaWZmIC0tZ2l0IGEvLndhZi10b29scy9zcGhpbnhfYnVpbGQucHkgYi8ud2FmLXRvb2xzL3NwaGlueF9idWlsZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjFkYTZlCi0tLSAvZGV2L251bGwKKysrIGIvLndhZi10b29scy9zcGhpbnhfYnVpbGQucHkKQEAgLTAsMCArMSw3OSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIGVuY29kaW5nOiB1dGYtOAorCisjIGluc3BpcmVkIGJ5IGNvZGUgYnkgSGFucy1NYXJ0aW4gdm9uIEdhdWRlY2tlciwgMjAxMgorCitpbXBvcnQgb3MKK2Zyb20gd2FmbGliIGltcG9ydCBOb2RlLCBUYXNrLCBUYXNrR2VuLCBFcnJvcnMsIExvZ3MsIEJ1aWxkLCBVdGlscworCitjbGFzcyBzcGhpbnhfYnVpbGQoVGFzay5UYXNrKToKKyAgICBjb2xvciA9ICdCTFVFJworICAgIHJ1bl9zdHIgPSAnJHtTUEhJTlhfQlVJTER9IC1EICR7VkVSU0lPTn0gLUQgJHtSRUxFQVNFfSAtcSAtYiAke0JVSUxERVJOQU1FfSAtZCAke0RPQ1RSRUVESVJ9ICR7U1JDRElSfSAke09VVERJUn0nCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgZW52ID0gc2VsZi5lbnYKKyAgICAgICAgc3JjX3N0ciA9ICcgJy5qb2luKFthLnBhdGhfZnJvbShhLmN0eC5sYXVuY2hfbm9kZSgpKSBmb3IgYSBpbiBzZWxmLmlucHV0c10pCisgICAgICAgIHRndF9zdHIgPSAnICcuam9pbihbYS5wYXRoX2Zyb20oYS5jdHgubGF1bmNoX25vZGUoKSkgZm9yIGEgaW4gc2VsZi5vdXRwdXRzXSkKKyAgICAgICAgaWYgc2VsZi5vdXRwdXRzOiBzZXAgPSAnIC0+ICcKKyAgICAgICAgZWxzZTogc2VwID0gJycKKyAgICAgICAgcmV0dXJuJyVzIFslc106ICVzJXMlc1xuJyUoc2VsZi5fX2NsYXNzX18uX19uYW1lX18ucmVwbGFjZSgnX3Rhc2snLCcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lbnZbJ0JVSUxERVJOQU1FJ10sIHNyY19zdHIsIHNlcCwgdGd0X3N0cikKKworQFRhc2tHZW4uZXh0ZW5zaW9uKCcucHknLCAnLnJzdCcpCitkZWYgc2lnX2hvb2soc2VsZiwgbm9kZSk6CisgICAgbm9kZS5zaWc9VXRpbHMuaF9maWxlKG5vZGUuYWJzcGF0aCgpKQorCitAVGFza0dlbi5mZWF0dXJlKCJzcGhpbngiKQorQFRhc2tHZW4uYmVmb3JlX21ldGhvZCgicHJvY2Vzc19zb3VyY2UiKQorZGVmIGFwcGx5X3NwaGlueChzZWxmKToKKyAgICAiIiJTZXQgdXAgdGhlIHRhc2sgZ2VuZXJhdG9yIHdpdGggYSBTcGhpbnggaW5zdGFuY2UgYW5kIGNyZWF0ZSBhIHRhc2suIiIiCisKKyAgICBpbnB1dHMgPSBbXQorICAgIGZvciBpIGluIFV0aWxzLnRvX2xpc3Qoc2VsZi5zb3VyY2UpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpLCBOb2RlLk5vZGUpOgorICAgICAgICAgICAgbm9kZSA9IHNlbGYucGF0aC5maW5kX25vZGUobm9kZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5vZGUgPSBpCisgICAgICAgIGlmIG5vdCBub2RlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignWyVzXSBmaWxlIG5vdCBmb3VuZCcgJSBpKQorICAgICAgICBpbnB1dHMuYXBwZW5kKG5vZGUpCisKKyAgICB0YXNrID0gc2VsZi5jcmVhdGVfdGFzaygnc3BoaW54X2J1aWxkJywgaW5wdXRzKQorCisgICAgY29uZiA9IHNlbGYucGF0aC5maW5kX25vZGUoc2VsZi5jb25maWcpCisgICAgdGFzay5pbnB1dHMuYXBwZW5kKGNvbmYpCisKKyAgICBjb25mZGlyID0gY29uZi5wYXJlbnQuYWJzcGF0aCgpCisgICAgYnVpbGRlcm5hbWUgPSBnZXRhdHRyKHNlbGYsICJidWlsZGVyIiwgImh0bWwiKQorICAgIHNyY2RpciA9IGdldGF0dHIoc2VsZiwgInNyY2RpciIsIGNvbmZkaXIpCisgICAgb3V0ZGlyID0gc2VsZi5wYXRoLmZpbmRfb3JfZGVjbGFyZShnZXRhdHRyKHNlbGYsICJvdXRkaXIiLCBidWlsZGVybmFtZSkpLmdldF9ibGQoKQorICAgIGRvY3RyZWVkaXIgPSBnZXRhdHRyKHNlbGYsICJkb2N0cmVlZGlyIiwgb3MucGF0aC5qb2luKG91dGRpci5hYnNwYXRoKCksICIuZG9jdHJlZXMiKSkKKworICAgIHRhc2suZW52WydCVUlMREVSTkFNRSddID0gYnVpbGRlcm5hbWUKKyAgICB0YXNrLmVudlsnU1JDRElSJ10gPSBzcmNkaXIKKyAgICB0YXNrLmVudlsnRE9DVFJFRURJUiddID0gZG9jdHJlZWRpcgorICAgIHRhc2suZW52WydPVVRESVInXSA9IG91dGRpci5hYnNwYXRoKCkKKyAgICB0YXNrLmVudlsnVkVSU0lPTiddID0gInZlcnNpb249JXMiICUgc2VsZi5WRVJTSU9OCisgICAgdGFzay5lbnZbJ1JFTEVBU0UnXSA9ICJyZWxlYXNlPSVzIiAlIHNlbGYuVkVSU0lPTgorCisgICAgaW1wb3J0IGltcAorICAgIGNvbmZEYXRhID0gaW1wLmxvYWRfc291cmNlKCdzcGhpbnhfY29uZicsIGNvbmYuYWJzcGF0aCgpKQorCisgICAgaWYgYnVpbGRlcm5hbWUgPT0gIm1hbiI6CisgICAgICAgIGZvciBpIGluIGNvbmZEYXRhLm1hbl9wYWdlczoKKyAgICAgICAgICAgIHRhcmdldCA9IG91dGRpci5maW5kX29yX2RlY2xhcmUoJyVzLiVkJyAlIChpWzFdLCBpWzRdKSkKKyAgICAgICAgICAgIHRhc2sub3V0cHV0cy5hcHBlbmQodGFyZ2V0KQorCisgICAgICAgICAgICBpZiBzZWxmLmluc3RhbGxfcGF0aDoKKyAgICAgICAgICAgICAgICBzZWxmLmJsZC5pbnN0YWxsX2ZpbGVzKCIlcy9tYW4lZC8iICUgKHNlbGYuaW5zdGFsbF9wYXRoLCBpWzRdKSwgdGFyZ2V0KQorICAgIGVsc2U6CisgICAgICAgIHRhc2sub3V0cHV0cy5hcHBlbmQob3V0ZGlyKQorCitkZWYgY29uZmlndXJlKGNvbmYpOgorICAgIGNvbmYuZmluZF9wcm9ncmFtKCdzcGhpbngtYnVpbGQnLCB2YXI9J1NQSElOWF9CVUlMRCcsIG1hbmRhdG9yeT1GYWxzZSkKKworIyBzcGhpbnggZG9jcworZnJvbSB3YWZsaWIuQnVpbGQgaW1wb3J0IEJ1aWxkQ29udGV4dAorY2xhc3Mgc3BoaW54KEJ1aWxkQ29udGV4dCk6CisgICAgY21kID0gInNwaGlueCIKKyAgICBmdW4gPSAic3BoaW54IgpkaWZmIC0tZ2l0IGEvLndhZi10b29scy9zcWxpdGUzLnB5IGIvLndhZi10b29scy9zcWxpdGUzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZGQ1N2MKLS0tIC9kZXYvbnVsbAorKysgYi8ud2FmLXRvb2xzL3NxbGl0ZTMucHkKQEAgLTAsMCArMSw0MSBAQAorIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorIyBlbmNvZGluZzogdXRmLTgKKworZnJvbSB3YWZsaWIgaW1wb3J0IE9wdGlvbnMKK2Zyb20gd2FmbGliLkNvbmZpZ3VyZSBpbXBvcnQgY29uZgorCitkZWYgb3B0aW9ucyhvcHQpOgorICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtc3FsaXRlMycsIHR5cGU9J3N0cmluZycsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICBkZXN0PSd3aXRoX3NxbGl0ZTMnLCBoZWxwPScnJ1BhdGggdG8gU1FMaXRlMywgZS5nLiwgL3Vzci9sb2NhbCcnJykKKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LXNxbGl0ZS1sb2NraW5nJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICBkZXN0PSd3aXRoX3NxbGl0ZV9sb2NraW5nJywKKyAgICAgICAgICAgICAgICAgICBoZWxwPScnJ0Rpc2FibGUgZmlsZXN5c3RlbSBsb2NraW5nIGluIHNxbGl0ZTMgZGF0YWJhc2UgJycnCisgICAgICAgICAgICAgICAgICAgICAgICAnJycodXNlIHVuaXgtZG90IGxvY2tpbmcgbWVjaGFuaXNtIGluc3RlYWQpLiAnJycKKyAgICAgICAgICAgICAgICAgICAgICAgICcnJ1RoaXMgb3B0aW9uIG1heSBiZSBuZWNlc3NhcnkgaWYgaG9tZSBkaXJlY3RvcnkgaXMgaG9zdGVkIG9uIE5GUy4nJycpCisKK0Bjb25mCitkZWYgY2hlY2tfc3FsaXRlMyhzZWxmLCAqaywgKiprdyk6CisgICAgcm9vdCA9IGsgYW5kIGtbMF0gb3Iga3cuZ2V0KCdwYXRoJywgTm9uZSkgb3IgT3B0aW9ucy5vcHRpb25zLndpdGhfc3FsaXRlMworICAgIG1hbmRhdG9yeSA9IGt3LmdldCgnbWFuZGF0b3J5JywgVHJ1ZSkKKyAgICB2YXIgPSBrdy5nZXQoJ3VzZWxpYl9zdG9yZScsICdTUUxJVEUzJykKKworICAgIGlmIHJvb3Q6CisgICAgICAgIHNlbGYuY2hlY2tfY3h4KGxpYj0nc3FsaXRlMycsCisgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nQ2hlY2tpbmcgZm9yIFNRTGl0ZTMgbGlicmFyeScsCisgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9uYW1lPSdIQVZFXyVzJyAlIHZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgdXNlbGliX3N0b3JlPXZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgbWFuZGF0b3J5PW1hbmRhdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9IiVzL2luY2x1ZGUiICUgcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgbGlicGF0aD0iJXMvbGliIiAlIHJvb3QpCisgICAgZWxzZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jaGVja19jZmcocGFja2FnZT0nc3FsaXRlMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPVsnLS1jZmxhZ3MnLCAnLS1saWJzJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VsaWJfc3RvcmU9J1NRTElURTMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuZGF0b3J5PVRydWUpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfY3h4KGxpYj0nc3FsaXRlMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9J0NoZWNraW5nIGZvciBTUUxpdGUzIGxpYnJhcnknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX25hbWU9J0hBVkVfJXMnICUgdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlbGliX3N0b3JlPXZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdG9yeT1tYW5kYXRvcnkpCmRpZmYgLS1naXQgYS9zcmMvbmRucy10bHYuaCBiL3NyYy9uZG5zLXRsdi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODUzNWE1Li4wMDAwMDAwCi0tLSBhL3NyYy9uZG5zLXRsdi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotCi0KLQotbmFtZXNwYWNlIG5kbiB7Ci1uYW1lc3BhY2UgdGx2IHsKLW5hbWVzcGFjZSBuZG5zIHsKLQllbnVtIHsKLQkJVHlwZSA9IDIwMDAsCi0JCUZyZXNzbmVzcyA9IDIwMDEsCi0JCUNvbnRlbnRCbG9iID0gMjAwMiwKLQkJTnVtYmVyT2ZSUkRhdGEgPSAyMDAzLAotCQlSUkRhdGEgPSAyMDA0Ci0JfTsvL2VudW0KLX0vL25hbWVzcGFjZSBuZG5zCi19Ly9uYW1lc3BhY2UgdGx2Ci19Ly9uYW1lc3BhY2UgbmRuCmRpZmYgLS1naXQgYS9zcmMvbmRucy10bHYuaHBwIGIvc3JjL25kbnMtdGx2LmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzQzYTk2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL25kbnMtdGx2LmhwcApAQCAtMCwwICsxLDM0IEBACisvKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWw7IC0qLSAqLworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBORE5TIChOYW1lZCBEYXRhIE5ldHdvcmtpbmcgRG9tYWluIE5hbWUgU2VydmljZSkuCisgKiBTZWUgQVVUSE9SUy5tZCBmb3IgY29tcGxldGUgbGlzdCBvZiBORE5TIGF1dGhvcnMgYW5kIGNvbnRyaWJ1dG9ycy4KKyAqCisgKiBORE5TIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zCisgKiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgKiBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIE5ETlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOworICogd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogTkROUywgZS5nLiwgaW4gQ09QWUlORy5tZCBmaWxlLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKK25hbWVzcGFjZSBuZG4geworbmFtZXNwYWNlIG5kbnMgeworbmFtZXNwYWNlIHRsdiB7CisKK2VudW0geworICBUeXBlID0gMjAwMCwKKyAgRnJlc3NuZXNzID0gMjAwMSwKKyAgQ29udGVudEJsb2IgPSAyMDAyLAorICBOdW1iZXJPZlJSRGF0YSA9IDIwMDMsCisgIFJSRGF0YSA9IDIwMDQKK307CisKK30gLy8gbmFtZXNwYWNlIHRsdgorfSAvLyBuYW1lc3BhY2UgbmRucworfSAvLyBuYW1lc3BhY2UgbmRuCmRpZmYgLS1naXQgYS9zcmMvcXVlcnkuY3BwIGIvc3JjL3F1ZXJ5LmNwcAppbmRleCA4NjFkMWM4Li43NTZkZTQwIDEwMDY0NAotLS0gYS9zcmMvcXVlcnkuY3BwCisrKyBiL3NyYy9xdWVyeS5jcHAKQEAgLTEsNTMgKzEsNjMgQEAKLS8qCi0gKiBxdWVyeS5jcHAKKy8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbDsgLSotICovCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxNCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgogICoKLSAqICBDcmVhdGVkIG9uOiAxOCBKdWwsIDIwMTQKLSAqICAgICAgQXV0aG9yOiBzaG9jaworICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTkROUyAoTmFtZWQgRGF0YSBOZXR3b3JraW5nIERvbWFpbiBOYW1lIFNlcnZpY2UpLgorICogU2VlIEFVVEhPUlMubWQgZm9yIGNvbXBsZXRlIGxpc3Qgb2YgTkROUyBhdXRob3JzIGFuZCBjb250cmlidXRvcnMuCisgKgorICogTkROUyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcworICogb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBORE5TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsKKyAqIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIE5ETlMsIGUuZy4sIGluIENPUFlJTkcubWQgZmlsZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICAqLwogCi0jaW5jbHVkZSAicXVlcnkuaCIKKyNpbmNsdWRlICJxdWVyeS5ocHAiCiAKIG5hbWVzcGFjZSBuZG4geworbmFtZXNwYWNlIG5kbnMgewogCiBRdWVyeTo6UXVlcnkoKQotOiBtX2ludGVyZXN0TGlmZXRpbWUodGltZTo6bWlsbGlzZWNvbmRzKDQwMDApKQorICA6IG1faW50ZXJlc3RMaWZldGltZSh0aW1lOjptaWxsaXNlY29uZHMoNDAwMCkpCiB7Ci0JLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBjb25zdHJ1Y3RvciBzdHViCi0KIH0KIAogUXVlcnk6On5RdWVyeSgpIHsKLQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGRlc3RydWN0b3Igc3R1YgogfQogCiAKIHZvaWQKIFF1ZXJ5Ojpmcm9tV2lyZShjb25zdCBOYW1lICZuYW1lLCBjb25zdCBJbnRlcmVzdCAmaW50ZXJlc3QpCiB7Ci0gICAgTmFtZSBpbnRlcmVzdE5hbWU7Ci0gICAgaW50ZXJlc3ROYW1lID0gaW50ZXJlc3QuZ2V0TmFtZSgpOworICBOYW1lIGludGVyZXN0TmFtZTsKKyAgaW50ZXJlc3ROYW1lID0gaW50ZXJlc3QuZ2V0TmFtZSgpOwogCi0gICAgaW50IHF0ZmxhZyA9IC0xOwotICAgIHNpemVfdCBsZW4gPSBpbnRlcmVzdE5hbWUuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGk9MDsgaTxsZW47IGkrKykKKyAgaW50IHF0ZmxhZyA9IC0xOworICBzaXplX3QgbGVuID0gaW50ZXJlc3ROYW1lLnNpemUoKTsKKyAgZm9yIChzaXplX3QgaT0wOyBpPGxlbjsgaSsrKQogICAgIHsKLSAgICAJc3RyaW5nIGNvbXAgPSBpbnRlcmVzdE5hbWUuZ2V0KGkpLnRvRXNjYXBlZFN0cmluZygpOwotICAgIAlpZiAoY29tcCA9PSBuZG46OnRvU3RyaW5nKFF1ZXJ5VHlwZTo6RE5TKSB8fCBjb21wID09IG5kbjo6dG9TdHJpbmcoUXVlcnlUeXBlOjpETlNfUikpCi0gICAgCXsKLSAgICAJCXF0ZmxhZyA9IGk7Ci0gICAgCQlicmVhazsKLSAgICAJfQorICAgICAgc3RkOjpzdHJpbmcgY29tcCA9IGludGVyZXN0TmFtZS5nZXQoaSkudG9VcmkoKTsKKyAgICAgIGlmIChjb21wID09IHRvU3RyaW5nKFFVRVJZX0ROUykgfHwgY29tcCA9PSB0b1N0cmluZyhRVUVSWV9ETlNfUikpCisgICAgICAgIHsKKyAgICAgICAgICBxdGZsYWcgPSBpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfS8vZm9yCiAKLSAgICBpZiAocXRmbGFnID09IC0xKQorICBpZiAocXRmbGFnID09IC0xKQogICAgIHsKLSAgICAJY2Vycjw8IlRoZXJlIGlzIG5vIFF1ZXJ5VHlwZSBpbiB0aGUgSW50ZXJlc3QgTmFtZTogIjw8aW50ZXJlc3ROYW1lPDxlbmRsOwotICAgIAlyZXR1cm47CisgICAgICBzdGQ6OmNlcnIgPDwgIlRoZXJlIGlzIG5vIFF1ZXJ5VHlwZSBpbiB0aGUgSW50ZXJlc3QgTmFtZTogIiA8PCBpbnRlcmVzdE5hbWUgPDwgc3RkOjplbmRsOworICAgICAgcmV0dXJuOwogICAgIH0KLSAgICB0aGlzLT5tX3F1ZXJ5VHlwZSA9IG5kbjo6dG9RdWVyeVR5cGUoaW50ZXJlc3ROYW1lLmdldChxdGZsYWcpLnRvRXNjYXBlZFN0cmluZygpKTsKLSAgICB0aGlzLT5tX3JyVHlwZSA9IG5kbjo6dG9SUlR5cGUoaW50ZXJlc3ROYW1lLmdldChsZW4tMSkudG9Fc2NhcGVkU3RyaW5nKCkpOwotICAgIHRoaXMtPm1fYXV0aG9yaXR5Wm9uZSA9IGludGVyZXN0TmFtZS5nZXRQcmVmaXgocXRmbGFnKTsgLy90aGUgRE5TL0ROUy1SIGlzIG5vdCBpbmNsdWRlZAotICAgIHRoaXMtPm1faW50ZXJlc3RMaWZldGltZSA9IGludGVyZXN0LmdldEludGVyZXN0TGlmZXRpbWUoKTsKKyAgdGhpcy0+bV9xdWVyeVR5cGUgPSB0b1F1ZXJ5VHlwZShpbnRlcmVzdE5hbWUuZ2V0KHF0ZmxhZykudG9VcmkoKSk7CisgIHRoaXMtPm1fcnJUeXBlID0gdG9SUlR5cGUoaW50ZXJlc3ROYW1lLmdldChsZW4tMSkudG9VcmkoKSk7CisgIHRoaXMtPm1fYXV0aG9yaXR5Wm9uZSA9IGludGVyZXN0TmFtZS5nZXRQcmVmaXgocXRmbGFnKTsgLy90aGUgRE5TL0ROUy1SIGlzIG5vdCBpbmNsdWRlZAorICB0aGlzLT5tX2ludGVyZXN0TGlmZXRpbWUgPSBpbnRlcmVzdC5nZXRJbnRlcmVzdExpZmV0aW1lKCk7CiAKIH0KIApAQCAtNTUsOCArNjUsOCBAQAogc2l6ZV90CiBRdWVyeTo6d2lyZUVuY29kZShFbmNvZGluZ0ltcGw8VD4mIGJsb2NrKSBjb25zdAogewotCXNpemVfdCB0b3RhbExlbmd0aCA9IDA7Ci0JdG90YWxMZW5ndGggKz0gMDsKKyAgc2l6ZV90IHRvdGFsTGVuZ3RoID0gMDsKKyAgdG90YWxMZW5ndGggKz0gMDsKIAogCiAgIHNpemVfdCB0b3RhbExlbmd0aCA9IHByZXBlbmRCeXRlQXJyYXlCbG9jayhibG9jaywgdGx2OjpCeXRlcywKQEAgLTcxLDE1ICs4MSwxNiBAQAogSW50ZXJlc3QKIFF1ZXJ5Ojp0b1dpcmUoKSBjb25zdAogewotCU5hbWUgbmFtZSA9IHRoaXMtPm1fYXV0aG9yaXR5Wm9uZTsKLQluYW1lLmFwcGVuZChuZG46OnRvU3RyaW5nKHRoaXMtPm1fcXVlcnlUeXBlKSk7Ci0JbmFtZS5hcHBlbmQodGhpcy0+bV9yckxhYmVsKTsKLQluYW1lLmFwcGVuZChuZG46OnRvU3RyaW5nKHRoaXMtPm1fcnJUeXBlKSk7Ci0JU2VsZWN0b3JzIHNlbGVjdG9yOwotCS8vc2VsZWN0b3Iuc2V0TXVzdEJlRnJlc2godHJ1ZSk7CisgIE5hbWUgbmFtZSA9IHRoaXMtPm1fYXV0aG9yaXR5Wm9uZTsKKyAgbmFtZS5hcHBlbmQodG9TdHJpbmcodGhpcy0+bV9xdWVyeVR5cGUpKTsKKyAgbmFtZS5hcHBlbmQodGhpcy0+bV9yckxhYmVsKTsKKyAgbmFtZS5hcHBlbmQodG9TdHJpbmcodGhpcy0+bV9yclR5cGUpKTsKKyAgU2VsZWN0b3JzIHNlbGVjdG9yOworICAvL3NlbGVjdG9yLnNldE11c3RCZUZyZXNoKHRydWUpOwogCi0JSW50ZXJlc3QgaW50ZXJlc3QgPSBJbnRlcmVzdChuYW1lLCBzZWxlY3RvciwgLTEsIHRoaXMtPm1faW50ZXJlc3RMaWZldGltZSk7Ci0JcmV0dXJuIGludGVyZXN0OworICBJbnRlcmVzdCBpbnRlcmVzdCA9IEludGVyZXN0KG5hbWUsIHNlbGVjdG9yLCAtMSwgdGhpcy0+bV9pbnRlcmVzdExpZmV0aW1lKTsKKyAgcmV0dXJuIGludGVyZXN0OwogfQogCi19IC8qIG5hbWVzcGFjZSBuZG4gKi8KK30gLy8gbmFtZXNwYWNlIG5kbnMKK30gLy8gbmFtZXNwYWNlIG5kbgpkaWZmIC0tZ2l0IGEvc3JjL3F1ZXJ5LmggYi9zcmMvcXVlcnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAxZWZhMC4uMDAwMDAwMAotLS0gYS9zcmMvcXVlcnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi0vKgotICogcXVlcnkuaAotICoKLSAqICBDcmVhdGVkIG9uOiAxOCBKdWwsIDIwMTQKLSAqICAgICAgQXV0aG9yOiBzaG9jawotICovCi0KLSNpZm5kZWYgUVVFUllfSF8KLSNkZWZpbmUgUVVFUllfSF8KLQotI2luY2x1ZGUgPG5kbi1jeHgvbmFtZS5ocHA+Ci0jaW5jbHVkZSA8cnIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotbmFtZXNwYWNlIG5kbiB7Ci0KLQotZW51bSBjbGFzcyBRdWVyeVR5cGUKLXsKLQlETlMsCi0JRE5TX1IsCi19OwotCi1zdGF0aWMgY29uc3Qgc3RyaW5nCi10b1N0cmluZyhRdWVyeVR5cGUgcVR5cGUpIGNvbnN0Ci17Ci0Jc3RyaW5nIGxhYmVsOwotCXN3aXRjaCAocVR5cGUpCi0JewotCQljYXNlIFF1ZXJ5VHlwZTo6RE5TOgotCQkJbGFiZWwgPSAiRE5TIjsKLQkJCWJyZWFrOwotCQljYXNlIFF1ZXJ5VHlwZTo6RE5TX1I6Ci0JCQlsYWJlbCA9ICJETlMtUiI7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWxhYmVsID0gIkRlZmF1bHQiOwotCQkJYnJlYWs7Ci0JfQotCXJldHVybiBsYWJlbDsKLQotfQotCi1zdGF0aWMgY29uc3QgUXVlcnlUeXBlCi10b1F1ZXJ5VHlwZShzdHJpbmcgc3RyKQotewotCVF1ZXJ5VHlwZSBhdHlwZTsKLQlzd2l0Y2ggKHN0cikKLQl7Ci0JCWNhc2UgIkROUyI6Ci0JCQlhdHlwZSA9IFF1ZXJ5VHlwZTo6RE5TOwotCQkJYnJlYWs7Ci0JCWNhc2UgIkROUy1SIjoKLQkJCWF0eXBlID0gUXVlcnlUeXBlOjpETlNfUjsKLQkJCWJyZWFrOwotCQlkZWZhbHV0OgotCQkJYXR5cGUgPSBRdWVyeVR5cGU6OkROUzsKLQkJCWJyZWFrOwotCX0KLQlyZXR1cm4gYXR5cGU7Ci19Ci0KLQotCi0KLWNsYXNzIFF1ZXJ5IHsKLXB1YmxpYzoKLQlRdWVyeSgpOwotCi0JdmlydHVhbCB+UXVlcnkoKTsKLQotCi0KLQljb25zdCBOYW1lJiBnZXRBdXRob3JpdHlab25lKCkgY29uc3QgewotCQlyZXR1cm4gbV9hdXRob3JpdHlab25lOwotCX0KLQotCXZvaWQgc2V0QXV0aG9yaXR5Wm9uZShjb25zdCBOYW1lJiBhdXRob3JpdHlab25lKSB7Ci0JCW1fYXV0aG9yaXR5Wm9uZSA9IGF1dGhvcml0eVpvbmU7Ci0JfQotCi0JdGltZTo6bWlsbGlzZWNvbmRzIGdldEludGVyZXN0TGlmZXRpbWUoKSBjb25zdCB7Ci0JCXJldHVybiBtX2ludGVyZXN0TGlmZXRpbWU7Ci0JfQotCi0Jdm9pZCBzZXRJbnRlcmVzdExpZmV0aW1lKHRpbWU6Om1pbGxpc2Vjb25kcyBpbnRlcmVzdExpZmV0aW1lKSB7Ci0JCW1faW50ZXJlc3RMaWZldGltZSA9IGludGVyZXN0TGlmZXRpbWU7Ci0JfQotCi0JZW51bSBRdWVyeVR5cGUgZ2V0UXVlcnlUeXBlKCkgY29uc3QgewotCQlyZXR1cm4gbV9xdWVyeVR5cGU7Ci0JfQotCi0Jdm9pZCBzZXRRdWVyeVR5cGUoZW51bSBRdWVyeVR5cGUgcXVlcnlUeXBlKSB7Ci0JCW1fcXVlcnlUeXBlID0gcXVlcnlUeXBlOwotCX0KLQotCWNvbnN0IE5hbWUmIGdldFJyTGFiZWwoKSBjb25zdCB7Ci0JCXJldHVybiBtX3JyTGFiZWw7Ci0JfQotCi0Jdm9pZCBzZXRSckxhYmVsKGNvbnN0IE5hbWUmIHJyTGFiZWwpIHsKLQkJbV9yckxhYmVsID0gcnJMYWJlbDsKLQl9Ci0KLQljb25zdCBSUlR5cGUmIGdldFJyVHlwZSgpIGNvbnN0IHsKLQkJcmV0dXJuIG1fcnJUeXBlOwotCX0KLQotCXZvaWQgc2V0UnJUeXBlKGNvbnN0IFJSVHlwZSYgcnJUeXBlKSB7Ci0JCW1fcnJUeXBlID0gcnJUeXBlOwotCX0KLQotcHJpdmF0ZToKLXRlbXBsYXRlPGJvb2wgVD4KLXNpemVfdAotd2lyZUVuY29kZShFbmNvZGluZ0ltcGw8VD4gJiBibG9jaykgY29uc3Q7Ci0KLXB1YmxpYzoKLQotY29uc3QgQmxvY2smCi13aXJlRW5jb2RlKCkgY29uc3Q7Ci0KLXZvaWQKLXdpcmVEZWNvZGUoY29uc3QgQmxvY2smIHdpcmUpOwotCi0KLUludGVyZXN0Ci10b1dpcmUoKSBjb25zdDsKLQotdm9pZAotZnJvbVdpcmUoY29uc3QgTmFtZSAmbmFtZSwgY29uc3QgSW50ZXJlc3QmIGludGVyZXN0KTsKLQotCi0KLQotCi1wdWJsaWM6Ci0JTmFtZSBtX2F1dGhvcml0eVpvbmU7Ci0JZW51bSBRdWVyeVR5cGUgbV9xdWVyeVR5cGU7Ci0JdGltZTo6bWlsbGlzZWNvbmRzIG1faW50ZXJlc3RMaWZldGltZTsKLQlOYW1lIG1fcnJMYWJlbDsKLQllbnVtIFJSVHlwZSBtX3JyVHlwZTsKLQotCW11dGFibGUgQmxvY2sgbV93aXJlOwotCS8vYm9vbCBoYXNXaXJlOwotfTsKLQotfSAvKiBuYW1lc3BhY2UgbmRuICovCi0KLSNlbmRpZiAvKiBRVUVSWV9IXyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3F1ZXJ5LmhwcCBiL3NyYy9xdWVyeS5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhlZjQ2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9xdWVyeS5ocHAKQEAgLTAsMCArMSwxNTIgQEAKKy8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbDsgLSotICovCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxNCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5ETlMgKE5hbWVkIERhdGEgTmV0d29ya2luZyBEb21haW4gTmFtZSBTZXJ2aWNlKS4KKyAqIFNlZSBBVVRIT1JTLm1kIGZvciBjb21wbGV0ZSBsaXN0IG9mIE5ETlMgYXV0aG9ycyBhbmQgY29udHJpYnV0b3JzLgorICoKKyAqIE5ETlMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMKKyAqIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogTkROUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7CisgKiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiBORE5TLCBlLmcuLCBpbiBDT1BZSU5HLm1kIGZpbGUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBORE5TX1FVRVJZX0hQUAorI2RlZmluZSBORE5TX1FVRVJZX0hQUAorCisjaW5jbHVkZSAicnIuaHBwIgorCisjaW5jbHVkZSA8bmRuLWN4eC9uYW1lLmhwcD4KKworbmFtZXNwYWNlIG5kbiB7CituYW1lc3BhY2UgbmRucyB7CisKK2NsYXNzIFF1ZXJ5Cit7CitwdWJsaWM6CisKKyAgZW51bSBRdWVyeVR5cGUgeworICAgIFFVRVJZX0ROUywKKyAgICBRVUVSWV9ETlNfUgorICB9OworCisgIFF1ZXJ5KCk7CisKKyAgdmlydHVhbCB+UXVlcnkoKTsKKworICBjb25zdCBOYW1lJiBnZXRBdXRob3JpdHlab25lKCkgY29uc3QgeworICAgIHJldHVybiBtX2F1dGhvcml0eVpvbmU7CisgIH0KKworICB2b2lkIHNldEF1dGhvcml0eVpvbmUoY29uc3QgTmFtZSYgYXV0aG9yaXR5Wm9uZSkgeworICAgIG1fYXV0aG9yaXR5Wm9uZSA9IGF1dGhvcml0eVpvbmU7CisgIH0KKworICB0aW1lOjptaWxsaXNlY29uZHMgZ2V0SW50ZXJlc3RMaWZldGltZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gbV9pbnRlcmVzdExpZmV0aW1lOworICB9CisKKyAgdm9pZCBzZXRJbnRlcmVzdExpZmV0aW1lKHRpbWU6Om1pbGxpc2Vjb25kcyBpbnRlcmVzdExpZmV0aW1lKSB7CisgICAgbV9pbnRlcmVzdExpZmV0aW1lID0gaW50ZXJlc3RMaWZldGltZTsKKyAgfQorCisgIGVudW0gUXVlcnlUeXBlIGdldFF1ZXJ5VHlwZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gbV9xdWVyeVR5cGU7CisgIH0KKworICB2b2lkIHNldFF1ZXJ5VHlwZShlbnVtIFF1ZXJ5VHlwZSBxdWVyeVR5cGUpIHsKKyAgICBtX3F1ZXJ5VHlwZSA9IHF1ZXJ5VHlwZTsKKyAgfQorCisgIGNvbnN0IE5hbWUmIGdldFJyTGFiZWwoKSBjb25zdCB7CisgICAgcmV0dXJuIG1fcnJMYWJlbDsKKyAgfQorCisgIHZvaWQgc2V0UnJMYWJlbChjb25zdCBOYW1lJiByckxhYmVsKSB7CisgICAgbV9yckxhYmVsID0gcnJMYWJlbDsKKyAgfQorCisgIGNvbnN0IFJSVHlwZSYgZ2V0UnJUeXBlKCkgY29uc3QgeworICAgIHJldHVybiBtX3JyVHlwZTsKKyAgfQorCisgIHZvaWQgc2V0UnJUeXBlKGNvbnN0IFJSVHlwZSYgcnJUeXBlKSB7CisgICAgbV9yclR5cGUgPSByclR5cGU7CisgIH0KKworICBzdGF0aWMgc3RkOjpzdHJpbmcKKyAgdG9TdHJpbmcoUXVlcnlUeXBlIHFUeXBlKQorICB7CisgICAgc3RkOjpzdHJpbmcgbGFiZWw7CisgICAgc3dpdGNoIChxVHlwZSkKKyAgICAgIHsKKyAgICAgIGNhc2UgUVVFUllfRE5TOgorICAgICAgICBsYWJlbCA9ICJETlMiOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgUVVFUllfRE5TX1I6CisgICAgICAgIGxhYmVsID0gIkROUy1SIjsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBsYWJlbCA9ICJEZWZhdWx0IjsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgcmV0dXJuIGxhYmVsOworCisgIH0KKworICBzdGF0aWMgY29uc3QgUXVlcnlUeXBlCisgIHRvUXVlcnlUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpCisgIHsKKyAgICBRdWVyeVR5cGUgYXR5cGU7CisgICAgaWYgKHN0ciA9PSAiRE5TIikgeworICAgICAgYXR5cGUgPSBRVUVSWV9ETlM7CisgICAgfQorICAgIGVsc2UgaWYgKHN0ciA9PSAiRE5TLVIiKSB7CisgICAgICBhdHlwZSA9IFFVRVJZX0ROU19SOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGF0eXBlID0gUVVFUllfRE5TOworICAgIH0KKyAgICByZXR1cm4gYXR5cGU7CisgIH0KKworcHJpdmF0ZToKKyAgdGVtcGxhdGU8Ym9vbCBUPgorICBzaXplX3QKKyAgd2lyZUVuY29kZShFbmNvZGluZ0ltcGw8VD4gJiBibG9jaykgY29uc3Q7CisKK3B1YmxpYzoKKworICBjb25zdCBCbG9jayYKKyAgd2lyZUVuY29kZSgpIGNvbnN0OworCisgIHZvaWQKKyAgd2lyZURlY29kZShjb25zdCBCbG9jayYgd2lyZSk7CisKKworICBJbnRlcmVzdAorICB0b1dpcmUoKSBjb25zdDsKKworICB2b2lkCisgIGZyb21XaXJlKGNvbnN0IE5hbWUgJm5hbWUsIGNvbnN0IEludGVyZXN0JiBpbnRlcmVzdCk7CisKK3B1YmxpYzoKKyAgTmFtZSBtX2F1dGhvcml0eVpvbmU7CisgIGVudW0gUXVlcnlUeXBlIG1fcXVlcnlUeXBlOworICB0aW1lOjptaWxsaXNlY29uZHMgbV9pbnRlcmVzdExpZmV0aW1lOworICBOYW1lIG1fcnJMYWJlbDsKKyAgZW51bSBSUlR5cGUgbV9yclR5cGU7CisKKyAgbXV0YWJsZSBCbG9jayBtX3dpcmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBuZG5zCit9IC8vIG5hbWVzcGFjZSBuZG4KKworI2VuZGlmIC8vIE5ETlNfUVVFUllfSFBQCmRpZmYgLS1naXQgYS9zcmMvcmVzb2x2ZXIuY3BwIGIvc3JjL3Jlc29sdmVyLmNwcAppbmRleCAzOWRhNjNkLi5mYjlkZDEzIDEwMDY0NAotLS0gYS9zcmMvcmVzb2x2ZXIuY3BwCisrKyBiL3NyYy9yZXNvbHZlci5jcHAKQEAgLTEsMjYgKzEsNDUgQEAKLS8qCi0gKiByZXNvbHZlci5jcHAKKy8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbDsgLSotICovCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxNCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgogICoKLSAqICBDcmVhdGVkIG9uOiAxOCBKdWwsIDIwMTQKLSAqICAgICAgQXV0aG9yOiBzaG9jaworICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTkROUyAoTmFtZWQgRGF0YSBOZXR3b3JraW5nIERvbWFpbiBOYW1lIFNlcnZpY2UpLgorICogU2VlIEFVVEhPUlMubWQgZm9yIGNvbXBsZXRlIGxpc3Qgb2YgTkROUyBhdXRob3JzIGFuZCBjb250cmlidXRvcnMuCisgKgorICogTkROUyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcworICogb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBORE5TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsKKyAqIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIE5ETlMsIGUuZy4sIGluIENPUFlJTkcubWQgZmlsZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICAqLwogCi0jaW5jbHVkZSAicmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJyZXNvbHZlci5ocHAiCiAKIG5hbWVzcGFjZSBuZG4geworbmFtZXNwYWNlIG5kbnMgewogCi1SZXNvbHZlcjo6UmVzb2x2ZXIoKSB7Ci0JLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBjb25zdHJ1Y3RvciBzdHViCitSZXNvbHZlcjo6UmVzb2x2ZXIoKQorewogCiB9CiAKLVJlc29sdmVyOjp+UmVzb2x2ZXIoKSB7Ci0JLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBkZXN0cnVjdG9yIHN0dWIKK1Jlc29sdmVyOjp+UmVzb2x2ZXIoKQorewogfQotY29uc3QgUlIgUmVzb2x2ZXI6Oml0ZXJhdGl2ZWx5UmVzb2x2ZShjb25zdCBzdHJpbmcgZG9tYWluLCBjb25zdCBzdHJpbmcgbmFtZSl7Ci0JcmV0dXJuICJleCI7CisKK2NvbnN0IFJSIFJlc29sdmVyOjppdGVyYXRpdmVseVJlc29sdmUoY29uc3Qgc3RkOjpzdHJpbmcmIGRvbWFpbiwgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpCit7CisgIHJldHVybiAiZXgiOwogfQotY29uc3QgUlIgUmVzb2x2ZXI6OnJlY3VzaXZlbHlSZXNvbHZlKGNvbnN0IHN0cmluZyBkb21haW4sIGNvbnN0IHN0cmluZyBuYW1lKXsKLQlyZXR1cm4gImV4IjsKKworY29uc3QgUlIgUmVzb2x2ZXI6OnJlY3VzaXZlbHlSZXNvbHZlKGNvbnN0IHN0ZDo6c3RyaW5nJiBkb21haW4sIGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKQoreworICByZXR1cm4gImV4IjsKIH0KLX0gLyogbmFtZXNwYWNlIG5kbiAqLworCit9IC8vIG5hbWVzcGFjZSBuZG5zCit9IC8vIG5hbWVzcGFjZSBuZG4KZGlmZiAtLWdpdCBhL3NyYy9yZXNvbHZlci5oIGIvc3JjL3Jlc29sdmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkY2RkNmQuLjAwMDAwMDAKLS0tIGEvc3JjL3Jlc29sdmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogcmVzb2x2ZXIuaAotICoKLSAqICBDcmVhdGVkIG9uOiAxOCBKdWwsIDIwMTQKLSAqICAgICAgQXV0aG9yOiBzaG9jawotICovCi0KLSNpZm5kZWYgUkVTT0xWRVJfSF8KLSNkZWZpbmUgUkVTT0xWRVJfSF8KLQotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlICJyci5oIgotCi0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBuZG4gewotCi1jbGFzcyBSZXNvbHZlciB7Ci1wdWJsaWM6Ci0JUmVzb2x2ZXIoKTsKLQl2aXJ0dWFsIH5SZXNvbHZlcigpOwotCi0KLQljb25zdCBSUiBpdGVyYXRpdmVseVJlc29sdmUoY29uc3Qgc3RyaW5nIGRvbWFpbiwgY29uc3Qgc3RyaW5nIG5hbWUpOwotCWNvbnN0IFJSIHJlY3VzaXZlbHlSZXNvbHZlKGNvbnN0IHN0cmluZyBkb21haW4sIGNvbnN0IHN0cmluZyBuYW1lKTsKLQotfTsKLQotfSAvKiBuYW1lc3BhY2UgbmRuICovCi0KLSNlbmRpZiAvKiBSRVNPTFZFUl9IXyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Jlc29sdmVyLmhwcCBiL3NyYy9yZXNvbHZlci5ocHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY5MGM0MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9yZXNvbHZlci5ocHAKQEAgLTAsMCArMSw0MiBAQAorLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsOyAtKi0gKi8KKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDE0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTkROUyAoTmFtZWQgRGF0YSBOZXR3b3JraW5nIERvbWFpbiBOYW1lIFNlcnZpY2UpLgorICogU2VlIEFVVEhPUlMubWQgZm9yIGNvbXBsZXRlIGxpc3Qgb2YgTkROUyBhdXRob3JzIGFuZCBjb250cmlidXRvcnMuCisgKgorICogTkROUyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcworICogb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBORE5TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsKKyAqIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIE5ETlMsIGUuZy4sIGluIENPUFlJTkcubWQgZmlsZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaWZuZGVmIE5ETlNfUkVTT0xWRVJfSFBQCisjZGVmaW5lIE5ETlNfUkVTT0xWRVJfSFBQCisKKyNpbmNsdWRlICJyci5ocHAiCisKK25hbWVzcGFjZSBuZG4geworbmFtZXNwYWNlIG5kbnMgeworCitjbGFzcyBSZXNvbHZlciB7CitwdWJsaWM6CisgIFJlc29sdmVyKCk7CisgIHZpcnR1YWwgflJlc29sdmVyKCk7CisKKworICBjb25zdCBSUiBpdGVyYXRpdmVseVJlc29sdmUoY29uc3Qgc3RkOjpzdHJpbmcmIGRvbWFpbiwgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOworICBjb25zdCBSUiByZWN1c2l2ZWx5UmVzb2x2ZShjb25zdCBzdGQ6OnN0cmluZyYgZG9tYWluLCBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSk7CisKK307CisKK30gLy8gbmFtZXNwYWNlIG5kbnMKK30gLy8gbmFtZXNwYWNlIG5kbgorCisjZW5kaWYgLy8gTkROU19SRVNPTFZFUl9IUFAKZGlmZiAtLWdpdCBhL3NyYy9yZXNwb25zZS5jcHAgYi9zcmMvcmVzcG9uc2UuY3BwCmluZGV4IGE0Yzc3NDYuLmYwYzViMTcgMTAwNjQ0Ci0tLSBhL3NyYy9yZXNwb25zZS5jcHAKKysrIGIvc3JjL3Jlc3BvbnNlLmNwcApAQCAtMSwxMjEgKzEsMTI4IEBACi0vKgotICogcmVzcG9uc2UuY3BwCisvKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWw7IC0qLSAqLworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KICAqCi0gKiAgQ3JlYXRlZCBvbjogMTkgSnVsLCAyMDE0Ci0gKiAgICAgIEF1dGhvcjogc2hvY2sKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5ETlMgKE5hbWVkIERhdGEgTmV0d29ya2luZyBEb21haW4gTmFtZSBTZXJ2aWNlKS4KKyAqIFNlZSBBVVRIT1JTLm1kIGZvciBjb21wbGV0ZSBsaXN0IG9mIE5ETlMgYXV0aG9ycyBhbmQgY29udHJpYnV0b3JzLgorICoKKyAqIE5ETlMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMKKyAqIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogTkROUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7CisgKiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiBORE5TLCBlLmcuLCBpbiBDT1BZSU5HLm1kIGZpbGUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAgKi8KIAotI2luY2x1ZGUgInJlc3BvbnNlLmgiCi0KKyNpbmNsdWRlICJyZXNwb25zZS5ocHAiCiAKIAogbmFtZXNwYWNlIG5kbiB7CituYW1lc3BhY2UgbmRucyB7CiAKLVJlc3BvbnNlOjpSZXNwb25zZSgpIHsKLQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNvbnN0cnVjdG9yIHN0dWIKLQorUmVzcG9uc2U6OlJlc3BvbnNlKCkKK3sKIH0KIAotUmVzcG9uc2U6On5SZXNwb25zZSgpIHsKLQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGRlc3RydWN0b3Igc3R1YgorUmVzcG9uc2U6On5SZXNwb25zZSgpCit7CiB9CiAKIAotCiBEYXRhCiBSZXNwb25zZTo6dG9XaXJlKCkgY29uc3QKIHsKLQlOYW1lIG5hbWUgPSB0aGlzLT5tX3F1ZXJ5TmFtZTsKLQluYW1lLmFwcGVuZCh0aGlzLT5tX3NlcmlhbCk7CisgIE5hbWUgbmFtZSA9IHRoaXMtPm1fcXVlcnlOYW1lOworICBuYW1lLmFwcGVuZCh0aGlzLT5tX3NlcmlhbCk7CiAKLQlEYXRhIGRhdGEobmFtZSk7CisgIERhdGEgZGF0YShuYW1lKTsKIAotCWRhdGEuc2V0RnJlc2huZXNzUGVyaW9kKHRoaXMtPm1fZnJlc2huZXNzKTsKKyAgZGF0YS5zZXRGcmVzaG5lc3NQZXJpb2QodGhpcy0+bV9mcmVzaG5lc3MpOwogCi0Jc3RyaW5nIGNvbnRlbnQgPSAiIjsKKyAgc3RyaW5nIGNvbnRlbnQgPSAiIjsKIAotCXNpemVfdCB0b3RhbExlbiA9IDA7Ci0JQmxvY2sgYmxvY2sgPSBCbG9jaygpOwotCWJsb2NrLnB1c2hfYmFjawotCQkobm9uTmVnYXRpdmVJbnRlZ2VyQmxvY2sKLQkJCQkodGx2OjpuZG5zOjpUeXBlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih0aGlzLT5tX3Jlc3BvbnNlVHlwZSkpCi0JCSk7CisgIHNpemVfdCB0b3RhbExlbiA9IDA7CisgIEJsb2NrIGJsb2NrID0gQmxvY2soKTsKKyAgYmxvY2sucHVzaF9iYWNrCisgICAgKG5vbk5lZ2F0aXZlSW50ZWdlckJsb2NrCisgICAgICh0bHY6Om5kbnM6OlR5cGUsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHRoaXMtPm1fcmVzcG9uc2VUeXBlKSkKKyAgICAgKTsKIAotCWJsb2NrLnB1c2hfYmFjawotCQkJKG5vbk5lZ2F0aXZlSW50ZWdlckJsb2NrCi0JCQkJCSh0bHY6Om5kbnM6OkZyZXNzbmVzcywgdGhpcy0+bV9mcmVzaG5lc3MuY291bnQoKSkKLQkJCSk7CisgIGJsb2NrLnB1c2hfYmFjaworICAgIChub25OZWdhdGl2ZUludGVnZXJCbG9jaworICAgICAodGx2OjpuZG5zOjpGcmVzc25lc3MsIHRoaXMtPm1fZnJlc2huZXNzLmNvdW50KCkpCisgICAgICk7CiAKLQlCbG9jayBibG9jazIgPSBCbG9jayh0bHY6Om5kbnM6OkNvbnRlbnRCbG9iKTsKLQlibG9jazIucHVzaF9iYWNrCi0JCQkobm9uTmVnYXRpdmVJbnRlZ2VyQmxvY2sKLQkJCQkJKHRsdjo6bmRuczo6TnVtYmVyT2ZSUkRhdGEsIHRoaXMtPm1fbnVtYmVyT2ZSUikKLQkJCSk7CisgIEJsb2NrIGJsb2NrMiA9IEJsb2NrKHRsdjo6bmRuczo6Q29udGVudEJsb2IpOworICBibG9jazIucHVzaF9iYWNrCisgICAgKG5vbk5lZ2F0aXZlSW50ZWdlckJsb2NrCisgICAgICh0bHY6Om5kbnM6Ok51bWJlck9mUlJEYXRhLCB0aGlzLT5tX251bWJlck9mUlIpCisgICAgICk7CiAKLQlmb3IgKGludCBpPTA7IGk8dGhpcy0+bV9udW1iZXJPZlJSOyBpKyspCi0JewotCQlSUiByciA9IG1fcnJzW2ldOwotCQlibG9jazIucHVzaF9iYWNrKHJyLnRvV2lyZSgpKTsKLQl9CisgIGZvciAoaW50IGk9MDsgaTx0aGlzLT5tX251bWJlck9mUlI7IGkrKykKKyAgICB7CisgICAgICBSUiByciA9IG1fcnJzW2ldOworICAgICAgYmxvY2syLnB1c2hfYmFjayhyci50b1dpcmUoKSk7CisgICAgfQogCi0JYmxvY2sucHVzaF9iYWNrKGJsb2NrMik7CisgIGJsb2NrLnB1c2hfYmFjayhibG9jazIpOwogCi0JcmV0dXJuIGRhdGE7CisgIHJldHVybiBkYXRhOwogCiB9CiAKIHZvaWQKIFJlc3BvbnNlOjpmcm9tV2lyZShjb25zdCBJbnRlcmVzdCAmaW50ZXJlc3QsIGNvbnN0IERhdGEgJmRhdGEpCiB7Ci0gICAgTmFtZSBkYXRhTmFtZTsKLSAgICBkYXRhTmFtZSA9IGRhdGEuZ2V0TmFtZSgpOworICBOYW1lIGRhdGFOYW1lOworICBkYXRhTmFtZSA9IGRhdGEuZ2V0TmFtZSgpOwogCi0gICAgaW50IHF0ZmxhZyA9IC0xOwotICAgIHNpemVfdCBsZW4gPSBkYXRhTmFtZS5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaT0wOyBpPGxlbjsgaSsrKQorICBpbnQgcXRmbGFnID0gLTE7CisgIHNpemVfdCBsZW4gPSBkYXRhTmFtZS5zaXplKCk7CisgIGZvciAoc2l6ZV90IGk9MDsgaTxsZW47IGkrKykKICAgICB7Ci0gICAgCXN0cmluZyBjb21wID0gZGF0YU5hbWUuZ2V0KGkpLnRvRXNjYXBlZFN0cmluZygpOwotICAgIAlpZiAoY29tcCA9PSBuZG46OnRvU3RyaW5nKFF1ZXJ5VHlwZTo6RE5TKSB8fCBjb21wID09IG5kbjo6dG9TdHJpbmcoUXVlcnlUeXBlOjpETlNfUikpCi0gICAgCXsKLSAgICAJCXF0ZmxhZyA9IGk7Ci0gICAgCQlicmVhazsKLSAgICAJfQorICAgICAgc3RyaW5nIGNvbXAgPSBkYXRhTmFtZS5nZXQoaSkudG9Fc2NhcGVkU3RyaW5nKCk7CisgICAgICBpZiAoY29tcCA9PSBuZG46OnRvU3RyaW5nKFF1ZXJ5VHlwZTo6RE5TKSB8fCBjb21wID09IG5kbjo6dG9TdHJpbmcoUXVlcnlUeXBlOjpETlNfUikpCisgICAgICAgIHsKKyAgICAgICAgICBxdGZsYWcgPSBpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfS8vZm9yCiAKLSAgICBpZiAocXRmbGFnID09IC0xKQorICBpZiAocXRmbGFnID09IC0xKQogICAgIHsKLSAgICAJY2Vycjw8IlRoZXJlIGlzIG5vIFF1ZXJ5VHlwZSBpbiB0aGUgSW50ZXJlc3QgTmFtZTogIjw8ZGF0YU5hbWU8PGVuZGw7Ci0gICAgCXJldHVybjsKKyAgICAgIGNlcnI8PCJUaGVyZSBpcyBubyBRdWVyeVR5cGUgaW4gdGhlIEludGVyZXN0IE5hbWU6ICI8PGRhdGFOYW1lPDxlbmRsOworICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHRoaXMtPm1fcXVlcnlOYW1lID0gZGF0YU5hbWUuZ2V0UHJlZml4KC0xKTsKKyAgdGhpcy0+bV9xdWVyeU5hbWUgPSBkYXRhTmFtZS5nZXRQcmVmaXgoLTEpOwogCi0gICAgc3RyaW5nIGxhc3QgPSBkYXRhTmFtZS5nZXQobGVuLTEpLnRvRXNjYXBlZFN0cmluZygpOwotICAgIGlmIChuZG46OnRvUlJUeXBlKGxhc3QpID09IFJSVHlwZTo6VU5LTk9XTikKKyAgc3RyaW5nIGxhc3QgPSBkYXRhTmFtZS5nZXQobGVuLTEpLnRvRXNjYXBlZFN0cmluZygpOworICBpZiAobmRuOjp0b1JSVHlwZShsYXN0KSA9PSBSUlR5cGU6OlVOS05PV04pCiAgICAgewotICAgIAl0aGlzLT5tX3NlcmlhbCA9ICIiOworICAgICAgdGhpcy0+bV9zZXJpYWwgPSAiIjsKICAgICB9IGVsc2UKICAgICB7Ci0gICAgCXRoaXMtPm1fc2VyaWFsID0gbGFzdDsKKyAgICAgIHRoaXMtPm1fc2VyaWFsID0gbGFzdDsKICAgICB9CiAKLSAgICBCbG9jayBibG9jayA9IGRhdGEuZ2V0Q29udGVudCgpOwotICAgIHRoaXMtPm1fbnVtYmVyT2ZSUiA9IHJlYWROb25OZWdhdGl2ZUludGVnZXIoYmxvY2suZ2V0KHRsdjo6bmRuczo6TnVtYmVyT2ZSUkRhdGEpKTsKKyAgQmxvY2sgYmxvY2sgPSBkYXRhLmdldENvbnRlbnQoKTsKKyAgdGhpcy0+bV9udW1iZXJPZlJSID0gcmVhZE5vbk5lZ2F0aXZlSW50ZWdlcihibG9jay5nZXQodGx2OjpuZG5zOjpOdW1iZXJPZlJSRGF0YSkpOwogCi0gICAgQmxvY2sgYmxvY2syID0gYmxvY2suZ2V0KHRsdjo6bmRuczo6Q29udGVudEJsb2IpOwotICAgIGZvciAoaW50IGk9MDsgaTx0aGlzLT5tX251bWJlck9mUlI7IGkrKykKKyAgQmxvY2sgYmxvY2syID0gYmxvY2suZ2V0KHRsdjo6bmRuczo6Q29udGVudEJsb2IpOworICBmb3IgKGludCBpPTA7IGk8dGhpcy0+bV9udW1iZXJPZlJSOyBpKyspCiAgICAgewotICAgIAlCbG9jayBibG9jazMgPSBibG9jazIuZ2V0KHRsdjo6bmRuczo6UlJEYXRhKTsKLSAgICAJUlIgcnI7Ci0gICAgCXJyLmZyb21XaXJlKGJsb2NrMyk7Ci0gICAgCW1fcnJzLnB1c2hfYmFjayhycik7CisgICAgICBCbG9jayBibG9jazMgPSBibG9jazIuZ2V0KHRsdjo6bmRuczo6UlJEYXRhKTsKKyAgICAgIFJSIHJyOworICAgICAgcnIuZnJvbVdpcmUoYmxvY2szKTsKKyAgICAgIG1fcnJzLnB1c2hfYmFjayhycik7CiAgICAgfQogCiB9CiAKIAotfSAvKiBuYW1lc3BhY2UgbmRuICovCi0KLQotCi0KK30gLy8gbmFtZXNwYWNlIG5kbnMKK30gLy8gbmFtZXNwYWNlIG5kbgpkaWZmIC0tZ2l0IGEvc3JjL3Jlc3BvbnNlLmggYi9zcmMvcmVzcG9uc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJlMTFjNi4uMDAwMDAwMAotLS0gYS9zcmMvcmVzcG9uc2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiByZXNwb25zZS5oCi0gKgotICogIENyZWF0ZWQgb246IDE5IEp1bCwgMjAxNAotICogICAgICBBdXRob3I6IHNob2NrCi0gKi8KLQotI2lmbmRlZiBSRVNQT05TRV9IXwotI2RlZmluZSBSRVNQT05TRV9IXwotCi0jaW5jbHVkZSA8Ym9vc3QvYXNpby5ocHA+IC8vIC9vcHQvbG9jYWwvaW5jbHVkZQotI2luY2x1ZGUgPGJvb3N0L2JpbmQuaHBwPgotI2luY2x1ZGUgPGJvb3N0L2RhdGVfdGltZS9wb3NpeF90aW1lL3Bvc2l4X3RpbWUuaHBwPgotI2luY2x1ZGUgPGJvb3N0L25vbmNvcHlhYmxlLmhwcD4KLQotI2luY2x1ZGUgPG5kbi1jeHgvZmFjZS5ocHA+IC8vIC91c3IvbG9jYWwvaW5jbHVkZQotI2luY2x1ZGUgPG5kbi1jeHgvbmFtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuLWN4eC9kYXRhLmhwcD4KLQotI2luY2x1ZGUgPG5kbi1jeHgvZW5jb2RpbmcvYmxvY2staGVscGVycy5ocHA+Ci0jaW5jbHVkZSA8bmRuLWN4eC9lbmNvZGluZy9ibG9jay5ocHA+Ci0jaW5jbHVkZSA8bmRuLWN4eC9lbmNvZGluZy90bHYtbmRuZC5ocHA+Ci0KLSNpbmNsdWRlPHZlY3Rvcj4KLQotI2luY2x1ZGUgIm5kbnMtdGx2LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBuZG4gewotCi0KLQotZW51bSBjbGFzcyBSZXNwb25zZVR5cGUKLXsKLQlORE5TX1Jlc3AsCi0JTkROU19OYWNrLAotCU5ETlNfQXV0aAotfTsKLQotCi1zdGF0aWMgY29uc3Qgc3RyaW5nCi10b1N0cmluZyhSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlKSBjb25zdAotewotCXN0cmluZyBsYWJlbDsKLQlzd2l0Y2ggKHJlc3BvbnNlVHlwZSkKLQl7Ci0JCWNhc2UgUmVzcG9uc2VUeXBlOjpORE5TX1Jlc3A6Ci0JCQlsYWJlbCA9ICJORE5TIFJlc3AiOwotCQkJYnJlYWs7Ci0JCWNhc2UgUmVzcG9uc2VUeXBlOjpORE5TX05hY2s6Ci0JCQlsYWJlbCA9ICJORE5TIE5hY2siOwotCQkJYnJlYWs7Ci0JCWNhc2UgUmVzcG9uc2VUeXBlOjpORE5TX0F1dGg6Ci0JCQlsYWJlbCA9ICJORE5TIEF1dGgiOwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlsYWJlbCA9ICJEZWZhdWx0IjsKLQkJCWJyZWFrOwotCX0KLQlyZXR1cm4gbGFiZWw7Ci19Ci0KLWNsYXNzIFJlc3BvbnNlIHsKLXB1YmxpYzoKLQlSZXNwb25zZSgpOwotCXZpcnR1YWwgflJlc3BvbnNlKCk7Ci0KLURhdGEKLXRvV2lyZSgpIGNvbnN0OwotCi12b2lkCi1mcm9tV2lyZShjb25zdCBJbnRlcmVzdCAmaW50ZXJlc3QsIGNvbnN0IERhdGEgJmRhdGEpOwotCi1wcml2YXRlOgotCU5hbWUgbV9xdWVyeU5hbWU7Ci0Jc3RyaW5nIG1fc2VyaWFsOwotCVJlc3BvbnNlVHlwZSBtX3Jlc3BvbnNlVHlwZTsKLQotCXRpbWU6Om1pbGxpc2Vjb25kcyBtX2ZyZXNobmVzczsKLQotCXVuc2lnbmVkIGludCBtX251bWJlck9mUlI7Ci0JdmVjdG9yPFJSPiAgbV9ycnM7Ci0KLX07Ci0KLX0gLyogbmFtZXNwYWNlIG5kbiAqLwotCi0jZW5kaWYgLyogUkVTUE9OU0VfSF8gKi8KZGlmZiAtLWdpdCBhL3NyYy9yZXNwb25zZS5ocHAgYi9zcmMvcmVzcG9uc2UuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1YTRjZGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvcmVzcG9uc2UuaHBwCkBAIC0wLDAgKzEsOTkgQEAKKy8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbDsgLSotICovCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxNCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5ETlMgKE5hbWVkIERhdGEgTmV0d29ya2luZyBEb21haW4gTmFtZSBTZXJ2aWNlKS4KKyAqIFNlZSBBVVRIT1JTLm1kIGZvciBjb21wbGV0ZSBsaXN0IG9mIE5ETlMgYXV0aG9ycyBhbmQgY29udHJpYnV0b3JzLgorICoKKyAqIE5ETlMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMKKyAqIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogTkROUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7CisgKiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiBORE5TLCBlLmcuLCBpbiBDT1BZSU5HLm1kIGZpbGUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBORE5TX1JFU1BPTlNFX0hQUAorI2RlZmluZSBORE5TX1JFU1BPTlNFX0hQUAorCisjaW5jbHVkZSA8Ym9vc3QvYXNpby5ocHA+CisjaW5jbHVkZSA8Ym9vc3QvYmluZC5ocHA+CisjaW5jbHVkZSA8Ym9vc3QvZGF0ZV90aW1lL3Bvc2l4X3RpbWUvcG9zaXhfdGltZS5ocHA+CisjaW5jbHVkZSA8Ym9vc3Qvbm9uY29weWFibGUuaHBwPgorCisjaW5jbHVkZSA8bmRuLWN4eC9mYWNlLmhwcD4gLy8gL3Vzci9sb2NhbC9pbmNsdWRlCisjaW5jbHVkZSA8bmRuLWN4eC9uYW1lLmhwcD4KKyNpbmNsdWRlIDxuZG4tY3h4L2RhdGEuaHBwPgorCisjaW5jbHVkZSA8bmRuLWN4eC9lbmNvZGluZy9ibG9jay1oZWxwZXJzLmhwcD4KKyNpbmNsdWRlIDxuZG4tY3h4L2VuY29kaW5nL2Jsb2NrLmhwcD4KKyNpbmNsdWRlIDxuZG4tY3h4L2VuY29kaW5nL3Rsdi1uZG5kLmhwcD4KKworI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgIm5kbnMtdGx2LmhwcCIKKworbmFtZXNwYWNlIG5kbiB7CituYW1lc3BhY2UgbmRucyB7CisKK2VudW0gUmVzcG9uc2VUeXBlCisgIHsKKyAgICBORE5TX1Jlc3AsCisgICAgTkROU19OYWNrLAorICAgIE5ETlNfQXV0aAorICB9OworCisKK3N0YXRpYyBzdGQ6OnN0cmluZwordG9TdHJpbmcoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSkgY29uc3QKK3sKKyAgc3RyaW5nIGxhYmVsOworICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkKKyAgICB7CisgICAgY2FzZSBSZXNwb25zZVR5cGU6Ok5ETlNfUmVzcDoKKyAgICAgIGxhYmVsID0gIk5ETlMgUmVzcCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFJlc3BvbnNlVHlwZTo6TkROU19OYWNrOgorICAgICAgbGFiZWwgPSAiTkROUyBOYWNrIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpORE5TX0F1dGg6CisgICAgICBsYWJlbCA9ICJORE5TIEF1dGgiOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGxhYmVsID0gIkRlZmF1bHQiOworICAgICAgYnJlYWs7CisgICAgfQorICByZXR1cm4gbGFiZWw7Cit9CisKK2NsYXNzIFJlc3BvbnNlIHsKK3B1YmxpYzoKKyAgUmVzcG9uc2UoKTsKKyAgdmlydHVhbCB+UmVzcG9uc2UoKTsKKworICBEYXRhCisgIHRvV2lyZSgpIGNvbnN0OworCisgIHZvaWQKKyAgZnJvbVdpcmUoY29uc3QgSW50ZXJlc3QgJmludGVyZXN0LCBjb25zdCBEYXRhICZkYXRhKTsKKworcHJpdmF0ZToKKyAgTmFtZSBtX3F1ZXJ5TmFtZTsKKyAgc3RkOjpzdHJpbmcgbV9zZXJpYWw7CisgIFJlc3BvbnNlVHlwZSBtX3Jlc3BvbnNlVHlwZTsKKworICB0aW1lOjptaWxsaXNlY29uZHMgbV9mcmVzaG5lc3M7CisKKyAgdW5zaWduZWQgaW50IG1fbnVtYmVyT2ZSUjsKKyAgdmVjdG9yPFJSPiAgbV9ycnM7CisKK307CisKK30gLy8gbmFtZXNwYWNlIG5kbnMKK30gLy8gbmFtZXNwYWNlIG5kbgorCisjZW5kaWYgLy8gTkROU19SRVNQT05TRV9IUFAKZGlmZiAtLWdpdCBhL3NyYy9yci5jcHAgYi9zcmMvcnIuY3BwCmluZGV4IDBiOWQ2ZDguLjRmNTVlMjEgMTAwNjQ0Ci0tLSBhL3NyYy9yci5jcHAKKysrIGIvc3JjL3JyLmNwcApAQCAtMSw3OSArMSw4OSBAQAotLyoKLSAqIFJSLmNwcAorLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsOyAtKi0gKi8KKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDE0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCiAgKgotICogIENyZWF0ZWQgb246IDE4IEp1bCwgMjAxNAotICogICAgICBBdXRob3I6IHNob2NrCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBORE5TIChOYW1lZCBEYXRhIE5ldHdvcmtpbmcgRG9tYWluIE5hbWUgU2VydmljZSkuCisgKiBTZWUgQVVUSE9SUy5tZCBmb3IgY29tcGxldGUgbGlzdCBvZiBORE5TIGF1dGhvcnMgYW5kIGNvbnRyaWJ1dG9ycy4KKyAqCisgKiBORE5TIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zCisgKiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgKiBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIE5ETlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOworICogd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogTkROUywgZS5nLiwgaW4gQ09QWUlORy5tZCBmaWxlLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogICovCiAKLSNpbmNsdWRlICJSUi5oIgorI2luY2x1ZGUgInJyLmhwcCIKIAogbmFtZXNwYWNlIG5kbiB7CituYW1lc3BhY2UgbmRucyB7CiAKIFJSOjpSUigpCi06IGlkICgwTHUpCi0sIG1fcnJEYXRhKCJleC5jb20iKQorICA6IG1faWQoMEx1KQorICAsIG1fcnJEYXRhKCJleC5jb20iKQogewotCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgY29uc3RydWN0b3Igc3R1YgotCiB9CiAKLVJSOjp+UlIoKSB7Ci0JLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBkZXN0cnVjdG9yIHN0dWIKK1JSOjp+UlIoKQorewogfQogCiB0ZW1wbGF0ZTxib29sIFQ+CiBzaXplX3QKIFJSOjp3aXJlRW5jb2RlKEVuY29kaW5nSW1wbDxUPiAmIGJsb2NrKSBjb25zdAogewotCXNpemVfdCB0b3RhbExlbmd0aCA9IDA7Ci0Jc3RyaW5nIG1zZyA9IHRoaXMtPmdldFJyZGF0YSgpOwotCXRvdGFsTGVuZ3RoICs9IHByZXBlbmRCeXRlQXJyYXlCbG9jayhibG9jaywKLQkJCQkJCXRsdjo6bmRuczo6UlJEYXRhLAotCQkJCQkJcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obXNnLmNfc3RyKCkpLAotCQkJCQkJbXNnLnNpemUoKQotCQkJCQkJKTsKKyAgc2l6ZV90IHRvdGFsTGVuZ3RoID0gMDsKKyAgY29uc3Qgc3RkOjpzdHJpbmcmIG1zZyA9IHRoaXMtPmdldFJyZGF0YSgpOworICB0b3RhbExlbmd0aCArPSBwcmVwZW5kQnl0ZUFycmF5QmxvY2soYmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bHY6Om5kbnM6OlJSRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1zZy5jX3N0cigpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5zaXplKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAKLQlyZXR1cm4gdG90YWxMZW5ndGg7CisgIHJldHVybiB0b3RhbExlbmd0aDsKIH0KIAogY29uc3QgQmxvY2smCiBSUjo6d2lyZUVuY29kZSgpIGNvbnN0CiB7Ci0JaWYgKG1fd2lyZS5oYXNXaXJlKCkpCi0JCXJldHVybiBtX3dpcmU7Ci0JRW5jb2RpbmdFc3RpbWF0b3IgZXN0aW1hdG9yOwotCXNpemVfdCBlc3RpbWF0ZWRTaXplID0gd2lyZUVuY29kZShlc3RpbWF0b3IpOwotCUVuY29kaW5nQnVmZmVyIGJ1ZmZlcihlc3RpbWF0ZWRTaXplLCAwKTsKLQl3aXJlRW5jb2RlKGJ1ZmZlcik7Ci0JbV93aXJlID0gYnVmZmVyLmJsb2NrKCk7Ci0JcmV0dXJuIG1fd2lyZTsKKyAgaWYgKG1fd2lyZS5oYXNXaXJlKCkpCisgICAgcmV0dXJuIG1fd2lyZTsKKyAgRW5jb2RpbmdFc3RpbWF0b3IgZXN0aW1hdG9yOworICBzaXplX3QgZXN0aW1hdGVkU2l6ZSA9IHdpcmVFbmNvZGUoZXN0aW1hdG9yKTsKKyAgRW5jb2RpbmdCdWZmZXIgYnVmZmVyKGVzdGltYXRlZFNpemUsIDApOworICB3aXJlRW5jb2RlKGJ1ZmZlcik7CisgIG1fd2lyZSA9IGJ1ZmZlci5ibG9jaygpOworICByZXR1cm4gbV93aXJlOwogfQogCiB2b2lkCiBSUjo6d2lyZURlY29kZShjb25zdCBCbG9jayYgd2lyZSkKIHsKLQlpZiAoIXdpcmUuaGFzV2lyZSgpKSB7Ci0JICAgIHRocm93IFRsdjo6RXJyb3IoIlRoZSBzdXBwbGllZCBibG9jayBkb2VzIG5vdCBjb250YWluIHdpcmUgZm9ybWF0Iik7Ci0JfQorICBpZiAoIXdpcmUuaGFzV2lyZSgpKSB7CisgICAgdGhyb3cgVGx2OjpFcnJvcigiVGhlIHN1cHBsaWVkIGJsb2NrIGRvZXMgbm90IGNvbnRhaW4gd2lyZSBmb3JtYXQiKTsKKyAgfQogCi0JaWYgKHdpcmUudHlwZSgpICE9IHRsdjo6bmRuczo6UlJEYXRhKQotCSAgICB0aHJvdyBUbHY6OkVycm9yKCJVbmV4cGVjdGVkIFRMViB0eXBlIHdoZW4gZGVjb2RpbmcgQ29udGVudCIpOworICBpZiAod2lyZS50eXBlKCkgIT0gdGx2OjpuZG5zOjpSUkRhdGEpCisgICAgdGhyb3cgVGx2OjpFcnJvcigiVW5leHBlY3RlZCBUTFYgdHlwZSB3aGVuIGRlY29kaW5nIENvbnRlbnQiKTsKIAotCW1fd2lyZSA9IHdpcmU7Ci0JbV93aXJlLnBhcnNlKCk7CisgIG1fd2lyZSA9IHdpcmU7CisgIG1fd2lyZS5wYXJzZSgpOwogCi0JQmxvY2s6OmVsZW1lbnRfY29uc3RfaXRlcmF0b3IgaXQgPSBtX3dpcmUuZWxlbWVudHNfYmVnaW4oKTsKKyAgQmxvY2s6OmVsZW1lbnRfY29uc3RfaXRlcmF0b3IgaXQgPSBtX3dpcmUuZWxlbWVudHNfYmVnaW4oKTsKIAotCWlmIChpdCAhPSBtX3dpcmUuZWxlbWVudHNfZW5kKCkgJiYgaXQtPnR5cGUoKSA9PSB0bHY6Om5kbnM6OlJSRGF0YSkKLQl7Ci0JCW1fcnJEYXRhID0gc3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGl0LT52YWx1ZSgpKSwgaXQtPnZhbHVlX3NpemUoKSk7Ci0JCWl0ICsrOwotCX0gZWxzZSB7Ci0JCXRocm93IFRsdjo6RXJyb3IoIm5vdCB0aGUgUlJEYXRhIFR5cGUiKTsKLQl9CisgIGlmIChpdCAhPSBtX3dpcmUuZWxlbWVudHNfZW5kKCkgJiYgaXQtPnR5cGUoKSA9PSB0bHY6Om5kbnM6OlJSRGF0YSkKKyAgICB7CisgICAgICBtX3JyRGF0YSA9IHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGl0LT52YWx1ZSgpKSwgaXQtPnZhbHVlX3NpemUoKSk7CisgICAgICBpdCArKzsKKyAgICB9IGVsc2UgeworICAgIHRocm93IFRsdjo6RXJyb3IoIm5vdCB0aGUgUlJEYXRhIFR5cGUiKTsKKyAgfQogCiB9CiAKLQotCi19IC8qIG5hbWVzcGFjZSBuZG4gKi8KK30gLy8gbmFtZXNwYWNlIG5kbnMKK30gLy8gbmFtZXNwYWNlIG5kbgpkaWZmIC0tZ2l0IGEvc3JjL3JyLmggYi9zcmMvcnIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZkZTI5NC4uMDAwMDAwMAotLS0gYS9zcmMvcnIuaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBSUi5oCi0gKgotICogIENyZWF0ZWQgb246IDE4IEp1bCwgMjAxNAotICogICAgICBBdXRob3I6IHNob2NrCi0gKi8KLQotI2lmbmRlZiBSUl9IXwotI2RlZmluZSBSUl9IXwotCi0jaW5jbHVkZSA8c3RyaW5nPgotCi0KLSNpbmNsdWRlICJuZG5zLXRsdi5oIgotI2luY2x1ZGUgPG5kbi1jeHgvZW5jb2RpbmcvYmxvY2suaHBwPgotI2luY2x1ZGUgPG5kbi1jeHgvaW50ZXJlc3QuaHBwPgotCi0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLW5hbWVzcGFjZSBuZG4gewotCi1lbnVtIFJSVHlwZQotewotCU5TLAotCVRYVCwKLQlVTktOT1dOCi19OwotCi0KLQotCi1jbGFzcyBSUiB7Ci1wdWJsaWM6Ci0JUlIoKTsKLQl2aXJ0dWFsIH5SUigpOwotCi0JY29uc3Qgc3RyaW5nJiBnZXRScmRhdGEoKSBjb25zdCB7Ci0JCXJldHVybiBtX3JyRGF0YTsKLQl9Ci0KLQl2b2lkIHNldFJyZGF0YShjb25zdCBzdHJpbmcmIHJyZGF0YSkgewotCQl0aGlzLT5tX3JyRGF0YSA9IHJyZGF0YTsKLQl9Ci0KLQotCi1wcml2YXRlOgotdGVtcGxhdGU8Ym9vbCBUPgotc2l6ZV90Ci13aXJlRW5jb2RlKEVuY29kaW5nSW1wbDxUPiAmIGJsb2NrKSBjb25zdDsKLQotcHVibGljOgotCi1jb25zdCBCbG9jayYKLXdpcmVFbmNvZGUoKSBjb25zdDsKLQotdm9pZAotd2lyZURlY29kZShjb25zdCBCbG9jayYgd2lyZSk7Ci0KLQotSW50ZXJlc3QKLXRvV2lyZSgpIGNvbnN0OwotCi0KLXByaXZhdGU6Ci0JdW5zaWduZWQgbG9uZyBpZDsKLQlzdHJpbmcgbV9yckRhdGE7Ci0KLQltdXRhYmxlIEJsb2NrIG1fd2lyZTsKLX07Ci0KLX0gLyogbmFtZXNwYWNlIG5kbiAqLwotCi0jZW5kaWYgLyogUlJfSF8gKi8KZGlmZiAtLWdpdCBhL3NyYy9yci5ocHAgYi9zcmMvcnIuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MDAxZTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvcnIuaHBwCkBAIC0wLDAgKzEsODIgQEAKKy8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbDsgLSotICovCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxNCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5ETlMgKE5hbWVkIERhdGEgTmV0d29ya2luZyBEb21haW4gTmFtZSBTZXJ2aWNlKS4KKyAqIFNlZSBBVVRIT1JTLm1kIGZvciBjb21wbGV0ZSBsaXN0IG9mIE5ETlMgYXV0aG9ycyBhbmQgY29udHJpYnV0b3JzLgorICoKKyAqIE5ETlMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMKKyAqIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogTkROUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7CisgKiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiBORE5TLCBlLmcuLCBpbiBDT1BZSU5HLm1kIGZpbGUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBORE5TX1JSX0hQUAorI2RlZmluZSBORE5TX1JSX0hQUAorCisjaW5jbHVkZSAibmRucy10bHYuaHBwIgorCisjaW5jbHVkZSA8bmRuLWN4eC9lbmNvZGluZy9ibG9jay5ocHA+CisjaW5jbHVkZSA8bmRuLWN4eC9pbnRlcmVzdC5ocHA+CisKK25hbWVzcGFjZSBuZG4geworbmFtZXNwYWNlIG5kbnMgeworCitlbnVtIFJSVHlwZQorICB7CisgICAgTlMsCisgICAgVFhULAorICAgIFVOS05PV04KKyAgfTsKKworY2xhc3MgUlIgeworcHVibGljOgorICBSUigpOworICB2aXJ0dWFsIH5SUigpOworCisgIGNvbnN0IHN0ZDo6c3RyaW5nJgorICBnZXRScmRhdGEoKSBjb25zdAorICB7CisgICAgcmV0dXJuIG1fcnJEYXRhOworICB9CisKKyAgdm9pZCBzZXRScmRhdGEoY29uc3Qgc3RkOjpzdHJpbmcmIHJyZGF0YSkKKyAgeworICAgIHRoaXMtPm1fcnJEYXRhID0gcnJkYXRhOworICB9CisKK3ByaXZhdGU6CisgIHRlbXBsYXRlPGJvb2wgVD4KKyAgc2l6ZV90CisgIHdpcmVFbmNvZGUoRW5jb2RpbmdJbXBsPFQ+ICYgYmxvY2spIGNvbnN0OworCitwdWJsaWM6CisKKyAgY29uc3QgQmxvY2smCisgIHdpcmVFbmNvZGUoKSBjb25zdDsKKworICB2b2lkCisgIHdpcmVEZWNvZGUoY29uc3QgQmxvY2smIHdpcmUpOworCisKKyAgSW50ZXJlc3QKKyAgdG9XaXJlKCkgY29uc3Q7CisKKworcHJpdmF0ZToKKyAgdWludDMyX3QgbV9pZDsKKyAgc3RkOjpzdHJpbmcgbV9yckRhdGE7CisKKyAgbXV0YWJsZSBCbG9jayBtX3dpcmU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBuZG5zCit9IC8vIG5hbWVzcGFjZSBuZG4KKworI2VuZGlmIC8vIE5ETlNfUlJfSFBQCmRpZmYgLS1naXQgYS9zcmMvem9uZS5jcHAgYi9zcmMvem9uZS5jcHAKaW5kZXggOTQ4Mzk0MS4uZjVhMzNiYSAxMDA2NDQKLS0tIGEvc3JjL3pvbmUuY3BwCisrKyBiL3NyYy96b25lLmNwcApAQCAtMSwyNSArMSwzNiBAQAotLyoKLSAqIHpvbmUuY3BwCisvKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWw7IC0qLSAqLworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KICAqCi0gKiAgQ3JlYXRlZCBvbjogMTggSnVsLCAyMDE0Ci0gKiAgICAgIEF1dGhvcjogc2hvY2sKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5ETlMgKE5hbWVkIERhdGEgTmV0d29ya2luZyBEb21haW4gTmFtZSBTZXJ2aWNlKS4KKyAqIFNlZSBBVVRIT1JTLm1kIGZvciBjb21wbGV0ZSBsaXN0IG9mIE5ETlMgYXV0aG9ycyBhbmQgY29udHJpYnV0b3JzLgorICoKKyAqIE5ETlMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMKKyAqIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogTkROUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7CisgKiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiBORE5TLCBlLmcuLCBpbiBDT1BZSU5HLm1kIGZpbGUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAgKi8KIAotI2luY2x1ZGUgInpvbmUuaCIKKyNpbmNsdWRlICJ6b25lLmhwcCIKIAogbmFtZXNwYWNlIG5kbiB7CituYW1lc3BhY2UgbmRucyB7CiAKIFpvbmU6OlpvbmUoKSB7Ci0JLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBjb25zdHJ1Y3RvciBzdHViCi0KIH0KIAogWm9uZTo6flpvbmUoKSB7Ci0JLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBkZXN0cnVjdG9yIHN0dWIKIH0KIAotY29uc3QgUlIgWm9uZTo6aGFzTmFtZShzdHJpbmcga2V5KSB7Ci0JcmV0dXJuICJleGFtcGxlLmtleSI7Citjb25zdCBSUiBab25lOjpoYXNOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBrZXkpIHsKKyAgcmV0dXJuICJleGFtcGxlLmtleSI7CiB9CiAKLX0gLyogbmFtZXNwYWNlIG5kbiAqLworfSAvLyBuYW1lc3BhY2UgbmRucworfSAvLyBuYW1lc3BhY2UgbmRuCmRpZmYgLS1naXQgYS9zcmMvem9uZS5oIGIvc3JjL3pvbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRjMjU4MS4uMDAwMDAwMAotLS0gYS9zcmMvem9uZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoKLSAqIHpvbmUuaAotICoKLSAqICBDcmVhdGVkIG9uOiAxOCBKdWwsIDIwMTQKLSAqICAgICAgQXV0aG9yOiBzaG9jawotICovCi0KLSNpZm5kZWYgWk9ORV9IXwotI2RlZmluZSBaT05FX0hfCi0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSAicnIuaCIKLQotCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCi1uYW1lc3BhY2UgbmRuIHsKLQotY2xhc3MgWm9uZSB7Ci1wdWJsaWM6Ci0JWm9uZSgpOwotCXZpcnR1YWwgflpvbmUoKTsKLQotCWNvbnN0IFJSIGhhc05hbWUoc3RyaW5nIGtleSk7Ci0KLX07Ci0KLX0gLyogbmFtZXNwYWNlIG5kbiAqLwotCi0jZW5kaWYgLyogWk9ORV9IXyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3pvbmUuaHBwIGIvc3JjL3pvbmUuaHBwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1NGM5YTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvem9uZS5ocHAKQEAgLTAsMCArMSw0MCBAQAorLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsOyAtKi0gKi8KKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDE0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTkROUyAoTmFtZWQgRGF0YSBOZXR3b3JraW5nIERvbWFpbiBOYW1lIFNlcnZpY2UpLgorICogU2VlIEFVVEhPUlMubWQgZm9yIGNvbXBsZXRlIGxpc3Qgb2YgTkROUyBhdXRob3JzIGFuZCBjb250cmlidXRvcnMuCisgKgorICogTkROUyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcworICogb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBORE5TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsKKyAqIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIE5ETlMsIGUuZy4sIGluIENPUFlJTkcubWQgZmlsZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaWZuZGVmIE5ETlNfWk9ORV9IUFAKKyNkZWZpbmUgTkROU19aT05FX0hQUAorCisjaW5jbHVkZSAicnIuaHBwIgorCituYW1lc3BhY2UgbmRuIHsKK25hbWVzcGFjZSBuZG5zIHsKKworY2xhc3MgWm9uZSB7CitwdWJsaWM6CisgIFpvbmUoKTsKKyAgdmlydHVhbCB+Wm9uZSgpOworCisgIGNvbnN0IFJSIGhhc05hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGtleSk7CisKK307CisKK30gLy8gbmFtZXNwYWNlIG5kbnMKK30gLy8gbmFtZXNwYWNlIG5kbgorCisjZW5kaWYgLy8gTkROU19aT05FX0hQUApkaWZmIC0tZ2l0IGEvdGVzdHMvTmFtZVNlcnZlcl90ZXN0LmNwcCBiL3Rlc3RzL05hbWVTZXJ2ZXJfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyZThiY2IuLjAwMDAwMDAKLS0tIGEvdGVzdHMvTmFtZVNlcnZlcl90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8qCi0gKiBOYW1lU2VydmVyX3Rlc3QuY3BwCi0gKgotICogIENyZWF0ZWQgb246IDE4IEp1bCwgMjAxNAotICogICAgICBBdXRob3I6IHNob2NrCi0gKi8KLQotI2luY2x1ZGUgInRvb2wvbmFtZVNlcnZlci5oIgotCi1uYW1lc3BhY2UgbmRuIHsKLQotfSAvKiBuYW1lc3BhY2UgbmRuICovCmRpZmYgLS1naXQgYS90ZXN0cy9RdWVyeV90ZXN0LmNwcCBiL3Rlc3RzL1F1ZXJ5X3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2ZlZWZiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL1F1ZXJ5X3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLyoKLSAqIHF1ZXJ5X3Rlc3QuY3BwCi0gKgotICogIENyZWF0ZWQgb246IDE4IEp1bCwgMjAxNAotICogICAgICBBdXRob3I6IHNob2NrCi0gKi8KLQotI2luY2x1ZGUgInNyYy9xdWVyeS5oIgotCi1uYW1lc3BhY2UgbmRuIHsKLQotfSAvKiBuYW1lc3BhY2UgbmRuICovCmRpZmYgLS1naXQgYS90ZXN0cy9SUl90ZXN0LmNwcCBiL3Rlc3RzL1JSX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTQ3MDJkLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL1JSX3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotLyoKLSAqIFJSX3Rlc3QuY3BwCi0gKgotICogIENyZWF0ZWQgb246IDE4IEp1bCwgMjAxNAotICogICAgICBBdXRob3I6IHNob2NrCi0gKi8KLQotI2luY2x1ZGUgIi4uL3NyYy9SUi5oIgotCi0KLWludAotbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotewotCW5kbjo6UlIgcnI7Ci0JcnIuc2V0UnJkYXRhKCJ3d3cyLmV4LmNvbSIpOwotCi0JbmRuOjpCbG9jayBibG9jayA9IHJyLndpcmVFbmNvZGUoKTsKLQotCW5kbjo6UlIgcnIyOwotCXJyMi53aXJlRGVjb2RlKGJsb2NrKTsKLQljb3V0PDxyci5nZXRScmRhdGEoKTw8ZW5kbDsKLQotCXJldHVybiAwOwotfS8vbWFpbgpkaWZmIC0tZ2l0IGEvdGVzdHMvUmVzb2x2ZXJfdGVzdC5jcHAgYi90ZXN0cy9SZXNvbHZlcl90ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RiM2YxZi4uMDAwMDAwMAotLS0gYS90ZXN0cy9SZXNvbHZlcl90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS8qCi0gKiBSZXNvbHZlcl90ZXN0LmNwcAotICoKLSAqICBDcmVhdGVkIG9uOiAxOCBKdWwsIDIwMTQKLSAqICAgICAgQXV0aG9yOiBzaG9jawotICovCi0KLSNpbmNsdWRlICJyZXNvbHZlci5oIgotCi1uYW1lc3BhY2UgbmRuIHsKLQotfSAvKiBuYW1lc3BhY2UgbmRuICovCmRpZmYgLS1naXQgYS90ZXN0cy9ab25lX3Rlc3QuY3BwIGIvdGVzdHMvWm9uZV90ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE1ZGYwMS4uMDAwMDAwMAotLS0gYS90ZXN0cy9ab25lX3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLyoKLSAqIHpvbmVfdGVzdC5jcHAKLSAqCi0gKiAgQ3JlYXRlZCBvbjogMTggSnVsLCAyMDE0Ci0gKiAgICAgIEF1dGhvcjogc2hvY2sKLSAqLwotCi0jaW5jbHVkZSAic3JjL3pvbmUuaCIKLQotbmFtZXNwYWNlIG5kbiB7Ci0KLX0gLyogbmFtZXNwYWNlIG5kbiAqLwpkaWZmIC0tZ2l0IGEvdGVzdHMvbWFpbi5jcHAgYi90ZXN0cy9tYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWM1YWRiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvbWFpbi5jcHAKQEAgLTAsMCArMSwyMyBAQAorLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsOyAtKi0gKi8KKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDE0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTkROUyAoTmFtZWQgRGF0YSBOZXR3b3JraW5nIERvbWFpbiBOYW1lIFNlcnZpY2UpLgorICogU2VlIEFVVEhPUlMubWQgZm9yIGNvbXBsZXRlIGxpc3Qgb2YgTkROUyBhdXRob3JzIGFuZCBjb250cmlidXRvcnMuCisgKgorICogTkROUyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcworICogb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBORE5TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsKKyAqIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIE5ETlMsIGUuZy4sIGluIENPUFlJTkcubWQgZmlsZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjZGVmaW5lIEJPT1NUX1RFU1RfTUFJTiAxCisjZGVmaW5lIEJPT1NUX1RFU1RfRFlOX0xJTksgMQorCisjaW5jbHVkZSA8Ym9vc3QvdGVzdC91bml0X3Rlc3QuaHBwPgpkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC9uYW1lc2VydmVyLmNwcCBiL3Rlc3RzL3VuaXQvbmFtZXNlcnZlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU5ZjcyNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3VuaXQvbmFtZXNlcnZlci5jcHAKQEAgLTAsMCArMSwyOCBAQAorLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsOyAtKi0gKi8KKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDE0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTkROUyAoTmFtZWQgRGF0YSBOZXR3b3JraW5nIERvbWFpbiBOYW1lIFNlcnZpY2UpLgorICogU2VlIEFVVEhPUlMubWQgZm9yIGNvbXBsZXRlIGxpc3Qgb2YgTkROUyBhdXRob3JzIGFuZCBjb250cmlidXRvcnMuCisgKgorICogTkROUyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcworICogb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBORE5TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsKKyAqIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIE5ETlMsIGUuZy4sIGluIENPUFlJTkcubWQgZmlsZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSAidG9vbC9uYW1lU2VydmVyLmgiCisKK25hbWVzcGFjZSBuZG4geworbmFtZXNwYWNlIG5kbnMgeworbmFtZXNwYWNlIHRlc3RzIHsKKworfSAvLyBuYW1lc3BhY2UgdGVzdHMKK30gLy8gbmFtZXNwYWNlIG5kbnMKK30gLy8gbmFtZXNwYWNlIG5kbgpkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC9xdWVyeS5jcHAgYi90ZXN0cy91bml0L3F1ZXJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTJhNWQxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdW5pdC9xdWVyeS5jcHAKQEAgLTAsMCArMSwyOCBAQAorLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsOyAtKi0gKi8KKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDE0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTkROUyAoTmFtZWQgRGF0YSBOZXR3b3JraW5nIERvbWFpbiBOYW1lIFNlcnZpY2UpLgorICogU2VlIEFVVEhPUlMubWQgZm9yIGNvbXBsZXRlIGxpc3Qgb2YgTkROUyBhdXRob3JzIGFuZCBjb250cmlidXRvcnMuCisgKgorICogTkROUyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcworICogb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBORE5TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsKKyAqIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIE5ETlMsIGUuZy4sIGluIENPUFlJTkcubWQgZmlsZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSAic3JjL3F1ZXJ5LmgiCisKK25hbWVzcGFjZSBuZG4geworbmFtZXNwYWNlIG5kbnMgeworbmFtZXNwYWNlIHRlc3RzIHsKKworfSAvLyBuYW1lc3BhY2UgdGVzdHMKK30gLy8gbmFtZXNwYWNlIG5kbnMKK30gLy8gbmFtZXNwYWNlIG5kbgpkaWZmIC0tZ2l0IGEvdGVzdHMvdW5pdC9yZXNvbHZlci5jcHAgYi90ZXN0cy91bml0L3Jlc29sdmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTlhNThlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdW5pdC9yZXNvbHZlci5jcHAKQEAgLTAsMCArMSwyOCBAQAorLyogLSotIE1vZGU6QysrOyBjLWZpbGUtc3R5bGU6ImdudSI7IGluZGVudC10YWJzLW1vZGU6bmlsOyAtKi0gKi8KKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDE0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTkROUyAoTmFtZWQgRGF0YSBOZXR3b3JraW5nIERvbWFpbiBOYW1lIFNlcnZpY2UpLgorICogU2VlIEFVVEhPUlMubWQgZm9yIGNvbXBsZXRlIGxpc3Qgb2YgTkROUyBhdXRob3JzIGFuZCBjb250cmlidXRvcnMuCisgKgorICogTkROUyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcworICogb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBORE5TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsKKyAqIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgKKyAqIE5ETlMsIGUuZy4sIGluIENPUFlJTkcubWQgZmlsZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSAicmVzb2x2ZXIuaCIKKworbmFtZXNwYWNlIG5kbiB7CituYW1lc3BhY2UgbmRucyB7CituYW1lc3BhY2UgdGVzdHMgeworCit9IC8vIG5hbWVzcGFjZSB0ZXN0cworfSAvLyBuYW1lc3BhY2UgbmRucworfSAvLyBuYW1lc3BhY2UgbmRuCmRpZmYgLS1naXQgYS90ZXN0cy91bml0L3JyLmNwcCBiL3Rlc3RzL3VuaXQvcnIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2NmFlZWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy91bml0L3JyLmNwcApAQCAtMCwwICsxLDQ3IEBACisvKiAtKi0gTW9kZTpDKys7IGMtZmlsZS1zdHlsZToiZ251IjsgaW5kZW50LXRhYnMtbW9kZTpuaWw7IC0qLSAqLworLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBORE5TIChOYW1lZCBEYXRhIE5ldHdvcmtpbmcgRG9tYWluIE5hbWUgU2VydmljZSkuCisgKiBTZWUgQVVUSE9SUy5tZCBmb3IgY29tcGxldGUgbGlzdCBvZiBORE5TIGF1dGhvcnMgYW5kIGNvbnRyaWJ1dG9ycy4KKyAqCisgKiBORE5TIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zCisgKiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisgKiBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIE5ETlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOworICogd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aAorICogTkROUywgZS5nLiwgaW4gQ09QWUlORy5tZCBmaWxlLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlICJyci5ocHAiCisKKyNpbmNsdWRlIDxib29zdC90ZXN0L3VuaXRfdGVzdC5ocHA+CisKK25hbWVzcGFjZSBuZG4geworbmFtZXNwYWNlIG5kbnMgeworbmFtZXNwYWNlIHRlc3RzIHsKKworQk9PU1RfQVVUT19URVNUX1NVSVRFKFJyKQorCitCT09TVF9BVVRPX1RFU1RfQ0FTRShFbmNvZGUpCit7CisgIG5kbjo6UlIgcnI7CisgIHJyLnNldFJyZGF0YSgid3d3Mi5leC5jb20iKTsKKworICBuZG46OkJsb2NrIGJsb2NrID0gcnIud2lyZUVuY29kZSgpOworCisgIG5kbjo6UlIgcnIyOworICBycjIud2lyZURlY29kZShibG9jayk7CisKKyAgQk9PU1RfVEVTVF9FUVVBTChyci5nZXRScmRhdGEoKSwgIj8iKTsKK30KKworQk9PU1RfQVVUT19URVNUX1NVSVRFX0VORCgpCisKK30gLy8gbmFtZXNwYWNlIHRlc3RzCit9IC8vIG5hbWVzcGFjZSBuZG5zCit9IC8vIG5hbWVzcGFjZSBuZG4KZGlmZiAtLWdpdCBhL3Rlc3RzL3VuaXQvem9uZS5jcHAgYi90ZXN0cy91bml0L3pvbmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MmUyMmYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy91bml0L3pvbmUuY3BwCkBAIC0wLDAgKzEsMjggQEAKKy8qIC0qLSBNb2RlOkMrKzsgYy1maWxlLXN0eWxlOiJnbnUiOyBpbmRlbnQtdGFicy1tb2RlOm5pbDsgLSotICovCisvKioKKyAqIENvcHlyaWdodCAoYykgMjAxNCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE5ETlMgKE5hbWVkIERhdGEgTmV0d29ya2luZyBEb21haW4gTmFtZSBTZXJ2aWNlKS4KKyAqIFNlZSBBVVRIT1JTLm1kIGZvciBjb21wbGV0ZSBsaXN0IG9mIE5ETlMgYXV0aG9ycyBhbmQgY29udHJpYnV0b3JzLgorICoKKyAqIE5ETlMgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMKKyAqIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyAqIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogTkROUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7CisgKiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiBORE5TLCBlLmcuLCBpbiBDT1BZSU5HLm1kIGZpbGUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgInNyYy96b25lLmgiCisKK25hbWVzcGFjZSBuZG4geworbmFtZXNwYWNlIG5kbnMgeworbmFtZXNwYWNlIHRlc3RzIHsKKworfSAvLyBuYW1lc3BhY2UgdGVzdHMKK30gLy8gbmFtZXNwYWNlIG5kbnMKK30gLy8gbmFtZXNwYWNlIG5kbgpkaWZmIC0tZ2l0IGEvdGVzdHMvd3NjcmlwdCBiL3Rlc3RzL3dzY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYxMjA5YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3dzY3JpcHQKQEAgLTAsMCArMSwzMyBAQAorIyAtKi0gTW9kZTogcHl0aG9uOyBweS1pbmRlbnQtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGNvZGluZzogdXRmLTg7IC0qLQorCitmcm9tIHdhZmxpYiBpbXBvcnQgVXRpbHMKKwordG9wID0gJy4uJworCitkZWYgYnVpbGQoYmxkKToKKyAgICBpZiBibGQuZW52WydXSVRIX1RFU1RTJ106CisgICAgICAgIHRlc3RzX2Jhc2UgPSBibGQoCisgICAgICAgICAgICB0YXJnZXQ9J3Rlc3RzLWJhc2UnLAorICAgICAgICAgICAgbmFtZT0ndGVzdHMtYmFzZScsCisgICAgICAgICAgICBmZWF0dXJlcz0nY3h4JywKKyAgICAgICAgICAgIHNvdXJjZT1ibGQucGF0aC5hbnRfZ2xvYihbJyouY3BwJ10pLAorICAgICAgICAgICAgdXNlPSduZG5zLW9iamVjdHMnLAorICAgICAgICAgICkKKworICAgICAgICAjIHVuaXQgdGVzdHMKKyAgICAgICAgdW5pdF90ZXN0cyA9IGJsZC5wcm9ncmFtKAorICAgICAgICAgICAgdGFyZ2V0PScuLi91bml0LXRlc3RzJywKKyAgICAgICAgICAgIGZlYXR1cmVzPSdjeHggY3h4cHJvZ3JhbScsCisgICAgICAgICAgICBzb3VyY2U9YmxkLnBhdGguYW50X2dsb2IoWyd1bml0LyoqLyouY3BwJ10pLAorICAgICAgICAgICAgdXNlPSd0ZXN0cy1iYXNlJywKKyAgICAgICAgICAgIGluc3RhbGxfcGF0aD1Ob25lLAorICAgICAgICAgICkKKworICAgICAgICAjIGludGVncmF0ZWQgdGVzdHMKKyAgICAgICAgdW5pdF90ZXN0c19uZmQgPSBibGQucHJvZ3JhbSgKKyAgICAgICAgICAgIHRhcmdldD0nLi4vaW50ZWdyYXRlZC10ZXN0cycsCisgICAgICAgICAgICBmZWF0dXJlcz0nY3h4IGN4eHByb2dyYW0nLAorICAgICAgICAgICAgc291cmNlPWJsZC5wYXRoLmFudF9nbG9iKFsnaW50ZWdyYXRlZC8qKi8qLmNwcCddKSwKKyAgICAgICAgICAgIHVzZT0ndGVzdHMtYmFzZScsCisgICAgICAgICAgICBpbnN0YWxsX3BhdGg9Tm9uZSwKKyAgICAgICAgICApCmRpZmYgLS1naXQgYS93YWYgYi93YWYKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzgyODg0NAotLS0gL2Rldi9udWxsCisrKyBiL3dhZgpAQCAtMCwwICsxLDE2OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIGVuY29kaW5nOiBJU084ODU5LTEKKyMgVGhvbWFzIE5hZ3ksIDIwMDUtMjAxNAorCisiIiIKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorCisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SCitJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCitJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyhJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCitIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCitTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcKK0lOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisiIiIKKworaW1wb3J0IG9zLCBzeXMKKworVkVSU0lPTj0iMS44LjAiCitSRVZJU0lPTj0iMDk0YmNiM2U3MDc5MDQxNjE0ZjYwMjIyMDY3ZTk0ZDMiCitJTlNUQUxMPScnCitDMT0nIzEnCitDMj0nIy0nCitDMz0nIygnCitjd2QgPSBvcy5nZXRjd2QoKQoram9pbiA9IG9zLnBhdGguam9pbgorCisKK1dBRj0nd2FmJworZGVmIGIoeCk6CisJcmV0dXJuIHgKK2lmIHN5cy5oZXh2ZXJzaW9uPjB4MzAwMDAwZjoKKwlXQUY9J3dhZjMnCisJZGVmIGIoeCk6CisJCXJldHVybiB4LmVuY29kZSgpCisKK2RlZiBlcnIobSk6CisJcHJpbnQoKCdcMDMzWzkxbUVycm9yOiAlc1wwMzNbMG0nICUgbSkpCisJc3lzLmV4aXQoMSkKKworZGVmIHVucGFja193YWZkaXIoZGlyKToKKwlmID0gb3BlbihzeXMuYXJndlswXSwncmInKQorCWMgPSAnY29ycnVwdCBhcmNoaXZlICglZCknCisJd2hpbGUgMToKKwkJbGluZSA9IGYucmVhZGxpbmUoKQorCQlpZiBub3QgbGluZTogZXJyKCdydW4gd2FmLWxpZ2h0IGZyb20gYSBmb2xkZXIgY29udGFpbmluZyB3YWZsaWInKQorCQlpZiBsaW5lID09IGIoJyM9PT5cbicpOgorCQkJdHh0ID0gZi5yZWFkbGluZSgpCisJCQlpZiBub3QgdHh0OiBlcnIoYyAlIDEpCisJCQlpZiBmLnJlYWRsaW5lKCkgIT0gYignIzw9PVxuJyk6IGVycihjICUgMikKKwkJCWJyZWFrCisJaWYgbm90IHR4dDogZXJyKGMgJSAzKQorCXR4dCA9IHR4dFsxOi0xXS5yZXBsYWNlKGIoQzEpLCBiKCdcbicpKS5yZXBsYWNlKGIoQzIpLCBiKCdccicpKS5yZXBsYWNlKGIoQzMpLCBiKCdceDAwJykpCisKKwlpbXBvcnQgc2h1dGlsLCB0YXJmaWxlCisJdHJ5OiBzaHV0aWwucm10cmVlKGRpcikKKwlleGNlcHQgT1NFcnJvcjogcGFzcworCXRyeToKKwkJZm9yIHggaW4gKCdUb29scycsICdleHRyYXMnKToKKwkJCW9zLm1ha2VkaXJzKGpvaW4oZGlyLCAnd2FmbGliJywgeCkpCisJZXhjZXB0IE9TRXJyb3I6CisJCWVycigiQ2Fubm90IHVucGFjayB3YWYgbGliIGludG8gJXNcbk1vdmUgd2FmIGluIGEgd3JpdGFibGUgZGlyZWN0b3J5IiAlIGRpcikKKworCW9zLmNoZGlyKGRpcikKKwl0bXAgPSAndC5iejInCisJdCA9IG9wZW4odG1wLCd3YicpCisJdHJ5OiB0LndyaXRlKHR4dCkKKwlmaW5hbGx5OiB0LmNsb3NlKCkKKworCXRyeToKKwkJdCA9IHRhcmZpbGUub3Blbih0bXApCisJZXhjZXB0OgorCQl0cnk6CisJCQlvcy5zeXN0ZW0oJ2J1bnppcDIgdC5iejInKQorCQkJdCA9IHRhcmZpbGUub3BlbigndCcpCisJCQl0bXAgPSAndCcKKwkJZXhjZXB0OgorCQkJb3MuY2hkaXIoY3dkKQorCQkJdHJ5OiBzaHV0aWwucm10cmVlKGRpcikKKwkJCWV4Y2VwdCBPU0Vycm9yOiBwYXNzCisJCQllcnIoIldhZiBjYW5ub3QgYmUgdW5wYWNrZWQsIGNoZWNrIHRoYXQgYnppcDIgc3VwcG9ydCBpcyBwcmVzZW50IikKKworCXRyeToKKwkJZm9yIHggaW4gdDogdC5leHRyYWN0KHgpCisJZmluYWxseToKKwkJdC5jbG9zZSgpCisKKwlmb3IgeCBpbiAoJ1Rvb2xzJywgJ2V4dHJhcycpOgorCQlvcy5jaG1vZChqb2luKCd3YWZsaWInLHgpLCA0OTMpCisKKwlpZiBzeXMuaGV4dmVyc2lvbjwweDMwMDAwMGY6CisJCXN5cy5wYXRoID0gW2pvaW4oZGlyLCAnd2FmbGliJyldICsgc3lzLnBhdGgKKwkJaW1wb3J0IGZpeHB5MgorCQlmaXhweTIuZml4ZGlyKGRpcikKKworCW9zLnJlbW92ZSh0bXApCisJb3MuY2hkaXIoY3dkKQorCisJdHJ5OiBkaXIgPSB1bmljb2RlKGRpciwgJ21iY3MnKQorCWV4Y2VwdDogcGFzcworCXRyeToKKwkJZnJvbSBjdHlwZXMgaW1wb3J0IHdpbmRsbAorCQl3aW5kbGwua2VybmVsMzIuU2V0RmlsZUF0dHJpYnV0ZXNXKGRpciwgMikKKwlleGNlcHQ6CisJCXBhc3MKKworZGVmIHRlc3QoZGlyKToKKwl0cnk6CisJCW9zLnN0YXQoam9pbihkaXIsICd3YWZsaWInKSkKKwkJcmV0dXJuIG9zLnBhdGguYWJzcGF0aChkaXIpCisJZXhjZXB0IE9TRXJyb3I6CisJCXBhc3MKKworZGVmIGZpbmRfbGliKCk6CisJbmFtZSA9IHN5cy5hcmd2WzBdCisJYmFzZSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgobmFtZSkpCisKKwkjZGV2cyB1c2UgJFdBRkRJUgorCXc9dGVzdChvcy5lbnZpcm9uLmdldCgnV0FGRElSJywgJycpKQorCWlmIHc6IHJldHVybiB3CisKKwkjd2FmLWxpZ2h0CisJaWYgbmFtZS5lbmRzd2l0aCgnd2FmLWxpZ2h0Jyk6CisJCXcgPSB0ZXN0KGJhc2UpCisJCWlmIHc6IHJldHVybiB3CisJCWVycignd2FmLWxpZ2h0IHJlcXVpcmVzIHdhZmxpYiAtPiBleHBvcnQgV0FGRElSPS9mb2xkZXInKQorCisJZGlybmFtZSA9ICclcy0lcy0lcycgJSAoV0FGLCBWRVJTSU9OLCBSRVZJU0lPTikKKwlmb3IgaSBpbiAoSU5TVEFMTCwnL3VzcicsJy91c3IvbG9jYWwnLCcvb3B0Jyk6CisJCXcgPSB0ZXN0KGkgKyAnL2xpYi8nICsgZGlybmFtZSkKKwkJaWYgdzogcmV0dXJuIHcKKworCSN3YWYtbG9jYWwKKwlkaXIgPSBqb2luKGJhc2UsIChzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJyBhbmQgJy4nIG9yICcnKSArIGRpcm5hbWUpCisJdyA9IHRlc3QoZGlyKQorCWlmIHc6IHJldHVybiB3CisKKwkjdW5wYWNrCisJdW5wYWNrX3dhZmRpcihkaXIpCisJcmV0dXJuIGRpcgorCit3YWZkaXIgPSBmaW5kX2xpYigpCitzeXMucGF0aC5pbnNlcnQoMCwgd2FmZGlyKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorCisJZnJvbSB3YWZsaWIgaW1wb3J0IFNjcmlwdGluZworCVNjcmlwdGluZy53YWZfZW50cnlfcG9pbnQoY3dkLCBWRVJTSU9OLCB3YWZkaXIpCisKKyM9PT4KKyNCWmg5MUFZJlNZ5ZgejAMXK3///7yiSP///////////////4CGAqKmUMAjKJEjKAEhMlUEWGHjvGOm98YjKCMoIygjKCMoIygjKCMoIygjKCMoIygjKCMoIygjKCMoIygjKPB99g6DfbvsAV9sOkSRQOTtvtd94PL1KQa1Xo1SpXvd0F61yWNSEgZsKoG9O5YRlazTsW2sKQNNtlvN3Y7tNHpR0Ns3u557WMHVdAvtkJFTzs96fc59Gt7cCAGtJOvub74aAd0t4uXO4d1avpwjLbH2lZ7s+vkjKCMoAUB6Iyj5IygfB0aIBH0jKAPfeAG+tQeuwA9HvaRu27uHKjsphUAjKGgjMRqqyvTbBlAChQlQFBRQ60FD0NUlCJUjKAEIstVUqiMxFICkpUBrFE2yUrQTA1I773aOvRt7m+PXc93ueNl3U3N6AsxIJdNemoI7Zl1Tx20cwM1493su7uq7VpuZ9A97e+z3M7Xfbz5vrPvmZ9tPF13092vPT7299n2Lc7ntuvbPrx56+56PNqGvSjN3HECClUoFIyj0aB7Ma3M673uj28PQaHR0PT2zBAkpJCL2Z09w9CMoA6CCpSModCAdBut9bzZ3Gr3192m9c7GZvQeS7cPWV7nPPvffZ7ma2iezTr13V99nqcQeM5xXe9ceR68112j3nuvYqc7497022euvepl0fffe96+c77688J9pn3g0+fHTWQwRo0JIde+3kIezc+97vDvGntnN6mWdz556Pvdbvq53PTPXd2ze92un3vVBdtnr73ePXZ9nDj1vvde2O97I++rVLzejvW807rvFry57Udt4m7Syu2Xvc6n0NXOt3t9Oc+UEDOH23ezr75t9u8+3ezPe1L1627TuvYfbzvdz23qSWvW505jegZyvfe8bx0O73y8sIyh70vPvHnz3vvAa73qZPHqDoCMozRgjKCVUgSttZqwEkqW1QBp4XXJyK+2jed1zO7WV6F3G6lSWzttLhpRHesaijxzn231utdeXwCMoXeccQCMorvF33163L1b53u9vn3wHdqvr7Tujp1r0Z4q+4k3ry4Lb12ame9r2ZJxG7zk73c9BQAe7uxnGvbz1R6d52eN8+b31ve7dvgNtPS7ba9u77297VCXXvb2H1w+l7KsjicaANvu+O9759u6tvT3tZ071W5fOz7bec7bdbfRrtl677dffWt1vvPbT273vX0H2aEBQA7iybOzvdvRXrbQ4LrbWD76wvF4fVOXeuOuwzkn33l4rz70UN0Vu7a1m4u0n3e0Hvsfa32a2HcHvfQ54+Q6Xr0972anQefR0+yMtb23GfS+3sL7te77up9Ntr1uwIyjoHSMoET15gyMt3kPvstvd99HTx53drhhwd2T2d6bgfQHPt0HSiiMteTjQ0HvcIygW9x3nXrk3HzmkIygPoAUjKAu3p2+4x76AY+7fbzvgFtw97uvtpz232++9tLlNjWvsyoApQTmr2zkpoy2fZkeJ7bm3bXPXdqb5HdvW517ne++s9vld6+O48+l92Qm9x89MhJde9HrnTjs23N2BU3X3t93uzbu3ja5jw993Xz1UmnbMzeO9dlXvL1GWnyvCwlNIICMogAmgAmgjKIyAATJoIyiGg0IifqnqbUD9SCMoIygjKCMoSmgQghDQQCAEyCMxZPQTao0yj9U3pE9TE9NRoxNHqDTQIygjKCMoIygjKJNIkRCAgAmgCGpoxJtGqemp4Tap6jTBPU9JoyaHqHqep6ho0CMoIygjKCMoEnqlJIEEnpNkYieomnkp6aahtRo/VBojKCMoeoNAIy0jKCMoIygjKCMoIygjKIkpoEBNNNGgI00aEyMkwRPEIy1GSZppijxT0NCjIGgyaZAjLQ9TQPTTUeUESIggTICNIyhNARpKfknojyqfpNNkUfpT1CMoaNGjIANADIAjKCMoB//Xyk/1LbanZCT/ZyXK3d2rm0Wtd2/TttXV2LKvhttXcBMkDFtRKqT3WtWq/Db262rX6v1fl+aenH/R2TqaX6H68XT1cF08VNRinunvGKqXLkxDmFDPGMVEyPGMT/I19Bf7Iyf2BnjszDAbAzbIYGcYBtzW7SccVhxKrURy9pPMKa3unNmbd6eZWV773Gu1bnWZrxDr0673lRBkxNlXKM0PL2pgoofD1i4l8YcVyqqVayMx6cwkni8W83Y9YAGMn8eXP2o6JmYZFs1Un03XbbUqotq2io1pCQVYxAkEFhAFLKoRAVpVU6hQakEjKAxAUJDMBRsQIoNkFUhAPxghREDSOAEUiAkS6kVkVkAbioICngigqslBIBQYTMSxmaYgIiFGM1KzRElKkUsYTJTZimtJUNTKagaEhNJalRWSgwiMoEmaJsoayUlZlBFjCULGhNMjMVBsaSMmxFoxRFJKWlMtRIMEstJaSQTBlESNotqTVCwY0sUsTUjFBSSimkSMTTNi0ajVNa0trZSSsliUJkmSKi1ASqbbRiZszTTVGkyy1SpbExs1SSVIaUkkk1FsyNSM1otIRsmmURYko0WTUkFopSqTDNjEwQsFiZSYlNihglTNgkIjKCkQxmYgIbDJMiURJhZNskCRpYgBGTSkiZCEMkpMtIkFRExkpSWoS1CYY1ApCRUMWJhRRpSBgRpmQk0iUTGLExsbJlNopJLSIpImgxZFJGSVKKKZka0hs0jE2GJMISQjMWxFSWGzaJILIKRkoqNiIKkyIzFUEkmpKKSMgTMyIzSBJmTMxSazKUNCWMRkIgSpNhCQJJNGwYkyYspTBs1EU0KNCKIUpIDRNBpEmbUssIspRgxKQ0mlkmzTMaA1LFJsyooyskzEkiqAZqWSFRJYIy2bBSzNEbRlIy2SiEps0SUq00GhiElMY0wRqTJSSQUyUsQsllSosUSEFFJqImJMwSUoKaNAMJIyQ0w0SQaCEoKbUNQzWQhmaRZMhSkjMVpNkxrJFo0kxJNJRpKGkWwbFiYGTLFDZE0jLaZmpNGglNhmZpIZIy2Gpk0WljFmpsUlKLNJiSiU0SZpFSRsppiKBjRG0GKTJGGSZhsmIy0GkzKhkIjCKyTKwhtBZNkoCQiSUSZRIRTTQTIymUjLEYLSUqmzWNiohMgmRKSIrRi2NJM1kUNJjRQkhhE2NIZICWJajUpGKpJLSZGZopMJLJJhDGaREajSZCMqM0hstVK1tBSWxjJomgWkgNlJCaMyUomMWyWiyyNMZTNNNkpSi1MjGzbEo0KmzGUjNCMtLNLX76t0bIWVpDISyjITWNaisWk2NCZlRTSKNktBVMWlVIihsGliJZTE0kayowY0lQy1CWosimsmNRlFpUaFYWJkzGpaabEjMYsMzKbbTRpkSrKyKpbDWNNlEllRlKrFKtJaQrNlazUpTNmFWYoUyIsWo01KiS0yiiMsUbFY2KmaLZNjbFWZbFtoSKko22NRsFko1hoiJVGQqDRViqKhmpC1iErJIzEitNhlNJUgmijDNSiU2pVGo2STaKyFjVNJlbVmq00EaLCCy2jZZEzZrIkxs1NKFJM22zVFNmalKmW0qlpNqlCEqyplKTammotLIo2KQVs1mZkkrLFFQaktpbTZIzEtTSNgjGgZsaSjQhijQEJGQRDEIWgpkmBStG1JiZLGzKVi0pNNioyZlBpKUMKKRTKiLFILSy0iBGmimSmxrKbNDGiQlCosWZIY2aNmpLCYsmkyzSYjLZDUMKUjLSRYITSJsRFGxsSUlGRoNI0yi1MtNIpKxphYTYKDJrEwxszahFKmaMkUiGym0ZCzNo0WNjYo0CojSWlCRSYjLaFLLQYSRJjaYTSUjKbBktjMzUoiSTZqUZNtjSqZMWGxspSbI2kyiytiiQzCyUSiSbKSWE1RlI2ZpCVNpmxUFZmy0VGJsUmmomWJoqZbUgTKWjGTJRmyEzEsRMaE0yiyUZGspNkMoYmImpJEi0WKoTYqKjRRqppMMkzRJQUmkWimIyg0ZIgSxYNs1NJJUhAVGskw0lLMhshWjRsIWjUa2SChMsK0EASRWTWNgjGGFCMtFJqlKJVisZTM0IbFSSVMKkoktGyGiLLNqpUBNRaMYkrJqCSmljSkpoKJKWSVJSlKUbaKqINspFFko0lUYSjZLFsmkqLFWzMUyjZprBVQ0kzZIpNiwpEQgsWLTMlDNGLSYLSmWJtU0RTMymsxFKLFqNY1khDYZJjQEURlKo0VmSWNkCMtBFFJhElWlBRaU1TKyVFrG0baZjWS1kgjMdFUmpKKMxSgLIzRRpoREJi0lMGjBlsQUWjYto2KU22koZWNYwGTUVEhWiZtllqNjaLFrEkltSjNlkNLKyMxoxaKZsbY2zUlKyjKNFKFJsqbG0htGsm0m2SjbJbRSalMyjSbRoUioqSjRaLa2y1aaM1CyaIk2ZRaNjaFAtBpNms2opMU1FWkoirFaNti0W20bVDNkrWCLVNSstibKQNiRaSWIy2VhZSiyRs0qIoJmNiSJJMpJkRC1JWmVqY+H+q/oNvZr+en+/bMTi/ff8ycRYajbrDxO+ZIpWH+f+jtmIusIpKyJ22IkTZamp/oT/OinHX/N/mp+c8SqHgLZ3Rtj/wX0H20qf5v0FDHtPjhQfd6XvadUPCGMGIeEp1biUHLUhxPKQxiOWyI+Kf53x/d+3MfpD/lWof89R/j+qyy7/alJMmhGxnIQgO6ZIgZPkggIQhcHYgGEMhBaH8G0phm2f8I3QfpT5tOyB/HM1P7ZTI5xriDlmYjLYjKwEah7/c7jEeqU5ZW06cETEttwwuREc8mdnLxR9zJVh7MrpYjdtBVfKHjEvC04moHhlSPIzFI363AZaFZFUUYmJxmM7pVUDtDjq/5KaM1k4q5uWjYtFswS1fNdeSPNSMC9WXCxctAV/2aHWWRiVlQRlaxRYocymIPGy+bMB/7tP8eQ1AxNQ9clkDu370nhmDERPwacZRIsiIv5/9GGE+PyvTNDy1EiebUH7KUQ+CBRgLPp52X/LzhAXer2rJMRMLCa7tD/hE1dXDSaEHCdMwhZEyGx7jHrkoyW+U3w88ohk5jRNvJc5fyV6WYISJoJWmUEjhozFBEKMKIxzmTIiMjMdopasCubmk0hSVZJNixWPEhzIBmCGIJIdK8LfKA2MzKipIxVgyFEqkXrzkgfpwxPX16OgStna9enM0jMYdpx6KUxMBVREEVxIf7DIdDqdJAoJJxlGCuWVEZqVHt8ddZwTLAzlNGH1+bMYeEgVbOZJhjRj1aIy2gtGFSojLSxW35uDFAVZ4ZJuX/hPUuIzEwFFD60vKNJRGRE8t8t9BkrwZKxX9VqP7qXf5b1v2V/3n36TjB/6lqeEt9ubrAVChZMQzbAqBQZUBakv9A+4Z9H1cjKOtsRETUzhtcSSSoNH41Wva2+hHb9lO3y6b4x4a2mIGp4Er9G57tgnxpriWlY75vuf9CHzZ2hWIHQaK3UHozeF9jw4IbNkJIJodCR2OdfXX1g9MV3caHv/SyrOssIrcJD8oJyBjHzmoc7Siw5X4ZQY40Pj8bhC6ZglPbMx5lWGJPVmJFxJ8zAqgsEznvzf2v6Ns96TkT390w8NhhSgiIt+lM5dx7bvV39XXWycT9OUMu4VzBv+5aT5WnFYsRzTZJjNfkdNMizPU3y8ut6e2X2ZxM2w9clVF/7bV+gtT1t8071bdqUy4rGe3nDIjDaWPztnRaDIKAsivHMlk3iucrGq/deU1Fn4u4aLT6ur7nhJv9ft+L9fa+a9rtEctytd1dsRFFgjBhKkdalQ+/fhzYQmDRIpjRAU+HtZMQRPqEKMPekqEnSYP2bSIJ4agBV9T2eQwQMo36ZrmfBxSWyYSy+He/zweRY2ixV88lTtCosD6mgqLDLSdU+WdCH3cpwH/pjTKFYQvf14B7vHWD+9pPbn5ZIy0RjF7Kecr5T60DBBRFSHi/ncFlQKDfGXUjRXOJo18Pp88jb4za5ebQy9MyCMHuyfczER41YxGoFEH5UJWHXdU8M6E5Syj9aT6cprVUTv6MwB69aYB0hUWfL4XJEESG2qQXu/DA9nOFqKR9LUx8RPZ2CXMh9WwOkxnSBxKmWy7SnLK92qfBp0h55pjEX0ais+n4WE+pmxR9UDxnv9KaRPnXUNDtIy0u5ihxHKD22OTv3yjpqB7HY2Zj2oirE9VGMXi7PRogQVHrc2xugOf8VSitROSBwscdtnG497ZgfTSyAnolJFITlCiiIzGfN3JT+Evx6l2CUpU/OyoetKVvVh8uvfnD/cnC/S8xP9zlvfaL1jtITHGuscQP9r3VyjplKjEGxOCRehzwq9ZxLp8YPWmsv6tcSbCGAUx1ygiZ86ZNuMxFcsOZuFHXWfHczctEJX3dhKES7sFdHyMxpdCHExm6/noqbc1pHpUONjwahZpISLkaP+adohJB2kHFSo3ORIeM4+rGPd4Z7bts+VmKh324kxvtfljKxivDaakz5qmu4fhOEVdZwj+lHZbkIVEaxVecA+UQ4QfjiE9hQ8YOROdSjoqQboEYkdMXKIerpxP2/VZNd5hj9pcExFt+ZlDP4jrG3zyHDNfDutV/JrlaNvt1kfwzD5Pr37W+NYO+/TNLanaZhTld9jdTpv55Q7Gfq/qZhwb48afoOcBDFVOZmDMaxPlaigv5/zXH8mjxoVIVUUfdT+x+/P8/0cx6Z7X6n7uHJsnKHB3aBIteGC6YRgz5aHKdk3JrcKJBnSQyE25WVESDJAUb3gcE4dyHWM6MpMErnPrUEygrOJMyixtK5Si9emTXQV/ZRQ+rPkyNkOy+WH67FMbu8nd8iKJHFh3SSZC3+EDcePu9qHbEZFBD8R9np1R77+rZ8pynE97whBH3flLfz01MhGp2md0DpS6d+aiG8niPvXCaV7J0wkUjoKCkZR1k/S5jOYOJyo7v8rlbXT3prDKlGfBNcX3UwebZGC8znnlSKEjqo/aJnEjpXDTtXrHnM2nkd3X1DhC+Xu5hpX2agI8dtoYx7Ox2RgQxatNDdzZypaoDiPIzGUfsek65D6ErixUTqzy4C+XMsGPa51n6k/QmfQ95SlrMv25rbPT8N/RtOiykLFvo4v3UvpeeybD02kEylGERBYKduJk40WCxSJ6Mu2wVR+iykQgjH39YYIPEv2oURfmU+lXPm1UQhpojKMk/Vd9cJ6v+lUQR8ebwGXfRAUHWKAcULRbGfdmBlv04GOJMyrPxZ8TL/E/1TK/G+VAkhbOl7kW8w37qg6bVHbZzpP5wzhs9YkIF+VJ8n1Xb1Z2mW1O6e8RtOK4noCT1er+p2jly0oB1naMJkmiR1Sf33AQfSZgmhOfvex+r+CnIwYCK9Fh+lDIY3y08unenxz9dDDH58a1jtkrUo/jYUF1uRL/cUVjSlLCtGKNcyn6/4LjOfZ179DiT1SU6pWMEX+o766H7tnWWK+DLgDEFgoDDieummFEn35h93LzY/Pft3g8jMditb7/nnptCqIdk3LsOhNbP88Ylvxu2jp8Xn4HrdvTwIQJFfen1dh6ZOI4dZLE9788uHKGJbRQUTp/NOQl2qcimh2R+941W9hTKkM/WILTBqr7vNnNKy34++6od/DMgoCQT5us7MyMtmiKoiy3pmPvfa2ofFN8CEqPbv0t480HCg56PBynQhsvEfu2kgffvEsKXy0XjDswrEU48woiel1DFIj6d+hvv4MziNJ2t1/eiMN3e/i7TwXvIcUOSwgSlMeSwiJbsQ/6l5W8mIzFxRRM9PsfPBuQZ5cfiYI8P04TDRPszxd3alfCZhYp9jPpI/BJoIpMg3TWIIZaLv1nqP3xlIzHiLHmCKe5JS9lseXRe1C4I20lQpuuA8U/W4Z2Bxxc8SP1W/oGFTS5TStz8AgO0nSZ+pQypIElud0CyWgahNVtPXlu4TFUnjxuanfqWHzGofQ/U+vf1pbzchUDoKZx0jXjz9dcip3a8yn6fV7714YZoRn4TwVUTzSmxV9LCUGEYg3HzTRURgBgw1BGA4pRtnhhWBqGiwVQWKRtPlh5ySyMo4MhK8SIxZ8WYHmhfxpVHjCidWz730HOVebsl1D3YbnMBRRzq9FsPHXvyXq+Zt7T+mYifPMeaMpmLdwSdcIzl2wvH7fygI6g5r0eFvCiYJx/jTx9a7QuGsvpVEbx0q/kXu2+z89LceT3DqjnaZQL2fMO1qN/s591T6b9JOfFzd+B4yghxnFNou+68dH77fT8bIy36i89iypT42/ZvjniVVlXJd0hJlMETwqafJ6jpwWOprp2k+H2b2G53aS673ICyRKFumJ5cXL1tnXDHU5Zt1SMxxaKHObcinGgFIRFylQbU7UqC6EgTJCEjMRxwJSPm/fOaYxYOukecMK3YEvRDitCTFeXaJlw8EZlOTiEo8x6y/gfz356cWN/GTuE9EWSb1OJDkRHQITCCYJJpOOoOKy7LLCeKG1WxIMNUPVkP1fhgYayHn9VgH3Pvfher2OtYsjofLcZm0oTM9t1Ie9A9y83rSJZUsSw974yi+lr6dffznE2tl59HjgKbwK1K2hPBW90JsMjx4HNVlodeqdMCl2KxETh2IYhPRPoMK91pTSwqrIvWZhnxsLgJD/gOcqTLlRtHyk5gpWKValY+ziGJEFoOCMRcOutwU7bQJA6KF2Tf303kqJWLkhfW9y0UfbecnJeUnozOtOHN5u1Gc913lLFHaXGHuTIsiqPE6ywrKINtSt938+H7Pl1MD1Q7gqIIvnS7fVFjhweCGCru58bdnslB39/Oi6XgCOgztMiMo/arRZSd/KAeed7624Q70nZJhCPq+FKyqRdOR4ua5oIYpb/1jhVP/ZP23Jstaczu9Q4X42azp5egz99LPoloo7PBYJhjn305nfpoYJglUO87fV5OD+tvIy0yeE1P08tUZ5Xfbmh+vLkfVDgcvjC7RiXzaKJ+6rL+vxn030zg/TfD6W85Wbfr73FTWuMtrc+XxyGJwEYxRFnkToH3bmT8zfXc/Ttmemd6b0yGMFN8ci4rJyMxf2cU/g+uyb9Nh8RIFdLw6UORQ6TOhOzowolc3Ct2qDtwrUnY03NGBcVwKYyXaHi5fW+aPGTtwTZpgrueFkXLiMXHjl/kiV5O9inNxhoPk8IEYTUiEYhzrW3iucJ5GTwmPhMYM0TUKCLEYiJEFzDOVyMtTdMwRD5ocR6Kfg+5md2ej4HBD9bTX8kO/PJ2M/b37t1VnvZfjZRnm2xnlJn9rVwFUhnb8cKxNbU8NTdmHy1RKEC24chWY7QSzSndOI7XIy0HydmqpbMbX35d8cwFgvbxn8xdZ4+fDrW1Dx0jLdElDkhACRL/GG2jr9kjw/g7N78yGnftY4XDX1wlGRL18DVxShdBYEVVFwzJSU/E784zZYwGVODgFaYlxJx2M0DclwjGITxSg4MqWN20YwyykPlt4gakRnLJRS0lFFEc2qO0BNJQEQEQQQMccSo2FRYrVoDWlgnjQmLWVwwz8ff9mceMzilzcfk1NyMop6k5nW6IEOUEkvFOkktV0VMONxMn7M8s7CMxHEyNf2btLIUabc+n7PwjMaGhVDRyztOciXWdZuPbi85MouOJmi9UOz/f46f7bsoucnWxzSunS530J+6/CCp99aWhsEcDQx4FL+pUScahDMcUAdU32pjKwW7Rh7cxUkeVupkg8nuphjSZ1ZnlmIONBRvmlXColGcTpDMqVbeWT12za1KuuRYc/ip8np/nrT9bIerPd+rTXLTtkhCDgXw5etn0rrUGUy4TnKNk23dfuyjQo3PAyeV7kUSueSjNx0Pe4vc9a/zv4e6w9M3FglNfenjksV6BYZRPIzFavdoGhppUqs5EouCluujsofzTIcqYTlBTMONtEyWdELz00ZqkVXw4m2XHl79NcvXOBAUIuSMovNuv6+XNq1m1U1R0x48bIei9zGu/c7MUKT/RVCMxaf7MdJdfLpdp+9f8Gp2loV684Zt0z0/xTr503sojLZaPZwTmzuWt4uGqyPT7pmhMU8KAdRmIGSbejyUMfX7nalsYLI4QP0VxGN+k+Lwd5bbLxsmeMtSlerCGfTT5uE+CVkWSdoFnS+6UXpovmhcQ9fXnIyjNsz1GyeGK9V/uvuCWeXNnUZeHWcP13zxrjOOuxgj5LghgDno7cU8nErIeX4M6YeOX87erxhiAz+iwpNtRIRRfZweNqGmkVd727nl1ImmxSdxo1dUjLTHNQGikxvGWa9ubl7+28FnHr6ShoZbPHjD9aSgSwvJJPqS8lNalvLUjMRCH3+Pf9ZrEljtD/HxrNHux1SR6ERP9kbRhcJ/f65mUOhJHUiI6I7meBeiOkfdM36ni0wzZEoOkouSTogPbTLMSIhyEG2HT4d5ERS3rZEFrGHL09xzHCNEUiMS4UmjdOxthnY0IMqkFnhtHgdX9m31436tuWyFo9BtK20I4kRziO3TQYzWySH7ms+Omb+Z2c0a4X5YPDpzzjnyveSrk/SMxUOFcLolcOiVGqUzTyeFL6UNBNS/O5zR8JZS009nDPbO53584c3LTrJakufji95iS03mL1RuULB+clHXvlTVQtdT1XPu0PbslhOM7dbpME9AoJ+NQHiMxoQF0mGX2+jcPRhJTUaKWFZbwSu1vEiwj3v6Lbr5Tsf08/Z3kg/3kcdY31xWCOPXBKjNzy/Sof8r6Z0lrumxd6ZWlkYe3bGQ4wDsRSBEYHjShd/NRzdnjco4pET8MUdcghKa0kA5yA6GvOPR/r482yvo4pRhobOcLKDdCmOxuBKPXdnCFvaiB38c+NE3j3ZUQoMPZEI3nG/vi1eF+JHpttj6Zyjbf65m2faC+JelJuvGDUx40Wkcu5ndQIfM6D8SiLkHbw8XXTSYpF4e/CYS+Pk89c4zXOnb5aadr6rAtxc7hQmblHlz0jptMHj6VqKHuI8sWp4THvxhUXXS1XQitCTQPu0UVOUf6qBdbfmd3o7JLhzsL1bvehSuVEPmR4SUnaB/BPjoMH5y9lY0ztnfCsiSVTU9nhXBwP9Zu+jRB77zdZsyzri1xnS5FWdB206t9eaqwVuehStY6+UixjBNRQ7RqqIxhi78jLdaRyodmrQwmv+ub13XbtmyNDC0t6nwVIzGYUaiMcLnayw50Tp3QgRR8tDtfgcaCKfr10ZSmlcqYNLpequNF/vrrIzFNxz+Vmpj9szX8V+X07s/BHJWM3M1h/WMdWflP+YUblq/4f9EjMTyVccVLSgkyHIBcdUc4fCDwZUdLYabYsUIZNxdh+c7/pK1W/eIvXHlfcy8nDqu5mZmCz5VUNPglwfBSOz1fu3hIhIkhhenN/k08vcpfBbx1osipvzeNeyqtp9VqgTaUuW0uOhEU0eBA7CMtc/LzmrTXSUQ4ZQ6vVo9P3fTWdHVsNbAwyJS2O79noke1NmuBlEm0mwhMyWjYZDn2tBmXPsLOWZmCC8aJJIERWIgaP3rxc791acT8uq7za7r/Vu06Wy70DGCpi3AjLTEYG/5ZU/jG2FhD8owttJDQzYHQzIc7o/s3kr/qcwZ/YssB2EGIjySQncRYhJkkgF4r4fm7AxX2aeHRb6pEoZxZjyMtpyq+/5VswzRp+PmsSrLUSoEhUe6zhw4++dEUez8C3imZRScRDmx+nLhybpMuHHLfbLvCgtFNQplRTdJQUFPPeSp0MKcfTP02cwuB2iLpwyWyq7jFUmIQQtpMHd/yeuY6jMcFUKf048L0Qfu+l5dAnZ5CPffXr9E/ROqdGZbXPL4jKH+9DB3iGYCtCZCY27GwdiBNw78fM4GG1BhXZerik12+EPUFOPy+S7ydReqH2TPErN2NrvHW95F0l+vFxLbLWmb3y/ZAjdVCUIe6On8O7451bIX3sL8fJcj9FJc6nqrazCOK74vL9TtGX9A/771ir0cuPu2ZU5bCH/KzQjHV4b42N0/x8nREmyQaYWSGrqytxKclsU5Fu/oou1qDQHHZmHDpNUCZsaftxxCaYDZY7/j9Oe2dYxkCQkgRjr31tf9su9k3j02Smb/fB8bOGSWjFGWWaPwHFb+J90uoWCVET/d92LDqTlqFs64221/NS2GNDEBEndhInXAnpUYUyNCHS4Vl37frz/Ya8j2V8a/wH58Gdo4Sg6VDbJJIDphDu41mp/OydUWms/inAjrB7v9LzN9FyQQ1njy88uTpwL27/Baq3SuGMK9o1AHhXb3a/WeHt6YDMriNMSMtoWnHTneP3vUjKIEJGr3xSjl4OwLtOaU/l84z7dIiw6poSRrovDB4H0g0CLZGZfGJdj+z9LlneIiHNlES99dkY6e3H3OzkID6lK9tZFMjMQlSJJ7fzoVh10gjMftweKZhhR3ozsHucrbUFmimMGe8VTGYPsumoZnz6eFUket/14/ONmxfLQZWGZ3LXyPGJYxfPi1vbODJc8l9n0zqAdEZ0rlPws4aVbr5Xk9NOYsjE9v8v0wb24sLKHjIQEqTf0cICzjD4JYf7qIjMWp7XiV6B3w1ap4Fw9xq3S07lnhjihh7fw4xWo00BM9D5xse20+7B/r4vtudVGnLVOva2yaqsWWqoatUaet/mx/6oFWrg5dZLzxM8NEFgUxwXgvbbN9zMx68mT5rk0ZVO3BQM0a+1OmZmCRfgbz8cj5H/rZmYPZ23QtOVZtMgqTa4/FVLVhsIzFkTOYhnITjvfw/GJyJrX3rGuKlvRNj+Kk1LDO7Ltcg0k65mAOv3zZ6/2dEtcNTaNhM8EQGSqelgGwmFVlTXJfhf18/V2ae13PcmBdXXBM7Qr5NJCEuNBRccaoMwrEoui84OT+ajFSSt+DbfbAQbkoUV5ZvD1Tpvoqw1ZYcTsNlMMOAxLep28oicH82+1j0xXMbag+nayTDD4F7TUo9lvwgjp5KhpwzGQKJ95h8f3Ac2ZnjOP03URyNJXQw2y6DiyMthMw2cGcbJyJIRCMtE7Xd9c61N6+Mwk12L5DVpmEJgq1Zndrab/as7qmrk72mlvm8MsdnJE0oCTA9WDmF7Yn1vMCdst5adt9sSLTuyWSYYUP6zi6IGTN3F0Ogw3qiRc4oSbY/T6Gc+SUuSGkUK6tOzLgcIhdtRiGboLIXHpK3xZIIqzaUWBdvImqLlBGWthN1zLwiEUJ0mpMw+uI/c7cxznHtdRod9y/1ywSIMERA+vv4+OcEV8CSxEBFBZU/Wd3nEvqb41h3Exob/0f5FUPjvkR3JtuSEiQbnp2xaGiR5kkP9/55Oy7w1+FheNU48eWdH1HJEN6xc2ar1pArSkXRsIQRyiEjKKZkCBqoPkfuwfcpsMQ/G1el7evoUrPJD39i9q7Y1xPji9HhB0ojh3Ck3VZ112klH2f4Ohv5730w0T/dGDHuzv01CShyxNjZzqIv5fhvewWGuRz6cke/ybqbHdHbuo3U0bz2T4RNuIF7eiMt1xc+VxA+oPcXnx5grDYwY4nkFbIxbtT4rx8C5m8CnQvVeHUoKY3pqExDzudtjlSlBUwZxCNAk8kxnjmPC806F1TM+hbQHhD9ZdKKXeOK3rvvbG6Nkx4t7JwTF5qCtnVkhMs7XIBpg9kYKCMx1F+ZVoizrKDKBeJsZedkS3ii0Fkts7mCB2fDEyMtVGNuvfwuUtt8HbCnb7HpTOzOt1XMv1I3EJaVpQ9Vh2IGpePV9LdU/fo+fdVjEP02PR2ukq6ztrljYebkJHEY4cHR9zeoZ9PArYNu5HSZzuavsRxCW3U7yHvy/dehljtv5XNpkj1y6Ifv0UEk1Wozhnx0d0xtLfPHqEMn5SgTAn4jyoMQzY+39nsZymsZnMmxr47YIzHH9BD5JbJERmZz6PByfx26mvg+3GAh38qKj6/q3PSW/VFreSESjP9vZc/Bh17eObOuX4i/QkBTuXrCamOsVyIndNd1XnbmmJI0O7diToZ0AkzJAQi4XnFiKtPj54ivr3XxqV43+f19UOjWAe5JUIosbgVFQwug7DDREMRI/bz4aG86C8ccERHQkh7oB9FKh5E0o9OeKxWG7Z2LYkl2hBKdBvG8MYCtRRkeoUUnJJ/r++itjA7HgY3m4KPvw4HBdEbrDhDfFERjzkgLF0sM1uYdrMIuUDjFXvR5x2Y3xubtsvOahj84fKY5TNBh2TJFhUKWzrJzRfMnAuWhXyh3Ii7E2IFIogfRw1znv9fM6ZMcjyIh2du6QsKRPkeUdPPrRjDFxDpkzrnRJt7Rf29cgfHRsi+PKTjCRR23/aKTj08zRRkLWnZnIy10T/xsuMdvOdDVvfTi+u2DMkZrz8L+3Bw738JpI5CnslL6nj7s3hYdYZjB/wbcBDRohOt7DiYmUz+6I6JpEQ5us0HSzNaExfFNUA6A57zo5yKxiQsUl5fXCeSMOxKDKCJS4gYw9UKyCGlogf6aWA4n3yKEEuDaXCShsVyW1ti3zupZmFwq6DJFS/Tnk0dM844+ul54E3Ek6RAoiSZfG7dTV6RrX0tbwSVRTLGESCAaoyFSRYeWTthF1mXDIQu0hOnImMnEeqEwECKoSKQoUIWPPU2rjQWUxraJDtzysJXb9UIBGpOOrMetStcojPZei+vnPfkxx7yjN9Ix9q21xYiX5RhLX8q+IZ6ZxVtRkgiARCTlxmxv79pU7N4l/Zp/bRTtv6tbbK2NMCU3gbiGwhGPhrvyH/e4SCtu6kojXw6oXIt9tP0ej4vTo37oat1J8p0L+/z3Waj6MKMtOwFLaXvkurIC1WN0Sk1IUStQYKMMpYYlzR+aarP1cD7M/h58GTypt6bYlF8o+SzA/MOmBSZmJTS6bbmemCiEsu6X16Z2b8KgnesE4UGo3yOWxX4ObyEjft/vu0V9eo348eUsfU/SuM5bDuVxh+ZdmCfhte9ZvwlwNHER7EojZMyhh22iGYtZ8XEmA1aY5jh8Qf00zD8Ir9fV46LRbcb+mXfvPuZmYMT58mOHHEiJNHhfDmxBggHdhpOBCJEXFAmspyMxTjNr7dPZScQ5ZDvsuShFffbbkDIVBfQ+Rvg0n9nac5WL7uYkP2EG+WE7HZW2+KAjT8uremdCDyhQbbaSdIWRhFLj+w9T+85568a1KhR48zwn7SFyFB6Ki4it8QGyVqSYC10fsRREK4QgZSNvZ4ZrZFvUxLMbn0fa9Phd6FT/Z6FmwzUuICxiYDJL65cy2YyeRMx3lNk4zzpsyaHQYTq3GZlj0zkTWG8Hco2IJYUbFWHWMSMoWUAcLNBLH32wEZDUC1CwptAphMw5kLIqnVKsikiw4JidJgJ1AZyTCNAThYFYLM3KZDEw0tGCkgwQjvRiTHvuu1PiWZmhJL1Mz2X5294jiB0gg6v5o2/uc7K/4d9tb9TwzHLGvsLgahuUaR5TmBol2nlwPFBPhi0YpxN4SRCMbQziJ1V9W+WrwI4w/DzsLovTMctPGnqoGrseE7UyHx/R83KpmTHg20jdEDpnenIh3aprLRTDSzPQ0WPFS9VN8T8t8sGgw3lsQJvI6VAu3PCjw/ibmDaXIQ5B0DBJO2et0wsPLFxAKOpUorTDaxVPhf7Dl4L593psxhMi5u4qKZktsj9iumHLp2xjD5SiMSqtlx4yKTBRsupnjnBSWXo03OxW+D8EYL9NOPr4VkLtxyAjH87SliGXJz15upQ7X920GpqFG3wqlIxWhzo91PLK1JkjLXAmIzHeMSIFKYI2PRJyxkZMPhCRDmDAPJ/sRgRM9w/Jk7exZTBs0n7yic8YSKVptmCOPtNrOizx7d81OEiLIJEmpGO0fNXk9Nn2P8oI22Ez+xiccLofCdlnjYhJDgtDu1Tcv79o+S8dveuGZmD8PDLJbInj3Y6If02nMcmScVqRGKLOIIRy2xFUXxsyc/SHDBBD820ynZZgZRQnZn6yMdvfesFJl6j5UTvZ8+6+EpYpYy5E/HHvMMKmw/8ckG0EbsiWwQRth8+l+Mf6ZvZ8GBhuLAWRQIEGVyMxTSjgb+PrnX11tepv32V5ZF57a8btJdI69G4iuibFZaEwT8Dh2msILG5Ce4rGxGsYLcra5tJFqUILJKkJRkBjAtB2Sm7KIimtaz0uZIxWSzfnkDpMSL3+n15p6nuD66nLbsOIBC3HRylkmmJy/gsfodk2kBhNUN3lIzF7zvPIEx6lUPqAEpVDl3m3v+5sMG2U9AfO3E8vsI8jLeS/DiMmkXO3O8dntrhb8U6bO7nK2Oib6S/Y6jkYuVyNJ00VtWNrL6lD4vy2N+dBw0H/aPVl03HYxmmhF2H1u3JHHk3m5jtSqtW/hXKTFHjRt8nDH4aDRsnCPVjXqEftVHn2DBmH+Le0ygJ4J4Omer/qhMN0XyiJ2RUPveJiUJGEv8tES/qq1TmM4P7Cjy9w7fBLERSHgKR0eqVxYTwxsbmeWFJYTkERa6BxCdSgGzDF4l1lnNGN8XFYiMo3FiaQT5UcvJdPy1vCfRrf9YrtXdChFPfwab6O/PbCfGkx8ppMZ75N07vk4ESuZ/lpiGx3DBnVEaJ1fEcjMfo/PGyqjwv/tsaTEyiTzDRj0ZdX4SytvXzK/n4HbeHbcXcqvuplbLzW85YIRdrPqvDn9kqAsp27t36H/llE/I8x7Pafd1cOlf5d/57+/3/b98WzyM+zJfH6Ncltomdi9jdMBvcepndyFVdBINcYiUWmULvg1LSQfFQeY77jt29h8eyuRaVpYH9KsM8Cn5fZnMqGsVqSYq1PrtcdBJMRE6FQla8YYqW5TIZrfHj6p/w9fHp+Vh/yH+9/qere6dGZ/J7jPWYlN+/khdCmQoqDGmUu6NFw5PjvzmO73zDkKIjGSnS0L+XpcCMtTkpmFShluFqDZS4lyiMtS/zf0+v94kkDRTR/5qoWus/euq+FSTP7f733ubLuVQx0aBJAdhK6NZZHidb8wvr1ffCr4N3ap8BzmKMEe1BuixFv57+j9vNiLCoUaxGe07WgimWpNvqVzJiRUqbEqT7XGYmktKja/mmy1GLBkhNJAzoCCSDLtLU0K36j32Q7+wuLJbP6YH5LyHj3dHia4+MaTCra6hjWoYCfzIYLGaz+DPhk6VmMUUWCjaBbSSiEkNBAHIIuyQyW1RQQQITYoaeHg/fd9Mz3T0NWouDRc2kuNUtD64UQWEXw2eufk2l7utaEvkos6QimRFIkH2xqBY/fIzEU9NqIijaiMsLY1+R+zvDv5S9lXn+rcHEgiIkUPEKz3MIfgms1AogaIFBJqKooSdxgfegQ0YScDlhQREgcQPwOB/q/x7MfJ7UxVExqQ8jKGMoTiEqRTGWlh9AnPmWHBEf4k2Y9EtLKuP9YFN0h94h1HGB/bBr5pKBNv3EYVe+SMuX+M/gp+01cXWsec/U0uQ5Z3uiBiEIE2aMjKCUZj2Wux/uJ6mIpnzfXA8EzqHSjgL9UIvlY+GG2L7y1JdRQJCBv7qyI358tzj7q7omqbEO0RofIMzTC2nqz4TSi/cH6EMh7iVCqa1zThu8bXGce75haCfgaIzEhAhEsT5MJ8D0uvYhUVCJRyHxKbq+YYIm/Bq8UdumP+KGctlR7Rvqwv6YiWc1kJy1hCKlWT+Fk/V/WpqsP67RfW+ieLdQjMUQOlSZFBBPqbET+dKkFk1D9Pr8P8fl40cPXAdKHtY+DQ+E/b93ZV0ebd6w+XE+W79/jD+s+areLlVDlHlF6+EClGfbl751fgfnT/H6bufsOebcV4qC/B8c4Rn9E6V98uPyntIFd47Y/W58t3581BG+rs62LqqKz+MHDig7AbVpo8iILmOZUYx9Dwv91lt1U8GS5xThTwt8dOjoxpn+2hw5CpN2m+28LxKDm61e0q0Wfb30H5x4rgtkHqv/xl4+FHCh9lpPM6z9cdCFTxgbMdGqMuPkyx4T1FiWCTsEMaHcfYUX9LKZIf4q4xkC4ukaYMbofKquHuY4a/Za1GYfTKxD7/7PeIyih4YHdIzEHVLntd0wvsG7AxRUxNNTv5TgR/ZZXTqhCHPqtpZRqh2dT6cNPliKLmzhVBrsc2u5pfMrMQZ5uOjneRWaS/WgonJG2EFDhJxrU3y+l2/ssc0pvuOw8586IHsJcIxQ3pahO48YH2kkjKPT1LtTe5GP83fb+D/kaMNHxRAgzMbCb8uaefCym1DpGXa3+537cA6BSfws8jIKOVi4cQpkcEkyhxwZPj+7tNYNU2eJI/wZj1pynHX4X4alqt4NyYJEeEMfOHTN+g78ufTRMMv6tKi8Zb5Ci/DNzbbEevqLmytZbz8vnxS+R/7fwkhsOPlzZMOGpMiudeIsJBQhJkCsEOBoQwf0v80Cr3r7SyNSbBNo7UMkUQgJ8J7hE5SEe6LlKcXwVBpKPt/l886RHnLXYgsqWeDcSdy9Jby+q++/zxqNVUY8sogPSND4XFXF/mrYcTiFBhS0ELZ0J9ni/sjz89L38Og98FUhxXuc6wWdeyt4sccPpygES29O3IdxQRgQIoIlL6rZaYt+4+QMDT35JJXpgvSTJOmS1IyivM07m7jbdUbWRAfh9/7OvW+1fjyM+hURzM9NrH62Zle/wX2RK0yMtCSH/IGh+GWsbWmY0rylpcWpcuLcS5IraQG/nPRSYCEXEEgEWoO1yZwYfJ2xkhjC7Qdm9BAft2FRP9KelfLr27O7H+nZu7/7e2Sp9fl/fi33es+hB9wHZy09WS7m+O6vT8NbWe7Tv+/+ttpy+c0hruge7O+rabomnz0T2Z34U+ghbqRH19x+3Xtz0F2qqiy3Pd+E6MOOr73sU60/yLzXbL50WG2P8v8JcCePM4/dq6+E+m7rnhnZmp2uPlox2VOfVGf0SlkvL/d1vQ/PQb84y+c+bf3fbw0nnx9X0avLx/EmcuHHm6+bb489VPAlx44j8NcL+j3U0GnZd4cTSX+nm8PV6dBjlpPff2/rDSz9MG9nh8Xn0Ww+JpMgVeoMJ7V9mfhtfPGvn1W9UZld/VEzv6e6QhV5Stb0u3v9B6p7Cs9w5/Tr2Hk383G/bnLP9ksNVMG7fJ7YUz1bobr8yHDUlz1OLydv6bb+fs0Hk4aGy/pRlqjXUUw7CRR6J9E9mnmrnt7L9lO+aJ5tYrVwaBVy6j2Fsj5v2cjxsv8ypp7ufdzU8KcoaqhyvdLqne6u++sqyztt9hfQ7XmPfysjRwybPz1UeiDlH6MOPSctdudVp87lhjI1a+JbOiFEHhzD6CE5IqjGPY8ofj74jLbPlOe1a6nqXj0W8+2zvojabNnt0XlukfiMxXk92u3w7btfq5/JaWQ4wy26Hl73Ic3J21RKfZdy5dE6Tm56rdnrspjreqLs9BJejvDGZS70jMZX7eLsoZeH/XK2nbx+Q5iMjmROMh4df0d7Vxunm/r/VI2feNpNHqPhzdf6lV8nt3HwiO2HG2iOmLyzHrNUdVPwJy9b/rqs8t9pVDqvx+o8xG3jwa0/n5dMpQmOa+mnJpalZ/p8d9nwIvCkjLTIMKO77dluVh+OOFHXvjt+L4o+07S7bqtX3ebfOd7t0f2OYpq/M3PgP+T6/k2/tzwLZGz5v7qy4py768oKRVOcV/Qfnpzv8X0+stv5qL/k9WmqmZWe/N9vm9l7lZvo+OGW0j2/ZVTo6U8/Mn93uhHjr+rhshquhxP7Cvz2xhowbcKFyS9NcNTn+/qszZNY52WFmRn16iOE/VkHXZlsv2Vxu8/l/pX82day3HI+M2/9f9u74fD6/kqDafrw5a7pc3TzUP59a9VHT3GyHLx/eT6bYE616LyEG8mej6d3P99H8cf3ISf0Shsn2lmKKJGRlUeMLTgfn1xP9Pyp1fLztnFDsEiuEU5EmEnE8/KPvP4nthJUH3Smm+RkWMMNYmByygJkSovy+BGP2fJ7wz3gfwnzdpz9Gj5/TZuP9Pb9/m+jV5zrr7D0eR9gj84m3qOymeumOvtw6iXD7WRVX0Pt0bNenX9P2edaUPt5f79w3cmOrsr/sy6Tw4+f21dn7ejmOn4/z7/1FhA8h2HnOjnP3HSMt97bjU1+m5gdv2Vs9J8X59u5vt/R+ny768Pmp2xbFtWjlb8dJ7ik0+Rv77ui7ZblyVp659ny/EvJszb3fSbajy9oqEpr1i0RHZH2mlfw4m4P0/SvK1TdXbugjKPveQj4J+uMG6CH5cee7Bw57sj9gwpgQg/T93Az9V9YeYSqXIbDcCH+Ld5yu/tkZ22dnR2G0uS1fLwPJ/Clcdu39FcU/4Q4R1i9F/Z2vpsj+qrhZUlS/yruqurpZfKjv/l+3CypqUeHVV8VGGi/z8jC/59gp8eZtPqqt36TywZqWOb5a7Nhf7KTTpWCgwJocXdiyDNTsnXNqPdAhbdr6a9Ogyal6ixQHRjZFK7NqQc0jMc4islkW0EGpF62qpWxPRU8LpPqu6MeGqdVdGNyXxa6Ob4+ZUUS06dV3TlbzY0cwcIFO8604m2Rt4ZZJJR6/tcjJuMK8m5Qgp1f3cY8Z3ouNFckknIWSG5dUtQajZ+W/T5aSjLb6gWFkfVp/G/dz9k59r1Bso1poJ1OZ1Cf1UVkPqpnUY18E8KPj2Qh8cYcMOvluuhfOgjk1qulJPdQ0GWyVNdNKsKjPUzW1auEbdHqRzGduRx7/FyBbvMYdkROYn/Fesas/QxHninjrFdOj8hO9h6t+0/cOzUx41kHTbLCLSEIRBx0WihKI8AaTJIW+/YW5+8uX3+2qwW/Rwa27MwLcSvDRq5rapmGvHHGc3MfV3wOHvr/t7ieqst4fyIticxNCrocM0xPTy20BHpWoM9BCVtkLFatciuGvhUQJMqqKoVtuZPvPhtrEKWGXzXR+w24TOnrqrq5Fbe2J092rOme27stspsbmE36YXSfdzCIFlFxCJNP40b4/Ppe9BQYYs5o0BbpyKP49dd5VlV/nG7pvgvpf8aKrijTr2cfh8J0qRxXPFUweXba8Rd3Bx/k9cdPm+85vfx8PL6jmbvLDAR4mlfq9WuG2B51tj2/x3j7oquSf9nN7JfPj02813d6roNo4S99rLyw7+ibd9x28b7aDC4bhy/VH132d/o9cy/1Ggwj4BibVLpUjScvKklHmxP7/RSViagnxxL15Hfw9GHThH9xORBqq8rKfnp+CKWXX66n1LpIcvnpu/4/OEU2oR6IjLfM38IkFCEG/UPEI7ubtUxW0sMPvdmNsLSi1j+rchjDaMN5NIdSaVpCjeEszCYZJMpcjIyjGFOhptmpMlElKhhDCGGCiMhgh0nhDjOM3ljhSTRkrRNpdmzCB1WRSO6bDLkZGRcCmFMxEbpJVQhKZr4UYXo1ByY4kiPst9VrOiHZwDsTlLVfSFg/fgZkbNvUcSfl6X2OubtOmzskpKP9H9PjynunD98upbTf22nGbnI+7/l5gc5Ym5Y+x7HtU8mU96iKIhtJQaSEhkQHHTiZkSHJCJ+TN+VsDgjkvPaVAntCh7D7vccyJwLRgmFhaODhgDzbPq5DgnFEptlFLMhjMtgxgyy3jmRo7ZVMrZhgm4Yf5UpFDhe/dt+swb4cLN11fbRno2/Ao+/H3z514HzkGh/Tqwrvzoah4lxpq1LTpiWToz99Nfftr0mv+FdGOrUl+/0eNmPpPOt/5/d584n78KuG/V0/cddDGvBv16L2qLceuimr5bE7nt7q7NC8bntrrv9s5k/4wqHqPopIlSaBf0N6Wi00LzlrUn5Hj0+z9X5vR6ccvPyQ1rIQuKfzHPuiw2lWO9v37INdctWr5uJZn99F3N8fLo58aOK2W0I2/vhZGLRi8YvCDwpjCwgWkDv810v5dXdPvo+/y/t0Urjwmicez+b5Hk99e5HRJfu8vxfoorj+yro9XT/O7j09vRV+IHXfZ+6j9Or1aCYUnnISqc+otI472bkePvcgaHaChS/2HeEQznOcZJzE/xZffToQ/wt1GebBDEPftTKbTC8mZrITVkzBp1pMjLZJ6HLgwAtUoxgMZIy11MGFZuLQGKaRbCabX1RdMqZtt6u141ymbU2TYLEQsthihhmIwJxIFjmy5ksyRggNq1lYSsCUQlMHLC4JKZRLLkWKSFQyTLGMQuTBwxMxkvn5bDhB2+S49S3rqmHXeHRpNFaTGRcaAMmGRImSjRBwMGscGyoeLet9cO+YJgppezCVtKGEpYICEoCQpxCMxRSGbaIybtEEiBkSMUUkWSKBNuGSvW2HfC4cjMSUaEtsuGAKahu0ZuD1dcLO8kpyFveEOOmG0m3SbmZmy5YodloUyk5DbkoIYSYMhh/SwoDMI7esUMynS8MhE1BSkLCk1JgT0ZCMxZHYWtZj6lyCuXZYHhksjLYnKZMZeNxylkZTCU9NJpriGgXcwKFy4x4BdAgHR0JOAgMQY3wOqsMOSIJt6lqEuFxpuZu5LvXDgxRpzE7ud/x+Py/rvvNfL+qb/e1QbuVJZafPB7Kq4o9orG0nxYVYdfkt/z/y+jso+RvIvA3d7Ym/sy8xM+63w3Hxxtbdj8x9Ud++y24qrrjLQNTdshotXSquimDZTx1tDfjZ9OrHD/C30foNYezPZ2ffE3asWbrlFob6Gqb0G1ucmXNN/CDalvTOnRRBvqh7aY9sx5znOMiUJGu/s4tZ0VLqNbx5/JlA6BFJcS2zoUyZXd9N3d6aiEat3ZVz5N7riP2ISrO5Y7fQYR0btMSLo00/usooFUWU98nLJnhwuDufpo6tY46ljQ1AXMIDDQqOaXPN4USIna+HxD7yQLmmQNNvdAkIdTPhbhg5XTCwOI3897Yw9+pRg+hxO6SShB3e/vkeuRhY3EudoM2kJEHPXrhV6lzLAXyf3UeNj5Gj5ocplzb96jk8JwWiDvjzPt8a+RZhh6YEpIzHXfrLLndT1bBqoYhl8uuNZbiMo/ekhmcXJDBsFqkMRSo0MQukiBCESbWJRbmV2vLF1d0tmTkQMzKQxMCJP89DOwa1VtyfnUsiDpp2mBbKv2R3x47SulEYM0PY4IRIMjAxZjOTM0FvRQFwBYoPdfmqMnq72cMP/dn87bpuGWEhoMnWh1eOOAgjB4O7vdWWJp0/37GDM3mO2xv8jKUrr31++k3l8du6Flmuuyu3PvbS9ZkI5qvskRxexV0XxMtlK1+fVuzoZq6J0sTbm3SVbv5YySS3Gm65qw1bQ47GeGnlqUJa3oWtqxk1V61sfTOVnl3YShKEbZQ4Dw2JuRCWmPh4VXfT9Ljm5M6IID4CZUA7skvqeIzEIYrMhRlpWw5bDLGWT++krJn+1vNeiTExEERocgoMIRBBBOmHu/Gjz+369Xpq+buPw87zqtWGv09/3b/rwMHfRFIQCQkSQhFhzGFqun08JRXPqToTT7E52CX8DoTJjGIIjKI6rDo3m7vMHGH3ZO2GTeUgnVziQ5hzKgUYWSO8bicRtbPowDEMOqYhUqTNu6WyHguOczAZDIaMEwmZDKBk+x4PLZesPXeoGJGeGhnWeWk74HMdrZimZyhK5nXNJvr1p9xoXkDQwwriYgwzA7M/qFabyHPDDMhcZIzHxIy2em0iPUKsm95m+46KGTRKJ6PYO7crCe4PAx5wTvmEyHV45h60s5uImXARBQcBMPOWOUQUlIy3EPGE3KkWzWFoZzXGyzRMnI2w8IptDSnVhJCZC440xGJFKeuHMNkPAbfTSdhvbJThsxx/rn9v/Y03oPd5o+u5zyS9dZiMxosYcbwSqylonwbtl1koYA9pR0zIoJ4oiIyjBIiLC+VBgSHmGUGIYhGpCEGE6dosjMQIp6qde/0SojPX2B4HlIeE/l32Q/OnU5dorh9qwTEqwGH45cOs+HzeB/Nl/KumTiFT10jkHB2Qif+HRyqYzEeJ7T1+q3pX6NOUB9mmz02bmlF+90qT3e1L2o38ttvqtO9u4S7ReAg8Ij6oQlFhIJxJY/1KbBFHGB6ZzTXjib9YcZ+Vhs7t5GfcZqGeWnAtwxmAZY4OY5IVoxtC1LIWrBOaX7bXi8gXzZgKbSEEL9N3bBTM4587jL7w6YstlIyjhxtJBxWgQksKDa1sshCODUvDgQ5o5tMvDhgYTWgbOkoW1XjmE0cnuuZfRuCTPxry9p64xAlGNU0pFI3A03CaI4prRIKMn+z68/Nv/wP40L9fPjTT74/R5J/VfRTz9s9N/2+TwNOHf6P7fJXw6kWiT3piPxp+ZaHxs+0DSYcXrrVZCqdotBZS3ocijlP0F+hxOLwmR8ILUFigjMQ60ayMxjB8Fq5Q4ZgmIrRKIndopgngQyHDqzJyNpYUqU0xsyfsLTKaDksTG5DMRtY0MM7GGJSMxyGaYcKYTpq3uZ0hzDhRgcjFRhUDxMyEzMg7vJMAFggamMbYISwzUI21w13bya8wOG15yZNHwvDX9TIbk8XF70CMvhRmyHEOyG4Uy2xY+2+bwOUECZO6Uwo2ez5YSZBOE8w9sIy1EPWnow87YRnfpnqk4c5gtZjGL6Hrs48in9W5h0Ime71KYHmNgKMeG0llLK5Zb1ltROoITjKTwXneco/nClQ7W+FFrZzn00ZU5htiP6pt+3x9Bo6/S9g7HEUo2J/qESJjarxq4s1Ww2M3Nysy/JNqp0xURuJgyyak0TljYJhFJQ4SSTsbZA4vT4eg2cKHcaoQVGL8IuxYt2mO6TOUOOz5HaTqHTtLPZhMsMejCuDxXknFmE5F6kJfnASkv5nNtjP0bRhvP/ViDCahjk6QSIy3aQ31OHrJWHqxGRYtaxED33MOFUQ5ymjTKZrVd8TX0pUVEOpy9asyq2qbMwx6um7iCCVUrC0yYZMoUoxsiJhzCo6dGnxk5HrjDvlPvfO759zv4tdxkrD1+3w4znAJhxBjEZaaBNLHLGWCejJeQ8XRQFrKxSKotqCce+xrmsWn2h0NOsf2iJMFBpQPBu1WmZtgtvhBxp9jW8bZc2ENQmC0DbBKcNxGFtxojLbdjtEKjFMsZhCclwcy4aajJXFe4iJVv1tttm93DsJlanUIlVGbo7ZcM5hhN3YXimJKcrogcCynYEmdTBtM/NigTIVlybG50NtjQWhJmhMJCQHajr0soXy42KwbNfD5ztveAu2gdCTXb99/JrXQ2QleDbh8ogdZZh94SSSwBlMksg6ZqYot9w8eFQWTsuuG3YW5vBvZb8IwXgwQ77QRwzbwVtCUPMZuhN1bWelcxDsZ2Iy3He3JOBEY61HXWpg5bre+1nTlYTwkVoh4ZK7iuMlnM5boxjSbbNK5wE0U2awcbhht2JDxznTFQ4/2YzNZtnCb7EizVLcrDUomRuRqEwFiGmGIurIJKGgtkO0rYxZibcIxfLkluLVyYJ4quLZ8LIzEDTVkoNzozkzSYjALBERI9YfTj8dIi8bzS69CAmJUq2+vf6ayxIBIPSOnmmmjE9bjEYONFF9f09DokJu6Al+8abUqYO5MjqER4PC87Z6mPGfm+a5w3rMjJHv4t7OxajZy8D7thVoeudK8qmxfOW7axZ/jRjQ+iJjP6blEE4zOtP/tzfY3rE48IiX0PEOgh6J2bFkSU/aIgUvDxGwvBQamXklXcR4ArU14XhVh5iTExh8CzLPBmYyMtlRb9dTrOQ8Mk1OdmxFiSFCdIw9KTBGHgh57fnMaWvKTMjqjMolNzWGt76TDIzL99YSMo6EJgSRd7IyJNMuwoNODrF3SVFtQ5UyYTIEgad44IclMu3+4uuX8YeL7TNP4dprWW2d8P1O7sRCLfd4nOOS/BZxnMy8QWqXitVbLXGQd84Ecw5ik39WnFiespS04rczwddVg0SyiVaeDim+u2vCc83wjON2+VCwWs8sk/YdD6zI2eXDw6McBfL5ekr25yy7a5GH1Pjq8Y86c0SE7uThnghU5DeStE7Obq6gwoumaV0k99GmcMQ91+zOE0En7sIzEeVggdJioLiAdY59aY8U1W7A6NNxrWkJVLwmEuYiBLw5tLtWdWSoxRYe/6L8k+l+h67Kfs+fR7FTt3q5jef06g/gwkDjC8MP2BdEQmL4xthqZrBDWcwyKTEe3MatYOVQyhv0qNC0zxgUU15Qdk1sslYpweO/RTduPKtn8/LBHH+lNLNloccTpmSGXgKaDvCdJhNLde0sbzKYSifzM6FVGBwx5kPAXUVyMxCPw7hz3Z6CXV3xaTTi/2IjCnU3m9ZH7CNX61Z7wnmEJ6jPkfK8zQVzl34Uq4bB19ZhZCBYqm1eucSPKRb0cWGqnTlfWSYq7HNcaTnBQb1/f00TmebOI1jDEXdq2jYoS+j19qhRd2+LavLOu6BIP3et4xzhZF/MvH0T8u8dLwuv7aKmo1selftXg3HPBqI+du+sD9W6fUVUt39+wCQPX8GLjbIzGGwIcjMXNbjWOLFKrXgBcMkOmckm5/E+HaSqYjMQ8xgvKUYd3j4lllYkkIxE44z6MnSiMtEZxMUeFH8L7rSz+/RrLNIy10Bxxw1EBvLuiSm20cm5qBpnk7g1FNIpUVyh2bIzGPFpUnM6Z04XKxNYQlb0SvwajG87XA6Edl39Y2aL4IsyMoz5LHsIv2TLaxMup2pjl5yLWttZNnLURouS3ZMdJVKWzweSHd5G9nc/nENJQbfl1HOLLIvyuSXZxG5BMSSDiFSU1tj4YHD/a/SGrO2k8xMee/qe9ZgKLOS2GqfK33teoiQlnaSCWFw7MEY0wlJ6UFi+LI4bP688DZbT2krbCN2chA5qQkQQXiCVRaFLbDazhnYwzyILIChNJwxbg7FwndWeZ6f5jg+ODsd320+793fIEwU8ESiFPAm1ZJfL0DwJ3wn8jV+z3WaPGio66tJUpTbIjJHoTkhXTG4vrnx7XHkduA5KZnXAQ5cH9RPJUu/ic4b9jLugIw3im67PpRRfed1STx2otMrdbR4wLTen8qKj2HslrM+T0jLSGfuXVvPSdrPMeCB9nZ2ehZJfsjMWT68wvb450jReudqViC1ETqLMO3bEJkrb8/PTNhbOy6d0USdEeYRiPh0fHFbeoPQlJPbcr1QWbj0eRCwt+0OCQ6B0kzBCDs05cL7KSWJtLTUaxywstaga+XrIvMvyI6tVKH/M6R5zw0vZvqfWny/hDvhMwvIzFQGRZZtHhca6NtK3W7WSf609clIRGI3k6DbPowLmHfcMujgC7iz5fa5Du0U/n+oeONoYUjLa/0Tk+HboHZj30tDrAkcpuopaQQLgWOw/Nk9B+k4hkmnCMxj46Qw3B/SVG2Q9rJMsSwgw47Oi3WPcoz0TuoBP9a3DHud7YXnvo15tyyaIsx2B2IFGu+XpsVmGSGckw95pugy1pHzokyzJtFph0OnD69q3W/G3u2b292snJw96FMBLb11vhs2xf+ZGV4lVpsnzaLb4KsrOR5aV2XkLLVFPKHg9vY/n5JTF5/LCDbVJhaFYX75RkjMf+3z4Q3ldlHarG3F5eRJQY3j08OOiguOZttkadIiEHIboOr04kO6dxBJQut9rIkJ956OeNutKbdpb3QxrmsknkFH8cnYaebZ3VEXaUli0KLbU7kHsMeEpEuSargVXELAYoH5RzAbNsJMUbeJ5Sth73ytyIHHJQR9syM9iogWHHlMuici+T8OnrbHgjtrChllQeGTQm6eNUvZms+4v/rG+3YTT2GN9osJXLurn9Jq5vu8ok/Mv0+DnAjIy1jYEHkJtKERWw/BH3+XljKLQf4kYl/n6Pt6SnrqdzsNuZGGszezT4u1rqJodzwQTukeAeA7YioMxF7GmJN4MXvPwHsWvJGPh10YRtd5fryGLdn+lZzxQ5xsq9OHMr4C+N9Su7d3jRG+4yOu6HPa86VTGeBBx4QeBBO/XCUZb3Hlek1AkYQquIx7tHp6415kYxGzZ2rLTh3zcQzy8Z65SxjZ9YbIVY8MJQt4e3a6pdXtukz1m7MPqScDlMkccPxkobLtgXzt9aH9kHVBOLTEdTZ1EZok3VC5fCN8b4m+HNdX3ht5j7IC6cMvseskoS6Zfw23j937rnp53k+W28+euy53fFnnI7UJqspQHFlOkQlanrRLXndMiTwvvEDNWJmGAwIPRmyLsm80EeEG07tfYgvfGypbx4reqozsjhtvGIlvDoxlamrNkk8N4z6KpW2xt1vfZDv4O2daVtddD5aM4MLEYTbrorkKd2ht+3Ig1TYQ9JsTXxKNE62ii0crHIf2xyWRRLQ0HbKPflRPVr0GvS9C6CfPkp8qIA8h77p5NsRs/W/Ky93cRZckG8umrGfyXnE7kGoqTGZ7Xvpej3b5r/FLVrHoZ6ottnwHsmzs7WpQiFPdvuReFhKIy3ucejO5BbSXbJRs2EWllUzYw7Ps7YjMbgwECPNJmKG7vDa+UMskPpTU5ZtLB/PgfhD/nHIQdNEHo536l/b05gsHWfSSGnalNw/RJtDp0LNEZpw66auHM6d07p9JR8VNFV1SEtblsy+FAhwSHtKBtSjfUySOB9hgR+2Hyfuge8d9678S/HTOcJeBXviVLHU3PLPlLrGkuUSLRu12RouIy27Z73h3sCXx6OcqSjwUuZIpxPqHn3DO/FjQbJtYzbGC0e8zjb2bbiYpu62LNoHOJcdMt5RZdTkKcUOlT4w46wVwOzs3ZNPg3l7ySS7CHvw5xNlRiQEkYEMLq4kCVkTAwuSqxcUqYM700Rp2kqfeakbIvo2858k6PPD9JhlCSfrLi15U0h0bDJ9gvwu5mm9iioc8TtjBowjMcjCiCDxFdeCMLFMyyltg9YdbZMjLZf2ln/H+SV7iNB7tPD7+JuRJuzWohvDWPF5qWx172Jdm+rI7rojLdwOV78zUOV6fnVYmMrdevO05R8YmcemIzGDjLKpFJ00IF2Tk9XZ01Il4jPsY6S/vWd+Iy2vKNgFBYP0liZG3IiJbhMDgeKfzdyxGYwIb3R7i35VF4c5myMxaWoTc1aauj4YaLQjLuLsTSl0hzxraiMxbX3sx1Pjs4JHMYh/jUwQnqSeB+VEoL320QaKKHZ5qCqq7f3UfGpanGq0L35Fl0efx/gZkwhvdyTqVt1jda/bXj0SJfi3R+FX78c44zgPN/IaAhkjLdhOEzPK00zWd9jW2jjvQLEkYPCcejmsvcou/hBz55X7DuZaJLNt6dR0/5JEThbGXPZHx0XiVk8ejtyUVs6Sd9uf1dyqFdHnM/PbtjiLOrv0WTUPIzEiT26yON1sKEirwccjMR3FH/T/KDV5ayGN9L38Sw4d8pCVG7CzTptakVNF3AFvydTfjTZcRaqdqhsVg3l2ijr47bLgbP3/C9Gm6q5/IzHO1vGwIs1JtPhs/bLypjFT5iM5JWTjf2WFxPTypyuf8YXLleLeO7mFk+eeqRG/S+d0bZsSevKRKQ4sJ2Q6aHSKLquqvSMtK/dbhZYPnuhglucrryhhregiVkMjMZ5YOOrnjB+L8waiZaqMb6iqTzxvxvSV1OWnTnLWs8U8bZlxLRO9rh0VwxxjY7oUPmMIj9cQdV/KDp557h44k2HMdxx5jhI35I8JcwJuOsFH+v5Z+uq7GI6bdeNpqkc6P6KdaxrHbm/Depc4JJIER57+2dZvJfUo1suV19v6izTd/z48NNKfIzGVOm6cFEhCeeczldaQN/ZRoF06Z7+y/PXa5QZ0Ux2ublpRPfCqwwtozyqoEFD6JwJp44OQv55Kes8+mnRRepFuO/kuW4JKXxnHrBjb+3sZmZ4bx8i9/rfauI84ixbHfT8eiZEpEp2QhcKIm8rnmhHsXfKLK+s0R19JbD26eWtilVXxKiu9PSXgRBeX87Mpe2Kgf69t+2/5LBnio1HCOLC8OuztGeuPa/hrLCVfCGS/5r/CG6wZ4zHLo8/t8OCtkYwfailVeWn1J38m4zqGW0VJaYOO9ZrmpV9+hZRQVz7Tzebe14PPIzG64bb28/G+Ob6qOMwY/hXnyds45SfhLcfHg+s5RCjCc4XYj17Y5NOz+DtOXMmWxG3LmjmDV0cLpt0W25xZZxHgtoCxl5BxE/j0MZp42vWiNi3Y/Ub/fGMzcn3113wqv5HMf5fZ+6+dDrT4z5xxHp5eW849B9to1vLKtzqLxvibuEYd4jHqobCZid+cXv8U/Bvq8eXw+M8Oq/B5x2c6uev9UtaOtv8vKKk6ofZK1PW6yvCVftingjqz9k6Lxx8dfkrXhgfbj0it7i3doT1+vwhpPen1tBqyjj3+E8Vk0LWpjxrN+vTG3pvMhskrv22ktLyfG3vvadK0bV+/r36eLrT6PCK79PLFRhzL87cVIzGIdNDsvAvB5KXJ+yDZeB+1D60o2iUd+eIvtmO66xd6jh9vTOPbUHJG0e4f5H17827IQk2GeNlxEbfDnM993NMl4oea8tWHptNmFVOUh16b5HTOyyNBDxhqM39a1JjjjgbVpsLyjkUbIQEdHPVfS78+Zbhc1cZpU73RH7ZRTZVuU7M4XWD11O+xzrLMOOnrlS9FlcE6C2UVvm4Z0PCinfScaNs/7aWzVBWGeiG+Q9OrARHKObQpU0Vq+GpoaJPKNvP4/ZzjoIz4ZUyPxvfWtl7QPXgv150WjeuCW20XRa80fHJeeU5njcK4q/J+M+pRPGSn6UTm+zxHXZ8rH3B58/JufDO+kmgrzk2MDzxk7Zmm02+ID16KnUsMYZXC0d8MrVxwHm0r8xSlpSObTTnNUSMxXc1FRLprZpCdO+0wLGKwcP3x602GCQUxVbQClIKSJGG8IzHBvLrHrnjD5zSdtvdDy46daCiqLt2TM9+FdFW22yJfaz2E4NCVhxhVlqhjcVWY8oSPltGazSaZ4w8v+FDyTw8+qx4vJv3+bwvHkfGB/FPNW4cxr0VaFVSXQrzVili1cOedWMcbLKo1LKVMzNYXZ47t846vb9z7/Vgi9v1cdfJ6BUn33JPKNV6VMnbJBqr506HykOv7J8qo0A7OmKYUamLIB0K8yopu10hRJ8lHHSGf5T4YW3t8VGeKHTGyPcCze9TdeK+G0cSL5kLM6mCVnUEjMaLkRepF6io8n0YSpE5fQyTpFxExu3d8drxOfg7Ov+Z8n4nhM6d4iHNmc9niX/WoofmG3I8IcSX0mNkUu0vaSDYdCPvjtoq/l913n34vgEoOU90SMWLztc2EtHCuVtmbO9EUmSMxZY7WSvgeQd03VzKbLGuthVT8ODptrjUZuPc+1z33PPbUC7flzez+fXouvQ+MIFtU1LPF5mEdihg468E7NmTKIefDxXliU4UOFTBjpMkvInrpLgtXeJMc4tj9hTmGf3e6Wn1raNo1ZyqGTW9byzy4Iy4sOvEogNIzt4PXtD7Cmttu/vOsWZydJOhX11PTo9T9a1BPYPl1zLaQsvLx880mXq8sQlTsER8n1wUUK134wVSIUPzE3xUQ1umEhUnd1vLHW/NROag9eFZsict2+6+WFl0UEe2uIy1l3EhURyMxue+cdHbCFwLOOkVomI2w/xf2UYvKPoSSbelkno3u+ZEjpnwuiaI3ID4vt299cI9lfXSR46PzumUprhxhuEDfnLgeGX4t2x6Pz7dmgx561EtnXUVVu1cB+lZyylFtKN952SxtGeuu/tSV5FOnl9Zv6upBF/P6fLp7q6sqaIVRL1ba+ijXIzEpNtU/52SspPWh0XrdLYrUwR9lD1IevF1jr55fXOYoPpkdXx59qNVv15X7KHq/fH2Q2by6fxzR+k9PS3GGfDl7WT6Y0ksC9MTuxnQsf5xGIuj2Oaa30c7s8LbYu0hwPBbkZLmWNNXQR50ERMzWUQgEH09+yqbckfCbseFXMr47rXCtUzhDgTo7usfbE0wquXPfdCHFXM+yPfGUNOWu/7Epafi8h7s9KCMxXncdwWz42F1buxtfzkHO9WWBGFPkznw4PR9+9a9J+jVemt0wp04aPUolpaqAcSPM+y5y81Cwi4zl7KKhycMVB3ci7QJRnQ/PGm436tFkjbo/X6PsFdLHGyfwrnhbVq/qtCMtLZCzpuiRQ6cvoOvRUzF0eD8byIQaXm4ZVFk7EFMV+UEaeEe7meNsxbn2EZ+hKrYeCOjaefjmI5jETHT89cTqwhSdBR14k8KrC+MyuTTWdjtSzlBDfdHsNCJSTVrUp1VmRHqsunZJ8G11SwYdU67TZpzg9vKdvrI4rPy1DK381CPG/JuTp+mu2+Tbbo5cQ53grxuCnd0e/yuCtnG/JHwriuKT461xTWyvH5XmxWOey+NdreOlq06bqKjVRonhJWaFAri3qiMtvtdV/LCFlHNXLLkPj56dE8K5/b+miEvWn86qA307OL0x2hpvrDQPIy2tUQg8Xfy9Ixlc6kf3rpzio533lzh39MOXzXNEmcxtm735THqr6EXK+t56Huvvkxf2431sxOrBx6XfpfTC2ybyOqv1xSoxZjv4TENtk20FiPtwFL7/p8ox8TbaZCfPUnG2ZCl20l8fg8fOKaoqoygRFB3Hg7QjUcm3D/xLNWFJUtqzpuh6H/ktUSpNUJkyIutuJ4RXHwwDqC+pGuyEHq+DsNWjvkPyEGq5zFG5V/TJfQ4QbsTM1XRZkLJStasosIoOla4FqwURuvVX5NPdSd1VV3JQINJx9w75Q0x4QxhKXgY07ymiFyLKO99k6+FHhFytbbcMxeFF1xkQKhDp2U3ZV0xnbsq6NL6LKbHo00l1pkHQ1dvhxstRG8BDmKZsN6jmRyKeeoKOU92q2ml379J8hX8+HE4wdpz0bg8JjC/1+2NnbL4dMWw4ZE6kT56fdkrj1rBrKgeuJDp3vCp3e5+aoSYphbRRXHookuWmyE3HMvD5T/0OOFaTc6zmdJsbaPT3XUqu+CJ6qg8jLaCsr7F8u3HTht9nwdJiUTHWSIZe7yuCb6ETKD9g1VKqs+L6DD35OHSB85EaXNzspNKE2MJ0ZWhypjIrqsILqth66H0RLyGeeEK0U3Y5RIiBDC6vUBXeQwTsUeDVPZb1tX2G+03jpvmPXbUGaf4+nj6npizo/GidvGSOlliT8yYXn7PmmbHfJqNjq+FgyeCiHzx4kirmLPkizB1qW6J14pvlh5VU+9J7E7GL0FD5R2UjLd1Dxv0MX1Wr3LG62DalhLKsIl0tMbMjLXjopcfdyiZydLWrp1kIBhdTG1kVX0XiHKou0O5rSwx0rDmEY0TaJ6TlYfz/LC+/YovkNzclkISXXmGjbbmF1rOHrch/lLf3kxgpx6Op7THFjrXRJmzRs14M1KWDYvCRbnrReX66WHWkRdDTqthHPJZvDBXLjS9k1RN4mpPmUOoCd4qTvYIkjnR1VovH9iI6pjxIWIhZ0+w2usefLZasf1xNrrU9Sl6XLTu5qfOsr6X1Ud99BMjuJaW0tSrz9Mficawybe5buTlSaxFSN7jlqBKrosjdZXM1FroqE7oMdUfVUwcV092ba0eHTxqgTGw+cSIzDkS50W3kFyMxx04Oh0bHuPp618i+M/CnEdcDxbnCi92iItFFIhc5tmb0SuoY0JnzcsmJ40lJHZojLbBuZQzskf1Px+knXY8XZkJPzftnfORHDpppHLE3Dv1c576kIy0UNYLlRO/FBm9MHXk34kdJbO+gtRdPozQfFQNlOJmF252DqKgbPdOkQlLvXMOoQl53tBxndNkqjOvONa98Bjtsd7fbun8X76G8E0OeMQjd/o45v0H2LSaohqCQIyzsO0qLvuxdq0nana7op+hFRcDq3HaUO8iXOZAk7ry7P30mXnLczTrtrDQcJRXWWRPJiZ6VuvWI93T5cOQmpGioUxO7lenn055oO5037Q7eevnxyc58ZuMkGBIjMee189Y9zdy+K92AQf4bK8hy1dtA4yKXSaDHb/hvt3deIOHv/zlvLGNxZVZX1Jmmm9F4V3qOA7wy3bL9FIgjLZ7/LDmLWfsIce7pOkQlZQzyturI23tVLPSwdtLrpqu9bu3GaNHCO/04TNLfSb90/H2r5C01HLEjLTB4XYkDiRHJTtXbzd8cGPWuLyhWpn+f0xwIHTXJE7O7MqOjZ5DQRQtF8IaY6ZfHraiFHXX5VVR2n8yuRW00qnBLBOXCVjk43bbobyig9H41wfMpyEcQ3pGlBKYpCUEu5upIPFyJgfeqBSeWKhHqogU65T8M5tIZpT2D8/kJnbKdh5HSglHiQ1u6bFOkxEuoX5Hl+6DhY0zOF1w/l6fKPJt/SPL0bUbb89Cc+2pL3TsmXv7OeClCQbP4rDzIPLQQTTnr9L9D8rY6LH9XM8l1JpAg4r9cPr9Ftnh4tK+mXRKS5tmrYzNFj6EjLelH7z9OH1i7uLQlPbaR3rgW7Jn5VVU1kIXIh0pixSafr7tFinUIaSbcxCQzpkey/9MLTygv2ud6uBlGTP2HwgepP2f5Sw9EYJakiktIq/h2vzrDMG0ltFVpBCMxKDY+mwfBgdjSJcBCiB67UGmoK/9PFzFAmtGmw98oFGUjRQVs3pV9J2FeRSMoYJlNabRaIZo0lXvrWr92XyMxU5fsHjjTCeDVlMPcMnHx7xu/dzGRXPVS7UVYRkpI+ClIqH3RYaqgHKitJIg7oF2CKV6iJ6mvPpkxScLmkvWE/SMtL0hgIxrxZj7vlz9s+kvppcxWphVX/xH5dHjPhiKWjaH7z+3BZ91SKs9GoCKRBntP3txpK9rC5kIXmT/SzDjc0LeU2oh8YYzr4u63uMzWSviYKPMQFrcfUPr1NrNrpL+j5Pjrs+RTYTTHpUOaG+Gjec+LGoNO9+HjxK7z5D8nw1cglpf8eOBAy/K+B9oG8eNbriUmhtyejO0Ftbh39TUbXy3Um/roik1yAun5yiJP5ZuKMS5M9PrD54iFRzEesIt2d0vUKRSltTPZkvpQ5S/shv5KekzQ7IxrccykE/N9/rxV0ghihH1ESSmp9pnSIy160+u1NQEcdjUs/iQD1jvAmhqS25+/Hy5nEm2lbnreTggd3hDErDXzHCMxMuH0P9u34vxSeMJCik8Jzh2XNcyNsabItvfsZnz0S9e+iK00DihreHPWVBNOP03hW+GoyvH39mvyxbQfujfgC0B0jipPt6njdYNVBJJlPw73wSMtKebdSNjGFEI8kA4RM4j4R4kMYPuh5oplHRL5UE43arkdf81ZxqIJ6CCIYQdmVCh7N9LkYNDhIzH1uguykCxPzJFU4yL9BB5hYLX4MvCk9A94X3IGBBtfRRMjKNYUBwUgngbwKVw1VkAHrc3CHCMxWc50ByVrjjDexME0MQ8OWiW67NfNUzMhAcC+n/GmDPUbWAKoZVUH1LygeFX2OVHVFnd2oWnEnSv2toCQZCRu/zUT077sJ29PHbpvqba7WkiJoRaKYRlcIzH4So3MgFPXRlYjMdu+tEhHTG6as6Ux9+G6x0Ql4fDuaBjBRC34DnaYZJL6ylfZKD/CfHvBLAJYH1u8spZP/bTs0B8kkoNoW9fzekQ1abx2iUxpOAgFzzB2FP426UHurHtNH7XdC1ThApEFIy0B0xm/aghS7oCQt+DugiGwJG428uPRC6movKnlKMpJNi0IHNQOhAsu2F2UmIDJWEIjLZVEnLPsgSoQsr6YqidyhEHBcHdMbx2dKBVWmh2X7OeIzDUUbKfiP1ud2b7TDGwdhzuJmPqUyAziC+obOSTqaPbnUeO3HpxFGabi+onTPTuoEkHyWejhWHHnaGRTOYTTgwQ8FBZC20+JO8C2vrSVmMB6q33mq9BxhjAkQvDep5NpQocmOO62ruPxGqmNWLzx2coxNWsawjSjYgsGdcKbCZzdlOyl+ydON28y6uigrc1fB6YhfxxI+OGttgF8M5JjlKS6EUIcd1FIMeoD4uyBEbnra250rUzXRQ9yfm7H/SWlNEaGpjw49t8EmlvqLpPKWNPNBQVrtmvFBUgv8Uk54Z9w1gHoxYQwYLIBjIFEvjudIzFghadOhzs8j+zHBGemc7fVEmfSAhBaIaEbb6IfCC8bFfk2IEwkK7ZMhIpMnZtLVhSuy58eeE9Ehgsl0ExzXIkgmmYbSmHQkNMjIMi8YZlXR1nHG+ArCUp1r+ZeJf8g/o6dNLerS2RHTzu/jAtXSOdjTcbJDOxmJqhCEJreUrbUkmDX2uE5MrhbOijAmerRqqMGXix8qLWp0PfQCaOgeGgQyzTyKzpnt0VURDocZ/QzqlNsi8s42Q7aXwuG8NlFmalQ6pLnlbBjrNGNBzc8Iy0xEFz54aY2IHzn1nJ8+ufDRWw2ix1rErYJNXFKIb9GND3bKS5LVXspc/x7vKasSSyhAg6Hpstk0S4eZrjpBSMxIy0YKZjHnWjO/l6FgSbK82NZ+nFyWMIjMeWGNVfF+souRdFgikPIiGM0uYcM0GTvhiaFz6FV8cuzrsRqCTMxlITpp6HHqxsGOajfFZbtL7VWzcgPpp7fVjbk2ym4ZDOS+kRoSHx9FOELh+h+sR6MkiAumynRVmzaUB8rZYSzW/Ro6N0aLyqGRFoUPVkIQ5jrlSMx3CZKdBK/QxVK+ytXqWi6QgtohqbEMIbcL2ZIiXc9zQMi52ejr2zmCXWhqIOdkB9F8iBmiXZfB/S/n7Ie85B9gmD7M25OzsdmIz7nZyng9TFfIRtfVyIoT6qsmjjB0R6l/AgdkmA3Q4IlMO3AagZA98yrDJ2lQGip9zvflgRlnVnSDtMxp0b918R+1Y3mmZamk08J9N9AQvHhnbC+tmJHiIGkjSmbXIcjLbLB7RoSitkrvl02X7pnVXaaQV0GdqBlYLqwB2JbNyd4000kiBk7UmXCN8izJ4Ebn2lYVtwvGXWD8Lzq8O9wo1voMS5K930ELzAV8yjoL6YBIaM/VooF5K1Txv7qbRwJsNHtkooTTxIoh/YjHZy014p41D+ykSsEGOu5zv9DB10cy40OZy4QUCYnNyhALU8l3T3xbQJgxnSxlBr02pEjKNZFkCj7fbckNGHz+WQPKI73ZlRAhl5iaNos67qKtfTnHRe6d52O1SJWwu0U4cAJkYNGBRSVoLIynGC2GA7btEbzc2hu8uALLa2IXvh1B9ipEdc0yTpQeQ50lj+/jpAppoMo8lkE1XcOXoNBSeHflAmjrG2Azl5TUe2PLgie+IzJFGBRIzGS0U1E8vCkwzfNmXJwiVHp5K2ZnMN+7UeMOVuEiJuNL2Tu7RBdfNF6EuDwOk01OmICp41YSfRfqTULZohRQBSgzTIgFlVVezIL0POhD6deVOIO6SlQi48YHN+kfiMxw+RY5iW54r0v5dYsQxL+yEdEXLIsnd5r19eRsoloKR9SKE0CEuNpFad0dX47eRnb2W6OzUxsbmKplyt8Sep+Ns2o6rHvZtmpB44ZNpE89o6et2bWH0sf7rG84dsq288QfHymdrydFnnvrp+kf8GNjyd264dmSG4dwXxq4z7YOvB5H1MC8+Nzb2aMONjdqBIwp0hRa8bCw8hYd20kp4/wQQGg9GEmI8cV9wktNAz779M+7Xljtb2K4w7UFsXLCzmeGt9HQ1bN1YcSivSVLtzHvrbVkQGI1s0dIbc78ykLmKJwIQJNuNWiIy0qwMoDoyMxvJUMy7pnOUKmi6Ghq2HY3WQ33VTdLQ49bQI7ygSDzvD7xGMVTu1RZFMYVxPf7u/0fSPXulQYTdeNcm5odDVgEZTOCUMdMnu4YK6Sm9uu/GNe5ZXKt7Go2OCE0YjzXYoPCJFFFBkSNG4otmD12QaCxUkm7pKyxtKuxsT6kk3q/yQ6Tas+kRq9u+gYnaBr/T/joaxZAV/wktVFFiyLBgyWWn3sbKTDKGDWAVVSH8ft/HtRoDN3To1I+YYjMX8LWo3cTuNycVQf0GQk2/aSRiQiJXk8nXVr5L+umXUHVoVQ/aQPIt2stfLE5prDM8evjzNJN/kg4JunfbRwmIQkkhJMJhB/xwOSBdBSMPuEBb/vUIOAH8h+P8b14hhQ3r9Hqicw30Jrw6KKONEgKm26HBiyU0wQLR2obqLPR2bA5Kv4vbbEkn6LGvgCTXFOh2oQRY86YdD4vfZ5wXBXaixJwqoEO+eBL5pyG1s/Pu+rqxyddXUef3ZufpX0IqX+X2LPfMB3wpD4d9+hMdaK5nrwrDAcG5GSQRtI95RrmnMT4fH5KimHhj0PWioipZDWdn0kwzzPbCrzN4n5U2mFtjaRAYQJkLNYO1I26TNqVrcXbBqA60+yFmHeVC/efLoYckkjLf5UOr8jKKAz0CMxP08jMUpOfy8YQUu2ukoMJRfcmj8R5vzrpJjv1JqmrQJBsQjs7VAMENPXMUIIimGvpYcZLEORBn/E8mBPj6kk2fodofo1Q86talhC5DiHIXNIrm3xr9lBFLoplr27vlidbV2y6Gi9an+D9AaUj0cfRORPOJDdA6T1BSY4HlQjMcGiyBII2QMgL1AnzRC01QNdELYfcwEjLTz0DHFzSaaliEl94EGuFqVlwLjdTDbEAgcEsS3/VgbfKUuA1Sko0YiQYECWJtikdkTBQWsRj9opsWBZYuULoDim9tI2Fxdi+IvIXUz/qIba8tgFkFgrYaJGkUwhNGhwUU4BTSAJsfXnBAkgQQT+hA4lBNyNTLrSXt8HcX+HPs92GDL2D48nA1JvmccmZJPkKMHgEWbToUnZeiyibed0wd12eg7XN+rT3fdZNd5TJqLJQx0jLcFjTQj6T3felIkJvayARv64GTVouWepw9yB1JasHImmiCMtnlOXSeFVzEZmaqX2moZVHlMbISMqxB9qMIPTG2Flyk8Ee9aFdUZ6W/NUYobi81s9EWOJ/5uByqGdBobPS2PdxxmiMkKU/3EmWOiNnYaSyLFlQKS3BBYuWB8kx9EbQzcOy5cYhIpI4SMtpllRrp3TbuvMd5PTy6Ktp6VVwLf7SqhDp5G8THPKSD4HjWIhtAvwEw9FHSGTtsR8l9TCiMSJ5KTzMsnfRfRN0ZZrUXjx+hmWw8snzGdqa5sLlw/1pvdHlGo+MqIzw9m2A7EOZxu9STq1vctfWYch+pI7XFw6JFiICPJgBp+pMHoeo0aD9kyV41jquyuTI+SgvgvPvenQ1v6pCQ/c2nP2ePfPQjBD6frAqQ7aCUaqwWRIoyRJAYRFgQYLAiR6y9Hyxg6UKAta2llRikpbDPm9/X8fkdAe+cPqnvDWbczlbR9XdTlvWhzKR32cWrxWe02EOcJwZDnA8IBUkZFYHsnoltRqyywD9RIgRHm4FYdmpKMrHh/hMWfBAbAe89Is4Eo5kGRAhBTw4nOo3kTX2cUBLSMtUHJ3Q/WwA4hxghMthuCRgls2XHC8eGxrUV4ngFIYSHOCjcHu2+0tYcqaPmUGOJ2ge5ikXRCGB9mhiHxL6RCelONu5yMxOuxRwBLiPy7Hp8b4aR0+1XJCeJjcikVPLnx6h0hJl4a10I1x6ndHXJAyBmzqn0YPiwdpPRlg+xAYTMcjLTtHbjithE5/mwM4Kq0t3NfUOBxjRnRvJfu1ASMtCKVxxeEqSbiNMZzVlHykMjVEN8JEIQVN6EHOJcQFN4VFGEVSQRJFQIQW4rRBHAEbor8JdVjA0oFJEIRUTlwTlFtkMthEkR8PfX0S9be58kmnaCPhEqNWEmpEErfpeRIGtHOconjOenboHSNsZUzJIzElSVyjTl3nI08wTJ0iSMp9vhDJnwj9Nh5yRuqftbTA8aPdbUmYR+TV+XnSczHe/XysZ3KPAiySCJIyIyjIB6bBsN+ZECEDj4l53yVGQsid3nzDROODR3yEMkg+Z67qFvoEcU1YhdPAEyaWMcoeJhRDtCMxQ5ISMr7ttWHRCQmZCCQg48qyO8mehhztkc5lCOgHL4GmBNIkhXLgWcVSIyhuRmIUIy1EWpICEiwgkilQByVN0/hQyihiIBJgZ90OgsB42VrsgxXW5e2NwFWbIIIdHhwqwzErFnXhyq1LHhCnyJCCHSAYIbQcTjgtLIyGWnz5hrjnk7tvG/o4pATryjAQ+NVZRRPCE0DASe5kFJ4Sen1e2o1w0bstU2x8N7wuBrZmKbMzTsku3xtg1U2JzEKQoIOUhFCjs7d1t2rkyXnOXcGSqGmnM6RjB+hBqCdgInY68RDE51RJCcNdZLhjgdixqSMoiyCSK/QisCUxYZN9blZpwomYcS5isQwSYHTM1+jOjfKYsTCzjfKx8C7UTCAciOQHVbfUakCdpz3qvLiZ9t+yuMzVpZwHOyA7SQhJFaEqdON5DmiwkIQyBP9hmImyRhULEqo7cGVojJFEiWsgl03DXnG6qe/8W+F9latWqTpm0RunTI3wZtgli4liUcNbF9Z396VpE7WcOkslR+XPazncIyimdIj7JIYlffQBRBfnRQaBInt1zqOVgQZB6kaU8uHyjuhqt9zq4w7uM6cXzW83puODX0yzTrcIZmm8nPps1+/aAVKk8u8jtbFho93vhIQkJMg64a29wfh0RjiU5ZfpaASLsi5mbm58wzRdNx09KUApDviHQGgaPj48LXnCjNWx23DaAs0VRJEvgiMtL0yhAd3SugnMhSbTQ3HtyM7OaNttjokOPQnhDm/aH+93FSMxfCbyLkdywUqOirzwgphtffF8UNuCTMicIHGyCDz8fLEjLfWqDqYZbQEQIgwgfDfYz9vMfXfSZ+Atrz9DgjWrbR8n4reNG5tGyGFpV0vqeIka86uMQaR3z3nPKUm+U2i3Fx3Ps2N7jcw3ijOnZzimjA4S7uD+lEkDo91GEwUhCEilDue72xFoc6Q5swjoqDC+C094iw9EX5eu580FCMSdJQFABkhjiQFkG0mfagQCoQfojCpw94MO3rz54aOEu9SzcvU3U+kU9gmAyfnhA/HVsiMxvP5YXs5s98MditQ8OFVDHv8n2F51Ac8yHz9K+KWESaqhSncPnPAfSJpKmCBqQzpMhdm25BN7n7/K1+HZ9vv5nrO1TGq2WYmH+X1euSqxk9/whLVbfjz4dJ2vfHbjfhFz4RGnXddHepT459b59PJa61FDQrVBTsNpGNkUFCMtr2RGZosIWb4JDE2rLIgLA50EATu50uQjMYGioGhJZJJbWcClPi5WzcqpHZWEUQHcGqFVbCg5GVx0nhNS5p+JISyJ2X3k59KjHyTpfZOenlw1fnn6KFJv9XaYx6QgZXxIHuDIcrNAz4rRrFkYRkmpOrCm36Ph3DSLY0jMd4TkQbfQcpMkRe+1IsUjMR3Bib4UiSj8fQOe89rSYE4QTJNl+yuPp/Hc6MSuTN0gdURDUXROjduVENYIM/MmYQ8/n8fUZtv4p72bsGjA8IdH5/3lgfYnqL9zVU6CdoojMbE+BZ+Tl+i9LThRUQS53HXTMg8pE9VQXImpB1a6dLFBZm5j5VEc7WEHzclBoOrt10LKO74bRtDWFuwZOCPfkx+f0jOwfzJUrEWrVnpKdfL+FXigMrnSZxmOaakB4JuvUmHPFrI2dPdEdN/bfjK+d7Bw8zp5ByVpNa5xWdT59DGIiTmavKIbv4zW12gUR66+icPOkuHEibeN+nsPytDrHGsk0AHQRTlfYePJY3ETWFxyxyqlN8R8yDCGkXUhy9o96NhiEEl36WQ1rgb1i+FqcScQhwjxw6Fu5Bg6FUVwgFwSBTSxaL011UlmJKaS22Q7FZA+DE18uCpS1euGdjgnR9NdwgwObSMhIPWMgm7oAeicXz4YvB+EQEjy4vN5Iy2DofMpxeuzOh39/t3opGC2e2Hv14mlC0uwwYTFcacyQ25DlCS5xQzEzUDRPLCAcC6InCPD1mPnfc3jydALAT179y1B4diE9nimxltzjSFyZr0jMdAhOI+BSfoHU9/bfzFQwcf4K8hc9PDG99V7gTeROEToIJIJir04auyqzXbZZKkZrK+oAgMDh9rb0AMT0fTy1ZfhUFfxvsgftiZikx3p5jsOgIiY54OxAQOhPSIekiw+t/3wNAzM3AHiY/R8IzGCsm4q/blI8vp3a5h8ncqhjtONL2wMYpYeairu3Yqhz9yqHXXTzWnc764EHOyAn8bcE5w6aYqrDhunuufHx8czP5VSVMTtM3ZYw/jn08p5JbYPoCHnyHSUdYQrxSUREJUzTd/yeDc/RmZg4tjFGz8QdU37IygYkXgupMIQRt4jMa3KoAYUgBiaIzEzVSMtu+HvPw8/2hPD7pL8EAV+99g6IWhUFJEkkQxl0boW0UfZ0Z0XZZZBuqPNHdqn1+Fhpg5PemB/QfNnt/hhWTz8KGrNrVrPd+/DQ4PhOMNWqgg0U3s00HGNUXJsiTIqsfFDNHxPzF+mV0curmLs7c3NSAK4VKEBXh8Z+r9Vfw/l/N/H+TGVb9Vh7d/+gIiqsvVkKFqGd6zWqzHdVJ/bP92+d9sRl7Vd9Oixdpw1XdfoOYP1qIH+dVCIIzFYOYOF/OIa3JUmigGQgPufz12zV3L1B2oQrDmWaIzd07NSsagHuo/nicYeX/L7fqSa035qBJ2orUleIyj+H5vboznhkAuMQVNPrrfa39Go1hsvUtLQG+5+Dm1e3mu4cN0sKWbHPU1H4YmuJUEfyy5crpZNHZsVz5m5v7b23heY4FfTOUuPn+q63ze4yxsnuIj9pyr96kufpt8tzGvLstUji47GLxVtUggIQyPoduqFbvBcdNEOIjb7ktEpYV2FlWGF7VkbrOxqpj1sxVn1NNvzXa20fU7hB6WsYwc6ec688N2jXfVD/b/b8VV0OdQEjsh5OYy11X2FXcjwGN/8Oe+2R/yxBekHnpc9dK442529M9fzqXgjMRJIe2AhVnljXIPaEghrzz9X53eSpwL+yJfTFb41gCrwMPcj/cHtw3vccSQeB8neesyUqHpiko+0r4wwHqBmKyHGikkkJC+zZ8fnt9qs+uUj+ktcu7+j10Pb2Yk/Y0QZ60qRQUmEITIjKHZJhxpsNyMtP03BD+nNwhm98I70n4yTE60OnlPD7f089di3GhOAhDHg2LjbExuTIy0dxxw9t5J4f8fjdaTtoNEx5KT7I3SRmEKhBkZEItbmX9E3vXitKctqugVs1A5W71KmGer1QKQv/EpoiVejt7C4+s2XeXj4fvMjMVczaNDQIDNtyOQamYCYmKR9EEcy3Skdgx08d55eHtfUN5+2qp27kYjEotRFWU01f/C1lavN0aVszBN/kQzE3MMjLYgwrcw73ErGify0s/DpragjLfeN98f7ZN4lMMcYeQHXF6iRZzG2GjDFQsqE+LyUaZ6aq7mr8lr77VIRPcL4niE46+vnA6RvDnvTdT85BEx4Y9ZKyN1b1+T6vvIsZ9yXpr1DIRuNFxyEt7fW/xbw5Ft+4wd6F1vDu76r0+fzrUKUYRR2zfdo5+rZ0b3wwjzEfHoQb7XlpyPPd+FdvdXTUn3BZI06LvcCNT7BntcBbvbMl1sdh+pw/hD9umMf46SfujCh+bXsr8bJ+RL+dC53wlNvuwcPiepSiEkzMQZgO9i7gzHs3j+HsT8Bg4/CwG8i1+eli6qyvlLk73zZri+uWaCUY1X0m6Pftu2MuayRVVN7Iif7+b42WXMEU8NXtyMo7PV5dGw6vMePmlj5KkODnno+zLd6Vo1wglF9YtoyhlvEuXpd3ZXu1+PfpXXzjn400h/KD6elGGofwXCyQP2R4kcv5e9wp9dvz/Jx5ttJzFrnm0dWznShoSYn0Y8eQXc/X0P3DxxGYUyDu7MVudDwkI9qpahyLHU9R0oVDjpSfb+NGTTWJe2lmYNyMOOlG44coi4e94tWpyal3Z7Pp6abzofTp4Vc8+ju1aApD4VUGsTJkSCxhm9wWbI69OMXUH1ktY8RgmKE84zhPiOrILJJN4OztzJu+ExJneE8eVltvVwp3z6LktErkw5z4PwnZM6+nNTKc2fyeXwdxilLPSMo828G3rFfVgd4fERC2youlUf2X9XDVbVV8BVQ5ty7pic3sQNNdDhinjpLvHPvUPLr9fftjGhFkUZS0FEGIRQhv1zWU7dl2TNu0tZ2y4s4VbCqxJx5YCMtJvHYThWtnmjXIYLZxuGchdKG3HBhimkZ6Jp6ovUMgJC1TIxjKN2TewS7T3Hn9nNOZ7YlOmdzXIYjLSfEw/1DMwfqAf8Qvuww82i21adeD7Nd8HUtkaPs2zFxiVCHm/v4N2+y3D6AZ1Jso2XRFdIieHJivZGv1tk2/d9eTnbW/NOSuUS4FbMMeL2borKyTFU7MFDF+73BnOLMDBDk6r+rvhhjH5dPL929fezMwdcnG6LV4RNus2SdvNdR+y3ddZ7EZ6rxgrYDem2fR8GDewRaMuX9NZ1XasdNXDbt1DBKjdmfXjcm4Vpra8Dl+aZtuoHGaOjbjluvzkJg4Q/hL7x2f1/P8cfaU/z1xCbKYJnq/KE0C7Z2To/TFnselkpR9XF/o+58basjMezc8raZ30+tFanifYq2Ir1ZOWCgK0vvk1BOseBRQ0HdDpRd8FLS+ClO36ItHmVE3irk7OkLRG6H85zgPnrP0UVSb+rXiyjoqQjW0QdURVx/LbJB4tmCNi8XryjdHjqDRsf1xzWNtv6NRKWI802mBe+JhFuzghC165cUIy3ptGKt4s/x59lXW7JQlGYgmX3glbph5xD28N3QwSQo7vZ2rS889bSPUqcmy/sfz4/v6bz9+WhLYzsh/GqRIInzf1p0hTIqUiw7eJw8Y8Hf6ZtOdSpf6XfWRZyku1PCzODoQ9jHQSrpqupyqN74v2zqBHQUNHTlZIyQ81ZeZ3lnydFSh5MHDy2vVbd1WEC4X1FhKZofeoPisbXELyXlJUPPXBsqowhOas7PIuanzVH7rys+Pf553V4XpZ7JkVCdZMyREPxVsES1uEzZRKmYO+B+10m93mlr65P9OxyI9QXRr+2Xd1NGMTpTGSCpmpJ3PiMxTStKCFq+2bmgRiOS/FDE/aLyvZL83G1Q7eq5iRLzwPtbiIc9n8J6oBU6+0RGiX22jm97qe1ZQePLnhu9dlJe9Wiy6iMxTdQ0ayliybElKpRJcfXOG+zRDK+64ne5r26RCaxHXfcj7l4bpM7oyLDugya5xRFeu9SE04hxL8Yf3SR27DvBm2fqOdHS5xqe+Aur4lZ8LmGU8mMavNviEWQW3jdJTrtFoXGcdMZ5rM5jF0ydS9/gVMjqdoInn7fHVo9yNyLiuai7uWooOUVs8IKaGEuHHYo98+OMYMJOnxzMCEhId0J6l293MB1qvNHZ5mqMgh9jbxluuMqt1ZN92zC6lPm8Lx6c3gbEPKTZQvlet23eZ6adffyynY6LEAv1Ofj4PTWOh4dXHzzUEt7vWZl2XjEEM6Nahx0ykHIeTFUhXY8eTf62az4O+7sShRn7YdUxJzFn/T99E8ViB1I/bVrpdCnY6hrVJ2+ceGV4mrncL+aeGfZnLTy8MKZXJvJGIj6nnPjUKHEz7zJ9dh+p4g5bD+HJTbP0eHd0O9v4Pn4ImDFnZoPQdgN62L+anEsus8IqjtFiZo4cPP5dIzy94KOkk8YL2bDv7nxDuUJRiqujuReHdTBCE+OzR3NaxWWZ8MjsK/7Hox9HHgVJjZQkDK0ihjcpm+48vD2Y84vW36X7vPVuHCxyvD0jMSuKgUejnHunpN/44fxJCMceM5p3fBX65jxZ5Wl8jHoYJ0k5b1heRWEla7rjTP31UGOFxHB+rmGyfZh+TVQYXsafmtlEJnWX9FOsReE4IgSVsXUUOjvuetCSinwR+6NqONjyehytAkXXFS4/z6fHXp57anc1sFCmH+KHUEILXzgfwV0E8eGaq21Gx43Vu/gRF6+yHh5HTu7uk6e2i301NVSglEyWh0tn8cDlxcQx5FP7/yyfKqXtmA9cxtzRrI5XR3ZLw+eXbatvjrM4h4w54EHFd/Fr3o18XPlTm3O++1U0aFj97+GX0Zx4S2TnZ6l4KyETiK99EopDsgVeRz5VLUg/3HgR9qGdstTCKOJim93tbfn26XMduuJL7t04Pn9ayhob9PZcpxu2vNTd2Y1I7KIwep8E6alOiKopN8eyl21aDndFW5BKd0yhq7MoQUntiI1TIhNLqqsdfP4fwL6Vc5MgQzwnb7hRqYBv2W/yRSYpHxXYzVeubCPBwhggTOerHg+lqo/ToE1gTCXpGkvv+O9z0zAwodxcOOeymE5xzfVuaI5ggFl/u0/C7CIQx93tpU4w7oc5w177RuXB5k93dRgm/1oxEtMV4yR4a1ZIsH4YgBZr4fgUZNP4uO/YiSd+HNxXvKFlqr0PnILbGZlF51uEEfPuuoLipmdGlUquXf8jLd+os6MH+H5l+XCqfpKURT2SHt1dGZbAxPZ76T6M0O87un3cpq1s/k+vTJrA+BKjp07dI2JPdweaxa6a1BkIiLl/JGEQz46vMb6gSAWU6R1SPrcL7Zyul22MYhsJjOcxCAuaxLjIfdB0h5Q74hprK6y4bfCto4g9b8rS0hpYfKGrh8PByyvZ7IcS/I1NS6Xkiox8W88GqgKM+mzt2+O4opL7K0sIuJPm5ms3cGLEMUVbwDLDIyjKJ2SonrmersuO6I7ItoGMDOExvwK+keNfbLDEMHyhP0pgwnxSVJtshk7JLCZ0DoOqMiaMY+c8Rb7HGVtiIFV2YXnpb2HLglz2X8W4czObSyTvzQxgTdZQkkWSpCMop0SpUoKEphSSSsCVDMVKEPgkkUAMZok/pZIVVHUrJcghnEoBxCModOO2/ykt939GN9M1Qivl+db7XgW5+H47TO5+Lxj+ndzAhPIt4yOfqVRPZ4XdnCMba6o5VnkdXqaJRRIzwCEVBnbyKoxdoWBlYdEZGVbFFpbJ3qW4mRruIGhmZg+WjLT+R6PHXVqeP+Kjt2p5lgunmHTALCUCl3y6IPGdD2Q7bnqBsBAwG39x9REr9s+/7xTZxjnrTAMW5pMUFAhvIUQjIcY/asH5i5x/VsTX10q4nol3KSyfYSMohZiAgAicNeuB2IMy+PkgQ8XQz9sGlF4/LGBFMN9yOdB/hEoIT+mmREEixjy38g8od0Yvo5eJGiIkzBi2kPU0DyC+pFAUTZUbY4nneglXQXqklhHxEaiIdLuVaUplwbGnlG1QpYICwFHyf9PxXhEMf6m2vSBklna1MUT+d/h0aZ13aL4U6LfGglEjLbQ7Qy/4wFCkG9GzG/GxmdrII6/r2uXYNn6S4okCBZD8BzdF5EcsafhcGaCyqmkOfp9J+um0M8/iIN2C1erKMnDFTihJ0EUf4hseSELrctO1m0sQ/UsrdLB6/Wf6WNr85PhgfMfCO9+qBz+Xtk18goR+6J5CnMubyeMZF30/d1ZV5sUYchQOZxSzzPLNofgr5aEWSrnR0ZUuv3GyilzoIawOJF6/qn1/kkP7/mXoETtQZIm9lHfjfdIxRhrfPFvZw+rSUpJMnUoMNBAbf7rvyGp/Jl7+r4/pLOfd6rosUOEIG1j8n7mn+hPLhT8mbVlQVrBRqpqIEac/9D33Kejd99mK1P20jlSSPLM/DHKfy/JMhFeAb+HNM8Th0mZAu+5RIdeDx+4lIyESAXQGzm87zGjQ1jlaziDSiQhzJmb5sxydFo5adHzQLJUa+nKXVG3FRWTvU6whZZFMzI0Iguc/KEV7SO1ff+OyyUuuHujqzyOq4XCDUm12FwfvIuCjvchFxNRPUd3PyHTMZ593VTiToSTdKKSbsV4F9F9RCbHw8r/2fHZ57pWKrdY2PSM0DlCjINsjKFCCh8PjTFYjKLA+65qdaN07BpsOyv3ylvKMKCkm7M6EkCSLWrlvoKidZTi/uIwRjm+rcSMYjF1o1ImYCSYLGIIZMIFSIDyERWJJDAmCIsrCbCxGKGs/i617b8GGH8u3IygvINGYfEzvs0MyHzwLK2XQikQ2zSF5VTxrjW0aX7qB14R5QjS7ieoHP1wla1lyPzF16izWUvs8kLJT4tVftlXC5SZ3NpBnGwvdjdPjbhK48/bDZFAigNM4Te7vHAjdEny/V+XOCw/Uj61rpezb8WHKDmJ8VJQzN1MBnWb7LMJdIwacbDl+TOSOifHZ4S2w+yIy9IKHc/GHQbIOPkC7fBbtTe7nedcTHSMoEDQV6ZwihKk6B3Pop3NUdNQ5Zdc9Dih6syLxQIWRlaavb6izDslyv6vJaEg2YwNKAsMIkSpJ+oq3c9Uqj3dkOVvA2m06NwQIEmNeXv59fNx2F9RHCM4zzsnqlVUaaZ1HfYUWPsoCWFGqnLsq0XWlmnESEupl7HcjMTmkwnQ/kvXPrX7k2xM6ah3ARudmNKaCIy1izpey7ODUKhD2O5J+irXDt6PbOZKy0hwrO5Z9DzZoIVvp4xOlbum/lEOHZ0w/R+ly8vKYXxNCJf5erze89e7cm+CEdi8kHh1QJP7/9iXihCdCSQIrx7VV+lkSmwvPo8/Jv0EIIOdjTfrWKx+tK8W5WsQmSaOfz6pMj+AhCM2Yt0i4eFdAyPeoc3cmmN5ojkHTFhiV3eNDeiW0qR6asaOQ5dAvarC7CSiZEbLM6LPWjTYFeJRTai9FaRPrzM6BDuUl/DYpaRs2venOIgtXRCiXTOEEEPplQSi9aCMx7SJvwlKbNIx9eitvJPHlplEjLSg4ezvPKK/I01aZQzzCGhpMpSMxcYpjzJCOiNZ0Z0Y63LfIluX312TQeCxkwPFcUNWPIzGZ931Wa9OtKDs3htwuFxeI8pHyctp2QmUTc5VuerXZD8bcUxWwKasjMSNvyIZr5qzCmE+KV9mMyno/c5ndkT9PTCEpl1DF+qWXVfVXN4FegNGuqmTaJWaKN1Fgl++MOaKobRGlWaL2szjcWP17D++Trv7l8J365ipiy/CTyuZi8xE5O66NA+XTp7IDGXRGX7HLP4ejBAhlHjjeNXDlO67Pcs5/M1VJiMPk4lvj3RtavOt9ol6dzZ52UtNO7IKoo8v4whHj2c4e9kn+PHPN5nuo1saPSOXuCJW68oQptjdVK63OIy1tcIIzeq5PfcJDxuvtiXWlqKUOiuYoNCKLC25uhTDXW11RZigzT8MDNkKpMGDtBJuorcpF1qbJXRL5yvEJ3tL6G4FEZahVLK2IZaj0kfPSH8lESksLskjp4t4McBdNymSLGFWh+/U/tycCcvZ6FtnKJrED++KXBSlAbEzELipvL7esgERDW/vPYSMxgDW19l5KDMnlIzGcTue+bsSaLQTqHSMt5oOg5FT659+6LtydyE4jMeWyISWPs1Px+j3wgwcO0iQJtOPhz5bvNJxJm67ua+dmpSbyTbbDhlDLZ0QogfT76NyNIz4fo9N8isXwnhPd68xYsK3zb0kpbe/WSCMxIhj4IFggM29u7OSI1DEkkdepTDaMj5Qmw89J5M3TE9cM8OaIbX8af91hoTfxSnEWQovJv2arm9jVYR2NxVpGRdVbjCgPl9+nkz/F9JRpiW17cWCcSLHYIPNcXZmil6X8KbRT2EmvlspL6fj+HnyvpVbKssshgepM+UbgoogLcaCiRQImJj3+32UlYWJWcaSZ1bLxVnk9V9udY1kHIGI7ndeUGkobxyZ/Xc4yr0SItVEsIuoZkYbJAW66NOhNlY3rU6aU2soa8vMUPw7d2DBl2mc7HwLlHCkv76qSPe7o7DK/FqgjMY77aA8dFVZw8lFduhwbWhnbZf9M4xkFdhK/TyNcYb4RvC6ugQLuT2Y40dsw3wVyatEIlTUtpI7l3cLPnylg1djXXIEzHNss82+TN3VOItCiopUGJVvMO6lrp0UXbuHRre2oH2FPQa4dlE5sOUwCGIaH0Ts2K73xrPq65kbNBboumV6YT2yg3Lvk2xNK3ROtBGlIbrW3hhsysnHbIy11l9SHKGixSqGc5+t51OsQ3w65S7JR6rWgdCMtNqJ651SQsL6MZWc9tUt/Ku5rTE0aeGOXDIprzFXCw4vkIZFD9lmhX6CQQiHT2MlyLEJngyJ03tAhgQZNbQEuq/NqctLBryYWeU7r2ovnOUimxbLSnTOUFpDTA+CwjVZpUrbCEK9OQ8MsXi7vm7uFzUvjHZOGVtjURamjCEqKiMMn8YZYZmrYuGmhrubx1u+Eac9kAjDm3PWktsjQh9CZMbXJVCoimyMtphPpFtLSARRXXns3hzXyxeWghf4YUWB4YV6kVl+pjS3PGbE4a4qZaX9eMKWskXytQEQVLKCDtp25R41M+G16sQeiDsJFlzaoxbF6IvLnR16qWkq8U7XjkRKrrGl1WE5pigXS+VfkJCKXJa05qpgluLcy8I3Gbd0MqJzlYNoj8WxGBJ7HbCncODkYv9RzUzR+GfNB9TfZ2Brof2UOu/Ry8i7oU0OFuh2d7JihK0lPVJ4cVCMxtL7YV0U2RiRJuaIZKqAOOiEHCbEshHRstnsXZPgZdWib25GWirMTpyS75aYm+uPPEl1e6EDonsh06qRHZS9AljdhCN47d1kjLaPEpiY39UZPGFMcGZLG/kTgveXdlNRVu6TxtefQLQWm9iCG0D0GnCN0nm+o6dECzOVmVNu8tzwcMbHzn7cu2sb8dnD535obEYxOG5c7AtkGD31W4L8qxA+2wmPoWjiTfhl+XjmtfIttzTXyeXWGg64badYYdGCiGO/fyk7Mw1CAOeueSOkdRmaPuqvDxvFH53Lrd2U1Rab6Jjw74I5cMojI6+XRvLvRB6z7+O5uzBkMh66Cze1zdaUqkxrRO+mRJS17IzEyljDBIyGnX0SoAuRgUVxhFd4U0RMjjy6Bg0F6Orj9m7UEkeDtV/QelpPWPHBG5XHXG2ZrWS8qA2aHG5kxMkn2lpiiyqk34ma5tOONeRfhNyGT4ILEyIZ1bGCLbC6Zb22TrvpRg8NMHJWu5Oz9/RyzJhw82BEpKBW/ke7p3kTX3EUwCyVQrnWEIIp8lMqMcKST1txrq0MXZluHE8Nd8689RlXoyUL4UcJLPXsdnLgezXAop66SIy3s4PxoXGqCLJ7WmaKbUuFNIy2qqXJiyBZSvrqzpLG77agtjY2w53Kd26cefCdeiDSyJuVkWfQZM7X6ExY0S3bdROF0UlAdhYuMzUV4UkQovcigsWOLs10VlVZ1WuLncexgT/ZOxiFQQQPhno08UT+rLIviwpVQiQM481vOxfMVe3HDXeX101saN+6e6fj81UFpa9NrGUGVGm0zoi1k5KFESNLytTRm7NFqKIHJRoMxQBLf/T9OjV+n3+8+LwPi+zxNyOdjlD6ov9ZGr5xAq3ZhSf/R556b5j7CxHzkD7bEK13nX7V8e/O52yj4KqeYIVaqZJJCZyMxarUaXdC0p55oohSeZxSLfi6hpT7fHmrucV1hdG1ajiCS/V8LLm8kYxFt18OUIyiU5/NUdvM5vKdD6s7SjTj7qiuWTz9f8H6fJd28P1foo8fKpcdX8mq2NSemk9y7IabXhENFY37DEYP2K++9Z4EgYFXU1rtA/xOt8dvz/OK5neUPol+0tTDePRH2RYBnXSqJzVQCE2lKG2+86PYZZa38xJ5vtfygeN+79W35D8Xo+uagn8aH5AuH7aNwtwQjKLF/YoS4xgSVj/RgEBgfvsk/O/Yy4S5RIyjqyV8k0kAPyMJHQhsGOsUuJRcjYMw2gpEWC/nfyF0GWHIafzMr/Admebx47Sx7KLNuOZcH8+ukzWGB/luuKD6AwcB6RLxxcOjgDC2rf0msBMxBMUNJztgIqde04DL3XqhXXcZVOk4QIQsYZO454kjws0SX1VcOZG1tBVEjMTpA/RSjNHErjAW2ELwIo9j/a7DYonON/W70HneKmk5wdjy+IcA3nq9HkcH2r5j3OSMojkZw8yMxaYZRT+WAhcqdIdUCze9ZOhTILlpHJhYtY9dn+UMXQYiuOVaAuPuvlzwVB8xBtag0QhDm3/PpckvM07QfBeUbwX7+IyiCfGJ9SZnV+rjZTWnXvxaXquOtnCfreCB4Q+ZWz2kjKEyTTTBBVdgaHyYjLTMpT9C6UeMfMhtmTfERo71UxJzWPw7fMymOrgbaIyjRrdRJJA6B03lTDpqEUGBijrGgU/b/jL4vZM5vnUPwzNZtxKXj183b2yxdv/Ba3SMxHo4HoYuXyzadIQguCUmhdeSK7fqpr+Bp8a/hvhvfvaxCJfiUtQfKVnY/XyMtBIcx3hQVXYazElxf+saMwgM+IJvBguf4wx1fYRYa7PBWp7GcESTgWRdopS9+a50nCI69QCIP8SxqBoaWHZKd/fJOMEh46hnmFSRkJNRU+X340Ew/G85cuh0clw91SUdJAk+iISFuHkpqqyMt1NkHnJCWo8iOdAmQawNQNgG4QCbYF41hftaG4CMxmZwJ+wS01sV7RiDpo3gXG1qg9uRXreNEwUvhZtV8WKd2mpXBhdAQ6Jn4jzfMwC8jKOg0pQZBtIH1Pq3qpGL3h34jLROy9jhqSO1SuJh4kIWazRgaQqq4FBwzguMJRceCdD9Y/wSCtIAQgPVw3xeIVOzL0EIfh174cd4yTOm5DplAHl8CoZD1nBOevQMIFRR3NqRDSww4NkIHf9hCuuj/gwfHmDfoASMo/xlhAvKikKkl9d5hNHT9f+bneP7dTqG8RJEPs0zaFl7whSawjkFS1/w4Gedy/zf1/TwLtnZ8XxkYF2GmCV3bXMHdAqZ8bLP+jXjjbpgfWuZZRsf0bG+TRBetFzRN/VzUCaYgSSD8nt7ulOY7KSlYYGJ6fL4gdqd+8geAgiIbvQN5G+xXCK9K7j5jnQHmnWjFkeL3Fjj9bdmMK5dswztUOfsTQs38mDqCECIjhYhMZwOf5NsotegnU1/xzPUzfWbWRBu7MKITSOfP02H2u7Ow7iTJUgeylpBrJoaRPmexmCoulokflXsjLZucTSbkIzEDH57FVSGsPmdi0Jp/iHpT1KIhIzGoRoIIYVLNfqcXDu4BDi5wjmR3l7+yXBm403ly6dRrIx2fgviScqqQqp6iJqISeBT4FzSn3vdvSSdEmz1lnSVGEVnN27pJJCzmIinfLEr9fn7M1sNdbKUGux6rg+uTSTLsbBw/m3WVYNowGXILW0hsa5rIyMjIzPbk8MA24GMjLWUajAMYOt13uJmlNWcC5uIwwDthwfZ44d93lfgPSWtL/cfcPtS9H9B+mEnPtiMoJk/R+nmyB3u44cakqHnkYPhPuxuiIgcJSIcc+yMtKf9I/IYpIyha02D3jlTXyFMIwh77b5vfjTrG7s1sXjZCJq7u6YhIlcJqWRyaKqmeIEmiAoXUkWJkSAQPV/Xj5fu+8vYRbhYXIDtzoGV7mBSQmNQhoIQilMd8DIWmp+WO90g4rC4CBeDGB+MjMTWe9aw2Vae4gogjBYj2xcMOOXmHiHXvz7JhNDILQa4ClKsjKIuwNL7y4D27RHTqD90B2us0levsaTBcSIYomRYc2HsFKMfj+P+nlSMtPvD37eoiESqSEpkE5eCmo1p9eCpxGBgciHA4muGhFkGwG+1BY68jKOcL1C9BTN5NgUYjKC5B8yU9ZYNSyGmjeUUE6pUYdaajvj4VMdjTSPiweWSEhFByamgXILCAQAuEjnYoN1Mk7xJWpqbotHIXjxNzx6SvEMHEmiIHpHh2F8kWMSRqEhlj+X2aaqqIQh1Bk6DTDoQeRuNwkPp6ng7OQ3a8gPI0NjFGvEt9AvAU6mxkdGLCwGgIQQGoEe5vYay8z2MfhE1wvYHD4viliOxCfkfqwKdXztSJFSQhhrqeLQtRRtAI+C3rK7c4GY/5P1eDHnIjLVhlVxvL7cvjrZmsrzgm8jq81s5tWKb7ZmHKTvL1y44Ji5XvDJOgR4l4vdKd287wmL3dyXdNy3RP62Z1eCxM4LmXo3eF5tPE5XVlBSlMCFdkBakjMU+JRtVFyPdpZh2UN6zC9BS85lBSf8ZCydidqyjXn6/4QeaCyoiSIyg/REfd8piBcjsMcLlE3l/4Gn8rL+jU6T8nZtPD4vLceZ8+jEa+2/d89ebk+FVbZl/EyO+oT+aeoeYfIdOX+qyCqqq5Sqiv4B7S9C1pKCmjn4+dPcnn96G2nbtDYbxCXQ+Mh8vUuEvRYsHKo8SSEipfrwKPZpdf0X/gd/3/GCJTuCQvk0Q/IQW2S2YgQrzonNVEQdXfIzG+SIL/vXGTbGcFPNcJVBvvvFXeIzEcHejVVVmmAXB9RzKIjQtVsFQRiErbKDEPMYxxEFHt9RzjeCdWWlVZQxZVgomKxLW2tuDKo5xMwhMx9caQ2yeg9EpbOTcqBihmOQfWDjOOXGbcRiYQYxscvV9fzV8+VAbM2Yhv3r9uucN0SC0kikSQYhd2A/svp2s7flAPzncaftfQ+u89rHSa/lyLzP18KROzn56AEnqLoHwFZ0WkX1B7oC5ZGzGMtBJcD8fLbqP97U34z0AggYkPqMK+4Ofyz5lv0YvpGoSEJDuybCdkOXIT4Tvdypiw4ZwCaiMx9IAjLQ8eK2CsUMAUyTgB3BArTgwxM7/AuozYfIMBwdWQ/vgIXezcPfE2B9Pd7TlOWRTqIq1I4Uu9IidiwPxRC+MI9YFDfQ4LpjcjYJD5hMrYB2DR+Fg7cg9x+mEcaC0bIO5/fEMqn7iCH6celgPx9/62IzEcSMCCM/MPXsPOCINvivtInsHNCIHmvOaHMfyPt5zDESBkQ4/rr6fzp5xT8pQRn7q01sg8G7Pq+aoFvzpEWiIoljSIeSMxHee7aXBg/aQ8kHyfW+0l5Uu9iyzGYGbdgzjYAgy76ghmIZhMwgSYJB+beEgfU7dBxNR7+ROp2H4qIxjTiHLw+t+HL2E0VTiQV0/muLvuIeY06elPmNiBtHlDpRj0KHORBpL0dYG16uoQSXzFaNI/KHXATMIjKAOWGjU+PALziYtcziMtIZoHMc5TZkPUwFCbIygz3rcmHSxX8DA5Iy1OQiuC9UtDYscjKH28r8xFG2oiyCX6r81b5fC8317H5jgtgCHUoB5zApRNPbccyHUm97PkyNbt3AYhdQx7h55vjCIxIDni8kPH2G5EpwfzgOiOnWeye0oZnbyAg9gQrZCZHzed/OMm6VMc/RdZW0TwDpD59tnjo4fDAfZ1nb6rZSsVMjEL3UbNIfEZqViL3qakWzEJDPuZJJJ4C4AU+IGx8xDr/lvdAvBToqbNo0AWkBPJ+P6QfmCASfB1Kp2EL3tNQcb9Jp6zgegqfx7/uT+3Iy2BAx3K+WW2dM5Tl2W+LZ4mj76HwOwG4wxNUO7FDrQEDp93m1o5l5erjXvPLUjyCRo8QoJaFugCR3Dv8yZbzNCZUIEI88BmiLsB3p4Bav3HUPLWBTu51iFJ+JwLDMg41OI1u8MfblRN9IOM4yTU1kKCEdc3Qd8nJYUa4okhUJ6Lw3HRHP4pSu0CRCzG/pSbI0ay54MD+uqievh7O7CoobVKG+/7/wt7ZUvbXtvzEpmysEvWxgw90xktnK8LFxHlnNWGr3qNBzDzfE18A5PzTft0MwHIRB74M/kevfNchliIfl2ChJEJIzHv2vKc7ChgDCiJIh8XIbizD6MJVbU3ckkjVlF1txeJ1F+MT4v4d9eR8wHrA6jED2YPSHereQ6Neycoqdar0GkOfQw6vmTkOpgOKO0jRVSi46/P7HkfwCHhgfuY+fmafAZ+GiBdh53ZIzar+tc/X/Ck/1mEUlr/0szIxLL/lwMxg2wO4hxzjVOWxicjMVkPfnYTPLQj5TqPi+KNbkq5ZCj/ijgGHX7ObhxnccZOedt1/ynpo6BLKbkDIKfbSZ3cXyhCC7qWq8eNVV2KxvgX1YvKP9Imnwda7DM646fPKATwAocjKI+eIm0hq0mn1+w1dU1Cm94kkZAJIQkSllRWiJ6xNp8QFj3XouDEIy1WTnOelOY+EJ25NjcZEIcpRUVECBIk3kiQLzfm/2xb117vaTfi2CMo28aAwmc4VFxiK/JzIkeBHtkECEJRRDEiRCIptUMepoIRxcYciQgSCAFxKSFnqut94xCbHv+pqs2Pez9R+H1YTi/mVjSkE/FwHSppg5nRstJYDISMIyDzh3zYHf7SZM207S5R2vCYdTvD+liMgSCFi5YBGn9IfWwwxVdyLIasW1iEm4YWFDWKBJBe2CMoXxkIqQVG+KETENAgmJ2ofbwRQNoIQck0AQzal1uU43hpIzF2Hsx9CHWZEbnE6uu+j8vZbAxTEKEDbCLCKRBhzVaUogvFhanjjkpg3T5B/GJTx6GamJD4MjMuSiMxTeRnOrQXJBj+59g/TzGfP8V7rqQpaw7g0QhJ3Zg0okCEyQkkzCl3T6/Llvve/zWh7u12lGSSNZMgiMWJ4uAeNsg2wKwMsqwjKCpGhGzKkbZtruvPHbaeXVQjMZEZGRLH4ija8oeT4u/3ZW63o8PWB4huXfGYoWfLkHofMbPQoUBQbV12DEs3gnwiS6B6SAUGIzEeHkdYkM00BDAMgOe/gfayU0eWEP5g0o8DktxDSqJGQJEZBkAjMRaA2YJkEts6aSGgGVIQ7bmwFiAWyo+BS4XFTrB7LUEgcK6dwadg5QJO3DZvw58eUXYjZCB95FpcQ3GEIy1DdItzc2Zw1v7k99FATkrbAZ0BgG/leYbkQ0mwBGgcbICFVY5mbEwPazIzyCMtZM4U9I+2OhlrMB9+4BsMA1GQbRpKyg5DDtuz9HjeicBPt+3DuyMorD4aJn7TLKJv+1E2H3wguqUXEuWVWKqiIP0ebpZf6QP5/vP1sBXM4tS86bGRv7W6oMTQfaDAh6uQX1Ll9W9pebq+EaUQ6hej85OiYk4mltGlS23BuYKwsfLHmYzVfX7URDU33oYQIQEp6eS5wocDLDgcycTQ4CFN4ZqKlKHRIJ7w1bT17KKH2BFhpI81G/BMyUEpmOGAYDnXx/zp2jIEIdQHjxUgORlQgdE3yMIJ7QKT1HeBwy7/P9xfn3HAtJeQk2nVto1q7zoOobARW/n5tSSE2hUh80OkJIQ+5R7Qh9MxOKvm2/ohNVNhpTrbgIVtTx0gkSsC+N8kyzYSNm+h+Jo25sdXm+/7PSMtIrLWYbwjMXcvWe6H2HfX7QjQBL4MIy3s6JfGmYmmYSAjSFTL2+v0zqUkExM7fw6jssGNrppUFOyEItabuZoUEEA+wERERE7FKU+4+FGpJkIGVwuKEc0wfx7M3jBh5SivdF5Gfh9XDMEowWTSwCjCIJEjIw/JKVirjVXDSqcyry2j/WL/WERcj+I/R08oHmOf1hR1HSPWdBkXHrAxRxNyrQKUsFkEOUW8YjfQfKDsNgXtjqzDYkLDvN4pinaq5D83uA6LjR8jLRy6+JsE2BBXia1OIfvcmQEijYh6fT91hhSCiZEE170e3gbS9TlTv05DvV5Q3hqemJshNHLIVSFwC4D+dqmBCTcDy4BHpI+2yl8cHOw5YTuy0SMx7uIGZ27nyDqV3MJCSRMGWJG2w7Gv3eDPzpW9vu5pZrzZu8FApjE7b8WMcQSZ0yYZujq3H4cJEimnbVBvjclkmKaGetB6VCT/fQVwDimG69KX2rmCGSKTO89P1eOiGiHSVPimgJlpT/b+OKqhAncTto0WQZRUIXMOi0xq5hj8cTLp6iMtmnWcydl/hNM5/TpEFtPnh3bWFSl3fqQ5zq9TulDylebSM01S7U2cPsspFZY9Tu6jkbL5xaU6w4mnhcbzQcrwPAJEXSTkX1vVyEwRQaDiEk4yqOQeIH39SSaOtya9wkMSB+4cNxwbVi1gMHJAJCMtYBKSNCSX5wv247gSfSn+WulSSTPXihBOalcLEjQcx5h2OZt/h4Yvuuao78Ai9lNVQg/oQB0jKGJxXcbGw0rDGSERBm0lWiA3QCAhDsMOZF0XHvPmQugDg2IzbEBsB8TIPxymXNBINVkuothVmQ5Ps8+h07PpueTsjIPOUUg7w+4eVNBhovDA60Q8HNCjo4J2ZW6dqJjDM4p9coexCCx8gyi8oE9BcUH0xNH0/JG8SIwRFMmZA/OkF/HZs8GrEJNMEA+hPk+InHy93XxvP0ip2C4JofEw0+H7SgZnoG4V3sxCnqXRSf3xsQSPhRcQB6v32P80qPIxq08C/4eHVHtkj5ZXxBT7aaTyejG5sYYS6RIRIX1GWPuk/NH3n2ZTn33TNBHEbPGK9p/zrr+jOsLjgxV5GugcIzE24S9KUHugAXEzIyjVb6QsdMND/kY/Hr0qcNOuzbNLt/EGEBxVZl4EMDYIdEG4VkuXm7C5wo2Ib08tzjlE6/cDhCyHMGg4uUKQ/PKXNiPRyOwwtCwIHK8wolJ7I+iwRC65HSbiXh8S6FBj8UVkHBQDWRjBIRP3fhQTpDeBZUA8w4j3L2ex28019Ch2AsciaAXFQKDfg2gznJnB1WvH4qmgN0YDQY5hqjFpxkXIIy3UYyMohzMl2SQOoomix/2Nj4E/gJ4vIv/DRXB816fl8wyAc2LlBNAIJ0bMgd+SywbgbAfV6uUHuHJAh7zUCwtCoT9vz+x7vwu8eqtn6rxYyYyDJt7UxIUrC5JCfwGhhxm/lhzrpTiJY2k/M7eDOXIREEZvNhnDyW4M120pMmj/ZYh3MYHaqmiqknFKEHhOmKEujiHyebfeUJvSyYPXBx0kzySbp8Y192vC8KBo9qEiK2bbSw7lcEdjBSMxUW919W5+PsWK69M888pJCIfnIygwczFPj93r8g8YfKe8lXZa/PFKfPL0fdbk8QvMl8AWBiJZFCEPYlwQHR6EOEIQ8x7XkOQGZGgjKDT6oRmlfHo9FldobCQFvgw5Bvt5OdG+sHTWMgdhIfRyjeNWbEMVi6wQEGZhIej6YaDs/qYVGAlcPCAhMuhxG/Eus37HrzxoZlGJYpXrck38RY2Af3Hxywn91wYPU22Bgslq393UuKkM9PeP0IBqQF0Oxd/11Nn5CcVjwkoSZBQ11MltRVgvLTWWMGH2WHCMV+7JFLGQbjmP02294u/l31VVVdAjKFlO/7l9EggfIyjZ8TAfP79VXeBnRKoZIyg5tV+MsVXB4DFjWMxSNzFp1lvMsS/y4xS+pwEjKP50mv2/taZLtmgD9yZvQFMtmtAuS6F3jFgjKMSNGNTVN1uJM5IXwQkyPS2xhmgbieI2vHrryRHJR+usybpHZ6BgBIpoHRQ4B7ty7T7oQ7Gs/O3nLkIYZVCpE0Hqjj5+f0BUYEy67i5JG1NFQajUIzGEMA8YFNml+7ttgl7RUCh6S4pdnYXFzBkJIyhiWQXiWh7Si1xmhB+KAtf3Qr/lqAdoFjM16YgJmu8jLZiKNAk0wag9x7vbD26+mG2YGEPyr01u028jKCtTXY8kS1TEUgEcn2PsB4Y/ETq3CIQZaCd19IjzStHQ/JaxLj68/K79x7/eWT3Wm8PjPzvyQ/l9nolmu0/aVYMuzH34V6UmP1ZFBPw0Gll1BCLT74pRIzEY6uzeXOOmZbJ5TPOreWhFGGFyMNRST+IYHEikNKUOHmDEUvVOhkMYAe4YQvLqSW0WBjAhy7MIQMZUIGMjKN5NDAhiImBhMwwYERgGjCScSaZYBiLDGIwixQNYGISoELlozC0DeP96BI1+ILcaMCGDdP5z5zG9RwvwxGXygbVSXocjLTTYLIKD/aD+Pok73kWLMiMxE/5OGKsFwIiTw88yIgW0m57JNyHXSgRbiVFkhbcBIiMtySGGMDuBd8MQzM5FuQUZeJe3mGP50MGTEBjBQOEtxDNGMFSTHYgnTe4dl9Nhl8o4fiMtv7yMdWh2PhEGkIg8oTOYRZbyu+dv0mDfv/hf+5cCHQ8DRCEGSBMPojFU4lU3JJUCCMGjGVU6Eym7/jWlDP1fnAbpkezmulZdUX6v24GN2yXdMPqip8v2yMIU4wkEqKXRTDUnbHLGAxFUgjBVwtNDf3fvSEnpkUA4mZ33cWq0TmaB7oD+icFDgSMoISMFREIWYQfg+jB3sMVVlgQVbthuUbI9KmwuGhkbzmlHiCeKj7+8rKrO9eMjITUQmKB4F9ZRGZAdv44D4edMmnsINL1983fCHqPRR8VBQq7oIF8BMYN0QHbFIyiQqO7wJ2bNMgQYN8oiC1AkiQhn+/YtEZkjMQ783fJm9flohiyPGI5SPx3xqJvM9Q5AQhEDhtQUtvPJJmy1bKT/WtwmNEFXXfWEY4M5SZPpRMF0IckjLuqkKjIIGVwff7HZg3ijScCAOxqOoezU7W4wu5hiVkG6woiJAkC5pWxIxcKR3LIiWkMeX18/Qk6Hpw8jLZ6uI7OueI5a2swnsX2JjN3CgMB6kfs2qmv5fLJw1OmbQeosEMkFIVcxIIpFBGoC0SykATclOSwkvlVwcILyQRTCPVQ/yI9Pbl7wbMoQWxwWbr2HfuhtPBbWvBB0EzStORB8peynB6f2UL/emmnxxfkrVjKHqpbvocIO9FKsRvsdqlDOklGtW66YUTzREt4lJ2jHbPCGHByst3QvQSX95yMti7u2TIqorZ7JzGCEyRAPWIXHH02y+Hls8apZx9S1wKZZAqmn751R/2/ztyhfhk3cPdcrZgvlvpflIJr+v3Xc3w8G4TL8vZ00OS4yYzSR1iApl8IjLaFy3RvUTqVjJaROW6fMleeEIJJEzMpJTIimw+IxjWNdzDldvoa+FO3h1BDQLUHBMO1kOeLuO8H7CGGdB+N5tVXcGoQsT782mxN22MLo05xePn4Ox6Z30G6A513gZxM2M5EyKRvJIql6YEECObfMh+KD/hojLccPfL/RQ567TfK6W2FjUZRlk/UjKIsOJpRTVczGt4edrt+heKg36o1HUe7r7j5Io8ZQFVzwbckv5m2ma9+gugGks+izbwjNHzVfPepZlGRAoyKb4/Ymj+larzC54vjK+zQEqMriMCUjKKr1QRivr5zyjtlkmiBw6mONtql8wVePI7YUeZ+/WvPD9f6+nlroWSsjLUOT0luF26OeihbRnvPPgPCMf4TYePby2isrmfCcWksjLTVBtSCSbYrEGenRBkXvhbQiE1UjLZwqsuovqnoytnjbdGLjITPBoYLXPTTZuy3GGQWnXaxnwjscLC5TdkxSY0mDKJQ+PaB/J57Hlqp0a+/LaVLNuu47UIUHhDoSyzjCT/51S9/GolE9sEHucH4OY6y2dX/qKT9mNkN4eWZ86wm663Osh0uYrmW80T0Q5pP1c9Y8u0iW0uL3x4z427E34522umUX5jAs7EtOXH0ZXfdmHrTy80nuyp6559TGzzvkM6xqekf6sMPbcGTxypYv5PgUeybiAezS1GYxKipmjQalCARCEAkXl0t0fSHHlqctKnfW8C0kCLA7dez9RCMtLIVbQH8y6SOLVyMtH+RxnjvtLT39BwxVWOseS0U2f6uFQ1DJifE/V+483yH1L+n5VfLbvaMyBDPyaXiQI7o8drwh+UJ6w2Q1FDV7VZI7I0yyOVMPyr6MKtb78U/OduT9MwtkUa5ze3i7bH4E57Ns3RH27tNvRv+OK3N42qeNTyiWnDkXsoKK/u46w+sms/UfhxebrfDYzGBTC6Kbx9vSab/I78Htg54bZFnHSIQgId7iRyJJ8IGi9nlSMRbhsKNdYpMzc/m7R5fCPH46agvnNuKvxQ4tLzgzOi5M6TIPQmaNLmaCQgOD3ohjjwxe+VROg1oqQxLamCQmUHQhkJhzX0OQyFL9u4Du/6LHD7G+/8W6O2d3ha0fOG+RG0n8Wu3h0YEOqoiK7lwvSXeiS2frg/ojMSvaC55nBzogwxT9dgRQ+g/PdCMtqU92Ll4aB3zx1YB+co4sjzKZ6VVP1O+qHZj7uByAN0wjLZCNfL8H+2oXb450jbo+seEFpIYDhdHdx2e5jtLTw9lA6U0wU7HiFVd54vlILMlqIdCLIVYIwjhEnfc6k7FRzmmTrBxNIBvDSIHTuPtYodIjMS6kQYQQDAdihOlTYyxiY77Cu6FxwpYjMUTIhPloaiKORMoCmuJtjeVTfDuHvDM97CHWNDqK0UT4bZqGoX5XxEBwma/MdiFBHBG6M4Hbch2k93Tykiqj3fi/XmlKZgEqkCcTW0zBqbkVDlrNyVdE1SuFM9HK2p8zOCvZMho7dX08G8n5yK7UcrWtzc0Jt3A/XDKuLUYy5HbZ8OiVYmOO6YXKxEptidUY4QZxoIp9LzvHZ2R9aBnZIg/1LNfSu2UxoCkjAgOQZG3khkm8yZL8+g4bzo3GcDkH8IU03tWyEyqHZn4f69cM7f932P95RCMtMEmYSJGJYgbfF/17LIol0EF3WP4vf2/gNmeTlDkCIfX+mhX3F8vjXyejmcMCDCIF7QU9dzU+5p/BxvP0fY9r9f8X4nsGyP3iB1pj3J+KDhqvK7qqquyfzhYby9Pw/pCBcWDWuB/ZW1jFqYyHuvFsJhSFmg/QBZaNkUVEkhoC51ZP1lGF7hgbTYUhJQhGAxGEI1A/S8h+TSWHaHHRNLoIcGinTgQq44QJWTR1OtyhhMGgIZiyTXTTPBjZJLgOovZmNIEw27UUAUkQRaXica9tDPiRrn3u4Qmw4BxDyJq16i6ENqWtyFV0tH7Dc4Bd1I9TwNYO4NKPNutt6bUHRA5gEo6WEgyEGQIuQTJDoPBhv857HzPP+Q8jKHRqqqoqqiD7rVtrUuTD3h2HvOg8WfM8eJ4jKNBOwM87N+hkVSkZsWg7GJ9po9Tt9HrPwYIESIQblKBgi1CXTid52eMOHmyEjA+ph+WTm4k4hDJ3wbHSNIBAawjYkKw0va7vqHN/v1DhySVx1mqvnHR3+RD201yaKY2yrIYupiO+nXJ/Oi9QOSmWAmEwlBraBgzi4GnAsyWhoCGiHBmocDlAoZhkSng4FDPWRHLhLvfplKNhkSgjLR9LMGhRgjM5vHEeXVfgYOIvr0eZBHw5r8/rXGk1uEGYSjAcyBZWwptaAV36tUYt9qO1uPFvQrH8qgy3+n85c+7TFJ9m3veylZaPh13UbW/jKcvZoq00mk4fTT9se/12nq3zT6elh9BchyMt0puhCT3GtoDos0RXRGqsxh1O2F5BR/6zJmnJipZzMmIRkiJRZWogwPgTMG7z9hJOjkof2hP5RN21u5biS2yGRXV/UX99629TNZSwbR/Fva5vKjazdTdxHXBkqi0jMU/D/huz9mlfip0D1kkhJJKu7l2fUR6ncGSG/rP61BsweHLX0ZorgqGjlOP6rycF8IBbbtmgQhCSsqJsvnbHEgXtBJA17MXQwao/H9ZKODo6m5uG9quJIhWBL3cSSHZ76qrcq9tbKLHoWGScPGFFhCD10CJxPI2XksDTWklQOBDmZ6UVXY3Fss2GRYl/kPwiBMJSMN87RmjothqA4ASnhchw/MBS8eFJEagMUUQ/tGH6zskQ4CZMgTLLXrd2eZr42MxRTnY8HhYBcRlF4GgoGZqNvSMo5nWZmdBPH2Hc76WQxaQHXbdBi0Hp5YSkIO5zDA8COyKlvxLZ6bwrIygdhrS09OGP9flSwqrxjh4whqKZLAhOZCxZ8pchZ0fYUcxAbKByGiMtruSxsS0zlVQal+vw+ElrwH09ux4mXacI1V4DSqSpRJIvMmkxeLDmNmZAljUoY9OMlVRXZT0Wp69ZmPWXAcr5nqbZWusB4ePHjHfCdturnS63cbu2bq2e1rx5zvOVuFjZlzLzMzqJEKLpozTN/rGnCRC+Iy0SmyvQycb7C5ZiToMOL6rdt/B7BvOu6nA0epIFwzVyW/6TvDx1CKmK1K6cAzYTbJD4GFycGFIesjByItQdwUgzH5qA5Xs7O2so0vckyIFUBa2Y0kmLNQ9+FUJ4nviTfp5d3bX2eu3LhzKoaM8S2RtJIzGmXbbaPt4a+XPY30vMk31F85WmNawZiU1OWneE8YiTJ0bYsvowKWYXkDo4Z/lDOgQzSsCCGCamqe+plJkCEjIHpuMWGdAmCXLw5I6AjcS8h19fh+DhsIiEEy5AOzcG7SNHoGIl3cnq5HahRdoSoZzDH3dkJ2K0w+ZUNBqqUhSEIpQsgYLEFYd2JybTzF/ITgcXwIJQwU9h2Rouul+6XLxeMYpxYO6+SQgQDsCxbmHFhkYjacTS8HgGrhpiT1ILHIyUisHhdutKmEEye2/a6LyYu5TM2MFG3kMjMSHQ5cCdC+3VNDCcWBt1xyijMFJ4QogGHJQVK7BuOQ59EOjNr4qj7ZwXfoCDkFwbzpuvUhNBq1k0FHF2CaHVZKc6DqgsPknAz3Sjh5ERUoh8EbBEEtRlNl2D1+Z9vySwY7Eyk7REJbNsSce/eU97cwkeaJsTsmz1zr7MZxR6eyViznQjKBUVYiwUKkh7kA63q18jKNTHx45zmHJhpKsxdl50spmKglEIuoej69BiQnomRNIhgTeBIjIhCJJIjG4OMJihqOPoNNReJUKYQNnUOsTrxk6s7HfKMJx3TPTSHDBNaJA9IzEfDicS2ukOCEjUGqolyJlYTMFTEk5fM8becTCTDuJuoQexXXxY2tLAcgjYTMtBPl6cVu4amZuTW7ua7u7dzd3d3Ku5uzZubuqgJUzMcs3Gi5+1Qk1eNWCTAbojMYjomhuBNhFYLCCxIh9FqyZpvmFyjNPCWkl3PLHg9Q8jMWeMiY4HMsAhGTx9B92WXFv6+/oQtscvzzqhK+ttAhDJkwkoceXHUTBA2/DpDDjLpD+u9Vz0tpFuunG28Vq2btDndM6wTC6zOtDYEa1qZWIDwxUgsIEgpnI5W2HzsPjms9mo3N/FmAgOOpy0QdjqlA7DnsF98Plws+otnx+UtjEEEY1bRBRaNqUQhGMjsFuG5z+W3h3QzsTOy1wjDw4YB4zFNDjowFyakZsZiBYHMDaHxtqzWdsSc9MJl84ZPp7+Fks9crHKFFMjMWZrpZ6nlNnvDANoawhEk6bPWgshf/KVQoHue55awkhJJyLI9xXmQ5bKJxqhCPrAsPLrsY9H7LcTQBoUDMqTpdI2E5ikqBIjKNmxyFiRhfjh4phTKET48/nMBpvJ2rUlLW2N9hTmn2SoKjDkpsBMtYUmaETcVFOwT2PZD2UabzcSEmWtiTYH2RzgHKz3SiMoXE6kxo0aYY6dGaawzqQJF16wqncBGna7Wl2uqEQBhoT0GHjzlbMty5Ssw+3weBE/NO2Ov0CiH4nkqE6PSNiIi+kkPXBH8UXZ0BJdw9UFgl9HhomFKZjTBLKKIa/3fibB1A79yUlNoawjJRGg6zoHp6MIDiMxxBeQQ+EVOeIadJ+n9K+hOHU6q5NCRyMtIy0CZmgjLRsWfI97LoFIQWZZhIGTwCMxE2XGSiuRjGq0njEtOJfsKIYLjyVwbj04AmDI42DSyBnt3hcZWGD+D6bpke6N7Mbk2+OyqmbfG+Pb1GZuodg9+jafIy3qnh5GYKRRTTswac8jfoXuIYxbYYs3EyMojB9kvIZBAmgHLYR8CHZjsqV+Iyh9sQPY328dMQFhBEgd7473BqG7w4JtJeCnwTEIHb4HvI4YExgvGStuic3gosc2mzjuc+lPB8QfRWHj0rPJxMlcA1FIs4HJ7/vcIHfbIay5Q3uadaJWPKdAmxWxSsKeyqHEvvyYIgmQMpoQIFvUpD3neOTWSCZqubFZoidU+Pian2O+uxTXzKr5RnU4HXUjKNZGIpw4l9G+jEbGNBcZLuIJXCA3yaA4hRxeRBFwWVF9E8DXgVJQWmH57AfL5WHu4B5z8pkww+/d777tXxLcty1Vw+mZipJJJJJP5eYxtrEggOhZNeS47HSJXiZ2IzGioGI3t4CHie/lLWmTsoamclBjIohrSJetYnp5NOnu5XdXQOAgEYcfNATPoGocD20roIBpIkiWGhtNoSkIEeksUBBvBtYWGi83qodegweSacCQkDw7IzHq6CgxjdNoOsEuKZqj4zezfYxpGuVKaZ+gnIhrFSY4RuPtM/qdpUFc8fKaOdO2U2ULidTO325ixckCb6h5IOn9opCBdrzJ9PK2MZ1s/+2j/aQaMZEcEh0hwbPS+K4rr9vmzb1wV/dJGWNpWy2l/eM/+7RWsC0smBgTndtptG0DM4ODOw43HbxsCZUZfls/T8SjT8mZfxLNw0wiRIVMLYBgyIpVyHRQG/SnaAiVIzHV+OchIHVKoolDOswElEHCIy0jKHGcE4CAztbVWjloIWxYdHjwjAIyD+qP9T/gy/2X/Eg8D/n/zsCYqyqb3HLwIy31ARg+IzHXZ3IjMc7GXkQpjAhEhAiFIyj/BAQlzz8/b0jxTjSkmr7Xc0HUd5TYgHmN6JTlvA+A7giRiRkYxYKRiqUGJt5/M8vIaayk2UoReqUdMu9I823Tg3gIpgIIFVm6Sxk+39rva9cttFsal99OQeLgQkkZ3YulLnrZZ39uRzQB7REwexkhKSeUW/G1Uddyp934xPzyMSzFFKGoIzGUqKe3jSAIanYej4r7aO1oHevm+tlYj/SC50SDCaDYhzQkVkWz3C+/kIjIEctAMiMtwXqCaCAP5eh8SCQhAZE1PxhZ/BoD9kAjFS1BNgEDmp5h3l6PSAJ5pShpGKsCBCIB2ZySQB8/v7FA0GSs46/tPbqynZJCJi0RimZTJEGKSMUWCQUyB2WGJCQkIRS+7Foz7jSDAtMjHBkP9ttRCLBXr4mCOKeZNzhPwgeoJ1pmZqyy9IS1WYsknYqnlB/UspolTy95S3AIkB7AMRfmeBQv8N36Rk/A8aLhlUb928LNwdx2lmu29gHAjPUIjwbPO+9QL5c+AeR/nFT3sRBy5Qvb0V4xBYAQR6s7a5g7BEgQqsViqaksqWlW/C9q+e+m1BwigB+7BUGEUGEURYQUYwUGiDoRBWAEUe40/IMjKJ7+qSfK+d+7Acs2Ji6fmyFiONWykWSv4gIYmKzt2W5ljjKCDNOaYchpSwOBEGxAOCMoriUlzeTKQ/xh+zVc3EKapbIpjMUWMURgpNpcdQlTRXRK1EZWFEXLQrCz++ZkMtKMtKY3NJWbusXKfGdeOnch17hSEEkdSQjCX3oDQ6DESIb1/ecZMyRsKBUmJry82r97fXSNiwsBTvl6FhMf35S3IyhWnlWfuwkkUJleHTYaWQNvgl48W++QY9z2pxx0DFM6xxjShxOmeYYGqBUGQq5YoHEyIJgfmIrUaJQYhWucaickoMBXcduhRM6ctGZz6rLDI0lx8okbIzFAoqpRYvMnR6TPHJPTrmQa3VAW8Igaora97baLPp1XrczNMxbTJfRj6cTkMqA3d+ewS7mVQ7QjMRfwlUTAmp2On4DzPx6NPgSfd0XM+04ZPRkFK6MqPtLPYEh4Qrw6A+GAcIqSEdWyJYUtoY6qQdbYjoWFJQFBeBj8zEQMSY5XQGacLTDyNFmIhh4z2sQ0o+IiTCERNJn1KkN/0XJXYyUiT3jhBNTazVCt4fzK4amOo9HOmPiCxv2nBh1UD7qC6sPY9DF5QkwoAe0Lc5N2ynd9TS+tdDkD6ogjMXTfx6U6k1zk3UyXf7Z+H9mDfv7y677NuBkObrazlTJxuDpb2WqH6HxxQPX5fgKIwhRUKKlFJzc+3WG3iso4KJoTupMqXrCygwiwiiPWBDIBfPJEfWDG5mKMigWopUe5U28gMMZUh8WUy1RZ7x+vWEnw9vhMaMlRNXh/pJU1qMiEr4T6P56W3cMu4262WOYoHP3c9Odag6cvV5+c/Pc3LUg0UUUgOyBNYdROCQbm1/EvVetV/Jia1FbY22jFKqMipRJrYqhstqzIU2yWVsayW2hsqKJgiiwRSCCPcbUk2z1Tku9kKk3Q26UHrQNkQZEQZCKAyIMiq8vnQKFHIRIBgPQT+G1mczuxvkp8LIjnEDKVjf4s8um4YGji6Gc08bIm1GSV6Jh0qBwUFlIjLd0QFDNCDgxZTngmWPZp8Zs+/lnR+jCjEe4WayMo0dZDtEa7hRmG3RklSzQYB8hhyZJQRCL2CwxmB01fkBExBfN8WtuRR2CAq6tQhQK/WCPJVOseGgdNqhGYzVyBFkuFN1MBZhJRBBxTf1wdsifT3J6kDGRyoKBEKqgjLQicuoIhIyiG5+PYAWBO4j9OSdQ6xRJGQGJAYyMoOrKiMmyUlbXLc0lc1dpTNihJFTqglRJFQugUQE0YPxPbKthJF1t0MmqhzE6sBWDJECQFIy1RX1VF3Q7zHDwfj5Dd8vn7fuzfWmmjnLkP+kZcpz/BFebmzLhO95oBuruOxX4OuxBIQU+eBqHuPBCEIfE6m7P9t+r2ef7ft5/8P62WIYGPLycY6VnJ0hoB+oREkPo1+0z6nHU0SpxhXFisLiOYpIKlQFCDE3dRIhRTAqLAIURX4VQ6ny4XV8TzO3bus1eEEN3ZoFKmcUDTFUCoj85O2itXZbRVlVM4ex/zUvfGRE/jDvnTFXLm0DNUJmCbRv7qU66qty0m6zzec/apfJPopEdTDGCsggH/JyZnq8CUjpNWrAU6zpTmbuJCneGAaLQktBvvob2+xo+zQWeZtFOZZkB+8vSOmKBQPhkbgmWNnNxbrzj0Q3Jw8ec3+yjiRDTrKXTHKG1AwWHKTcO4uDKjPPkLp7MjMW+H3xTOhhCutyebynhsA2nSH8NHQv8zrybG58tDzXX0eNm4fVe7TmKsUSpzy04TRorN6vVeS9aIBWaaEbHztkBIUQgn+zDfIQxD3n2qX5OSsc5eIt37Ofvybrc1wYHLioPm5e0tRfhy3G8YW8EF/XEU0c28iyDqh2ikiHE3A+18gA4hkNIFmL+XvTAQLTjMARmyhiVb+c7wMBW7OnTv47eddSMx22TpPDqEtKGS2LIGpneCAggEfzn8orWczOBZASYgeBBA2lgnGxTR5bi1MbE+k0mOHO9xEEg6Wl8udKLjxB9YpIqwgJAIIv3FJUVDyPUHVR8qqHF9CA5YgeNB54g6ebLN6GZm8dv5fkOJjezRQlE/SJfnwlNwog46awQSqKbuy2EYQJc9n49O48wPHuJBhFkPZXddS3ZSVRZLFG35Pw/qre1qU1BDSLABOGqBPjw8w956Y7+vfMlBprTYRx8VMdVRIHAgHxrF9pSyyRPvs4BuF5lNBeb2J4hHYX8gPkRooFWAb1kExiGCsQMuUG+kwDJ0cO6q89fRdUDYHGce+1uUJEm9mx6o92Fq7JwLqJUQcgiKC1lumRxeFyTVFdA4+uBKosIP2ZZ32tm91OCZSfB5nBLD5aM+Iy2RWiJ3OZohDG4R5ByQePr358Mk1l3JjaPG7299xvjRoyjjGPDyfpQmIy2bpf6iJ6UanwTC46Jg4g8a1QOjN7YtZjDBW51XQvprIzGqcjfO8MhEiVT3NkNYLbIUQIwgSbtvfjjjpxyF77Ty9LL9N+hl7Oi6KMfyXZnTZijZkdevhzx61papsnPMxlEENRByJvd5U3N9eDtXboPtnUBo1aHF8Nmf1QPOtNuR0umM6t7z795hLd60C0T2nhlt9cZnHu79/ZV7DpZbwyOg82ZGx1DXWO0R534YgxWGNNhuaefBFcK4GIZ0m7dRTMLXtsd3fVBrRiQ5aYjYGiQ1YIaVmym0xqfZpejXQxUmL6LPCI4LLCtbBtR1rkhHUdJ18UO3xKrArBDc1ZW0K6CtNUqrLvotIvnk2h3dLLlTIIJ5LfvZtSTEwOLN7jDjVjXgIyiUoyMopEaDvINjgcqGokDyRe8FYMOBzCSMVnWNTNgqptVkxPgUOTed64DkLGsfaIsMIygjMYYLQyNxRjlA2BAui9Xt5N/TrDItS7b2LNXdsC8HScHpGhXI8lqGqsbtB6vJWJbVayBqydBpHbsdjiHjpwuz7OA5cjCYOYGBxgyEMK+e4TxfQ1tnXuQ6celfPsI8XGY7Q4wm+D53QYPLV6h3juvIs4jmuYdTsQwYZgKdenec2+h6FEkDvaDJu8lO7kMlVTTZGEYRMh16+a8tsBDac5L+u/UjBBidpapQur+P5fm59v3KwEI9WOV4WLyECJEjaJLdIzHxgBjzX9k21wW+EhEkJtt8BxBUydxZxOhk2H8M1z8PIJm6rQOYmnhZiZMQdwQmIHVWWBkzrqNVHIpolGvjBAvL2CIGpGQocqByladUyH2mg9aqs4Ht9zDvNehZJRLhz4G3PjrCcui3fiypNvquAqnqunXhsyq1Mrm1eIcTqyB/l+X581CCSIZ9fJh5efWYRgwXsOeBJw83RWjcbBE+bSly+vupDxHwo1srwlpFuR3oQuIwAbA5jSKRkpNjV0rsndbqSIKI2hApBJC370jWUtKQxKyiLAUqQxKZZGcPb4fYacJOQpDodsu5o5XQbV5HtOd40TAgA4CRWC7eVfDetXz/Te5NSJErTI1VFdzTtyMo2sNgHyRaOTE4vKDaqnjcdya0Dxv6AXF7r9fvq/f+fBfOiNBQ+ZdlkCMgxkkkgwftQokQYhEjKPuCli/faDLb92XJIzFYpSlMZKHpDmNgoUVREOmGv5i86aPgvC5MHNXKIa0fyQkWQRTDSTTJRfC9xAkw6Zh6TdneTuFwQX5oa0Avch4WkwPctKjHSk9yGIdMKhj4Mkvy/iuEkd+HPotfYAaKXcHU0GAHQH9c1zMrw0BuYvTiGKG1g8KzlRnTjacjMcY2ghjJgXjI0BPT6LPyo9CIFRAZZSMxQUkrJZUlJYFhLSYjMQmFUtRscIAWyqsFWxKQWwYW/SMt5UK50SFQyjr4CdT7UBLPByMoXwUSnAdjvIxCRJBqCNERCERJAd9vCN8BDK/W2DCFqDCCFQmIR+VGNz4D1rAXLu48qPFvsN/ZbYhuBd3oe5r8pLbe/iddrW+MXbdEnuISHQ4MmAeG7SSdZpv0lxTXJcKYd3cgJmSiWbyPNQPNiInpnuCuZ6EMHcV5+RRfhdS+k76ZIQIEXr1oSlgESDK6ryMtM3Jeu3DAlibCSB0FUOx4Gxo0FeO+gYJTIy373/hoyyMxt4zZbkRPP3ct5r2NvY8EzMw4aSGitWO/QcQI4OptASg19PGNHvNJ0zJB/JEZQmFlA1CMK1A+w+rtKeyNOd2bbUfanjJbzxAIZ3ZtyV0lG2giA3Q6G+go2dsodEfhyUkwDNc1QkTToH7S0KRZYnJFoSuerEsHsZhkjyhUhUKfktleep6d+PRt4r2WUPv8Xw5V6pqSzjiyQ+WqgmToYaCCBrx1tDGlD2WxCKFY5y+D41spjUl55a4gxRYkkkmOIc3DtFMcXFakQCTWPWSK1cpyWFaLyDQse/VMrZoXmiiKYDCuUwh+zWldAiiZCRbZBDZD7AsoFYLo4OQfj3IMKgnMlgagePeiii0DmnBPo0DYhE3F5c8LspX6s+NFmexU7OxTK7zA/xYzAzCQ8FUqIAVEFqDQGnmKxFBNIm8hJjCgxYgVtYQokPeCUkDdwDGqhqVy0NJShufE2bsT3oezN6lUp3iXIiUwKBgvuO8jM5HAvMDLgq1Q7zSbIyT6g5IoCIEUAmILIzFNoY2Vt8Ncyura/G3UoyRA2TX8+x0dFruV4NRO+B5LC8Il3uoHHcSSFPMxWtDRUddKHA8TXr2obIOpH3TZN+tohUXjAxvd6vyN4rtZh5SCZMH1DBhRgPt9h+tFigz9s+4xIyjUDxLLRjCpkuhhZcR3OjfcSdvYnClSsEOdmYhQG5wbYh1B4uAaFkeEIwhCiOkaJsJNG48b71sMlmOxpf29fX6+in0Fyvr1fM2O4eth6dSTmepR4l/bVIEjLUqmXNJYwDj+XTmPds70QhzLbfRddQSuu21u2+X4fbfx6WhLQQIZqbwE3qV493x6HXbTUdhry9pdar5UufNufyrSKoXJPn7TbgPjR7umbaanstI8pVBUhIiIii0zG1RIsXu6TBNo/oppMFRhiWnFfXYmeB4eP7X7mghIEqkesSwjGAKE+lDwZRnGjIfyZcFDlqKwdwdNf0CV2zvgaQMiLBCCaHQWUh40e0hRqOQHIHh62dWEMCMGglXn2ZHEJANotJAkQOKR2O7qd7Xp2TKz6CJaG4BQ2tt/HsvD5EIe8mzBN8F/h8bosCiH09dUscLAcg+2Ycg/tnXtBiLqYKMoHhqObQzWmlw9XKboPtEjMU6wk7CwgyARTmNu2i6JmQhAmA63IzgtahmZGSHEjghXu0A1hoxB+GZjudY9L7V8o4+1DLbcbfBZz6c6LbAyzJJEIy2BD8uw6kSwCFRTTpV4IzEqBzjZZQlCd6nL51T7nHrLk4RDiQbBIXwoYXS+rTrJ9MFPlHtPsS+MzophPSRRxl5bG5c4l5agpbzKnkw8lzQ4MlTuX8/ebFOHKamSHJRJDOzkvAfVni6tMm+agNT2RpHCqBx0pGfD2Mwm92VmT5QpQsqF867MYTEMSf1kqW0Da5kjLRjIskUWQjBgwYwWEiGM1ll1rqHdno/TewNiBm6ekXeKGc3a3UyW7sJIxSQwHOUGaoNhQmZuzuwtqzIMk4kwly/9W7tSPBizbeadTe3pA9v4t0cMKJHcTLzyVKbl/AlObRv9jaMzZDb3KhQoMs6VO7EjMU31j5xK2OjuiMCQq0anrbgdb6/4Gf67N33QH17g3cDz7rAjLVt5Stb5VbrdmijOalW7dYwgM+Iw0a0pymDWBTIUIMkTg8Q0v1/VKBOhoxtFCGh7zx7OnAEPh6Wd7fSCGIKQ1DRJPKB0wgsJgxBCcECsJzojMUtyW2DBl8F2BxEy3SzUQHoaxmDCwTqlglGGpiLNZIYJD6mcfDJNGLAUOjw0ShTDszffXmPAbpl7oiMtviPvxKMSjbLhGHdFxiI1Rm6CFT7VGpMXIzFTGc8G0Sq52mTGWNTahf5hIpCAciMtalE8Iy2OUw8ydGznzoudIXibg4jgG50+JamDiFC8Pnrk4OzTxnRMxlqZFxO/PPcc42cyDFLyKcNU4CMt3ECWsWRA9sUC48NT1LE2IptE6wbgls680FNJtobajS3ImYQDgaTHHKbIE8lWDDAgAj+7vgN/lVmyrpeEEpReA8NMA0SbCAgcbU+Ep0ePd8mpuwWKr15KemIQ1B8zuhUHq0wSy2DQWfYZa8OG35Q2zKWyOPHv0YeQqwe+VKBPBvWSkF+5vynFLl2wjVBsggk0+BJSzBUuqD5g5QTpNcsacrofIsBngJxOXbwTXBxLxuHsc1QJ1iGKjDyXFMVgQ01orxaQGzKuIr5kDqB6HL8vp4k1B+fI3vhxLOLAKgEhZgKMNiB7A5uBbYfXwouqHbzaIy2bNzQwZcFKIy2uFjQI7GxinnbbW6BLxhwIwkmSIyiQw+HnB1NAPvccFsMkJsCsIEIjMRKMc9smTfRIlWaiEjIUEUhFSLuGEXJlRHIvLtwhgNA/UjQYm4VtoYH8zYG0Prpv974WFUHQ8fnGnMmL89MWX8kB9Aiwmmp5kdWGH+/Ta735o4Nk3137NqSMaMseLeXspuYOSfWbEkITJXrpgwUkk488x7hEgS6CHoJECV0kqx331bjMj9vcQIc0QIRUhAQSx1T83lU+ndPw6vzat/LYLI00li1fn67eNrlJKRFaLaxavGyI1CMoSRFIRRWREFJBfyhFQLiC3FUJBSiCwoKXkbvsD5e2jAPmRkSB41+48MXIjtWh7iDZW8IWEveHOTrOTBQM7SNEApA5G3m5kqncXnlPKbUSqr8slIUYZIJTFBZtSGZJJLMUm2LSZUKTJW0hkijaaVCElNMjMCSxJWZI18u3TEybUmjZpSlWWUxMoyRmRRQC1Imk0K+PdogsUoUiSKSSWURtRkmg1GhpKSwRpTFGYoTFtKWshMsoMmkZLI2ajMSEwaEiyiipGSZCTVS3OyAxno7dDqAikR8QcBiE20XIEyDc9qqoUYS1E3JMxwbV7KJkxH8RxBexjUx1HHdxxx0hFEOfkdHqSsiwA1M/V8BtyO1glbffs2BEEwJBaZRbQH8it2JAVCSYqoMdJWGu8Itmzjpj4lzNzOEcS65ldKIOc79pzU+JrlO26k7Y2xzWzjv5Qkq0jk2aU/zy8UkwlbQE6dsuNEyv8hwX9Q+XGq6/UMWl1y3IsBVDWmhpkNXCwCMtDknR9Xyt+nbb3bb6vytEZWJtLKQhaa0lizTSGijTNSTNmEgwGpvde09/17vgfk9S9LcBgp2TsvvZNfl5l+ImfERVaChKMdxNcIoeEQvhjhpJJZGkItnZj7c/0cbYL/W98tLqIO4Cbnl9YkRjAnJ4w40DLhOLPPpPLwT1+R1rPelHZu0EIQ7CXDKDfVFwxK3liFjpCBrn+X54cYUPKh8nU7UoJZ1+cA46H6OOAvnsegUR+zAMiHpaBZYCCykhC0sEwS2iZGq9jT6OqDOgILb8HXprrhPe873lqweZg8TCEObPnXNbFu7zmTtPjOm+a4xRpLp0d9OUh9llg54tvh9YzobhJBqMMkeaCeQlBAO8RCtPI5+5DiY7+HSBLZOKEBhLo/z2mPkjMaPSAftM1vbNt9N3vnbvxwil35lyNYA35N9pIJ69HM1tA5pG8NsaIJ+l5M5kwXUkwiBMoXwmIy3xt1Pddro9PGpcZ88rrjwMMY3TOHxy5bcjLU97V1W/gl1aD3pJuBNsZXibdispq6OOwulSqqjg3u+nIzFmYtfN5SzET3dfJTSZZJU/NAw9zePOsM24hCB3ceLp+ry9BKJmBRsabZMlCye5mzmSwtv6aGMaGaPtypIjKCcUfgeh4oHRheCH3O+bbhU+vPdnXbq29NgnTvF5TTSRQEZXeAtg8PNU1Qx0v0bS8NWuB7OgGGgjLcwLDglXv+Io3kJnDmC5wyMtjqhNalIfHcAJ3YgnMbKvPceNxRaT9LnqzcbwBT7mGCkTQFDtVj6b424PGoYDYMaapWO/J2jPiFADPdxHSv1b4dCdNUO+xBqGYFQ+kqBLawGE3OfI6DKj3cL73lkuM4IBNPz5FmoGovMGRVHY4ZexpCW1FSMtTPUIsa0pNy2nSTKC8avjHBCSuBiSYSGax0MxdSMo3S/5Ma91tZAjLZn1+d0ISQHa7whCB9zjkSsp99C8Swdv3jCs0TjRrbcRY8wcxhWmd5G5hTSi9pzlv47XO3O+YXrvKdbwU27eWlS93Tc26NlO3myu6kSlJBlEV+DhIy002NVWHot4t4mKFNIwRohTMMMyy5tzn7+XHkuGpyMtehqXKuCWkT7amaHp0lKCFI6P10SYl6TZoJffd4KtrhbSxqN1hmZgwZlpjKxMbRqov8YUPWJcnUvnBiZi4XFTgdYFMj4w2EQmCU6AkTPAvKnpZuLieFKNTun/YQ7RLmrK1Tby78TMmJdZdiczzN08CKjUYWDesYzZO07FlKZTIbggYZiItG+l8I7ZamEruzUzw4YbmKk2/WLY3MuNujhUSPOIM28VCYhHUSMtlaHzoYnd2c0nyD7Z4hm3OvMPgy0MWbhbLoO1VvojZTkjVvJQw+Ljg2YYHlsJ+xcsS0KCZchcRDFOOMmEyJqLUydodG503bjM6mTrnFZzsQOnxdXm+LtBB/P0duq22ZJzcxnW75wGXwu2ZVuYg10dhjQhO8KUyFfVzrdggTdb42bFQ7/e5vEwBYKIIfd2PE2hiiiKcMV2ixNstDbqU+JInjY0W2UmKMfd2jELEde//ROhxh877bQaWzjhuc51FpjxPLfaq2iTeuu++S6iKqcy8YKxefB550ciyzJJNsgdQ60FoiEb6i45LvGMQLhyNM/A5UOLtujLPEVdTeXIM6jUYOb6m024IQ5nPbiTgtsdAh4chJdkxre0cct2XptMO79AduNidn3HfY3LclMYesM3nDpyJfMp4GnC9bZ02bLMPCNl46jhums5dghucfUzeSah1BWGCInRkpu+G7nFpegcNcNhhO66Iyic1UKmhRrliaFBE8gywnKdj1dtk+jxSCnow067wxgYPBkjMcwPCU8Z1numMpbxmc+PgyMthXM3qjRt2gns3q6WnD2edXTm7kTaOZymNacHtBlMJMhCM6w2pIrLaaIjfiya2RbOZa0zvTqmUw8G4zxinhhMn4xoboSFxoZm3QEGdXp35QnyHEZmawEwJk3C32mB36RTYZFEMlyjfeytjZ4bjBlSuMEEco5Q65EcU5wbGqeWN5h9nYxWhuhvksxZnUAYlgwjMTTajZNCrYSOR2NV0DQkONOGjcImJiGeISYdhKTWru5sqmduOYBrJMEOPvg1yqLxu5zD0LiFkkCFmNkTbIdNrTzwryVM0mxAFtOKKDT4ZBOGxl0peuWjnL1nKNmvVFpppuMZIY2IsjdDkGRAZCFMihkGLTPLtULgc2QsWiScqOmm3eecuMOyoRG2h21qrh1s7pJlG8D5xRLBpM0JIy2USSMtTjshSxnHIzEcrFZi4b7Lh4kwsLBLWRhv6zbmlqUp7++Zyoh3TBylR65R/b33nRyNtOt7d/jBpx9qYGddd7xRHGq3Ww/xuIQjMcRMXco0gklBcUzu8jizUcreNcfRLFnfdF2RN1o54uDrOAly4kgQS7VDlO5KaVzLk7OFYZ8XETME2RVIw1flpeQfNve3It6zGtHO1zBrw2vkchCTJcIenWPKIyj4a8I6kWo6qVOTT08TL2oiIdkcZWCKtynHXA7h6u6xeoaUJ307dZnO7nVXvO5nSYc+jeucQUWq1iY2JbWTnVDUFFJzljH0BvXDOa26FD47i4JdzSla8MqxO2Hfejx64biblVXtKeqHHTaYUCpiZzxeD6m48NW251u51dc5wxy9ZdunE1MS5uYwqNGWoVNnV3nJznr10w4bkMRRnL244hKyjwdD0mNkwk1Cr2IeGMpCCHbaSS2nQCtTvbnRsDsVb4twz4WFnQey1hSFCfiDk47RnJOtJQLJeU0Tj1ppnOeNuQy+sukTETFsmvMGSYQQbYISZCa1gRppB2tbtM7bWHWJswbDQorS9gvGJGDQsbvL4mhwBOMqE8nenc0lOBbhu72ZzI2qCUGEWmIEjOERNvTktKohCR5qdE8onWPfk07wN7sl2zf7yT4xPKryWqvfjrVVgxCSb1ooHAF1OIuEKtEai1yDtE4bw021RDW6QEsQaIk52MJd1Yh5N1+U68ujYltBk0QpToAYl3aKUMEtw5Qa0oUwAeWa5xDEdWVRRkvjgKTnqaECAdjZxwcPPCTmJBrcY6D4bajouwjpn2FFPRKVDyJ57Y8lEnGHgVkn1JPiaWAcEFkxqGMX12k0fAkxDnZYGFOfLaJGIHGSfH3FnQhwe2HtlqFFPN116GvBAfFJwGLDNtej0sNSHGHu7oZ3LBZiKSp5tCMtOXiaaMLjE40PCcQx9kqB0zhcHCZ4p4YTterrIzHBYKTtPp5dErA9meUPKYya0iU6bKGpAaTWjhbowmZJsEns5vkJ7agrDMuTUBHLpMw5nUxyP0gwpEaoXSVLwdzMOA9MPKMYZ5bU7LYknoZgPfB7eUStM+PUOxDoaKL1wWYDt5ehD573uHJtp0UZcyhKIy3REPpbwbQts40bSyeWwxia4fIGX8K6RytIc0O6i2kdXRcCJYcySj4wyBbHsOgw7ZvEtes74bjzw4kuGjijWOL2y7VrIy2uHimZrIIjKIEEOQwkIzGMxRRc6u30Ybp0ebt74+wnPl7gu7Z8zSMxZGdS0C2wWJeZJUAzSge/ec568FDz0SMxGcXUfROcWBI1D5EIEEZAHDIahpfTlxLB/Ob8Wtso2RcS4JUF2iMoayBUUCMtGBgiBz0T3sD4JKzx8eBfQ4bix5sTByMxe/RamJAjCSMt049130mlPFrkMu4WStP92WS+tCiKDHwJD4fPULXnNSAjLfKmOOg4Nh0JEtCFBRuNHXJgTKlAaNV0JpaSQMnDbZZFyFC9ThCbEZVFOXW9mE3NEE1hPZgvSyTZGhO4ObR0wBqwIzMnItXgHFejsGaHlzKToGpss5QicSpRQkLbTYo7zSMxQhEW2KQIYWHF4up0oz3dzyRkEmBoZhxEyzIXXPQjLTTOMpsO7xQ1IECC8TUlpzTBRDA0bSMtjLovBDUM5hJI5XYoHI+JnrJnYNEjMXq2dSDsnE5gWbjxHQcUIy1NsNRsxph2ywzGMmJY44tLE9h3tgXmcXSDwwNPE2DUMMOYnJ0jKMG2CyxcBws5qoaHBPjVmANaAoBhAhFSCAflYJSCfVrKA/TCRZERNEFDIXYS6IGoE0FKXwHSlAIwAUr9Xg/4ncr8XWFubaqJoTiEinSUjTESRhIwkkCRWIjEkNYe1+y8MBgk4ICPApQdIgdUBO9KNzCRSq/mhkhRBIDAPDBoMjFGICnWh1ITkk2G4g8RFsol6F2XHx9oee9/lx0cRhiFddpviEygfCYe2fZQba2icjnR5/a5Ju3zfIt+HrZPkch3uptCLqBnqqacsTVu8bf8ZRa1hyDCcnPfBvrpJpM0UcwOTwcOFygYHiMx1GRhELTBIQK5HROXodwcw0Zr0Lq3lCECQ7U059CqGO2wB2aSsgi/uxDkNhCWOSSxQpEkR1AbT+fkoCMoVsNNEoZKSoMYKekIRBSEbYEIqAQRbNRALBenwgNDkRepEMrF3ExTnx8EyJgjLc79aTWhCy0u7ahMbTPcKEbvRsMIej0dIGAmCHFfGPbAbCWDmRfYEEFQXh/g4BtBpIC/0xLg2XIQqESMZNJXXdmc3RLGt0v5y81P109YSAmUWoH2jQdsDnQDlHYT1XSILc/eOoOPBETmKHJA5p0P5ZVAeokRzGOhpyG0Nw+BE27aXXGoAcpYRtF8CA/Wm4vuMfN2oVcWPnwk0Fj6PymKg2RfvuD8Lcj3/HgbT+fx8Ty2q4mxeGJiC1hNGV+REw5XNtlckjBlKmaW8lzbeOXfB55pIy2o1x2eAuXAzseu4FE6pOGPP7vRsZ6pToERAzmBDOkksOGvIzGUMjnfQSunOEjs53y4LS6TakHUwuFMop3+ZD+QztqxSMizwKUEqGgaek+VgYouYT6D1kK4IyglrcszsfE+6j9IHgRFSKSMIELY2yaNpStFaxokqKWmZqI2TG2jZlfG99ajalBa6R8U1d5fjMUjKPLzCAl3Kp59PL0LgmAYLsLI8NIqfFqNHOKeacEhRH13XZWKhNIwLAxkIFCcoXyBSYkDEDbIezepE9Xy6ZdwgkCEhx9p5PfRcntmy/2XfgYIEeWZNBwH2QlFoFEJA+WFREkVcTJS3IE+aqHbZTu3SQ489doyXVSXEwYtTfTmQzgWGJacHHKE56dZJMSskOMkMEgakPDDEkHKsAQSW8yTpx+RQBqWUgzWtONB+ZqCQPkFrmcGDFg8aCjbWKJ4pqsGCQP1v+m6k3lxHEuduMYwzVHOJBN7aq3nyTWBTITa7efHF4J5nEMwnTYntNJ1t8ienVHVtns4IoBkO5SuQ8PbzShipLlUDIrFhiGCVUWAwSMxogY+weS0zhhMtUnTRJnRZOMme43d4fEsxyIiRbSiSSTocccb+pbZIy1AUYekGwhZczhs5mB21GI2isgtophFC6Bc3guWVvb2+L1B6fBffBo9fhRgrASApIwhcWyJGjCYQMU/R2EhBwuhhaP3kW7QAqCyYiq/haHKIgaiiDBgq7HcMtjo/zIZvloF92TmYeXMDkpfDrFEkF7JMQJLAW/vyhijBnEL++geJ20h15p4EN3mZ2Yi3diEOgymz9TlGzt9qNhJpQ4J22e8qmLy7DvwdIjPU5n6dmCUtxFxk6ExgpEPNqHB6Z4Tvuaw4cOC6zZss0M8CJ/p0EtJwZ0hnnCpnJy0IIcenIkd9FxjnjvdUzni6S0sObk4OqHtzTQ6vHJhAQIy7upw/MYBW6flppikFV/eE1SNR+PXJnZGw52yQ7u45s272ILhrZopOVQLAuDd6iU9c7Dz3A8vZyzuUpEsYeZlO/FBZgLgU5Llw3fHmUzTqB1oah7cvKzhoskojaLpx+uGcqRsIECN8t2YsKCmMws6JIUYbGNgRiFOvAMOTKuzIy1NiCcjKOp4JIYSgHwDQWNiy9CBZSTxJ4KE6A7DfJUBGEgCiwUsAbtsLGIaHLksGO0H1aLZIyhgH5oC4ywP4wiC9yMxETty6Ba7/P2fO5B/s+l1f4N4zglFRtmhnUwDR5X9h/Lu9fswKftuUyGafoPFO2Fxl7OZoXJLwjpCqyq2qLl9JY1Q1wVsTGFEvj9eQ1mvXp1ukgbz4w/L4lsoIRKW22pahZ74TP8dkIpJBQgIwhBRIyiQFHtBgSMoJDzPUuKHxAmJ5MLdxoh3hLFEW8h8JyMxEzz90C1RU5qCb+z+/Ab4nB9OLja4dOrFiuP8IzbzLa6od8GTalwjLXVdRK5UGTdyzppwxu4O8GFtO0yWm1TpSSwtSrwqxWEZl2ymHlOC2nUO4hCbqCSSMGsFhk2h4EJsMvhzxRHRKJwwsLBEsSMt90RJcJ6IiRlEpZlnKadpaUQpiHq6iqUjLXx1xjboOaJxTTrFmeJHIzGqNqcaYcuxyToMsOIp5Oz3aO3xKTPFwYa+mTMBjuha2FmkEsYYvEkaZylZOHN+jta0w99HIEI5fdG04ZYESJ4Hunig2RuFU7ssJrJd8xaGinoLQzdK1xJUrEOZ1UvM6fbeYy84Ri9+Ie/JVXl6EM8SU83wYLx9Mww6uVz0fRzWx8dGjt2gk5dwtbPPPVJKDnFUHBwEvMt73s987OaMDk0s35nX8Ehb+bkOWFzEUhJHceRmxOoznuXZRTRFrdllstyrssytXu02usp9jtHb7GC7uLGqKgdwkaKwWQIjgby85siyAZhVgoNIpCFIyRBUEihDyFnYYBQCkkOIjIE/cnECuT5Shrh9LPnl5/YZeuB9WdTJUtlBIy2218C9y5l1rLC7uS7dcZqNbDRrS0o0tlW0QWlKCBgGaulQV1q7SVg3K7rt3dpCrzuhM1O09bry81vFSFrlbm27SotkoLebuv8P4e7aaTk4BSzGZKocgWChCYyLEGDJSkyJs1sVmpRTNdlq6VpZpaaSsqZs1bGl+j7/ovm+qvb3Jsa0zUBo1IbbaIQCRFkiQCQBhHlLefuNF8OCOYDxl2ZFoTNB4sUQOZLzJjJz0lDiFCgVE5DdCF0YowgWVCMoOMBVN5qhxtOkF74FkF+R6n2sIy0xPmQ9j47H8mFLD067iFqbBt95x/do9d1XzANzz5FUSEiq/ZFf0ITWLCMtepzRm6CHohvy/Hk1ZOcnSGqydP44fBJ2TwUtBC/V14315WKkZDU5aiiDXSMokz1pWEhwDtA9R7fjiCMoa0xkgjMUjWQoQKimBYtN/4rAC4msokE4WQlTjCVgFZLSkhUUG23Ry5xHIzGcfXI4xhIwzOf48memoI/hhsiDD2p/UYHp5+uwIzFErWY1cta1FDxZWbx3W0oSZrhclOYZZPJDwhEsTII7koMjLSMxq7+o+5lZlS1begRvdOYhYX4YlNYVPF00YMBU66u/9Txj2X859ay3wvUic/AzhUIG6SUOcbNHYL63+Uw9khp1zIYkmsJPrggmCC8Uo2/rDJU/V3DjJOuNTbsFcTJO6o5MDILrcrIZHJwzNhrJAZskDJL/IzEgoEoDc8jc6GDc4bjvWJKf2vK6uPW0xoUOJNEmnb0r7wfuqMQEgAwUgQROrze0hXMePv36OyqL4KbI+3G7tl4LaIAlRB+iY03o4/H+w1P6ctkkNCygkkBG/ZlBC4MT07IzWLUYIxbSWZRNk9d22Akbxra5oJQtDG3l2trtLZhpbSWbUiJTLJUpUrGURVhhJTLCarLMWVJMipiTUUWtlWpYvO4oqbbN3dNWRPltnWlXrq7UYqURjKTVqYmqTbGrFTSYqW38K1uq+LkjVGkmyDVjUlY1VbJBKprbXuV1S0aRqkmoW0eedeWaDLLTZRk2asNVlU1vZ222m2xFo8W6LSpt51dPFzS2zDXKu1mqTeYXWazUmJa0JVuJrjJWWtSoNhjh+2Snjk1r340pKyuzHl7uktA/xlbWC4TMx15wfn+f6mfvryNttHQaEoNnctyUyUD3dM7tt4Xjnf49YTqw6Oqfu+jz+tmMrCMxwG0jKPsQmK+3LQjx1nEixRECZyn6Umq3u2tBXp0yLTabE00srTNojFaUltm+Tyf4/3dtfYtb3NshEVavZa1ulvpXZqaVtDQ1F4VQlsQjMSASIu8VqJcCRWQRTiWdLUKgIYQiByDxUE4UWK/WbkRHRCApwUglRUWQZHals1E0UtJRtXq04yY1K2UrVptmya2TamlNFLJrFmRYooltlWJtCSlMJQkjLaUpSEqTNlMyxSMxY2yUSUKWjUm0lk22S1KaUWaCWSlTFMaiS1LNI2WsbSMlETSG2WYlLBslrKDZSpJKGUZSUmUmYjJMyaKWWqWxjbEytBkjMaSalNabZWtSykxZqaUyVKe2q0226zasWrY2tlZVptJptr522tdKlNtspSpCAgOYhaxAkVtiqSICSWylsb5NtuWqpUtao23uzrJ0bIP7GIY6Ntmbp6oYWm8vN2G9Mb8G5usB6b6b+nMFT6mhbO8nRoA5DAmJyYGsq5DQQETobN0LtuFJKk7A6QMzoYj1QkiSEPXY6uq3SgLMNCAvnialUPffeHmhqmmHLCQvg9G4D5BLQYr8Pm2erYz12YsCAxbWUEzHeXR1dy2TkUUSVQcRJcTeVdVMI8H9nque9121hDV/KoKEHROGcTOGQ2DiS8SgTJMyQyQwGTRFkS3FNCHyAopA4fIVWKkkOOt4BoZZgHAZP85CIyi6GAhocIA3ayh3mh3GjbDfcVpDVEL/HHDc1uD2YigcQQZi74dTqYAxBJcqrWbJMSR4poiBCUZOHLpD86eVIkXLA9UjLdlko+Xwll8fvNvx4W191O85yGErkhbXfSdx3b5nKrPnz9hnW6Jpcvi8uPC8kCEhOh/QfUjrg8+3z1LuTDjq0uQwKL9tJ+1DCKMH9FOkxa/uxHOw34UZ+qc1g2yQLBJF6YQ+CxCdrLDGDiMth9A6H2NUWS36kpkknph7qeum3M8D4URKUOkQzpyBDtujTs5v8y4MNxnUOoEbGibp+R3Ui2AdCKGQDzSCH7qIbzTAua2lwEVFSAJA8u4jKCMoVRqo1tjAFt8yrqWEq6NVQnukgBfgJ5SYEP0jKIQH1aBwKsTERBjG3F54GiMxaYZ1PMeAJkIF1r2THX4d5ALEWMQJE4EkO3EokLKpOBELrJsIdrQTsVjhLDBqNemX0Gv1GTlAaGHPx02W9oAMHXSGJFr+LcN7FRhp52awSY62kbn4B1wjELHOGvDzhoDMN5EFcMR926653zwgSZRQbD+o/SHSUVYCqsGuzRISBIoF+3OJ/Ne17do16URZSK8nVosWBWK8Kan8jKl4UYIfx6FnSESnRkwiAjOIpTaFBIqwpaZb0bZMglt4wwcFARCIieHEgYyxHbLklmMOH89OHLGJWFYHLW0qTztk8DNaMaW2lTxnphQ5QWByIFZMSYnDS+m05WxRiGoZjZjDMpFgLSV+OVIbpQxsSdsmqehuMpPFVp0lIy3OBJCEwnwjKCMxS+GkyRScRiMonqUQvKhCGx6LoXGo78BA/n6UTF1x7EPh8LQ8jJRON9B6stYcyXC6GH36fchDWRSKQfGKZdUeHRQefSYZFps802pdzkYHRr8Szmh6lN55LcyydmXyO0mJMEYnUgISCMkSwK3ZYocjLeW46A/J0q3QL4cGe6XJAh+QP7G1Is7HeID77MG/0Odc+sCuaNtiEtzez2hwPhy9uWIXySLnIy0xlsJcFS71H4Qxm7rhLEIghW7QnZ7lNUtF5jmIYkWIe3DvRgNXCUB0jngkXEpNG8DcHjEIBNXpy0wkpIiyBCM+R/Txtxx0fWz36seCYO4IR7vT7FVOO4vVHWNU8rNhdAfgqEdv3FSpO8r/Iy0jKNQcKHSTiTrxSEj/Wp0MIualyu9mFuMiQLy+RG0xiO2MgtQIZmwr+SevDBH86VmebmPZezTaystLKMI0pduVzAYxBYEcKQmixSLYO4ACwYzCnqWH0nLAwS8V5kMg5bG4EMFL4mMGrpRNzQ8tdvOt1dU1I7QDeE0GTNMgZBKblEMB2tszfXd0uiEw9ErFz42fHuzwzHzy70bw2YtTvOx8IzGopCRAaE6RhD45ejEpFvZ4JGhz3jKKqDPeeZVPbhgh2U0la6ynpymhyt48ta00l33lY95QckiwWLBWIamhRVEr7joDIwcVPTmyc5s5GTZRObnDgQlrlp9mOKDid/fhKSOKUHJmt78R2vg73BkSHgbT6OSwCGyYXkX6D6CohDCMla6Xgo5Z9HdNNlIcL9W+/SmcDju4zCh37d4zlms5iX24ZNU8XhhD0wkghUej7NzyvF5DTz+2lx6R6EOdGmlGIyjTIzjNOqh6QNrnB3a/Iy14MOAcjmtqoakcgZCD3Ph5ULq1yRkndRUkmh6tNLwcIUtjDMkjKDnOnear8HS1jHOSFzKm8WHG80BlY3Go2hIDKZEjMYQUiiVQNUhV+ZiU8HTRREm3MrGFNCAdKKWOFaDmI6bTVjVICHRsu7sPPH1KDt2SCHMjyAmldpqKQB5LFSLSQpUDqMRoInTiWVBkVZAkkxmPxy5fC7ve42LuuPdacjCQegtRYDDnKXLyM1YPNqDnKffyXudBUWKoiKqodMWxPu8mQOJrBU8WvQFQVYPogWPTOZC61EcsIn9EurztO5GIud66OdXYq5JTdLpUbrmfgvMhL12zC1gwBtcywuCmSOSxGMT1pSD1Q4mMORfWGZ5wGV9v5YgjKF3hzD8J1OqfEDzXY9uu2IdpLoye4EfiQU9vBHhedbWbawNTtjai6jcsdOOnY9VzNXi1joAYT5lwJCCdUBJzLj0jvtigq8RuYlEqVWUsU0CmgSj7/p4JlFe/IO2O2qdoLgmzyW5GqgSO07sjKPVbQgJXN14nROt4CGpBQ4bWnVhIUocjlcCGPJGwIyRRivLBR7ISIaQFFJlqqDIwZPY9Tz9PvZ8nIsBJUsM92zREPCTXaVR42ALCIwIPLAFLaWHvsrFMaiuZhhsgUKMpJAXiQmxFJFJAHdLKLxMjjW0ojGBWFOYspTAswyMxkphAIMZAJyMt/SuBhykQ+Yq/QtTr468V4bXkmI9vu1Ym0BBirf6fERzM7EnTwde2PLJDI1vrA9x8z4MU+LcpGdbhiLDLRGHpwNlMIzFpn7nXJe3vt6V5D9T05TosDBD/ZQPegYCLOM9sJ0IdiYDM880jMbIgXFiRkUIRUSMxgRsbNssjMWbri5aJnddKbRq980la5W+1zWIxYk1GCSMxkDgILIS85hgoIQMQqTb+6/j7xqyWqyqVW0r0jiSnOzJzYV5QPilZxPqyvJRZ/HMOsIa9+MwUk5ws8DNSIzFIIyDAcT1Odd9ckgv5QMhGBAtKDt37A4HePrnOooaVIzEckKG5SJah0d4ehqP3ws2F4HUh/A8pUExpFYWCEF7daZQBwaAcCZWYNoA7VKKhkIB+sIG3QgUBQY6qKhAjnFXrsV7bvh+ut6TbIVcZtii0Ho04tKm8NYodhpEdOLeOjyQvE+rTUKYgSIRiVRQBqYVFk2jajGzrat220c/uJ8B0DpXQpsQsxKKgY6GbsXkMwYMPtqHSdOQD3xFWILDviGwa2gF/t/HHQ8CaIy1bKKgibs0UkT2LQUkUN9xqtJa53BinzatomUTA6re/QCFhF0GM0x0Bel5FuGRRCfX8zhjCKUZEVqAqFH+aJWyGVaOPhb9b9JZv3HbeEhCw37pAii8YEiSKD7ehHIAT4fRqNJABMTRIagG3lyNLh+PE7U9mie/4cuS1j89qI5ep8brZiNdEeMXZDvobMnEnHsurIfqhVtk2XUWAhu5uzUZERvZX4jzEzvs9pSIhrb93H1I6xwdnYtDAIzEjMYqviMRgRwLtD0TNswWtIy3XqCgxpZivRgxDROKapR+/pD/LDPIjLWCYwkfgCHMQIy3DmakMeSFNUU3EHf2fOTyDzljsV9k8weZ/fL1sqcfBS6AdRFQGEFkETpIigQYFRShgqjRAIygkUhAoYCMtQFQkFIai9wNlq1q9LXNaiot011sW3vrbZZzpn359AWJmZhnTP5oIPzlBNLRJZWziQ0EQQQexKKU0/Xv1Q6DzOj7j6E3nuuO951Oj5jVu0gw2wdkJT8JysImtPI+dozeYJueQ0DuucCsP4hNu86g31JIEiBIsPkDIB86fMMYB9BrPzUMEimMjMYqLAn5Hx/agfTamBQ+w/U71NsDLY9dGYkZC7K9d94CbBUvF2yMork9x8iyB/wXr6ntnhWHUcMt/mQy0jvpXlUPBzxd22MJttCjqwOpj3MyaEQ47pSMxBeHOQUhEsqRnYGTPNjcBT32TLkcDGYyVUxL/WoVDV/nsX7eqLgm8pFFRVC0mf3MyHECpzha1captuF6m8lrxfpa9kWF7u/npMehEQn5DUyMhWEDwwMUp4D+g0nrywF6SX+8WQrjcoemUgairFOF8ZKySVBdSGM8pIzHPPi8ekUOIVJPKFZBPJYaPGCwp22ZeRHJDDJUScNpgyeGUTmtkFAystTp0Q8RbO6tXNotvZdK96rlJYFkjLWBxknTrJvdDXGbGTmmbsDnmkgagTiBVSCysEYcSTBAeUOspA4wqvK/38M7shA8j4YYJ0CLwOyqViCUZlsAqejqu3apmFBUs8xhjIy1nhAuReYAvNsc3BakqdNSam5SPMMxUWKUa1FJFqEVZESskUCMxgxm7ddWI6JQDsZKM01oVO7RTfFpOJ2zMPSyYw60sC5yiWev+3zdOJlLUGHdpOxDgww5uQ9KVebfUjNQ1JqdMPVvOnOcseQNMliDTA5NMekC89x8jLcERUVNqEqIEiJIWRztfPOT/iBt7D5AGrDySg3xkRAww+c00nae3791jVJ3UYGa6U2JoIXX8zb85fnVxM/pVdiMtspmWqCBYxEAUWY0khcthhYwsLLEbIxLvyfSlIy2C8T8kd9q1Hju9LyQ7cXFXWgI7gqZhVBPMG7U/hH2fJSMtEukYRGNXqA/EDFIjKMNH7IHrICJKKkBsIwhpZiTaLNbzaorzq5GSsKxhWTFy1t0qTVGwIygVGkGEQiQYmjRAIK0rcVE4EQLQEYDIgLH0f1TIGDgC6wEBKLhIJaeHI5n7nx6ljv/jiBAg9JaXmXtj0JzdEyMGjwNTh8PlM08uImYdegFDCIQiq0VQIVAiKVFKaZKX6a2YBCikA5Ara+koTNQTVlt3f32XqonTVUutuc7vhuOJ2mYpogfBNbB+KBhFutRUSQJESSxRZDECsKnaYKRCKAKQyyMxwZJUB6sxkmpD3sIYDONIKIwiNjVZsyti6VixXVd1RUO+zrmjFOWFjIpA8CQlgkkyWiopMKY0papK2oyz4MTpmKJIdKgHGQHKIyhkYZjnXcOUplB+HlzUEHIyn+Qs51DSHGGw3SdoIyikj/YmBlRqBsgwh+dnUAQ4RSQTKwHJByksiZIjKOYoyBZCeipMSCkDPHYqIy1v8GSJkAh3Akzd0G9n9iVyFYwjLREyIGdQP7E55D3phmwtRpWGxYlIeC+eSKBoDEBsO7ojMY37XaG56Rmzon5jz4iYTPJqE7ujqoK4IzE6enmvafPN0IQdK7BoEK3IIy1Y5l6No2JFO+YmmhUEW2Ic3TnrkLbKHU0Dhpw1qFkvXzA+kH0ipUFT72iGdyKAbQ9Z8XLE2OW2N2oLsHOoyBZw5tYhpA6QQ7lAh4hdIcCuwgl051dt3CUWS0hUpm1o2ymlmjStpprKeSuk1JQJYrExErdm936fV1X5/u+n6fo2IzEGekDzjc1fxeVKBRQYKsG+up93wk3fu6xhaZxChz8jwKD8zvi8W4mJfRn9jxoR8mBm0R7tSqTE1A4DttRTUUpxcP+t4bl5He2aAlDc7ZOt789cUff4ueSRBGCUtDKYKiIskgeuWTBEQ4mSF7lfQZJAw2G6qE0CMm7iDJUGwLYjoPsXZ4oCdPc9HQKMDgSJJJMgEGizZ7/JnrnvOfrh1YMEaqlUNN4Y3lwXMzkiTlvi7QTBBJDGSXQQcop+/6NIq9WRnjmbSPx3HAy0o5cl33aYczg2bjX66lIYTCcYjIlD6xN6J2YdDIP5D5YVFQUS4zKRw3wQlem3UNJZ/Czok8B0GJ0VE8d0OhJ1EnPKaK1KOyMoV9eeX14ck9HKZzyZLeMIZOCGF6OvybkHg+rXg1Obf6EQCyMof482isWzt/qf15KSWGxvDjcG5E8o4PNxc2OvIy12PsUa2a1J+2cGTx8Qf2J9REPB8UzyHlrboMATv3nr0UyHJpbntZASSCpFsRsjCULUmklMK1NWmqNqNaMjGZr9qbsSaEqKln76tc22ZlU2WTbRUUUylSGbUxrMS2ltZrNtKaa0m1EsSbaLYazbQ0taRTNZqbLa2KxFKgys+N/g78mgOFMIn/Qf2NJ155DjLzskImyJlFNEF2feIzGRUqCEgglMKiqsghILit2VtXNbptdYW/XU2stfPUDmHlOO/XiLrEUhoiMxSISMgSMInShGwrvhInzMR0QX5yxQTXyXK+XVQQUFk7LWWkKiZ+UsQ+6ln3/w6PUhwWejYlAb4LYo1aSzcERsU49yIzHxvQOzp/wuRyMUdsUkIyioIy1AXvgBxcs9aHlT4wyf4BEEnf6ZP5BTlIW1o0A/FIVIIlRagH9sDBBQxdLhIEUOtK/MJ1ha5xtASJcnK7T0Wwn58SVqNZp0YFNrlUGzgEn2v2Iov15QPRFUIzGdPiESQ3IlG00EEzkuZMnuP58tcCjr/UtARNjZUuQ8/OerG/5vMinlInQkBryN7JB7Qd5zpRGupyPCVVNhrE2TocTAdFEe58fMIy1eiG5EIyiZIT4jKNyBYYwg6gVdu0+PlJY4GooIRkKoglATIoDQeX0JogZQ+mYQffuTDJmChTlhiQiCFtbU2Sn/FmOhIZOEqiii8CxsgT1ep/P8PS34RCj7Ie74ESMo9iadNGiqbRmA4xVBQBu+jk7P4O/KokF9H0JiIYsHpW7pxwFE6j+bElgXq2jLIku0Omuia6/ryekZIBIRUL3/r14cc8bv+NH0Ocqa6FFOxHU9Lr1STCSaNXyGSLqgnmiF8D7nPvsxC664ii40BiIjtChiWHxzTGKZLPn4ml9+xq/XcN/ZhagZSQJDslWCIMRAWLIfSJevJ+rznhD+bmHdPcHTQ6TQXg+z/r3ZB0KBydobtyyy1RhEFFkmpYqfC1Eh1SbhmFqWMYZEyyMxUYxTLL+NmfbVy1YjMSw+lhRICxd92YUuOAxT6rdoFSQMgyAWaxKeggaQIJDXiFQhvXWaW+PAoNIuDFV1dnUJaGAUeHiWlkICJGg/rC7Ip/h1oEJ6UG/9xQKcclCPQhsIgikYd0JDrukD4ySB4612xW0xdFJxJ+VcUTeHRAOOFMj4qCSDacyx5asbBB4IQnbKrKyxJXDzM3QhD6SMdMs2MWwTiBBCiKiYpoEjMbAeArsw6pxMKCc1LC03sXLUc/IjRBiDvIjkEBgCIGREoMKfIswMkQYDJEglIFMBQlJ4tBbkpVfefQ7+tnoCeqeyIyiHlt10lwJqVHAdSHyc5iMxBhwQ8rreuM65UkZFkOsJSN5VRCgrknXScqfbTHqRMdQBDIxChi2DgJyB7RXiIw59meeKC7sTCAc9gecjKO0dKYYWg3xkUKIBCBM1SVG9LklUzc7FNvh606GeF7QeVA54prisiSJIBIEDYUsIsiMihLDfo1sjK4IzKKpXMoMERByomOQkg/PXoy/lu4BuPMPoZrD7InAwlMYuRMjicEc3MZKrGdbMOZpy+DOjnSMxLI0bDOrvFlaZmuh2chRCTPcEn0opF1qGLmUbHc46p2T9Ikwfy+P/RzfyFPzK0oxw/dE51SMth3yh+jQuQZqYHfslOAkZN4bTdRtCy9m7hpXYrq5cp5AGH97MDuMeo9Xf+lbdF+G44sFEPjmtjMrk7v+nnW+ofKfG97rpzKJJFvXlyBSdqls6cdp0XMmBkp5C2Gj04vC2zVkWKpntmYsorn0cuKGM/h3rvST0v2S8FUO0rLvnsCcgiDywR1DM0lMso4W6wcO2FieR3uB1wNOtkA9hNdO0yTXmE+RVIYWVS1+3Xfg1BQxl0OF3nhVXZVqNjEc2XZKScyQw1KBEC99M8jsnt3dRYsqk2cuOcYhspjO0w2SGeH1MokZnz/q/uZbmDx7/fxG9gyHAjwKChpuC20czDgRqqUYEIREwUQiQpbi2XEpBOaWWNgkCHeZyBaDh+PsjMQ9d6ZH8CI2RBzFHTs75w9ygLuNmrWUnWEXWZF5oqwmMSxBhgd5foML/Iy0WydhuaOViCXmvf5Gyin8MRWRhERNJthuU36kGGJFOGm8rEKC6q5RKC6rCKPMXQhYhsfnE1+OqZvQ7jk/w84AfJ+67T3KvyPHjVkP4EEktpCBSxhiwWCDJJriEplEszBQuNkLIrlCFgAiSQBYEiRLhQRKkkomEJhkMyomBQhQMgnr9nA4nIUUF15g/4qQ1c1aGL3wHIyhW4R1J7qGWrW20YBBLf5BPv2r9cSMxJBjCbaQ4fSXGcSMo1MQlZFnLLEHw79BoZPp83FvOLv+C4iOcbcHAgLEVrHzSViIaJkZjAVSBlbUEYeEWC6gGvEG2oZbxhbZHGoVCXhBG1FoVE1k80njJDjEj2zeJefbJIHWnOExOrJudmYDkPGUVY5S5ymHo8k2yrtlWWyFiViqZeiMtCzQ6ZsJ/T1MwIzHBQ05A648BmEMLMaUbdkpcbsQy2jlFIaR15KfCAn+jaJ0GwTDUgJ1jmyEjCGmIBbkCY6jo2dTrt6fS9FNof3BWxEn2+usjCNXqOac2j5HoUpOQpBKhejebTeDn8TREyWxhfJ8Q+YAT8/zIda31NeiWyVX1qtdWlJtmbUpaNMqZraKpTavtV97VvyolddVndrljXNbpo1yuKyEQJ7eZOoIGz5dYw+AhvjcdVi5aLGre3Uyev5B15CMoqow9/su2rSMxh903Ip3eJ17cbzYOc9XZTTkzMzTySgxzJiBZUag/IyhAkyO8BhCQKtwkLEwRAjiMbqcCCe/S4vNu8X/vaaTabwwkll3ancOrO4UzEXExsy3aGm3eeubyqICJJFYIMYW30EvRZRMPkowIwGTCNp0FdGQpyu5DhdXNukakE02wIyijFCaxR4D1FAKBxVRETcDBIy3ljmXCWXlDjTumm5zbhC8+Nw/pCDFMFizzmTjp0Ca0xSUxUqBxOGpQZ3Sk5G2dHRApnbypv1vOhma2imWiQJTNQeEd5UfB9U0o5qz0LTPMqsk2HWQrMZFg5kQaOycwpM4UUPEdjVtIERh1+NcrKPd1x3EIRwFCS6F9vxolWLhiZ8fqPOdSuPlQDuOsIygfivCjOFho4P09LD7oPlEpMhIHr7EMZoGQlYasZCW1pQVm/Zgkqa+1NT4MIwyeKesYHAxxp809DyRjg0wR3U48nsfsYKT9FSMt7O3xvlexXsmtmGhLj90axfstmdG3ZCMtOyMt8h/cIcWnyNHwTIGauEJ4QqcokSsBIzGK/WCl5cRo6NrHpsz2TDZiAvo3ucZUSxu8RIOhO3E+5mYUPkyEinrasgsiyGskKqerCYhT1aiSkUqUQSMomfgWQ98DKa+/O3JrzQEjLWFqBu4uldDfWjl8hcuDP2emhz7sMTLQwRIjMZ7YsMsMEEBrmXJKCSBSrglCOUpW0dAwhCCRV+9ghBgGPxJQBCyiBNICF9xuTi+ZE2mowMJbzkxgNMkZmhuepIE18RmaAQ9f5f6LcuZ7ZKKCSq0q8MMYrorjBfcv0BT79GEwd+FeGfNPItVTRiotmbHvY9hQa04nkneEWDXBolkjQqEJxf8UIzGGZWc9K6SxhzyOcPRTiHvHASVjZTNnYo7mTMsM/An7vD2QIrDK/pDdiqjiicyN/oH17TNGdhx83p1JIqMtT5TiJAxDW95tplKEVCUQqdtgskMFeZkMQKEBJaAUqRjbtdZbTSrM1sm1MlpqtmVbdVsaN0yl4uSa62jUgyEYyAgxARkRRPpg8erGHSfUwPpgfX+1/Jo1/ahllk111KzY4IsrASO/osWTGTtKDIsDv8DT9bRi9iOh3bb7Iiad+59IhNb+8SMohFIkdxY++zsjLc2+JsOzCPKpt0lIZlXS1CEBcrmN/z0yC4MPKSrWwnOUhgnmRA8M4hzKU3YwHbZqh9EsxBDuQ8EjKIQmWSMxxuUHD7es70OmAi36XbyXbCatRRgashwtxDWFlbnRteojLWpgysFfOpc0JtO+bPRXOatHWorAAT/H9L+RoHJMOPl9Vs0c5aTvfrwTv8fhX5/fZwMjMQcVR618j2cDbhXpVzpX3kr7/W/5mE2YkkC6KL7S+O6GqzE/q56dSdnDQXfNyKHYgCntiYGBJKv0ENGOnnlnKnAyejG+/6fy/m/m/RX6NDqP9eJvOB8qb7Yvyhi+l9TXEscwZCMo84h+PpTMqlA9iE768F0Js9SpBlglBJmKhkGIkIHdH5FRG7szUQNP4hG73blVMEGO2qvQB1aSidhu5GU5gHd0d75Z2TIF5r1xxhbnoW0nH7J0beRzI0E46689ZK5dndndxxQfksj3xs0xybUTJrbgMiVDcZGBikDAEB2cU/eE9D2lIhJgjcKvpg6XkLobXIeLNkKAV9YYyLTnhrdRgPwMHENwyKEYuBt7y0Dg0HYHOZdAG1gyZiG3cO5YaNmCrMCCyw8hH6H7TqWa4ZkcEb7hyL9E0IjCJ4h4pHxJO+qIVdN+Bd4qRL7d5NaTIzEnuFEzbpJMwvc+Q/S1AX54ZrD9xsf0Bv3nhPvEiIfDBiMopBPYexmQfKV/oulhUurMY7q6nDuxQd2veKOobPVzAzAn8NFDkvCMoOCI/BbU+kjaI5KGjf9b7AZTNiWEbEHBoGc1niMt4nb2YLNkx60jKDoYtjI0LLdBdkT4UbfwiSUOCHyqe/ioezgcIx62FZ3VlscC+FQlXXE7HgEh2nKtzIm/2aXuy29i5i/sIECKnhBBqSEIZfM7PMcjKCt8+jzpOEPgwCK5QgVIUfgkWBAxNVY2xa2Nqo1UyrSVtq5UBAkVKiIm5NJh6U8TXgeyv17X1kDAVRIBl9F43pcVVC6zS2IECPZpTZzcGbROBBUcFvmfQKKGwPIr7G6rhkgIiNDMy5VMBEb0F8rSQyMtR6XLLbUjMbdfyjhynBB80/vAOumnofMMBv5b0YQtsjmCSGUVsaY0gym6BHucoiZiZHxbA7g1DBQqzamdv9v9flbsIyhJVUjRRxPkJ9Om4fJRDoc8WqNi9AcLgkkCYMwcQ5pBEDYONUA5EiI0CD+JYjKYf9o7BhBn+LsGFCG2MHu3uMxODDFrrh8Jrhjjx0JQc2OdVZl5fpJYwCq7rgULeZiqnLuhMyGN6iN0CTCRCBv1KVhft22IQdxKPNXCuucRnEVecnSwyEXZMdJj3sAQOB5neeJejWH7GSGJDEPZC4S35rbVs/M++T3+67qHwa64dAxQplIDNqSoLcR8Ir+sxEuG6SMo3gLpQhtZBKVBSI63GQP1FkKVZFEQoEgrRWgrQZ1iQYadH8f7ZxvQFwgpYF8qxRPowwgXdlLEspZSBrxh+fw8fCsHuxt5kns6lWw/yDJKFI0LbJSqWxPPRGQFWIIxEkh4QPw+5/HJheW1uXGY7T8xwzZoqSSI+ZdHScix78O7KHXGmkZxH7v8ESMxyxJl0icmJJ0DHGHrTOvvjjPhx1suIGBD4fOwLtIYUJdfRVUpyEdxrpMceGqgzP19vv9Cvv9QEY2HdVdsZnJoOOK4X5Eus7mHLuywrkDaurU1VDddLaW/YzModJisOkLzTFIGIVaVYszMH5YmMBgmBrlwkn2ZqKVlIzHZ0rQ7jYoMLTcsHGog1xQJiWYJTT1byl5bNJNa7q7ZKsyZtEREUBZS0FklL+56Nk2E4bhuaaGoyPTYzmSYGIxFIx1ps4NmAsl5zAdlQSMxJRiDIqVtHmZgtvKYQTBnDJgJJhGUlsWMEKWXlgWB+6lZBIKTaVFJ9OdBJt+Mf5Ku6CMxQ/X+zYLMhVBIpIgjCBTF4ivIsqsyrnSLzrqXbupqZSxlu7suk8m3wevTZqY1FKuOTCMxnrZRAwLzIyioQYIjMa1rW6zzedt5sqbKZTFGaktK00tiSjJjaTbChJsy2VGWoxMLbJaXt3HqdrKdcW5NjTdduRblE5TEMy5E1hUFZBkisQzlJx5yxBWIkQSCudomVWZIsGS9G5sPdIocmJ3kw0NHJFJWOHRnMpyEQOFljAy2YYZplyKDalZ1kw7zsw6eD1EpuSmCHQhwPysriFs6qTOkSJ1ZnN0kY6WAhv14TryThgdUKk1nb3tNvUPOwpiojWo/IssjMTh2dm8vK0apDGqT22uRom3rukIwcjaCB2wuLYvA043OaWZJiyK5c5uVcK1YlHiQMEJwQSIjNInATAL4yHSE4AlaDDwhL0aliGCIiJOuzBZFLpsy2GIYKRgOiVqtQMzDOZRAw4ZhcwxkBSQFMyjecUYggGWWCMETdczEQ3r6NzeiHaGrpNgmayiYXUMe2cEM1tRZmSyl5GTGAi5um/Rhn6esycfzuMeUOuFN6CzEMPk2FdBi26Oy7T3Wen6ku86C4x03cIl+jZsmpqdOjygnl2CEgbLYaGhyYkpzixuURBXSZHbWkbmWIYyYu4pUckFymnPKmIOQyXZ6QT1NsIt6kE3T95vamhpJUK3+Fpi4oZMQ9Yqh5H+p3Bz0LxvWiHCADi8BuI27vypJlBnNVK8IehxS3uqWKEXcQwlCA6YayYrqSjWSjPCG2mqXZkxon2AqjCMtHEnUQhzEkwRMTrzwMKurocemHuX83ahhBqcsQhx2xTTIiGkiJgl05MOzg/IoGutMkLCwYwxgu28fXu+Yb5NfTcC0iGkocIXaP+rikQwykHSjiegkBZzlI4GjmaGVMBMyGYYVF+EHqg+uDvSQ0hOymQJhEMwwlpUlaavbzVzaKumtNl1KIGBGIl3AMNMhCyLCkS0tEbNUwlEkmEMv9zBOqKenTu8fkHjxOCKX9V+n3js6huHb9Ujnv+97hbQ4K7cqWKhzDH1EtJgmfU7kzyO6YoZMOgQonLoacZolRi9PbmhP9V3Qavgv6dbpkqyW36L7rni7URAmCIdkO4s/Tr1lVTRPeoXemLVk0sO9XFtYrn1d5zWjiU5dMa9HaFNT4051l7Oj4MVh81BLylErdDg8PASlc1NNVPBkTks3n20PZDj7G1bGv3LdbFpbwoIx5RJIhPcRl5w5Oo3bvRXbPO5twwmxsO0cBEFzosRG2d6VfF548KcmhhEmlEs3W+ojLcLTxx02kBlJlUzzpytAvN+Ze2ntrw9joREGxx1Fzl9DJk67aKyHb4VuGyG5El/1HLMP3YLY/ochiJXJ6D1x5oxOa+S6sgdHoueOIhXl5WCA9u/HIy1V8bcfXJ6h9gJfrhU+1Oq7umCqsSMxlChYm5p+vjrM16TXSs+uB54hIdiJUj7Q2nlj08j7vgapjccMO6WXAuPFraO8GEQmIzGZemJQcoVGpr+gj8w+QSMofl+vIzHX5MyPtU6j8gOEBxFJCRSRWSEjKCDwH7KEiIMyxhRGxaTCFhYB+0jIIzE7tqED8aQFtA6QHQHaY41ulhUmS8zhM4tNLzzePLXjmk2zNW8Fa5i2kq7x0ljajby6ktdtbpV3bkZm7rxVFdXNLLLG0xZSFjZs1zhZ3VaK0m2WytXNrntNultSFkQaWiF2tRSQFbiBKKVwFwPtErTbDEPvZ9fdODFweJhWU+ImZLLM7V54K4YjMTbFbKjtFWIDDIKQqQmtWl2trs2tlXnm1n4C2S9SGhYCED4MyRPQoF6FIrAcjSwGJlCyESQguKFTIyiFhRQIfJ93nTpO4rCoFbABlhOMIyhZIKa8W6mbYn9B1UMotYrBIzFmU0axWiMWmVFo2Koq2ZqMGo0VFM0VkrMpJIWzRo2pNJsjMS1ZqVSL6rja7VdXz36fp8sh6sDBOHpZAZNCIyiWLEkSEBSSEUkhCAaDN3GiyPrXr3x28W0jLQ5ni50kWifz2WkXIh0pjlovwwnm5zYcqAIJBU64BEiiQUy1H2OeKbNGtvubX2K1XE2teK6a/fbsRKxSnl10mt3Um127SUra7LFbaZaSt3btMrWltsr022rraWkqKRAjMVItNFP7ZDkTTaj2svwjKD4CjLqqTsSKoaJqwdIilxIySAgSPIpDaDuvHIKXJGQCQVAga0dG6A/VGHM8+/ub4JSZoOZXtzTuqnOIwCQjKNTDwOEphuYWjIaFuhHvCB6NIy1PEcns2126OyxT9/p0fs6Wow4kPrGKH70UbCMoPl/E41Jh2MPqyjK8M1xU3Zs1EbTF0/VlyW0EZjoGojxFKXIBwYGMAzcBmZNNwrK0LSRjMFLh/VTPTrG1HWotHvelCHFafKiFEwxJMu/6zJGe/jjNs4qzyeS4w0KaZmCM+XK8/gvpNpVm4MvCHNjkemkSBzi5RDsiRz9XyOC8BgLy92lDx6+nmeT4J27PwyMxigsnxpj3tI2z33dnSHxKUi/JnDKKw1kMM+fr6ZzKHBLS5UbutpxnCGgT+adrZIEhCfgPTyoHuTJ27Y7+BWM1NiVW0t7okY+G9HGl4Ef3mNw/tH1Uf57v8RtA9kWIxPq+M6mlfB1nk2uWskceB1O5uJ1Pch7RfBMjBE3QFfVAYRtrG1FWE1vhS/ZbavwlvJRpB/QQMIiDCGMBDGKwjfVAEiqkirIjKFRASyMxL41jD7CBp3fwToHPX1zRgZA/SCi5IAt47rcB+K/SPjK/HNpnJi36kFMMUsgMICRKPwLComkUFZJKMCahghAnxSMxDNEoyFGGTNGu1ATQJdllCfdnJjIkR/iGgZFRq9ba3erba+kGtbMpMRaqMkik87FkDLZYo8S4wKCKIkloZhak+h3UzAMkhEEkZ68pj1lxHrhhizHTCBKyTmlFJdzE5mFwUsDFbDmZOaWBqaII2klkoIYjLYpSRhSNBSGAi9xEy7EkQgQwgXTYfvpaS6wjKKkCnUsRIy2MIyheN6dgfFdjZwjCCSJGQIMIxOsdJQiF+qfNhxaS1quAhzXnGoXV6DwscUjfgxwLWo+4+4OF3JnTXyGLwjZB48dzjPicg0HSMYyceP5nHmZQPI6gUiMxgdxAIyhfSyEhGEhEGyBzNgFL5IAHz8z1Y4e31nWFUPmQ99UxvPl4fQdE0YIZQ8I4z2v8vW3OcCfnVQ7RCay5pexDTEIpTpMdbuQHHKHbLGgupyJdqfVu2TP3SNKJnzfybSWaJxg7vO9Vx9aNr0bc52dpD/W9rJWexedQkYiqenr64e5+wLSdDrDI/Hz7OE6632df1pydWUe0lDkIIJAlMkI9C4JbXuDxYMsVs3nDMcSt6WpCj7IcedUOBM2NXbFdCY2KAodE4pA7jCYgthEYwAEjxu1hFbHRs935Ig5gfyMoiLvBTV1Phw757J7Yef18yS7/S9ioVV4/IzF2+uHhetGHINCNmWjdvRowIyj4kWKSUPaxXKwl6fI/iAfLbVVDwS0O8gSJVFEpoghUVCKUIRCAb0Qq5AG4D89jpoKVqJUE6TiFYiMoknJ9OQ9dho2KulruJUqO2rcMtOy1ujP5FZMIT3n9n9PuFWLImvUqFy5mQY1klTS67zzeZaFOWung2ZbIrClq8bcstLWLRQSWNGwW8FdK0m0O6vN5O0dCyK21SsltlEWUTEmIQxBa6mm8vLtXOazNGkujytutrGLavNVps7tqitRs01O12pMltFi14u4yXXdruyuut0abTuu25V1Dl2WNopKirItJECoqw/RQIzHsbkFLIC/RPpAMBxMpxBiIvny+fQX5WhpH7BfoEgNxjR9/toHFDpU/N0oXRUGMN8XqhCCrPBASmyCh0sULIgt5y+5R7RRTlTnxEe35Y6kFOI2ig3K+WkGwI+6ASAEFiodfPw+lelU1744r6l/PPI5ffeMmcKqsh9ULakDy49aJPfQgUH0eOtPo4vMOo56/PvLVt9BVY1mYIy21RMzIJ6gbUCQn2IEjMfaNIELAMps/3zBaf8KCiRiobTx+/raoJmQkgwgjMZtYtbZLQWje5r3TX7l9y9Nv25JAZDupYsirIhWgIy0pS0GRqjN3WubbpL6/N5CEm0z66s3zqmrpNYriL3fUoATaGsUCXSmYIImMRQWLar5vhV1y1eEJkOYB1HUIoREkYsQFhibgUCRRYSBSkCwEj6JgDwRCSIlEgRkEYsNKIy3MhDxn26dE2NQoT1IiVlRJ+naWu2+YpQjFVZAUvvKFS6FEVgFNxeeJ+D78zO+rw1IGW8MwdYCCuyCrIsFSIzFBiREYkRCAyKpFSDBIdAMRXTh+hhLPEiI2vja9+rfC2zbJWVRsimpNCIyKIEUQkeXsOtgHcgJsE0qtfRfv/Le8rGlKSpKswU0pktq/jI2qKa0LapUvV6rYKi/sg34zTdTPXW6Zx0Id8UJTjAS4gJiLpMT83rgw6g8w1CQuvPWGgxPDx4W0ganWXlfVz9+F1/ySAbxZvWJMmYmwIJggdfUCI4x+M/rvtiKpsXrLIyjzTGK1wUT1hyDVCJQpQgnbyQMyzP2+MD05TrbAIzGdGJR3HL52UTmaRB8bsOD6WBsxR1aUztcawCCCSkUP9wZ8kMxCw/vy1kJp1RJGZbUMalvN0mQSGkdUwLFJbKBOrSChnUy5KMhFlWVKEgiDksMYTECiQqBrjJFA4dUJjlUsE4LKEC6Wa7NDKUEZFHMTMCwnC0bUeKrli0Ubetmta3pCCUDsM8+RcECEkTmZfCoxR7laT1Gr6ei2nOdnqH9cOHUUUgs0CE7YQOmT08COmdaBYmW2nOf1SZOHGYThx4rEIZQFiOMUrC5CIeDDdhSSEYsgrCKLIIA2RGqaKgSMSxmCIzFi0wNozsVdgx1ZgNDscccMbhIIaNEU07FInXmlc8vNup8fUS6rQozuShZVBKJDiShULgJKSiMtJiUCDNGAWBhDFmvj6UcGH9aJoqJ/AkYwkiMxGyMtsF5dEGUjUBCAQBSJGAcnfEVT1BEMYKnrioVBZEgZCQhRpBxhBagQsgwBPMYjMRJLAfKK7jeHwdtEg8wYh2nK33gBIeUqfmJCENrx5n0hD91XuyDnYskJcKqmovsocrY7GYYHf3XD8E5GJ4Z4G2hgQ8FpURqSS2LMSiqW3LdaFKX9trGGiaRBEnHRq7am6ttpZhj/d3ONA4mDqmkagwzx/YPU/0jJmFHrpg+PIyjgQhMRCyXVp8ihQ6P4PFltqZ/act37jd28HbjG14nOGYnaiRAPhCJ1nk0BqPIg1IXwqAfuXifBM0bIHbCoAZz5qoMoKms3a0QTWqSAvyxUIyiQpIIjKE8jMRoiijGKCRRkFZNwdIU3G+sF7CMx5C899NwcH44I33fXzQSBBLrtVGN2XMOz82j42cHlD2ZSTRY0kaDaUkSn70hI/kRUYTm2dYgnRAQ3D8wjKE3CHyhz4oW7zaW7BevrJNP3O7CZvGgpfyEJCYk7g5mYLxJeLDD+PzWzQgbP0xpzIy0Q5qb0N4lhkrM7b2ZgnM6b/4CzG6aTL0FqSFXvgcRx0ocxLoNRgH4Q5kd+fOq2muc3WMyoYneut3l1D3JyTQjjtZRAvTG4XCakVoUWr28MsWjWQLp66LYofL0irqNfPrbG7qX3/4Uq7qPMgeoIWSzaK/d2mFweSCuOuRDq2dJjR+CELh2/DtdNKaZfjaI8I8lfSL8cet85uDecqqowfVI/GRRcYp8EvZFQ7zTkH8NQx/NYfNMQN9wjWetbFM6FtZHAJKIcB19nVi5KoBMJAgMBkb5NyhgzMyYjW6kMQEyEYrGSGDqe4OSy83kjLVk4xORliKfitnd0xCWHCOyJiUu8mlpMXnDwW+Kpu0ZwFiYZpQ9XHfozmubjzCn9MvQocIYLFvUrmdpYL6wEHK7rLN8nZikyPpUdNOyOB+2H331wlrbYKcpqBp3kaqau/TaPHsR2d+qJSJTP1jMefwEE/ljTxNpCKyCOodt+FmTqLNTLTEWiR2QGUJCh6DCelL/Urnw8h4e3o8qHJh34zFd+Iy3dsaqUWOOmSPEohhAxQ4GqTI2fNsbbiGAbtgcyIFpZzCMtPTE6QbUcxtE5hIcd33QSdyD5yhR6q4+tShTAeE6q6d4tdn2+fj48tOQEqfgW98Ir3oYLckD9TJLGwe6jqKxut5Dicr2GlOAOUA4Z00GynZJFTHGlBqeyLWM631NaIy0PFgVFmaa4BL/2O2pgkySI6BZCBOpjiX/dkdf4xeRT63/m6oV0TiZ1WQjllVCuYZmpiCMxEWBMJIQBsx0PMc9eoeLdZsQUIy2jI9b1kwKR9agkC+NPzxlOPa7G0RQhJCknE25wajdeo23CltNxv3fjzoGH8AkO0LapP3OM7EAlRYEMGFSoEVtkHZWQYriZoVDhUDkd0aE/gujyeZWEXInTromqc04ZwvMfGHZ4m5aNti/6lPHxvGAvRuSxV4b8pnfPCG3Ywxa3JGQ77yMtBCTeZubczxeREMISIy3BwlQY2c9G2EswsjhivGEskiMIquYjMYlQkTwC2haCromI02nF0O2I2rcVzDRHSi2+zGMOhk/CbRdBB2WAW1FeHL0pEw7rZQaPo5in4w6suGIZmOiGbyjzx4itbpJIYobc43iGIF4hLlVLWP4GbMdqJh7MtTkyrFBDTyzMezfbkSEkktHt0fII4928ghN6dOPMmHTOlvJFt2EYxhHYVz17xQPx6HabObs/H6foxCr5zVPdKAhpIy1fGtmDEiSAN0EZJFQ7VPwJD1g7gt88PYgH9zay3rflmqtotRpKsWbTratRarChpFPHrsbJGe4+Wnte1LxkNQGxB082wkYxNwZnnPdf8R5055ZBf1HwbzY6C7rDrxbzYKCmJ6Dm3CGGv16nm6D4zILthbivEfDDb2BrEVxaNn4x31VatmS+Mbouit6GpgPCLhGR88vIkk00yEjtTSHcBIE4EVd7DshIJhl+KvTshW3VrL+Ow8IiIc2mju0m1UbFzrgzV9NOyGKeELGeB59psWZlN6fMMa8xi0mPIDa9Yk9uhRAW/yqteu4DIICSKgwhCJ7YqyMoYhSMR4B2IyQss17G3Y7uXWR17gsjLZOM02/bamLYlFSUb2FwYTMxaSqxRRNwqNuL+X9/wa3h6Ee+n+osxAs3pAKl0SMxJ5IlTKWg4HKnjq09gYCKIy0jMRVSIyhswVbFN07gekwWMh+FAZPLUiMtggy+ouJVlkJQCCguLvBxJJ9jpcI7YEgqZn6lBM7y2YFqz3af2FLssFCpO3vcSdv+kz2EeXIokmpvN4FYS4B6wShvn2A63/QszSPUgF3hBZQjzweB+0R7SnkDQRyeeasCcXMWP1G7CI6oPCA4wAN7fkRoUzKhG8IVIRoIUQihCMshP8HtxrUhqHADflTaPovfPoHo76+fPjhhgWoqRnvq5qm6MkqSmpkCm1Unrm84WsS8V8P3GvgT4UaGjqypREM9evKC3qbT0l8flD2GcA7fh2pGzCfpjPsD+mJzLCrbHL4GGZ9GAftPDKsH8560mMYJrRRgSBBiEWVrYh35+2BwiiEigwM0oVtdoF0g6lnnaKYg/pi8m1Xkh65iGFh6wLDz3Qn1/b12DpIqQgsFVVG1l/FNbJRrGLVm2lMRCIQCQYqBAkBCLO/lwtOT0pAjawYEwJbKO3mHXkQa0AgHdhIZjhHu8LW93uj/R+66vBKaZhlpIIyLKShFNhSpNoUmpmYjZpsySU2bKCUmzUpU0hSAb+Xt7X03za1r3LX1JCQdIjnTMdKa+3N4HP0UR0miElEiWN4XFUqKSeEQaNSW2eXZ2ecECNnNryZ2ENMgDFITWOrafCW3IzGv6Kt4b/Y/YY58IDOG1FVXT+o4dDBJPVDnKkxtBHqIHcWCC0pLRDlYgsIEDiWFkIY9lbB+88DFnHLIdYa2N6DEbygpOYmcJmcJYTeQFJ6B6B9AUpTTTscoc3ChB+JQUBQ1FDYGkZyiiRiRaLDqPOboIkJHl2CUYYRM1sTNtnRWHeMV7aZTo74hT2Opx7jY0N05/gfn69nNzELwRZRjv5ZjP5L1h/M9cs5ynZl60s8aVEP7FqS5t/orjvU0OFpBLq7qKoWfqxLhRgu5mZhMSiVFqEESsKNCsiwjLQEMUmQYIzESFNwu98JAzaRCtI2rmpXXVSW3ZyXN11uyV4UuIzGSCMkljQ4Z4sChynAwxU4iCTUs0DGSSYgLCVkh7aUkCYK00KWzAUelhctE5F2WyImSN/tr0tsFVipm1M28Vck1zpWDbJRAJJQ3yNT794E8HJ15Sm6cWZT0rCoVHJFAuDtFpZpbrDMJ2LcxbaZk92SibRO2sMw/2Fpi/UbQy0dbqEG0rDhMmmiiGZxNRRuHCFw7NH0IxkPNKC+EOknKrDDB2jSoxQT3NjU40ZyEizGSwMRQeseJqaFpdlaM1XNo3javWaqesq5dSAgEpRtcJLRIxbLJjAPiKqSnJVgwOGGZCDBjLFKJSh9JaYgFhTrCHIizRpSJZNTLWWW2U7ss0qjoUhu8cUUQ0WlVEE4DZtCgiYV0zEyWJjTJjHDK7tEu4mi2uhIQU6sjMWWaRDJCpgxtgTJlxCuTGrJiKU6oHTzcwwTlprgtlkowuFQYSlHJj2rxN8XFY5vR0PLr1mEeuZ1u8zJd6d2akwHYqW8p1pN3OS8mn00R6eKeH4HhA0FYlTg9uK5llTAyeGVMag5txdGBjMGt0pNB3BpXTaYZTdDGVKCqWL0jKK0zzVFIpoSG8M/XbtkqGEsiYJSCeaQ8CdZIURGVOkN2kTE85KNSUGZzOsKc5qmZZuIjLUE3rMDbQOHMNRT05zLsWhmU66ThRmxASmi08ZpXBhm+HA9pUC15YeDqaySTNOgMKmi+AaIbYZkORrMEDglASYTrAw4IzozBLJLKHCnSRYe0TSazEDRllGsG0Iw18v2qA+ew66F64YYyHmyg+LiSIzEDhagLIeXmm4QbYYIHHtkOMBZjyDOuWHECCyagFSMxyMQCsLaRNMuGpCkQUiJggUekMSMofZEO4j+cuwh09YHXYjt3eYngCGnh02CKprZknQSMIiFGSkZDIzFCgMmmGPMmdjr0yUPNPxQ5pwPDQ93jMRFROnz1oZMlsP4EN6LNTnyw13l4IYDDyEYPgMhzZxiBhzDVSZ0mYtZ1hfJoVBTpPjleMh47s08Zhwze4GCZ2HOM/PSh0Um4oY5O6FgYXn4cOQ7KdAOE8EciKsEfRoTbSueS5cqSjqJ5BuG+aNiGWnS4S7vLhGUmpNDyIMkgHSWZNKTt36FjsCb6NqlqBsUVIMhyKHQylImVyai0QyMoNk6oIwhKYHJMkIbMJSGFmGaIAw8kSUQ3FyTUIoHSLeBTRoT3q0rt5E3ypUD9yFQLn5aqJUmbrcmJJS0VELtP6zhbGUR0x3XXL01zefG+VfXaIoNajbWNC1NiWmbEyW18rV1a+W2A+RPDeAWLKH1riu3FVspg5k6/o123gyIjpKEBNWJAeoJAsc96A5nu/EY4WtYpqAvnL6FvzonXRRoPgIQooxDWXgGseuIsIiMoSAwggRgtJmCpsIrYuDSZlrjwIEIPgUQoaIJmHSV2hFMCe4e+v24es1qsUE0ZCyD/Ys/gPgJSVd9pPdGKJhKIbPawCU+o6LhaUwf6EmOtka0kUVZChSMxMITkq0EG2xmQpICfOWmIfbGU0KTmTkjkFJ6688lGxbHw3xYOXO1nKx/TIX5qB160LabmpvG5iLEhE2l4Iy3Rx07AWzPtMmOy/h8WoIim9Noppa7l2d5axrhLgRxet2up73EtL7gMQ+md5WN22CDDBRVAaVcgH22RKocfpHhEwZg+4uwLI89sY2IEVySfkF9OzgT5ICcToeQga/qCD/ljXfuQiSMtXV7i8p0MTBeCiJpGRE744NHUkrX7zzUeiG6ZjR/A/jXjyfTYD2XdnvwwRiIhBBEjMeCtV7s/QZOvIy0V6gPt8jNFgKK9XvR9zvv4gLt2dzkxEbjhhJsOzPpAmLr+Lr0F5pCHxInGj95Vm2Z7cY6SUPMtU3s1G8S6PvPUgxjCI2m+a9zlE/IiIyjIkEZErl9qcBMjKMcgqSgB4VRODDZfshYLYqv1IygPPCZAG51s0E4s6si7GaAB0MzXMgueu0+mgdDlEQ9vaftCxe/aRiBE6OsWB14na+jL1rpKvgV17WaRLURX6lPXBbBgXQkOSQj5ol6SnzTtPfp0yExjjLpiWyCRPRih142agoBiFQ8MgKGQgLd2MrcjLThrkRudIyjUTev35dMjKOnYE9wzGToVU/07Q4ltZ76HGGCrlqSdZcYtKSirII6lQUnGsJjA4IE4kk2KIa4iwrJDEkrAqosbxXNvFqyY6VQcrdMgYgYyYyMoWQUCUSsmXcIaZ/QYEplCIxFYBWagctmsIzHIUQMQKNKDc7QLYF3QcjlAflET8AMIGvc/FPmHvMrdo0ZoAtkQgqppEFPUitxUoFWsUAfN/uyOhFTDSRiauOnnquT5sU6zOnabJSMx+yIbgTwiFIB6UTH5QQ+wgAXpmvon2SMopKuPSpzIl6a4SmyapinZ833d5vm5XFrdmlq1SSlaoWMI0UD7fuNC/fQkx0gQQPVQtdDdQZDJBFSRQJFUaKrdVoltXJYjLUrXyteGLbFgoUmQcNp1MweUSKqnYJIDCDIiqcvUHsVEC7JETMN9J/yqodyqGhd0Tl5CHzd15eD3QTBEsUUwOyMx7oHDagb4kpeQBUTEHowZh2ICHRzmhKtwQvX4DkMHl9hRIJupdx5dIYsXjEAb191qlqv7KzLZMtKLRRtlNlKLFFmkm0RNCNM2mWJlJkmVitDKtRtbRbVTU2xtmqKpraIikiMBQZPpD73fxzKQLs3aGKUCiCMtusCqY2yKF/NphmkQRGUdwNylSypCo4Um7QYTTEOaVzSQAuMjMQltJWak1cLC3aYS5QFimKJYY2Cg3I5CSxLBwQnEywMo0NEQikgSAlQVIC0RQVjFQYItcL0IFFsFVSoFCRB/f/b7zSQJz7aEwHEBLIVglqCilgP1IWG0KghCoQlkgmnLCZk6IyjbYFC6aoEpUeOA62efBx55InPU7N7d7egv41hc8MISQqVJJtA7wVjCDCMoDrDJt8MmUIXGtk3wSE4Swog6S4tWaTY4c+h6Tx4TaDAWDEl2SGVWRkBBz3nm1xceokPoYHBOa33YXZIDrDq6YE7haBOcuYkTB8U4p4IeSp1SRjIEhLwpM7neO8Okt1eWlyphNGYh90Lyo1EZARkVkRFagAURUrBYsgZQw4Ih4e1yWdv3RdYhtA/tVkmRn13PlTc7s6zcWKEENpUPx/l733GZuUAk2kN1g1A58V8oZ+B3Pm7n79rif58OEy8pnTC66zBJDuQfw5iZM+G9X0cTuJHVB1t9TX+Tfv6eebyP0TbbO9comenJnFQZ7520G3E6k2R1nvEb1F9Xc256XXAeVs6YTTjS40DiVxCRbSyEwgiIaLiZpOl1J0ltvO3VHgTe6EeGZlP9jtS3QPSeUZF9+7903PGSOLcI4Q5du3KLgQdKadrmCyMovEEUIy2AwJpXOwQQToSgIfpDxjaIjv5O0Zdzrch2RS7LsmfD7olAOjFxIzG53lvwRkGaznXVE0wVDFhr2k56YMmW2OMYsOdNxcEdn1vXCwzM24OJ2KlOjODE+ldafBK3lPOy8VC6lMxHaYXYc3N3w06QxkgcTjcOZETwyKZMm0s8L/F6m1drBxd58m40bolOhu2naiQOhzPk9tXCxjDHstFucjj2/gjaq8eHuS+W4agQhDeXe5OgKn4y0vw5Z38Mea55wrviOILXGsHKb9sB6TTlsVY7+31lXQRA3CB26a360UPn0uxqFMBU99U1VIu8BdRFA0RZLbKUNsVLrTKUV0cfsv43pfOMNNFW8rxPR22Qkn8didLFHgLzmFMjvkglHNQqPtwDGgVTIMX1UlVuyqEThWPNRqmxelE03895KpNv7Tx4IWTY45fspV2P2uV8G7GuSt+YH0Gt4uj28DzhjKpx0YTPCMx1IxPVVJ1cdYuId/CB1186N5vhR0MdtLEVFZKkt0vEc6+7npxmr40/k9JCbCIRGBLBMgQjMZPO9yxwSdIfVm4HTWgOuXYOIy2Zk4zVv5V4FbRxb6hOynhbfK0YzVLQRJInKAN7wfhjhnD3WbQOJnY6e3v6prwccQhcvwt5ggdOPMQJDpziVYQc1OjeZyMxzfx3lRIctsJt+xSHhEuHjB0jLVUzGWcjLV68+Nm4YlBrrxhiBh41CJcG8Um9pFhVD5o2awYkK07p8M42sdDxUibrk3J1ozgC0YjjR4zTFLWFG0HYjjgcvpn+70rZA9xqTbpuR1Hkl5klYhRMbRvBpZw811w/jq4ZHRMLL2YuCFF0a7Od8akfAmthkuhsdLnoThPw3Q+fA1SyXBfB7Foj127YHs2HPCDwODjoTfnfbBp72l27Hj6cST2dvXludr+29t5MEnhL8u7kjx7daI9FSyLrHVEHhRGy7LHcZuZcUj2/bGCMqk07D9U243GwVOcj92xvBFM9qO+CFGOF4+0ULom8YMyofaetKrtFvvwykzyGuh11ctenFzMeKacqdv1g1amjQiMxUxAV9Ls0CWce14pGU8zGQVy16QVPm99a6+p19O9bA+g93gby3ihhMS40Yk4e+8O9tMJWzMcLW2UquNpai2uW9zMVjBdYVCyptl+s73ml0ND69886lBBkuNug7egs8g7NIKNgeQ4I7tVMb0RANDUsYPGjqSJOOIQOjESpkSVztziwTxqjXYNje8+hxV0vkUeLPWj2ZpKzQWKGkSxOKNhfcCTDiiMxYCJU8c4cxOJqrttwOabawrunYzQUNYSzxvtMVhc3jp4ZNTQnzfq2VWP0dZ4jLSVGLD1E85L6HpkUS6IQpKlZabyYKhcp5dUYZZ1M0vdwaSUBZY7gYkQvtqGEA79AdpqkYUoSLj6/WcARzhQjLQeIa8CJEpGw48SJy51tKungHnxeE130qd6Q8cGDmlIPNbAe/Th6YbD6a7vUSloDZJBwxsyZSwdrJYXm1FnNWkpPKiMxdRVqYC0EkEQIQAkFIgdeZ0mhujq327q88cvPTbbK09YDz3PMpWiW9dBoW0UnZHfqZ16Qknh5G6ugocOCjYzaIgRgBg99m299OWrWkUZWvdW+VSMtrEG2By1Mux1jx3o3LP6LrO6PmVQmEHfFIzGYECEdMc1UIGofDPQPKi5+5LGwNlzWbaVWJZwlod1IdjGKik0YsnHIuOHqh/gOkdUWS4lmUezzM7NrjK2bBjUPG2YzpxV4x5Q5K4x0K4rsiEuu+Z6I0oPUH3dzGUJ+1s6iXiGTOm3nh6D0wX4b+EG01BhDoOqfwff33DYWe00TpMVJZomW7X5DSm5Y2E5BZ47Xs/Q3+Wg6cvzhLEZTHBH0cq+Yz1ojMVA+KDxQxLL4ljut1xPVm2278eTRcIyOZhb1U1tLTqnejpGYZFRCPKMJJa5OLpYzbwIUYCMxJIzVqWbjpxKXpuzl4fy3Kecy0NXDs4Eb8QxHVwenN9wcjZ60nxbkJlAogW9xvL5w5hDiZ0zQVZxeizLKBYvJ9UDpTq4hsD5jJHw500dHe58L1K7NtBsHp32vpfCGwX058NbuvAzzTsYbVS6nyz0bJJ2TayMt2w4brYss3NEQuKhsFbT6zh1BBv+dmrvY8a44s8eX6I8YfXXMJAeSfG3hmlqCCJCHsiQWjFPRiekys0xE8oasI0vF0+HAt0TK6nN7EM7L6EeB5BHcfTY1YmSkJlE2lxtDjcdrwr5w7QKmIVhjKwJ9Cc2kOJAL+vXzxqZpqZnEu1UQ0kntLLy54CObSjKJRgkpLGJoYzBnCcFVOO4YQ4gTKSMxrzPM02VorWH0I9Ltlbr0Dw8DR58n5HbAzJceJlzLzvMkTDGATZuDsxMQd1RLhS7VB0IjMcIjKG/VMdgeA9tQ+RgX1WmG3cYLBphZbkWzU7jyQyz0cvseFieGxttA2O95OOC4CFLCMeO0UH0EfgUQvnAyHR34UeL+OzeQ0PmISYDUnQhDyQMjLfeFJsWhg4AVICcxd6VQmiMtjGEk1ckmizuDaHE2DoDkIy0oEA7hrtCQTfGTEaPX6mOm/Xa9scO60d7UCxmCR3hV5/PdzpvDyCIeVnhCB9cGdRTfB70TnIeg7xi/fimN5jWmoho8rPFQcuYHUgn5HCc7LhMnkNXxnEvUlpR0+nfa2Y3/KJ6J5/62du+buYGIeCHr9Q+q+heTqhqfYLGFG2v0A7wjLbwTgCd0HMOY0jv55Y1eo8KpygxIrIEl0WoH6oh+omAjKFSQMppum8zImjozIJwUQ4nBrJcFwnJMS1ErGtigWkbLJdoZNmMJrCCgqwiwqFcrcrR6XXTwVeat6VtjFtfoa3LWZG21vS3Ko1RVa6qZNqaVmaDRLinuEpwYMCWFNiWNpZCi1oQPFQ8eWm2L1z6mvLd3MLQB3GkPQ+CerlZg5jjM96IEUQ+jqY1giSc4slwbglESo1YjLQwEiqIfCKEiqEgIrTBUSnSJplxoX79bw4hmYVDJ3Mzo/RTefmzmutzLadslwP3nIUv9qnrMvp36eJUmj4WhRi2lHLD9Tgv9v+K4KcnRbMviJh+q8Jk9C0GHtupkJUuFsURmMp2CfDMc6GUwwzx78x28C4UlaWzC1LKzGixMlCsJ2+GseUuabveV6YVAohdsHchHTZnTgPLTGmjIwrAWQxgWmmGKikR5TmyIglrzJTxN63SYPo+E6Tt4992sdbKir4Oeb57nC+6+O7HzTHEDyiMxIyiyZAO0ngljJzJNNhu3LmQbVARMTXg508z0yV7dveGooKZYbpWkNLTM13OzrSMtPFqBqQPe0cDw5kWdWwzsZYUO06Npris8c05y+Td62RbYt66zIy21VliwwwxmWIWmUuXOrmc5EzgmNh3QmZjaYiMtnwEOsvAjZYQxeXA8DDUEYSvjyCUEBngZRCgjMYixJ5tFMDloa+vWdTMkhZATlEEnh6EiDh2Dic7OZsmzfQE5mtDTbnRzoU2lLucuSLNVk4Usi8fFmY3hLZHMyTMymdMvSrw4xgGS8LphRtOCERJvnJ1eYcK9AcGM6PULMOkorNLgHJszMNNOsnqk5GMUQ6RFedWbpTS1bnnxnJw8IZ1bIy1KgmpOxLgYndNmMjLo5OoMXC02ghY9Iy3i5pimlzA8qYUYhqQ8geoJKTpz/vnBhZc3BYbeci40w7EjLWyB1Agv+UwLlXptqjeVwXT0OSGbx8iJ6WY7PLOPQZWyorzcohiCVRlq1ocjLVSjKYneQwNQWVD0OXGTBkmpxk6JvXDNRtqdmF93u3FBvMxpZfKdVp6FlZHngeT04cHFKMzDBxSnoPFVVPFgUeDORP71pg7Axl8THc3qzAHHuMpiQtQjMfVs57ZkxqPGmHnqTD29rOxA29lB9C5mtzDwOsA/a3nTjB7Z08NMy7hhodpxyKFM90Vhpmg+yGMy7QuFYnq5pabcSuRo0MTykmrWFiIkunhFWGzZV1M4Ux46zkLOQewmGwwZ55mTr2occS9EKQ6T0MvcZqH0F2IjaIMSaHMEHg7kqU8M+/vGAY9T1+r919uv5VMSmktGwaaVx+xd4OU8Gm+M+wPH5H+IOFikVSMoRlln5D+QPlUkIJUjLYlNJUCpJIJ8GczDlUeafc0/CygfynEh8YFnxVT6rPmd3jojLWbZWJiZh/ZPYoakVVVGSnCH4/aWfmSX7C8bKARyRc/tV7JJnxBDqppjeWpj7xfewHNPWCCGXu4hqhJxgQYaJdEL4liBm98x5gbz0iDeBVwvkzQ5hXat9uha97MIRkWqMKRN4mJb/P/H0fy/bqPwzmGWFmXIzGjrirpaiwZaI22qIqits1zft73er8Om6qLolW2WMEVjeewcn2MRcPrfl6z4e9vgbeR652wlV5QjLdzsAyMtho100QdRBKRgQloZXF8uKlUkGeD7rK/Eb+o6MciSdA8jLZIdhPPCoBdHqCdqqG8BW9eYSNolSNk21lUrNlrUSXk23KqKjcRAtgEgSCMo9k4eP+OZT4iveRT9d9/1/e6+L8X8SYmKgNWVGykrWitKNQhjUKNkspMLambWWbUm1NNi2rGzSk2xJZMaZMmNLLYpSmk1Iy00qUihqClGWgtE2SjY02SlNGzU0pYjMZFkzRMjLTEjTNCRkq1jGrW/sb19d1leSXog2PB2BzaRvF8IN2yg9HJOdnJqPtTWrmhpsZCcdao+x4pmaM019Ii46kcTEhD0zWodKeSBeBxgtorjUT0EExhZluoaGEkmgPd1L+1hMbbmM5pFIM4zoI+bk0Bd9/pIEQRJCKyfiWHM4ldjv38U66RMRBHAuXs1ptLiSEL0dpmJotbrPDt6slAfIy0aS9jUVI1iYSkIHSB7UnMGEeiUIK9t9ZIszkrSbGMYorbKgSm/6feqD4EEGQQitGtFH7Cq1y2RWMhGI1pM19E6y2y2StMqs81vIlyFwqSx6AvQ4lorC9BrxslJauugZiH5sLuuZmdfgZpy2MsSwq0m3X7DriMt/TucOGIMsTwmJ4swTBwTMJ+Dlbhdhap0LrWosYoZk5lhx8JNjCahxkIawA6jo3aSagFQnRFhFBVZ+DZ1b0lGG2gqDB+u8YdiGgjBRgPLYyIzXxhZOfmpoyMtYPOFyYa5MsSYmYe2ebhkJrIGpCmDZIUiVLMpIzGKSfM9c1+k/g+07r+l1BVNMT5IjpjJdagMoWgwjQKa7CUWh6+XdnnFUVeK3ZjJmJXK3EwGfbhDubNx/xU8TbHp4B3vuTOWsKrRKhTfhRoOmRA6REwyEYRwOA6phOLgAhATYzVVI+sGFgW6DhLSKYMoJNA0B0L+IkIkkkkcggh9OXd5yd6HVVDbYMhGlKKBJEVnz8rB+EfiKSPcSr8pE3TDt9aG9CwOW7Rk1J+TMc8jKOLuGtMjMRf8l9vBtewIgN0e7tUIOVXnK+I89EgjLVlO/SnDQ8qnWzz4QSH40UJVaUw0YmfSlbto4fAjLX5B7wH8mc+7hWpyIBDmgZ7hPO6H0/o+Z/K+kt+xyOWUqoouXHzvxMtfV515v5xizA7uOks4VgvPtDJnR0b6yGDa+QKULMsXBUsTlWuhd3+Zgewagd4k225lh4PwP1Ye/U/hvuMph+B5zbjhjrVyojza26mdtcGB2ybwKiKSbyMooyxwQVJCQG+1rvXuV7XOoabXCD8j6/Ww3ieHvDp84OkHTXsT0puusRoz7vGhZAZU5bzCaniSEgkBJE6zMpM9XweaYrV6ZYImcPZnu8gWMOLOMJkGk2FF437yiAkaYlAo7oAOmXKN8Nlg+5kCAUmrPpPBEPMaNDT41ZN8MpNxMSPIQor5fBsmcyDXVQ7cqMDB8dfwo2Tviqnua+38d+9/J/IqltNiqI1Ipnnt+nTuL21hRcJT0/GuxIMYupRQB7DxsqN0O0fpGK934wMXOGPwYaD4Zov2RTYjLRbsEOfm0UwymymoGmKmvs++AfA/BPc39Xy6iTovpn4noDYnTVQ7ek4iqHZ6Y27AlVT54dlWr00yS+IlFXSW+Ib67hlVqKJdISQpSNSGCalCs3qhTKLK9PHPFKw75cE1+ie+w1SbMR+93rBfIzFRHjMSJKWWzESbKhRUKsPMbOPtM1l42zARrRwpZGgGGwNSBCdmGCnVCRYBH20m7YlIkIWxPTL0y/6RllxHJCMxT/jlKtpaZiDW+KdYU67m7KJpwxpk0DK84ZymGDEIhBCPKOSETIQEk9CRkoh5ax7lKHpaikmeaaUZ2xkiqGsjKDWZIjSznSMobG+HXjrYgb8PLQ4lnDRUxGoJrBS2YSGd6Hhz5lEt14EOYR0WkJEq0WqkIy1HSHObdg9YC+PLQJios7SwQnkp7j7z+Y5NBiMxBpBKMjGctEZCdWniHHMjMfHZw8ZOdBIVZCdZSY1l2wLIICMxEwSEOShAG3nR27GDhipCMWSLBktrbhuZNOtoc3wYTDKcGEFzL0ygKd9TebzECTM20QWzMwdHLMo1qcV/T38n1xsshnbpfNbvu9xoJr3MOTXoeZenYifG1OiPa+jSUu+k8v91l6tugFFkngyvcitaiNYrRUAmwpdsB4HXtBirfF+etw54KZiXFNt2nSFIbtugl2xhrcMsAdYJun4sZoQMWGCxsQJiE4MUkiQL8DxB4oViyCGULsDhkFkjKGM7QDUnF4Pk87uuhr1ry61XrfoqisOnw6mPKXp5VxaTUz1BE4ujwu4eYTqIoiI2+meE8IQ3bOvRIUh8JsOIneBCNkNW1sbYGG01CGnKkIcc9kVztgwYzrd7YiYWljJlRTPUDM6DMPabSoTMwdFZcwkOoEWLUyQwzrDaIy0xAz5HorgisW7GsZGg2iMtIy0G7adghnZBmCGdDvmgnoumz7j1HKbfT6ZCH2DJCzttZua1TmRRlbGnKfEBRI41iZoTy7sIobcfTJunA/KDOrcqTYzDPoclGwsEkAlaiUreFbPKHLoVTG1WoxqCiXC1Ccd0mPvzghpVdneG0OUS0oghtiJl8dcxss9nJy8idMlk2wQpZyhYXWFtOVcscbczEzLlMzr2LqC7SiMxUmXoPead9RKSwnEliINn0yMxmlvBXKxDcpLak5SHHZyNn6kYgoWBkBOnMKejlxOK86dcOgMHw0nv4oZbM3c2A2gUpn43HQ+z8i0mtyJkaE8ObtLTB4Ilx5x1jqm1WTcEzY4OWMdJpCDNPgUrZ92YgN02DkOKdr5s4PeS7WsszQkR0nWOUQIWMHMEnXMS8nPHEmRjDNujcQjclQMtMhP9sO0WKsR6uFFFtUIRxTtgLYBAJB4C6sCGFiymNKVjgpDwhzrrxCMoeeITtYikohYyRYPZdvbL4/XZ0MOr3ghTKB53U2KZg5GyDsAbEikIQ7eGVTg6a6g3Pethw00G2iblHJCMYmtsQ00phgskTN5HU7feuNs6c0+4xILfpXAdEUyOwnYMFNasbTbOTJnutsvQxWXco4mdEuDkxi3cdCMowtwrodWDKNkWfjf8PraYts5TNkUOU1kMLrPp7zGaeTLPvN+AA1ASKBEWwaoO2Gsngd/MxZCRe8gZ9uluU2lOY6QqN06XSyOOind+WjzE2ERgc80Esoy+Ut3CvIViZbIgzh2ay4Qblid7CKaj45beWbK04+u+mkFB8Do0fx73Bk6SjCshQVJ1ZLhTsTY4Ufbkmn5CazrqzkZmefmHXVDgJ6HTNRFtv5RUiB+z5TF5RT5FgId73HlBO9w0tV+FGGuyY2hh2GQEiYEhiiUZIzGCNZBYYysnr6HOjneXqaesJGmUjV00BZdwJ6Yg+TyKIyiYcZIwwsJJQKMzpkeAJpUrGJfMNVEbuUzJVfUkIIM7ud9MGscmtLcSEd+RWutK8jJoa4xLloSOE8S4XvEBQ2h3B3qDl2htlFu3Akhbukr2ZCyglxmF3dFhiAO4NSMt0IEDCaS9IyicjdM0IzEZ7WBpC4966rgl9I3YDyMGfuXyFO2oghRkPsQ3LWiL7qFNakEV21Q8vZOz6JPB+bD167ywr9KFo7BWu8mgMhsjdmlXGd2YG2aTxRDIZrMGnFGiIygbBEhBIbFU7eFE3wtpYSgah0ByTZ4OeERYkVUQY9iA2snCdyHg9iMtBw6nSCKrZ4BhTiMtl1LLXVpPSNuoteW11xdiLpw8AsthZyMoXjZCyI0po01uhk4WHEmpIy0GJwaQ2O8oQwRmWIGSBuCe3wlSpbUS2zs8w0J2gdk9YWDJBIaegFjDo8mye0pawqQ7gpOj0E0Y4IgbmUpibBilLXAUcrCzQ48CTCG0OJuU6wQqileRwQSmRwaJYWwXBbacFJA4QhAlUh94+z279H6599lSaQiQqimEkCM6cZnrUdCa+7hJ5h0Bjf6NxFUIc4ZgowiQkFNAKJUjKFdxFffs/R5NN16qHacDllq7arkDmhdzzHAL8bPt4lWsuz9d8SO5Lu7hP0LGtQw7FWaYsziz0KDtdcZSmhXOSXs8DMMP1nITj03w67xo06c6qCU3ZF4I/c38PxnYsVuObClKUNv+Xt5gzDQ2eZlSo+YuogfOQDkjIY2EQ85EXlkTE8KsTyMxKZBJBOcTmTvjwj0jLXQtP2+W5pg6l09MoZZWPhGWUE8+phNE7SegnSMtRVbYI/cJybfP0WYe8tES7T6vQPLnSORZybl15kxtqh75WFbBmctGaCmppqSje40EBspGSgn70kB1MMhfXJbZA0sW90h33IIpB8iR6Wzj7xczY7EMlFSTZMpmXSixE4KifyMoxfMvm6kFQuRXwow5D0n5gned2ecjOx2vfjH0Q++CiWpP3xSheReF/KenHAN4QAPEUihlDkIQqkZDfDAMsGI0lEUtKJaJYEEPP0ntJgbS+3d601NYbN0wy2awmSbJdXBdJq80kZMjLV1rzvCXm7sMDCupKyIo7SlLlS4IldMhINIEIIVBsIwtoSMxAhTBFsctIyhKMg+SkxEYnYnFwhokmUDOFTZhRffnW9daZlNHo5JwiHDsJpIjLeisFkiDIy2R7egOfoTw49YT0TDqOnPRqBpD2ALzQVPjIyin09H3IifvN5YXG9jH7d8yZMGgXZMMLLmbuomZDCYwM4UowG4bjv1hM40GNipq1+kTUtK8eolB0KA+XgE4jGZlgJDBeyYsBsAUFk2xCVxwHZJJzCNzXiEyk6QlHXFmIeOmQewjmxMI7sx5DOHcFh6h5hl5pt6w6a6dyw552ykDw77L1ST66SmVXWA2wCs5t4ub74an4EKcLtyf2Tc81TzjGPGTxoFQ71BL79cHuAzDYkiVKRR59yOQ5mygtb0yk9/rq8sYasSmzla5AuemGoNsUqrIk+47M6nfA78HVOHOr6wh9nOjsH6UVF+sIyg+0EbQQgipAhICy2ylv3KWyWqTak9za5aRVNCCkIiXIyhzkaAEC4AZImpRIggczrAjKKxZAyCSGxESODFEiRF1Ar0wEdaqE78L4aaEOei/En8mAiviIzGGrQTVg9OVdZzctFVKMtjpg4tLMmiI1RQm2vf57/u/Z/HvwyYqDPGmbd5fiCfcFIkUVkQWREYSYGavyS7R792ThOdzZEEjMd8gzWs3HSxGF2efeLNTecF+YVOYU4Ql9xCB2adXrspkIxZkbhYQxM2hYEKk0cyDGrQs7pVda8bVzRV0lzaiurUGFERIwtiFBBCW0CoyKC6DHl01LDXaoEg0Om21YxgjKA5BgiMopCMtNjAuYplVT7Sgnhy855NryhwcKKIwJa/Shd/3H3OO94BYHHamL2YHYdAJIzHfIzHyblbTCYIEmvA4IFnPy7NJ6Gy8CCJghC0IMFZbp046BwIXpqjdhwKPzlNnwiizz0bIehEUKySREerJBgxiamZhxVs5CCgjaX5woHNwHmZ1O6bLEATIIyg4qxHMpCMtFmTOI7vfnXKpJUb7oNyrHCWbrw54KWnByCGPApa08HZh0SM7a8FUQUCGqu8c9G0bbuQjkglccvGzO0aj1xyzBsScjpH1qPja/kpM75oQSBX1uIqR53alkNvRSJtR5elmOoiKhwN4iB9iyA4gkhQRbaaIjVVQX464QmeslrjvIWZbY0evHentO5QTofRzCMU+SipoHrekCJAIIkYJBjTKUy0ZgiMtSUMq2sjNQyoaNm1KK/gaNa3TXSyatcZ03SMty12ptdb6YrW8MOwxJgVbamZrmZgLzhmlvLy04DlbWMx3OkAOs7128xfw4Iq49wkG926t97z3YAmqCSISCBkE9ZG5MDfB6d3AObQBOG3lUA6EHqB8A9HovUADmAIGBEDc6+GskkO56fDp4YdvpqPiYB5pvj9dYTXUIph2eHclh4rgg+tz1xYUYtCz8h+JYowhGEjm3I3qbJZRwLKRjCpMo8tdkQSWbT26snbJwbD0maNOQmNsObM0hbA8MDWiU0LVYVbB6h2OONcJjKYWnZ9Ow6aASuC5Iy0QOmnG5jdO32NrGKOFjlL3d8ez56TIc89Xz1RZEBJFkElzcsU5jubkP8PF+fMB6HN1D5CJ41QBJEgBCdAEIOOJQ4EaMljTeYYad8uQQ6ebx6WacOodmUGY/jb/MJ5eFSw4krMP4DDAPETseCdWwMDfw5UjMUpUeBwbuhJXDlApBLkjKKu9aglhRU+4grBHlx5N/rm23nIdfLw2pjnDI4S+85ggYpieCbAesiIECAECIzGF6qokRXUcI83JenpOqjJPT3FCLXA5Iy2byGMtEqgfE0bQ+YQa5SspL+n3/VD4/LSRgi5Stmzfo+/6PA/OxzaLPS7VSv765E2IE410+lFA8C0uwMrjuxc/gfwjMTmnIyjt7fLst6coVUqQQZzysykIql1+40M/gb+drATv4X/3o1vySb+73dTdz2A06dTGuyqzAo5wL0pSRI281Fw402iXeg/RS0anFe0r4yqh1iMtqVPXA0kUQ4jogIUCbBf8MA4XBZuCJz8mhbbK8vnxsV51xISMSNYtkMiCKDu5RX0ec3lFrzLiGfwlMdwzAzcwBgFBRSRkSQhavWu3YQt5RktG1FMxjZlTbTNrXZNr9ertrp10HoED6kimkIqJf/STVp9npNUOvskgwCD4GsPSHYF76i4fMHWSZiN75DP4bBbF4APN9lfZfZGxtFStkWWs1i9W16/RfdW1e77I2iVKkySWLJtYLNMls0ktX2/txsX01Xv/hpSKLEMbKi2NJqNpECJBE4g/pauJISGBaJ8MVCMxgJl75KWuHnGZIy2CFge4i3CGuAOsoJA2zJ/IRvfetXXOsiVElRmrNsYqpaZFpAR687y1UAiwiA89IygXQEIuxCga3CCZ/0dxQGjaLubl5frJNXMSW8G4Ahiutr2+BuY6fPYUFBJRIy0op79FmF0Qg9gYBbnRTiSAQJ5pvgeiOk6gprrMmikifJEyP4Yor/JdXgwJUkiqT2a/qQ/Xkv23TmzAcYPWQuEGMQlr/HWg4J0jLY+ZbRDjAZFKPHlk9NdNY1yD4PgjMXQGBroiHyLFNBQ70+q0RQGEA+qAFCMoJRsjLZJOVJStakq4XJVUq0bKbK0gJRK0aoIEioGDgXy59Du6zD0nrjgqqJo/jIq7AiiUKwG4O3aUXkqmjrhIqEiQ8tDQHga8NO01nP4UMh0XYsEm7CbruvmYXNzDpiOjlD+fAzL6J1cwwqkb+vAqYo+kQdEMFTQMzOslITVi5aaUMdETDMwV/Df1dTW76akMzZRovX3mgLBcfMoD6TyfvVv9bbaur9Fr7/kdGCzKLCsU0aNRQbGrGTao1vua32NXiWFFbQUqfXLWflo61nyWFlg/kHTJvAWMIFVI0ijE0Y0dtFNEy5OvRcQuVSMxIy0GrSCdx0z2xvXVphdHXZyRIIH5wISCoFwhICEiIbUprAm1NmjWxrWmgpEIeJtfLrzNtY9aJJJChqI54/H9+X74gXQBfBh9lfPfkeSEIN+CNoAJUuwCjbnT3JO09PypxJ+0fU+7MmZRZWFSdpM3cMNAzMYoDJRWD7kPZ0ixKlAd/2bVcRFZB3hCCAZJdyMxZBV4VQVvGo0bMTMrW/S9NXXx69pt8w/uKyHokMZJsMCeWkE9Rv123lPFt7yDaGWTwb6/3zgYyKjFWJ1AUBjsRCMoYshK/s6KH7aczhllQ/jQNYKKCyKX1LN6880h5TsE+BEwyQxMFYfBJSMihEFiBkKaZmDCoJBZbaIawyZJSDEiksYDGMQLudbTSptlIy29d2uc2isqIyjAUFkWEy2QyHoF3AwF0DNpennl2N2XNNII2lFtlNqU0y2Za6bdu6tzlcUokPIuJQIdEzrV1ScTwgYe803tMBAg+iMx6PxmrH8F6reFzCMtxR05Jc8JhKJcSEQ064LYlah45EhITYKDbv3Dq9uBJxw8ap+vs/I9/5EQdqIYTQQQJ20R+nhGyN3bEiRkpyEMYV++3Wfu59giQUU1g1fU669/oanEn9NoLx1kgxo5oRySD6eRUOBgrF1v4GQlUkl9RC4ZAmzfzCs4X38ol1SswnE1ldtLIy3ci2ltzhAthxCaEzidHZAsThNN8RbvMUceGeD1wFqVFKjeu8wbpJzdQZhnIzEIB8GRv2OpScMd5xxSkiSumST7Y9IjKGxBO+I/nrDwerJ281FSEStUfgyLkoVgc4drMuJuXEBAiYysEu2Ecg4dQgZo1Mhs1H2segxmquJkQiwM8yWASiB9u3NMNyXGG6aOyfkM5EI+FrYEJBhilckPbEuYIuixhxMhhEwTsEQBCxPuyOFfOxO+X8mKL1lRWCHHPA/oqoSkMo7xxJQfw+kSYYyr9dnLIETBmmm04nArTbvNiyJ19oZPgd82cCY++hargznmHcJ939/vs+toHfmmel9GTd0yS/lSpkzLP7TDO9lVcsJ186BPl8lfsuLPe1Y7J6pYIk9+8cdCc02mEZ76MouB0jhnaGtQKPjDQMhxDpkWFg+B0smp+tHXTR2CgIOnigThqjXIJCgapmRsWTF+LHkfBiCf4j9jB5UZIyh0HzzA2BhmJbrdHuBHMR2MSrgyQkbDBo4sMXloMznciRI1HDu1NMTXNQKs7EWAtPv09/XBqN06hvTAaQwDC+ytAWKB/HX7aDgBTaUe+gVTMCyheaB5aMnh+0LLOVe0zMVUVQlysF+Tg9sv1VQ+72aezhw+mNtt8qoZ2MqrqEBTl9OGXhdkz/OIuuKBlBJ/v/N/m/8v6/g/1/1/0/9f+j/6/u/t+f/Xyf5bv/T/bybf6/9v82X9P/j/v/s/F/d8f6v93+Tt0c3+3+r8n+/f/X/b+T/d/n+197+3/T/f/Z/Z97/d/q839Xs/t/s/s/4jLd/d/f/d/d/6f7P7/5f/b+/0fwz/Z+T/T9Pf/D+X+KqB/g/OaAx/zH6T8+KhlETI/QEjLRBMkzasH7UxP5qBNaQLmCF5l/ir9T+tAqBVCejOwk4qiLCHsYLD+QP9EE6/0ZjbRjMkCTKZfTa+u9tbrV87WVfHyxNodsUVQndHjRQ8oyJRnXobFFsaa1AS+CXYZYdFn9f/Iy0kAU6B/4tmWpP2iY7Qzrag+LD20shLaFnKO/dUnVEjFI9gkq9oglE7TMHAHhwBKBmTP0/tcKJ4TXl+R0v90/6swfX4PDwL/fxNKiweyYCqSP57GiUT/oNCUFikHo6AhqSAR54/HT/FvMGi0DUb7eC/3K0mzhNiZITITjs5KZ0bENM/6MRYGgddYmNCxGRZ8+TVRnOXgNFky2EDhvyzTLIQSWf8iRNTjkTDQbkQldTcyjH4B75FWKvn7jnl0xOKxak9WGhyh+DUJxN9bU7TjPLMenberc7bgm0xDDoIfDj5hMXVsgKQM5DnaGP+JGMlW1xGBMSma4aa83ihLCbeJRl5O+SqaXQxpJtNSFkxNeVNmTmWm99NsbR/7W1LqT2nadkcoVkbzMWQSzRMGmHxGMLl53MasQayCJ8FuV0TbRhDojHxoxWBzq3iuojJLXsO5nWDbqyDDG9MQLisETLeGFt7zv+QWAdHfQNF8B98bXy47+kbNamJwx32NYMD1khCa5GYE7B45ouUOYSmEzSOSCJBwfMD+fo9er4bcMQ+zWVFG12Ta5B+/fpw7P1aZfBNd7aRbpkX0MYjCdEEtKqlJGpbVo26rCnRq0GAFkHA0QkZE0anXLBggYxHSsFAHpVkRSC+AwvvttAMSRQSQIwUJCEz4jKQ7nnQ89V0loDqSSMtcPkQPp8sXLEzNI//sOC8rG8OAr7Nm3NgGZAgoYO2zta3z+74Xu1+xNJaK20oxaWEqBhYNsWtJkrWS1JtSSWYqMU3wu1XVW1+JtryIyiWfQHnIOME/jIJ+oitjdRcXFXQ5DnaKCCaxT8UD74gdOg1gFkiEgef1KoepOvtrfD/RIxkkE+AlXykPgceZO6+GL/784Jn61dP6sGWQdxDxPw5dHP9RvJZSqIjhMiGvjj73NYXKnbf+C8YL9whv5ISqzyg3tyXzhh3lzH4XZJ16BM80J2jwO7N4LyVw9tHeHO3u2ZAmR9w79HHQQPIoymakmxh79497hGMiinCuD9+E0YTnUX0khGGTc05SEkZYvI1ha+/4bN6OaW0ZSlNZW/FYqVESMcxe0U5xhEahd0smoq5a9NbxalhsYtKbWvG+Ztt4tSWNsWoxLNsbYRHMEeGt2BllRcboSo3YcicvzrXQqFqWhFxMf+ikPmLDtIySCMtDpLOoKCBq8qs8RtsEKZUiuSj17d5Jj/359CQmsJwarRIyPfFp1hQdRA8v+o913PBDJDbxudEkJAkJtHsXMgJd/0vE6SHbi8utHF83IJyELL/UDAjMdghtT2GY/+8BCRAYERTS/NrfPfW+NaSdai7VWS2pGuG121dNXxftKGyma9vKrX6EUIhIIQIqnR5vG86vaB//fCgnOhHf2wO2e31lH3/Saadxlvjdz+Mej5YRMQDZ2CAfCJRBnpKTq93yP8SqISc/xxdEwLGId0QSRD/53rVf9pl+jhL/t/6IzGofw/T/4YkhKfeS6AX5df+W7k++1sP/Ftv5K3SW+A25/8SwrP/l40d//r++Gr0v9Hq+qGWrm1NV15cUdC118oQPC/rpR5/RE+AfKglA86gW+r1+jib0vkoNW85nLDy8Th/UfNE+j8FB74GcMYEJ80jKNcSoLfCj5jTFkm7dMyn/9PSLpZydGcoKLjxrbbp/+nsKNmkg7hKXjCCX/E4hcp1CSD+wRpR+lSj/XoteuB0rt4xMlUzgg+Oq44cs1EO+AcEPZ8tE5dtiBnExlZKcwfs5kLwjcLrLWJZ34eERcxRttiEIC14Hj8ueGYEYa0CQjZdIPmhxdp4aZwzRLhBhzTA39UCDPtupKdZkNwpPnx6f/M5IVjq5k1qanzvS1JJGMJPKGP48bsX3n0GBf8f1/dVVP/8XckU4UJDlmB6MAorIzw9PQpkaWZmIC0tZ2l0IGEvd3NjcmlwdCBiL3dzY3JpcHQKaW5kZXggZTc3OTAzMS4uMDY4YzNlNCAxMDA2NDQKLS0tIGEvd3NjcmlwdAorKysgYi93c2NyaXB0CkBAIC0xLDIzICsxLDYwIEBACiAjIC0qLSBNb2RlOiBweXRob247IHB5LWluZGVudC1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgY29kaW5nOiB1dGYtODsgLSotCiBWRVJTSU9OPScwLjEnCi1BUFBOQU1FPSJuZG4tdGx2LXBpbmciCitBUFBOQU1FPSJuZG5zIgogCiBkZWYgb3B0aW9ucyhvcHQpOgotICAgIG9wdC5sb2FkKCdjb21waWxlcl9jeHggZ251X2RpcnMnKQorICAgIG9wdC5sb2FkKFsnY29tcGlsZXJfY3h4JywgJ2dudV9kaXJzJ10pCisgICAgb3B0LmxvYWQoWydib29zdCcsICdkZWZhdWx0LWNvbXBpbGVyLWZsYWdzJywgJ2RveHlnZW4nLCAnc3BoaW54X2J1aWxkJywKKyAgICAgICAgICAgICAgJ3NxbGl0ZTMnLCAncGNoJywgJ2NvdmVyYWdlJ10sIHRvb2xkaXI9Wycud2FmLXRvb2xzJ10pCisKKyAgICByb3B0ID0gb3B0LmFkZF9vcHRpb25fZ3JvdXAoJ05ETlMgT3B0aW9ucycpCisKKyAgICByb3B0LmFkZF9vcHRpb24oJy0td2l0aC10ZXN0cycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsIGRlc3Q9J3dpdGhfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICBoZWxwPScnJ2J1aWxkIHVuaXQgdGVzdHMnJycpCiAKIGRlZiBjb25maWd1cmUoY29uZik6Ci0gICAgY29uZi5sb2FkKCJjb21waWxlcl9jeHggZ251X2RpcnMiKQorICAgIGNvbmYubG9hZChbJ2NvbXBpbGVyX2N4eCcsICdnbnVfZGlycycsCisgICAgICAgICAgICAgICAnYm9vc3QnLCAnZGVmYXVsdC1jb21waWxlci1mbGFncycsICdkb3h5Z2VuJywKKyAgICAgICAgICAgICAgICdzcWxpdGUzJywgJ3BjaCcsICdjb3ZlcmFnZSddKQorCiAgICAgY29uZi5jaGVja19jZmcocGFja2FnZT0nbGlibmRuLWN4eCcsIGFyZ3M9WyctLWNmbGFncycsICctLWxpYnMnXSwKICAgICAgICAgICAgICAgICAgICB1c2VsaWJfc3RvcmU9J05ETl9DWFgnLCBtYW5kYXRvcnk9VHJ1ZSkKIAorICAgIGNvbmYuY2hlY2tfc3FsaXRlMyhtYW5kYXRvcnk9VHJ1ZSkKKworICAgIGlmIGNvbmYub3B0aW9ucy53aXRoX3Rlc3RzOgorICAgICAgICBjb25mLmVudlsnV0lUSF9URVNUUyddID0gVHJ1ZQorCisgICAgVVNFRF9CT09TVF9MSUJTID0gWydzeXN0ZW0nXQorICAgIGlmIGNvbmYuZW52WydXSVRIX1RFU1RTJ106CisgICAgICAgIFVTRURfQk9PU1RfTElCUyArPSBbJ3VuaXRfdGVzdF9mcmFtZXdvcmsnXQorICAgIGNvbmYuY2hlY2tfYm9vc3QobGliPVVTRURfQk9PU1RfTElCUywgbWFuZGF0b3J5PVRydWUpCisKKyAgICAjIGNvbmYuZGVmaW5lKCdERUZBVUxUX0NPTkZJR19GSUxFJywgJyVzL25kbi9uZG5zLmNvbmYnICUgY29uZi5lbnZbJ1NZU0NPTkZESVInXSkKKworICAgIGlmIG5vdCBjb25mLm9wdGlvbnMud2l0aF9zcWxpdGVfbG9ja2luZzoKKyAgICAgICAgY29uZi5kZWZpbmUoJ0RJU0FCTEVfU1FMSVRFM19GU19MT0NLSU5HJywgMSkKKworICAgIGNvbmYud3JpdGVfY29uZmlnX2hlYWRlcignc3JjL2NvbmZpZy5ocHAnKQorCiBkZWYgYnVpbGQgKGJsZCk6Ci0gICAgCi0gICAgYmxkLnByb2dyYW0gKAotICAgICAgICBmZWF0dXJlcyA9ICdjeHgnLAotICAgICAgICB0YXJnZXQgPSAncnItdGVzdCcsCi0gICAgICAgIHNvdXJjZSA9ICd0ZXN0cy9SUl90ZXN0LmNwcCcsCi0gICAgICAgIHVzZSA9ICdycicsCi0gICAgICAgICkKLSAgICBibGQuc3RsaWIoc291cmNlPSJzcmMvcnIuY3BwIiwgdGFyZ2V0PSJyciIsIHVzZT0iTkROX0NYWCIpCisgICAgYmxkKAorICAgICAgICBmZWF0dXJlcz0nY3h4JywKKyAgICAgICAgbmFtZT0nbmRucy1vYmplY3RzJywKKyAgICAgICAgc291cmNlPWJsZC5wYXRoLmFudF9nbG9iKFsnc3JjLyoqLyouY3BwJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNsPVsnc3JjL21haW4uY3BwJ10pLAorICAgICAgICB1c2U9J05ETl9DWFggQk9PU1QnLAorICAgICAgICBpbmNsdWRlcz0nc3JjJywKKyAgICAgICAgZXhwb3J0X2luY2x1ZGVzPSdzcmMnLAorICAgICkKIAorICAgICMgYmxkKAorICAgICMgICAgIGZlYXR1cmVzPSdjeHggY3h4cHJvZ3JhbScsCisgICAgIyAgICAgdGFyZ2V0PSduZG5zJywKKyAgICAjICAgICBzb3VyY2U9J3NyYy9tYWluLmNwcCcsCisgICAgIyAgICAgdXNlPSduZG5zLW9iamVjdHMnLAorICAgICMgKQogCisgICAgYmxkLnJlY3Vyc2UoJ3Rlc3RzJykKKworICAgICMgYmxkLmluc3RhbGxfZmlsZXMoJyR7U1lTQ09ORkRJUn0vbmRuJywgJ25kbnMuY29uZi5zYW1wbGUnKQo=