NiBuZXcgY29tbWl0cyBpbiBnYWxheHktY2VudHJhbDoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9n YWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9hOTRiM2E5N2VkN2EvCkNoYW5nZXNldDogICBh OTRiM2E5N2VkN2EKQnJhbmNoOiAgICAgIHJlbGVhc2VfMTQuMTAKVXNlcjogICAgICAgIG5hdGVm b28KRGF0ZTogICAgICAgIDIwMTYtMDItMjQgMjA6NDg6MDArMDA6MDAKU3VtbWFyeTogICAgIFJl bGVhc2UgMTQuMTAuMwpBZmZlY3RlZCAjOiAgMjAgZmlsZXMKCmRpZmYgLXIgZWIxM2QxODIwMWZi YmY4MzE5ZmIyYjFjMDNhMjcyZWI1NTFiN2QyNiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0K ODc5MjJmN2U5ZjJhNzA4NjAgbGliL2dhbGF4eS9leGNlcHRpb25zL19faW5pdF9fLnB5Ci0tLSBh L2xpYi9nYWxheHkvZXhjZXB0aW9ucy9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L2V4Y2Vw dGlvbnMvX19pbml0X18ucHkKQEAgLTY2LDYgKzY2LDExIEBACiAgICAgZXJyX2NvZGUgPTNEIGVy cm9yX2NvZGVzLk1BTEZPUk1FRF9JRAo9MjAKPTIwCitjbGFzcyBNYWxmb3JtZWRDb250ZW50cygg TWVzc2FnZUV4Y2VwdGlvbiApOgorICAgIHN0YXR1c19jb2RlID0zRCA0MDAKKyAgICBlcnJfY29k ZSA9M0QgZXJyb3JfY29kZXMuTUFMRk9STUVEX0NPTlRFTlRTCisKKwogY2xhc3MgVW5rbm93bkNv bnRlbnRzVHlwZSggTWVzc2FnZUV4Y2VwdGlvbiApOgogICAgIHN0YXR1c19jb2RlID0zRCA0MDAK ICAgICBlcnJfY29kZSA9M0QgZXJyb3JfY29kZXMuVU5LTk9XTl9DT05URU5UU19UWVBFCgpkaWZm IC1yIGViMTNkMTgyMDFmYmJmODMxOWZiMmIxYzAzYTI3MmViNTUxYjdkMjYgLXIgYTk0YjNhOTdl ZDdhZTY2NzJjOWIxZGM9Cjg3OTIyZjdlOWYyYTcwODYwIGxpYi9nYWxheHkvZXhjZXB0aW9ucy9l cnJvcl9jb2Rlcy5qc29uCi0tLSBhL2xpYi9nYWxheHkvZXhjZXB0aW9ucy9lcnJvcl9jb2Rlcy5q c29uCisrKyBiL2xpYi9nYWxheHkvZXhjZXB0aW9ucy9lcnJvcl9jb2Rlcy5qc29uCkBAIC01Niwx MCArNTYsMTUgQEAKICAgICB9LAogICAgewogICAgICJuYW1lIjogIlVTRVJfVE9PTF9NRVRBX1BB UkFNRVRFUl9QUk9CTEVNIiwKLSAgICAiY29kZSI6IDQwMDAxMSwKKyAgICAiY29kZSI6IDQwMDAx MiwKICAgICAibWVzc2FnZSI6ICJTdXBwbGllZCBpbmNvcnJlY3Qgb3IgaW5jb21wYXRpYmxlIHRv b2wgbWV0YSBwYXJhbWV0ZXJzLiIKICAgIH0sCiAgICB7CisgICAgIm5hbWUiOiAiTUFMRk9STUVE X0NPTlRFTlRTIiwKKyAgICAiY29kZSI6IDQwMDAxMywKKyAgICAibWVzc2FnZSI6ICJUaGUgY29u dGVudHMgb2YgdGhlIHJlcXVlc3QgYXJlIG1hbGZvcm1lZC4iCisgICAgfSwKKyAgIHsKICAgICAi bmFtZSI6ICJVU0VSX0FVVEhFTlRJQ0FUSU9OX0ZBSUxFRCIsCiAgICAgImNvZGUiOiA0MDEwMDEs CiAgICAgIm1lc3NhZ2UiOiAiQXV0aGVudGljYXRpb24gZmFpbGVkLCBpbnZhbGlkIGNyZWRlbnRp YWxzIHN1cHBsaWVkLiIKCmRpZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5ZmIyYjFjMDNhMjcyZWI1 NTFiN2QyNiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJmN2U5ZjJhNzA4NjAgbGli L2dhbGF4eS9tb2RlbC9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L21vZGVsL19faW5pdF9f LnB5CisrKyBiL2xpYi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkKQEAgLTUsMTUgKzUsMTEgQEAK IHRoZSByZWxhdGlvbnNoaXAgY2FyZGluYWxpdGllcyBhcmUgb2J2aW91cyAoZS5nLiBwcmVmZXIg RGF0YXNldCB0byBEYXRhKQogIiIiCj0yMAotZnJvbSBnYWxheHkgaW1wb3J0IGVnZ3MKLWVnZ3Mu cmVxdWlyZSgicGV4cGVjdCIpCi0KIGltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwogaW1wb3J0 IGxvZ2dpbmcKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCi1pbXBvcnQgcGV4cGVjdAogaW1w b3J0IGpzb24KIGltcG9ydCBzb2NrZXQKIGltcG9ydCB0aW1lCkBAIC0zNjk0LDI3ICszNjkwLDYg QEAKICAgICAgICAgICAgICAgICB1bnRyYW5zZmVycmVkX2RhdGFzZXRzLmFwcGVuZCggZGF0YXNl dCApCiAgICAgICAgIHJldHVybiB1bnRyYW5zZmVycmVkX2RhdGFzZXRzCj0yMAotICAgIGRlZiBn ZXRfdW50cmFuc2ZlcnJlZF9kYXRhc2V0X3NpemUoIHNlbGYsIGZpbGVwYXRoLCBzY3BfY29uZmln cyApOgotICAgICAgICBkZWYgcHJpbnRfdGlja3MoIGQgKToKLSAgICAgICAgICAgIHBhc3MKLSAg ICAgICAgZXJyb3JfbXNnID0zRCAnRXJyb3IgZW5jb3VudGVyZWQgaW4gZGV0ZXJtaW5pbmcgdGhl IGZpbGUgc2l6ZSBvZiAlPQpzIG9uIHRoZSBleHRlcm5hbF9zZXJ2aWNlLicgJSBmaWxlcGF0aAot ICAgICAgICBpZiBub3Qgc2NwX2NvbmZpZ3NbJ2hvc3QnXSBvciBub3Qgc2NwX2NvbmZpZ3NbJ3Vz ZXJfbmFtZSddIG9yIG5vdCA9CnNjcF9jb25maWdzWydwYXNzd29yZCddOgotICAgICAgICAgICAg cmV0dXJuIGVycm9yX21zZwotICAgICAgICBsb2dpbl9zdHIgPTNEICclc0AlcycgJSAoIHNjcF9j b25maWdzWyd1c2VyX25hbWUnXSwgc2NwX2NvbmZpZ3NbJ2g9Cm9zdCddICkKLSAgICAgICAgY21k ICA9M0QgJ3NzaCAlcyAiZHUgLXNoIFwnJXNcJyInICUgKCBsb2dpbl9zdHIsIGZpbGVwYXRoICkK LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3V0cHV0ID0zRCBwZXhwZWN0LnJ1biggY21kLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsgJy5zc3dvcmQ6Kic6 IHNjcF9jb25maWdzWydwYXM9CnN3b3JkJ10rJ1xyXG4nLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBleHBlY3QuVElNRU9VVDpwcmludF90aWNrc30sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0zRDEwICkKLSAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBlcnJvcl9tc2cKLSAgICAgICAgIyBj bGVhbnVwIHRoZSBvdXRwdXQgdG8gZ2V0IGp1c3QgdGhlIGZpbGUgc2l6ZQotICAgICAgICByZXR1 cm4gIG91dHB1dC5yZXBsYWNlKCBmaWxlcGF0aCwgJycgKVwKLSAgICAgICAgICAgICAgICAgICAg ICAucmVwbGFjZSggJ1Bhc3N3b3JkOicsICcnIClcCi0gICAgICAgICAgICAgICAgICAgICAgLnJl cGxhY2UoICIncyBwYXNzd29yZDoiLCAnJyApXAotICAgICAgICAgICAgICAgICAgICAgIC5yZXBs YWNlKCBsb2dpbl9zdHIsICcnIClcCi0gICAgICAgICAgICAgICAgICAgICAgLnN0cmlwKCkKICAg ICBAcHJvcGVydHkKICAgICBkZWYgcnVuX2RldGFpbHMoIHNlbGYgKToKICAgICAgICAgIyBzZWxm LnJ1bnMgaXMgYSBsaXN0IG9mIFNhbXBsZVJ1bkFzc29jaWF0aW9ucyBvcmRlcmVkIGRlc2NlbmRp bmcgPQpvbiB1cGRhdGVfdGltZS4KCmRpZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5ZmIyYjFjMDNh MjcyZWI1NTFiN2QyNiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJmN2U5ZjJhNzA4 NjAgbGliL2dhbGF4eS9vYmplY3RzdG9yZS9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L29i amVjdHN0b3JlL19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvb2JqZWN0c3RvcmUvX19pbml0 X18ucHkKQEAgLTExLDcgKzExLDcgQEAKIGltcG9ydCB0aHJlYWRpbmcKIGZyb20geG1sLmV0cmVl IGltcG9ydCBFbGVtZW50VHJlZQo9MjAKLWZyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHVtYXNrX2Zp eF9wZXJtcywgZm9yY2Vfc3ltbGluaworZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgdW1hc2tfZml4 X3Blcm1zLCBmb3JjZV9zeW1saW5rLCBzYWZlX3JlbHBhdGgKIGZyb20gZ2FsYXh5LmV4Y2VwdGlv bnMgaW1wb3J0IE9iamVjdEludmFsaWQsIE9iamVjdE5vdEZvdW5kCiBmcm9tIGdhbGF4eS51dGls LnNsZWVwZXIgaW1wb3J0IFNsZWVwZXIKIGZyb20gZ2FsYXh5LnV0aWwuZGlyZWN0b3J5X2hhc2gg aW1wb3J0IGRpcmVjdG9yeV9oYXNoX2lkCkBAIC0yNTYsNyArMjU2LDE3IEBACiAgICAgICAgICAg ICAgICAgICAgICAgICAgdGhlIGNvbXBvc2VkIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZG9lcyBub3Qg aW5jbHVkZT0KIGEgaGFzaCBpZAogICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuLCAvZmls ZXMvZGF0YXNldF8xMC5kYXQgKG9sZCkgdnMuIC9maWxlcy8wMDA9Ci9kYXRhc2V0XzEwLmRhdCAo bmV3KSkKICAgICAgICAgIiIiCi0gICAgICAgIGJhc2UgPTNEIHNlbGYuZXh0cmFfZGlycy5nZXQo YmFzZV9kaXIsIHNlbGYuZmlsZV9wYXRoKQorICAgICAgICBiYXNlID0zRCBvcy5wYXRoLmFic3Bh dGgoc2VsZi5leHRyYV9kaXJzLmdldChiYXNlX2Rpciwgc2VsZi5maWxlX3A9CmF0aCkpCisgICAg ICAgICMgZXh0cmFfZGlyIHNob3VsZCBuZXZlciBiZSBjb25zdHJ1Y3RlZCBmcm9tIHByb3ZpZGVk IGRhdGEgYnV0IGp1c3QKKyAgICAgICAgIyBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHNoZW5hbm5p Z2FucyBhZm9vdAorICAgICAgICBpZiBleHRyYV9kaXIgYW5kIGV4dHJhX2RpciAhPTNEIG9zLnBh dGgubm9ybXBhdGgoZXh0cmFfZGlyKToKKyAgICAgICAgICAgIGxvZy53YXJuaW5nKCdleHRyYV9k aXIgaXMgbm90IG5vcm1hbGl6ZWQ6ICVzJywgZXh0cmFfZGlyKQorICAgICAgICAgICAgcmFpc2Ug T2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIpCisgICAgICAg ICMgZW5zdXJlIHRoYXQgYW55IHBhcmVudCBkaXJlY3RvcnkgcmVmZXJlbmNlcyBpbiBhbHRfbmFt ZSB3b3VsZCBub3QKKyAgICAgICAgIyByZXN1bHQgaW4gYSBwYXRoIG5vdCBjb250YWluZWQgaW4g dGhlIGRpcmVjdG9yeSBwYXRoIGNvbnN0cnVjdGVkPQogaGVyZQorICAgICAgICBpZiBhbHRfbmFt ZSBhbmQgbm90IHNhZmVfcmVscGF0aChhbHRfbmFtZSk6CisgICAgICAgICAgICBsb2cud2Fybmlu ZygnYWx0X25hbWUgd291bGQgbG9jYXRlIHBhdGggb3V0c2lkZSBkaXI6ICVzJywgYWx0Xz0KbmFt ZSkKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2JqZWN0 IGlzIGludmFsaWQiKQogICAgICAgICBpZiBvbGRfc3R5bGU6CiAgICAgICAgICAgICBpZiBleHRy YV9kaXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcGF0aCA9M0Qgb3MucGF0aC5qb2lu KGJhc2UsIGV4dHJhX2RpcikKQEAgLTYyMyw5ICs2MzMsMTAgQEAKICAgICBlbGlmIHN0b3JlID0z RD0zRCAnaXJvZHMnOgogICAgICAgICBmcm9tIC5yb2RzIGltcG9ydCBJUk9EU09iamVjdFN0b3Jl CiAgICAgICAgIHJldHVybiBJUk9EU09iamVjdFN0b3JlKGNvbmZpZz0zRGNvbmZpZywgY29uZmln X3htbD0zRGNvbmZpZ194bWwpCi0gICAgZWxpZiBzdG9yZSA9M0Q9M0QgJ3B1bHNhcic6Ci0gICAg ICAgIGZyb20gLnB1bHNhciBpbXBvcnQgUHVsc2FyT2JqZWN0U3RvcmUKLSAgICAgICAgcmV0dXJu IFB1bHNhck9iamVjdFN0b3JlKGNvbmZpZz0zRGNvbmZpZywgY29uZmlnX3htbD0zRGNvbmZpZ194 bWwpCisgICAgIyBEaXNhYmxlIHRoZSBQdWxzYXIgb2JqZWN0IHN0b3JlIGZvciBub3cgdW50aWwg aXQgcmVjZWl2ZXMgc29tZSBhdHRlbj0KdGlvbgorICAgICMgZWxpZiBzdG9yZSA9M0Q9M0QgJ3B1 bHNhcic6CisgICAgIyAgICBmcm9tIC5wdWxzYXIgaW1wb3J0IFB1bHNhck9iamVjdFN0b3JlCisg ICAgIyAgICByZXR1cm4gUHVsc2FyT2JqZWN0U3RvcmUoY29uZmlnPTNEY29uZmlnLCBjb25maWdf eG1sPTNEY29uZmlnX3htbCkKICAgICBlbHNlOgogICAgICAgICBsb2cuZXJyb3IoIlVucmVjb2du aXplZCBvYmplY3Qgc3RvcmUgZGVmaW5pdGlvbjogezB9Ii5mb3JtYXQoc3RvcmU9CikpCj0yMAoK ZGlmZiAtciBlYjEzZDE4MjAxZmJiZjgzMTlmYjJiMWMwM2EyNzJlYjU1MWI3ZDI2IC1yIGE5NGIz YTk3ZWQ3YWU2NjcyYzliMWRjPQo4NzkyMmY3ZTlmMmE3MDg2MCBsaWIvZ2FsYXh5L29iamVjdHN0 b3JlL3JvZHMucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9yb2RzLnB5CisrKyBiL2xp Yi9nYWxheHkvb2JqZWN0c3RvcmUvcm9kcy5weQpAQCAtMTIsNyArMTIsOCBAQAogZnJvbSBwb3Np eHBhdGggaW1wb3J0IGJhc2VuYW1lIGFzIHBhdGhfYmFzZW5hbWUKIGZyb20gcG9zaXhwYXRoIGlt cG9ydCBkaXJuYW1lIGFzIHBhdGhfZGlybmFtZQo9MjAKLWZyb20gZ2FsYXh5LmV4Y2VwdGlvbnMg aW1wb3J0IE9iamVjdE5vdEZvdW5kCitmcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmpl Y3ROb3RGb3VuZCwgT2JqZWN0SW52YWxpZAorZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc2FmZV9y ZWxwYXRoCiBmcm9tIC4ub2JqZWN0c3RvcmUgaW1wb3J0IERpc2tPYmplY3RTdG9yZSwgT2JqZWN0 U3RvcmUsIGxvY2FsX2V4dHJhX2RpcnMKPTIwCiB0cnk6CkBAIC03MSw2ICs3MiwyMCBAQAogICAg ICAgICBsb2cuaW5mbyggImlST0RTIGRhdGEgZm9yIHRoaXMgaW5zdGFuY2Ugd2lsbCBiZSBzdG9y ZWQgaW4gY29sbGVjdGk9Cm9uOiAlcywgcmVzb3VyY2U6ICVzIiwgc2VsZi5yb290X2NvbGxlY3Rp b25fcGF0aCwgc2VsZi5kZWZhdWx0X3Jlc291cmNlICkKPTIwCiAgICAgZGVmIF9fZ2V0X3JvZHNf cGF0aCggc2VsZiwgb2JqLCBiYXNlX2Rpcj0zRE5vbmUsIGRpcl9vbmx5PTNERmFsc2UsIGV4dD0K cmFfZGlyPTNETm9uZSwgZXh0cmFfZGlyX2F0X3Jvb3Q9M0RGYWxzZSwgYWx0X25hbWU9M0ROb25l LCBzdHJpcF9kYXQ9M0RUcnVlPQosICoqa3dhcmdzICk6CisgICAgICAgICMgZXh0cmFfZGlyIHNo b3VsZCBuZXZlciBiZSBjb25zdHJ1Y3RlZCBmcm9tIHByb3ZpZGVkIGRhdGEgYnV0IGp1c3QKKyAg ICAgICAgIyBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHNoZW5hbm5pZ2FucyBhZm9vdAorICAgICAg ICBpZiBleHRyYV9kaXIgYW5kIGV4dHJhX2RpciAhPTNEIG9zLnBhdGgubm9ybXBhdGgoZXh0cmFf ZGlyKToKKyAgICAgICAgICAgIGxvZy53YXJuaW5nKCdleHRyYV9kaXIgaXMgbm90IG5vcm1hbGl6 ZWQ6ICVzJywgZXh0cmFfZGlyKQorICAgICAgICAgICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhl IHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIpCisgICAgICAgICMgZW5zdXJlIHRoYXQgYW55 IHBhcmVudCBkaXJlY3RvcnkgcmVmZXJlbmNlcyBpbiBhbHRfbmFtZSB3b3VsZCBub3QKKyAgICAg ICAgIyByZXN1bHQgaW4gYSBwYXRoIG5vdCBjb250YWluZWQgaW4gdGhlIGRpcmVjdG9yeSBwYXRo IGNvbnN0cnVjdGVkPQogaGVyZQorICAgICAgICBpZiBhbHRfbmFtZToKKyAgICAgICAgICAgIGlm IG5vdCBzYWZlX3JlbHBhdGgoYWx0X25hbWUpOgorICAgICAgICAgICAgICAgIGxvZy53YXJuaW5n KCdhbHRfbmFtZSB3b3VsZCBsb2NhdGUgcGF0aCBvdXRzaWRlIGRpcjogJXMnLCA9CmFsdF9uYW1l KQorICAgICAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2Jq ZWN0IGlzIGludmFsaWQiKQorICAgICAgICAgICAgIyBhbHRfbmFtZSBjYW4gY29udGFpbiBwYXJl bnQgZGlyZWN0b3J5IHJlZmVyZW5jZXMsIGJ1dCBpUk9EUyA9CndpbGwKKyAgICAgICAgICAgICMg bm90IGZvbGxvdyB0aGVtLCBzbyBpZiB0aGV5IGFyZSB2YWxpZCB3ZSBub3JtYWxpemUgdGhlbSBv dXQKKyAgICAgICAgICAgIGFsdF9uYW1lID0zRCBvcy5wYXRoLm5vcm1wYXRoKGFsdF9uYW1lKQog ICAgICAgICBwYXRoID0zRCAiIgogICAgICAgICBpZiBleHRyYV9kaXIgaXMgbm90IE5vbmU6CiAg ICAgICAgICAgICBwYXRoID0zRCBleHRyYV9kaXIKCmRpZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5 ZmIyYjFjMDNhMjcyZWI1NTFiN2QyNiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJm N2U5ZjJhNzA4NjAgbGliL2dhbGF4eS9vYmplY3RzdG9yZS9zMy5weQotLS0gYS9saWIvZ2FsYXh5 L29iamVjdHN0b3JlL3MzLnB5CisrKyBiL2xpYi9nYWxheHkvb2JqZWN0c3RvcmUvczMucHkKQEAg LTEyLDggKzEyLDggQEAKPTIwCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQo9MjAKLWZy b20gZ2FsYXh5LmV4Y2VwdGlvbnMgaW1wb3J0IE9iamVjdE5vdEZvdW5kCi1mcm9tIGdhbGF4eS51 dGlsIGltcG9ydCB1bWFza19maXhfcGVybXMKK2Zyb20gZ2FsYXh5LmV4Y2VwdGlvbnMgaW1wb3J0 IE9iamVjdE5vdEZvdW5kLCBPYmplY3RJbnZhbGlkCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCB1 bWFza19maXhfcGVybXMsIHNhZmVfcmVscGF0aAogZnJvbSBnYWxheHkudXRpbC5kaXJlY3Rvcnlf aGFzaCBpbXBvcnQgZGlyZWN0b3J5X2hhc2hfaWQKIGZyb20gZ2FsYXh5LnV0aWwuc2xlZXBlciBp bXBvcnQgU2xlZXBlcgogZnJvbSAuczNfbXVsdGlwYXJ0X3VwbG9hZCBpbXBvcnQgbXVsdGlwYXJ0 X3VwbG9hZApAQCAtMTgxLDYgKzE4MSwyMCBAQAogICAgICAgICAgICAgICAgIHVtYXNrX2ZpeF9w ZXJtcyggcGF0aCwgc2VsZi5jb25maWcudW1hc2ssIDA2NjYsIHNlbGYuY29uZmk9CmcuZ2lkICkK PTIwCiAgICAgZGVmIF9jb25zdHJ1Y3RfcGF0aChzZWxmLCBvYmosIGRpcl9vbmx5PTNETm9uZSwg ZXh0cmFfZGlyPTNETm9uZSwgZXh0cj0KYV9kaXJfYXRfcm9vdD0zREZhbHNlLCBhbHRfbmFtZT0z RE5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgIyBleHRyYV9kaXIgc2hvdWxkIG5ldmVyIGJlIGNv bnN0cnVjdGVkIGZyb20gcHJvdmlkZWQgZGF0YSBidXQganVzdAorICAgICAgICAjIG1ha2Ugc3Vy ZSB0aGVyZSBhcmUgbm8gc2hlbmFubmlnYW5zIGFmb290CisgICAgICAgIGlmIGV4dHJhX2RpciBh bmQgZXh0cmFfZGlyICE9M0Qgb3MucGF0aC5ub3JtcGF0aChleHRyYV9kaXIpOgorICAgICAgICAg ICAgbG9nLndhcm5pbmcoJ2V4dHJhX2RpciBpcyBub3Qgbm9ybWFsaXplZDogJXMnLCBleHRyYV9k aXIpCisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVj dCBpcyBpbnZhbGlkIikKKyAgICAgICAgIyBlbnN1cmUgdGhhdCBhbnkgcGFyZW50IGRpcmVjdG9y eSByZWZlcmVuY2VzIGluIGFsdF9uYW1lIHdvdWxkIG5vdAorICAgICAgICAjIHJlc3VsdCBpbiBh IHBhdGggbm90IGNvbnRhaW5lZCBpbiB0aGUgZGlyZWN0b3J5IHBhdGggY29uc3RydWN0ZWQ9CiBo ZXJlCisgICAgICAgIGlmIGFsdF9uYW1lOgorICAgICAgICAgICAgaWYgbm90IHNhZmVfcmVscGF0 aChhbHRfbmFtZSk6CisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxk IGxvY2F0ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsID0KYWx0X25hbWUpCisgICAgICAgICAgICAg ICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIp CisgICAgICAgICAgICAjIGFsdF9uYW1lIGNhbiBjb250YWluIHBhcmVudCBkaXJlY3RvcnkgcmVm ZXJlbmNlcywgYnV0IFMzIHdpbD0KbCBub3QKKyAgICAgICAgICAgICMgZm9sbG93IHRoZW0sIHNv IGlmIHRoZXkgYXJlIHZhbGlkIHdlIG5vcm1hbGl6ZSB0aGVtIG91dAorICAgICAgICAgICAgYWx0 X25hbWUgPTNEIG9zLnBhdGgubm9ybXBhdGgoYWx0X25hbWUpCiAgICAgICAgIHJlbF9wYXRoID0z RCBvcy5wYXRoLmpvaW4oKmRpcmVjdG9yeV9oYXNoX2lkKG9iai5pZCkpCiAgICAgICAgIGlmIGV4 dHJhX2RpciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIGV4dHJhX2Rpcl9hdF9yb290OgoK ZGlmZiAtciBlYjEzZDE4MjAxZmJiZjgzMTlmYjJiMWMwM2EyNzJlYjU1MWI3ZDI2IC1yIGE5NGIz YTk3ZWQ3YWU2NjcyYzliMWRjPQo4NzkyMmY3ZTlmMmE3MDg2MCBsaWIvZ2FsYXh5L3Rvb2xzL2lt cF9leHAvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS90b29scy9pbXBfZXhwL19faW5pdF9f LnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC9fX2luaXRfXy5weQpAQCAtNSw2ICs1 LDcgQEAKIGltcG9ydCBqc29uCiBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gZ2FsYXh5IGltcG9ydCBt b2RlbAorZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgTWFsZm9ybWVkQ29udGVudHMKIGZy b20gZ2FsYXh5LnRvb2xzLnBhcmFtZXRlcnMuYmFzaWMgaW1wb3J0IFVudmFsaWRhdGVkVmFsdWUK IGZyb20gZ2FsYXh5LndlYi5mcmFtZXdvcmsuaGVscGVycyBpbXBvcnQgdG9fdW5pY29kZQogZnJv bSBnYWxheHkubW9kZWwuaXRlbV9hdHRycyBpbXBvcnQgVXNlc0Fubm90YXRpb25zCkBAIC0xODcs OSArMTg4LDkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgZGF0YXNldF9hdHRycy5nZXQoJ2V4 cG9ydGVkJywgVHJ1ZSkgPTNEPTNEIFRydWU6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIERv IHNlY3VyaXR5IGNoZWNrIGFuZCBtb3ZlL2NvcHkgZGF0YXNldCBkYXRhLgogICAgICAgICAgICAg ICAgICAgICAgICAgdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSA9M0QgXAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aCggb3MucGF0aC5qb2luKCBhcmNoaXZlX2Rpciwg ZGE9CnRhc2V0X2F0dHJzWydmaWxlX25hbWUnXSApICkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvcy5wYXRoLnJlYWxwYXRoKCBvcy5wYXRoLmFic3BhdGgoIG9zLnBhdGguam9pPQpuKCBh cmNoaXZlX2RpciwgZGF0YXNldF9hdHRyc1snZmlsZV9uYW1lJ10gKSApICkKICAgICAgICAgICAg ICAgICAgICAgICAgIGlmIG5vdCBmaWxlX2luX2RpciggdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSwg b3MucGF0PQpoLmpvaW4oIGFyY2hpdmVfZGlyLCAiZGF0YXNldHMiICkgKToKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oICJJbnZhbGlkIGRhdGFzZXQgcGF0aDog JXMiICUgPQp0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lICkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICByYWlzZSBNYWxmb3JtZWRDb250ZW50cyggIkludmFsaWQgZGF0YXNldCBwYXRoPQo6ICVz IiAlIHRlbXBfZGF0YXNldF9maWxlX25hbWUgKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYg ZGF0YXNldHNfdXNhZ2VfY291bnRzWyB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lIF09CiA9M0Q9M0Qg MToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaHV0aWwubW92ZSggdGVtcF9kYXRhc2V0 X2ZpbGVfbmFtZSwgaGRhLmZpbGVfPQpuYW1lICkKICAgICAgICAgICAgICAgICAgICAgICAgIGVs c2U6CkBAIC0zMTMsNiArMzE0LDcgQEAKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6 CiAgICAgICAgICAgICAgICAgamloYS5qb2Iuc3RkZXJyICs9M0QgIkVycm9yIGNsZWFuaW5nIHVw IGhpc3RvcnkgaW1wb3J0IGpvYj0KOiAlcyIgJSBlCiAgICAgICAgICAgICAgICAgc2VsZi5zYV9z ZXNzaW9uLmZsdXNoKCkKKyAgICAgICAgICAgICAgICByYWlzZQo9MjAKPTIwCiBjbGFzcyBKb2JF eHBvcnRIaXN0b3J5QXJjaGl2ZVdyYXBwZXIoIG9iamVjdCwgVXNlc0hpc3RvcnlNaXhpbiwgVXNl c0Fubm90YT0KdGlvbnMgKToKCmRpZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5ZmIyYjFjMDNhMjcy ZWI1NTFiN2QyNiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJmN2U5ZjJhNzA4NjAg bGliL2dhbGF4eS90b29scy9pbXBfZXhwL3VucGFja190YXJfZ3pfYXJjaGl2ZS5weQotLS0gYS9s aWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAvdW5wYWNrX3Rhcl9nel9hcmNoaXZlLnB5CisrKyBiL2xp Yi9nYWxheHkvdG9vbHMvaW1wX2V4cC91bnBhY2tfdGFyX2d6X2FyY2hpdmUucHkKQEAgLTYsNiAr Niw3IEBACiAgICAgLS1bdXJsfGZpbGVdIHNvdXJjZSB0eXBlLCBlaXRoZXIgYSBVUkwgb3IgYSBm aWxlLgogIiIiCj0yMAoraW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3B0cGFyc2UKIGlt cG9ydCB0YXJmaWxlCkBAIC00Myw2ICs0NCwyMiBAQAogICAgICAgICByZXR1cm4gTm9uZQo9MjAK PTIwCitkZWYgY2hlY2tfYXJjaGl2ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciApOgorICAgICIi IgorICAgIEVuc3VyZSB0aGF0IGEgdGFyIGFyY2hpdmUgaGFzIG5vIGFic29sdXRlIHBhdGhzIG9y IHJlbGF0aXZlIHBhdGhzIG91dHM9CmlkZQorICAgIHRoZSBhcmNoaXZlLgorICAgICIiIgorICAg IHdpdGggdGFyZmlsZS5vcGVuKCBhcmNoaXZlX2ZpbGUsIG1vZGU9M0QncjpneicgKSBhcyBhcmNo aXZlX2ZwOgorICAgICAgICBmb3IgYXJjX3BhdGggaW4gYXJjaGl2ZV9mcC5nZXRuYW1lcygpOgor ICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGgubm9ybXBhdGgoCisgICAgICAgICAgICAgICAgb3Mu cGF0aC5qb2luKAorICAgICAgICAgICAgICAgICAgICBkZXN0X2RpciwKKyAgICAgICAgICAgICAg ICAgICAgYXJjX3BhdGgKKyAgICAgICAgICAgICAgICApICkuc3RhcnRzd2l0aCggZGVzdF9kaXIu cnN0cmlwKG9zLnNlcCkgKyBvcy5zZXAgKSwgXAorICAgICAgICAgICAgICAgICJBcmNoaXZlIG1l bWJlciB3b3VsZCBleHRyYWN0IG91dHNpZGUgdGFyZ2V0IGRpcmVjdG9yeTogJXM9CiIgJSBhcmNf cGF0aAorICAgIHJldHVybiBUcnVlCisKKwogZGVmIHVucGFja19hcmNoaXZlKCBhcmNoaXZlX2Zp bGUsIGRlc3RfZGlyICk6CiAgICAgIiIiCiAgICAgVW5wYWNrIGEgdGFyIGFuZC9vciBnemlwcGVk IGFyY2hpdmUgaW50byBhIGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4KQEAgLTUxLDEzICs2OCw4IEBA CiAgICAgYXJjaGl2ZV9mcC5leHRyYWN0YWxsKCBwYXRoPTNEZGVzdF9kaXIgKQogICAgIGFyY2hp dmVfZnAuY2xvc2UoKQo9MjAKLWlmIF9fbmFtZV9fID0zRD0zRCAiX19tYWluX18iOgotICAgICMg UGFyc2UgY29tbWFuZCBsaW5lLgotICAgIHBhcnNlciA9M0Qgb3B0cGFyc2UuT3B0aW9uUGFyc2Vy KCkKLSAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1VJywgJy0tdXJsJywgZGVzdD0zRCdpc191cmwn LCBhY3Rpb249M0Qic3RvcmVfdHJ1PQplIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCi0g ICAgcGFyc2VyLmFkZF9vcHRpb24oICctRicsICctLWZpbGUnLCBkZXN0PTNEJ2lzX2ZpbGUnLCBh Y3Rpb249M0Qic3RvcmVfdD0KcnVlIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCi0gICAg cGFyc2VyLmFkZF9vcHRpb24oICctZScsICctLWVuY29kZWQnLCBkZXN0PTNEJ2lzX2I2NGVuY29k ZWQnLCBhY3Rpb249Cj0zRCJzdG9yZV90cnVlIiwgZGVmYXVsdD0zREZhbHNlLCBoZWxwPTNEJ1Nv dXJjZSBhbmQgZGVzdGluYXRpb24gZGlyIHZhbHVlcz0KIGFyZSBiYXNlNjQgZW5jb2RlZC4nICkK LSAgICAob3B0aW9ucywgYXJncykgPTNEIHBhcnNlci5wYXJzZV9hcmdzKCkKKworZGVmIG1haW4o b3B0aW9ucywgYXJncyk6CiAgICAgaXNfdXJsID0zRCBib29sKCBvcHRpb25zLmlzX3VybCApCiAg ICAgaXNfZmlsZSA9M0QgYm9vbCggb3B0aW9ucy5pc19maWxlICkKICAgICBhcmNoaXZlX3NvdXJj ZSwgZGVzdF9kaXIgPTNEIGFyZ3MKQEAgLTY2LDE0ICs3OCwyNSBAQAogICAgICAgICBhcmNoaXZl X3NvdXJjZSA9M0QgYjY0ZGVjb2RlKCBhcmNoaXZlX3NvdXJjZSApCiAgICAgICAgIGRlc3RfZGly ID0zRCBiNjRkZWNvZGUoIGRlc3RfZGlyICkKPTIwCisgICAgIyBHZXQgYXJjaGl2ZSBmcm9tIFVS TC4KKyAgICBpZiBpc191cmw6CisgICAgICAgIGFyY2hpdmVfZmlsZSA9M0QgdXJsX3RvX2ZpbGUo IGFyY2hpdmVfc291cmNlLCB0ZW1wZmlsZS5OYW1lZFRlbXBvcj0KYXJ5RmlsZSggZGlyPTNEZGVz dF9kaXIgKS5uYW1lICkKKyAgICBlbGlmIGlzX2ZpbGU6CisgICAgICAgIGFyY2hpdmVfZmlsZSA9 M0QgYXJjaGl2ZV9zb3VyY2UKKworICAgICMgVW5wYWNrIGFyY2hpdmUuCisgICAgY2hlY2tfYXJj aGl2ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciApCisgICAgdW5wYWNrX2FyY2hpdmUoIGFyY2hp dmVfZmlsZSwgZGVzdF9kaXIgKQorCisKK2lmIF9fbmFtZV9fID0zRD0zRCAiX19tYWluX18iOgor ICAgICMgUGFyc2UgY29tbWFuZCBsaW5lLgorICAgIHBhcnNlciA9M0Qgb3B0cGFyc2UuT3B0aW9u UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1VJywgJy0tdXJsJywgZGVzdD0zRCdp c191cmwnLCBhY3Rpb249M0Qic3RvcmVfdHJ1PQplIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwu JyApCisgICAgcGFyc2VyLmFkZF9vcHRpb24oICctRicsICctLWZpbGUnLCBkZXN0PTNEJ2lzX2Zp bGUnLCBhY3Rpb249M0Qic3RvcmVfdD0KcnVlIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyAp CisgICAgcGFyc2VyLmFkZF9vcHRpb24oICctZScsICctLWVuY29kZWQnLCBkZXN0PTNEJ2lzX2I2 NGVuY29kZWQnLCBhY3Rpb249Cj0zRCJzdG9yZV90cnVlIiwgZGVmYXVsdD0zREZhbHNlLCBoZWxw PTNEJ1NvdXJjZSBhbmQgZGVzdGluYXRpb24gZGlyIHZhbHVlcz0KIGFyZSBiYXNlNjQgZW5jb2Rl ZC4nICkKKyAgICAob3B0aW9ucywgYXJncykgPTNEIHBhcnNlci5wYXJzZV9hcmdzKCkKICAgICB0 cnk6Ci0gICAgICAgICMgR2V0IGFyY2hpdmUgZnJvbSBVUkwuCi0gICAgICAgIGlmIGlzX3VybDoK LSAgICAgICAgICAgIGFyY2hpdmVfZmlsZSA9M0QgdXJsX3RvX2ZpbGUoIGFyY2hpdmVfc291cmNl LCB0ZW1wZmlsZS5OYW1lZFRlPQptcG9yYXJ5RmlsZSggZGlyPTNEZGVzdF9kaXIgKS5uYW1lICkK LSAgICAgICAgZWxpZiBpc19maWxlOgotICAgICAgICAgICAgYXJjaGl2ZV9maWxlID0zRCBhcmNo aXZlX3NvdXJjZQotCi0gICAgICAgICMgVW5wYWNrIGFyY2hpdmUuCi0gICAgICAgIHVucGFja19h cmNoaXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGlyICkKKyAgICAgICAgbWFpbihvcHRpb25zLCBh cmdzKQogICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CiAgICAgICAgIHByaW50ICJFcnJvciB1bnBh Y2tpbmcgdGFyL2d6IGFyY2hpdmU6ICVzIiAlIGUsIHN5cy5zdGRlcnIKCmRpZmYgLXIgZWIxM2Qx ODIwMWZiYmY4MzE5ZmIyYjFjMDNhMjcyZWI1NTFiN2QyNiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5 YjFkYz0KODc5MjJmN2U5ZjJhNzA4NjAgbGliL2dhbGF4eS91dGlsL19faW5pdF9fLnB5Ci0tLSBh L2xpYi9nYWxheHkvdXRpbC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L3V0aWwvX19pbml0 X18ucHkKQEAgLTI3LDcgKzI3LDcgQEAKPTIwCiBmcm9tIGVtYWlsLk1JTUVUZXh0IGltcG9ydCBN SU1FVGV4dAo9MjAKLWZyb20gb3MucGF0aCBpbXBvcnQgcmVscGF0aAorZnJvbSBvcy5wYXRoIGlt cG9ydCByZWxwYXRoLCBub3JtcGF0aAogZnJvbSBoYXNobGliIGltcG9ydCBtZDUKIGZyb20gaXRl cnRvb2xzIGltcG9ydCBpemlwCj0yMApAQCAtMTE0Myw2ICsxMTQzLDIzIEBACiBkZWYgZ2FsYXh5 X2RpcmVjdG9yeSgpOgogICAgIHJldHVybiBvcy5wYXRoLmFic3BhdGgoZ2FsYXh5X3Jvb3RfcGF0 aCkKPTIwCisKK2RlZiBzYWZlX3JlbHBhdGgocGF0aCk6CisgICAgIiIiCisgICAgR2l2ZW4gd2hh dCB3ZSBleHBlY3QgdG8gYmUgYSByZWxhdGl2ZSBwYXRoLCBkZXRlcm1pbmUgd2hldGhlciB0aGUg cGF0aAorICAgIHdvdWxkIGV4aXN0IGluc2lkZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisKKyAg ICA6dHlwZSAgIHBhdGg6ICAgc3RyaW5nCisgICAgOnBhcmFtICBwYXRoOiAgIGEgcGF0aCB0byBj aGVjaworICAgIDpydHlwZTogICAgICAgICBib29sCisgICAgOnJldHVybnM6ICAgICAgIGBgVHJ1 ZWBgIGlmIHBhdGggaXMgcmVsYXRpdmUgYW5kIGRvZXMgbm90IHJlZmVyZW5jZSBhID0KcGF0aAor ICAgICAgICBpbiBhIHBhcmVudCBkaXJlY3RvcnksIGBgRmFsc2VgYCBvdGhlcndpc2UuCisgICAg IiIiCisgICAgaWYgcGF0aC5zdGFydHN3aXRoKG9zLnNlcCkgb3Igbm9ybXBhdGgocGF0aCkuc3Rh cnRzd2l0aChvcy5wYXJkaXIpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1 ZQorCisKIGlmIF9fbmFtZV9fID0zRD0zRCAnX19tYWluX18nOgogICAgIGltcG9ydCBkb2N0ZXN0 CiAgICAgZG9jdGVzdC50ZXN0bW9kKHN5cy5tb2R1bGVzW19fbmFtZV9fXSwgdmVyYm9zZT0zREZh bHNlKQoKZGlmZiAtciBlYjEzZDE4MjAxZmJiZjgzMTlmYjJiMWMwM2EyNzJlYjU1MWI3ZDI2IC1y IGE5NGIzYTk3ZWQ3YWU2NjcyYzliMWRjPQo4NzkyMmY3ZTlmMmE3MDg2MCBsaWIvZ2FsYXh5L3dl YmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2FkbWluX3Rvb2xzaGVkLnB5Ci0tLSBhL2xpYi9nYWxh eHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvYWRtaW5fdG9vbHNoZWQucHkKKysrIGIvbGli L2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9hZG1pbl90b29sc2hlZC5weQpAQCAt MzgzLDExICszODMsMTEgQEAKPTIwCiAgICAgQHdlYi5qc29uCiAgICAgQHdlYi5yZXF1aXJlX2Fk bWluCi0gICAgZGVmIGdldF9maWxlX2NvbnRlbnRzKCBzZWxmLCB0cmFucywgZmlsZV9wYXRoICk6 CisgICAgZGVmIGdldF9maWxlX2NvbnRlbnRzKCBzZWxmLCB0cmFucywgZmlsZV9wYXRoLCByZXBv c2l0b3J5X2lkICk6CiAgICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0cmFucy5yZXNw b25zZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0cmFucy5yZXNw b25zZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4gc3VjLmdldF9y ZXBvc2l0b3J5X2ZpbGVfY29udGVudHMoIGZpbGVfcGF0aCApCisgICAgICAgIHJldHVybiBzdWMu Z2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggdHJhbnMuYXBwLCBmaWxlX3BhdGgsIHJlcD0K b3NpdG9yeV9pZCApCj0yMAogICAgIEB3ZWIuZXhwb3NlCiAgICAgQHdlYi5yZXF1aXJlX2FkbWlu CkBAIC05NjAsMTEgKzk2MCwxMSBAQAo9MjAKICAgICBAd2ViLmpzb24KICAgICBAd2ViLnJlcXVp cmVfYWRtaW4KLSAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCBmb2xkZXJfcGF0aCAp OgorICAgIGRlZiBvcGVuX2ZvbGRlciggc2VsZiwgdHJhbnMsIGZvbGRlcl9wYXRoLCByZXBvc2l0 b3J5X2lkICk6CiAgICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0cmFucy5yZXNwb25z ZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0cmFucy5yZXNwb25z ZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4gc3VjLm9wZW5fcmVw b3NpdG9yeV9maWxlc19mb2xkZXIoIGZvbGRlcl9wYXRoICkKKyAgICAgICAgcmV0dXJuIHN1Yy5v cGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCB0cmFucy5hcHAsIGZvbGRlcl9wYXRoLCByPQpl cG9zaXRvcnlfaWQgKQo9MjAKICAgICBAd2ViLmV4cG9zZQogICAgIEB3ZWIucmVxdWlyZV9hZG1p bgoKZGlmZiAtciBlYjEzZDE4MjAxZmJiZjgzMTlmYjJiMWMwM2EyNzJlYjU1MWI3ZDI2IC1yIGE5 NGIzYTk3ZWQ3YWU2NjcyYzliMWRjPQo4NzkyMmY3ZTlmMmE3MDg2MCBsaWIvZ2FsYXh5L3dlYmFw cHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3JlcXVlc3RzX2FkbWluLnB5Ci0tLSBhL2xpYi9nYWxheHkv d2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvcmVxdWVzdHNfYWRtaW4ucHkKKysrIGIvbGliL2dh bGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9yZXF1ZXN0c19hZG1pbi5weQpAQCAtNiwx MCArNiw3IEBACiBmcm9tIGdhbGF4eSBpbXBvcnQgbW9kZWwsIHV0aWwKIGZyb20gZ2FsYXh5Lndl Yi5mb3JtX2J1aWxkZXIgaW1wb3J0ICoKIGZyb20gLnJlcXVlc3RzX2NvbW1vbiBpbXBvcnQgUmVx dWVzdHNHcmlkLCBpbnZhbGlkX2lkX3JlZGlyZWN0Ci1mcm9tIGdhbGF4eSBpbXBvcnQgZWdncwot ZWdncy5yZXF1aXJlKCJhbXFwIikKLWltcG9ydCBhbXFwCi1pbXBvcnQgbG9nZ2luZywgb3MsIHBl eHBlY3QsIENvbmZpZ1BhcnNlcgoraW1wb3J0IGxvZ2dpbmcsIG9zLCBDb25maWdQYXJzZXIKPTIw CiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMApAQCAtMzUxLDE4MiAr MzQ4LDYgQEAKICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdl Yi51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlPQpxdWVzdHNfYWRtaW4nLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0zRCdt YW5hZ2U9Cl9kYXRhc2V0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2FtcGxlX2lkPTNEc2FtcD0KbGVfaWQgKSApCi0gICAgQHdl Yi5leHBvc2UKLSAgICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgc2VsZWN0X2RhdGFzZXRz X3RvX3RyYW5zZmVyKCBzZWxmLCB0cmFucywgKiprd2QgKToKLSAgICAgICAgcGFyYW1zID0zRCB1 dGlsLlBhcmFtcygga3dkICkKLSAgICAgICAgbWVzc2FnZSA9M0QgdXRpbC5yZXN0b3JlX3RleHQo IHBhcmFtcy5nZXQoICdtZXNzYWdlJywgJycgKSApCi0gICAgICAgIHN0YXR1cyA9M0QgcGFyYW1z LmdldCggJ3N0YXR1cycsICdkb25lJyApCi0gICAgICAgIHJlcXVlc3RfaWQgPTNEIGt3ZC5nZXQo ICdyZXF1ZXN0X2lkJywgTm9uZSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZpY2VfaWQgPTNEIGt3 ZC5nZXQoICdleHRlcm5hbF9zZXJ2aWNlX2lkJywgTm9uZSApCi0gICAgICAgIGZpbGVzID0zRCBb XQotICAgICAgICByZXF1ZXN0ID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2Rl bC5SZXF1ZXN0ICkuZ2V0KCB0cmE9Cm5zLnNlY3VyaXR5LmRlY29kZV9pZCggcmVxdWVzdF9pZCAp ICkKLSAgICAgICAgZXh0ZXJuYWxfc2VydmljZSA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSgg dHJhbnMubW9kZWwuRXh0ZXJuYWxTPQplcnZpY2UgKS5nZXQoIHRyYW5zLnNlY3VyaXR5LmRlY29k ZV9pZCggZXh0ZXJuYWxfc2VydmljZV9pZCApICkKLSAgICAgICAgIyBMb2FkIHRoZSBkYXRhIHRy YW5zZmVyIHNldHRpbmdzCi0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UubG9hZF9kYXRhX3RyYW5z ZmVyX3NldHRpbmdzKCB0cmFucyApCi0gICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9z ZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4dGVybj0KYWxTZXJ2aWNlLmRhdGFf dHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJh bnNmZXIgPTNEIHV0aWwucmVzdG9yZV90ZXh0KCBwYXJhbXMuZ2V0KCAnPQpzZWxlY3RlZF9kYXRh c2V0c190b190cmFuc2ZlcicsICcnICkgKQotICAgICAgICBpZiBzZWxlY3RlZF9kYXRhc2V0c190 b190cmFuc2ZlcjoKLSAgICAgICAgICAgIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyID0z RCBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlPQpyLnNwbGl0KCcsJykKLSAgICAgICAgZWxz ZToKLSAgICAgICAgICAgIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyID0zRCBbXQotICAg ICAgICBzYW1wbGVfaWQgPTNEIGt3ZC5nZXQoICdzYW1wbGVfaWQnLCAnbm9uZScgKQotICAgICAg ICBzYW1wbGVfaWRfc2VsZWN0X2ZpZWxkID0zRCBzZWxmLl9fYnVpbGRfc2FtcGxlX2lkX3NlbGVj dF9maWVsZCggdHI9CmFucywgcmVxdWVzdCwgc2FtcGxlX2lkICkKLSAgICAgICAgaWYgc2FtcGxl X2lkICE9M0QgJ25vbmUnOgotICAgICAgICAgICAgc2FtcGxlID0zRCB0cmFucy5zYV9zZXNzaW9u LnF1ZXJ5KCB0cmFucy5tb2RlbC5TYW1wbGUgKS5nZXQoIHQ9CnJhbnMuc2VjdXJpdHkuZGVjb2Rl X2lkKCBzYW1wbGVfaWQgKSApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzYW1wbGUgPTNE IE5vbmUKLSAgICAgICAgIyBUaGUgX19nZXRfZmlsZXMoKSBtZXRob2QgcmVkaXJlY3RzIGhlcmUg d2l0aCBhIHN0YXR1cyBvZiAnZXJyb3InPQogYW5kIGEgbWVzc2FnZSBpZiB0aGVyZQotICAgICAg ICAjIHdhcyBhIHByb2JsZW0gcmV0cmlldmluZyB0aGUgZmlsZXMuCi0gICAgICAgIGlmIHBhcmFt cy5nZXQoICdzZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXJfYnV0dG9uJywgRmFsc2UgKToKLSAg ICAgICAgICAgICMgR2V0IHRoZSBzYW1wbGUgdGhhdCB3YXMgc2VxdWVuY2VkIHRvIHByb2R1Y2Ug dGhlc2UgZGF0YXNldHMuCi0gICAgICAgICAgICBpZiBzYW1wbGVfaWQgPTNEPTNEICdub25lJzoK LSAgICAgICAgICAgICAgICBkZWwga3dkWyAnc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyX2J1 dHRvbicgXQotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdTZWxlY3QgdGhlIHNhbXBsZSB0 aGF0IHdhcyBzZXF1ZW5jZWQgdG8gcHJvZHU9CmNlIHRoZSBkYXRhc2V0cyB5b3Ugd2FudCB0byB0 cmFuc2Zlci4nCi0gICAgICAgICAgICAgICAga3dkWyAnbWVzc2FnZScgXSA9M0QgbWVzc2FnZQot ICAgICAgICAgICAgICAgIGt3ZFsgJ3N0YXR1cycgXSA9M0QgJ2Vycm9yJwotICAgICAgICAgICAg ICAgIHJldHVybiB0cmFucy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB3ZWIudXJsX2ZvciggY29u dHJvbGw9CmVyPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0KPTNEJ3NlbGVj dF9kYXRhc2V0c190b190cmFuc2ZlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3ZCApICkKLSAgICAgICAgICAg IGlmIG5vdCBzYW1wbGUubGlicmFyeToKLSAgICAgICAgICAgICAgICAjIERpc3BsYXkgYW4gZXJy b3IgaWYgYSBzYW1wbGUgaGFzIGJlZW4gc2VsZWN0ZWQgdGhhdAotICAgICAgICAgICAgICAgICMg aGFzIG5vdCB5ZXQgYmVlbiBhc3NvY2lhdGVkIHdpdGggYSBkZXN0aW5hdGlvbiBsaWJyYXJ5Lgot ICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdTZWxlY3QgYSB0YXJnZXQgZGF0YSBsaWJyYXJ5 IGFuZCBmb2xkZXIgZm9yIHQ9CmhlIHNhbXBsZSBiZWZvcmUgc2VsZWN0aW5nIHRoZSBkYXRhc2V0 cy4nCi0gICAgICAgICAgICAgICAgc3RhdHVzID0zRCAnZXJyb3InCi0gICAgICAgICAgICAgICAg cmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9s bD0KZXI9M0QncmVxdWVzdHNfY29tbW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0KPTNEJ2VkaXRfc2Ft cGxlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjbnRybGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlkPTNEdHJhPQpucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVlc3QuaWQgKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0YXR1cz0KPTNEc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0KPTNEbWVzc2FnZSApICkKLSAg ICAgICAgICAgICMgU2F2ZSB0aGUgc2FtcGxlIGRhdGFzZXRzCi0gICAgICAgICAgICBzYW1wbGVf ZGF0YXNldF9maWxlX25hbWVzID0zRCBzZWxmLl9fY3JlYXRlX3NhbXBsZV9kYXRhc2V0cyggdD0K cmFucywgc2FtcGxlLCBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlciwgZXh0ZXJuYWxfc2Vy dmljZSApCi0gICAgICAgICAgICBpZiBzYW1wbGVfZGF0YXNldF9maWxlX25hbWVzOgotICAgICAg ICAgICAgICAgIG1lc3NhZ2UgPTNEICdEYXRhc2V0cyAoJXMpIGhhdmUgYmVlbiBzZWxlY3RlZCBm b3Igc2FtcGxlICg9CiVzKScgJSBcCi0gICAgICAgICAgICAgICAgICAgICggc3RyKCBzYW1wbGVf ZGF0YXNldF9maWxlX25hbWVzIClbMTotMV0ucmVwbGFjZSggIiciLD0KICIiICksIHNhbXBsZS5u YW1lICkKLSAgICAgICAgICAgIHJldHVybiB0cmFucy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB3 ZWIudXJsX2ZvciggY29udHJvbGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u PTNEJ21hPQpuYWdlX2RhdGFzZXRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9pZD0KPTNEcmVxdWVzdF9pZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2FtcGxlX2lkPTNEPQpzYW1wbGVfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9M0RtZT0Kc3NhZ2Us Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0YXR1cz0zRHN0YT0KdHVzICkgKQotICAgICAgICByZXR1cm4gdHJhbnMuZmlsbF90 ZW1wbGF0ZSggJy9hZG1pbi9yZXF1ZXN0cy9zZWxlY3RfZGF0YXNldHNfdG9fdHI9CmFuc2Zlci5t YWtvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNudHJsbGVyPTNEJ3Jl cXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl c3Q9M0RyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJu YWxfc2VydmljZT0zRGV4dGVybmFsX3NlcnZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzY3BfY29uZmlncz0zRHNjcF9jb25maWdzLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2FtcGxlPTNEc2FtcGxlLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2FtcGxlX2lkX3NlbGVjdF9maWVsZD0zRHNhbXBsZV9pZF9zZWw9CmVj dF9maWVsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0zRHN0 YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9M0RtZXNz YWdlICkKLSAgICBAd2ViLmpzb24KLSAgICBkZWYgZ2V0X2ZpbGVfZGV0YWlscyggc2VsZiwgdHJh bnMsIHJlcXVlc3RfaWQsIGV4dGVybmFsX3NlcnZpY2VfaWQsIGZvPQpsZGVyX3BhdGggKToKLSAg ICAgICAgZGVmIHByaW50X3RpY2tzKCBkICk6Ci0gICAgICAgICAgICAjIHBleHBlY3QgdGltZW91 dCBtZXRob2QKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgIyBBdm9pZCBjYWNoaW5nCi0gICAg ICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2FjaGUnCi0gICAg ICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0gICAgICAgIHJl cXVlc3QgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLlJlcXVlc3QgKS5n ZXQoIHRyYT0KbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCByZXF1ZXN0X2lkICkgKQotICAgICAgICBl eHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2RlbC5F eHRlcm5hbFM9CmVydmljZSApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBleHRlcm5h bF9zZXJ2aWNlX2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxvYWRfZGF0YV90cmFu c2Zlcl9zZXR0aW5ncyggdHJhbnMgKQotICAgICAgICBzY3BfY29uZmlncyA9M0QgZXh0ZXJuYWxf c2VydmljZS5kYXRhX3RyYW5zZmVyWyB0cmFucy5tb2RlbC5FeHRlcm49CmFsU2VydmljZS5kYXRh X3RyYW5zZmVyX3Byb3RvY29sLlNDUCBdCi0gICAgICAgIGNtZCAgPTNEICdzc2ggJXNAJXMgImxz IC1vZ2hwIFwnJXNcJyInICUgKCBzY3BfY29uZmlnc1sgJ3VzZXJfbmFtZT0KJyBdLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcF9jb25maWdzWyAn aG9zdCcgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmb2xkZXJfcGF0aCApCi0gICAgICAgICMgSGFuZGxlIHRoZSBhdXRoZW50aWNhdGlvbiBtZXNz YWdlIGlmIHNzaCBrZXlzIGFyZSBub3Qgc2V0IC0gdGhlID0KbWVzc2FnZSBpcwotICAgICAgICAj IHNvbWV0aGluZyBsaWtlOiAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIGNvbm5l Y3RpbmcgKHk9CmVzL25vKS4iCi0gICAgICAgIG91dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNtZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsgJ1woeWVzXC9ub1wpXC4q JyA6ICd5ZXNcclxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcu c3N3b3JkOionIDogc2NwX2NvbmZpZ3NbICdwYXNzd29yPQpkJyBdICsgJ1xyXG4nLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cGVjdC5USU1FT1VUIDogcHJpbnRf dGlja3MgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9M0QxMCApCi0g ICAgICAgIGZvciBwYXNzd29yZF9zdHIgaW4gWyAnUGFzc3dvcmQ6XHJcbicsICdwYXNzd29yZDpc clxuJyBdOgotICAgICAgICAgICAgIyBFbGltaW5hdGUgdGhlIG91dHB1dCBjcmVhdGVkIHVzaW5n IHNzaCBmcm9tIHRoZSB0cmVlCi0gICAgICAgICAgICBpZiBwYXNzd29yZF9zdHIgaW4gb3V0cHV0 OgotICAgICAgICAgICAgICAgIG91dHB1dCA9M0Qgb3V0cHV0LnJlcGxhY2UoIHBhc3N3b3JkX3N0 ciwgJycgKQotICAgICAgICByZXR1cm4gdW5pY29kZSggb3V0cHV0LnJlcGxhY2UoICdcclxuJywg Jzxici8+JyApICkKLSAgICBAd2ViLmpzb24KLSAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRy YW5zLCByZXF1ZXN0X2lkLCBleHRlcm5hbF9zZXJ2aWNlX2lkLCBrZXkgKToKLSAgICAgICAgIyBB dm9pZCBjYWNoaW5nCi0gICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0z RCAnbm8tY2FjaGUnCi0gICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9 M0QgJzAnCi0gICAgICAgIHJlcXVlc3QgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5z Lm1vZGVsLlJlcXVlc3QgKS5nZXQoIHRyYT0KbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCByZXF1ZXN0 X2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1 ZXJ5KCB0cmFucy5tb2RlbC5FeHRlcm5hbFM9CmVydmljZSApLmdldCggdHJhbnMuc2VjdXJpdHku ZGVjb2RlX2lkKCBleHRlcm5hbF9zZXJ2aWNlX2lkICkgKQotICAgICAgICBmb2xkZXJfcGF0aCA9 M0Qga2V5Ci0gICAgICAgIGZpbGVzX2xpc3QgPTNEIHNlbGYuX19nZXRfZmlsZXMoIHRyYW5zLCBy ZXF1ZXN0LCBleHRlcm5hbF9zZXJ2aWNlLD0KIGZvbGRlcl9wYXRoICkKLSAgICAgICAgZm9sZGVy X2NvbnRlbnRzID0zRCBbXQotICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXNfbGlzdDoKLSAg ICAgICAgICAgIGlzX2ZvbGRlciA9M0QgRmFsc2UKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lIGFu ZCBmaWxlbmFtZVstMV0gPTNEPTNEIG9zLnNlcDoKLSAgICAgICAgICAgICAgICBpc19mb2xkZXIg PTNEIFRydWUKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lOgotICAgICAgICAgICAgICAgIGZ1bGxf cGF0aCA9M0Qgb3MucGF0aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUgKQotICAgICAgICAg ICAgICAgIG5vZGUgPTNEIHsgInRpdGxlIjogZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgImlzRm9sZGVyIjogaXNfZm9sZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICJp c0xhenkiOiBpc19mb2xkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInRvb2x0aXAiOiBm dWxsX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImtleSI6IGZ1bGxfcGF0aCB9Ci0g ICAgICAgICAgICAgICAgZm9sZGVyX2NvbnRlbnRzLmFwcGVuZCggbm9kZSApCi0gICAgICAgIHJl dHVybiBmb2xkZXJfY29udGVudHMKLSAgICBkZWYgX19nZXRfZmlsZXMoIHNlbGYsIHRyYW5zLCBy ZXF1ZXN0LCBleHRlcm5hbF9zZXJ2aWNlLCBmb2xkZXJfcGF0aCApOgotICAgICAgICAjIFJldHJp ZXZlcyB0aGUgZmlsZW5hbWVzIHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHJlbW90ZSBob3N0 LgotICAgICAgICBvayA9M0QgVHJ1ZQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxvYWRfZGF0 YV90cmFuc2Zlcl9zZXR0aW5ncyggdHJhbnMgKQotICAgICAgICBzY3BfY29uZmlncyA9M0QgZXh0 ZXJuYWxfc2VydmljZS5kYXRhX3RyYW5zZmVyWyB0cmFucy5tb2RlbC5FeHRlcm49CmFsU2Vydmlj ZS5kYXRhX3RyYW5zZmVyX3Byb3RvY29sLlNDUCBdCi0gICAgICAgIGlmIG5vdCBzY3BfY29uZmln c1sgJ2hvc3QnIF0gb3Igbm90IHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBdIG9yID0Kbm90IHNj cF9jb25maWdzWyAncGFzc3dvcmQnIF06Ci0gICAgICAgICAgICBzdGF0dXMgPTNEICdlcnJvcicK LSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJFcnJvciBpbiBleHRlcm5hbCBzZXJ2aWNlIGxvZ2lu IGluZm9ybWF0aW9uLiIKLSAgICAgICAgICAgIG9rID0zRCBGYWxzZQotICAgICAgICBkZWYgcHJp bnRfdGlja3MoIGQgKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgY21kICA9M0QgJ3NzaCAl c0AlcyAibHMgLXAgXCclc1wnIicgJSAoIHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBdPQosIHNj cF9jb25maWdzWyAnaG9zdCcgXSwgZm9sZGVyX3BhdGggKQotICAgICAgICAjIEhhbmRsZSB0aGUg YXV0aGVudGljYXRpb24gbWVzc2FnZSBpZiBrZXlzIGFyZSBub3Qgc2V0IC0gdGhlIG1lc3M9CmFn ZSBpcwotICAgICAgICAjIHNvbWV0aGluZyBsaWtlOiAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRv IGNvbnRpbnVlIGNvbm5lY3RpbmcgKHk9CmVzL25vKS4iCi0gICAgICAgIG91dHB1dCA9M0QgcGV4 cGVjdC5ydW4oIGNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsg J1woeWVzXC9ub1wpXC4qJyA6ICd5ZXNcclxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJy5zc3dvcmQ6KicgOiBzY3BfY29uZmlnc1sgJ3Bhc3N3b3JkPQonIF0gKyAn XHJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwZWN0LlRJ TUVPVVQgOiBwcmludF90aWNrcyB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlt ZW91dD0zRDEwICkKLSAgICAgICAgaWYgJ05vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnknIGluIG91 dHB1dDoKLSAgICAgICAgICAgIHN0YXR1cyA9M0QgJ2Vycm9yJwotICAgICAgICAgICAgbWVzc2Fn ZSA9M0QgIk5vIGZvbGRlciBuYW1lZCAoJXMpIGV4aXN0cyBvbiB0aGUgZXh0ZXJuYWwgc2Vydmk9 CmNlLiIgJSBmb2xkZXJfcGF0aAotICAgICAgICAgICAgb2sgPTNEIEZhbHNlCi0gICAgICAgIGlm IG9rOgotICAgICAgICAgICAgaWYgJ2Fzc3dvcmQ6JyBpbiBvdXRwdXQ6Ci0gICAgICAgICAgICAg ICAgIyBFbGltaW5hdGUgdGhlIG91dHB1dCBjcmVhdGVkIHVzaW5nIHNzaCBmcm9tIHRoZSB0cmVl Ci0gICAgICAgICAgICAgICAgb3V0cHV0X2FzX2xpc3QgPTNEIG91dHB1dC5zcGxpdGxpbmVzKClb IDE6IF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3V0cHV0X2FzX2xpc3Qg PTNEIG91dHB1dC5zcGxpdGxpbmVzKCkKLSAgICAgICAgICAgIHJldHVybiBvdXRwdXRfYXNfbGlz dAotICAgICAgICByZXR1cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9m b3IoIGNvbnRyb2xsZXI9M0QncmU9CnF1ZXN0c19hZG1pbicsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPTNEJ3NlbGVjdD0K X2RhdGFzZXRzX3RvX3RyYW5zZmVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2lkPTNEdHJhPQpucy5zZWN1cml0eS5l bmNvZGVfaWQoIHJlcXVlc3QuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlPQpfaWQ9M0R0cmFucy5z ZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2UuaWQgKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzdGF0 dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWVzc2FnZT0zRG1lc3NhZz0KZSApICkKLSAgICBkZWYgX19jcmVhdGVfc2FtcGxlX2Rh dGFzZXRzKCBzZWxmLCB0cmFucywgc2FtcGxlLCBzZWxlY3RlZF9kYXRhc2V0c190PQpvX3RyYW5z ZmVyLCBleHRlcm5hbF9zZXJ2aWNlICk6Ci0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UubG9hZF9k YXRhX3RyYW5zZmVyX3NldHRpbmdzKCB0cmFucyApCi0gICAgICAgIHNjcF9jb25maWdzID0zRCBl eHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4dGVybj0KYWxTZXJ2 aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgc2FtcGxlX2RhdGFzZXRf ZmlsZV9uYW1lcyA9M0QgW10KLSAgICAgICAgaWYgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNm ZXI6Ci0gICAgICAgICAgICBmb3IgZmlsZXBhdGggaW4gc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJh bnNmZXI6Ci0gICAgICAgICAgICAgICAgIyBGSVhNRTogaGFuZGxlIGZvbGRlciBzZWxlY3Rpb24g LSBpZ25vcmUgZm9sZGVycyBmb3Igbm93Ci0gICAgICAgICAgICAgICAgaWYgZmlsZXBhdGhbLTFd ICE9M0Qgb3Muc2VwOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0zRCBzZWxmLl9fcmVuYW1l X2RhdGFzZXQoIHNhbXBsZSwgZmlsZXBhdGguc3BsaXQ9CiggJy8nIClbLTFdLCBzY3BfY29uZmln cyApCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9M0QgdHJhbnMuYXBwLm1vZGVsLlNhbXBs ZURhdGFzZXQudHJhbnNmZXJfc3RhdD0KdXMuTk9UX1NUQVJURUQKLSAgICAgICAgICAgICAgICAg ICAgc2l6ZSA9M0Qgc2FtcGxlLmdldF91bnRyYW5zZmVycmVkX2RhdGFzZXRfc2l6ZSggZmlsZXBh PQp0aCwgc2NwX2NvbmZpZ3MgKQotICAgICAgICAgICAgICAgICAgICBzYW1wbGVfZGF0YXNldCA9 M0QgdHJhbnMubW9kZWwuU2FtcGxlRGF0YXNldCggc2FtcGxlPQo9M0RzYW1wbGUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmlsZV9wYXRoPQo9M0RmaWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzPQp0YXR1cywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuYW1lPTNEbmFtPQplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21zZz0KPTNEJycsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0z RHNpej0KZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBleHRlcm5hbF9zPQplcnZpY2U9M0RleHRlcm5hbF9zZXJ2aWNlICkK LSAgICAgICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHNhbXBsZV9kYXRhc2V0 ICkKLSAgICAgICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAg ICAgICAgICAgICAgIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMuYXBwZW5kKCBzdHIoIHNhbXBs ZV9kYXRhc2V0Lj0KbmFtZSApICkKLSAgICAgICAgcmV0dXJuIHNhbXBsZV9kYXRhc2V0X2ZpbGVf bmFtZXMKICAgICBkZWYgX19yZW5hbWVfZGF0YXNldCggc2VsZiwgc2FtcGxlLCBmaWxlcGF0aCwg c2NwX2NvbmZpZ3MgKToKICAgICAgICAgbmFtZSA9M0QgZmlsZXBhdGguc3BsaXQoICcvJyApWy0x XQogICAgICAgICBvcHRpb25zID0zRCBzYW1wbGUucmVxdWVzdC50eXBlLnJlbmFtZV9kYXRhc2V0 X29wdGlvbnMKQEAgLTU2MSw5MCArMzgyLDYgQEAKICAgICAgICAgICAgIGZsdXNoX25lZWRlZCA9 M0QgVHJ1ZQogICAgICAgICBpZiBmbHVzaF9uZWVkZWQ6CiAgICAgICAgICAgICB0cmFucy5zYV9z ZXNzaW9uLmZsdXNoKCkKLSAgICBkZWYgX19jcmVhdGVfZGF0YV90cmFuc2Zlcl9tZXNzYWdlcygg c2VsZiwgdHJhbnMsIHNhbXBsZSwgc2VsZWN0ZWRfc2FtPQpwbGVfZGF0YXNldHMgKToKLSAgICAg ICAgIiIiCi0gICAgICAgIENyZWF0ZXMgdGhlIHhtbCBtZXNzYWdlcyB0byBzZW5kIHRvIHRoZSBy YWJiaXRtcSBzZXJ2ZXIuIEl0IHJldHVybj0KcyBhIGRpY3Rpb25hcnkgb2YgbWVzc2FnZXMKLSAg ICAgICAga2V5ZWQgYnkgdGhlIGV4dGVybmFsIHNlcnZpY2UgdXNlZCB0byB0cmFuc2ZlciB0aGUg ZGF0YXNldHMKLSAgICAgICAgIiIiCi0gICAgICAgICMgQ3JlYXRlIHRoZSB4bWwgbWVzc2FnZSBi YXNlZCBvbiB0aGUgZm9sbG93aW5nIHRlbXBsYXRlCi0gICAgICAgIHhtbCA9M0QgXAotICAgICAg ICAgICAgJycnIDxkYXRhX3RyYW5zZmVyPgotICAgICAgICAgICAgICAgICAgICA8Z2FsYXh5X2hv c3Q+JShHQUxBWFlfSE9TVClzPC9nYWxheHlfaG9zdD4KLSAgICAgICAgICAgICAgICAgICAgPGFw aV9rZXk+JShBUElfS0VZKXM8L2FwaV9rZXk+Ci0gICAgICAgICAgICAgICAgICAgIDxkYXRhX2hv c3Q+JShEQVRBX0hPU1QpczwvZGF0YV9ob3N0PgotICAgICAgICAgICAgICAgICAgICA8ZGF0YV91 c2VyPiUoREFUQV9VU0VSKXM8L2RhdGFfdXNlcj4KLSAgICAgICAgICAgICAgICAgICAgPGRhdGFf cGFzc3dvcmQ+JShEQVRBX1BBU1NXT1JEKXM8L2RhdGFfcGFzc3dvcmQ+Ci0gICAgICAgICAgICAg ICAgICAgIDxyZXF1ZXN0X2lkPiUoUkVRVUVTVF9JRClzPC9yZXF1ZXN0X2lkPgotICAgICAgICAg ICAgICAgICAgICA8c2FtcGxlX2lkPiUoU0FNUExFX0lEKXM8L3NhbXBsZV9pZD4KLSAgICAgICAg ICAgICAgICAgICAgPGxpYnJhcnlfaWQ+JShMSUJSQVJZX0lEKXM8L2xpYnJhcnlfaWQ+Ci0gICAg ICAgICAgICAgICAgICAgIDxmb2xkZXJfaWQ+JShGT0xERVJfSUQpczwvZm9sZGVyX2lkPgotICAg ICAgICAgICAgICAgICAgICAlKERBVEFTRVRTKXMKLSAgICAgICAgICAgICAgICA8L2RhdGFfdHJh bnNmZXI+JycnCi0gICAgICAgIGRhdGFzZXRfeG1sID0zRCBcCi0gICAgICAgICAgICAnJyc8ZGF0 YXNldD4KLSAgICAgICAgICAgICAgICAgICA8ZGF0YXNldF9pZD4lKElEKXM8L2RhdGFzZXRfaWQ+ Ci0gICAgICAgICAgICAgICAgICAgPG5hbWU+JShOQU1FKXM8L25hbWU+Ci0gICAgICAgICAgICAg ICAgICAgPGZpbGU+JShGSUxFKXM8L2ZpbGU+Ci0gICAgICAgICAgICAgICA8L2RhdGFzZXQ+Jycn Ci0gICAgICAgICMgSGVyZSB3ZSBncm91cCBhbGwgdGhlIHNhbXBsZV9kYXRhc2V0cyBieSB0aGUg ZXh0ZXJuYWwgc2VydmljZSB1cz0KZWQgdG8gdHJhbnNmZXIgdGhlbS4KLSAgICAgICAgIyBUaGUg aWRlYSBpcyB0byBidW5kbGUgdXAgdGhlIHNhbXBsZV9kYXRhc2V0cyB3aGljaCB1c2VzIHRoZSBz YW1lPQogZXh0ZXJuYWwgc2VydmljZSBhbmQKLSAgICAgICAgIyBzZW5kIGEgc2luZ2xlIEFNUVAg bWVzc2FnZSB0byB0aGUgZ2FsYXh5X2xpc3RlbmVyCi0gICAgICAgIGRhdGFzZXRfZWxlbWVudHMg PTNEIHt9Ci0gICAgICAgIGZvciBzYW1wbGVfZGF0YXNldCBpbiBzZWxlY3RlZF9zYW1wbGVfZGF0 YXNldHM6Ci0gICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCBzYW1wbGVfZGF0YXNldC5l eHRlcm5hbF9zZXJ2aWNlCi0gICAgICAgICAgICBpZiBzYW1wbGVfZGF0YXNldC5zdGF0dXMgPTNE PTNEIHRyYW5zLmFwcC5tb2RlbC5TYW1wbGVEYXRhc2V0Lj0KdHJhbnNmZXJfc3RhdHVzLk5PVF9T VEFSVEVEOgotICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhc2V0X2VsZW1lbnRzLmhhc19rZXko IGV4dGVybmFsX3NlcnZpY2UgKToKLSAgICAgICAgICAgICAgICAgICAgZGF0YXNldF9lbGVtZW50 c1sgZXh0ZXJuYWxfc2VydmljZSBdID0zRCAnJwotICAgICAgICAgICAgICAgIGRhdGFzZXRfZWxl bWVudHNbIGV4dGVybmFsX3NlcnZpY2UgXSArPTNEIGRhdGFzZXRfeG1sICUgZGk9CmN0KCBJRD0z RHN0ciggc2FtcGxlX2RhdGFzZXQuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FPQo9M0RzYW1wbGVf ZGF0YXNldC5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEU9Cj0zRHNhbXBsZV9kYXRhc2V0LmZpbGVf cGF0aCApCi0gICAgICAgICAgICAgICAgIyB1cGRhdGUgdGhlIGRhdGFzZXQgdHJhbnNmZXIgc3Rh dHVzCi0gICAgICAgICAgICAgICAgc2FtcGxlX2RhdGFzZXQuc3RhdHVzID0zRCB0cmFucy5hcHAu bW9kZWwuU2FtcGxlRGF0YXNldC50cj0KYW5zZmVyX3N0YXR1cy5JTl9RVUVVRQotICAgICAgICAg ICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBzYW1wbGVfZGF0YXNldCApCi0gICAgICAgICAg ICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICMgRmluYWxseSBwcmVwZW5k IHRoZSBleHRlcm5hbCBzZXJ2aWNlIGluZm8gdG8gdGhlIHNldHMgb2Ygc2FtcGxlID0KZGF0YXNl dHMKLSAgICAgICAgbWVzc2FnZXMgPTNEIFtdCi0gICAgICAgIGZvciBleHRlcm5hbF9zZXJ2aWNl LCBkYXRhc2V0X2VsZW0gaW4gZGF0YXNldF9lbGVtZW50cy5pdGVtcygpOgotICAgICAgICAgICAg ZXh0ZXJuYWxfc2VydmljZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRyYW5zICkKLSAg ICAgICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJb IHRyYW5zLm1vZGVsLkV4PQp0ZXJuYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQ IF0KLSAgICAgICAgICAgICMgQ2hlY2sgZGF0YSB0cmFuc2ZlciBzZXR0aW5ncwotICAgICAgICAg ICAgZXJyX21zZyA9M0Qgc2VsZi5fX3ZhbGlkYXRlX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRy YW5zLCBzYW09CnBsZS5yZXF1ZXN0LnR5cGUsIHNjcF9jb25maWdzICkKLSAgICAgICAgICAgIGlm IGVycl9tc2c6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVk aXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVzdHNfYWRtaW4nLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWN0aW9uPQo9M0QnbWFuYWdlX2RhdGFzZXRzJywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9pPQpk PTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1 cz0KPTNEJ2Vycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Cj0zRGVycl9tc2cgKSApCi0gICAgICAg ICAgICBtZXNzYWdlID0zRCB4bWwgJSBkaWN0KCBHQUxBWFlfSE9TVD0zRHRyYW5zLnJlcXVlc3Qu aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUElfS0VZPTNEdHJhbnMu dXNlci5hcGlfa2V5c1swXS5rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg REFUQV9IT1NUPTNEc2NwX2NvbmZpZ3NbICdob3N0JyBdLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERBVEFfVVNFUj0zRHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBdLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEFfUEFTU1dPUkQ9M0RzY3BfY29uZmln c1sgJ3Bhc3N3b3JkJyA9Cl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVR VUVTVF9JRD0zRHN0ciggc2FtcGxlLnJlcXVlc3QuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTQU1QTEVfSUQ9M0RzdHIoIHNhbXBsZS5pZCApLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExJQlJBUllfSUQ9M0RzdHIoIHNhbXBsZS5saWJyYXJ5Lmlk ICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9MREVSX0lEPTNEc3RyKCBz YW1wbGUuZm9sZGVyLmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFU QVNFVFM9M0RkYXRhc2V0X2VsZW0gKQotICAgICAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCBtZXNz YWdlLnJlcGxhY2UoICdcbicsICcnICkucmVwbGFjZSggJ1xyJywgJyc9CiApICkKLSAgICAgICAg cmV0dXJuIG1lc3NhZ2VzCi0gICAgZGVmIF9fdmFsaWRhdGVfZGF0YV90cmFuc2Zlcl9zZXR0aW5n cyggc2VsZiwgdHJhbnMsIHJlcXVlc3RfdHlwZSwgc2NwXz0KY29uZmlncyApOgotICAgICAgICBl cnJfbXNnID0zRCAnJwotICAgICAgICAjIGNoZWNrIHRoZSBleHRlcm5hbCBzZXJ2aWNlIGxvZ2lu IGluZm8KLSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzLmdldCggJ2hvc3QnLCAnJyApIFwKLSAg ICAgICAgICAgIG9yIG5vdCBzY3BfY29uZmlncy5nZXQoICd1c2VyX25hbWUnLCAnJyApIFwKLSAg ICAgICAgICAgIG9yIG5vdCBzY3BfY29uZmlncy5nZXQoICdwYXNzd29yZCcsICcnICk6Ci0gICAg ICAgICAgICBlcnJfbXNnICs9M0QgIkVycm9yIGluIGV4dGVybmFsIHNlcnZpY2UgbG9naW4gaW5m b3JtYXRpb24uICIKLSAgICAgICAgaWYgbm90IHRyYW5zLnVzZXIuYXBpX2tleXM6Ci0gICAgICAg ICAgICBlcnJfbXNnICs9M0QgIlNldCB5b3VyIEFQSSBLZXkgaW4geW91ciBVc2VyIFByZWZlcmVu Y2VzIHRvIHRyYT0KbnNmZXIgZGF0YXNldHMuICIKLSAgICAgICAgIyBDaGVjayBpZiBsaWJyYXJ5 X2ltcG9ydF9kaXIgaXMgc2V0Ci0gICAgICAgIGlmIG5vdCB0cmFucy5hcHAuY29uZmlnLmxpYnJh cnlfaW1wb3J0X2RpcjoKLSAgICAgICAgICAgIGVycl9tc2cgPTNEICInVGhlIGxpYnJhcnlfaW1w b3J0X2Rpcicgc2V0dGluZyBpcyBub3QgY29ycmVjdGx5PQogc2V0IGluIHRoZSBHYWxheHkgY29u ZmlnIGZpbGUuICIKLSAgICAgICAgIyBDaGVjayB0aGUgUmFiYml0TVEgc2VydmVyIHNldHRpbmdz IGluIHRoZSBjb25maWcgZmlsZQotICAgICAgICBmb3IgaywgdiBpbiB0cmFucy5hcHAuY29uZmln LmFtcXAuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIG5vdCB2OgotICAgICAgICAgICAgICAgIGVy cl9tc2cgKz0zRCAnU2V0IFJhYmJpdE1RIHNlcnZlciBzZXR0aW5ncyBpbiB0aGUgImdhbGF4eV89 CmFtcXAiIHNlY3Rpb24gb2YgdGhlIEdhbGF4eSBjb25maWcgZmlsZSwgc3BlY2lmaWNhbGx5ICIl cyIgaXMgbm90IHNldC4nICUgawotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHJldHVy biBlcnJfbXNnCiAgICAgQHdlYi5leHBvc2UKICAgICBAd2ViLnJlcXVpcmVfYWRtaW4KICAgICBk ZWYgaW5pdGlhdGVfZGF0YV90cmFuc2Zlciggc2VsZiwgdHJhbnMsIHNhbXBsZV9pZCwgc2FtcGxl X2RhdGFzZXRzPTNEPQpbXSwgc2FtcGxlX2RhdGFzZXRfaWQ9M0QnJyApOgpAQCAtNjg2LDM1ICs0 MjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAgICAgICAgICAgIGV4dGVybmFsX3Nl cnZpY2U9M0RleHRlcm5hbF9zZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAgICAg ICAgICAgIGV4dGVybmFsX3NlcnZpY2VfdHlwZT0zRGV4dGVybmFsX3NlcnZpY2VfdHlwZSApCiAg ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFRPRE86IFVzaW5nIFJhYmJpdE1xIGZvciBub3cs IGJ1dCBlbGltaW5hdGUgdGhpcyBlbnRpcmUgYmxvYz0KayB3aGVuIHdlIHJlcGxhY2UgUmFiYml0 TXEgd2l0aCBHYWxheHkncwotICAgICAgICAgICAgIyBvd24gbWVzc2FnaW5nIGVuZ2luZS4gIFdl J3JlIGhvbGRpbmcgb2ZmIG9uIHVzaW5nIHRoZSBuZXcgd2E9CnkgdG8gdHJhbnNmZXIgZmlsZXMg bWFudWFsbHkgdW50aWwgd2UKLSAgICAgICAgICAgICMgaW1wbGVtZW50IGEgR2FsYXh5LXByb3By aWV0YXJ5IG1lc3NhZ2luZyBlbmdpbmUgYmVjYXVzZSB0aGUgPQpkZWZlcnJlZCBqb2IgcGx1Z2lu cyBjdXJyZW50bHkgcGVyZm9ybQotICAgICAgICAgICAgIyBjb25zdGFudCBkYiBoaXRzIHRvIGNo ZWNrIGZvciBkZWZlcnJlZCBqb2JzIHRoYXQgYXJlIG5vdCBpbiA9CmEgZmluaXNoZWQgc3RhdGUu Ci0gICAgICAgICAgICAjIENyZWF0ZSB0aGUgbWVzc2FnZQotICAgICAgICAgICAgbWVzc2FnZXMg PTNEIHNlbGYuX19jcmVhdGVfZGF0YV90cmFuc2Zlcl9tZXNzYWdlcyggdHJhbnMsIHNhbXA9Cmxl LCBzYW1wbGVfZGF0YXNldHMgKQotICAgICAgICAgICAgIyBTZW5kIHRoZSBtZXNzYWdlcwotICAg ICAgICAgICAgZm9yIHJtcV9tc2cgaW4gbWVzc2FnZXM6Ci0gICAgICAgICAgICAgICAgdHJ5Ogot ICAgICAgICAgICAgICAgICAgICBjb25uID0zRCBhbXFwLkNvbm5lY3Rpb24oIGhvc3Q9M0R0cmFu cy5hcHAuY29uZmlnLmFtcXA9ClsgJ2hvc3QnIF0gKyAiOiIgKyB0cmFucy5hcHAuY29uZmlnLmFt cXBbICdwb3J0JyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1c2VyaWQ9M0R0cmFucy5hcHAuY29uZmlnLmFtcXA9ClsgJ3VzZXJpZCcgXSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9M0R0cmFucy5hcHAu Y29uZmlnLmFtPQpxcFsgJ3Bhc3N3b3JkJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2aXJ0dWFsX2hvc3Q9M0R0cmFucy5hcHAuY29uZmk9CmcuYW1xcFsg J3ZpcnR1YWxfaG9zdCcgXSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbiA9M0QgY29ubi5jaGFu bmVsKCkKLSAgICAgICAgICAgICAgICAgICAgbXNnID0zRCBhbXFwLk1lc3NhZ2UoIHJtcV9tc2cs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPTNE J3RleHQvcGxhaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFw cGxpY2F0aW9uX2hlYWRlcnM9M0R7ICdtc2dfdHlwZSc9CjogJ2RhdGFfdHJhbnNmZXInIH0gKQot ICAgICAgICAgICAgICAgICAgICBtc2cucHJvcGVydGllc1sgImRlbGl2ZXJ5X21vZGUiIF0gPTNE IDIKLSAgICAgICAgICAgICAgICAgICAgY2hhbi5iYXNpY19wdWJsaXNoKCBtc2csCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2U9M0R0cmFucy5hcHAuY29u ZmlnLmFtcXBbID0KJ2V4Y2hhbmdlJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJvdXRpbmdfa2V5PTNEdHJhbnMuYXBwLmNvbmZpZy5hbXE9CnBbICdyb3V0aW5n X2tleScgXSApCi0gICAgICAgICAgICAgICAgICAgIGNoYW4uY2xvc2UoKQotICAgICAgICAgICAg ICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBl OgotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAiRXJyb3Igc2VuZGluZyB0aGUgZGF0 YSB0cmFuc2ZlciBtZXNzYWdlIHQ9Cm8gdGhlIEdhbGF4eSBBTVFQIG1lc3NhZ2UgcXVldWU6PGJy Lz4lcyIgJSBzdHIoZSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0zRCAiZXJyb3IiCi0g ICAgICAgICAgICBpZiBub3QgbWVzc2FnZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAi JWkgZGF0YXNldHMgaGF2ZSBiZWVuIHF1ZXVlZCBmb3IgdHJhbnNmZXIgZnJvPQptIHRoZSBleHRl cm5hbCBzZXJ2aWNlLiIgJSBsZW4oIHNhbXBsZV9kYXRhc2V0cyApCi0gICAgICAgICAgICAgICAg c3RhdHVzID0zRCAiZG9uZSIKKyAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJNZXNzYWdlIHF1ZXVl IHRyYW5zZmVyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQsIHBsPQplYXNlIHNldCBlbmFibGVfYmV0 YV9qb2JfbWFuYWdlcnMgPTNEIFRydWUgaW4gZ2FsYXh5LmluaSIKKyAgICAgICAgICAgIHN0YXR1 cyA9M0QgImVycm9yIgogICAgICAgICByZXR1cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVj dCggd2ViLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmU9CnF1ZXN0c19hZG1pbicsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u PTNEJ21hbmFnZT0KX2RhdGFzZXRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWQ9M0R0cmFuPQpzLnNlY3VyaXR5LmVu Y29kZV9pZCggc2FtcGxlLmlkICksCgpkaWZmIC1yIGViMTNkMTgyMDFmYmJmODMxOWZiMmIxYzAz YTI3MmViNTUxYjdkMjYgLXIgYTk0YjNhOTdlZDdhZTY2NzJjOWIxZGM9Cjg3OTIyZjdlOWYyYTcw ODYwIGxpYi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQvY29udHJvbGxlcnMvcmVwb3NpdG9yeS5w eQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL2NvbnRyb2xsZXJzL3JlcG9zaXRv cnkucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9jb250cm9sbGVycy9yZXBv c2l0b3J5LnB5CkBAIC0xNjI5LDExICsxNjI5LDExIEBACiAgICAgICAgIHJldHVybiAnJwo9MjAK ICAgICBAd2ViLmpzb24KLSAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNlbGYsIHRyYW5zLCBm aWxlX3BhdGggKToKKyAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNlbGYsIHRyYW5zLCBmaWxl X3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAgICAgIyBBdm9pZCBjYWNoaW5nCiAgICAgICAg IHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2FjaGUnCiAgICAgICAg IHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0gICAgICAgIHJldHVy biBzdWMuZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggZmlsZV9wYXRoICkKKyAgICAgICAg cmV0dXJuIHN1Yy5nZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCB0cmFucy5hcHAsIGZpbGVf cGF0aCwgcmVwPQpvc2l0b3J5X2lkICkKPTIwCiAgICAgQHdlYi5leHBvc2UKICAgICBkZWYgZ2V0 X2Z1bmN0aW9uYWxfdGVzdF9yc3MoIHNlbGYsIHRyYW5zLCAqKmt3ZCApOgpAQCAtMjYwMCwxMSAr MjYwMCwxMSBAQAogICAgICAgICByZXR1cm4gJycKPTIwCiAgICAgQHdlYi5qc29uCi0gICAgZGVm IG9wZW5fZm9sZGVyKCBzZWxmLCB0cmFucywgZm9sZGVyX3BhdGggKToKKyAgICBkZWYgb3Blbl9m b2xkZXIoIHNlbGYsIHRyYW5zLCBmb2xkZXJfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgogICAgICAg ICAjIEF2b2lkIGNhY2hpbmcKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJhZ21h J10gPTNEICduby1jYWNoZScKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhwaXJl cyddID0zRCAnMCcKLSAgICAgICAgcmV0dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9s ZGVyKCBmb2xkZXJfcGF0aCApCisgICAgICAgIHJldHVybiBzdWMub3Blbl9yZXBvc2l0b3J5X2Zp bGVzX2ZvbGRlciggdHJhbnMuYXBwLCBmb2xkZXJfcGF0aCwgcj0KZXBvc2l0b3J5X2lkICkKPTIw CiAgICAgQHdlYi5leHBvc2UKICAgICBkZWYgcHJldmlld190b29sc19pbl9jaGFuZ2VzZXQoIHNl bGYsIHRyYW5zLCByZXBvc2l0b3J5X2lkLCAqKmt3ZCApOgoKZGlmZiAtciBlYjEzZDE4MjAxZmJi ZjgzMTlmYjJiMWMwM2EyNzJlYjU1MWI3ZDI2IC1yIGE5NGIzYTk3ZWQ3YWU2NjcyYzliMWRjPQo4 NzkyMmY3ZTlmMmE3MDg2MCBsaWIvdG9vbF9zaGVkL3Rvb2xzL3Rvb2xfdmVyc2lvbl9tYW5hZ2Vy LnB5Ci0tLSBhL2xpYi90b29sX3NoZWQvdG9vbHMvdG9vbF92ZXJzaW9uX21hbmFnZXIucHkKKysr IGIvbGliL3Rvb2xfc2hlZC90b29scy90b29sX3ZlcnNpb25fbWFuYWdlci5weQpAQCAtMSw3ICsx LDggQEAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKPTIwCi1mcm9tIGdhbGF4eS5tb2RlbC5v cm0gaW1wb3J0IGFuZF8KK2Zyb20gZ2FsYXh5IGltcG9ydCBlZ2dzCitlZ2dzLnJlcXVpcmUoJ1NR TEFsY2hlbXknKQorZnJvbSBzcWxhbGNoZW15IGltcG9ydCBhbmRfLCBvcl8KPTIwCiBmcm9tIHRv b2xfc2hlZC51dGlsIGltcG9ydCBoZ191dGlsCiBmcm9tIHRvb2xfc2hlZC51dGlsIGltcG9ydCBz aGVkX3V0aWxfY29tbW9uIGFzIHN1YwpAQCAtMjIsOCArMjMsOCBAQAo9MjAKICAgICBkZWYgZ2V0 X3Rvb2xfdmVyc2lvbl9hc3NvY2lhdGlvbiggc2VsZiwgcGFyZW50X3Rvb2xfdmVyc2lvbiwgdG9v bF92ZXJzPQppb24gKToKICAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBhIFRvb2xWZXJzaW9u QXNzb2NpYXRpb24gaWYgb25lIGV4aXN0cyB0aGF0IGFzc29jaWF0ZXMgdGhlID0KdHdvIHJlY2Vp dmVkCi0gICAgICAgIHRvb2xfdmVyc2lvbnMgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkg ZnJvbSBHYWxheHkuCisgICAgICAgIFJldHVybiBhIFRvb2xWZXJzaW9uQXNzb2NpYXRpb24gaWYg b25lIGV4aXN0cyB0aGF0IGFzc29jaWF0ZXMgdGhlID0KdHdvCisgICAgICAgIHJlY2VpdmVkIHRv b2xfdmVyc2lvbnMuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgZnJvbSBHYWxheHkuCiAg ICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0zRCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLmNv bnRleHQKICAgICAgICAgcmV0dXJuIGNvbnRleHQucXVlcnkoIHNlbGYuYXBwLmluc3RhbGxfbW9k ZWwuVG9vbFZlcnNpb25Bc3NvY2lhdGlvPQpuICkgXApAQCAtOTEsNiArOTIsMTYgQEAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv b2xfc2hlZF9yZXBvPQpzaXRvcnk9M0R0b29sX3NoZWRfcmVwb3NpdG9yeSApCiAgICAgICAgICAg ICAgICAgICAgIGNvbnRleHQuYWRkKCB0b29sX3ZlcnNpb25fdXNpbmdfcGFyZW50X2lkICkKICAg ICAgICAgICAgICAgICAgICAgY29udGV4dC5mbHVzaCgpCisgICAgICAgICAgICAgICAgIyBSZW1v dmUgZXhpc3Rpbmcgd3JvbmcgdG9vbCB2ZXJzaW9uIGFzc29jaWF0aW9ucyBoYXZpbmcKKyAgICAg ICAgICAgICAgICAjIHRvb2xfdmVyc2lvbl91c2luZ19wYXJlbnRfaWQgYXMgcGFyZW50IG9yCisg ICAgICAgICAgICAgICAgIyB0b29sX3ZlcnNpb25fdXNpbmdfdG9vbF9ndWlkIGFzIGNoaWxkLgor ICAgICAgICAgICAgICAgIGNvbnRleHQucXVlcnkoIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwuVG9v bFZlcnNpb25Bc3NvY2lhdGk9Cm9uICkgXAorICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVy KCBvcl8oIGFuZF8oIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwuVG9vbFZlcnM9CmlvbkFzc29jaWF0 aW9uLnRhYmxlLmMucGFyZW50X2lkID0zRD0zRCB0b29sX3ZlcnNpb25fdXNpbmdfcGFyZW50X2lk LmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBw Lmluc3RhbGxfbW9kZWwuVG9vbFZlcnM9CmlvbkFzc29jaWF0aW9uLnRhYmxlLmMudG9vbF9pZCAh PTNEIHRvb2xfdmVyc2lvbl91c2luZ190b29sX2d1aWQuaWQgKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhbmRfKCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xWZXJz PQppb25Bc3NvY2lhdGlvbi50YWJsZS5jLnBhcmVudF9pZCAhPTNEIHRvb2xfdmVyc2lvbl91c2lu Z19wYXJlbnRfaWQuaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5Ub29sVmVycz0KaW9uQXNzb2NpYXRpb24udGFibGUu Yy50b29sX2lkID0zRD0zRCB0b29sX3ZlcnNpb25fdXNpbmdfdG9vbF9ndWlkLmlkICkgKSApPQog XAorICAgICAgICAgICAgICAgICAgICAgICAuZGVsZXRlKCkKKyAgICAgICAgICAgICAgICBjb250 ZXh0LmZsdXNoKCkKICAgICAgICAgICAgICAgICB0b29sX3ZlcnNpb25fYXNzb2NpYXRpb24gPTNE IFwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRfdG9vbF92ZXJzaW9uX2Fzc29jaWF0aW9u KCB0b29sX3ZlcnNpb25fdXNpbmdfPQpwYXJlbnRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbF92ZXJzaW9uX3VzaW5nXz0KdG9v bF9ndWlkICkKCmRpZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5ZmIyYjFjMDNhMjcyZWI1NTFiN2Qy NiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJmN2U5ZjJhNzA4NjAgbGliL3Rvb2xf c2hlZC91dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKLS0tIGEvbGliL3Rvb2xfc2hlZC91dGlsL3No ZWRfdXRpbF9jb21tb24ucHkKKysrIGIvbGliL3Rvb2xfc2hlZC91dGlsL3NoZWRfdXRpbF9jb21t b24ucHkKQEAgLTUwOSw5ICs1MDksMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPQogICAgICAgICAg ICAgICBjaGFuZ2VzZXRfcmV2aXNpb249M0R0ZXh0ICkKICAgICByZXR1cm4gcmVwb3NpdG9yeQo9 MjAKLWRlZiBnZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCBmaWxlX3BhdGggKToKK2RlZiBn ZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCBhcHAsIGZpbGVfcGF0aCwgcmVwb3NpdG9yeV9p ZCApOgogICAgICIiIlJldHVybiB0aGUgZGlzcGxheS1zYWZlIGNvbnRlbnRzIG9mIGEgcmVwb3Np dG9yeSBmaWxlIGZvciBkaXNwbGF5IGk9Cm4gYSBicm93c2VyLiIiIgotICAgIGlmIGNoZWNrZXJz LmlzX2d6aXAoIGZpbGVfcGF0aCApOgorICAgIHNhZmVfc3RyID0zRCAnJworICAgIGlmIG5vdCBp c19wYXRoX3dpdGhpbl9yZXBvKCBhcHAsIGZpbGVfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgorICAg ICAgICBsb2cud2FybmluZyggJ1JlcXVlc3QgdHJpZXMgdG8gYWNjZXNzIGEgZmlsZSBvdXRzaWRl IG9mIHRoZSByZXBvc2k9CnRvcnkgbG9jYXRpb24uIEZpbGUgcGF0aDogJXMnLCBmaWxlX3BhdGgg KQorICAgICAgICByZXR1cm4gJ0ludmFsaWQgZmlsZSBwYXRoJworICAgICMgU3ltbGluayB0YXJn ZXRzIGFyZSBjaGVja2VkIGJ5IGlzX3BhdGhfd2l0aGluX3JlcG8KKyAgICBpZiBvcy5wYXRoLmlz bGluayggZmlsZV9wYXRoICk6CisgICAgICAgIHNhZmVfc3RyID0zRCAnbGluayB0bzogJyArIGJh c2ljX3V0aWwudG9faHRtbF9zdHJpbmcoIG9zLnJlYWRsaW5rKD0KIGZpbGVfcGF0aCApICkKKyAg ICAgICAgcmV0dXJuIHNhZmVfc3RyCisgICAgZWxpZiBjaGVja2Vycy5pc19nemlwKCBmaWxlX3Bh dGggKToKICAgICAgICAgcmV0dXJuICc8YnIvPmd6aXAgY29tcHJlc3NlZCBmaWxlPGJyLz4nCiAg ICAgZWxpZiBjaGVja2Vycy5pc19iejIoIGZpbGVfcGF0aCApOgogICAgICAgICByZXR1cm4gJzxi ci8+YnoyIGNvbXByZXNzZWQgZmlsZTxici8+JwpAQCAtNTIwLDcgKzUyOCw2IEBACiAgICAgZWxp ZiBjaGVja2Vycy5jaGVja19iaW5hcnkoIGZpbGVfcGF0aCApOgogICAgICAgICByZXR1cm4gJzxi ci8+QmluYXJ5IGZpbGU8YnIvPicKICAgICBlbHNlOgotICAgICAgICBzYWZlX3N0ciA9M0QgJycK ICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKCBvcGVuKCBmaWxlX3BhdGggKSApOgog ICAgICAgICAgICAgc2FmZV9zdHIgPTNEICclcyVzJyAlICggc2FmZV9zdHIsIGJhc2ljX3V0aWwu dG9faHRtbF9zdHJpbmcoIGw9CmluZSApICkKICAgICAgICAgICAgICMgU3RvcCByZWFkaW5nIGFm dGVyIHN0cmluZyBpcyBsYXJnZXIgdGhhbiBNQVhfQ09OVEVOVF9TSVpFLgpAQCAtNTMwLDYgKzUz Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIHV0aWwubmljZV9zaXplKCBNQVhfQ09OVEVOVF9T SVpFICkKICAgICAgICAgICAgICAgICBzYWZlX3N0ciA9M0QgJyVzJXMnICUgKCBzYWZlX3N0ciwg bGFyZ2Vfc3RyICkKICAgICAgICAgICAgICAgICBicmVhaworCiAgICAgICAgIGlmIGxlbiggc2Fm ZV9zdHIgKSA+IGJhc2ljX3V0aWwuTUFYX0RJU1BMQVlfU0laRToKICAgICAgICAgICAgICMgRWxp bWluYXRlIHRoZSBtaWRkbGUgb2YgdGhlIGZpbGUgdG8gZGlzcGxheSBhIGZpbGUgbm8gbGFyZ2Vy PQogdGhhbiBiYXNpY191dGlsLk1BWF9ESVNQTEFZX1NJWkUuCiAgICAgICAgICAgICAjIFRoaXMg bWF5IG5vdCBiZSBpZGVhbCBpZiB0aGUgZmlsZSBpcyBsYXJnZXIgdGhhbiBNQVhfQ09OVEVOVD0K X1NJWkUuCkBAIC01NTAsOSArNTU4LDYgQEAKICAgICAgICAgIyBTa2lwIC5oZyBkaXJlY3Rvcmll cwogICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoICcuaGcnICk6CiAgICAgICAgICAgICBjb250 aW51ZQotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKCBvcy5wYXRoLmpvaW4oIGZvbGRlcl9wYXRo LCBpdGVtICkgKToKLSAgICAgICAgICAgICMgQXBwZW5kIGEgJy8nIGNoYXJhY3RlciBzbyB0aGF0 IG91ciBqcXVlcnkgZHluYXRyZWUgd2lsbCBmdW5jPQp0aW9uIHByb3Blcmx5LgotICAgICAgICAg ICAgaXRlbSA9M0QgJyVzLycgJSBpdGVtCiAgICAgICAgIGNvbnRlbnRzLmFwcGVuZCggaXRlbSAp CiAgICAgaWYgY29udGVudHM6CiAgICAgICAgIGNvbnRlbnRzLnNvcnQoKQpAQCAtMTAwOCwxMSAr MTAxMywxNSBAQAogICAgICIiIgogICAgIHJldHVybiBoYXNhdHRyKCBhcHAsICJpbnN0YWxsX21v ZGVsIiApCj0yMAotZGVmIG9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIGZvbGRlcl9wYXRo ICk6CitkZWYgb3Blbl9yZXBvc2l0b3J5X2ZpbGVzX2ZvbGRlciggYXBwLCBmb2xkZXJfcGF0aCwg cmVwb3NpdG9yeV9pZCApOgogICAgICIiIgogICAgIFJldHVybiBhIGxpc3Qgb2YgZGljdGlvbmFy aWVzLCBlYWNoIG9mIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGZvciA9CmEgZmlsZSBvciBk aXJlY3RvcnkgY29udGFpbmVkCiAgICAgd2l0aGluIGEgZGlyZWN0b3J5IGluIGEgcmVwb3NpdG9y eSBmaWxlIGhpZXJhcmNoeS4KICAgICAiIiIKKyAgICAjIFN5bWxpbmsgdGFyZ2V0cyBhcmUgY2hl Y2tlZCBieSBpc19wYXRoX3dpdGhpbl9yZXBvCisgICAgaWYgbm90IGlzX3BhdGhfd2l0aGluX3Jl cG8oIGFwcCwgZm9sZGVyX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKKyAgICAgICAgbG9nLndhcm5p bmcoICdSZXF1ZXN0IHRyaWVzIHRvIGFjY2VzcyBhIGZvbGRlciBvdXRzaWRlIG9mIHRoZSByZXBv PQpzaXRvcnkgbG9jYXRpb24uIEZvbGRlciBwYXRoOiAlcycsIGZvbGRlcl9wYXRoICkKKyAgICAg ICAgcmV0dXJuIFtdCiAgICAgdHJ5OgogICAgICAgICBmaWxlc19saXN0ID0zRCBnZXRfcmVwb3Np dG9yeV9maWxlcyggZm9sZGVyX3BhdGggKQogICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgpAQCAtMTAy MiwxMCArMTAzMSwxNyBAQAogICAgIGZvbGRlcl9jb250ZW50cyA9M0QgW10KICAgICBmb3IgZmls ZW5hbWUgaW4gZmlsZXNfbGlzdDoKICAgICAgICAgaXNfZm9sZGVyID0zRCBGYWxzZQotICAgICAg ICBpZiBmaWxlbmFtZSBhbmQgZmlsZW5hbWVbIC0xIF0gPTNEPTNEIG9zLnNlcDoKLSAgICAgICAg ICAgIGlzX2ZvbGRlciA9M0QgVHJ1ZQorICAgICAgICBmdWxsX3BhdGggPTNEIG9zLnBhdGguam9p biggZm9sZGVyX3BhdGgsIGZpbGVuYW1lICkKKyAgICAgICAgaXNfbGluayA9M0Qgb3MucGF0aC5p c2xpbmsoIGZ1bGxfcGF0aCApCisgICAgICAgIHBhdGhfaXNfd2l0aGluX3JlcG8gPTNEIGlzX3Bh dGhfd2l0aGluX3JlcG8oIGFwcCwgZnVsbF9wYXRoLCByZXBvcz0KaXRvcnlfaWQgKQorICAgICAg ICBpZiBpc19saW5rIGFuZCBub3QgcGF0aF9pc193aXRoaW5fcmVwbzoKKyAgICAgICAgICAgIGxv Zy53YXJuaW5nKCAnVmFsaWQgZm9sZGVyIGNvbnRhaW5zIGEgc3ltbGluayBvdXRzaWRlIG9mIHRo ZSByPQplcG9zaXRvcnkgbG9jYXRpb24uIExpbmsgZm91bmQgaW46ICcgKyBzdHIoIGZ1bGxfcGF0 aCApICkKICAgICAgICAgaWYgZmlsZW5hbWU6Ci0gICAgICAgICAgICBmdWxsX3BhdGggPTNEIG9z LnBhdGguam9pbiggZm9sZGVyX3BhdGgsIGZpbGVuYW1lICkKKyAgICAgICAgICAgIGlmIG9zLnBh dGguaXNkaXIoIGZ1bGxfcGF0aCApIGFuZCBwYXRoX2lzX3dpdGhpbl9yZXBvOgorICAgICAgICAg ICAgICAgICMgQXBwZW5kIGEgJy8nIGNoYXJhY3RlciBzbyB0aGF0IG91ciBqcXVlcnkgZHluYXRy ZWUgd2lsbCA9CmZ1bmN0aW9uIHByb3Blcmx5LgorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0z RCAnJXMvJyAlIGZpbGVuYW1lCisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0zRCAnJXMvJyAl IGZ1bGxfcGF0aAorICAgICAgICAgICAgICAgIGlzX2ZvbGRlciA9M0QgVHJ1ZQogICAgICAgICAg ICAgbm9kZSA9M0QgeyAidGl0bGUiIDogZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAi aXNGb2xkZXIiIDogaXNfZm9sZGVyLAogICAgICAgICAgICAgICAgICAgICAgImlzTGF6eSIgOiBp c19mb2xkZXIsCkBAIC0xMDM0LDYgKzEwNTAsMTYgQEAKICAgICAgICAgICAgIGZvbGRlcl9jb250 ZW50cy5hcHBlbmQoIG5vZGUgKQogICAgIHJldHVybiBmb2xkZXJfY29udGVudHMKPTIwCitkZWYg aXNfcGF0aF93aXRoaW5fcmVwbyggYXBwLCBwYXRoLCByZXBvc2l0b3J5X2lkICk6CisgICAgIiIi CisgICAgRGV0ZWN0IHdoZXRoZXIgdGhlIGdpdmVuIHBhdGggaXMgd2l0aGluIHRoZSByZXBvc2l0 b3J5IGZvbGRlIHJvbiB0aGUgZD0KaXNrLgorICAgIFVzZSB0byBmaWx0ZXIgbWFsaWNpb3VzIHN5 bWxpbmtzIHRhcmdldGluZyBvdXRzaWRlIHBhdGhzLgorICAgICIiIgorICAgIHJlcG9fcGF0aCA9 M0Qgb3MucGF0aC5hYnNwYXRoKCBnZXRfcmVwb3NpdG9yeV9ieV9pZCggYXBwLCByZXBvc2l0b3J5 X2k9CmQgKS5yZXBvX3BhdGgoIGFwcCApICkKKyAgICByZXNvbHZlZF9wYXRoID0zRCBvcy5wYXRo LnJlYWxwYXRoKCBwYXRoICkKKyAgICByZXR1cm4gb3MucGF0aC5jb21tb25wcmVmaXgoIFsgcmVw b19wYXRoLCByZXNvbHZlZF9wYXRoIF0gKSA9M0Q9M0QgcmVwPQpvX3BhdGgKKworCiBkZWYgcmVw b3NpdG9yeV93YXNfcHJldmlvdXNseV9pbnN0YWxsZWQoIGFwcCwgdG9vbF9zaGVkX3VybCwgcmVw b3NpdG9yeV9uYT0KbWUsIHJlcG9faW5mb190dXBsZSwgZnJvbV90aXA9M0RGYWxzZSApOgogICAg ICIiIgogICAgIEZpbmQgb3V0IGlmIGEgcmVwb3NpdG9yeSBpcyBhbHJlYWR5IGluc3RhbGxlZCBp bnRvIEdhbGF4eSAtIHRoZXJlIGFyZSA9CnNldmVyYWwgc2NlbmFyaW9zIHdoZXJlIHRoaXMKCmRp ZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5ZmIyYjFjMDNhMjcyZWI1NTFiN2QyNiAtciBhOTRiM2E5 N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJmN2U5ZjJhNzA4NjAgdGVtcGxhdGVzL2FkbWluL3JlcXVl c3RzL3NlbGVjdF9kYXRhc2V0c190b190cmFuc2Zlci5tYWtvCi0tLSBhL3RlbXBsYXRlcy9hZG1p bi9yZXF1ZXN0cy9zZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXIubWFrbworKysgL2Rldi9udWxs CkBAIC0xLDE0OSArMCwwIEBACi08JWluaGVyaXQgZmlsZT0zRCIvYmFzZS5tYWtvIi8+Ci08JW5h bWVzcGFjZSBmaWxlPTNEIi9tZXNzYWdlLm1ha28iIGltcG9ydD0zRCJyZW5kZXJfbXNnIiAvPgot PCVuYW1lc3BhY2UgZmlsZT0zRCIvcmVxdWVzdHMvY29tbW9uL2NvbW1vbi5tYWtvIiBpbXBvcnQ9 M0QicmVuZGVyX3NhbXBsZV89CmRhdGFzZXRzIiAvPgotPCVuYW1lc3BhY2UgZmlsZT0zRCIvcmVx dWVzdHMvY29tbW9uL2NvbW1vbi5tYWtvIiBpbXBvcnQ9M0QiY29tbW9uX2phdmFzY3I9CmlwdHMi IC8+Ci0KLTwlZGVmIG5hbWU9M0QiamF2YXNjcmlwdHMoKSI+Ci0gICAke3BhcmVudC5qYXZhc2Ny aXB0cygpfQotICAgJHtjb21tb25famF2YXNjcmlwdHMoKX0KLTwvJWRlZj4KLQotJHtoLmpzKCAi bGlicy9qcXVlcnkvanF1ZXJ5LXVpIiwgImxpYnMvanF1ZXJ5L2pxdWVyeS5jb29raWUiLCAibGli cy9qcXVlcnk9Ci9qcXVlcnkuZHluYXRyZWUiICl9Ci0ke2guY3NzKCAiZHluYXRyZWVfc2tpbi91 aS5keW5hdHJlZSIgKX0KLQotPHNjcmlwdCB0eXBlPTNEInRleHQvamF2YXNjcmlwdCI+Ci0gICAg JChmdW5jdGlvbigpewotICAgICAgICAkKCIjdHJlZSIpLmFqYXhDb21wbGV0ZShmdW5jdGlvbihl dmVudCwgWE1MSHR0cFJlcXVlc3QsIGFqYXhPcHRpb249CnMpIHsKLSAgICAgICAgICAgIF9sb2co ImRlYnVnIiwgImFqYXhDb21wbGV0ZTogJW8iLCB0aGlzKTsgLy8gZG9tIGVsZW1lbnQgbGlzdGVu PQppbmcKLSAgICAgICAgfSk7Ci0gICAgICAgIC8vIC0tLSBJbml0aWFsaXplIHNhbXBsZSB0cmVl cwotICAgICAgICAkKCIjdHJlZSIpLmR5bmF0cmVlKHsKLSAgICAgICAgICAgIHRpdGxlOiAiJHtz Y3BfY29uZmlnc1snZGF0YV9sb2NhdGlvbiddfSIsCi0gICAgICAgICAgICByb290VmlzaWJsZTog dHJ1ZSwKLSAgICAgICAgICAgIG1pbkV4cGFuZExldmVsOiAwLCAvLyAxOiByb290IG5vZGUgaXMg bm90IGNvbGxhcHNpYmxlCi0gICAgICAgICAgICBwZXJzaXN0OiBmYWxzZSwKLSAgICAgICAgICAg IGNoZWNrYm94OiB0cnVlLAotICAgICAgICAgICAgc2VsZWN0TW9kZTogMywKLSAgICAgICAgICAg IG9uUG9zdEluaXQ6IGZ1bmN0aW9uKGlzUmVsb2FkaW5nLCBpc0Vycm9yKSB7Ci0gICAgICAgICAg ICAgICAgLy9hbGVydCgicmVsb2FkaW5nOiAiK2lzUmVsb2FkaW5nKyIsIGVycm9yOiIraXNFcnJv cik7Ci0gICAgICAgICAgICAgICAgbG9nTXNnKCJvblBvc3RJbml0KCVvLCAlbykgLSAlbyIsIGlz UmVsb2FkaW5nLCBpc0Vycm9yLCB0aD0KaXMpOwotICAgICAgICAgICAgICAgIC8vIFJlLWZpcmUg b25BY3RpdmF0ZSwgc28gdGhlIHRleHQgaXMgdXBkYXRlZAotICAgICAgICAgICAgICAgIHRoaXMu cmVhY3RpdmF0ZSgpOwotICAgICAgICAgICAgfSw9MjAKLSAgICAgICAgICAgIGZ4OiB7IGhlaWdo dDogInRvZ2dsZSIsIGR1cmF0aW9uOiAyMDAgfSwKLSAgICAgICAgICAgIC8vIGluaXRBamF4IGlz IGhhcmQgdG8gZmFrZSwgc28gd2UgcGFzcyB0aGUgY2hpbGRyZW4gYXMgb2JqZWN0PQogYXJyYXk6 Ci0gICAgICAgICAgICBpbml0QWpheDoge3VybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNE J3JlcXVlc3RzX2FkbWluJywgYT0KY3Rpb249M0Qnb3Blbl9mb2xkZXInICl9IiwKLSAgICAgICAg ICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiw9MjAKLSAgICAgICAgICAgICAgICAgICAg ICAgZGF0YTogeyByZXF1ZXN0X2lkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlPQpx dWVzdC5pZCApfSIsIGV4dGVybmFsX3NlcnZpY2VfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29k ZV9pZCggZXh0ZXJuYWxfc2U9CnJ2aWNlLmlkICl9Iiwga2V5OiAiJHtzY3BfY29uZmlnc1snZGF0 YV9sb2NhdGlvbiddfSIgfSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBvbkxhenlSZWFk OiBmdW5jdGlvbihkdG5vZGUpewotICAgICAgICAgICAgICAgIGR0bm9kZS5hcHBlbmRBamF4KHsK LSAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVx dWVzdHNfYWRtaW4nLCBhY3RpPQpvbj0zRCdvcGVuX2ZvbGRlcicgKX0iLD0yMAotICAgICAgICAg ICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAotICAgICAgICAgICAgICAgICAgICBkYXRhOiB7 IHJlcXVlc3RfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggcmVxdWU9CnN0LmlkICl9 IiwgZXh0ZXJuYWxfc2VydmljZV9pZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBleHRl cm5hbF9zZXJ2aT0KY2UuaWQgKX0iLCBrZXk6IGR0bm9kZS5kYXRhLmtleSB9LAotICAgICAgICAg ICAgICAgIH0pOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIG9uU2VsZWN0OiBmdW5jdGlv bihzZWxlY3QsIGR0bm9kZSkgewotICAgICAgICAgICAgICAgIC8vIERpc3BsYXkgbGlzdCBvZiBz ZWxlY3RlZCBub2RlcwotICAgICAgICAgICAgICAgIHZhciBzZWxOb2RlcyA9M0QgZHRub2RlLnRy ZWUuZ2V0U2VsZWN0ZWROb2RlcygpOwotICAgICAgICAgICAgICAgIC8vIGNvbnZlcnQgdG8gdGl0 bGUva2V5IGFycmF5Ci0gICAgICAgICAgICAgICAgdmFyIHNlbEtleXMgPTNEICQubWFwKHNlbE5v ZGVzLCBmdW5jdGlvbihub2RlKXsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuZGF0 YS5rZXk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQuc2Vs ZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyLnNlbGVjdGVkX2RhdGFzZXRzX3RvXz0KdHJhbnNmZXIu dmFsdWUgPTNEIHNlbEtleXMuam9pbigiLCIpCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAg b25BY3RpdmF0ZTogZnVuY3Rpb24oZHRub2RlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGNlbGwg PTNEICQoIiNmaWxlX2RldGFpbHMiKTsKLSAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRfdmFs dWU7Ci0gICAgICAgICAgICAgICAgaWYgKGR0bm9kZS5kYXRhLmtleSA9M0Q9M0QgJ3Jvb3QnKSB7 Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkX3ZhbHVlID0zRCAiJHtzY3BfY29uZmlnc1sn ZGF0YV9sb2NhdGlvbiddfS8iOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg ICAgICAgICAgIHNlbGVjdGVkX3ZhbHVlID0zRCBkdG5vZGUuZGF0YS5rZXk7Ci0gICAgICAgICAg ICAgICAgfTsKLSAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRfdmFsdWUuY2hhckF0KHNlbGVj dGVkX3ZhbHVlLmxlbmd0aC0xKSAhPTNEICcvPQonKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v IE1ha2UgYWpheCBjYWxsCi0gICAgICAgICAgICAgICAgICAgICQuYWpheCggewotICAgICAgICAg ICAgICAgICAgICAgICAgdHlwZTogIlBPU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgdXJs OiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVxdWVzdHNfYWRtaW4nLCA9CmFjdGlvbj0z RCdnZXRfZmlsZV9kZXRhaWxzJyApfSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlw ZTogImpzb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyByZXF1ZXN0X2lkOiAi JHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQocmU9CnF1ZXN0LmlkKX0iLCBleHRlcm5hbF9zZXJ2 aWNlX2lkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoZXh0ZXJuYWxfc2Vydj0KaWNlLmlk KX0iLCBmb2xkZXJfcGF0aDogc2VsZWN0ZWRfdmFsdWUgfSwKLSAgICAgICAgICAgICAgICAgICAg ICAgIHN1Y2Nlc3MgOiBmdW5jdGlvbiAoIGRhdGEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2VsbC5odG1sKCAnPGxhYmVsPicrZGF0YSsnPC9sYWJlbD4nICkKLSAgICAgICAgICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAg fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY2VsbC5odG1sKCAnJyApOwotICAgICAgICAg ICAgICAgIH07Ci0gICAgICAgICAgICB9LAotICAgICAgICB9KTsKLSAgICB9KTsKLTwvc2NyaXB0 PgotCi08JQotICAgIGlzX2FkbWluID0zRCBjbnRybGxlciA9M0Q9M0QgJ3JlcXVlc3RzX2FkbWlu JyBhbmQgdHJhbnMudXNlcl9pc19hZG1pbigpCi0gICAgY2FuX3RyYW5zZmVyX2RhdGFzZXRzID0z RCBpc19hZG1pbiBhbmQgc2FtcGxlLnVudHJhbnNmZXJyZWRfZGF0YXNldF9maT0KbGVzIGFuZCBz YW1wbGUubGlicmFyeSBhbmQgc2FtcGxlLmZvbGRlcgotJT4KLQotPGJyLz48YnIvPgotPHVsIGNs YXNzPTNEIm1hbmFnZS10YWJsZS1hY3Rpb25zIj4KLSAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9u LWJ1dHRvbiIgaHJlZj0zRCIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdleHRlPQpybmFsX3Nl cnZpY2UnLCBhY3Rpb249M0Qndmlld19leHRlcm5hbF9zZXJ2aWNlJywgaWQ9M0R0cmFucy5zZWN1 cml0eS5lbmNvZGU9Cl9pZCggZXh0ZXJuYWxfc2VydmljZS5pZCApICl9Ij5FeHRlcm5hbCBzZXJ2 aWNlIGNvbmZpZ3VyYXRpb248L2E+PC9saT4KLSAgICAlaWYgY2FuX3RyYW5zZmVyX2RhdGFzZXRz OgotICAgICAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIke2gudXJs X2ZvciggY29udHJvbGxlcj0zRCc9CnJlcXVlc3RzX2FkbWluJywgYWN0aW9uPTNEJ21hbmFnZV9k YXRhc2V0cycsIGNudHJsbGVyPTNEY250cmxsZXIsIHNhbXBsZV9pZD0KPTNEdHJhbnMuc2VjdXJp dHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSApfSI+VHJhbnNmZXIgZGF0YXNldHM8L2E+PC9saT4K LSAgICAlZW5kaWYKLSAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIk e2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXF1PQplc3RzX2NvbW1vbicsIGFjdGlvbj0zRCd2 aWV3X3JlcXVlc3QnLCBjbnRybGxlcj0zRGNudHJsbGVyLCBpZD0zRHRyYW5zLnNlY3U9CnJpdHku ZW5jb2RlX2lkKCByZXF1ZXN0LmlkICkgKX0iPkJyb3dzZSB0aGlzIHJlcXVlc3Q8L2E+PC9saT4K LTwvdWw+Ci0KLSVpZiBub3Qgc2FtcGxlOgotICAgIDxici8+Ci0gICAgPGZvbnQgY29sb3I9M0Qi cmVkIj48Yj48aT5TZWxlY3QgYSBzYW1wbGUgYmVmb3JlIHNlbGVjdGluZyBkYXRhc2V0cyB0bz0K IHRyYW5zZmVyPC9pPjwvYj48L2ZvbnQ+Ci0gICAgPGJyLz4KLSVlbmRpZgotCi0laWYgcmVxdWVz dC5zYW1wbGVzX3dpdGhvdXRfbGlicmFyeV9kZXN0aW5hdGlvbnM6Ci0gICAgPHA+Ci0gICAgPGZv bnQgY29sb3I9M0QicmVkIj48Yj48aT5TZWxlY3QgYSB0YXJnZXQgZGF0YSBsaWJyYXJ5IGFuZCBm b2xkZXIgZm9yID0KYSBzYW1wbGUgYmVmb3JlIHNlbGVjdGluZyBpdHMgZGF0YXNldHMgdG8gdHJh bnNmZXIgZnJvbSB0aGUgZXh0ZXJuYWwgc2VydmljPQplPC9pPjwvYj48L2ZvbnQ+Ci0gICAgPC9w PgotJWVuZGlmCi0KLSVpZiBtZXNzYWdlOgotICAgICR7cmVuZGVyX21zZyggbWVzc2FnZSwgc3Rh dHVzICl9Ci0lZW5kaWYKLQotPGRpdiBjbGFzcz0zRCJ0b29sRm9ybSI+Ci0gICAgPGRpdiBjbGFz cz0zRCJ0b29sRm9ybVRpdGxlIj5TZWxlY3QgZGF0YXNldHMgdG8gdHJhbnNmZXIgZnJvbSBkYXRh IGRpcj0KZWN0b3J5IGNvbmZpZ3VyZWQgZm9yIHRoZSBleHRlcm5hbCBzZXJ2aWNlPC9kaXY+Ci0g ICAgPGZvcm0gbmFtZT0zRCJzZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXIiIGlkPTNEInNlbGVj dF9kYXRhc2V0c190b190cj0KYW5zZmVyIiBhY3Rpb249M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xs ZXI9M0QncmVxdWVzdHNfYWRtaW4nLCBhY3Rpb249M0Qnc2VsPQplY3RfZGF0YXNldHNfdG9fdHJh bnNmZXInLCBjbnRybGxlcj0zRGNudHJsbGVyLCBleHRlcm5hbF9zZXJ2aWNlX2lkPTNEdHJhbnM9 Ci5zZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2UuaWQgKSwgcmVxdWVzdF9pZD0z RHRyYW5zLnNlY3VyaXR5LmVuYz0Kb2RlX2lkKCByZXF1ZXN0LmlkICkpfSIgbWV0aG9kPTNEInBv c3QiID4KLSAgICAgICAgPGRpdiBjbGFzcz0zRCJmb3JtLXJvdyI+Ci0gICAgICAgICAgICA8bGFi ZWw+U2FtcGxlOjwvbGFiZWw+Ci0gICAgICAgICAgICAke3NhbXBsZV9pZF9zZWxlY3RfZmllbGQu Z2V0X2h0bWwoKX0KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9M0QidG9vbFBhcmFtSGVscCIgc3R5 bGU9M0QiY2xlYXI6IGJvdGg7Ij4KLSAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIHNhbXBsZSB0 aGF0IHdhcyBzZXF1ZW5jZWQgdG8gcHJvZHVjZSB0aGUgZGF0YXNlPQp0cyB5b3Ugd2FudCB0byB0 cmFuc2Zlci4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRp diBjbGFzcz0zRCJmb3JtLXJvdyIgPgotICAgICAgICAgICAgPGxhYmVsPlNlbGVjdCBkYXRhc2V0 cyBmcm9tIHNvdXJjZSBkYXRhIGxvY2F0aW9uIGRlZmluZWQgaW4gdGg9CmUgZXh0ZXJuYWwgc2Vy dmljZSBjb25maWd1cmF0aW9uOjwvbGFiZWw+Ci0gICAgICAgICAgICA8ZGl2IGlkPTNEInRyZWUi ID4KLSAgICAgICAgICAgICAgICBMb2FkaW5nLi4uCi0gICAgICAgICAgICA8L2Rpdj4KLSAgICAg ICAgICAgIDxpbnB1dCBpZD0zRCJzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlciIgbmFtZT0z RCJzZWxlY3RlZF9kPQphdGFzZXRzX3RvX3RyYW5zZmVyIiB0eXBlPTNEImhpZGRlbiIgc2l6ZT0z RDQwIi8+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPTNEInRvb2xQYXJhbUhlbHAiIHN0eWxlPTNE ImNsZWFyOiBib3RoOyI+Ci0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgICAg ICA8bGk+Q2xpY2sgdGhlIDxiPmV4dGVybmFsIHNlcnZpY2UgY29uZmlndXJhdGlvbjwvYj4gYnU9 CnR0b24gYW5kIGNoYW5nZSB0aGUgPGI+RGF0YSBkaXJlY3Rvcnk8L2I+IHNldHRpbmcgdG8gcmVk ZWZpbmUgdGhlIHNvdXJjZSBkYT0KdGEgbG9jYXRpb24uPC9saT4KLSAgICAgICAgICAgICAgICAg ICAgPGxpPlNlbGVjdCBhIGZvbGRlciB0byBzZWxlY3QgYWxsIG9mIHRoZSBpbmRpdmlkdWFsIGZp PQpsZXMgd2l0aGluIHRoYXQgZm9sZGVyLjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT5D bGljayB0aGUgPGI+U2VsZWN0IGRhdGFzZXRzPC9iPiBidXR0b24gd2hlbiBkZXNpcj0KZWQgZGF0 YXNldCBjaGVjayBib3hlcyBhcmUgY2hlY2tlZC48L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+ Ci0gICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgID0yMAotICAgICAgICA8L2Rpdj4KLSAgICAg ICAgPGRpdiBjbGFzcz0zRCJmb3JtLXJvdyI+Ci0gICAgICAgICAgICA8ZGl2IGlkPTNEImZpbGVf ZGV0YWlscyIgY2xhc3M9M0QidG9vbFBhcmFtSGVscCIgc3R5bGU9M0QiY2xlYT0KcjogYm90aDti YWNrZ3JvdW5kLWNvbG9yOiNGQUZBRkE7Ij48L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAg IDxkaXYgY2xhc3M9M0QiZm9ybS1yb3ciPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9M0Qic3Vi bWl0IiBuYW1lPTNEInNlbGVjdF9kYXRhc2V0c190b190cmFuc2Zlcl9idXQ9CnRvbiIgdmFsdWU9 M0QiU2VsZWN0IGRhdGFzZXRzIi8+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZm9ybT4KLTwvZGl2 PgotCi0laWYgc2FtcGxlIGFuZCBzYW1wbGUuZGF0YXNldHM6Ci0gICAgPCUgdGl0bGUgPTNEICdB bGwgc2VsZWN0ZWQgZGF0YXNldHMgZm9yICIlcyInICUgc2FtcGxlLm5hbWUgJT4KLSAgICA8cC8+ Ci0gICAgJHtyZW5kZXJfc2FtcGxlX2RhdGFzZXRzKCAncmVxdWVzdHNfYWRtaW4nLCBzYW1wbGUs IHNhbXBsZS5kYXRhc2V0cywgdD0KaXRsZSApfQotJWVuZGlmCgpkaWZmIC1yIGViMTNkMTgyMDFm YmJmODMxOWZiMmIxYzAzYTI3MmViNTUxYjdkMjYgLXIgYTk0YjNhOTdlZDdhZTY2NzJjOWIxZGM9 Cjg3OTIyZjdlOWYyYTcwODYwIHRlbXBsYXRlcy9hZG1pbi90b29sX3NoZWRfcmVwb3NpdG9yeS9j b21tb24ubWFrbwotLS0gYS90ZW1wbGF0ZXMvYWRtaW4vdG9vbF9zaGVkX3JlcG9zaXRvcnkvY29t bW9uLm1ha28KKysrIGIvdGVtcGxhdGVzL2FkbWluL3Rvb2xfc2hlZF9yZXBvc2l0b3J5L2NvbW1v bi5tYWtvCkBAIC0yMywxNCArMjMsMTYgQEAKICAgICAgICAgICAgICAgICBmeDogeyBoZWlnaHQ6 ICJ0b2dnbGUiLCBkdXJhdGlvbjogMjAwIH0sCiAgICAgICAgICAgICAgICAgLy8gaW5pdEFqYXgg aXMgaGFyZCB0byBmYWtlLCBzbyB3ZSBwYXNzIHRoZSBjaGlsZHJlbiBhcyBvYj0KamVjdCBhcnJh eToKICAgICAgICAgICAgICAgICBpbml0QWpheDoge3VybDogIiR7aC51cmxfZm9yKCBjb250cm9s bGVyPTNEJ2FkbWluX3Rvb2xzaGVkPQonLCBhY3Rpb249M0Qnb3Blbl9mb2xkZXInICl9IiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsPTIwCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiAiJHtkaXJlY3RvcnlfcGF0aHxo fSIgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiAiJHtkaXJlY3Rvcnlf cGF0aHxofSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlf aWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZT0KX2lkKCByZXBvc2l0b3J5LmlkICl9IiB9LAog ICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgb25MYXp5UmVhZDogZnVuY3Rpb24o ZHRub2RlKXsKICAgICAgICAgICAgICAgICAgICAgZHRub2RlLmFwcGVuZEFqYXgoewotICAgICAg ICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnYWRtaW5f dG9vbHNoZWQnLCA9CmFjdGlvbj0zRCdvcGVuX2ZvbGRlcicgKX0iLD0yMAorICAgICAgICAgICAg ICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnYWRtaW5fdG9vbHNo ZWQnLCA9CmFjdGlvbj0zRCdvcGVuX2ZvbGRlcicgKX0iLAogICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YVR5cGU6ICJqc29uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9s ZGVyX3BhdGg6IGR0bm9kZS5kYXRhLmtleSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YTogeyBmb2xkZXJfcGF0aDogZHRub2RlLmRhdGEua2V5LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXBvc2l0b3J5X2lkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQ9Cigg cmVwb3NpdG9yeS5pZCApfSIgfSwKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg ICAgICAgfSwKICAgICAgICAgICAgICAgICBvblNlbGVjdDogZnVuY3Rpb24oc2VsZWN0LCBkdG5v ZGUpIHsKQEAgLTU1LDcgKzU3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl OiAiUE9TVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3Io IGNvbnRyb2xsZXI9M0QnYWRtaW5fdG9vbHNoZT0KZCcsIGFjdGlvbj0zRCdnZXRfZmlsZV9jb250 ZW50cycgKX0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBmaWxlX3BhdGg6IHNlbGVjdGVk X3ZhbHVlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBmaWxlX3BhdGg6 IHNlbGVjdGVkX3ZhbHVlLCByZXBvc2l0b3J5Xz0KaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29k ZV9pZCggcmVwb3NpdG9yeS5pZCApfSIgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dWNjZXNzIDogZnVuY3Rpb24oIGRhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNlbGwuaHRtbCggJzxsYWJlbD4nK2RhdGErJzwvbGFiZWw+JyApCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQoKZGlmZiAtciBlYjEzZDE4MjAxZmJiZjgzMTlmYjJiMWMwM2EyNzJl YjU1MWI3ZDI2IC1yIGE5NGIzYTk3ZWQ3YWU2NjcyYzliMWRjPQo4NzkyMmY3ZTlmMmE3MDg2MCB0 ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVzdHMvY29tbW9uL2NvbW1vbi5tYWtvCi0tLSBh L3RlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vY29tbW9uLm1ha28KKysr IGIvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi9jb21tb24ubWFrbwpA QCAtMzMzLDcgKzMzMyw2IEBACiAgICAgICAgY2FuX2FkZF9zYW1wbGVzID0zRCBpc191bnN1Ym1p dHRlZAogICAgIGNhbl9kZWxldGVfc2FtcGxlcyA9M0Qgbm90IGFkZGluZ19uZXdfc2FtcGxlcyBh bmQgcmVxdWVzdC5zYW1wbGVzIGFuZCA9CiggKCBpc19hZG1pbiBhbmQgbm90IGlzX2NvbXBsZXRl ICkgb3IgaXNfdW5zdWJtaXR0ZWQgKQogICAgIGNhbl9lZGl0X3NhbXBsZXMgPTNEIHJlcXVlc3Qu c2FtcGxlcyBhbmQgKCBpc19hZG1pbiBvciBub3QgaXNfY29tcGxldGU9CiApCi0gICAgY2FuX3Nl bGVjdF9kYXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5kIGRpc3BsYXlhYmxlX3NhbXBsZV93aWRnZXRz IGFuZCAoID0KaXNfc3VibWl0dGVkIG9yIGlzX2NvbXBsZXRlICkKICAgICBjYW5fdHJhbnNmZXJf ZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCByZXF1ZXN0LnNhbXBsZXMgYW5kIG5vdCByZXF1ZXN0 PQouaXNfcmVqZWN0ZWQKICAgICBkaXNwbGF5X2NoZWNrYm94ZXMgPTNEIG5vdCBhZGRpbmdfbmV3 X3NhbXBsZXMgYW5kICggaXNfY29tcGxldGUgb3IgaXNfPQpyZWplY3RlZCBvciBpc19zdWJtaXR0 ZWQgKQogICAgIGRpc3BsYXlfYmFyX2NvZGUgPTNEIHJlcXVlc3Quc2FtcGxlcyBhbmQgKCBpc19j b21wbGV0ZSBvciBpc19yZWplY3RlZCA9Cm9yIGlzX3N1Ym1pdHRlZCApCkBAIC00MDcsNyArNDA2 LDcgQEAKICAgICAgICAgICAgICAgICAlZWxpZiBzYW1wbGU6CiAgICAgICAgICAgICAgICAgICAg IDx0cj48dGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJWlmIHNhbXBsZS5zdGF0ZSBh bmQgKCBjYW5fc2VsZWN0X2RhdGFzZXRzIG9yID0KY2FuX3RyYW5zZmVyX2RhdGFzZXRzICk6Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJWlmIHNhbXBsZS5zdGF0ZSBhbmQgY2FuX3RyYW5z ZmVyX2RhdGFzZXRzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyBBIHNhbXBs ZSB3aWxsIGhhdmUgYSBzdGF0ZSBvbmx5IGFmdGVyIHQ9CmhlIHJlcXVlc3QgaGFzIGJlZW4gc3Vi bWl0dGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8JQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5j b2RlX2k9CmQoIHNhbXBsZS5pZCApCkBAIC00MTksMTQgKzQxOCw2IEBACiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0zRCJ2aWV3LWluZm8iIGhyZWY9M0QiJHto LnVybD0KX2ZvciggY29udHJvbGxlcj0zRCdyZXF1ZXN0c19jb21tb24nLCBhY3Rpb249M0Qndmll d19zYW1wbGUnLCBjbnRybGxlcj0zRGNuPQp0cmxsZXIsIGlkPTNEdHJhbnMuc2VjdXJpdHkuZW5j b2RlX2lkKCBzYW1wbGUuaWQgKSApfSI+JHtzYW1wbGUubmFtZSB8IGh9PC89CmE+PC9kaXY+PGRp diBwb3B1cG1lbnU9M0Qic2FtcGxlLSR7c2FtcGxlLmlkfS1wb3B1cCI+Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAlaWYgY2FuX3NlbGVjdF9kYXRhc2V0czoKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlZm9yIGV4dGVybmFsX3NlcnZpY2UgaW4g c2FtcGxlLnJlPQpxdWVzdC50eXBlLmdldF9leHRlcm5hbF9zZXJ2aWNlc19mb3JfbWFudWFsX2Rh dGFfdHJhbnNmZXIoIHRyYW5zICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDwlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtZW51X2l0ZW1fbGFiZWwgPTNEICJTZWxlYz0KdCBkYXRhc2V0cyB0byB0cmFuc2ZlciB1 c2luZyAlcyIgJSBleHRlcm5hbF9zZXJ2aWNlLm5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iPQogaHJlZj0zRCIke2gu dXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXF1ZXN0c19hZG1pbicsIGFjdGlvbj0zRCdzZWxlY3Rf ZGF0YXM9CmV0c190b190cmFuc2ZlcicsIGV4dGVybmFsX3NlcnZpY2VfaWQ9M0R0cmFucy5zZWN1 cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsXz0Kc2VydmljZS5pZCApLCByZXF1ZXN0X2lkPTNEdHJh bnMuc2VjdXJpdHkuZW5jb2RlX2lkKCByZXF1ZXN0LmlkICksIHNhbXBsZV9pPQpkPTNEdHJhbnMu c2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSApfSI+JHttZW51X2l0ZW1fbGFiZWx9PC9h PjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJWVuZGZvcgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJWVuZGlmCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAlaWYgc2FtcGxlLmRhdGFzZXRzIGFuZCBsZW4oIHNhbXBs ZS5kYT0KdGFzZXRzICkgPiBsZW4oIHRyYW5zZmVycmVkX2RhdGFzZXRfZmlsZXMgKSBhbmQgc2Ft cGxlLmxpYnJhcnkgYW5kIHNhbXBsZS5mPQpvbGRlcjoKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlPQpmPTNE IiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlc3RzX2FkbWluJywgYWN0aW9uPTNEJ21h bmFnZV9kYXRhc2V0cyc9Ciwgc2FtcGxlX2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBz YW1wbGUuaWQgKSApfSI+TWFuYWdlIHNlbGVjdGVkIGRhdD0KYXNldHM8L2E+PC9saT4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVlbGlmIHNhbXBsZS5kYXRhc2V0cyBhbmQg bGVuKCBzYW1wbGUuPQpkYXRhc2V0cyApID0zRD0zRCBsZW4oIHRyYW5zZmVycmVkX2RhdGFzZXRf ZmlsZXMgKToKQEAgLTY2NSw3ICs2NTYsNiBAQAogICAgICAgICAgICAgaXNfYWRtaW4gPTNEIGNu dHJsbGVyID0zRD0zRCAncmVxdWVzdHNfYWRtaW4nIGFuZCB0cmFucy51c2VyX2k9CnNfYWRtaW4o KQogICAgICAgICAgICAgaXNfY29tcGxldGUgPTNEIHNhbXBsZS5yZXF1ZXN0LmlzX2NvbXBsZXRl CiAgICAgICAgICAgICBpc19zdWJtaXR0ZWQgPTNEIHNhbXBsZS5yZXF1ZXN0LmlzX3N1Ym1pdHRl ZAotICAgICAgICAgICAgY2FuX3NlbGVjdF9kYXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5kICggaXNf Y29tcGxldGUgb3IgaXNfc3VibWk9CnR0ZWQgKQogICAgICAgICAgICAgY2FuX3RyYW5zZmVyX2Rh dGFzZXRzID0zRCBpc19hZG1pbiBhbmQgc2FtcGxlLnVudHJhbnNmZXJyZWRfZGE9CnRhc2V0X2Zp bGVzCiAgICAgICAgICU+CiAgICAgICAgICMjIFRoZSB0cmFuc2ZlciBzdGF0dXMgc2hvdWxkIHVw ZGF0ZSBvbmx5IHdoZW4gdGhlIHJlcXVlc3QgaGFzIGJlZT0KbiBzdWJtaXR0ZWQgb3IgY29tcGxl dGUKCmRpZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5ZmIyYjFjMDNhMjcyZWI1NTFiN2QyNiAtciBh OTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJmN2U5ZjJhNzA4NjAgdGVtcGxhdGVzL3dlYmFw cHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi92aWV3X3JlcXVlc3RfaGlzPQp0b3J5Lm1ha28KLS0t IGEvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi92aWV3X3JlcXVlc3Rf aGlzdG9yeS5tYWtvCisrKyBiL3RlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21t b24vdmlld19yZXF1ZXN0X2hpc3RvcnkubWFrbwpAQCAtMTEsNyArMTEsNiBAQAogICAgIGNhbl9h ZGRfc2FtcGxlcyA9M0QgaXNfdW5zdWJtaXR0ZWQKICAgICBjYW5fZWRpdF9yZXF1ZXN0ID0zRCAo IGlzX2FkbWluIGFuZCBub3QgaXNfY29tcGxldGUgKSBvciBpc191bnN1Ym1pdHRlZAogICAgIGNh bl9yZWplY3QgPTNEIGlzX2FkbWluIGFuZCBpc19zdWJtaXR0ZWQKLSAgICBjYW5fc2VsZWN0X2Rh dGFzZXRzID0zRCBpc19hZG1pbiBhbmQgKCBpc19jb21wbGV0ZSBvciBpc19zdWJtaXR0ZWQgKQog ICAgIGNhbl9zdWJtaXRfcmVxdWVzdCA9M0QgcmVxdWVzdC5zYW1wbGVzIGFuZCBpc191bnN1Ym1p dHRlZAogJT4KPTIwCgpkaWZmIC1yIGViMTNkMTgyMDFmYmJmODMxOWZiMmIxYzAzYTI3MmViNTUx YjdkMjYgLXIgYTk0YjNhOTdlZDdhZTY2NzJjOWIxZGM9Cjg3OTIyZjdlOWYyYTcwODYwIHRlbXBs YXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vdmlld19zYW1wbGVfZGF0YT0Kc2V0 cy5tYWtvCi0tLSBhL3RlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vdmll d19zYW1wbGVfZGF0YXNldHMubWFrbworKysgYi90ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVx dWVzdHMvY29tbW9uL3ZpZXdfc2FtcGxlX2RhdGFzZXRzLm1ha28KQEAgLTEyLDcgKzEyLDYgQEAK ICAgICBpc19hZG1pbiA9M0QgY250cmxsZXIgPTNEPTNEICdyZXF1ZXN0c19hZG1pbicgYW5kIHRy YW5zLnVzZXJfaXNfYWRtaW4oKQogICAgIGlzX2NvbXBsZXRlID0zRCBzYW1wbGUucmVxdWVzdC5p c19jb21wbGV0ZQogICAgIGlzX3N1Ym1pdHRlZCA9M0Qgc2FtcGxlLnJlcXVlc3QuaXNfc3VibWl0 dGVkCi0gICAgY2FuX3NlbGVjdF9kYXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5kICggaXNfY29tcGxl dGUgb3IgaXNfc3VibWl0dGVkICkKICAgICBjYW5fdHJhbnNmZXJfZGF0YXNldHMgPTNEIGlzX2Fk bWluIGFuZCBzYW1wbGUudW50cmFuc2ZlcnJlZF9kYXRhc2V0X2ZpPQpsZXMgYW5kIHNhbXBsZS5s aWJyYXJ5IGFuZCBzYW1wbGUuZm9sZGVyCiAlPgo9MjAKQEAgLTI0LDkgKzIzLDYgQEAKICAgICAl ZW5kaWYKICAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaWQ9M0Qic2FtcGxlLSR7 c2FtcGxlLmlkfS1wb3B1cCIgY2xhc3M9Cj0zRCJtZW51YnV0dG9uIj5EYXRhc2V0IEFjdGlvbnM8 L2E+PC9saT48ZGl2IHBvcHVwbWVudT0zRCJzYW1wbGUtJHtzYW1wbGUuaT0KZH0tcG9wdXAiPgot ICAgICAgICAlaWYgY2FuX3NlbGVjdF9kYXRhc2V0czoKLSAgICAgICAgICAgIDxsaT48YSBjbGFz cz0zRCJhY3Rpb24tYnV0dG9uIiBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPQo9M0Qn cmVxdWVzdHNfYWRtaW4nLCBhY3Rpb249M0Qnc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyJywg Y250cmxsZXI9M0RjbnQ9CnJsbGVyLCBleHRlcm5hbF9zZXJ2aWNlX2lkPTNEdHJhbnMuc2VjdXJp dHkuZW5jb2RlX2lkKCBleHRlcm5hbF9zZXJ2aWNlLmlkID0KKSwgcmVxdWVzdF9pZD0zRHRyYW5z LnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxlLnJlcXVlc3QuaWQgKSwgc2FtcGxlX2lkPTNEPQp0 cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHNhbXBsZS5pZCApICl9Ij5TZWxlY3QgbW9yZSBkYXRh c2V0czwvYT48L2xpPgotICAgICAgICAlZW5kaWYKICAgICAgICAgPGxpPjxhIGNsYXNzPTNEImFj dGlvbi1idXR0b24iIGhyZWY9M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnPQpsaWJyYXJ5 X2NvbW1vbicsIGFjdGlvbj0zRCdicm93c2VfbGlicmFyeScsIGNudHJsbGVyPTNEY250cmxsZXIs IGlkPTNEdHJhbnM9Ci5zZWN1cml0eS5lbmNvZGVfaWQoIHNhbXBsZS5saWJyYXJ5LmlkICkgKX0i PlZpZXcgdGFyZ2V0IERhdGEgTGlicmFyeTwvYT48Lz0KbGk+PGxpPjxhIGNsYXNzPTNEImFjdGlv bi1idXR0b24iIGhyZWY9M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVxdWVzPQp0c19j b21tb24nLCBhY3Rpb249M0Qndmlld19yZXF1ZXN0JywgY250cmxsZXI9M0RjbnRybGxlciwgaWQ9 M0R0cmFucy5zZWN1cmk9CnR5LmVuY29kZV9pZCggc2FtcGxlLnJlcXVlc3QuaWQgKSApfSI+QnJv d3NlIHRoaXMgcmVxdWVzdDwvYT48L2xpPjwvZGl2PgoKZGlmZiAtciBlYjEzZDE4MjAxZmJiZjgz MTlmYjJiMWMwM2EyNzJlYjU1MWI3ZDI2IC1yIGE5NGIzYTk3ZWQ3YWU2NjcyYzliMWRjPQo4Nzky MmY3ZTlmMmE3MDg2MCB0ZW1wbGF0ZXMvd2ViYXBwcy90b29sX3NoZWQvcmVwb3NpdG9yeS9jb21t b24ubWFrbwotLS0gYS90ZW1wbGF0ZXMvd2ViYXBwcy90b29sX3NoZWQvcmVwb3NpdG9yeS9jb21t b24ubWFrbworKysgYi90ZW1wbGF0ZXMvd2ViYXBwcy90b29sX3NoZWQvcmVwb3NpdG9yeS9jb21t b24ubWFrbwpAQCAtMjEsMTQgKzIxLDE0IEBACiAgICAgICAgICAgICAgICAgZng6IHsgaGVpZ2h0 OiAidG9nZ2xlIiwgZHVyYXRpb246IDIwMCB9LAogICAgICAgICAgICAgICAgIC8vIGluaXRBamF4 IGlzIGhhcmQgdG8gZmFrZSwgc28gd2UgcGFzcyB0aGUgY2hpbGRyZW4gYXMgb2I9CmplY3QgYXJy YXk6CiAgICAgICAgICAgICAgICAgaW5pdEFqYXg6IHt1cmw6ICIke2gudXJsX2ZvciggY29udHJv bGxlcj0zRCdyZXBvc2l0b3J5JywgYT0KY3Rpb249M0Qnb3Blbl9mb2xkZXInICl9IiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsPTIwCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiAiJHtyZXBvc2l0b3J5LnJlcG9fcGF0 aCggdD0KcmFucy5hcHAgKX0iIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlw ZTogImpzb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0 aDogIiR7cmVwb3NpdG9yeS5yZXBvX3BhdGgoIHQ9CnJhbnMuYXBwICl9IiwgcmVwb3NpdG9yeV9p ZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCByZXBvc2l0b3J5LmlkICl9Ij0KICB9LAog ICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgb25MYXp5UmVhZDogZnVuY3Rpb24o ZHRub2RlKXsKICAgICAgICAgICAgICAgICAgICAgZHRub2RlLmFwcGVuZEFqYXgoewotICAgICAg ICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVwb3Np dG9yeScsIGFjdGk9Cm9uPTNEJ29wZW5fZm9sZGVyJyApfSIsPTIwCisgICAgICAgICAgICAgICAg ICAgICAgICB1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXBvc2l0b3J5JywgYWN0 aT0Kb249M0Qnb3Blbl9mb2xkZXInICl9IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFU eXBlOiAianNvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRo OiBkdG5vZGUuZGF0YS5rZXkgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9s ZGVyX3BhdGg6IGR0bm9kZS5kYXRhLmtleSwgcmVwb3NpdG9yeV9pPQpkOiAiJHt0cmFucy5zZWN1 cml0eS5lbmNvZGVfaWQoIHJlcG9zaXRvcnkuaWQgKX0iICB9LAogICAgICAgICAgICAgICAgICAg ICB9KTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIG9uU2VsZWN0OiBmdW5j dGlvbihzZWxlY3QsIGR0bm9kZSkgewpAQCAtNjEsNyArNjEsNyBAQAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXBvc2l0b3J5JywgPQphY3Rpb249M0Qn Z2V0X2ZpbGVfY29udGVudHMnICl9IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh VHlwZTogImpzb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZmlsZV9w YXRoOiBzZWxlY3RlZF92YWx1ZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6 IHsgZmlsZV9wYXRoOiBzZWxlY3RlZF92YWx1ZSwgcmVwb3NpdG9yeV89CmlkOiAiJHt0cmFucy5z ZWN1cml0eS5lbmNvZGVfaWQoIHJlcG9zaXRvcnkuaWQgKX0iIH0sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3VjY2VzcyA6IGZ1bmN0aW9uICggZGF0YSApIHsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2VsbC5odG1sKCAnPGxhYmVsPicrZGF0YSsnPC9sYWJlbD4nICkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dh bGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzdjYThmMGVjYjJhZS8KQ2hhbmdlc2V0OiAgIDdj YThmMGVjYjJhZQpCcmFuY2g6ICAgICAgcmVsZWFzZV8xNS4wMQpVc2VyOiAgICAgICAgbmF0ZWZv bwpEYXRlOiAgICAgICAgMjAxNi0wMi0yNCAyMDo1MDowNiswMDowMApTdW1tYXJ5OiAgICAgUmVs ZWFzZSAxNS4wMS40CkFmZmVjdGVkICM6ICAyNiBmaWxlcwoKZGlmZiAtciBjMWNjNzZmYTNkNjZl ZmIwNzBmMTk2MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpm ZDA5Y2NhZTQ4MTk0MGE0OSBsaWIvZ2FsYXh5L2V4Y2VwdGlvbnMvX19pbml0X18ucHkKLS0tIGEv bGliL2dhbGF4eS9leGNlcHRpb25zL19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvZXhjZXB0 aW9ucy9fX2luaXRfXy5weQpAQCAtNjYsNiArNjYsMTEgQEAKICAgICBlcnJfY29kZSA9M0QgZXJy b3JfY29kZXMuTUFMRk9STUVEX0lECj0yMAo9MjAKK2NsYXNzIE1hbGZvcm1lZENvbnRlbnRzKCBN ZXNzYWdlRXhjZXB0aW9uICk6CisgICAgc3RhdHVzX2NvZGUgPTNEIDQwMAorICAgIGVycl9jb2Rl ID0zRCBlcnJvcl9jb2Rlcy5NQUxGT1JNRURfQ09OVEVOVFMKKworCiBjbGFzcyBVbmtub3duQ29u dGVudHNUeXBlKCBNZXNzYWdlRXhjZXB0aW9uICk6CiAgICAgc3RhdHVzX2NvZGUgPTNEIDQwMAog ICAgIGVycl9jb2RlID0zRCBlcnJvcl9jb2Rlcy5VTktOT1dOX0NPTlRFTlRTX1RZUEUKCmRpZmYg LXIgYzFjYzc2ZmEzZDY2ZWZiMDcwZjE5NjMxNTFjNGFjMGNhZTA0OGYzZiAtciA3Y2E4ZjBlY2Iy YWU4YjFiYTJiNTNlMT0KZmQwOWNjYWU0ODE5NDBhNDkgbGliL2dhbGF4eS9leGNlcHRpb25zL2Vy cm9yX2NvZGVzLmpzb24KLS0tIGEvbGliL2dhbGF4eS9leGNlcHRpb25zL2Vycm9yX2NvZGVzLmpz b24KKysrIGIvbGliL2dhbGF4eS9leGNlcHRpb25zL2Vycm9yX2NvZGVzLmpzb24KQEAgLTU2LDEw ICs1NiwxNSBAQAogICAgIH0sCiAgICB7CiAgICAgIm5hbWUiOiAiVVNFUl9UT09MX01FVEFfUEFS QU1FVEVSX1BST0JMRU0iLAotICAgICJjb2RlIjogNDAwMDExLAorICAgICJjb2RlIjogNDAwMDEy LAogICAgICJtZXNzYWdlIjogIlN1cHBsaWVkIGluY29ycmVjdCBvciBpbmNvbXBhdGlibGUgdG9v bCBtZXRhIHBhcmFtZXRlcnMuIgogICAgfSwKICAgIHsKKyAgICAibmFtZSI6ICJNQUxGT1JNRURf Q09OVEVOVFMiLAorICAgICJjb2RlIjogNDAwMDEzLAorICAgICJtZXNzYWdlIjogIlRoZSBjb250 ZW50cyBvZiB0aGUgcmVxdWVzdCBhcmUgbWFsZm9ybWVkLiIKKyAgICB9LAorICAgewogICAgICJu YW1lIjogIlVTRVJfQVVUSEVOVElDQVRJT05fRkFJTEVEIiwKICAgICAiY29kZSI6IDQwMTAwMSwK ICAgICAibWVzc2FnZSI6ICJBdXRoZW50aWNhdGlvbiBmYWlsZWQsIGludmFsaWQgY3JlZGVudGlh bHMgc3VwcGxpZWQuIgoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIwNzBmMTk2MzE1MWM0YWMwY2Fl MDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5Y2NhZTQ4MTk0MGE0OSBsaWIv Z2FsYXh5L21vZGVsL19faW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvbW9kZWwvX19pbml0X18u cHkKKysrIGIvbGliL2dhbGF4eS9tb2RlbC9fX2luaXRfXy5weQpAQCAtNSwxNSArNSwxMSBAQAog dGhlIHJlbGF0aW9uc2hpcCBjYXJkaW5hbGl0aWVzIGFyZSBvYnZpb3VzIChlLmcuIHByZWZlciBE YXRhc2V0IHRvIERhdGEpCiAiIiIKPTIwCi1mcm9tIGdhbGF4eSBpbXBvcnQgZWdncwotZWdncy5y ZXF1aXJlKCJwZXhwZWN0IikKLQogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGVycm5vCiBpbXBvcnQg bG9nZ2luZwogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgb3MKLWltcG9ydCBwZXhwZWN0CiBpbXBv cnQganNvbgogaW1wb3J0IHNvY2tldAogaW1wb3J0IHRpbWUKQEAgLTM4NTgsMjcgKzM4NTQsNiBA QAogICAgICAgICAgICAgICAgIHVudHJhbnNmZXJyZWRfZGF0YXNldHMuYXBwZW5kKCBkYXRhc2V0 ICkKICAgICAgICAgcmV0dXJuIHVudHJhbnNmZXJyZWRfZGF0YXNldHMKPTIwCi0gICAgZGVmIGdl dF91bnRyYW5zZmVycmVkX2RhdGFzZXRfc2l6ZSggc2VsZiwgZmlsZXBhdGgsIHNjcF9jb25maWdz ICk6Ci0gICAgICAgIGRlZiBwcmludF90aWNrcyggZCApOgotICAgICAgICAgICAgcGFzcwotICAg ICAgICBlcnJvcl9tc2cgPTNEICdFcnJvciBlbmNvdW50ZXJlZCBpbiBkZXRlcm1pbmluZyB0aGUg ZmlsZSBzaXplIG9mICU9CnMgb24gdGhlIGV4dGVybmFsX3NlcnZpY2UuJyAlIGZpbGVwYXRoCi0g ICAgICAgIGlmIG5vdCBzY3BfY29uZmlnc1snaG9zdCddIG9yIG5vdCBzY3BfY29uZmlnc1sndXNl cl9uYW1lJ10gb3Igbm90ID0Kc2NwX2NvbmZpZ3NbJ3Bhc3N3b3JkJ106Ci0gICAgICAgICAgICBy ZXR1cm4gZXJyb3JfbXNnCi0gICAgICAgIGxvZ2luX3N0ciA9M0QgJyVzQCVzJyAlICggc2NwX2Nv bmZpZ3NbJ3VzZXJfbmFtZSddLCBzY3BfY29uZmlnc1snaD0Kb3N0J10gKQotICAgICAgICBjbWQg ID0zRCAnc3NoICVzICJkdSAtc2ggXCclc1wnIicgJSAoIGxvZ2luX3N0ciwgZmlsZXBhdGggKQot ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvdXRwdXQgPTNEIHBleHBlY3QucnVuKCBjbWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzPTNEeyAnLnNzd29yZDoqJzog c2NwX2NvbmZpZ3NbJ3Bhcz0Kc3dvcmQnXSsnXHJcbicsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGV4cGVjdC5USU1FT1VUOnByaW50X3RpY2tzfSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTNEMTAgKQotICAgICAgICBleGNl cHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGVycm9yX21zZwotICAgICAgICAjIGNs ZWFudXAgdGhlIG91dHB1dCB0byBnZXQganVzdCB0aGUgZmlsZSBzaXplCi0gICAgICAgIHJldHVy biAgb3V0cHV0LnJlcGxhY2UoIGZpbGVwYXRoLCAnJyApXAotICAgICAgICAgICAgICAgICAgICAg IC5yZXBsYWNlKCAnUGFzc3dvcmQ6JywgJycgKVwKLSAgICAgICAgICAgICAgICAgICAgICAucmVw bGFjZSggIidzIHBhc3N3b3JkOiIsICcnIClcCi0gICAgICAgICAgICAgICAgICAgICAgLnJlcGxh Y2UoIGxvZ2luX3N0ciwgJycgKVwKLSAgICAgICAgICAgICAgICAgICAgICAuc3RyaXAoKQogICAg IEBwcm9wZXJ0eQogICAgIGRlZiBydW5fZGV0YWlscyggc2VsZiApOgogICAgICAgICAjIHNlbGYu cnVucyBpcyBhIGxpc3Qgb2YgU2FtcGxlUnVuQXNzb2NpYXRpb25zIG9yZGVyZWQgZGVzY2VuZGlu ZyA9Cm9uIHVwZGF0ZV90aW1lLgoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIwNzBmMTk2MzE1MWM0 YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5Y2NhZTQ4MTk0MGE0 OSBsaWIvZ2FsYXh5L29iamVjdHN0b3JlL19faW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvb2Jq ZWN0c3RvcmUvX19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9fX2luaXRf Xy5weQpAQCAtMTEsNyArMTEsNyBAQAogaW1wb3J0IHRocmVhZGluZwogZnJvbSB4bWwuZXRyZWUg aW1wb3J0IEVsZW1lbnRUcmVlCj0yMAotZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgdW1hc2tfZml4 X3Blcm1zLCBmb3JjZV9zeW1saW5rCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCB1bWFza19maXhf cGVybXMsIGZvcmNlX3N5bWxpbmssIHNhZmVfcmVscGF0aAogZnJvbSBnYWxheHkuZXhjZXB0aW9u cyBpbXBvcnQgT2JqZWN0SW52YWxpZCwgT2JqZWN0Tm90Rm91bmQKIGZyb20gZ2FsYXh5LnV0aWwu c2xlZXBlciBpbXBvcnQgU2xlZXBlcgogZnJvbSBnYWxheHkudXRpbC5kaXJlY3RvcnlfaGFzaCBp bXBvcnQgZGlyZWN0b3J5X2hhc2hfaWQKQEAgLTI1Niw3ICsyNTYsMTcgQEAKICAgICAgICAgICAg ICAgICAgICAgICAgICB0aGUgY29tcG9zZWQgZGlyZWN0b3J5IHN0cnVjdHVyZSBkb2VzIG5vdCBp bmNsdWRlPQogYSBoYXNoIGlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4sIC9maWxl cy9kYXRhc2V0XzEwLmRhdCAob2xkKSB2cy4gL2ZpbGVzLzAwMD0KL2RhdGFzZXRfMTAuZGF0IChu ZXcpKQogICAgICAgICAiIiIKLSAgICAgICAgYmFzZSA9M0Qgc2VsZi5leHRyYV9kaXJzLmdldChi YXNlX2Rpciwgc2VsZi5maWxlX3BhdGgpCisgICAgICAgIGJhc2UgPTNEIG9zLnBhdGguYWJzcGF0 aChzZWxmLmV4dHJhX2RpcnMuZ2V0KGJhc2VfZGlyLCBzZWxmLmZpbGVfcD0KYXRoKSkKKyAgICAg ICAgIyBleHRyYV9kaXIgc2hvdWxkIG5ldmVyIGJlIGNvbnN0cnVjdGVkIGZyb20gcHJvdmlkZWQg ZGF0YSBidXQganVzdAorICAgICAgICAjIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gc2hlbmFubmln YW5zIGFmb290CisgICAgICAgIGlmIGV4dHJhX2RpciBhbmQgZXh0cmFfZGlyICE9M0Qgb3MucGF0 aC5ub3JtcGF0aChleHRyYV9kaXIpOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2V4dHJhX2Rp ciBpcyBub3Qgbm9ybWFsaXplZDogJXMnLCBleHRyYV9kaXIpCisgICAgICAgICAgICByYWlzZSBP YmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKKyAgICAgICAg IyBlbnN1cmUgdGhhdCBhbnkgcGFyZW50IGRpcmVjdG9yeSByZWZlcmVuY2VzIGluIGFsdF9uYW1l IHdvdWxkIG5vdAorICAgICAgICAjIHJlc3VsdCBpbiBhIHBhdGggbm90IGNvbnRhaW5lZCBpbiB0 aGUgZGlyZWN0b3J5IHBhdGggY29uc3RydWN0ZWQ9CiBoZXJlCisgICAgICAgIGlmIGFsdF9uYW1l IGFuZCBub3Qgc2FmZV9yZWxwYXRoKGFsdF9uYW1lKToKKyAgICAgICAgICAgIGxvZy53YXJuaW5n KCdhbHRfbmFtZSB3b3VsZCBsb2NhdGUgcGF0aCBvdXRzaWRlIGRpcjogJXMnLCBhbHRfPQpuYW1l KQorICAgICAgICAgICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3Qg aXMgaW52YWxpZCIpCiAgICAgICAgIGlmIG9sZF9zdHlsZToKICAgICAgICAgICAgIGlmIGV4dHJh X2RpciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBwYXRoID0zRCBvcy5wYXRoLmpvaW4o YmFzZSwgZXh0cmFfZGlyKQpAQCAtNjIzLDkgKzYzMywxMCBAQAogICAgIGVsaWYgc3RvcmUgPTNE PTNEICdpcm9kcyc6CiAgICAgICAgIGZyb20gLnJvZHMgaW1wb3J0IElST0RTT2JqZWN0U3RvcmUK ICAgICAgICAgcmV0dXJuIElST0RTT2JqZWN0U3RvcmUoY29uZmlnPTNEY29uZmlnLCBjb25maWdf eG1sPTNEY29uZmlnX3htbCkKLSAgICBlbGlmIHN0b3JlID0zRD0zRCAncHVsc2FyJzoKLSAgICAg ICAgZnJvbSAucHVsc2FyIGltcG9ydCBQdWxzYXJPYmplY3RTdG9yZQotICAgICAgICByZXR1cm4g UHVsc2FyT2JqZWN0U3RvcmUoY29uZmlnPTNEY29uZmlnLCBjb25maWdfeG1sPTNEY29uZmlnX3ht bCkKKyAgICAjIERpc2FibGUgdGhlIFB1bHNhciBvYmplY3Qgc3RvcmUgZm9yIG5vdyB1bnRpbCBp dCByZWNlaXZlcyBzb21lIGF0dGVuPQp0aW9uCisgICAgIyBlbGlmIHN0b3JlID0zRD0zRCAncHVs c2FyJzoKKyAgICAjICAgIGZyb20gLnB1bHNhciBpbXBvcnQgUHVsc2FyT2JqZWN0U3RvcmUKKyAg ICAjICAgIHJldHVybiBQdWxzYXJPYmplY3RTdG9yZShjb25maWc9M0Rjb25maWcsIGNvbmZpZ194 bWw9M0Rjb25maWdfeG1sKQogICAgIGVsc2U6CiAgICAgICAgIGxvZy5lcnJvcigiVW5yZWNvZ25p emVkIG9iamVjdCBzdG9yZSBkZWZpbml0aW9uOiB7MH0iLmZvcm1hdChzdG9yZT0KKSkKPTIwCgpk aWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYw ZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IGxpYi9nYWxheHkvb2JqZWN0c3Rv cmUvcm9kcy5weQotLS0gYS9saWIvZ2FsYXh5L29iamVjdHN0b3JlL3JvZHMucHkKKysrIGIvbGli L2dhbGF4eS9vYmplY3RzdG9yZS9yb2RzLnB5CkBAIC0xMiw3ICsxMiw4IEBACiBmcm9tIHBvc2l4 cGF0aCBpbXBvcnQgYmFzZW5hbWUgYXMgcGF0aF9iYXNlbmFtZQogZnJvbSBwb3NpeHBhdGggaW1w b3J0IGRpcm5hbWUgYXMgcGF0aF9kaXJuYW1lCj0yMAotZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBp bXBvcnQgT2JqZWN0Tm90Rm91bmQKK2Zyb20gZ2FsYXh5LmV4Y2VwdGlvbnMgaW1wb3J0IE9iamVj dE5vdEZvdW5kLCBPYmplY3RJbnZhbGlkCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBzYWZlX3Jl bHBhdGgKIGZyb20gLi5vYmplY3RzdG9yZSBpbXBvcnQgRGlza09iamVjdFN0b3JlLCBPYmplY3RT dG9yZSwgbG9jYWxfZXh0cmFfZGlycwo9MjAKIHRyeToKQEAgLTcxLDYgKzcyLDIwIEBACiAgICAg ICAgIGxvZy5pbmZvKCAiaVJPRFMgZGF0YSBmb3IgdGhpcyBpbnN0YW5jZSB3aWxsIGJlIHN0b3Jl ZCBpbiBjb2xsZWN0aT0Kb246ICVzLCByZXNvdXJjZTogJXMiLCBzZWxmLnJvb3RfY29sbGVjdGlv bl9wYXRoLCBzZWxmLmRlZmF1bHRfcmVzb3VyY2UgKQo9MjAKICAgICBkZWYgX19nZXRfcm9kc19w YXRoKCBzZWxmLCBvYmosIGJhc2VfZGlyPTNETm9uZSwgZGlyX29ubHk9M0RGYWxzZSwgZXh0PQpy YV9kaXI9M0ROb25lLCBleHRyYV9kaXJfYXRfcm9vdD0zREZhbHNlLCBhbHRfbmFtZT0zRE5vbmUs IHN0cmlwX2RhdD0zRFRydWU9CiwgKiprd2FyZ3MgKToKKyAgICAgICAgIyBleHRyYV9kaXIgc2hv dWxkIG5ldmVyIGJlIGNvbnN0cnVjdGVkIGZyb20gcHJvdmlkZWQgZGF0YSBidXQganVzdAorICAg ICAgICAjIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gc2hlbmFubmlnYW5zIGFmb290CisgICAgICAg IGlmIGV4dHJhX2RpciBhbmQgZXh0cmFfZGlyICE9M0Qgb3MucGF0aC5ub3JtcGF0aChleHRyYV9k aXIpOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2V4dHJhX2RpciBpcyBub3Qgbm9ybWFsaXpl ZDogJXMnLCBleHRyYV9kaXIpCisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUg cmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKKyAgICAgICAgIyBlbnN1cmUgdGhhdCBhbnkg cGFyZW50IGRpcmVjdG9yeSByZWZlcmVuY2VzIGluIGFsdF9uYW1lIHdvdWxkIG5vdAorICAgICAg ICAjIHJlc3VsdCBpbiBhIHBhdGggbm90IGNvbnRhaW5lZCBpbiB0aGUgZGlyZWN0b3J5IHBhdGgg Y29uc3RydWN0ZWQ9CiBoZXJlCisgICAgICAgIGlmIGFsdF9uYW1lOgorICAgICAgICAgICAgaWYg bm90IHNhZmVfcmVscGF0aChhbHRfbmFtZSk6CisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmco J2FsdF9uYW1lIHdvdWxkIGxvY2F0ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsID0KYWx0X25hbWUp CisgICAgICAgICAgICAgICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmpl Y3QgaXMgaW52YWxpZCIpCisgICAgICAgICAgICAjIGFsdF9uYW1lIGNhbiBjb250YWluIHBhcmVu dCBkaXJlY3RvcnkgcmVmZXJlbmNlcywgYnV0IGlST0RTID0Kd2lsbAorICAgICAgICAgICAgIyBu b3QgZm9sbG93IHRoZW0sIHNvIGlmIHRoZXkgYXJlIHZhbGlkIHdlIG5vcm1hbGl6ZSB0aGVtIG91 dAorICAgICAgICAgICAgYWx0X25hbWUgPTNEIG9zLnBhdGgubm9ybXBhdGgoYWx0X25hbWUpCiAg ICAgICAgIHBhdGggPTNEICIiCiAgICAgICAgIGlmIGV4dHJhX2RpciBpcyBub3QgTm9uZToKICAg ICAgICAgICAgIHBhdGggPTNEIGV4dHJhX2RpcgoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIwNzBm MTk2MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5Y2Nh ZTQ4MTk0MGE0OSBsaWIvZ2FsYXh5L29iamVjdHN0b3JlL3MzLnB5Ci0tLSBhL2xpYi9nYWxheHkv b2JqZWN0c3RvcmUvczMucHkKKysrIGIvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9zMy5weQpAQCAt MTIsOCArMTIsOCBAQAo9MjAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCj0yMAotZnJv bSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0Tm90Rm91bmQKLWZyb20gZ2FsYXh5LnV0 aWwgaW1wb3J0IHVtYXNrX2ZpeF9wZXJtcworZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQg T2JqZWN0Tm90Rm91bmQsIE9iamVjdEludmFsaWQKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHVt YXNrX2ZpeF9wZXJtcywgc2FmZV9yZWxwYXRoCiBmcm9tIGdhbGF4eS51dGlsLmRpcmVjdG9yeV9o YXNoIGltcG9ydCBkaXJlY3RvcnlfaGFzaF9pZAogZnJvbSBnYWxheHkudXRpbC5zbGVlcGVyIGlt cG9ydCBTbGVlcGVyCiBmcm9tIC5zM19tdWx0aXBhcnRfdXBsb2FkIGltcG9ydCBtdWx0aXBhcnRf dXBsb2FkCkBAIC0xODksNiArMTg5LDIwIEBACiAgICAgICAgICAgICAgICAgdW1hc2tfZml4X3Bl cm1zKCBwYXRoLCBzZWxmLmNvbmZpZy51bWFzaywgMDY2Niwgc2VsZi5jb25maT0KZy5naWQgKQo9 MjAKICAgICBkZWYgX2NvbnN0cnVjdF9wYXRoKHNlbGYsIG9iaiwgZGlyX29ubHk9M0ROb25lLCBl eHRyYV9kaXI9M0ROb25lLCBleHRyPQphX2Rpcl9hdF9yb290PTNERmFsc2UsIGFsdF9uYW1lPTNE Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAjIGV4dHJhX2RpciBzaG91bGQgbmV2ZXIgYmUgY29u c3RydWN0ZWQgZnJvbSBwcm92aWRlZCBkYXRhIGJ1dCBqdXN0CisgICAgICAgICMgbWFrZSBzdXJl IHRoZXJlIGFyZSBubyBzaGVuYW5uaWdhbnMgYWZvb3QKKyAgICAgICAgaWYgZXh0cmFfZGlyIGFu ZCBleHRyYV9kaXIgIT0zRCBvcy5wYXRoLm5vcm1wYXRoKGV4dHJhX2Rpcik6CisgICAgICAgICAg ICBsb2cud2FybmluZygnZXh0cmFfZGlyIGlzIG5vdCBub3JtYWxpemVkOiAlcycsIGV4dHJhX2Rp cikKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2JqZWN0 IGlzIGludmFsaWQiKQorICAgICAgICAjIGVuc3VyZSB0aGF0IGFueSBwYXJlbnQgZGlyZWN0b3J5 IHJlZmVyZW5jZXMgaW4gYWx0X25hbWUgd291bGQgbm90CisgICAgICAgICMgcmVzdWx0IGluIGEg cGF0aCBub3QgY29udGFpbmVkIGluIHRoZSBkaXJlY3RvcnkgcGF0aCBjb25zdHJ1Y3RlZD0KIGhl cmUKKyAgICAgICAgaWYgYWx0X25hbWU6CisgICAgICAgICAgICBpZiBub3Qgc2FmZV9yZWxwYXRo KGFsdF9uYW1lKToKKyAgICAgICAgICAgICAgICBsb2cud2FybmluZygnYWx0X25hbWUgd291bGQg bG9jYXRlIHBhdGggb3V0c2lkZSBkaXI6ICVzJywgPQphbHRfbmFtZSkKKyAgICAgICAgICAgICAg ICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikK KyAgICAgICAgICAgICMgYWx0X25hbWUgY2FuIGNvbnRhaW4gcGFyZW50IGRpcmVjdG9yeSByZWZl cmVuY2VzLCBidXQgUzMgd2lsPQpsIG5vdAorICAgICAgICAgICAgIyBmb2xsb3cgdGhlbSwgc28g aWYgdGhleSBhcmUgdmFsaWQgd2Ugbm9ybWFsaXplIHRoZW0gb3V0CisgICAgICAgICAgICBhbHRf bmFtZSA9M0Qgb3MucGF0aC5ub3JtcGF0aChhbHRfbmFtZSkKICAgICAgICAgcmVsX3BhdGggPTNE IG9zLnBhdGguam9pbigqZGlyZWN0b3J5X2hhc2hfaWQob2JqLmlkKSkKICAgICAgICAgaWYgZXh0 cmFfZGlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgZXh0cmFfZGlyX2F0X3Jvb3Q6Cgpk aWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYw ZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IGxpYi9nYWxheHkvdG9vbHMvaW1w X2V4cC9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAvX19pbml0X18u cHkKKysrIGIvbGliL2dhbGF4eS90b29scy9pbXBfZXhwL19faW5pdF9fLnB5CkBAIC01LDYgKzUs NyBAQAogaW1wb3J0IGpzb24KIGltcG9ydCBkYXRldGltZQogZnJvbSBnYWxheHkgaW1wb3J0IG1v ZGVsCitmcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBNYWxmb3JtZWRDb250ZW50cwogZnJv bSBnYWxheHkudG9vbHMucGFyYW1ldGVycy5iYXNpYyBpbXBvcnQgVW52YWxpZGF0ZWRWYWx1ZQog ZnJvbSBnYWxheHkud2ViLmZyYW1ld29yay5oZWxwZXJzIGltcG9ydCB0b191bmljb2RlCiBmcm9t IGdhbGF4eS5tb2RlbC5pdGVtX2F0dHJzIGltcG9ydCBVc2VzQW5ub3RhdGlvbnMKQEAgLTE4Nyw5 ICsxODgsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiBkYXRhc2V0X2F0dHJzLmdldCgnZXhw b3J0ZWQnLCBUcnVlKSA9M0Q9M0QgVHJ1ZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgRG8g c2VjdXJpdHkgY2hlY2sgYW5kIG1vdmUvY29weSBkYXRhc2V0IGRhdGEuCiAgICAgICAgICAgICAg ICAgICAgICAgICB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lID0zRCBcCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpvaW4oIGFyY2hpdmVfZGlyLCBk YT0KdGFzZXRfYXR0cnNbJ2ZpbGVfbmFtZSddICkgKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9zLnBhdGgucmVhbHBhdGgoIG9zLnBhdGguYWJzcGF0aCggb3MucGF0aC5qb2k9Cm4oIGFy Y2hpdmVfZGlyLCBkYXRhc2V0X2F0dHJzWydmaWxlX25hbWUnXSApICkgKQogICAgICAgICAgICAg ICAgICAgICAgICAgaWYgbm90IGZpbGVfaW5fZGlyKCB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lLCBv cy5wYXQ9Cmguam9pbiggYXJjaGl2ZV9kaXIsICJkYXRhc2V0cyIgKSApOgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbiggIkludmFsaWQgZGF0YXNldCBwYXRoOiAl cyIgJSA9CnRlbXBfZGF0YXNldF9maWxlX25hbWUgKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJhaXNlIE1hbGZvcm1lZENvbnRlbnRzKCAiSW52YWxpZCBkYXRhc2V0IHBhdGg9CjogJXMi ICUgdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSApCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBk YXRhc2V0c191c2FnZV9jb3VudHNbIHRlbXBfZGF0YXNldF9maWxlX25hbWUgXT0KID0zRD0zRCAx OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5tb3ZlKCB0ZW1wX2RhdGFzZXRf ZmlsZV9uYW1lLCBoZGEuZmlsZV89Cm5hbWUgKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxz ZToKQEAgLTMxMyw2ICszMTQsNyBAQAogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToK ICAgICAgICAgICAgICAgICBqaWhhLmpvYi5zdGRlcnIgKz0zRCAiRXJyb3IgY2xlYW5pbmcgdXAg aGlzdG9yeSBpbXBvcnQgam9iPQo6ICVzIiAlIGUKICAgICAgICAgICAgICAgICBzZWxmLnNhX3Nl c3Npb24uZmx1c2goKQorICAgICAgICAgICAgICAgIHJhaXNlCj0yMAo9MjAKIGNsYXNzIEpvYkV4 cG9ydEhpc3RvcnlBcmNoaXZlV3JhcHBlciggb2JqZWN0LCBVc2VzSGlzdG9yeU1peGluLCBVc2Vz QW5ub3RhPQp0aW9ucyApOgoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIwNzBmMTk2MzE1MWM0YWMw Y2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5Y2NhZTQ4MTk0MGE0OSBs aWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAvdW5wYWNrX3Rhcl9nel9hcmNoaXZlLnB5Ci0tLSBhL2xp Yi9nYWxheHkvdG9vbHMvaW1wX2V4cC91bnBhY2tfdGFyX2d6X2FyY2hpdmUucHkKKysrIGIvbGli L2dhbGF4eS90b29scy9pbXBfZXhwL3VucGFja190YXJfZ3pfYXJjaGl2ZS5weQpAQCAtNiw2ICs2 LDcgQEAKICAgICAtLVt1cmx8ZmlsZV0gc291cmNlIHR5cGUsIGVpdGhlciBhIFVSTCBvciBhIGZp bGUuCiAiIiIKPTIwCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBvcHRwYXJzZQogaW1w b3J0IHRhcmZpbGUKQEAgLTQzLDYgKzQ0LDIyIEBACiAgICAgICAgIHJldHVybiBOb25lCj0yMAo9 MjAKK2RlZiBjaGVja19hcmNoaXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGlyICk6CisgICAgIiIi CisgICAgRW5zdXJlIHRoYXQgYSB0YXIgYXJjaGl2ZSBoYXMgbm8gYWJzb2x1dGUgcGF0aHMgb3Ig cmVsYXRpdmUgcGF0aHMgb3V0cz0KaWRlCisgICAgdGhlIGFyY2hpdmUuCisgICAgIiIiCisgICAg d2l0aCB0YXJmaWxlLm9wZW4oIGFyY2hpdmVfZmlsZSwgbW9kZT0zRCdyOmd6JyApIGFzIGFyY2hp dmVfZnA6CisgICAgICAgIGZvciBhcmNfcGF0aCBpbiBhcmNoaXZlX2ZwLmdldG5hbWVzKCk6Cisg ICAgICAgICAgICBhc3NlcnQgb3MucGF0aC5ub3JtcGF0aCgKKyAgICAgICAgICAgICAgICBvcy5w YXRoLmpvaW4oCisgICAgICAgICAgICAgICAgICAgIGRlc3RfZGlyLAorICAgICAgICAgICAgICAg ICAgICBhcmNfcGF0aAorICAgICAgICAgICAgICAgICkgKS5zdGFydHN3aXRoKCBkZXN0X2Rpci5y c3RyaXAob3Muc2VwKSArIG9zLnNlcCApLCBcCisgICAgICAgICAgICAgICAgIkFyY2hpdmUgbWVt YmVyIHdvdWxkIGV4dHJhY3Qgb3V0c2lkZSB0YXJnZXQgZGlyZWN0b3J5OiAlcz0KIiAlIGFyY19w YXRoCisgICAgcmV0dXJuIFRydWUKKworCiBkZWYgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVfZmls ZSwgZGVzdF9kaXIgKToKICAgICAiIiIKICAgICBVbnBhY2sgYSB0YXIgYW5kL29yIGd6aXBwZWQg YXJjaGl2ZSBpbnRvIGEgZGVzdGluYXRpb24gZGlyZWN0b3J5LgpAQCAtNTEsMTMgKzY4LDggQEAK ICAgICBhcmNoaXZlX2ZwLmV4dHJhY3RhbGwoIHBhdGg9M0RkZXN0X2RpciApCiAgICAgYXJjaGl2 ZV9mcC5jbG9zZSgpCj0yMAotaWYgX19uYW1lX18gPTNEPTNEICJfX21haW5fXyI6Ci0gICAgIyBQ YXJzZSBjb21tYW5kIGxpbmUuCi0gICAgcGFyc2VyID0zRCBvcHRwYXJzZS5PcHRpb25QYXJzZXIo KQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCAnLVUnLCAnLS11cmwnLCBkZXN0PTNEJ2lzX3VybCcs IGFjdGlvbj0zRCJzdG9yZV90cnU9CmUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKLSAg ICBwYXJzZXIuYWRkX29wdGlvbiggJy1GJywgJy0tZmlsZScsIGRlc3Q9M0QnaXNfZmlsZScsIGFj dGlvbj0zRCJzdG9yZV90PQpydWUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKLSAgICBw YXJzZXIuYWRkX29wdGlvbiggJy1lJywgJy0tZW5jb2RlZCcsIGRlc3Q9M0QnaXNfYjY0ZW5jb2Rl ZCcsIGFjdGlvbj0KPTNEInN0b3JlX3RydWUiLCBkZWZhdWx0PTNERmFsc2UsIGhlbHA9M0QnU291 cmNlIGFuZCBkZXN0aW5hdGlvbiBkaXIgdmFsdWVzPQogYXJlIGJhc2U2NCBlbmNvZGVkLicgKQot ICAgIChvcHRpb25zLCBhcmdzKSA9M0QgcGFyc2VyLnBhcnNlX2FyZ3MoKQorCitkZWYgbWFpbihv cHRpb25zLCBhcmdzKToKICAgICBpc191cmwgPTNEIGJvb2woIG9wdGlvbnMuaXNfdXJsICkKICAg ICBpc19maWxlID0zRCBib29sKCBvcHRpb25zLmlzX2ZpbGUgKQogICAgIGFyY2hpdmVfc291cmNl LCBkZXN0X2RpciA9M0QgYXJncwpAQCAtNjYsMTQgKzc4LDI1IEBACiAgICAgICAgIGFyY2hpdmVf c291cmNlID0zRCBiNjRkZWNvZGUoIGFyY2hpdmVfc291cmNlICkKICAgICAgICAgZGVzdF9kaXIg PTNEIGI2NGRlY29kZSggZGVzdF9kaXIgKQo9MjAKKyAgICAjIEdldCBhcmNoaXZlIGZyb20gVVJM LgorICAgIGlmIGlzX3VybDoKKyAgICAgICAgYXJjaGl2ZV9maWxlID0zRCB1cmxfdG9fZmlsZSgg YXJjaGl2ZV9zb3VyY2UsIHRlbXBmaWxlLk5hbWVkVGVtcG9yPQphcnlGaWxlKCBkaXI9M0RkZXN0 X2RpciApLm5hbWUgKQorICAgIGVsaWYgaXNfZmlsZToKKyAgICAgICAgYXJjaGl2ZV9maWxlID0z RCBhcmNoaXZlX3NvdXJjZQorCisgICAgIyBVbnBhY2sgYXJjaGl2ZS4KKyAgICBjaGVja19hcmNo aXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGlyICkKKyAgICB1bnBhY2tfYXJjaGl2ZSggYXJjaGl2 ZV9maWxlLCBkZXN0X2RpciApCisKKworaWYgX19uYW1lX18gPTNEPTNEICJfX21haW5fXyI6Cisg ICAgIyBQYXJzZSBjb21tYW5kIGxpbmUuCisgICAgcGFyc2VyID0zRCBvcHRwYXJzZS5PcHRpb25Q YXJzZXIoKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCAnLVUnLCAnLS11cmwnLCBkZXN0PTNEJ2lz X3VybCcsIGFjdGlvbj0zRCJzdG9yZV90cnU9CmUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4n ICkKKyAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1GJywgJy0tZmlsZScsIGRlc3Q9M0QnaXNfZmls ZScsIGFjdGlvbj0zRCJzdG9yZV90PQpydWUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkK KyAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1lJywgJy0tZW5jb2RlZCcsIGRlc3Q9M0QnaXNfYjY0 ZW5jb2RlZCcsIGFjdGlvbj0KPTNEInN0b3JlX3RydWUiLCBkZWZhdWx0PTNERmFsc2UsIGhlbHA9 M0QnU291cmNlIGFuZCBkZXN0aW5hdGlvbiBkaXIgdmFsdWVzPQogYXJlIGJhc2U2NCBlbmNvZGVk LicgKQorICAgIChvcHRpb25zLCBhcmdzKSA9M0QgcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgIHRy eToKLSAgICAgICAgIyBHZXQgYXJjaGl2ZSBmcm9tIFVSTC4KLSAgICAgICAgaWYgaXNfdXJsOgot ICAgICAgICAgICAgYXJjaGl2ZV9maWxlID0zRCB1cmxfdG9fZmlsZSggYXJjaGl2ZV9zb3VyY2Us IHRlbXBmaWxlLk5hbWVkVGU9Cm1wb3JhcnlGaWxlKCBkaXI9M0RkZXN0X2RpciApLm5hbWUgKQot ICAgICAgICBlbGlmIGlzX2ZpbGU6Ci0gICAgICAgICAgICBhcmNoaXZlX2ZpbGUgPTNEIGFyY2hp dmVfc291cmNlCi0KLSAgICAgICAgIyBVbnBhY2sgYXJjaGl2ZS4KLSAgICAgICAgdW5wYWNrX2Fy Y2hpdmUoIGFyY2hpdmVfZmlsZSwgZGVzdF9kaXIgKQorICAgICAgICBtYWluKG9wdGlvbnMsIGFy Z3MpCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAgcHJpbnQgIkVycm9yIHVucGFj a2luZyB0YXIvZ3ogYXJjaGl2ZTogJXMiICUgZSwgc3lzLnN0ZGVycgoKZGlmZiAtciBjMWNjNzZm YTNkNjZlZmIwNzBmMTk2MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1 M2UxPQpmZDA5Y2NhZTQ4MTk0MGE0OSBsaWIvZ2FsYXh5L3V0aWwvX19pbml0X18ucHkKLS0tIGEv bGliL2dhbGF4eS91dGlsL19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvdXRpbC9fX2luaXRf Xy5weQpAQCAtMjcsNyArMjcsNyBAQAo9MjAKIGZyb20gZW1haWwuTUlNRVRleHQgaW1wb3J0IE1J TUVUZXh0Cj0yMAotZnJvbSBvcy5wYXRoIGltcG9ydCByZWxwYXRoCitmcm9tIG9zLnBhdGggaW1w b3J0IHJlbHBhdGgsIG5vcm1wYXRoCiBmcm9tIGhhc2hsaWIgaW1wb3J0IG1kNQogZnJvbSBpdGVy dG9vbHMgaW1wb3J0IGl6aXAKPTIwCkBAIC0xMTQzLDYgKzExNDMsMjMgQEAKIGRlZiBnYWxheHlf ZGlyZWN0b3J5KCk6CiAgICAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChnYWxheHlfcm9vdF9wYXRo KQo9MjAKKworZGVmIHNhZmVfcmVscGF0aChwYXRoKToKKyAgICAiIiIKKyAgICBHaXZlbiB3aGF0 IHdlIGV4cGVjdCB0byBiZSBhIHJlbGF0aXZlIHBhdGgsIGRldGVybWluZSB3aGV0aGVyIHRoZSBw YXRoCisgICAgd291bGQgZXhpc3QgaW5zaWRlIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKworICAg IDp0eXBlICAgcGF0aDogICBzdHJpbmcKKyAgICA6cGFyYW0gIHBhdGg6ICAgYSBwYXRoIHRvIGNo ZWNrCisgICAgOnJ0eXBlOiAgICAgICAgIGJvb2wKKyAgICA6cmV0dXJuczogICAgICAgYGBUcnVl YGAgaWYgcGF0aCBpcyByZWxhdGl2ZSBhbmQgZG9lcyBub3QgcmVmZXJlbmNlIGEgPQpwYXRoCisg ICAgICAgIGluIGEgcGFyZW50IGRpcmVjdG9yeSwgYGBGYWxzZWBgIG90aGVyd2lzZS4KKyAgICAi IiIKKyAgICBpZiBwYXRoLnN0YXJ0c3dpdGgob3Muc2VwKSBvciBub3JtcGF0aChwYXRoKS5zdGFy dHN3aXRoKG9zLnBhcmRpcik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBUcnVl CisKKwogaWYgX19uYW1lX18gPTNEPTNEICdfX21haW5fXyc6CiAgICAgaW1wb3J0IGRvY3Rlc3QK ICAgICBkb2N0ZXN0LnRlc3Rtb2Qoc3lzLm1vZHVsZXNbX19uYW1lX19dLCB2ZXJib3NlPTNERmFs c2UpCgpkaWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIg N2NhOGYwZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IGxpYi9nYWxheHkvd2Vi YXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkv YXBpL3Rvb2xzLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5 CkBAIC03NywxNCArNzcsMTQgQEAKICAgID0yMAogICAgIEBfZnV0dXJlX2V4cG9zZV9hcGkKICAg ICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgcmVsb2FkKCBzZWxmLCB0cmFucywgdG9vbF9p ZCwgKiprd2QgKToKKyAgICBkZWYgcmVsb2FkKCBzZWxmLCB0cmFucywgaWQsICoqa3dkICk6CiAg ICAgICAgICIiIgogICAgICAgICBHRVQgL2FwaS90b29scy97dG9vbF9pZH0vcmVsb2FkCiAgICAg ICAgIFJlbG9hZCBzcGVjaWZpZWQgdG9vbC4KICAgICAgICAgIiIiCiAgICAgICAgIHRvb2xib3gg PTNEIHRyYW5zLmFwcC50b29sYm94Ci0gICAgICAgIGdhbGF4eS5xdWV1ZV93b3JrZXIuc2VuZF9j b250cm9sX3Rhc2soIHRyYW5zLCAncmVsb2FkX3Rvb2wnLCBub29wXz0Kc2VsZj0zRFRydWUsIGt3 YXJncz0zRHsgJ3Rvb2xfaWQnOiB0b29sX2lkIH0gKQotICAgICAgICBtZXNzYWdlLCBzdGF0dXMg PTNEIHRyYW5zLmFwcC50b29sYm94LnJlbG9hZF90b29sX2J5X2lkKCB0b29sX2lkICkKKyAgICAg ICAgZ2FsYXh5LnF1ZXVlX3dvcmtlci5zZW5kX2NvbnRyb2xfdGFzayggdHJhbnMsICdyZWxvYWRf dG9vbCcsIG5vb3BfPQpzZWxmPTNEVHJ1ZSwga3dhcmdzPTNEeyAndG9vbF9pZCc6IGlkIH0gKQor ICAgICAgICBtZXNzYWdlLCBzdGF0dXMgPTNEIHRyYW5zLmFwcC50b29sYm94LnJlbG9hZF90b29s X2J5X2lkKCBpZCApCiAgICAgICAgIHJldHVybiB7IHN0YXR1czogbWVzc2FnZSB9Cj0yMAogICAg IEBfZnV0dXJlX2V4cG9zZV9hcGlfYW5vbnltb3VzCgpkaWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3 MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYwZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDlj Y2FlNDgxOTQwYTQ5IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvYWRtaW5f dG9vbHNoZWQucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9h ZG1pbl90b29sc2hlZC5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xs ZXJzL2FkbWluX3Rvb2xzaGVkLnB5CkBAIC0zODMsMTEgKzM4MywxMSBAQAo9MjAKICAgICBAd2Vi Lmpzb24KICAgICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMo IHNlbGYsIHRyYW5zLCBmaWxlX3BhdGggKToKKyAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNl bGYsIHRyYW5zLCBmaWxlX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAgICAgIyBBdm9pZCBj YWNoaW5nCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8t Y2FjaGUnCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAn Ci0gICAgICAgIHJldHVybiBzdWMuZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggZmlsZV9w YXRoICkKKyAgICAgICAgcmV0dXJuIHN1Yy5nZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCB0 cmFucy5hcHAsIGZpbGVfcGF0aCwgcmVwPQpvc2l0b3J5X2lkICkKPTIwCiAgICAgQHdlYi5leHBv c2UKICAgICBAd2ViLnJlcXVpcmVfYWRtaW4KQEAgLTk2MCwxMSArOTYwLDExIEBACj0yMAogICAg IEB3ZWIuanNvbgogICAgIEB3ZWIucmVxdWlyZV9hZG1pbgotICAgIGRlZiBvcGVuX2ZvbGRlcigg c2VsZiwgdHJhbnMsIGZvbGRlcl9wYXRoICk6CisgICAgZGVmIG9wZW5fZm9sZGVyKCBzZWxmLCB0 cmFucywgZm9sZGVyX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAgICAgIyBBdm9pZCBjYWNo aW5nCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2Fj aGUnCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0g ICAgICAgIHJldHVybiBzdWMub3Blbl9yZXBvc2l0b3J5X2ZpbGVzX2ZvbGRlciggZm9sZGVyX3Bh dGggKQorICAgICAgICByZXR1cm4gc3VjLm9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIHRy YW5zLmFwcCwgZm9sZGVyX3BhdGgsIHI9CmVwb3NpdG9yeV9pZCApCj0yMAogICAgIEB3ZWIuZXhw b3NlCiAgICAgQHdlYi5yZXF1aXJlX2FkbWluCgpkaWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYx OTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYwZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2Fl NDgxOTQwYTQ5IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvcmVxdWVzdHNf YWRtaW4ucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9yZXF1 ZXN0c19hZG1pbi5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJz L3JlcXVlc3RzX2FkbWluLnB5CkBAIC02LDEwICs2LDcgQEAKIGZyb20gZ2FsYXh5IGltcG9ydCBt b2RlbCwgdXRpbAogZnJvbSBnYWxheHkud2ViLmZvcm1fYnVpbGRlciBpbXBvcnQgKgogZnJvbSAu cmVxdWVzdHNfY29tbW9uIGltcG9ydCBSZXF1ZXN0c0dyaWQsIGludmFsaWRfaWRfcmVkaXJlY3QK LWZyb20gZ2FsYXh5IGltcG9ydCBlZ2dzCi1lZ2dzLnJlcXVpcmUoImFtcXAiKQotaW1wb3J0IGFt cXAKLWltcG9ydCBsb2dnaW5nLCBvcywgcGV4cGVjdCwgQ29uZmlnUGFyc2VyCitpbXBvcnQgbG9n Z2luZywgb3MsIENvbmZpZ1BhcnNlcgo9MjAKIGxvZyA9M0QgbG9nZ2luZy5nZXRMb2dnZXIoIF9f bmFtZV9fICkKPTIwCkBAIC0zNTEsMTgyICszNDgsNiBAQAogICAgICAgICByZXR1cm4gdHJhbnMu cmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmU9CnF1 ZXN0c19hZG1pbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWN0aW9uPTNEJ21hbmFnZT0KX2RhdGFzZXRzJywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWQ9 M0RzYW1wPQpsZV9pZCApICkKLSAgICBAd2ViLmV4cG9zZQotICAgIEB3ZWIucmVxdWlyZV9hZG1p bgotICAgIGRlZiBzZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXIoIHNlbGYsIHRyYW5zLCAqKmt3 ZCApOgotICAgICAgICBwYXJhbXMgPTNEIHV0aWwuUGFyYW1zKCBrd2QgKQotICAgICAgICBtZXNz YWdlID0zRCB1dGlsLnJlc3RvcmVfdGV4dCggcGFyYW1zLmdldCggJ21lc3NhZ2UnLCAnJyApICkK LSAgICAgICAgc3RhdHVzID0zRCBwYXJhbXMuZ2V0KCAnc3RhdHVzJywgJ2RvbmUnICkKLSAgICAg ICAgcmVxdWVzdF9pZCA9M0Qga3dkLmdldCggJ3JlcXVlc3RfaWQnLCBOb25lICkKLSAgICAgICAg ZXh0ZXJuYWxfc2VydmljZV9pZCA9M0Qga3dkLmdldCggJ2V4dGVybmFsX3NlcnZpY2VfaWQnLCBO b25lICkKLSAgICAgICAgZmlsZXMgPTNEIFtdCi0gICAgICAgIHJlcXVlc3QgPTNEIHRyYW5zLnNh X3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLlJlcXVlc3QgKS5nZXQoIHRyYT0KbnMuc2VjdXJp dHkuZGVjb2RlX2lkKCByZXF1ZXN0X2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlID0z RCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2RlbC5FeHRlcm5hbFM9CmVydmljZSAp LmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBleHRlcm5hbF9zZXJ2aWNlX2lkICkgKQot ICAgICAgICAjIExvYWQgdGhlIGRhdGEgdHJhbnNmZXIgc2V0dGluZ3MKLSAgICAgICAgZXh0ZXJu YWxfc2VydmljZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRyYW5zICkKLSAgICAgICAg c2NwX2NvbmZpZ3MgPTNEIGV4dGVybmFsX3NlcnZpY2UuZGF0YV90cmFuc2ZlclsgdHJhbnMubW9k ZWwuRXh0ZXJuPQphbFNlcnZpY2UuZGF0YV90cmFuc2Zlcl9wcm90b2NvbC5TQ1AgXQotICAgICAg ICBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlciA9M0QgdXRpbC5yZXN0b3JlX3RleHQoIHBh cmFtcy5nZXQoICc9CnNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyJywgJycgKSApCi0gICAg ICAgIGlmIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyOgotICAgICAgICAgICAgc2VsZWN0 ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXIgPTNEIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmU9 CnIuc3BsaXQoJywnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZWN0ZWRfZGF0YXNl dHNfdG9fdHJhbnNmZXIgPTNEIFtdCi0gICAgICAgIHNhbXBsZV9pZCA9M0Qga3dkLmdldCggJ3Nh bXBsZV9pZCcsICdub25lJyApCi0gICAgICAgIHNhbXBsZV9pZF9zZWxlY3RfZmllbGQgPTNEIHNl bGYuX19idWlsZF9zYW1wbGVfaWRfc2VsZWN0X2ZpZWxkKCB0cj0KYW5zLCByZXF1ZXN0LCBzYW1w bGVfaWQgKQotICAgICAgICBpZiBzYW1wbGVfaWQgIT0zRCAnbm9uZSc6Ci0gICAgICAgICAgICBz YW1wbGUgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLlNhbXBsZSApLmdl dCggdD0KcmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIHNhbXBsZV9pZCApICkKLSAgICAgICAgZWxz ZToKLSAgICAgICAgICAgIHNhbXBsZSA9M0QgTm9uZQotICAgICAgICAjIFRoZSBfX2dldF9maWxl cygpIG1ldGhvZCByZWRpcmVjdHMgaGVyZSB3aXRoIGEgc3RhdHVzIG9mICdlcnJvcic9CiBhbmQg YSBtZXNzYWdlIGlmIHRoZXJlCi0gICAgICAgICMgd2FzIGEgcHJvYmxlbSByZXRyaWV2aW5nIHRo ZSBmaWxlcy4KLSAgICAgICAgaWYgcGFyYW1zLmdldCggJ3NlbGVjdF9kYXRhc2V0c190b190cmFu c2Zlcl9idXR0b24nLCBGYWxzZSApOgotICAgICAgICAgICAgIyBHZXQgdGhlIHNhbXBsZSB0aGF0 IHdhcyBzZXF1ZW5jZWQgdG8gcHJvZHVjZSB0aGVzZSBkYXRhc2V0cy4KLSAgICAgICAgICAgIGlm IHNhbXBsZV9pZCA9M0Q9M0QgJ25vbmUnOgotICAgICAgICAgICAgICAgIGRlbCBrd2RbICdzZWxl Y3RfZGF0YXNldHNfdG9fdHJhbnNmZXJfYnV0dG9uJyBdCi0gICAgICAgICAgICAgICAgbWVzc2Fn ZSA9M0QgJ1NlbGVjdCB0aGUgc2FtcGxlIHRoYXQgd2FzIHNlcXVlbmNlZCB0byBwcm9kdT0KY2Ug dGhlIGRhdGFzZXRzIHlvdSB3YW50IHRvIHRyYW5zZmVyLicKLSAgICAgICAgICAgICAgICBrd2Rb ICdtZXNzYWdlJyBdID0zRCBtZXNzYWdlCi0gICAgICAgICAgICAgICAga3dkWyAnc3RhdHVzJyBd ID0zRCAnZXJyb3InCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRf cmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVzdHNfYWRtaW4nLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYWN0aW9uPQo9M0Qnc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyJywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICoqa3dkICkgKQotICAgICAgICAgICAgaWYgbm90IHNhbXBsZS5saWJyYXJ5OgotICAgICAg ICAgICAgICAgICMgRGlzcGxheSBhbiBlcnJvciBpZiBhIHNhbXBsZSBoYXMgYmVlbiBzZWxlY3Rl ZCB0aGF0Ci0gICAgICAgICAgICAgICAgIyBoYXMgbm90IHlldCBiZWVuIGFzc29jaWF0ZWQgd2l0 aCBhIGRlc3RpbmF0aW9uIGxpYnJhcnkuCi0gICAgICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ1Nl bGVjdCBhIHRhcmdldCBkYXRhIGxpYnJhcnkgYW5kIGZvbGRlciBmb3IgdD0KaGUgc2FtcGxlIGJl Zm9yZSBzZWxlY3RpbmcgdGhlIGRhdGFzZXRzLicKLSAgICAgICAgICAgICAgICBzdGF0dXMgPTNE ICdlcnJvcicKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRp cmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsPQplcj0zRCdyZXF1ZXN0c19jb21tb24nLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWN0aW9uPQo9M0QnZWRpdF9zYW1wbGVzJywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNudHJsbGVyPQo9M0Qn cmVxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9M0R0cmE9Cm5zLnNlY3VyaXR5LmVuY29kZV9p ZCggcmVxdWVzdC5pZCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPQo9M0RzdGF0dXMsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt ZXNzYWdlPQo9M0RtZXNzYWdlICkgKQotICAgICAgICAgICAgIyBTYXZlIHRoZSBzYW1wbGUgZGF0 YXNldHMKLSAgICAgICAgICAgIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMgPTNEIHNlbGYuX19j cmVhdGVfc2FtcGxlX2RhdGFzZXRzKCB0PQpyYW5zLCBzYW1wbGUsIHNlbGVjdGVkX2RhdGFzZXRz X3RvX3RyYW5zZmVyLCBleHRlcm5hbF9zZXJ2aWNlICkKLSAgICAgICAgICAgIGlmIHNhbXBsZV9k YXRhc2V0X2ZpbGVfbmFtZXM6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ0RhdGFzZXRz ICglcykgaGF2ZSBiZWVuIHNlbGVjdGVkIGZvciBzYW1wbGUgKD0KJXMpJyAlIFwKLSAgICAgICAg ICAgICAgICAgICAgKCBzdHIoIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMgKVsxOi0xXS5yZXBs YWNlKCAiJyIsPQogIiIgKSwgc2FtcGxlLm5hbWUgKQotICAgICAgICAgICAgcmV0dXJuIHRyYW5z LnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbGVyPQo9M0QncmVx dWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhY3Rpb249M0QnbWE9Cm5hZ2VfZGF0YXNldHMnLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXF1ZXN0X2lkPQo9M0RyZXF1ZXN0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWQ9M0Q9CnNhbXBsZV9pZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWVzc2FnZT0zRG1lPQpzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTNEc3RhPQp0dXMgKSApCi0g ICAgICAgIHJldHVybiB0cmFucy5maWxsX3RlbXBsYXRlKCAnL2FkbWluL3JlcXVlc3RzL3NlbGVj dF9kYXRhc2V0c190b190cj0KYW5zZmVyLm1ha28nLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY250cmxsZXI9M0QncmVxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdD0zRHJlcXVlc3QsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlPTNEZXh0ZXJuYWxfc2VydmljZSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcF9jb25maWdzPTNEc2NwX2Nv bmZpZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGU9M0RzYW1w bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWRfc2VsZWN0 X2ZpZWxkPTNEc2FtcGxlX2lkX3NlbD0KZWN0X2ZpZWxkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RhdHVzPTNEc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbWVzc2FnZT0zRG1lc3NhZ2UgKQotICAgIEB3ZWIuanNvbgotICAgIGRlZiBn ZXRfZmlsZV9kZXRhaWxzKCBzZWxmLCB0cmFucywgcmVxdWVzdF9pZCwgZXh0ZXJuYWxfc2Vydmlj ZV9pZCwgZm89CmxkZXJfcGF0aCApOgotICAgICAgICBkZWYgcHJpbnRfdGlja3MoIGQgKToKLSAg ICAgICAgICAgICMgcGV4cGVjdCB0aW1lb3V0IG1ldGhvZAotICAgICAgICAgICAgcGFzcwotICAg ICAgICAjIEF2b2lkIGNhY2hpbmcKLSAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJh Z21hJ10gPTNEICduby1jYWNoZScKLSAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhw aXJlcyddID0zRCAnMCcKLSAgICAgICAgcmVxdWVzdCA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVy eSggdHJhbnMubW9kZWwuUmVxdWVzdCApLmdldCggdHJhPQpucy5zZWN1cml0eS5kZWNvZGVfaWQo IHJlcXVlc3RfaWQgKSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UgPTNEIHRyYW5zLnNhX3Nl c3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLkV4dGVybmFsUz0KZXJ2aWNlICkuZ2V0KCB0cmFucy5z ZWN1cml0eS5kZWNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2VfaWQgKSApCi0gICAgICAgIGV4dGVy bmFsX3NlcnZpY2UubG9hZF9kYXRhX3RyYW5zZmVyX3NldHRpbmdzKCB0cmFucyApCi0gICAgICAg IHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1v ZGVsLkV4dGVybj0KYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAg ICAgY21kICA9M0QgJ3NzaCAlc0AlcyAibHMgLW9naHAgXCclc1wnIicgJSAoIHNjcF9jb25maWdz WyAndXNlcl9uYW1lPQonIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2NwX2NvbmZpZ3NbICdob3N0JyBdLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlcl9wYXRoICkKLSAgICAgICAgIyBIYW5k bGUgdGhlIGF1dGhlbnRpY2F0aW9uIG1lc3NhZ2UgaWYgc3NoIGtleXMgYXJlIG5vdCBzZXQgLSB0 aGUgPQptZXNzYWdlIGlzCi0gICAgICAgICMgc29tZXRoaW5nIGxpa2U6ICJBcmUgeW91IHN1cmUg eW91IHdhbnQgdG8gY29udGludWUgY29ubmVjdGluZyAoeT0KZXMvbm8pLiIKLSAgICAgICAgb3V0 cHV0ID0zRCBwZXhwZWN0LnJ1biggY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXZlbnRzPTNEeyAnXCh5ZXNcL25vXClcLionIDogJ3llc1xyXG4nLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJy5zc3dvcmQ6KicgOiBzY3BfY29uZmlnc1sgJ3Bhc3N3 b3I9CmQnIF0gKyAnXHJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZXhwZWN0LlRJTUVPVVQgOiBwcmludF90aWNrcyB9LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGltZW91dD0zRDEwICkKLSAgICAgICAgZm9yIHBhc3N3b3JkX3N0ciBpbiBbICdQ YXNzd29yZDpcclxuJywgJ3Bhc3N3b3JkOlxyXG4nIF06Ci0gICAgICAgICAgICAjIEVsaW1pbmF0 ZSB0aGUgb3V0cHV0IGNyZWF0ZWQgdXNpbmcgc3NoIGZyb20gdGhlIHRyZWUKLSAgICAgICAgICAg IGlmIHBhc3N3b3JkX3N0ciBpbiBvdXRwdXQ6Ci0gICAgICAgICAgICAgICAgb3V0cHV0ID0zRCBv dXRwdXQucmVwbGFjZSggcGFzc3dvcmRfc3RyLCAnJyApCi0gICAgICAgIHJldHVybiB1bmljb2Rl KCBvdXRwdXQucmVwbGFjZSggJ1xyXG4nLCAnPGJyLz4nICkgKQotICAgIEB3ZWIuanNvbgotICAg IGRlZiBvcGVuX2ZvbGRlciggc2VsZiwgdHJhbnMsIHJlcXVlc3RfaWQsIGV4dGVybmFsX3NlcnZp Y2VfaWQsIGtleSApOgotICAgICAgICAjIEF2b2lkIGNhY2hpbmcKLSAgICAgICAgdHJhbnMucmVz cG9uc2UuaGVhZGVyc1snUHJhZ21hJ10gPTNEICduby1jYWNoZScKLSAgICAgICAgdHJhbnMucmVz cG9uc2UuaGVhZGVyc1snRXhwaXJlcyddID0zRCAnMCcKLSAgICAgICAgcmVxdWVzdCA9M0QgdHJh bnMuc2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMubW9kZWwuUmVxdWVzdCApLmdldCggdHJhPQpucy5z ZWN1cml0eS5kZWNvZGVfaWQoIHJlcXVlc3RfaWQgKSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZp Y2UgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLkV4dGVybmFsUz0KZXJ2 aWNlICkuZ2V0KCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2VfaWQg KSApCi0gICAgICAgIGZvbGRlcl9wYXRoID0zRCBrZXkKLSAgICAgICAgZmlsZXNfbGlzdCA9M0Qg c2VsZi5fX2dldF9maWxlcyggdHJhbnMsIHJlcXVlc3QsIGV4dGVybmFsX3NlcnZpY2UsPQogZm9s ZGVyX3BhdGggKQotICAgICAgICBmb2xkZXJfY29udGVudHMgPTNEIFtdCi0gICAgICAgIGZvciBm aWxlbmFtZSBpbiBmaWxlc19saXN0OgotICAgICAgICAgICAgaXNfZm9sZGVyID0zRCBGYWxzZQot ICAgICAgICAgICAgaWYgZmlsZW5hbWUgYW5kIGZpbGVuYW1lWy0xXSA9M0Q9M0Qgb3Muc2VwOgot ICAgICAgICAgICAgICAgIGlzX2ZvbGRlciA9M0QgVHJ1ZQotICAgICAgICAgICAgaWYgZmlsZW5h bWU6Ci0gICAgICAgICAgICAgICAgZnVsbF9wYXRoID0zRCBvcy5wYXRoLmpvaW4oIGZvbGRlcl9w YXRoLCBmaWxlbmFtZSApCi0gICAgICAgICAgICAgICAgbm9kZSA9M0QgeyAidGl0bGUiOiBmaWxl bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiaXNGb2xkZXIiOiBpc19mb2xkZXIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgImlzTGF6eSI6IGlzX2ZvbGRlciwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAidG9vbHRpcCI6IGZ1bGxfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAia2V5IjogZnVsbF9wYXRoIH0KLSAgICAgICAgICAgICAgICBmb2xkZXJfY29udGVudHMu YXBwZW5kKCBub2RlICkKLSAgICAgICAgcmV0dXJuIGZvbGRlcl9jb250ZW50cwotICAgIGRlZiBf X2dldF9maWxlcyggc2VsZiwgdHJhbnMsIHJlcXVlc3QsIGV4dGVybmFsX3NlcnZpY2UsIGZvbGRl cl9wYXRoICk6Ci0gICAgICAgICMgUmV0cmlldmVzIHRoZSBmaWxlbmFtZXMgdG8gYmUgdHJhbnNm ZXJyZWQgZnJvbSB0aGUgcmVtb3RlIGhvc3QuCi0gICAgICAgIG9rID0zRCBUcnVlCi0gICAgICAg IGV4dGVybmFsX3NlcnZpY2UubG9hZF9kYXRhX3RyYW5zZmVyX3NldHRpbmdzKCB0cmFucyApCi0g ICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRy YW5zLm1vZGVsLkV4dGVybj0KYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0K LSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzWyAnaG9zdCcgXSBvciBub3Qgc2NwX2NvbmZpZ3Nb ICd1c2VyX25hbWUnIF0gb3IgPQpub3Qgc2NwX2NvbmZpZ3NbICdwYXNzd29yZCcgXToKLSAgICAg ICAgICAgIHN0YXR1cyA9M0QgJ2Vycm9yJwotICAgICAgICAgICAgbWVzc2FnZSA9M0QgIkVycm9y IGluIGV4dGVybmFsIHNlcnZpY2UgbG9naW4gaW5mb3JtYXRpb24uIgotICAgICAgICAgICAgb2sg PTNEIEZhbHNlCi0gICAgICAgIGRlZiBwcmludF90aWNrcyggZCApOgotICAgICAgICAgICAgcGFz cwotICAgICAgICBjbWQgID0zRCAnc3NoICVzQCVzICJscyAtcCBcJyVzXCciJyAlICggc2NwX2Nv bmZpZ3NbICd1c2VyX25hbWUnIF09Ciwgc2NwX2NvbmZpZ3NbICdob3N0JyBdLCBmb2xkZXJfcGF0 aCApCi0gICAgICAgICMgSGFuZGxlIHRoZSBhdXRoZW50aWNhdGlvbiBtZXNzYWdlIGlmIGtleXMg YXJlIG5vdCBzZXQgLSB0aGUgbWVzcz0KYWdlIGlzCi0gICAgICAgICMgc29tZXRoaW5nIGxpa2U6 ICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY29udGludWUgY29ubmVjdGluZyAoeT0KZXMvbm8p LiIKLSAgICAgICAgb3V0cHV0ID0zRCBwZXhwZWN0LnJ1biggY21kLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXZlbnRzPTNEeyAnXCh5ZXNcL25vXClcLionIDogJ3llc1xyXG4nLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLnNzd29yZDoqJyA6IHNjcF9j b25maWdzWyAncGFzc3dvcmQ9CicgXSArICdcclxuJywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBleHBlY3QuVElNRU9VVCA6IHByaW50X3RpY2tzIH0sCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTNEMTAgKQotICAgICAgICBpZiAnTm8gc3Vj aCBmaWxlIG9yIGRpcmVjdG9yeScgaW4gb3V0cHV0OgotICAgICAgICAgICAgc3RhdHVzID0zRCAn ZXJyb3InCi0gICAgICAgICAgICBtZXNzYWdlID0zRCAiTm8gZm9sZGVyIG5hbWVkICglcykgZXhp c3RzIG9uIHRoZSBleHRlcm5hbCBzZXJ2aT0KY2UuIiAlIGZvbGRlcl9wYXRoCi0gICAgICAgICAg ICBvayA9M0QgRmFsc2UKLSAgICAgICAgaWYgb2s6Ci0gICAgICAgICAgICBpZiAnYXNzd29yZDon IGluIG91dHB1dDoKLSAgICAgICAgICAgICAgICAjIEVsaW1pbmF0ZSB0aGUgb3V0cHV0IGNyZWF0 ZWQgdXNpbmcgc3NoIGZyb20gdGhlIHRyZWUKLSAgICAgICAgICAgICAgICBvdXRwdXRfYXNfbGlz dCA9M0Qgb3V0cHV0LnNwbGl0bGluZXMoKVsgMTogXQotICAgICAgICAgICAgZWxzZToKLSAgICAg ICAgICAgICAgICBvdXRwdXRfYXNfbGlzdCA9M0Qgb3V0cHV0LnNwbGl0bGluZXMoKQotICAgICAg ICAgICAgcmV0dXJuIG91dHB1dF9hc19saXN0Ci0gICAgICAgIHJldHVybiB0cmFucy5yZXNwb25z ZS5zZW5kX3JlZGlyZWN0KCB3ZWIudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZT0KcXVlc3RzX2Fk bWluJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhY3Rpb249M0Qnc2VsZWN0PQpfZGF0YXNldHNfdG9fdHJhbnNmZXInLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl c3RfaWQ9M0R0cmE9Cm5zLnNlY3VyaXR5LmVuY29kZV9pZCggcmVxdWVzdC5pZCApLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVy bmFsX3NlcnZpY2U9Cl9pZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggZXh0ZXJuYWxfc2Vy dmljZS5pZCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0YXR1cz0zRHN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPTNEbWVzc2FnPQplICkgKQot ICAgIGRlZiBfX2NyZWF0ZV9zYW1wbGVfZGF0YXNldHMoIHNlbGYsIHRyYW5zLCBzYW1wbGUsIHNl bGVjdGVkX2RhdGFzZXRzX3Q9Cm9fdHJhbnNmZXIsIGV4dGVybmFsX3NlcnZpY2UgKToKLSAgICAg ICAgZXh0ZXJuYWxfc2VydmljZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRyYW5zICkK LSAgICAgICAgc2NwX2NvbmZpZ3MgPTNEIGV4dGVybmFsX3NlcnZpY2UuZGF0YV90cmFuc2Zlclsg dHJhbnMubW9kZWwuRXh0ZXJuPQphbFNlcnZpY2UuZGF0YV90cmFuc2Zlcl9wcm90b2NvbC5TQ1Ag XQotICAgICAgICBzYW1wbGVfZGF0YXNldF9maWxlX25hbWVzID0zRCBbXQotICAgICAgICBpZiBz ZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlcjoKLSAgICAgICAgICAgIGZvciBmaWxlcGF0aCBp biBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlcjoKLSAgICAgICAgICAgICAgICAjIEZJWE1F OiBoYW5kbGUgZm9sZGVyIHNlbGVjdGlvbiAtIGlnbm9yZSBmb2xkZXJzIGZvciBub3cKLSAgICAg ICAgICAgICAgICBpZiBmaWxlcGF0aFstMV0gIT0zRCBvcy5zZXA6Ci0gICAgICAgICAgICAgICAg ICAgIG5hbWUgPTNEIHNlbGYuX19yZW5hbWVfZGF0YXNldCggc2FtcGxlLCBmaWxlcGF0aC5zcGxp dD0KKCAnLycgKVstMV0sIHNjcF9jb25maWdzICkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVz ID0zRCB0cmFucy5hcHAubW9kZWwuU2FtcGxlRGF0YXNldC50cmFuc2Zlcl9zdGF0PQp1cy5OT1Rf U1RBUlRFRAotICAgICAgICAgICAgICAgICAgICBzaXplID0zRCBzYW1wbGUuZ2V0X3VudHJhbnNm ZXJyZWRfZGF0YXNldF9zaXplKCBmaWxlcGE9CnRoLCBzY3BfY29uZmlncyApCi0gICAgICAgICAg ICAgICAgICAgIHNhbXBsZV9kYXRhc2V0ID0zRCB0cmFucy5tb2RlbC5TYW1wbGVEYXRhc2V0KCBz YW1wbGU9Cj0zRHNhbXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3BhdGg9Cj0zRGZpbGVwYXRoLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0YXR1cz0zRHM9CnRhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9M0RuYW09CmUsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jf bXNnPQo9M0QnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplPTNEc2l6PQplLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsX3M9CmVy dmljZT0zRGV4dGVybmFsX3NlcnZpY2UgKQotICAgICAgICAgICAgICAgICAgICB0cmFucy5zYV9z ZXNzaW9uLmFkZCggc2FtcGxlX2RhdGFzZXQgKQotICAgICAgICAgICAgICAgICAgICB0cmFucy5z YV9zZXNzaW9uLmZsdXNoKCkKLSAgICAgICAgICAgICAgICAgICAgc2FtcGxlX2RhdGFzZXRfZmls ZV9uYW1lcy5hcHBlbmQoIHN0ciggc2FtcGxlX2RhdGFzZXQuPQpuYW1lICkgKQotICAgICAgICBy ZXR1cm4gc2FtcGxlX2RhdGFzZXRfZmlsZV9uYW1lcwogICAgIGRlZiBfX3JlbmFtZV9kYXRhc2V0 KCBzZWxmLCBzYW1wbGUsIGZpbGVwYXRoLCBzY3BfY29uZmlncyApOgogICAgICAgICBuYW1lID0z RCBmaWxlcGF0aC5zcGxpdCggJy8nIClbLTFdCiAgICAgICAgIG9wdGlvbnMgPTNEIHNhbXBsZS5y ZXF1ZXN0LnR5cGUucmVuYW1lX2RhdGFzZXRfb3B0aW9ucwpAQCAtNTYxLDkwICszODIsNiBAQAog ICAgICAgICAgICAgZmx1c2hfbmVlZGVkID0zRCBUcnVlCiAgICAgICAgIGlmIGZsdXNoX25lZWRl ZDoKICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQotICAgIGRlZiBfX2NyZWF0 ZV9kYXRhX3RyYW5zZmVyX21lc3NhZ2VzKCBzZWxmLCB0cmFucywgc2FtcGxlLCBzZWxlY3RlZF9z YW09CnBsZV9kYXRhc2V0cyApOgotICAgICAgICAiIiIKLSAgICAgICAgQ3JlYXRlcyB0aGUgeG1s IG1lc3NhZ2VzIHRvIHNlbmQgdG8gdGhlIHJhYmJpdG1xIHNlcnZlci4gSXQgcmV0dXJuPQpzIGEg ZGljdGlvbmFyeSBvZiBtZXNzYWdlcwotICAgICAgICBrZXllZCBieSB0aGUgZXh0ZXJuYWwgc2Vy dmljZSB1c2VkIHRvIHRyYW5zZmVyIHRoZSBkYXRhc2V0cwotICAgICAgICAiIiIKLSAgICAgICAg IyBDcmVhdGUgdGhlIHhtbCBtZXNzYWdlIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgdGVtcGxhdGUK LSAgICAgICAgeG1sID0zRCBcCi0gICAgICAgICAgICAnJycgPGRhdGFfdHJhbnNmZXI+Ci0gICAg ICAgICAgICAgICAgICAgIDxnYWxheHlfaG9zdD4lKEdBTEFYWV9IT1NUKXM8L2dhbGF4eV9ob3N0 PgotICAgICAgICAgICAgICAgICAgICA8YXBpX2tleT4lKEFQSV9LRVkpczwvYXBpX2tleT4KLSAg ICAgICAgICAgICAgICAgICAgPGRhdGFfaG9zdD4lKERBVEFfSE9TVClzPC9kYXRhX2hvc3Q+Ci0g ICAgICAgICAgICAgICAgICAgIDxkYXRhX3VzZXI+JShEQVRBX1VTRVIpczwvZGF0YV91c2VyPgot ICAgICAgICAgICAgICAgICAgICA8ZGF0YV9wYXNzd29yZD4lKERBVEFfUEFTU1dPUkQpczwvZGF0 YV9wYXNzd29yZD4KLSAgICAgICAgICAgICAgICAgICAgPHJlcXVlc3RfaWQ+JShSRVFVRVNUX0lE KXM8L3JlcXVlc3RfaWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxzYW1wbGVfaWQ+JShTQU1QTEVf SUQpczwvc2FtcGxlX2lkPgotICAgICAgICAgICAgICAgICAgICA8bGlicmFyeV9pZD4lKExJQlJB UllfSUQpczwvbGlicmFyeV9pZD4KLSAgICAgICAgICAgICAgICAgICAgPGZvbGRlcl9pZD4lKEZP TERFUl9JRClzPC9mb2xkZXJfaWQ+Ci0gICAgICAgICAgICAgICAgICAgICUoREFUQVNFVFMpcwot ICAgICAgICAgICAgICAgIDwvZGF0YV90cmFuc2Zlcj4nJycKLSAgICAgICAgZGF0YXNldF94bWwg PTNEIFwKLSAgICAgICAgICAgICcnJzxkYXRhc2V0PgotICAgICAgICAgICAgICAgICAgIDxkYXRh c2V0X2lkPiUoSUQpczwvZGF0YXNldF9pZD4KLSAgICAgICAgICAgICAgICAgICA8bmFtZT4lKE5B TUUpczwvbmFtZT4KLSAgICAgICAgICAgICAgICAgICA8ZmlsZT4lKEZJTEUpczwvZmlsZT4KLSAg ICAgICAgICAgICAgIDwvZGF0YXNldD4nJycKLSAgICAgICAgIyBIZXJlIHdlIGdyb3VwIGFsbCB0 aGUgc2FtcGxlX2RhdGFzZXRzIGJ5IHRoZSBleHRlcm5hbCBzZXJ2aWNlIHVzPQplZCB0byB0cmFu c2ZlciB0aGVtLgotICAgICAgICAjIFRoZSBpZGVhIGlzIHRvIGJ1bmRsZSB1cCB0aGUgc2FtcGxl X2RhdGFzZXRzIHdoaWNoIHVzZXMgdGhlIHNhbWU9CiBleHRlcm5hbCBzZXJ2aWNlIGFuZAotICAg ICAgICAjIHNlbmQgYSBzaW5nbGUgQU1RUCBtZXNzYWdlIHRvIHRoZSBnYWxheHlfbGlzdGVuZXIK LSAgICAgICAgZGF0YXNldF9lbGVtZW50cyA9M0Qge30KLSAgICAgICAgZm9yIHNhbXBsZV9kYXRh c2V0IGluIHNlbGVjdGVkX3NhbXBsZV9kYXRhc2V0czoKLSAgICAgICAgICAgIGV4dGVybmFsX3Nl cnZpY2UgPTNEIHNhbXBsZV9kYXRhc2V0LmV4dGVybmFsX3NlcnZpY2UKLSAgICAgICAgICAgIGlm IHNhbXBsZV9kYXRhc2V0LnN0YXR1cyA9M0Q9M0QgdHJhbnMuYXBwLm1vZGVsLlNhbXBsZURhdGFz ZXQuPQp0cmFuc2Zlcl9zdGF0dXMuTk9UX1NUQVJURUQ6Ci0gICAgICAgICAgICAgICAgaWYgbm90 IGRhdGFzZXRfZWxlbWVudHMuaGFzX2tleSggZXh0ZXJuYWxfc2VydmljZSApOgotICAgICAgICAg ICAgICAgICAgICBkYXRhc2V0X2VsZW1lbnRzWyBleHRlcm5hbF9zZXJ2aWNlIF0gPTNEICcnCi0g ICAgICAgICAgICAgICAgZGF0YXNldF9lbGVtZW50c1sgZXh0ZXJuYWxfc2VydmljZSBdICs9M0Qg ZGF0YXNldF94bWwgJSBkaT0KY3QoIElEPTNEc3RyKCBzYW1wbGVfZGF0YXNldC5pZCApLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5BTUU9Cj0zRHNhbXBsZV9kYXRhc2V0Lm5hbWUsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklM RT0KPTNEc2FtcGxlX2RhdGFzZXQuZmlsZV9wYXRoICkKLSAgICAgICAgICAgICAgICAjIHVwZGF0 ZSB0aGUgZGF0YXNldCB0cmFuc2ZlciBzdGF0dXMKLSAgICAgICAgICAgICAgICBzYW1wbGVfZGF0 YXNldC5zdGF0dXMgPTNEIHRyYW5zLmFwcC5tb2RlbC5TYW1wbGVEYXRhc2V0LnRyPQphbnNmZXJf c3RhdHVzLklOX1FVRVVFCi0gICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHNh bXBsZV9kYXRhc2V0ICkKLSAgICAgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkK LSAgICAgICAgIyBGaW5hbGx5IHByZXBlbmQgdGhlIGV4dGVybmFsIHNlcnZpY2UgaW5mbyB0byB0 aGUgc2V0cyBvZiBzYW1wbGUgPQpkYXRhc2V0cwotICAgICAgICBtZXNzYWdlcyA9M0QgW10KLSAg ICAgICAgZm9yIGV4dGVybmFsX3NlcnZpY2UsIGRhdGFzZXRfZWxlbSBpbiBkYXRhc2V0X2VsZW1l bnRzLml0ZW1zKCk6Ci0gICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxvYWRfZGF0YV90cmFu c2Zlcl9zZXR0aW5ncyggdHJhbnMgKQotICAgICAgICAgICAgc2NwX2NvbmZpZ3MgPTNEIGV4dGVy bmFsX3NlcnZpY2UuZGF0YV90cmFuc2ZlclsgdHJhbnMubW9kZWwuRXg9CnRlcm5hbFNlcnZpY2Uu ZGF0YV90cmFuc2Zlcl9wcm90b2NvbC5TQ1AgXQotICAgICAgICAgICAgIyBDaGVjayBkYXRhIHRy YW5zZmVyIHNldHRpbmdzCi0gICAgICAgICAgICBlcnJfbXNnID0zRCBzZWxmLl9fdmFsaWRhdGVf ZGF0YV90cmFuc2Zlcl9zZXR0aW5ncyggdHJhbnMsIHNhbT0KcGxlLnJlcXVlc3QudHlwZSwgc2Nw X2NvbmZpZ3MgKQotICAgICAgICAgICAgaWYgZXJyX21zZzoKLSAgICAgICAgICAgICAgICByZXR1 cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsPQpl cj0zRCdyZXF1ZXN0c19hZG1pbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249Cj0zRCdtYW5hZ2VfZGF0YXNl dHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2FtcGxlX2k9CmQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHNh bXBsZS5pZCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPQo9M0QnZXJyb3InLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn ZT0KPTNEZXJyX21zZyApICkKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEIHhtbCAlIGRpY3QoIEdB TEFYWV9IT1NUPTNEdHJhbnMucmVxdWVzdC5ob3N0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFQSV9LRVk9M0R0cmFucy51c2VyLmFwaV9rZXlzWzBdLmtleSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRBX0hPU1Q9M0RzY3BfY29uZmlnc1sgJ2hvc3Qn IF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQV9VU0VSPTNEc2NwX2Nv bmZpZ3NbICd1c2VyX25hbWUnIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg REFUQV9QQVNTV09SRD0zRHNjcF9jb25maWdzWyAncGFzc3dvcmQnID0KXSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSRVFVRVNUX0lEPTNEc3RyKCBzYW1wbGUucmVxdWVzdC5p ZCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNBTVBMRV9JRD0zRHN0cigg c2FtcGxlLmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCUkFSWV9J RD0zRHN0ciggc2FtcGxlLmxpYnJhcnkuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBGT0xERVJfSUQ9M0RzdHIoIHNhbXBsZS5mb2xkZXIuaWQgKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBEQVRBU0VUUz0zRGRhdGFzZXRfZWxlbSApCi0gICAgICAg ICAgICBtZXNzYWdlcy5hcHBlbmQoIG1lc3NhZ2UucmVwbGFjZSggJ1xuJywgJycgKS5yZXBsYWNl KCAnXHInLCAnJz0KICkgKQotICAgICAgICByZXR1cm4gbWVzc2FnZXMKLSAgICBkZWYgX192YWxp ZGF0ZV9kYXRhX3RyYW5zZmVyX3NldHRpbmdzKCBzZWxmLCB0cmFucywgcmVxdWVzdF90eXBlLCBz Y3BfPQpjb25maWdzICk6Ci0gICAgICAgIGVycl9tc2cgPTNEICcnCi0gICAgICAgICMgY2hlY2sg dGhlIGV4dGVybmFsIHNlcnZpY2UgbG9naW4gaW5mbwotICAgICAgICBpZiBub3Qgc2NwX2NvbmZp Z3MuZ2V0KCAnaG9zdCcsICcnICkgXAotICAgICAgICAgICAgb3Igbm90IHNjcF9jb25maWdzLmdl dCggJ3VzZXJfbmFtZScsICcnICkgXAotICAgICAgICAgICAgb3Igbm90IHNjcF9jb25maWdzLmdl dCggJ3Bhc3N3b3JkJywgJycgKToKLSAgICAgICAgICAgIGVycl9tc2cgKz0zRCAiRXJyb3IgaW4g ZXh0ZXJuYWwgc2VydmljZSBsb2dpbiBpbmZvcm1hdGlvbi4gIgotICAgICAgICBpZiBub3QgdHJh bnMudXNlci5hcGlfa2V5czoKLSAgICAgICAgICAgIGVycl9tc2cgKz0zRCAiU2V0IHlvdXIgQVBJ IEtleSBpbiB5b3VyIFVzZXIgUHJlZmVyZW5jZXMgdG8gdHJhPQpuc2ZlciBkYXRhc2V0cy4gIgot ICAgICAgICAjIENoZWNrIGlmIGxpYnJhcnlfaW1wb3J0X2RpciBpcyBzZXQKLSAgICAgICAgaWYg bm90IHRyYW5zLmFwcC5jb25maWcubGlicmFyeV9pbXBvcnRfZGlyOgotICAgICAgICAgICAgZXJy X21zZyA9M0QgIidUaGUgbGlicmFyeV9pbXBvcnRfZGlyJyBzZXR0aW5nIGlzIG5vdCBjb3JyZWN0 bHk9CiBzZXQgaW4gdGhlIEdhbGF4eSBjb25maWcgZmlsZS4gIgotICAgICAgICAjIENoZWNrIHRo ZSBSYWJiaXRNUSBzZXJ2ZXIgc2V0dGluZ3MgaW4gdGhlIGNvbmZpZyBmaWxlCi0gICAgICAgIGZv ciBrLCB2IGluIHRyYW5zLmFwcC5jb25maWcuYW1xcC5pdGVtcygpOgotICAgICAgICAgICAgaWYg bm90IHY6Ci0gICAgICAgICAgICAgICAgZXJyX21zZyArPTNEICdTZXQgUmFiYml0TVEgc2VydmVy IHNldHRpbmdzIGluIHRoZSAiZ2FsYXh5Xz0KYW1xcCIgc2VjdGlvbiBvZiB0aGUgR2FsYXh5IGNv bmZpZyBmaWxlLCBzcGVjaWZpY2FsbHkgIiVzIiBpcyBub3Qgc2V0LicgJSBrCi0gICAgICAgICAg ICAgICAgYnJlYWsKLSAgICAgICAgcmV0dXJuIGVycl9tc2cKICAgICBAd2ViLmV4cG9zZQogICAg IEB3ZWIucmVxdWlyZV9hZG1pbgogICAgIGRlZiBpbml0aWF0ZV9kYXRhX3RyYW5zZmVyKCBzZWxm LCB0cmFucywgc2FtcGxlX2lkLCBzYW1wbGVfZGF0YXNldHM9M0Q9CltdLCBzYW1wbGVfZGF0YXNl dF9pZD0zRCcnICk6CkBAIC02ODYsMzUgKzQyMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0KICAg ICAgICAgICAgICAgICAgZXh0ZXJuYWxfc2VydmljZT0zRGV4dGVybmFsX3NlcnZpY2UsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgID0KICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfc2VydmljZV90eXBlPTNE ZXh0ZXJuYWxfc2VydmljZV90eXBlICkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgVE9E TzogVXNpbmcgUmFiYml0TXEgZm9yIG5vdywgYnV0IGVsaW1pbmF0ZSB0aGlzIGVudGlyZSBibG9j PQprIHdoZW4gd2UgcmVwbGFjZSBSYWJiaXRNcSB3aXRoIEdhbGF4eSdzCi0gICAgICAgICAgICAj IG93biBtZXNzYWdpbmcgZW5naW5lLiAgV2UncmUgaG9sZGluZyBvZmYgb24gdXNpbmcgdGhlIG5l dyB3YT0KeSB0byB0cmFuc2ZlciBmaWxlcyBtYW51YWxseSB1bnRpbCB3ZQotICAgICAgICAgICAg IyBpbXBsZW1lbnQgYSBHYWxheHktcHJvcHJpZXRhcnkgbWVzc2FnaW5nIGVuZ2luZSBiZWNhdXNl IHRoZSA9CmRlZmVycmVkIGpvYiBwbHVnaW5zIGN1cnJlbnRseSBwZXJmb3JtCi0gICAgICAgICAg ICAjIGNvbnN0YW50IGRiIGhpdHMgdG8gY2hlY2sgZm9yIGRlZmVycmVkIGpvYnMgdGhhdCBhcmUg bm90IGluID0KYSBmaW5pc2hlZCBzdGF0ZS4KLSAgICAgICAgICAgICMgQ3JlYXRlIHRoZSBtZXNz YWdlCi0gICAgICAgICAgICBtZXNzYWdlcyA9M0Qgc2VsZi5fX2NyZWF0ZV9kYXRhX3RyYW5zZmVy X21lc3NhZ2VzKCB0cmFucywgc2FtcD0KbGUsIHNhbXBsZV9kYXRhc2V0cyApCi0gICAgICAgICAg ICAjIFNlbmQgdGhlIG1lc3NhZ2VzCi0gICAgICAgICAgICBmb3Igcm1xX21zZyBpbiBtZXNzYWdl czoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbm4gPTNEIGFt cXAuQ29ubmVjdGlvbiggaG9zdD0zRHRyYW5zLmFwcC5jb25maWcuYW1xcD0KWyAnaG9zdCcgXSAr ICI6IiArIHRyYW5zLmFwcC5jb25maWcuYW1xcFsgJ3BvcnQnIF0sCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJpZD0zRHRyYW5zLmFwcC5jb25maWcuYW1x cD0KWyAndXNlcmlkJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwYXNzd29yZD0zRHRyYW5zLmFwcC5jb25maWcuYW09CnFwWyAncGFzc3dvcmQnIF0sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxfaG9zdD0z RHRyYW5zLmFwcC5jb25maT0KZy5hbXFwWyAndmlydHVhbF9ob3N0JyBdKQotICAgICAgICAgICAg ICAgICAgICBjaGFuID0zRCBjb25uLmNoYW5uZWwoKQotICAgICAgICAgICAgICAgICAgICBtc2cg PTNEIGFtcXAuTWVzc2FnZSggcm1xX21zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb250ZW50X3R5cGU9M0QndGV4dC9wbGFpbicsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25faGVhZGVycz0zRHsgJ21zZ190eXBl Jz0KOiAnZGF0YV90cmFuc2ZlcicgfSApCi0gICAgICAgICAgICAgICAgICAgIG1zZy5wcm9wZXJ0 aWVzWyAiZGVsaXZlcnlfbW9kZSIgXSA9M0QgMgotICAgICAgICAgICAgICAgICAgICBjaGFuLmJh c2ljX3B1Ymxpc2goIG1zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBleGNoYW5nZT0zRHRyYW5zLmFwcC5jb25maWcuYW1xcFsgPQonZXhjaGFuZ2UnIF0sCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGluZ19rZXk9M0R0cmFucy5h cHAuY29uZmlnLmFtcT0KcFsgJ3JvdXRpbmdfa2V5JyBdICkKLSAgICAgICAgICAgICAgICAgICAg Y2hhbi5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQotICAgICAgICAg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Ug PTNEICJFcnJvciBzZW5kaW5nIHRoZSBkYXRhIHRyYW5zZmVyIG1lc3NhZ2UgdD0KbyB0aGUgR2Fs YXh5IEFNUVAgbWVzc2FnZSBxdWV1ZTo8YnIvPiVzIiAlIHN0cihlKQotICAgICAgICAgICAgICAg ICAgICBzdGF0dXMgPTNEICJlcnJvciIKLSAgICAgICAgICAgIGlmIG5vdCBtZXNzYWdlOgotICAg ICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICIlaSBkYXRhc2V0cyBoYXZlIGJlZW4gcXVldWVkIGZv ciB0cmFuc2ZlciBmcm89Cm0gdGhlIGV4dGVybmFsIHNlcnZpY2UuIiAlIGxlbiggc2FtcGxlX2Rh dGFzZXRzICkKLSAgICAgICAgICAgICAgICBzdGF0dXMgPTNEICJkb25lIgorICAgICAgICAgICAg bWVzc2FnZSA9M0QgIk1lc3NhZ2UgcXVldWUgdHJhbnNmZXIgaXMgbm8gbG9uZ2VyIHN1cHBvcnRl ZCwgcGw9CmVhc2Ugc2V0IGVuYWJsZV9iZXRhX2pvYl9tYW5hZ2VycyA9M0QgVHJ1ZSBpbiBnYWxh eHkuaW5pIgorICAgICAgICAgICAgc3RhdHVzID0zRCAiZXJyb3IiCiAgICAgICAgIHJldHVybiB0 cmFucy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB3ZWIudXJsX2ZvciggY29udHJvbGxlcj0zRCdy ZT0KcXVlc3RzX2FkbWluJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhY3Rpb249M0QnbWFuYWdlPQpfZGF0YXNldHMnLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBs ZV9pZD0zRHRyYW49CnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSwKCmRpZmYgLXIg YzFjYzc2ZmEzZDY2ZWZiMDcwZjE5NjMxNTFjNGFjMGNhZTA0OGYzZiAtciA3Y2E4ZjBlY2IyYWU4 YjFiYTJiNTNlMT0KZmQwOWNjYWU0ODE5NDBhNDkgbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hl ZC9jb250cm9sbGVycy9yZXBvc2l0b3J5LnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy90b29s X3NoZWQvY29udHJvbGxlcnMvcmVwb3NpdG9yeS5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMv dG9vbF9zaGVkL2NvbnRyb2xsZXJzL3JlcG9zaXRvcnkucHkKQEAgLTE2MjksMTEgKzE2MjksMTEg QEAKICAgICAgICAgcmV0dXJuICcnCj0yMAogICAgIEB3ZWIuanNvbgotICAgIGRlZiBnZXRfZmls ZV9jb250ZW50cyggc2VsZiwgdHJhbnMsIGZpbGVfcGF0aCApOgorICAgIGRlZiBnZXRfZmlsZV9j b250ZW50cyggc2VsZiwgdHJhbnMsIGZpbGVfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgogICAgICAg ICAjIEF2b2lkIGNhY2hpbmcKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJhZ21h J10gPTNEICduby1jYWNoZScKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhwaXJl cyddID0zRCAnMCcKLSAgICAgICAgcmV0dXJuIHN1Yy5nZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRl bnRzKCBmaWxlX3BhdGggKQorICAgICAgICByZXR1cm4gc3VjLmdldF9yZXBvc2l0b3J5X2ZpbGVf Y29udGVudHMoIHRyYW5zLmFwcCwgZmlsZV9wYXRoLCByZXA9Cm9zaXRvcnlfaWQgKQo9MjAKICAg ICBAd2ViLmV4cG9zZQogICAgIGRlZiBnZXRfZnVuY3Rpb25hbF90ZXN0X3Jzcyggc2VsZiwgdHJh bnMsICoqa3dkICk6CkBAIC0yNjAzLDExICsyNjAzLDExIEBACiAgICAgICAgIHJldHVybiAnJwo9 MjAKICAgICBAd2ViLmpzb24KLSAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCBmb2xk ZXJfcGF0aCApOgorICAgIGRlZiBvcGVuX2ZvbGRlciggc2VsZiwgdHJhbnMsIGZvbGRlcl9wYXRo LCByZXBvc2l0b3J5X2lkICk6CiAgICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0cmFu cy5yZXNwb25zZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0cmFu cy5yZXNwb25zZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4gc3Vj Lm9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIGZvbGRlcl9wYXRoICkKKyAgICAgICAgcmV0 dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCB0cmFucy5hcHAsIGZvbGRlcl9w YXRoLCByPQplcG9zaXRvcnlfaWQgKQo9MjAKICAgICBAd2ViLmV4cG9zZQogICAgIGRlZiBwcmV2 aWV3X3Rvb2xzX2luX2NoYW5nZXNldCggc2VsZiwgdHJhbnMsIHJlcG9zaXRvcnlfaWQsICoqa3dk ICk6CgpkaWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIg N2NhOGYwZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IGxpYi9nYWxheHkvd2Vi YXBwcy90b29sX3NoZWQvZnJhbWV3b3JrL21pZGRsZXdhcmUvaGcucHkKLS0tIGEvbGliL2dhbGF4 eS93ZWJhcHBzL3Rvb2xfc2hlZC9mcmFtZXdvcmsvbWlkZGxld2FyZS9oZy5weQorKysgYi9saWIv Z2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL2ZyYW1ld29yay9taWRkbGV3YXJlL2hnLnB5CkBAIC05 LDcgKzksNyBAQAogZnJvbSBwYXN0ZS5odHRwaGVhZGVycyBpbXBvcnQgQVVUSF9UWVBFCiBmcm9t IHBhc3RlLmh0dHBoZWFkZXJzIGltcG9ydCBSRU1PVEVfVVNFUgo9MjAKLWZyb20gZ2FsYXh5LnV0 aWwgaW1wb3J0IGFzYm9vbAorZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgYXNib29sLCBzYWZlX3Jl bHBhdGgKIGZyb20gZ2FsYXh5LnV0aWwuaGFzaF91dGlsIGltcG9ydCBuZXdfc2VjdXJlX2hhc2gK IGZyb20gdG9vbF9zaGVkLnV0aWwgaW1wb3J0IGhnX3V0aWwKIGltcG9ydCB0b29sX3NoZWQucmVw b3NpdG9yeV90eXBlcy51dGlsIGFzIHJ0X3V0aWwKQEAgLTExMyw3ICsxMTMsMTEgQEAKICAgICAg ICAgICAgICAgICAgICAgZmgud3JpdGUoIGNodW5rICkKICAgICAgICAgICAgICAgICBmaC5jbG9z ZSgpCiAgICAgICAgICAgICAgICAgZmggPTNEIG9wZW4oIHRtcF9maWxlbmFtZSwgJ3JiJyApCi0g ICAgICAgICAgICAgICAgY2hhbmdlc2V0X2dyb3VwcyA9M0QganNvbi5sb2FkcyggaGdfdXRpbC5i dW5kbGVfdG9fanNvbiggZj0KaCApICkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAg ICAgICAgICAgIGNoYW5nZXNldF9ncm91cHMgPTNEIGpzb24ubG9hZHMoIGhnX3V0aWwuYnVuZGxl X3RvX2pzbz0KbiggZmggKSApCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9y OgorICAgICAgICAgICAgICAgICAgICBtc2cgPTNEICdZb3VyIHZlcnNpb24gb2YgTWVyY3VyaWFs IGlzIG5vdCBzdXBwb3J0ZWQuIFA9CmxlYXNlIHVzZSBhIHZlcnNpb24gPCAzLjUnCisgICAgICAg ICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGlzcGxheV9leGNlcHRpb25fcmVtb3RlbHkoIHN0 YXJ0X3Jlc3Bvbj0Kc2UsIG1zZyApCiAgICAgICAgICAgICAgICAgZmguY2xvc2UoKQogICAgICAg ICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKCB0bXBfZmlsZW5h bWUgKQpAQCAtMTIyLDYgKzEyNiwxOSBAQAogICAgICAgICAgICAgICAgIGlmIGNoYW5nZXNldF9n cm91cHM6CiAgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhlIHJlcG9zaXRvcnkgdHlwZSB0 byBtYWtlIHN1cmUgaW5hcHByb3ByaWF0ZT0KIGZpbGVzIGFyZSBub3QgYmVpbmcgcHVzaGVkLgog ICAgICAgICAgICAgICAgICAgICBpZiAnUEFUSF9JTkZPJyBpbiBlbnZpcm9uOgorICAgICAgICAg ICAgICAgICAgICAgICAgIyBFbnN1cmUgdGhlcmUgYXJlIG5vIHN5bWxpbmtzIHdpdGggdGFyZ2V0 cyBvdXRzaWQ9CmUgdGhlIHJlcG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlbnRyeSBp biBjaGFuZ2VzZXRfZ3JvdXBzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbigg ZW50cnkgKSA9M0Q9M0QgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5h bWUsIGNoYW5nZV9saXN0ID0zRCBlbnRyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiBub3QgaXNpbnN0YW5jZShjaGFuZ2VfbGlzdCwgbGlzdCk6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VfbGlzdCA9M0QgW2NoYW5nZV9saXN0XQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY2hhbmdlIGluIGNoYW5nZV9saXN0OgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhdGNoIGluIGNoYW5nZVsnZGF0 YSddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9M0Qg cGF0Y2hbJ2Jsb2NrJ10uc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmICggKCBwYXRjaFsnZW5kJ10gLSBwYXRjaFsnc3RhcnQ9CiddID0zRD0zRCAwICkg YW5kIG5vdCBzYWZlX3JlbHBhdGgoIHRhcmdldCApICk6CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1zZyA9M0QgIkNoYW5nZXMgaW5jbHVkZSBhIHN5bT0KbGlu ayBvdXRzaWRlIG9mIHRoZSByZXBvc2l0b3J5OiAlcyAtPiAlcyIgJSAoIGZpbGVuYW1lLCB0YXJn ZXQgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2cud2Fy bmluZyggbXNnICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIHNlbGYuX19kaXNwbGF5X2V4Y2VwdGlvPQpuX3JlbW90ZWx5KCBzdGFydF9yZXNwb25z ZSwgbXNnICkKICAgICAgICAgICAgICAgICAgICAgICAgICMgSW5zdGFudGlhdGUgYSBkYXRhYmFz ZSBjb25uZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmUgPTNEIHNxbGFsY2hl bXkuY3JlYXRlX2VuZ2luZSggc2VsZi5kYl91cmwgKQogICAgICAgICAgICAgICAgICAgICAgICAg Y29ubmVjdGlvbiA9M0QgZW5naW5lLmNvbm5lY3QoKQoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIw NzBmMTk2MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5 Y2NhZTQ4MTk0MGE0OSBsaWIvZ2FsYXh5L3dvcmtmbG93L3JlbmRlci5weQotLS0gYS9saWIvZ2Fs YXh5L3dvcmtmbG93L3JlbmRlci5weQorKysgYi9saWIvZ2FsYXh5L3dvcmtmbG93L3JlbmRlci5w eQpAQCAtMzQsOCArMzQsOCBAQAogICAgICAgICBjYW52YXMuYXBwZW5kKCBzZWxmLmJveGVzICkK ICAgICAgICAgY2FudmFzLmFwcGVuZCggc2VsZi50ZXh0ICkKICAgICAgICAgd2lkdGgsIGhlaWdo dCA9M0QgKCBtYXhfeCArIG1heF93aWR0aCArIDUwICksIG1heF95ICsgMzAwCi0gICAgICAgIGNh bnZhc1sgJ3dpZHRoJyBdID0zRCAiJXMgcHgiICUgd2lkdGgKLSAgICAgICAgY2FudmFzWyAnaGVp Z2h0JyBdID0zRCAiJXMgcHgiICUgaGVpZ2h0CisgICAgICAgIGNhbnZhc1sgJ3dpZHRoJyBdID0z RCAiJXNweCIgJSB3aWR0aAorICAgICAgICBjYW52YXNbICdoZWlnaHQnIF0gPTNEICIlc3B4IiAl IGhlaWdodAogICAgICAgICBjYW52YXNbICd2aWV3Qm94JyBdID0zRCAiMCAwICVzICVzIiAlICgg d2lkdGgsIGhlaWdodCApCj0yMAogICAgIGRlZiBhZGRfYm94ZXMoIHNlbGYsIHN0ZXBfZGljdCwg d2lkdGgsIG5hbWVfZmlsbCApOgpAQCAtMTIwLDcgKzEyMCw3IEBACiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFsgMSBdIC0gbWFyZ2luLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fY29vcmRzWyAwIF0g LSAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2Nv b3Jkc1sgMSBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXJyb3dfZW5kPTNEInRydWUiICkuU1ZHKCkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXJyb3dfZW5kPTNEImNvbm5fJXMiICUgKGxlbig9CnNlbGYuY29u bmVjdG9ycy5rZXlzKCkpICsgMSkgKS5TVkcoKSApCj0yMAogICAgIGRlZiBhZGRfc3RlcHMoIHNl bGYsIGhpZ2hsaWdodF9lcnJvcnM9M0RGYWxzZSApOgogICAgICAgICAjIE9ubHkgaGlnaGxpZ2h0 IG1pc3NpbmcgdG9vbHMgaWYgZGlzcGxheWluZyBpbiB0aGUgdG9vbCBzaGVkLgoKZGlmZiAtciBj MWNjNzZmYTNkNjZlZmIwNzBmMTk2MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThi MWJhMmI1M2UxPQpmZDA5Y2NhZTQ4MTk0MGE0OSBsaWIvdG9vbF9zaGVkL2NhcHN1bGUvY2Fwc3Vs ZV9tYW5hZ2VyLnB5Ci0tLSBhL2xpYi90b29sX3NoZWQvY2Fwc3VsZS9jYXBzdWxlX21hbmFnZXIu cHkKKysrIGIvbGliL3Rvb2xfc2hlZC9jYXBzdWxlL2NhcHN1bGVfbWFuYWdlci5weQpAQCAtMTIs NiArMTIsNyBAQAogZnJvbSBnYWxheHkubW9kZWwub3JtIGltcG9ydCBhbmRfCiBmcm9tIGdhbGF4 eS51dGlsIGltcG9ydCBhc2Jvb2wKIGZyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IENIVU5LX1NJWkUK K2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHNhZmVfcmVscGF0aAogZnJvbSBnYWxheHkudXRpbC5v ZGljdCBpbXBvcnQgb2RpY3QKPTIwCiBmcm9tIHRvb2xfc2hlZC5kZXBlbmRlbmNpZXMucmVwb3Np dG9yeS5yZWxhdGlvbl9idWlsZGVyIGltcG9ydCBSZWxhdGlvbkJ1aT0KbGRlcgpAQCAtNzI3LDI5 ICs3MjgsMTYgQEAKICAgICAgICAgcmVwbyA9M0QgaGdfdXRpbC5nZXRfcmVwb19mb3JfcmVwb3Np dG9yeSggc2VsZi5hcHAsIHJlcG9zaXRvcnk9M0ROPQpvbmUsIHJlcG9fcGF0aD0zRHJlcG9fZGly LCBjcmVhdGU9M0RGYWxzZSApCiAgICAgICAgIHVuZGVzaXJhYmxlX2RpcnNfcmVtb3ZlZCA9M0Qg MAogICAgICAgICB1bmRlc2lyYWJsZV9maWxlc19yZW1vdmVkID0zRCAwCi0gICAgICAgIG9rLCBl cnJvcl9tZXNzYWdlID0zRCBjb21taXRfdXRpbC5jaGVja19hcmNoaXZlKCByZXBvc2l0b3J5LCBh cmNoaT0KdmUgKQotICAgICAgICBpZiBvazoKKyAgICAgICAgY2hlY2tfcmVzdWx0cyA9M0QgY29t bWl0X3V0aWwuY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgYXJjaGl2ZSApCisgICAgICAgICMg V2UgZmlsdGVyIG91dCB1bmRlc2lyYWJsZSBmaWxlcyBidXQgZmFpbCBvbiB1bmRlc3JpYWJsZSBk aXJzLiBOb3QKKyAgICAgICAgIyBzdXJlIHdoeSwganVzdCB0cnlpbmcgdG8gbWFpbnRhaW4gdGhl IHNhbWUgYmVoYXZpb3IgYXMgYmVmb3JlLiAtPQpuYXRlCisgICAgICAgIGlmIG5vdCBjaGVja19y ZXN1bHRzLmludmFsaWQgYW5kIG5vdCBjaGVja19yZXN1bHRzLnVuZGVzaXJhYmxlX2Rpcj0KczoK ICAgICAgICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0aC5hYnNwYXRoKCByZXBvX2RpciApCi0g ICAgICAgICAgICBmaWxlbmFtZXNfaW5fYXJjaGl2ZSA9M0QgW10KLSAgICAgICAgICAgIGZvciB0 YXJpbmZvX29iaiBpbiBhcmNoaXZlLmdldG1lbWJlcnMoKToKLSAgICAgICAgICAgICAgICAjIENo ZWNrIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbiB0aGUgYXJjaGl2ZS4KLSAgICAgICAgICAgICAg ICBvayA9M0Qgb3MucGF0aC5iYXNlbmFtZSggdGFyaW5mb19vYmoubmFtZSApIG5vdCBpbiBjb21t aXRfPQp1dGlsLlVOREVTSVJBQkxFX0ZJTEVTCi0gICAgICAgICAgICAgICAgaWYgb2s6Ci0gICAg ICAgICAgICAgICAgICAgIGZvciBmaWxlX3BhdGhfaXRlbSBpbiB0YXJpbmZvX29iai5uYW1lLnNw bGl0KCAnLycgKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVfcGF0aF9pdGVtIGlu IGNvbW1pdF91dGlsLlVOREVTSVJBQkxFX0RJUlM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5kZXNpcmFibGVfZGlyc19yZW1vdmVkICs9M0QgMQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVycm9yX21lc3NhZ2UgPTNEICdJbXBvcnQgZmFpbGVkOiBpbnZhbGlkIGZpbGU9CiBw YXRoIDxiPiVzPC9iPiBpbiBhcmNoaXZlIDxiPiVzPC9iPicgJSBcCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICggc3RyKCBmaWxlX3BhdGhfaXRlbSApLCBzdHIoIGFyY2hpdmVfZmls ZT0KX25hbWUgKSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c19kaWN0WyAn b2snIF0gPTNEIEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c19kaWN0 WyAnZXJyb3JfbWVzc2FnZScgXSArPTNEIGVycm9yX21lcz0Kc2FnZQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiByZXN1bHRzX2RpY3QKLSAgICAgICAgICAgICAgICAgICAgZmls ZW5hbWVzX2luX2FyY2hpdmUuYXBwZW5kKCB0YXJpbmZvX29iai5uYW1lICkKLSAgICAgICAgICAg ICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB1bmRlc2lyYWJsZV9maWxlc19yZW1vdmVk ICs9M0QgMQogICAgICAgICAgICAgIyBFeHRyYWN0IHRoZSB1cGxvYWRlZCBhcmNoaXZlIHRvIHRo ZSByZXBvc2l0b3J5IHJvb3QuCi0gICAgICAgICAgICBhcmNoaXZlLmV4dHJhY3RhbGwoIHBhdGg9 M0RmdWxsX3BhdGggKQorICAgICAgICAgICAgYXJjaGl2ZS5leHRyYWN0YWxsKCBwYXRoPTNEZnVs bF9wYXRoLCBtZW1iZXJzPTNEY2hlY2tfcmVzdWx0cy49CnZhbGlkICkKICAgICAgICAgICAgIGFy Y2hpdmUuY2xvc2UoKQotICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lc19pbl9h cmNoaXZlOgorICAgICAgICAgICAgZm9yIHRhcl9tZW1iZXIgaW4gY2hlY2tfcmVzdWx0cy52YWxp ZDoKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9M0QgdGFyX21lbWJlci5uYW1lCiAgICAgICAg ICAgICAgICAgdXBsb2FkZWRfZmlsZV9uYW1lID0zRCBvcy5wYXRoLmpvaW4oIGZ1bGxfcGF0aCwg ZmlsZW5hbWUgKQogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguc3BsaXQoIHVwbG9hZGVkX2Zp bGVfbmFtZSApWyAtMSBdID0zRD0zRCBydF91dGk9CmwuUkVQT1NJVE9SWV9ERVBFTkRFTkNZX0RF RklOSVRJT05fRklMRU5BTUU6CiAgICAgICAgICAgICAgICAgICAgICMgSW5zcGVjdCB0aGUgY29u dGVudHMgb2YgdGhlIGZpbGUgdG8gc2VlIGlmIHRvb2xzaGVkID0Kb3IgY2hhbmdlc2V0X3Jldmlz aW9uIGF0dHJpYnV0ZXMKQEAgLTc3Niw2ICs3NjQsOSBAQAogICAgICAgICAgICAgbmV3X3JlcG9f YWxlcnQgPTNEIFRydWUKICAgICAgICAgICAgICMgU2luY2UgdGhlIHJlcG9zaXRvcnkgaXMgbmV3 LCB0aGUgZm9sbG93aW5nIG11c3QgYmUgRmFsc2UuCiAgICAgICAgICAgICByZW1vdmVfcmVwb19m aWxlc19ub3RfaW5fdGFyID0zRCBGYWxzZQorICAgICAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hp dmUgPTNEIFsgbWVtYmVyLm5hbWUgZm9yIG1lbWJlciBpbiBjaGVja19yZXM9CnVsdHMudmFsaWQg XQorICAgICAgICAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgbGVuKCBjaGVja19y ZXN1bHRzLnVuZGVzaXJhYmxlX2Y9CmlsZXMgKQorICAgICAgICAgICAgdW5kZXNpcmFibGVfZGly c19yZW1vdmVkID0zRCAwCiAgICAgICAgICAgICBvaywgZXJyb3JfbWVzc2FnZSwgZmlsZXNfdG9f cmVtb3ZlLCBjb250ZW50X2FsZXJ0X3N0ciwgdW5kZXNpcj0KYWJsZV9kaXJzX3JlbW92ZWQsIHVu ZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIFwKICAgICAgICAgICAgICAgICBjb21taXRfdXRp bC5oYW5kbGVfZGlyZWN0b3J5X2NoYW5nZXMoIHNlbGYuYXBwLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3N0LApAQCAtODA2LDcg Kzc5NywxMyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYXJjaGl2ZS5jbG9zZSgpCiAg ICAgICAgICAgICByZXN1bHRzX2RpY3RbICdvaycgXSA9M0QgRmFsc2UKLSAgICAgICAgICAgIHJl c3VsdHNfZGljdFsgJ2Vycm9yX21lc3NhZ2UnIF0gKz0zRCBlcnJvcl9tZXNzYWdlCisgICAgICAg ICAgICByZXN1bHRzX2RpY3RbICdlcnJvcl9tZXNzYWdlJyBdICs9M0QgJ0NhcHN1bGUgZXJyb3Jz IHdlcmUgZm91bj0KZDogJworICAgICAgICAgICAgaWYgY2hlY2tfcmVzdWx0cy5pbnZhbGlkOgor ICAgICAgICAgICAgICAgIHJlc3VsdHNfZGljdFsgJ2Vycm9yX21lc3NhZ2UnIF0gKz0zRCAnJXMg SW52YWxpZCBmaWxlcyB3ZXI9CmU6ICVzLicgJSAoCisgICAgICAgICAgICAgICAgICAgICcgJy5q b2luKCBjaGVja19yZXN1bHRzLmVycm9ycyApLCAnLCAnLmpvaW4oIGNoZWNrX3Jlcz0KdWx0cy5p bnZhbGlkICkgKQorICAgICAgICAgICAgaWYgY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJsZV9kaXJz OgorICAgICAgICAgICAgICAgIHJlc3VsdHNfZGljdFsgJ2Vycm9yX21lc3NhZ2UnIF0gKz0zRCAn IFVuZGVzaXJhYmxlIGRpcmVjdG89CnJpZXMgd2VyZTogJXMuJyAlICgKKyAgICAgICAgICAgICAg ICAgICAgJywgJy5qb2luKCBjaGVja19yZXN1bHRzLnVuZGVzaXJhYmxlX2RpcnMgKSApCiAgICAg ICAgIHJldHVybiByZXN1bHRzX2RpY3QKPTIwCiAgICAgZGVmIHVwbG9hZF9jYXBzdWxlKCBzZWxm LCAqKmt3ZCApOgpAQCAtODYzLDYgKzg2MCwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybl9k aWN0WyAnc3RhdHVzJyBdID0zRCAnZXJyb3InCiAgICAgICAgICAgICAgICAgdXBsb2FkZWRfZmls ZS5jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVybl9kaWN0CisgICAgICAgICAg ICBpZiBub3Qgc2VsZi52YWxpZGF0ZV9hcmNoaXZlX3BhdGhzKCB0YXJfYXJjaGl2ZSApOgorICAg ICAgICAgICAgICAgIHJldHVybl9kaWN0WyAnc3RhdHVzJyBdID0zRCAnZXJyb3InCisgICAgICAg ICAgICAgICAgcmV0dXJuX2RpY3RbICdtZXNzYWdlJyBdID0zRCAoICdUaGlzIGNhcHN1bGUgY29u dGFpbnMgYW4gaT0KbnZhbGlkIG1lbWJlciB0eXBlICcKKyAgICAgICAgICAgICAgICAgICAgJ29y IGEgZmlsZSBvdXRzaWRlIHRoZSBhcmNoaXZlIHBhdGguJyApCisgICAgICAgICAgICAgICAgdXBs b2FkZWRfZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVybl9kaWN0CiAg ICAgICAgICAgICByZXR1cm5fZGljdFsgJ3Rhcl9hcmNoaXZlJyBdID0zRCB0YXJfYXJjaGl2ZQog ICAgICAgICAgICAgcmV0dXJuX2RpY3RbICdjYXBzdWxlX2ZpbGVfbmFtZScgXSA9M0QgdXBsb2Fk ZWRfZmlsZV9maWxlbmFtZQogICAgICAgICAgICAgdXBsb2FkZWRfZmlsZS5jbG9zZSgpCkBAIC04 NzIsNiArODc1LDE4IEBACiAgICAgICAgICAgICByZXR1cm4gcmV0dXJuX2RpY3QKICAgICAgICAg cmV0dXJuIHJldHVybl9kaWN0Cj0yMAorICAgIGRlZiB2YWxpZGF0ZV9hcmNoaXZlX3BhdGhzKCBz ZWxmLCB0YXJfYXJjaGl2ZSApOgorICAgICAgICAnJycKKyAgICAgICAgSW5zcGVjdCB0aGUgYXJj aGl2ZSBjb250ZW50cyB0byBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gcmlza3kgc3ltPQpsaW5r cy4KKyAgICAgICAgUmV0dXJucyBUcnVlIGlmIGEgc3VzcGljaW91cyBwYXRoIGlzIGZvdW5kLgor ICAgICAgICAnJycKKyAgICAgICAgZm9yIG1lbWJlciBpbiB0YXJfYXJjaGl2ZS5nZXRtZW1iZXJz KCk6CisgICAgICAgICAgICBpZiBub3QgKCBtZW1iZXIuaXNkaXIoKSBvciBtZW1iZXIuaXNmaWxl KCkgb3IgbWVtYmVyLmlzbG5rKCkgKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAg ICAgICAgICAgIGVsaWYgbm90IHNhZmVfcmVscGF0aCggbWVtYmVyLm5hbWUgKToKKyAgICAgICAg ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKwogICAgIGRlZiB2YWxp ZGF0ZV9jYXBzdWxlKCBzZWxmLCAqKmt3ZCApOgogICAgICAgICAiIiIKICAgICAgICAgSW5zcGVj dCB0aGUgdXBsb2FkZWQgY2Fwc3VsZSdzIG1hbmlmZXN0IGFuZCBpdHMgY29udGFpbmVkIGZpbGVz IHRvPQogZW5zdXJlIGl0IGlzIGEgdmFsaWQKCmRpZmYgLXIgYzFjYzc2ZmEzZDY2ZWZiMDcwZjE5 NjMxNTFjNGFjMGNhZTA0OGYzZiAtciA3Y2E4ZjBlY2IyYWU4YjFiYTJiNTNlMT0KZmQwOWNjYWU0 ODE5NDBhNDkgbGliL3Rvb2xfc2hlZC90b29scy90b29sX3ZlcnNpb25fbWFuYWdlci5weQotLS0g YS9saWIvdG9vbF9zaGVkL3Rvb2xzL3Rvb2xfdmVyc2lvbl9tYW5hZ2VyLnB5CisrKyBiL2xpYi90 b29sX3NoZWQvdG9vbHMvdG9vbF92ZXJzaW9uX21hbmFnZXIucHkKQEAgLTEsNyArMSw4IEBACiBp bXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCj0yMAotZnJvbSBnYWxheHkubW9kZWwub3JtIGltcG9y dCBhbmRfCitmcm9tIGdhbGF4eSBpbXBvcnQgZWdncworZWdncy5yZXF1aXJlKCdTUUxBbGNoZW15 JykKK2Zyb20gc3FsYWxjaGVteSBpbXBvcnQgYW5kXywgb3JfCj0yMAogZnJvbSB0b29sX3NoZWQu dXRpbCBpbXBvcnQgaGdfdXRpbAogZnJvbSB0b29sX3NoZWQudXRpbCBpbXBvcnQgc2hlZF91dGls X2NvbW1vbiBhcyBzdWMKQEAgLTIyLDggKzIzLDggQEAKPTIwCiAgICAgZGVmIGdldF90b29sX3Zl cnNpb25fYXNzb2NpYXRpb24oIHNlbGYsIHBhcmVudF90b29sX3ZlcnNpb24sIHRvb2xfdmVycz0K aW9uICk6CiAgICAgICAgICIiIgotICAgICAgICBSZXR1cm4gYSBUb29sVmVyc2lvbkFzc29jaWF0 aW9uIGlmIG9uZSBleGlzdHMgdGhhdCBhc3NvY2lhdGVzIHRoZSA9CnR3byByZWNlaXZlZAotICAg ICAgICB0b29sX3ZlcnNpb25zICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGZyb20gR2Fs YXh5LgorICAgICAgICBSZXR1cm4gYSBUb29sVmVyc2lvbkFzc29jaWF0aW9uIGlmIG9uZSBleGlz dHMgdGhhdCBhc3NvY2lhdGVzIHRoZSA9CnR3bworICAgICAgICByZWNlaXZlZCB0b29sX3ZlcnNp b25zLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGZyb20gR2FsYXh5LgogICAgICAgICAi IiIKICAgICAgICAgY29udGV4dCA9M0Qgc2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5jb250ZXh0CiAg ICAgICAgIHJldHVybiBjb250ZXh0LnF1ZXJ5KCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xW ZXJzaW9uQXNzb2NpYXRpbz0KbiApIFwKQEAgLTkxLDYgKzkyLDE2IEBACiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sX3NoZWRf cmVwbz0Kc2l0b3J5PTNEdG9vbF9zaGVkX3JlcG9zaXRvcnkgKQogICAgICAgICAgICAgICAgICAg ICBjb250ZXh0LmFkZCggdG9vbF92ZXJzaW9uX3VzaW5nX3BhcmVudF9pZCApCiAgICAgICAgICAg ICAgICAgICAgIGNvbnRleHQuZmx1c2goKQorICAgICAgICAgICAgICAgICMgUmVtb3ZlIGV4aXN0 aW5nIHdyb25nIHRvb2wgdmVyc2lvbiBhc3NvY2lhdGlvbnMgaGF2aW5nCisgICAgICAgICAgICAg ICAgIyB0b29sX3ZlcnNpb25fdXNpbmdfcGFyZW50X2lkIGFzIHBhcmVudCBvcgorICAgICAgICAg ICAgICAgICMgdG9vbF92ZXJzaW9uX3VzaW5nX3Rvb2xfZ3VpZCBhcyBjaGlsZC4KKyAgICAgICAg ICAgICAgICBjb250ZXh0LnF1ZXJ5KCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xWZXJzaW9u QXNzb2NpYXRpPQpvbiApIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlciggb3JfKCBh bmRfKCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xWZXJzPQppb25Bc3NvY2lhdGlvbi50YWJs ZS5jLnBhcmVudF9pZCA9M0Q9M0QgdG9vbF92ZXJzaW9uX3VzaW5nX3BhcmVudF9pZC5pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcC5pbnN0YWxs X21vZGVsLlRvb2xWZXJzPQppb25Bc3NvY2lhdGlvbi50YWJsZS5jLnRvb2xfaWQgIT0zRCB0b29s X3ZlcnNpb25fdXNpbmdfdG9vbF9ndWlkLmlkICksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYW5kXyggc2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5Ub29sVmVycz0KaW9uQXNz b2NpYXRpb24udGFibGUuYy5wYXJlbnRfaWQgIT0zRCB0b29sX3ZlcnNpb25fdXNpbmdfcGFyZW50 X2lkLmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu YXBwLmluc3RhbGxfbW9kZWwuVG9vbFZlcnM9CmlvbkFzc29jaWF0aW9uLnRhYmxlLmMudG9vbF9p ZCA9M0Q9M0QgdG9vbF92ZXJzaW9uX3VzaW5nX3Rvb2xfZ3VpZC5pZCApICkgKT0KIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgLmRlbGV0ZSgpCisgICAgICAgICAgICAgICAgY29udGV4dC5mbHVz aCgpCiAgICAgICAgICAgICAgICAgdG9vbF92ZXJzaW9uX2Fzc29jaWF0aW9uID0zRCBcCiAgICAg ICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rvb2xfdmVyc2lvbl9hc3NvY2lhdGlvbiggdG9vbF92 ZXJzaW9uX3VzaW5nXz0KcGFyZW50X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xfdmVyc2lvbl91c2luZ189CnRvb2xfZ3VpZCAp CgpkaWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2Nh OGYwZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IGxpYi90b29sX3NoZWQvdXRp bC9jb21taXRfdXRpbC5weQotLS0gYS9saWIvdG9vbF9zaGVkL3V0aWwvY29tbWl0X3V0aWwucHkK KysrIGIvbGliL3Rvb2xfc2hlZC91dGlsL2NvbW1pdF91dGlsLnB5CkBAIC00LDggKzQsMTAgQEAK IGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAogaW1wb3J0IHRlbXBmaWxlCitmcm9tIGNvbGxlY3Rp b25zIGltcG9ydCBuYW1lZHR1cGxlCj0yMAogZnJvbSBnYWxheHkuZGF0YXR5cGVzIGltcG9ydCBj aGVja2VycworZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc2FmZV9yZWxwYXRoCj0yMAogZnJvbSB0 b29sX3NoZWQudG9vbHMgaW1wb3J0IGRhdGFfdGFibGVfbWFuYWdlcgo9MjAKQEAgLTIxLDMwICsy Myw0NCBAQAogVU5ERVNJUkFCTEVfRklMRVMgPTNEIFsgJy5oZ19hcmNoaXZhbC50eHQnLCAnaGdy YycsICcuRFNfU3RvcmUnIF0KPTIwCiBkZWYgY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgYXJj aGl2ZSApOgorICAgIHZhbGlkID0zRCBbXQorICAgIGludmFsaWQgPTNEIFtdCisgICAgZXJyb3Jz ID0zRCBbXQorICAgIHVuZGVzaXJhYmxlX2ZpbGVzID0zRCBbXQorICAgIHVuZGVzaXJhYmxlX2Rp cnMgPTNEIFtdCiAgICAgZm9yIG1lbWJlciBpbiBhcmNoaXZlLmdldG1lbWJlcnMoKToKICAgICAg ICAgIyBBbGxvdyByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBvbmx5CiAgICAgICAgIGlm IG5vdCAoIG1lbWJlci5pc2RpcigpIG9yIG1lbWJlci5pc2ZpbGUoKSBvciBtZW1iZXIuaXNsbmso KSApOgotICAgICAgICAgICAgbWVzc2FnZSA9M0QgIlVwbG9hZGVkIGFyY2hpdmVzIGNhbiBvbmx5 IGluY2x1ZGUgcmVndWxhciBkaXJlY3Q9Cm9yaWVzIGFuZCBmaWxlcyAobm8gc3ltYm9saWMgbGlu a3MsIGRldmljZXMsIGV0YykuICAiCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgIlRoZSBwcm9i bGVtYXRpYyBtZW1iZXIgaW4gdGhpcyBhcmNoaXZlIGlzICVzLCIgJT0KIHN0ciggbWVtYmVyLm5h bWUgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAgICAgIGZvciBpdGVt IGluIFsgJy5oZycsICcuLicsICcvJyBdOgotICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUuc3Rh cnRzd2l0aCggaXRlbSApOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRlZCBh cmNoaXZlcyBjYW5ub3QgY29udGFpbiAuaGcgZGlyZWN0b3I9CmllcywgYWJzb2x1dGUgZmlsZW5h bWVzIHN0YXJ0aW5nIHdpdGggJy8nLCBvciBmaWxlbmFtZXMgd2l0aCB0d28gZG90cyAnLi4nLj0K ICAiCi0gICAgICAgICAgICAgICAgbWVzc2FnZSArPTNEICJUaGUgcHJvYmxlbWF0aWMgbWVtYmVy IGluIHRoaXMgYXJjaGl2ZSBpcyAlcz0KLiIgJSBzdHIoIG1lbWJlci5uYW1lICkKLSAgICAgICAg ICAgICAgICByZXR1cm4gRmFsc2UsIG1lc3NhZ2UKLSAgICAgICAgaWYgbWVtYmVyLm5hbWUgaW4g WyAnaGdyYycgXToKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRlZCBhcmNoaXZlcyBj YW5ub3QgY29udGFpbiBoZ3JjIGZpbGVzLiAgIgotICAgICAgICAgICAgbWVzc2FnZSArPTNEICJU aGUgcHJvYmxlbWF0aWMgbWVtYmVyIGluIHRoaXMgYXJjaGl2ZSBpcyAlcy4iICU9CiBzdHIoIG1l bWJlci5uYW1lICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZQorICAgICAgICAg ICAgZXJyb3JzLmFwcGVuZCggIlVwbG9hZGVkIGFyY2hpdmVzIGNhbiBvbmx5IGluY2x1ZGUgcmVn dWxhciBkaXI9CmVjdG9yaWVzIGFuZCBmaWxlcyAobm8gc3ltYm9saWMgbGlua3MsIGRldmljZXMs IGV0YykuIiApCisgICAgICAgICAgICBpbnZhbGlkLmFwcGVuZCggbWVtYmVyICkKKyAgICAgICAg ICAgIGNvbnRpbnVlCisgICAgICAgIGlmIG5vdCBzYWZlX3JlbHBhdGgoIG1lbWJlci5uYW1lICk6 CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCAiVXBsb2FkZWQgYXJjaGl2ZXMgY2Fubm90IGNv bnRhaW4gZmlsZXMgdGhhdCB3bz0KdWxkIGV4dHJhY3Qgb3V0c2lkZSBvZiB0aGUgYXJjaGl2ZS4i ICkKKyAgICAgICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29u dGludWUKKyAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZSggbWVtYmVyLm5hbWUgKSBpbiBVTkRF U0lSQUJMRV9GSUxFUzoKKyAgICAgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzLmFwcGVuZCggbWVt YmVyICkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGhlYWQgPTNEIHRhaWwgPTNEIG1l bWJlci5uYW1lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIHRhaWw6CisgICAgICAg ICAgICAgICAgaGVhZCwgdGFpbCA9M0Qgb3MucGF0aC5zcGxpdChoZWFkKQorICAgICAgICAgICAg ICAgIGlmIHRhaWwgaW4gVU5ERVNJUkFCTEVfRElSUzoKKyAgICAgICAgICAgICAgICAgICAgdW5k ZXNpcmFibGVfZGlycy5hcHBlbmQoIG1lbWJlciApCisgICAgICAgICAgICAgICAgICAgIGFzc2Vy dCBGYWxzZQorICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6CisgICAgICAgICAgICBjb250 aW51ZQogICAgICAgICBpZiByZXBvc2l0b3J5LnR5cGUgPTNEPTNEIHJ0X3V0aWwuUkVQT1NJVE9S WV9TVUlURV9ERUZJTklUSU9OIGFuZCA9Cm1lbWJlci5uYW1lICE9M0QgcnRfdXRpbC5SRVBPU0lU T1JZX0RFUEVOREVOQ1lfREVGSU5JVElPTl9GSUxFTkFNRToKLSAgICAgICAgICAgIG1lc3NhZ2Ug PTNEICdSZXBvc2l0b3JpZXMgb2YgdHlwZSA8Yj5SZXBvc2l0b3J5IHN1aXRlIGRlZmluaXRpPQpv bjwvYj4gY2FuIGNvbnRhaW4gb25seSBhIHNpbmdsZSBmaWxlIG5hbWVkIDxiPnJlcG9zaXRvcnlf ZGVwZW5kZW5jaWVzLnhtbDw9Ci9iPi4nCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgJ1RoaXMg YXJjaGl2ZSBjb250YWlucyBhIG1lbWJlciBuYW1lZCAlcy4nICUgc3RyKD0KIG1lbWJlci5uYW1l ICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZQorICAgICAgICAgICAgZXJyb3Jz LmFwcGVuZCggJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlJlcG9zaXRvcnkgc3VpdGUgZGVmaW49 Cml0aW9uPC9iPiBjYW4gY29udGFpbiBvbmx5IGEgc2luZ2xlIGZpbGUgbmFtZWQgPGI+cmVwb3Np dG9yeV9kZXBlbmRlbmNpZXMueD0KbWw8L2I+LicgKQorICAgICAgICAgICAgaW52YWxpZC5hcHBl bmQoIG1lbWJlciApCisgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBpZiByZXBvc2l0b3J5 LnR5cGUgPTNEPTNEIHJ0X3V0aWwuVE9PTF9ERVBFTkRFTkNZX0RFRklOSVRJT04gYW5kIG09CmVt YmVyLm5hbWUgIT0zRCBydF91dGlsLlRPT0xfREVQRU5ERU5DWV9ERUZJTklUSU9OX0ZJTEVOQU1F OgotICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlRvb2wg ZGVwZW5kZW5jeSBkZWZpbml0aW89Cm48L2I+IGNhbiBjb250YWluIG9ubHkgYSBzaW5nbGUgZmls ZSBuYW1lZCA8Yj50b29sX2RlcGVuZGVuY2llcy54bWw8L2I+LicKLSAgICAgICAgICAgIG1lc3Nh Z2UgKz0zRCAnVGhpcyBhcmNoaXZlIGNvbnRhaW5zIGEgbWVtYmVyIG5hbWVkICVzLicgJSBzdHIo PQogbWVtYmVyLm5hbWUgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAg cmV0dXJuIFRydWUsICcnCisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCAnUmVwb3NpdG9yaWVz IG9mIHR5cGUgPGI+VG9vbCBkZXBlbmRlbmN5IGRlZmluaT0KdGlvbjwvYj4gY2FuIGNvbnRhaW4g b25seSBhIHNpbmdsZSBmaWxlIG5hbWVkIDxiPnRvb2xfZGVwZW5kZW5jaWVzLnhtbDwvYj4uPQon ICkKKyAgICAgICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29u dGludWUKKyAgICAgICAgdmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgIEFyY2hpdmVDaGVja1Jl c3VsdHMgPTNEIG5hbWVkdHVwbGUoICdBcmNoaXZlQ2hlY2tSZXN1bHRzJywgWyAndmFsaWQnLCA9 CidpbnZhbGlkJywgJ3VuZGVzaXJhYmxlX2ZpbGVzJywgJ3VuZGVzaXJhYmxlX2RpcnMnLCAnZXJy b3JzJyBdICkKKyAgICByZXR1cm4gQXJjaGl2ZUNoZWNrUmVzdWx0cyggdmFsaWQsIGludmFsaWQs IHVuZGVzaXJhYmxlX2ZpbGVzLCB1bmRlc2lyPQphYmxlX2RpcnMsIGVycm9ycyApCj0yMAogZGVm IGNoZWNrX2ZpbGVfY29udGVudHNfZm9yX2VtYWlsX2FsZXJ0cyggYXBwICk6CiAgICAgIiIiCgpk aWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYw ZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IGxpYi90b29sX3NoZWQvdXRpbC9y ZXBvc2l0b3J5X2NvbnRlbnRfdXRpbC5weQotLS0gYS9saWIvdG9vbF9zaGVkL3V0aWwvcmVwb3Np dG9yeV9jb250ZW50X3V0aWwucHkKKysrIGIvbGliL3Rvb2xfc2hlZC91dGlsL3JlcG9zaXRvcnlf Y29udGVudF91dGlsLnB5CkBAIC0xNSwzMSArMTUsMjMgQEAKICAgICBoZ191dGlsLmdldF9yZXBv X2Zvcl9yZXBvc2l0b3J5KCB0cmFucy5hcHAsIHJlcG9zaXRvcnk9M0ROb25lLCByZXBvX3BhPQp0 aD0zRHJlcG9fZGlyLCBjcmVhdGU9M0RGYWxzZSApCiAgICAgdW5kZXNpcmFibGVfZGlyc19yZW1v dmVkID0zRCAwCiAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgMAotICAgIG9rLCBt ZXNzYWdlID0zRCBjb21taXRfdXRpbC5jaGVja19hcmNoaXZlKCByZXBvc2l0b3J5LCB0YXIgKQot ICAgIGlmIG5vdCBvazoKKyAgICBjaGVja19yZXN1bHRzID0zRCBjb21taXRfdXRpbC5jaGVja19h cmNoaXZlKCByZXBvc2l0b3J5LCB0YXIgKQorICAgIGlmIGNoZWNrX3Jlc3VsdHMuaW52YWxpZDoK ICAgICAgICAgdGFyLmNsb3NlKCkKICAgICAgICAgdXBsb2FkZWRfZmlsZS5jbG9zZSgpCi0gICAg ICAgIHJldHVybiBvaywgbWVzc2FnZSwgW10sICcnLCB1bmRlc2lyYWJsZV9kaXJzX3JlbW92ZWQs IHVuZGVzaXJhYmxlXz0KZmlsZXNfcmVtb3ZlZAorICAgICAgICBtZXNzYWdlID0zRCAnJXMgSW52 YWxpZCBwYXRocyB3ZXJlOiAlcycgJSAoCisgICAgICAgICAgICAnICcuam9pbiggY2hlY2tfcmVz dWx0cy5lcnJvcnMgKSwgJywgJy5qb2luKCBjaGVja19yZXN1bHRzLmludj0KYWxpZCApICkKKyAg ICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlLCBbXSwgJycsIHVuZGVzaXJhYmxlX2RpcnNfcmVt b3ZlZCwgdW5kZXNpcmFiPQpsZV9maWxlc19yZW1vdmVkCiAgICAgZWxzZToKICAgICAgICAgaWYg dXBsb2FkX3BvaW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZnVsbF9wYXRoID0zRCBvcy5w YXRoLmFic3BhdGgoIG9zLnBhdGguam9pbiggcmVwb19kaXIsIHVwbG9hZF89CnBvaW50ICkgKQog ICAgICAgICBlbHNlOgogICAgICAgICAgICAgZnVsbF9wYXRoID0zRCBvcy5wYXRoLmFic3BhdGgo IHJlcG9fZGlyICkKLSAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hpdmUgPTNEIFtdCi0gICAgICAg IGZvciB0YXJpbmZvX29iaiBpbiB0YXIuZ2V0bWVtYmVycygpOgotICAgICAgICAgICAgb2sgPTNE IG9zLnBhdGguYmFzZW5hbWUoIHRhcmluZm9fb2JqLm5hbWUgKSBub3QgaW4gY29tbWl0X3V0aWw9 Ci5VTkRFU0lSQUJMRV9GSUxFUwotICAgICAgICAgICAgaWYgb2s6Ci0gICAgICAgICAgICAgICAg Zm9yIGZpbGVfcGF0aF9pdGVtIGluIHRhcmluZm9fb2JqLm5hbWUuc3BsaXQoICcvJyApOgotICAg ICAgICAgICAgICAgICAgICBpZiBmaWxlX3BhdGhfaXRlbSBpbiBjb21taXRfdXRpbC5VTkRFU0lS QUJMRV9ESVJTOgotICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXNpcmFibGVfZGlyc19yZW1v dmVkICs9M0QgMQotICAgICAgICAgICAgICAgICAgICAgICAgb2sgPTNEIEZhbHNlCi0gICAgICAg ICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg ICB1bmRlc2lyYWJsZV9maWxlc19yZW1vdmVkICs9M0QgMQotICAgICAgICAgICAgaWYgb2s6Ci0g ICAgICAgICAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hpdmUuYXBwZW5kKCB0YXJpbmZvX29iai5u YW1lICkKKyAgICAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgbGVuKCBjaGVja19y ZXN1bHRzLnVuZGVzaXJhYmxlX2ZpbGVzPQogKQorICAgICAgICB1bmRlc2lyYWJsZV9kaXJzX3Jl bW92ZWQgPTNEIGxlbiggY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJsZV9kaXJzICkKKyAgICAgICAg ZmlsZW5hbWVzX2luX2FyY2hpdmUgPTNEIFsgdGkubmFtZSBmb3IgdGkgaW4gY2hlY2tfcmVzdWx0 cy52YWxpZCBdCiAgICAgICAgICMgRXh0cmFjdCB0aGUgdXBsb2FkZWQgdGFyIHRvIHRoZSBsb2Fk X3BvaW50IHdpdGhpbiB0aGUgcmVwb3NpdG9yeT0KIGhpZXJhcmNoeS4KLSAgICAgICAgdGFyLmV4 dHJhY3RhbGwoIHBhdGg9M0RmdWxsX3BhdGggKQorICAgICAgICB0YXIuZXh0cmFjdGFsbCggcGF0 aD0zRGZ1bGxfcGF0aCwgbWVtYmVycz0zRGNoZWNrX3Jlc3VsdHMudmFsaWQgKQogICAgICAgICB0 YXIuY2xvc2UoKQogICAgICAgICB1cGxvYWRlZF9maWxlLmNsb3NlKCkKICAgICAgICAgZm9yIGZp bGVuYW1lIGluIGZpbGVuYW1lc19pbl9hcmNoaXZlOgoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIw NzBmMTk2MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5 Y2NhZTQ4MTk0MGE0OSBsaWIvdG9vbF9zaGVkL3V0aWwvc2hlZF91dGlsX2NvbW1vbi5weQotLS0g YS9saWIvdG9vbF9zaGVkL3V0aWwvc2hlZF91dGlsX2NvbW1vbi5weQorKysgYi9saWIvdG9vbF9z aGVkL3V0aWwvc2hlZF91dGlsX2NvbW1vbi5weQpAQCAtNTA5LDkgKzUwOSwxNyBAQAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA9CiAgICAgICAgICAgICAgIGNoYW5nZXNldF9yZXZpc2lvbj0zRHRleHQgKQog ICAgIHJldHVybiByZXBvc2l0b3J5Cj0yMAotZGVmIGdldF9yZXBvc2l0b3J5X2ZpbGVfY29udGVu dHMoIGZpbGVfcGF0aCApOgorZGVmIGdldF9yZXBvc2l0b3J5X2ZpbGVfY29udGVudHMoIGFwcCwg ZmlsZV9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAgICAgIiIiUmV0dXJuIHRoZSBkaXNwbGF5LXNh ZmUgY29udGVudHMgb2YgYSByZXBvc2l0b3J5IGZpbGUgZm9yIGRpc3BsYXkgaT0KbiBhIGJyb3dz ZXIuIiIiCi0gICAgaWYgY2hlY2tlcnMuaXNfZ3ppcCggZmlsZV9wYXRoICk6CisgICAgc2FmZV9z dHIgPTNEICcnCisgICAgaWYgbm90IGlzX3BhdGhfd2l0aGluX3JlcG8oIGFwcCwgZmlsZV9wYXRo LCByZXBvc2l0b3J5X2lkICk6CisgICAgICAgIGxvZy53YXJuaW5nKCAnUmVxdWVzdCB0cmllcyB0 byBhY2Nlc3MgYSBmaWxlIG91dHNpZGUgb2YgdGhlIHJlcG9zaT0KdG9yeSBsb2NhdGlvbi4gRmls ZSBwYXRoOiAlcycsIGZpbGVfcGF0aCApCisgICAgICAgIHJldHVybiAnSW52YWxpZCBmaWxlIHBh dGgnCisgICAgIyBTeW1saW5rIHRhcmdldHMgYXJlIGNoZWNrZWQgYnkgaXNfcGF0aF93aXRoaW5f cmVwbworICAgIGlmIG9zLnBhdGguaXNsaW5rKCBmaWxlX3BhdGggKToKKyAgICAgICAgc2FmZV9z dHIgPTNEICdsaW5rIHRvOiAnICsgYmFzaWNfdXRpbC50b19odG1sX3N0cmluZyggb3MucmVhZGxp bmsoPQogZmlsZV9wYXRoICkgKQorICAgICAgICByZXR1cm4gc2FmZV9zdHIKKyAgICBlbGlmIGNo ZWNrZXJzLmlzX2d6aXAoIGZpbGVfcGF0aCApOgogICAgICAgICByZXR1cm4gJzxici8+Z3ppcCBj b21wcmVzc2VkIGZpbGU8YnIvPicKICAgICBlbGlmIGNoZWNrZXJzLmlzX2J6MiggZmlsZV9wYXRo ICk6CiAgICAgICAgIHJldHVybiAnPGJyLz5iejIgY29tcHJlc3NlZCBmaWxlPGJyLz4nCkBAIC01 MjAsNyArNTI4LDYgQEAKICAgICBlbGlmIGNoZWNrZXJzLmNoZWNrX2JpbmFyeSggZmlsZV9wYXRo ICk6CiAgICAgICAgIHJldHVybiAnPGJyLz5CaW5hcnkgZmlsZTxici8+JwogICAgIGVsc2U6Ci0g ICAgICAgIHNhZmVfc3RyID0zRCAnJwogICAgICAgICBmb3IgaSwgbGluZSBpbiBlbnVtZXJhdGUo IG9wZW4oIGZpbGVfcGF0aCApICk6CiAgICAgICAgICAgICBzYWZlX3N0ciA9M0QgJyVzJXMnICUg KCBzYWZlX3N0ciwgYmFzaWNfdXRpbC50b19odG1sX3N0cmluZyggbD0KaW5lICkgKQogICAgICAg ICAgICAgIyBTdG9wIHJlYWRpbmcgYWZ0ZXIgc3RyaW5nIGlzIGxhcmdlciB0aGFuIE1BWF9DT05U RU5UX1NJWkUuCkBAIC01MzAsNiArNTM3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdXRpbC5u aWNlX3NpemUoIE1BWF9DT05URU5UX1NJWkUgKQogICAgICAgICAgICAgICAgIHNhZmVfc3RyID0z RCAnJXMlcycgJSAoIHNhZmVfc3RyLCBsYXJnZV9zdHIgKQogICAgICAgICAgICAgICAgIGJyZWFr CisKICAgICAgICAgaWYgbGVuKCBzYWZlX3N0ciApID4gYmFzaWNfdXRpbC5NQVhfRElTUExBWV9T SVpFOgogICAgICAgICAgICAgIyBFbGltaW5hdGUgdGhlIG1pZGRsZSBvZiB0aGUgZmlsZSB0byBk aXNwbGF5IGEgZmlsZSBubyBsYXJnZXI9CiB0aGFuIGJhc2ljX3V0aWwuTUFYX0RJU1BMQVlfU0la RS4KICAgICAgICAgICAgICMgVGhpcyBtYXkgbm90IGJlIGlkZWFsIGlmIHRoZSBmaWxlIGlzIGxh cmdlciB0aGFuIE1BWF9DT05URU5UPQpfU0laRS4KQEAgLTU1MCw5ICs1NTgsNiBAQAogICAgICAg ICAjIFNraXAgLmhnIGRpcmVjdG9yaWVzCiAgICAgICAgIGlmIGl0ZW0uc3RhcnRzd2l0aCggJy5o ZycgKToKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIoIG9z LnBhdGguam9pbiggZm9sZGVyX3BhdGgsIGl0ZW0gKSApOgotICAgICAgICAgICAgIyBBcHBlbmQg YSAnLycgY2hhcmFjdGVyIHNvIHRoYXQgb3VyIGpxdWVyeSBkeW5hdHJlZSB3aWxsIGZ1bmM9CnRp b24gcHJvcGVybHkuCi0gICAgICAgICAgICBpdGVtID0zRCAnJXMvJyAlIGl0ZW0KICAgICAgICAg Y29udGVudHMuYXBwZW5kKCBpdGVtICkKICAgICBpZiBjb250ZW50czoKICAgICAgICAgY29udGVu dHMuc29ydCgpCkBAIC0xMDA4LDExICsxMDEzLDE1IEBACiAgICAgIiIiCiAgICAgcmV0dXJuIGhh c2F0dHIoIGFwcCwgImluc3RhbGxfbW9kZWwiICkKPTIwCi1kZWYgb3Blbl9yZXBvc2l0b3J5X2Zp bGVzX2ZvbGRlciggZm9sZGVyX3BhdGggKToKK2RlZiBvcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9s ZGVyKCBhcHAsIGZvbGRlcl9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAgICAgIiIiCiAgICAgUmV0 dXJuIGEgbGlzdCBvZiBkaWN0aW9uYXJpZXMsIGVhY2ggb2Ygd2hpY2ggY29udGFpbnMgaW5mb3Jt YXRpb24gZm9yID0KYSBmaWxlIG9yIGRpcmVjdG9yeSBjb250YWluZWQKICAgICB3aXRoaW4gYSBk aXJlY3RvcnkgaW4gYSByZXBvc2l0b3J5IGZpbGUgaGllcmFyY2h5LgogICAgICIiIgorICAgICMg U3ltbGluayB0YXJnZXRzIGFyZSBjaGVja2VkIGJ5IGlzX3BhdGhfd2l0aGluX3JlcG8KKyAgICBp ZiBub3QgaXNfcGF0aF93aXRoaW5fcmVwbyggYXBwLCBmb2xkZXJfcGF0aCwgcmVwb3NpdG9yeV9p ZCApOgorICAgICAgICBsb2cud2FybmluZyggJ1JlcXVlc3QgdHJpZXMgdG8gYWNjZXNzIGEgZm9s ZGVyIG91dHNpZGUgb2YgdGhlIHJlcG89CnNpdG9yeSBsb2NhdGlvbi4gRm9sZGVyIHBhdGg6ICVz JywgZm9sZGVyX3BhdGggKQorICAgICAgICByZXR1cm4gW10KICAgICB0cnk6CiAgICAgICAgIGZp bGVzX2xpc3QgPTNEIGdldF9yZXBvc2l0b3J5X2ZpbGVzKCBmb2xkZXJfcGF0aCApCiAgICAgZXhj ZXB0IE9TRXJyb3IsIGU6CkBAIC0xMDIyLDEwICsxMDMxLDE3IEBACiAgICAgZm9sZGVyX2NvbnRl bnRzID0zRCBbXQogICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlc19saXN0OgogICAgICAgICBpc19m b2xkZXIgPTNEIEZhbHNlCi0gICAgICAgIGlmIGZpbGVuYW1lIGFuZCBmaWxlbmFtZVsgLTEgXSA9 M0Q9M0Qgb3Muc2VwOgotICAgICAgICAgICAgaXNfZm9sZGVyID0zRCBUcnVlCisgICAgICAgIGZ1 bGxfcGF0aCA9M0Qgb3MucGF0aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUgKQorICAgICAg ICBpc19saW5rID0zRCBvcy5wYXRoLmlzbGluayggZnVsbF9wYXRoICkKKyAgICAgICAgcGF0aF9p c193aXRoaW5fcmVwbyA9M0QgaXNfcGF0aF93aXRoaW5fcmVwbyggYXBwLCBmdWxsX3BhdGgsIHJl cG9zPQppdG9yeV9pZCApCisgICAgICAgIGlmIGlzX2xpbmsgYW5kIG5vdCBwYXRoX2lzX3dpdGhp bl9yZXBvOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoICdWYWxpZCBmb2xkZXIgY29udGFpbnMg YSBzeW1saW5rIG91dHNpZGUgb2YgdGhlIHI9CmVwb3NpdG9yeSBsb2NhdGlvbi4gTGluayBmb3Vu ZCBpbjogJyArIHN0ciggZnVsbF9wYXRoICkgKQogICAgICAgICBpZiBmaWxlbmFtZToKLSAgICAg ICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUg KQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpciggZnVsbF9wYXRoICkgYW5kIHBhdGhfaXNf d2l0aGluX3JlcG86CisgICAgICAgICAgICAgICAgIyBBcHBlbmQgYSAnLycgY2hhcmFjdGVyIHNv IHRoYXQgb3VyIGpxdWVyeSBkeW5hdHJlZSB3aWxsID0KZnVuY3Rpb24gcHJvcGVybHkuCisgICAg ICAgICAgICAgICAgZmlsZW5hbWUgPTNEICclcy8nICUgZmlsZW5hbWUKKyAgICAgICAgICAgICAg ICBmdWxsX3BhdGggPTNEICclcy8nICUgZnVsbF9wYXRoCisgICAgICAgICAgICAgICAgaXNfZm9s ZGVyID0zRCBUcnVlCiAgICAgICAgICAgICBub2RlID0zRCB7ICJ0aXRsZSIgOiBmaWxlbmFtZSwK ICAgICAgICAgICAgICAgICAgICAgICJpc0ZvbGRlciIgOiBpc19mb2xkZXIsCiAgICAgICAgICAg ICAgICAgICAgICAiaXNMYXp5IiA6IGlzX2ZvbGRlciwKQEAgLTEwMzQsNiArMTA1MCwxNiBAQAog ICAgICAgICAgICAgZm9sZGVyX2NvbnRlbnRzLmFwcGVuZCggbm9kZSApCiAgICAgcmV0dXJuIGZv bGRlcl9jb250ZW50cwo9MjAKK2RlZiBpc19wYXRoX3dpdGhpbl9yZXBvKCBhcHAsIHBhdGgsIHJl cG9zaXRvcnlfaWQgKToKKyAgICAiIiIKKyAgICBEZXRlY3Qgd2hldGhlciB0aGUgZ2l2ZW4gcGF0 aCBpcyB3aXRoaW4gdGhlIHJlcG9zaXRvcnkgZm9sZGUgcm9uIHRoZSBkPQppc2suCisgICAgVXNl IHRvIGZpbHRlciBtYWxpY2lvdXMgc3ltbGlua3MgdGFyZ2V0aW5nIG91dHNpZGUgcGF0aHMuCisg ICAgIiIiCisgICAgcmVwb19wYXRoID0zRCBvcy5wYXRoLmFic3BhdGgoIGdldF9yZXBvc2l0b3J5 X2J5X2lkKCBhcHAsIHJlcG9zaXRvcnlfaT0KZCApLnJlcG9fcGF0aCggYXBwICkgKQorICAgIHJl c29sdmVkX3BhdGggPTNEIG9zLnBhdGgucmVhbHBhdGgoIHBhdGggKQorICAgIHJldHVybiBvcy5w YXRoLmNvbW1vbnByZWZpeCggWyByZXBvX3BhdGgsIHJlc29sdmVkX3BhdGggXSApID0zRD0zRCBy ZXA9Cm9fcGF0aAorCisKIGRlZiByZXBvc2l0b3J5X3dhc19wcmV2aW91c2x5X2luc3RhbGxlZCgg YXBwLCB0b29sX3NoZWRfdXJsLCByZXBvc2l0b3J5X25hPQptZSwgcmVwb19pbmZvX3R1cGxlLCBm cm9tX3RpcD0zREZhbHNlICk6CiAgICAgIiIiCiAgICAgRmluZCBvdXQgaWYgYSByZXBvc2l0b3J5 IGlzIGFscmVhZHkgaW5zdGFsbGVkIGludG8gR2FsYXh5IC0gdGhlcmUgYXJlID0Kc2V2ZXJhbCBz Y2VuYXJpb3Mgd2hlcmUgdGhpcwoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIwNzBmMTk2MzE1MWM0 YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5Y2NhZTQ4MTk0MGE0 OSB0ZW1wbGF0ZXMvYWRtaW4vcmVxdWVzdHMvc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyLm1h a28KLS0tIGEvdGVtcGxhdGVzL2FkbWluL3JlcXVlc3RzL3NlbGVjdF9kYXRhc2V0c190b190cmFu c2Zlci5tYWtvCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLTwlaW5oZXJpdCBmaWxl PTNEIi9iYXNlLm1ha28iLz4KLTwlbmFtZXNwYWNlIGZpbGU9M0QiL21lc3NhZ2UubWFrbyIgaW1w b3J0PTNEInJlbmRlcl9tc2ciIC8+Ci08JW5hbWVzcGFjZSBmaWxlPTNEIi9yZXF1ZXN0cy9jb21t b24vY29tbW9uLm1ha28iIGltcG9ydD0zRCJyZW5kZXJfc2FtcGxlXz0KZGF0YXNldHMiIC8+Ci08 JW5hbWVzcGFjZSBmaWxlPTNEIi9yZXF1ZXN0cy9jb21tb24vY29tbW9uLm1ha28iIGltcG9ydD0z RCJjb21tb25famF2YXNjcj0KaXB0cyIgLz4KLQotPCVkZWYgbmFtZT0zRCJqYXZhc2NyaXB0cygp Ij4KLSAgICR7cGFyZW50LmphdmFzY3JpcHRzKCl9Ci0gICAke2NvbW1vbl9qYXZhc2NyaXB0cygp fQotPC8lZGVmPgotCi0ke2guanMoICJsaWJzL2pxdWVyeS9qcXVlcnktdWkiLCAibGlicy9qcXVl cnkvanF1ZXJ5LmNvb2tpZSIsICJsaWJzL2pxdWVyeT0KL2pxdWVyeS5keW5hdHJlZSIgKX0KLSR7 aC5jc3MoICJkeW5hdHJlZV9za2luL3VpLmR5bmF0cmVlIiApfQotCi08c2NyaXB0IHR5cGU9M0Qi dGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAkKGZ1bmN0aW9uKCl7Ci0gICAgICAgICQoIiN0cmVlIiku YWpheENvbXBsZXRlKGZ1bmN0aW9uKGV2ZW50LCBYTUxIdHRwUmVxdWVzdCwgYWpheE9wdGlvbj0K cykgewotICAgICAgICAgICAgX2xvZygiZGVidWciLCAiYWpheENvbXBsZXRlOiAlbyIsIHRoaXMp OyAvLyBkb20gZWxlbWVudCBsaXN0ZW49CmluZwotICAgICAgICB9KTsKLSAgICAgICAgLy8gLS0t IEluaXRpYWxpemUgc2FtcGxlIHRyZWVzCi0gICAgICAgICQoIiN0cmVlIikuZHluYXRyZWUoewot ICAgICAgICAgICAgdGl0bGU6ICIke3NjcF9jb25maWdzWydkYXRhX2xvY2F0aW9uJ119IiwKLSAg ICAgICAgICAgIHJvb3RWaXNpYmxlOiB0cnVlLAotICAgICAgICAgICAgbWluRXhwYW5kTGV2ZWw6 IDAsIC8vIDE6IHJvb3Qgbm9kZSBpcyBub3QgY29sbGFwc2libGUKLSAgICAgICAgICAgIHBlcnNp c3Q6IGZhbHNlLAotICAgICAgICAgICAgY2hlY2tib3g6IHRydWUsCi0gICAgICAgICAgICBzZWxl Y3RNb2RlOiAzLAotICAgICAgICAgICAgb25Qb3N0SW5pdDogZnVuY3Rpb24oaXNSZWxvYWRpbmcs IGlzRXJyb3IpIHsKLSAgICAgICAgICAgICAgICAvL2FsZXJ0KCJyZWxvYWRpbmc6ICIraXNSZWxv YWRpbmcrIiwgZXJyb3I6Iitpc0Vycm9yKTsKLSAgICAgICAgICAgICAgICBsb2dNc2coIm9uUG9z dEluaXQoJW8sICVvKSAtICVvIiwgaXNSZWxvYWRpbmcsIGlzRXJyb3IsIHRoPQppcyk7Ci0gICAg ICAgICAgICAgICAgLy8gUmUtZmlyZSBvbkFjdGl2YXRlLCBzbyB0aGUgdGV4dCBpcyB1cGRhdGVk Ci0gICAgICAgICAgICAgICAgdGhpcy5yZWFjdGl2YXRlKCk7Ci0gICAgICAgICAgICB9LD0yMAot ICAgICAgICAgICAgZng6IHsgaGVpZ2h0OiAidG9nZ2xlIiwgZHVyYXRpb246IDIwMCB9LAotICAg ICAgICAgICAgLy8gaW5pdEFqYXggaXMgaGFyZCB0byBmYWtlLCBzbyB3ZSBwYXNzIHRoZSBjaGls ZHJlbiBhcyBvYmplY3Q9CiBhcnJheToKLSAgICAgICAgICAgIGluaXRBamF4OiB7dXJsOiAiJHto LnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVxdWVzdHNfYWRtaW4nLCBhPQpjdGlvbj0zRCdvcGVu X2ZvbGRlcicgKX0iLAotICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLD0y MAotICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IHJlcXVlc3RfaWQ6ICIke3RyYW5zLnNl Y3VyaXR5LmVuY29kZV9pZCggcmU9CnF1ZXN0LmlkICl9IiwgZXh0ZXJuYWxfc2VydmljZV9pZDog IiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBleHRlcm5hbF9zZT0KcnZpY2UuaWQgKX0iLCBr ZXk6ICIke3NjcF9jb25maWdzWydkYXRhX2xvY2F0aW9uJ119IiB9LAotICAgICAgICAgICAgfSwK LSAgICAgICAgICAgIG9uTGF6eVJlYWQ6IGZ1bmN0aW9uKGR0bm9kZSl7Ci0gICAgICAgICAgICAg ICAgZHRub2RlLmFwcGVuZEFqYXgoewotICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJs X2ZvciggY29udHJvbGxlcj0zRCdyZXF1ZXN0c19hZG1pbicsIGFjdGk9Cm9uPTNEJ29wZW5fZm9s ZGVyJyApfSIsPTIwCi0gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCi0gICAg ICAgICAgICAgICAgICAgIGRhdGE6IHsgcmVxdWVzdF9pZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5j b2RlX2lkKCByZXF1ZT0Kc3QuaWQgKX0iLCBleHRlcm5hbF9zZXJ2aWNlX2lkOiAiJHt0cmFucy5z ZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsX3NlcnZpPQpjZS5pZCApfSIsIGtleTogZHRub2Rl LmRhdGEua2V5IH0sCi0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9LAotICAgICAg ICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uKHNlbGVjdCwgZHRub2RlKSB7Ci0gICAgICAgICAgICAg ICAgLy8gRGlzcGxheSBsaXN0IG9mIHNlbGVjdGVkIG5vZGVzCi0gICAgICAgICAgICAgICAgdmFy IHNlbE5vZGVzID0zRCBkdG5vZGUudHJlZS5nZXRTZWxlY3RlZE5vZGVzKCk7Ci0gICAgICAgICAg ICAgICAgLy8gY29udmVydCB0byB0aXRsZS9rZXkgYXJyYXkKLSAgICAgICAgICAgICAgICB2YXIg c2VsS2V5cyA9M0QgJC5tYXAoc2VsTm9kZXMsIGZ1bmN0aW9uKG5vZGUpewotICAgICAgICAgICAg ICAgICAgICByZXR1cm4gbm9kZS5kYXRhLmtleTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg ICAgICAgICAgICBkb2N1bWVudC5zZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXIuc2VsZWN0ZWRf ZGF0YXNldHNfdG9fPQp0cmFuc2Zlci52YWx1ZSA9M0Qgc2VsS2V5cy5qb2luKCIsIikKLSAgICAg ICAgICAgIH0sCi0gICAgICAgICAgICBvbkFjdGl2YXRlOiBmdW5jdGlvbihkdG5vZGUpIHsKLSAg ICAgICAgICAgICAgICB2YXIgY2VsbCA9M0QgJCgiI2ZpbGVfZGV0YWlscyIpOwotICAgICAgICAg ICAgICAgIHZhciBzZWxlY3RlZF92YWx1ZTsKLSAgICAgICAgICAgICAgICBpZiAoZHRub2RlLmRh dGEua2V5ID0zRD0zRCAncm9vdCcpIHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRfdmFs dWUgPTNEICIke3NjcF9jb25maWdzWydkYXRhX2xvY2F0aW9uJ119LyI7Ci0gICAgICAgICAgICAg ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRfdmFsdWUgPTNEIGR0bm9k ZS5kYXRhLmtleTsKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGlmIChzZWxl Y3RlZF92YWx1ZS5jaGFyQXQoc2VsZWN0ZWRfdmFsdWUubGVuZ3RoLTEpICE9M0QgJy89CicpIHsK LSAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBhamF4IGNhbGwKLSAgICAgICAgICAgICAgICAg ICAgJC5hamF4KCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiUE9TVCIsCi0gICAg ICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXF1 ZXN0c19hZG1pbicsID0KYWN0aW9uPTNEJ2dldF9maWxlX2RldGFpbHMnICl9IiwKLSAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCi0gICAgICAgICAgICAgICAgICAgICAg ICBkYXRhOiB7IHJlcXVlc3RfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZChyZT0KcXVl c3QuaWQpfSIsIGV4dGVybmFsX3NlcnZpY2VfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9p ZChleHRlcm5hbF9zZXJ2PQppY2UuaWQpfSIsIGZvbGRlcl9wYXRoOiBzZWxlY3RlZF92YWx1ZSB9 LAotICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA6IGZ1bmN0aW9uICggZGF0YSApIHsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmh0bWwoICc8bGFiZWw+JytkYXRhKyc8 L2xhYmVsPicgKQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg ICB9KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjZWxs Lmh0bWwoICcnICk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0sCi0gICAgICAg IH0pOwotICAgIH0pOwotPC9zY3JpcHQ+Ci0KLTwlCi0gICAgaXNfYWRtaW4gPTNEIGNudHJsbGVy ID0zRD0zRCAncmVxdWVzdHNfYWRtaW4nIGFuZCB0cmFucy51c2VyX2lzX2FkbWluKCkKLSAgICBj YW5fdHJhbnNmZXJfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCBzYW1wbGUudW50cmFuc2ZlcnJl ZF9kYXRhc2V0X2ZpPQpsZXMgYW5kIHNhbXBsZS5saWJyYXJ5IGFuZCBzYW1wbGUuZm9sZGVyCi0l PgotCi08YnIvPjxici8+Ci08dWwgY2xhc3M9M0QibWFuYWdlLXRhYmxlLWFjdGlvbnMiPgotICAg IDxsaT48YSBjbGFzcz0zRCJhY3Rpb24tYnV0dG9uIiBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250 cm9sbGVyPTNEJ2V4dGU9CnJuYWxfc2VydmljZScsIGFjdGlvbj0zRCd2aWV3X2V4dGVybmFsX3Nl cnZpY2UnLCBpZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZT0KX2lkKCBleHRlcm5hbF9zZXJ2aWNl LmlkICkgKX0iPkV4dGVybmFsIHNlcnZpY2UgY29uZmlndXJhdGlvbjwvYT48L2xpPgotICAgICVp ZiBjYW5fdHJhbnNmZXJfZGF0YXNldHM6Ci0gICAgICAgIDxsaT48YSBjbGFzcz0zRCJhY3Rpb24t YnV0dG9uIiBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJz0KcmVxdWVzdHNfYWRt aW4nLCBhY3Rpb249M0QnbWFuYWdlX2RhdGFzZXRzJywgY250cmxsZXI9M0RjbnRybGxlciwgc2Ft cGxlX2lkPQo9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHNhbXBsZS5pZCApICl9Ij5UcmFu c2ZlciBkYXRhc2V0czwvYT48L2xpPgotICAgICVlbmRpZgotICAgIDxsaT48YSBjbGFzcz0zRCJh Y3Rpb24tYnV0dG9uIiBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXU9CmVz dHNfY29tbW9uJywgYWN0aW9uPTNEJ3ZpZXdfcmVxdWVzdCcsIGNudHJsbGVyPTNEY250cmxsZXIs IGlkPTNEdHJhbnMuc2VjdT0Kcml0eS5lbmNvZGVfaWQoIHJlcXVlc3QuaWQgKSApfSI+QnJvd3Nl IHRoaXMgcmVxdWVzdDwvYT48L2xpPgotPC91bD4KLQotJWlmIG5vdCBzYW1wbGU6Ci0gICAgPGJy Lz4KLSAgICA8Zm9udCBjb2xvcj0zRCJyZWQiPjxiPjxpPlNlbGVjdCBhIHNhbXBsZSBiZWZvcmUg c2VsZWN0aW5nIGRhdGFzZXRzIHRvPQogdHJhbnNmZXI8L2k+PC9iPjwvZm9udD4KLSAgICA8YnIv PgotJWVuZGlmCi0KLSVpZiByZXF1ZXN0LnNhbXBsZXNfd2l0aG91dF9saWJyYXJ5X2Rlc3RpbmF0 aW9uczoKLSAgICA8cD4KLSAgICA8Zm9udCBjb2xvcj0zRCJyZWQiPjxiPjxpPlNlbGVjdCBhIHRh cmdldCBkYXRhIGxpYnJhcnkgYW5kIGZvbGRlciBmb3IgPQphIHNhbXBsZSBiZWZvcmUgc2VsZWN0 aW5nIGl0cyBkYXRhc2V0cyB0byB0cmFuc2ZlciBmcm9tIHRoZSBleHRlcm5hbCBzZXJ2aWM9CmU8 L2k+PC9iPjwvZm9udD4KLSAgICA8L3A+Ci0lZW5kaWYKLQotJWlmIG1lc3NhZ2U6Ci0gICAgJHty ZW5kZXJfbXNnKCBtZXNzYWdlLCBzdGF0dXMgKX0KLSVlbmRpZgotCi08ZGl2IGNsYXNzPTNEInRv b2xGb3JtIj4KLSAgICA8ZGl2IGNsYXNzPTNEInRvb2xGb3JtVGl0bGUiPlNlbGVjdCBkYXRhc2V0 cyB0byB0cmFuc2ZlciBmcm9tIGRhdGEgZGlyPQplY3RvcnkgY29uZmlndXJlZCBmb3IgdGhlIGV4 dGVybmFsIHNlcnZpY2U8L2Rpdj4KLSAgICA8Zm9ybSBuYW1lPTNEInNlbGVjdF9kYXRhc2V0c190 b190cmFuc2ZlciIgaWQ9M0Qic2VsZWN0X2RhdGFzZXRzX3RvX3RyPQphbnNmZXIiIGFjdGlvbj0z RCIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXF1ZXN0c19hZG1pbicsIGFjdGlvbj0zRCdz ZWw9CmVjdF9kYXRhc2V0c190b190cmFuc2ZlcicsIGNudHJsbGVyPTNEY250cmxsZXIsIGV4dGVy bmFsX3NlcnZpY2VfaWQ9M0R0cmFucz0KLnNlY3VyaXR5LmVuY29kZV9pZCggZXh0ZXJuYWxfc2Vy dmljZS5pZCApLCByZXF1ZXN0X2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jPQpvZGVfaWQoIHJlcXVl c3QuaWQgKSl9IiBtZXRob2Q9M0QicG9zdCIgPgotICAgICAgICA8ZGl2IGNsYXNzPTNEImZvcm0t cm93Ij4KLSAgICAgICAgICAgIDxsYWJlbD5TYW1wbGU6PC9sYWJlbD4KLSAgICAgICAgICAgICR7 c2FtcGxlX2lkX3NlbGVjdF9maWVsZC5nZXRfaHRtbCgpfQotICAgICAgICAgICAgPGRpdiBjbGFz cz0zRCJ0b29sUGFyYW1IZWxwIiBzdHlsZT0zRCJjbGVhcjogYm90aDsiPgotICAgICAgICAgICAg ICAgIFNlbGVjdCB0aGUgc2FtcGxlIHRoYXQgd2FzIHNlcXVlbmNlZCB0byBwcm9kdWNlIHRoZSBk YXRhc2U9CnRzIHlvdSB3YW50IHRvIHRyYW5zZmVyLgotICAgICAgICAgICAgPC9kaXY+Ci0gICAg ICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPTNEImZvcm0tcm93IiA+Ci0gICAgICAgICAg ICA8bGFiZWw+U2VsZWN0IGRhdGFzZXRzIGZyb20gc291cmNlIGRhdGEgbG9jYXRpb24gZGVmaW5l ZCBpbiB0aD0KZSBleHRlcm5hbCBzZXJ2aWNlIGNvbmZpZ3VyYXRpb246PC9sYWJlbD4KLSAgICAg ICAgICAgIDxkaXYgaWQ9M0QidHJlZSIgPgotICAgICAgICAgICAgICAgIExvYWRpbmcuLi4KLSAg ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGlucHV0IGlkPTNEInNlbGVjdGVkX2RhdGFz ZXRzX3RvX3RyYW5zZmVyIiBuYW1lPTNEInNlbGVjdGVkX2Q9CmF0YXNldHNfdG9fdHJhbnNmZXIi IHR5cGU9M0QiaGlkZGVuIiBzaXplPTNENDAiLz4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9M0Qi dG9vbFBhcmFtSGVscCIgc3R5bGU9M0QiY2xlYXI6IGJvdGg7Ij4KLSAgICAgICAgICAgICAgICA8 dWw+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT5DbGljayB0aGUgPGI+ZXh0ZXJuYWwgc2Vydmlj ZSBjb25maWd1cmF0aW9uPC9iPiBidT0KdHRvbiBhbmQgY2hhbmdlIHRoZSA8Yj5EYXRhIGRpcmVj dG9yeTwvYj4gc2V0dGluZyB0byByZWRlZmluZSB0aGUgc291cmNlIGRhPQp0YSBsb2NhdGlvbi48 L2xpPgotICAgICAgICAgICAgICAgICAgICA8bGk+U2VsZWN0IGEgZm9sZGVyIHRvIHNlbGVjdCBh bGwgb2YgdGhlIGluZGl2aWR1YWwgZmk9CmxlcyB3aXRoaW4gdGhhdCBmb2xkZXIuPC9saT4KLSAg ICAgICAgICAgICAgICAgICAgPGxpPkNsaWNrIHRoZSA8Yj5TZWxlY3QgZGF0YXNldHM8L2I+IGJ1 dHRvbiB3aGVuIGRlc2lyPQplZCBkYXRhc2V0IGNoZWNrIGJveGVzIGFyZSBjaGVja2VkLjwvbGk+ Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgPTIw Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPTNEImZvcm0tcm93Ij4KLSAgICAg ICAgICAgIDxkaXYgaWQ9M0QiZmlsZV9kZXRhaWxzIiBjbGFzcz0zRCJ0b29sUGFyYW1IZWxwIiBz dHlsZT0zRCJjbGVhPQpyOiBib3RoO2JhY2tncm91bmQtY29sb3I6I0ZBRkFGQTsiPjwvZGl2Pgot ICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0zRCJmb3JtLXJvdyI+Ci0gICAgICAg ICAgICA8aW5wdXQgdHlwZT0zRCJzdWJtaXQiIG5hbWU9M0Qic2VsZWN0X2RhdGFzZXRzX3RvX3Ry YW5zZmVyX2J1dD0KdG9uIiB2YWx1ZT0zRCJTZWxlY3QgZGF0YXNldHMiLz4KLSAgICAgICAgPC9k aXY+Ci0gICAgPC9mb3JtPgotPC9kaXY+Ci0KLSVpZiBzYW1wbGUgYW5kIHNhbXBsZS5kYXRhc2V0 czoKLSAgICA8JSB0aXRsZSA9M0QgJ0FsbCBzZWxlY3RlZCBkYXRhc2V0cyBmb3IgIiVzIicgJSBz YW1wbGUubmFtZSAlPgotICAgIDxwLz4KLSAgICAke3JlbmRlcl9zYW1wbGVfZGF0YXNldHMoICdy ZXF1ZXN0c19hZG1pbicsIHNhbXBsZSwgc2FtcGxlLmRhdGFzZXRzLCB0PQppdGxlICl9Ci0lZW5k aWYKCmRpZmYgLXIgYzFjYzc2ZmEzZDY2ZWZiMDcwZjE5NjMxNTFjNGFjMGNhZTA0OGYzZiAtciA3 Y2E4ZjBlY2IyYWU4YjFiYTJiNTNlMT0KZmQwOWNjYWU0ODE5NDBhNDkgdGVtcGxhdGVzL2FkbWlu L3Rvb2xfc2hlZF9yZXBvc2l0b3J5L2NvbW1vbi5tYWtvCi0tLSBhL3RlbXBsYXRlcy9hZG1pbi90 b29sX3NoZWRfcmVwb3NpdG9yeS9jb21tb24ubWFrbworKysgYi90ZW1wbGF0ZXMvYWRtaW4vdG9v bF9zaGVkX3JlcG9zaXRvcnkvY29tbW9uLm1ha28KQEAgLTIzLDE0ICsyMywxNiBAQAogICAgICAg ICAgICAgICAgIGZ4OiB7IGhlaWdodDogInRvZ2dsZSIsIGR1cmF0aW9uOiAyMDAgfSwKICAgICAg ICAgICAgICAgICAvLyBpbml0QWpheCBpcyBoYXJkIHRvIGZha2UsIHNvIHdlIHBhc3MgdGhlIGNo aWxkcmVuIGFzIG9iPQpqZWN0IGFycmF5OgogICAgICAgICAgICAgICAgIGluaXRBamF4OiB7dXJs OiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnYWRtaW5fdG9vbHNoZWQ9CicsIGFjdGlvbj0z RCdvcGVuX2ZvbGRlcicgKX0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6 ICJqc29uIiw9MjAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9sZGVyX3Bh dGg6ICIke2RpcmVjdG9yeV9wYXRofGh9IiB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YVR5cGU6ICJqc29uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9s ZGVyX3BhdGg6ICIke2RpcmVjdG9yeV9wYXRofGh9IiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVwb3NpdG9yeV9pZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlPQpfaWQo IHJlcG9zaXRvcnkuaWQgKX0iIH0sCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg ICBvbkxhenlSZWFkOiBmdW5jdGlvbihkdG5vZGUpewogICAgICAgICAgICAgICAgICAgICBkdG5v ZGUuYXBwZW5kQWpheCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJsX2Zv ciggY29udHJvbGxlcj0zRCdhZG1pbl90b29sc2hlZCcsID0KYWN0aW9uPTNEJ29wZW5fZm9sZGVy JyApfSIsPTIwCisgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJsX2ZvciggY29u dHJvbGxlcj0zRCdhZG1pbl90b29sc2hlZCcsID0KYWN0aW9uPTNEJ29wZW5fZm9sZGVyJyApfSIs CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAotICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0aDogZHRub2RlLmRhdGEua2V5IH0sCisgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiBkdG5vZGUuZGF0YS5rZXks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ6ICIke3RyYW5z LnNlY3VyaXR5LmVuY29kZV9pZD0KKCByZXBvc2l0b3J5LmlkICl9IiB9LAogICAgICAgICAgICAg ICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIG9uU2VsZWN0 OiBmdW5jdGlvbihzZWxlY3QsIGR0bm9kZSkgewpAQCAtNTUsNyArNTcsNyBAQAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdhZG1pbl90b29sc2hlPQpkJywg YWN0aW9uPTNEJ2dldF9maWxlX2NvbnRlbnRzJyApfSIsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGF0YVR5cGU6ICJqc29uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh OiB7IGZpbGVfcGF0aDogc2VsZWN0ZWRfdmFsdWUgfSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhOiB7IGZpbGVfcGF0aDogc2VsZWN0ZWRfdmFsdWUsIHJlcG9zaXRvcnlfPQppZDog IiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCByZXBvc2l0b3J5LmlkICl9IiB9LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgOiBmdW5jdGlvbiggZGF0YSApIHsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5odG1sKCAnPGxhYmVsPicrZGF0YSsnPC9s YWJlbD4nICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgpkaWZmIC1yIGMxY2M3NmZh M2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYwZWNiMmFlOGIxYmEyYjUz ZTE9CmZkMDljY2FlNDgxOTQwYTQ5IHRlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9j b21tb24vY29tbW9uLm1ha28KLS0tIGEvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3JlcXVlc3Rz L2NvbW1vbi9jb21tb24ubWFrbworKysgYi90ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVz dHMvY29tbW9uL2NvbW1vbi5tYWtvCkBAIC0zMzMsNyArMzMzLDYgQEAKICAgICAgICBjYW5fYWRk X3NhbXBsZXMgPTNEIGlzX3Vuc3VibWl0dGVkCiAgICAgY2FuX2RlbGV0ZV9zYW1wbGVzID0zRCBu b3QgYWRkaW5nX25ld19zYW1wbGVzIGFuZCByZXF1ZXN0LnNhbXBsZXMgYW5kID0KKCAoIGlzX2Fk bWluIGFuZCBub3QgaXNfY29tcGxldGUgKSBvciBpc191bnN1Ym1pdHRlZCApCiAgICAgY2FuX2Vk aXRfc2FtcGxlcyA9M0QgcmVxdWVzdC5zYW1wbGVzIGFuZCAoIGlzX2FkbWluIG9yIG5vdCBpc19j b21wbGV0ZT0KICkKLSAgICBjYW5fc2VsZWN0X2RhdGFzZXRzID0zRCBpc19hZG1pbiBhbmQgZGlz cGxheWFibGVfc2FtcGxlX3dpZGdldHMgYW5kICggPQppc19zdWJtaXR0ZWQgb3IgaXNfY29tcGxl dGUgKQogICAgIGNhbl90cmFuc2Zlcl9kYXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5kIHJlcXVlc3Qu c2FtcGxlcyBhbmQgbm90IHJlcXVlc3Q9Ci5pc19yZWplY3RlZAogICAgIGRpc3BsYXlfY2hlY2ti b3hlcyA9M0Qgbm90IGFkZGluZ19uZXdfc2FtcGxlcyBhbmQgKCBpc19jb21wbGV0ZSBvciBpc189 CnJlamVjdGVkIG9yIGlzX3N1Ym1pdHRlZCApCiAgICAgZGlzcGxheV9iYXJfY29kZSA9M0QgcmVx dWVzdC5zYW1wbGVzIGFuZCAoIGlzX2NvbXBsZXRlIG9yIGlzX3JlamVjdGVkID0Kb3IgaXNfc3Vi bWl0dGVkICkKQEAgLTQwNyw3ICs0MDYsNyBAQAogICAgICAgICAgICAgICAgICVlbGlmIHNhbXBs ZToKICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAlaWYgc2FtcGxlLnN0YXRlIGFuZCAoIGNhbl9zZWxlY3RfZGF0YXNldHMgb3IgPQpjYW5f dHJhbnNmZXJfZGF0YXNldHMgKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlaWYgc2Ft cGxlLnN0YXRlIGFuZCBjYW5fdHJhbnNmZXJfZGF0YXNldHM6CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMjIEEgc2FtcGxlIHdpbGwgaGF2ZSBhIHN0YXRlIG9ubHkgYWZ0ZXIgdD0K aGUgcmVxdWVzdCBoYXMgYmVlbiBzdWJtaXR0ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDwlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVkX2lk ID0zRCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaT0KZCggc2FtcGxlLmlkICkKQEAgLTQxOSwxNCAr NDE4LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPTNE InZpZXctaW5mbyIgaHJlZj0zRCIke2gudXJsPQpfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlc3Rz X2NvbW1vbicsIGFjdGlvbj0zRCd2aWV3X3NhbXBsZScsIGNudHJsbGVyPTNEY249CnRybGxlciwg aWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHNhbXBsZS5pZCApICl9Ij4ke3NhbXBsZS5u YW1lIHwgaH08Lz0KYT48L2Rpdj48ZGl2IHBvcHVwbWVudT0zRCJzYW1wbGUtJHtzYW1wbGUuaWR9 LXBvcHVwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVpZiBjYW5fc2Vs ZWN0X2RhdGFzZXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVm b3IgZXh0ZXJuYWxfc2VydmljZSBpbiBzYW1wbGUucmU9CnF1ZXN0LnR5cGUuZ2V0X2V4dGVybmFs X3NlcnZpY2VzX2Zvcl9tYW51YWxfZGF0YV90cmFuc2ZlciggdHJhbnMgKToKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVfaXRlbV9sYWJlbCA9M0QgIlNlbGVjPQp0 IGRhdGFzZXRzIHRvIHRyYW5zZmVyIHVzaW5nICVzIiAlIGV4dGVybmFsX3NlcnZpY2UubmFtZQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9u LWJ1dHRvbiI9CiBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlc3RzX2Fk bWluJywgYWN0aW9uPTNEJ3NlbGVjdF9kYXRhcz0KZXRzX3RvX3RyYW5zZmVyJywgZXh0ZXJuYWxf c2VydmljZV9pZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggZXh0ZXJuYWxfPQpzZXJ2aWNl LmlkICksIHJlcXVlc3RfaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVlc3QuaWQg KSwgc2FtcGxlX2k9CmQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHNhbXBsZS5pZCApICl9 Ij4ke21lbnVfaXRlbV9sYWJlbH08L2E+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAlZW5kZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAlZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVpZiBzYW1wbGUu ZGF0YXNldHMgYW5kIGxlbiggc2FtcGxlLmRhPQp0YXNldHMgKSA+IGxlbiggdHJhbnNmZXJyZWRf ZGF0YXNldF9maWxlcyApIGFuZCBzYW1wbGUubGlicmFyeSBhbmQgc2FtcGxlLmY9Cm9sZGVyOgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBjbGFzcz0zRCJh Y3Rpb24tYnV0dG9uIiBocmU9CmY9M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVxdWVz dHNfYWRtaW4nLCBhY3Rpb249M0QnbWFuYWdlX2RhdGFzZXRzJz0KLCBzYW1wbGVfaWQ9M0R0cmFu cy5zZWN1cml0eS5lbmNvZGVfaWQoIHNhbXBsZS5pZCApICl9Ij5NYW5hZ2Ugc2VsZWN0ZWQgZGF0 PQphc2V0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJWVs aWYgc2FtcGxlLmRhdGFzZXRzIGFuZCBsZW4oIHNhbXBsZS49CmRhdGFzZXRzICkgPTNEPTNEIGxl biggdHJhbnNmZXJyZWRfZGF0YXNldF9maWxlcyApOgpAQCAtNjY1LDcgKzY1Niw2IEBACiAgICAg ICAgICAgICBpc19hZG1pbiA9M0QgY250cmxsZXIgPTNEPTNEICdyZXF1ZXN0c19hZG1pbicgYW5k IHRyYW5zLnVzZXJfaT0Kc19hZG1pbigpCiAgICAgICAgICAgICBpc19jb21wbGV0ZSA9M0Qgc2Ft cGxlLnJlcXVlc3QuaXNfY29tcGxldGUKICAgICAgICAgICAgIGlzX3N1Ym1pdHRlZCA9M0Qgc2Ft cGxlLnJlcXVlc3QuaXNfc3VibWl0dGVkCi0gICAgICAgICAgICBjYW5fc2VsZWN0X2RhdGFzZXRz ID0zRCBpc19hZG1pbiBhbmQgKCBpc19jb21wbGV0ZSBvciBpc19zdWJtaT0KdHRlZCApCiAgICAg ICAgICAgICBjYW5fdHJhbnNmZXJfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCBzYW1wbGUudW50 cmFuc2ZlcnJlZF9kYT0KdGFzZXRfZmlsZXMKICAgICAgICAgJT4KICAgICAgICAgIyMgVGhlIHRy YW5zZmVyIHN0YXR1cyBzaG91bGQgdXBkYXRlIG9ubHkgd2hlbiB0aGUgcmVxdWVzdCBoYXMgYmVl PQpuIHN1Ym1pdHRlZCBvciBjb21wbGV0ZQoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIwNzBmMTk2 MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5Y2NhZTQ4 MTk0MGE0OSB0ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVzdHMvY29tbW9uL3ZpZXdfcmVx dWVzdF9oaXM9CnRvcnkubWFrbwotLS0gYS90ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVz dHMvY29tbW9uL3ZpZXdfcmVxdWVzdF9oaXN0b3J5Lm1ha28KKysrIGIvdGVtcGxhdGVzL3dlYmFw cHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi92aWV3X3JlcXVlc3RfaGlzdG9yeS5tYWtvCkBAIC0x MSw3ICsxMSw2IEBACiAgICAgY2FuX2FkZF9zYW1wbGVzID0zRCBpc191bnN1Ym1pdHRlZAogICAg IGNhbl9lZGl0X3JlcXVlc3QgPTNEICggaXNfYWRtaW4gYW5kIG5vdCBpc19jb21wbGV0ZSApIG9y IGlzX3Vuc3VibWl0dGVkCiAgICAgY2FuX3JlamVjdCA9M0QgaXNfYWRtaW4gYW5kIGlzX3N1Ym1p dHRlZAotICAgIGNhbl9zZWxlY3RfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCAoIGlzX2NvbXBs ZXRlIG9yIGlzX3N1Ym1pdHRlZCApCiAgICAgY2FuX3N1Ym1pdF9yZXF1ZXN0ID0zRCByZXF1ZXN0 LnNhbXBsZXMgYW5kIGlzX3Vuc3VibWl0dGVkCiAlPgo9MjAKCmRpZmYgLXIgYzFjYzc2ZmEzZDY2 ZWZiMDcwZjE5NjMxNTFjNGFjMGNhZTA0OGYzZiAtciA3Y2E4ZjBlY2IyYWU4YjFiYTJiNTNlMT0K ZmQwOWNjYWU0ODE5NDBhNDkgdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1v bi92aWV3X3NhbXBsZV9kYXRhPQpzZXRzLm1ha28KLS0tIGEvdGVtcGxhdGVzL3dlYmFwcHMvZ2Fs YXh5L3JlcXVlc3RzL2NvbW1vbi92aWV3X3NhbXBsZV9kYXRhc2V0cy5tYWtvCisrKyBiL3RlbXBs YXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vdmlld19zYW1wbGVfZGF0YXNldHMu bWFrbwpAQCAtMTIsNyArMTIsNiBAQAogICAgIGlzX2FkbWluID0zRCBjbnRybGxlciA9M0Q9M0Qg J3JlcXVlc3RzX2FkbWluJyBhbmQgdHJhbnMudXNlcl9pc19hZG1pbigpCiAgICAgaXNfY29tcGxl dGUgPTNEIHNhbXBsZS5yZXF1ZXN0LmlzX2NvbXBsZXRlCiAgICAgaXNfc3VibWl0dGVkID0zRCBz YW1wbGUucmVxdWVzdC5pc19zdWJtaXR0ZWQKLSAgICBjYW5fc2VsZWN0X2RhdGFzZXRzID0zRCBp c19hZG1pbiBhbmQgKCBpc19jb21wbGV0ZSBvciBpc19zdWJtaXR0ZWQgKQogICAgIGNhbl90cmFu c2Zlcl9kYXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5kIHNhbXBsZS51bnRyYW5zZmVycmVkX2RhdGFz ZXRfZmk9CmxlcyBhbmQgc2FtcGxlLmxpYnJhcnkgYW5kIHNhbXBsZS5mb2xkZXIKICU+Cj0yMApA QCAtMjQsOSArMjMsNiBAQAogICAgICVlbmRpZgogICAgIDxsaT48YSBjbGFzcz0zRCJhY3Rpb24t YnV0dG9uIiBpZD0zRCJzYW1wbGUtJHtzYW1wbGUuaWR9LXBvcHVwIiBjbGFzcz0KPTNEIm1lbnVi dXR0b24iPkRhdGFzZXQgQWN0aW9uczwvYT48L2xpPjxkaXYgcG9wdXBtZW51PTNEInNhbXBsZS0k e3NhbXBsZS5pPQpkfS1wb3B1cCI+Ci0gICAgICAgICVpZiBjYW5fc2VsZWN0X2RhdGFzZXRzOgot ICAgICAgICAgICAgPGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZWY9M0QiJHtoLnVy bF9mb3IoIGNvbnRyb2xsZXI9Cj0zRCdyZXF1ZXN0c19hZG1pbicsIGFjdGlvbj0zRCdzZWxlY3Rf ZGF0YXNldHNfdG9fdHJhbnNmZXInLCBjbnRybGxlcj0zRGNudD0KcmxsZXIsIGV4dGVybmFsX3Nl cnZpY2VfaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2UuaWQg PQopLCByZXF1ZXN0X2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUucmVxdWVz dC5pZCApLCBzYW1wbGVfaWQ9M0Q9CnRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxlLmlk ICkgKX0iPlNlbGVjdCBtb3JlIGRhdGFzZXRzPC9hPjwvbGk+Ci0gICAgICAgICVlbmRpZgogICAg ICAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIke2gudXJsX2Zvcigg Y29udHJvbGxlcj0zRCc9CmxpYnJhcnlfY29tbW9uJywgYWN0aW9uPTNEJ2Jyb3dzZV9saWJyYXJ5 JywgY250cmxsZXI9M0RjbnRybGxlciwgaWQ9M0R0cmFucz0KLnNlY3VyaXR5LmVuY29kZV9pZCgg c2FtcGxlLmxpYnJhcnkuaWQgKSApfSI+VmlldyB0YXJnZXQgRGF0YSBMaWJyYXJ5PC9hPjwvPQps aT48bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIke2gudXJsX2ZvciggY29u dHJvbGxlcj0zRCdyZXF1ZXM9CnRzX2NvbW1vbicsIGFjdGlvbj0zRCd2aWV3X3JlcXVlc3QnLCBj bnRybGxlcj0zRGNudHJsbGVyLCBpZD0zRHRyYW5zLnNlY3VyaT0KdHkuZW5jb2RlX2lkKCBzYW1w bGUucmVxdWVzdC5pZCApICl9Ij5Ccm93c2UgdGhpcyByZXF1ZXN0PC9hPjwvbGk+PC9kaXY+Cgpk aWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYw ZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IHRlbXBsYXRlcy93ZWJhcHBzL3Rv b2xfc2hlZC9yZXBvc2l0b3J5L2NvbW1vbi5tYWtvCi0tLSBhL3RlbXBsYXRlcy93ZWJhcHBzL3Rv b2xfc2hlZC9yZXBvc2l0b3J5L2NvbW1vbi5tYWtvCisrKyBiL3RlbXBsYXRlcy93ZWJhcHBzL3Rv b2xfc2hlZC9yZXBvc2l0b3J5L2NvbW1vbi5tYWtvCkBAIC0yMSwxNCArMjEsMTQgQEAKICAgICAg ICAgICAgICAgICBmeDogeyBoZWlnaHQ6ICJ0b2dnbGUiLCBkdXJhdGlvbjogMjAwIH0sCiAgICAg ICAgICAgICAgICAgLy8gaW5pdEFqYXggaXMgaGFyZCB0byBmYWtlLCBzbyB3ZSBwYXNzIHRoZSBj aGlsZHJlbiBhcyBvYj0KamVjdCBhcnJheToKICAgICAgICAgICAgICAgICBpbml0QWpheDoge3Vy bDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcG9zaXRvcnknLCBhPQpjdGlvbj0zRCdv cGVuX2ZvbGRlcicgKX0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJq c29uIiw9MjAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9sZGVyX3BhdGg6 ICIke3JlcG9zaXRvcnkucmVwb19wYXRoKCB0PQpyYW5zLmFwcCApfSIgfSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiAiJHtyZXBvc2l0b3J5LnJlcG9fcGF0aCggdD0KcmFu cy5hcHAgKX0iLCByZXBvc2l0b3J5X2lkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJl cG9zaXRvcnkuaWQgKX0iPQogIH0sCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg ICBvbkxhenlSZWFkOiBmdW5jdGlvbihkdG5vZGUpewogICAgICAgICAgICAgICAgICAgICBkdG5v ZGUuYXBwZW5kQWpheCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJsX2Zv ciggY29udHJvbGxlcj0zRCdyZXBvc2l0b3J5JywgYWN0aT0Kb249M0Qnb3Blbl9mb2xkZXInICl9 Iiw9MjAKKyAgICAgICAgICAgICAgICAgICAgICAgIHVybDogIiR7aC51cmxfZm9yKCBjb250cm9s bGVyPTNEJ3JlcG9zaXRvcnknLCBhY3RpPQpvbj0zRCdvcGVuX2ZvbGRlcicgKX0iLAogICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiwKLSAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGE6IHsgZm9sZGVyX3BhdGg6IGR0bm9kZS5kYXRhLmtleSB9LAorICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0aDogZHRub2RlLmRhdGEua2V5LCByZXBvc2l0 b3J5X2k9CmQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggcmVwb3NpdG9yeS5pZCApfSIg IH0sCiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAg ICAgICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uKHNlbGVjdCwgZHRub2RlKSB7CkBAIC02MSw3ICs2 MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIlBPU1QiLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3Jl cG9zaXRvcnknLCA9CmFjdGlvbj0zRCdnZXRfZmlsZV9jb250ZW50cycgKX0iLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YTogeyBmaWxlX3BhdGg6IHNlbGVjdGVkX3ZhbHVlIH0sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YTogeyBmaWxlX3BhdGg6IHNlbGVjdGVkX3ZhbHVlLCByZXBv c2l0b3J5Xz0KaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggcmVwb3NpdG9yeS5pZCAp fSIgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzIDogZnVuY3Rpb24gKCBk YXRhICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmh0bWwoICc8bGFi ZWw+JytkYXRhKyc8L2xhYmVsPicgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCgpo dHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvN2RkYjQx ZGNiMmIyLwpDaGFuZ2VzZXQ6ICAgN2RkYjQxZGNiMmIyCkJyYW5jaDogICAgICByZWxlYXNlXzE1 LjAzClVzZXI6ICAgICAgICBuYXRlZm9vCkRhdGU6ICAgICAgICAyMDE2LTAyLTI0IDIwOjUzOjM1 KzAwOjAwClN1bW1hcnk6ICAgICBSZWxlYXNlIDE1LjAzLjQKQWZmZWN0ZWQgIzogIDI3IGZpbGVz CgpkaWZmIC1yIDFmMzQwNzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2Rk YjQxZGNiMmIyZTRkM2E2ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkvZXhjZXB0 aW9ucy9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L2V4Y2VwdGlvbnMvX19pbml0X18ucHkK KysrIGIvbGliL2dhbGF4eS9leGNlcHRpb25zL19faW5pdF9fLnB5CkBAIC03MSw2ICs3MSwxMSBA QAogICAgIGVycl9jb2RlID0zRCBlcnJvcl9jb2Rlcy5NQUxGT1JNRURfSUQKPTIwCj0yMAorY2xh c3MgTWFsZm9ybWVkQ29udGVudHMoIE1lc3NhZ2VFeGNlcHRpb24gKToKKyAgICBzdGF0dXNfY29k ZSA9M0QgNDAwCisgICAgZXJyX2NvZGUgPTNEIGVycm9yX2NvZGVzLk1BTEZPUk1FRF9DT05URU5U UworCisKIGNsYXNzIFVua25vd25Db250ZW50c1R5cGUoIE1lc3NhZ2VFeGNlcHRpb24gKToKICAg ICBzdGF0dXNfY29kZSA9M0QgNDAwCiAgICAgZXJyX2NvZGUgPTNEIGVycm9yX2NvZGVzLlVOS05P V05fQ09OVEVOVFNfVFlQRQoKZGlmZiAtciAxZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJj MzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiBs aWIvZ2FsYXh5L2V4Y2VwdGlvbnMvZXJyb3JfY29kZXMuanNvbgotLS0gYS9saWIvZ2FsYXh5L2V4 Y2VwdGlvbnMvZXJyb3JfY29kZXMuanNvbgorKysgYi9saWIvZ2FsYXh5L2V4Y2VwdGlvbnMvZXJy b3JfY29kZXMuanNvbgpAQCAtNjEsMTAgKzYxLDE1IEBACiAgICAgfSwKICAgIHsKICAgICAibmFt ZSI6ICJVU0VSX1RPT0xfTUVUQV9QQVJBTUVURVJfUFJPQkxFTSIsCi0gICAgImNvZGUiOiA0MDAw MTEsCisgICAgImNvZGUiOiA0MDAwMTIsCiAgICAgIm1lc3NhZ2UiOiAiU3VwcGxpZWQgaW5jb3Jy ZWN0IG9yIGluY29tcGF0aWJsZSB0b29sIG1ldGEgcGFyYW1ldGVycy4iCiAgICB9LAogICAgewor ICAgICJuYW1lIjogIk1BTEZPUk1FRF9DT05URU5UUyIsCisgICAgImNvZGUiOiA0MDAwMTMsCisg ICAgIm1lc3NhZ2UiOiAiVGhlIGNvbnRlbnRzIG9mIHRoZSByZXF1ZXN0IGFyZSBtYWxmb3JtZWQu IgorICAgIH0sCisgICB7CiAgICAgIm5hbWUiOiAiVVNFUl9BVVRIRU5USUNBVElPTl9GQUlMRUQi LAogICAgICJjb2RlIjogNDAxMDAxLAogICAgICJtZXNzYWdlIjogIkF1dGhlbnRpY2F0aW9uIGZh aWxlZCwgaW52YWxpZCBjcmVkZW50aWFscyBzdXBwbGllZC4iCgpkaWZmIC1yIDFmMzQwNzJkNDcz Zjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2ZjgzNGQ9 CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkKLS0tIGEvbGli L2dhbGF4eS9tb2RlbC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L21vZGVsL19faW5pdF9f LnB5CkBAIC01LDE1ICs1LDExIEBACiB0aGUgcmVsYXRpb25zaGlwIGNhcmRpbmFsaXRpZXMgYXJl IG9idmlvdXMgKGUuZy4gcHJlZmVyIERhdGFzZXQgdG8gRGF0YSkKICIiIgo9MjAKLWZyb20gZ2Fs YXh5IGltcG9ydCBlZ2dzCi1lZ2dzLnJlcXVpcmUoInBleHBlY3QiKQotCiBpbXBvcnQgY29kZWNz CiBpbXBvcnQgZXJybm8KIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBv cwotaW1wb3J0IHBleHBlY3QKIGltcG9ydCBqc29uCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdGlt ZQpAQCAtMzkzNywyNyArMzkzMyw2IEBACiAgICAgICAgICAgICAgICAgdW50cmFuc2ZlcnJlZF9k YXRhc2V0cy5hcHBlbmQoIGRhdGFzZXQgKQogICAgICAgICByZXR1cm4gdW50cmFuc2ZlcnJlZF9k YXRhc2V0cwo9MjAKLSAgICBkZWYgZ2V0X3VudHJhbnNmZXJyZWRfZGF0YXNldF9zaXplKCBzZWxm LCBmaWxlcGF0aCwgc2NwX2NvbmZpZ3MgKToKLSAgICAgICAgZGVmIHByaW50X3RpY2tzKCBkICk6 Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVycm9yX21zZyA9M0QgJ0Vycm9yIGVuY291bnRl cmVkIGluIGRldGVybWluaW5nIHRoZSBmaWxlIHNpemUgb2YgJT0KcyBvbiB0aGUgZXh0ZXJuYWxf c2VydmljZS4nICUgZmlsZXBhdGgKLSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzWydob3N0J10g b3Igbm90IHNjcF9jb25maWdzWyd1c2VyX25hbWUnXSBvciBub3QgPQpzY3BfY29uZmlnc1sncGFz c3dvcmQnXToKLSAgICAgICAgICAgIHJldHVybiBlcnJvcl9tc2cKLSAgICAgICAgbG9naW5fc3Ry ID0zRCAnJXNAJXMnICUgKCBzY3BfY29uZmlnc1sndXNlcl9uYW1lJ10sIHNjcF9jb25maWdzWydo PQpvc3QnXSApCi0gICAgICAgIGNtZCAgPTNEICdzc2ggJXMgImR1IC1zaCBcJyVzXCciJyAlICgg bG9naW5fc3RyLCBmaWxlcGF0aCApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG91dHB1dCA9 M0QgcGV4cGVjdC5ydW4oIGNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl dmVudHM9M0R7ICcuc3N3b3JkOionOiBzY3BfY29uZmlnc1sncGFzPQpzd29yZCddKydcclxuJywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwZWN0LlRJTUVP VVQ6cHJpbnRfdGlja3N9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVv dXQ9M0QxMCApCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICByZXR1cm4g ZXJyb3JfbXNnCi0gICAgICAgICMgY2xlYW51cCB0aGUgb3V0cHV0IHRvIGdldCBqdXN0IHRoZSBm aWxlIHNpemUKLSAgICAgICAgcmV0dXJuICBvdXRwdXQucmVwbGFjZSggZmlsZXBhdGgsICcnIClc Ci0gICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoICdQYXNzd29yZDonLCAnJyApXAotICAg ICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCAiJ3MgcGFzc3dvcmQ6IiwgJycgKVwKLSAgICAg ICAgICAgICAgICAgICAgICAucmVwbGFjZSggbG9naW5fc3RyLCAnJyApXAotICAgICAgICAgICAg ICAgICAgICAgIC5zdHJpcCgpCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHJ1bl9kZXRhaWxzKCBz ZWxmICk6CiAgICAgICAgICMgc2VsZi5ydW5zIGlzIGEgbGlzdCBvZiBTYW1wbGVSdW5Bc3NvY2lh dGlvbnMgb3JkZXJlZCBkZXNjZW5kaW5nID0Kb24gdXBkYXRlX3RpbWUuCgpkaWZmIC1yIDFmMzQw NzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2 ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkvb2JqZWN0c3RvcmUvX19pbml0X18u cHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9fX2luaXRfXy5weQorKysgYi9saWIvZ2Fs YXh5L29iamVjdHN0b3JlL19faW5pdF9fLnB5CkBAIC0xMSw3ICsxMSw3IEBACiBpbXBvcnQgdGhy ZWFkaW5nCiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKPTIwCi1mcm9tIGdhbGF4 eS51dGlsIGltcG9ydCB1bWFza19maXhfcGVybXMsIGZvcmNlX3N5bWxpbmsKK2Zyb20gZ2FsYXh5 LnV0aWwgaW1wb3J0IHVtYXNrX2ZpeF9wZXJtcywgZm9yY2Vfc3ltbGluaywgc2FmZV9yZWxwYXRo CiBmcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3RJbnZhbGlkLCBPYmplY3ROb3RG b3VuZAogZnJvbSBnYWxheHkudXRpbC5zbGVlcGVyIGltcG9ydCBTbGVlcGVyCiBmcm9tIGdhbGF4 eS51dGlsLmRpcmVjdG9yeV9oYXNoIGltcG9ydCBkaXJlY3RvcnlfaGFzaF9pZApAQCAtMjU2LDcg KzI1NiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21wb3NlZCBkaXJlY3Rv cnkgc3RydWN0dXJlIGRvZXMgbm90IGluY2x1ZGU9CiBhIGhhc2ggaWQKICAgICAgICAgICAgICAg ICAgICAgICAgICAoZS5nLiwgL2ZpbGVzL2RhdGFzZXRfMTAuZGF0IChvbGQpIHZzLiAvZmlsZXMv MDAwPQovZGF0YXNldF8xMC5kYXQgKG5ldykpCiAgICAgICAgICIiIgotICAgICAgICBiYXNlID0z RCBzZWxmLmV4dHJhX2RpcnMuZ2V0KGJhc2VfZGlyLCBzZWxmLmZpbGVfcGF0aCkKKyAgICAgICAg YmFzZSA9M0Qgb3MucGF0aC5hYnNwYXRoKHNlbGYuZXh0cmFfZGlycy5nZXQoYmFzZV9kaXIsIHNl bGYuZmlsZV9wPQphdGgpKQorICAgICAgICAjIGV4dHJhX2RpciBzaG91bGQgbmV2ZXIgYmUgY29u c3RydWN0ZWQgZnJvbSBwcm92aWRlZCBkYXRhIGJ1dCBqdXN0CisgICAgICAgICMgbWFrZSBzdXJl IHRoZXJlIGFyZSBubyBzaGVuYW5uaWdhbnMgYWZvb3QKKyAgICAgICAgaWYgZXh0cmFfZGlyIGFu ZCBleHRyYV9kaXIgIT0zRCBvcy5wYXRoLm5vcm1wYXRoKGV4dHJhX2Rpcik6CisgICAgICAgICAg ICBsb2cud2FybmluZygnZXh0cmFfZGlyIGlzIG5vdCBub3JtYWxpemVkOiAlcycsIGV4dHJhX2Rp cikKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2JqZWN0 IGlzIGludmFsaWQiKQorICAgICAgICAjIGVuc3VyZSB0aGF0IGFueSBwYXJlbnQgZGlyZWN0b3J5 IHJlZmVyZW5jZXMgaW4gYWx0X25hbWUgd291bGQgbm90CisgICAgICAgICMgcmVzdWx0IGluIGEg cGF0aCBub3QgY29udGFpbmVkIGluIHRoZSBkaXJlY3RvcnkgcGF0aCBjb25zdHJ1Y3RlZD0KIGhl cmUKKyAgICAgICAgaWYgYWx0X25hbWUgYW5kIG5vdCBzYWZlX3JlbHBhdGgoYWx0X25hbWUpOgor ICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxkIGxvY2F0ZSBwYXRoIG91dHNp ZGUgZGlyOiAlcycsIGFsdF89Cm5hbWUpCisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlk KCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKICAgICAgICAgaWYgb2xkX3N0eWxl OgogICAgICAgICAgICAgaWYgZXh0cmFfZGlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAg IHBhdGggPTNEIG9zLnBhdGguam9pbihiYXNlLCBleHRyYV9kaXIpCkBAIC02MjMsOSArNjMzLDEw IEBACiAgICAgZWxpZiBzdG9yZSA9M0Q9M0QgJ2lyb2RzJzoKICAgICAgICAgZnJvbSAucm9kcyBp bXBvcnQgSVJPRFNPYmplY3RTdG9yZQogICAgICAgICByZXR1cm4gSVJPRFNPYmplY3RTdG9yZShj b25maWc9M0Rjb25maWcsIGNvbmZpZ194bWw9M0Rjb25maWdfeG1sKQotICAgIGVsaWYgc3RvcmUg PTNEPTNEICdwdWxzYXInOgotICAgICAgICBmcm9tIC5wdWxzYXIgaW1wb3J0IFB1bHNhck9iamVj dFN0b3JlCi0gICAgICAgIHJldHVybiBQdWxzYXJPYmplY3RTdG9yZShjb25maWc9M0Rjb25maWcs IGNvbmZpZ194bWw9M0Rjb25maWdfeG1sKQorICAgICMgRGlzYWJsZSB0aGUgUHVsc2FyIG9iamVj dCBzdG9yZSBmb3Igbm93IHVudGlsIGl0IHJlY2VpdmVzIHNvbWUgYXR0ZW49CnRpb24KKyAgICAj IGVsaWYgc3RvcmUgPTNEPTNEICdwdWxzYXInOgorICAgICMgICAgZnJvbSAucHVsc2FyIGltcG9y dCBQdWxzYXJPYmplY3RTdG9yZQorICAgICMgICAgcmV0dXJuIFB1bHNhck9iamVjdFN0b3JlKGNv bmZpZz0zRGNvbmZpZywgY29uZmlnX3htbD0zRGNvbmZpZ194bWwpCiAgICAgZWxzZToKICAgICAg ICAgbG9nLmVycm9yKCJVbnJlY29nbml6ZWQgb2JqZWN0IHN0b3JlIGRlZmluaXRpb246IHswfSIu Zm9ybWF0KHN0b3JlPQopKQo9MjAKCmRpZmYgLXIgMWYzNDA3MmQ0NzNmODcxYjkwYmYxYjJiY2M2 YTcyYzMyMjQyMDAxZCAtciA3ZGRiNDFkY2IyYjJlNGQzYTZmODM0ZD0KM2RkMTE0MjZmMjZmYjc5 MDIgbGliL2dhbGF4eS9vYmplY3RzdG9yZS9yb2RzLnB5Ci0tLSBhL2xpYi9nYWxheHkvb2JqZWN0 c3RvcmUvcm9kcy5weQorKysgYi9saWIvZ2FsYXh5L29iamVjdHN0b3JlL3JvZHMucHkKQEAgLTEy LDcgKzEyLDggQEAKIGZyb20gcG9zaXhwYXRoIGltcG9ydCBiYXNlbmFtZSBhcyBwYXRoX2Jhc2Vu YW1lCiBmcm9tIHBvc2l4cGF0aCBpbXBvcnQgZGlybmFtZSBhcyBwYXRoX2Rpcm5hbWUKPTIwCi1m cm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3ROb3RGb3VuZAorZnJvbSBnYWxheHku ZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0Tm90Rm91bmQsIE9iamVjdEludmFsaWQKK2Zyb20gZ2Fs YXh5LnV0aWwgaW1wb3J0IHNhZmVfcmVscGF0aAogZnJvbSAuLm9iamVjdHN0b3JlIGltcG9ydCBE aXNrT2JqZWN0U3RvcmUsIE9iamVjdFN0b3JlLCBsb2NhbF9leHRyYV9kaXJzCj0yMAogdHJ5OgpA QCAtNzEsNiArNzIsMjAgQEAKICAgICAgICAgbG9nLmluZm8oICJpUk9EUyBkYXRhIGZvciB0aGlz IGluc3RhbmNlIHdpbGwgYmUgc3RvcmVkIGluIGNvbGxlY3RpPQpvbjogJXMsIHJlc291cmNlOiAl cyIsIHNlbGYucm9vdF9jb2xsZWN0aW9uX3BhdGgsIHNlbGYuZGVmYXVsdF9yZXNvdXJjZSApCj0y MAogICAgIGRlZiBfX2dldF9yb2RzX3BhdGgoIHNlbGYsIG9iaiwgYmFzZV9kaXI9M0ROb25lLCBk aXJfb25seT0zREZhbHNlLCBleHQ9CnJhX2Rpcj0zRE5vbmUsIGV4dHJhX2Rpcl9hdF9yb290PTNE RmFsc2UsIGFsdF9uYW1lPTNETm9uZSwgc3RyaXBfZGF0PTNEVHJ1ZT0KLCAqKmt3YXJncyApOgor ICAgICAgICAjIGV4dHJhX2RpciBzaG91bGQgbmV2ZXIgYmUgY29uc3RydWN0ZWQgZnJvbSBwcm92 aWRlZCBkYXRhIGJ1dCBqdXN0CisgICAgICAgICMgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBzaGVu YW5uaWdhbnMgYWZvb3QKKyAgICAgICAgaWYgZXh0cmFfZGlyIGFuZCBleHRyYV9kaXIgIT0zRCBv cy5wYXRoLm5vcm1wYXRoKGV4dHJhX2Rpcik6CisgICAgICAgICAgICBsb2cud2FybmluZygnZXh0 cmFfZGlyIGlzIG5vdCBub3JtYWxpemVkOiAlcycsIGV4dHJhX2RpcikKKyAgICAgICAgICAgIHJh aXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGludmFsaWQiKQorICAg ICAgICAjIGVuc3VyZSB0aGF0IGFueSBwYXJlbnQgZGlyZWN0b3J5IHJlZmVyZW5jZXMgaW4gYWx0 X25hbWUgd291bGQgbm90CisgICAgICAgICMgcmVzdWx0IGluIGEgcGF0aCBub3QgY29udGFpbmVk IGluIHRoZSBkaXJlY3RvcnkgcGF0aCBjb25zdHJ1Y3RlZD0KIGhlcmUKKyAgICAgICAgaWYgYWx0 X25hbWU6CisgICAgICAgICAgICBpZiBub3Qgc2FmZV9yZWxwYXRoKGFsdF9uYW1lKToKKyAgICAg ICAgICAgICAgICBsb2cud2FybmluZygnYWx0X25hbWUgd291bGQgbG9jYXRlIHBhdGggb3V0c2lk ZSBkaXI6ICVzJywgPQphbHRfbmFtZSkKKyAgICAgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZh bGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKKyAgICAgICAgICAgICMgYWx0 X25hbWUgY2FuIGNvbnRhaW4gcGFyZW50IGRpcmVjdG9yeSByZWZlcmVuY2VzLCBidXQgaVJPRFMg PQp3aWxsCisgICAgICAgICAgICAjIG5vdCBmb2xsb3cgdGhlbSwgc28gaWYgdGhleSBhcmUgdmFs aWQgd2Ugbm9ybWFsaXplIHRoZW0gb3V0CisgICAgICAgICAgICBhbHRfbmFtZSA9M0Qgb3MucGF0 aC5ub3JtcGF0aChhbHRfbmFtZSkKICAgICAgICAgcGF0aCA9M0QgIiIKICAgICAgICAgaWYgZXh0 cmFfZGlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcGF0aCA9M0QgZXh0cmFfZGlyCgpkaWZm IC1yIDFmMzQwNzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNi MmIyZTRkM2E2ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkvb2JqZWN0c3RvcmUv czMucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9zMy5weQorKysgYi9saWIvZ2FsYXh5 L29iamVjdHN0b3JlL3MzLnB5CkBAIC0xMiw4ICsxMiw4IEBACj0yMAogZnJvbSBkYXRldGltZSBp bXBvcnQgZGF0ZXRpbWUKPTIwCi1mcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3RO b3RGb3VuZAotZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc3RyaW5nX2FzX2Jvb2wsIHVtYXNrX2Zp eF9wZXJtcworZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0Tm90Rm91bmQsIE9i amVjdEludmFsaWQKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHN0cmluZ19hc19ib29sLCB1bWFz a19maXhfcGVybXMsIHNhZmVfcmVscGF0aAogZnJvbSBnYWxheHkudXRpbC5kaXJlY3RvcnlfaGFz aCBpbXBvcnQgZGlyZWN0b3J5X2hhc2hfaWQKIGZyb20gZ2FsYXh5LnV0aWwuc2xlZXBlciBpbXBv cnQgU2xlZXBlcgogZnJvbSAuczNfbXVsdGlwYXJ0X3VwbG9hZCBpbXBvcnQgbXVsdGlwYXJ0X3Vw bG9hZApAQCAtMjAxLDYgKzIwMSwyMCBAQAogICAgICAgICAgICAgICAgIHVtYXNrX2ZpeF9wZXJt cyggcGF0aCwgc2VsZi5jb25maWcudW1hc2ssIDA2NjYsIHNlbGYuY29uZmk9CmcuZ2lkICkKPTIw CiAgICAgZGVmIF9jb25zdHJ1Y3RfcGF0aChzZWxmLCBvYmosIGRpcl9vbmx5PTNETm9uZSwgZXh0 cmFfZGlyPTNETm9uZSwgZXh0cj0KYV9kaXJfYXRfcm9vdD0zREZhbHNlLCBhbHRfbmFtZT0zRE5v bmUsICoqa3dhcmdzKToKKyAgICAgICAgIyBleHRyYV9kaXIgc2hvdWxkIG5ldmVyIGJlIGNvbnN0 cnVjdGVkIGZyb20gcHJvdmlkZWQgZGF0YSBidXQganVzdAorICAgICAgICAjIG1ha2Ugc3VyZSB0 aGVyZSBhcmUgbm8gc2hlbmFubmlnYW5zIGFmb290CisgICAgICAgIGlmIGV4dHJhX2RpciBhbmQg ZXh0cmFfZGlyICE9M0Qgb3MucGF0aC5ub3JtcGF0aChleHRyYV9kaXIpOgorICAgICAgICAgICAg bG9nLndhcm5pbmcoJ2V4dHJhX2RpciBpcyBub3Qgbm9ybWFsaXplZDogJXMnLCBleHRyYV9kaXIp CisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBp cyBpbnZhbGlkIikKKyAgICAgICAgIyBlbnN1cmUgdGhhdCBhbnkgcGFyZW50IGRpcmVjdG9yeSBy ZWZlcmVuY2VzIGluIGFsdF9uYW1lIHdvdWxkIG5vdAorICAgICAgICAjIHJlc3VsdCBpbiBhIHBh dGggbm90IGNvbnRhaW5lZCBpbiB0aGUgZGlyZWN0b3J5IHBhdGggY29uc3RydWN0ZWQ9CiBoZXJl CisgICAgICAgIGlmIGFsdF9uYW1lOgorICAgICAgICAgICAgaWYgbm90IHNhZmVfcmVscGF0aChh bHRfbmFtZSk6CisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxkIGxv Y2F0ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsID0KYWx0X25hbWUpCisgICAgICAgICAgICAgICAg cmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIpCisg ICAgICAgICAgICAjIGFsdF9uYW1lIGNhbiBjb250YWluIHBhcmVudCBkaXJlY3RvcnkgcmVmZXJl bmNlcywgYnV0IFMzIHdpbD0KbCBub3QKKyAgICAgICAgICAgICMgZm9sbG93IHRoZW0sIHNvIGlm IHRoZXkgYXJlIHZhbGlkIHdlIG5vcm1hbGl6ZSB0aGVtIG91dAorICAgICAgICAgICAgYWx0X25h bWUgPTNEIG9zLnBhdGgubm9ybXBhdGgoYWx0X25hbWUpCiAgICAgICAgIHJlbF9wYXRoID0zRCBv cy5wYXRoLmpvaW4oKmRpcmVjdG9yeV9oYXNoX2lkKG9iai5pZCkpCiAgICAgICAgIGlmIGV4dHJh X2RpciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIGV4dHJhX2Rpcl9hdF9yb290OgoKZGlm ZiAtciAxZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRj YjJiMmU0ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiBsaWIvZ2FsYXh5L3Rvb2xzL2ltcF9l eHAvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS90b29scy9pbXBfZXhwL19faW5pdF9fLnB5 CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC9fX2luaXRfXy5weQpAQCAtNSw2ICs1LDcg QEAKIGltcG9ydCBqc29uCiBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gZ2FsYXh5IGltcG9ydCBtb2Rl bAorZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgTWFsZm9ybWVkQ29udGVudHMKIGZyb20g Z2FsYXh5Lm1vZGVsLml0ZW1fYXR0cnMgaW1wb3J0IFVzZXNBbm5vdGF0aW9ucwogZnJvbSBnYWxh eHkubW9kZWwub3JtIGltcG9ydCBlYWdlcmxvYWQsIGVhZ2VybG9hZF9hbGwKIGZyb20gZ2FsYXh5 LnRvb2xzLnBhcmFtZXRlcnMuYmFzaWMgaW1wb3J0IFVudmFsaWRhdGVkVmFsdWUKQEAgLTE5MCw5 ICsxOTEsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiBkYXRhc2V0X2F0dHJzLmdldCgnZXhw b3J0ZWQnLCBUcnVlKSBpcyBUcnVlOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBEbyBzZWN1 cml0eSBjaGVjayBhbmQgbW92ZS9jb3B5IGRhdGFzZXQgZGF0YS4KICAgICAgICAgICAgICAgICAg ICAgICAgIHRlbXBfZGF0YXNldF9maWxlX25hbWUgPTNEIFwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcy5wYXRoLmFic3BhdGgoIG9zLnBhdGguam9pbiggYXJjaGl2ZV9kaXIsIGRhPQp0 YXNldF9hdHRyc1snZmlsZV9uYW1lJ10gKSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg b3MucGF0aC5yZWFscGF0aCggb3MucGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpvaT0KbiggYXJjaGl2 ZV9kaXIsIGRhdGFzZXRfYXR0cnNbJ2ZpbGVfbmFtZSddICkgKSApCiAgICAgICAgICAgICAgICAg ICAgICAgICBpZiBub3QgZmlsZV9pbl9kaXIoIHRlbXBfZGF0YXNldF9maWxlX25hbWUsIG9zLnBh dD0KaC5qb2luKCBhcmNoaXZlX2RpciwgImRhdGFzZXRzIiApICk6Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCAiSW52YWxpZCBkYXRhc2V0IHBhdGg6ICVzIiAl ID0KdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmFpc2UgTWFsZm9ybWVkQ29udGVudHMoICJJbnZhbGlkIGRhdGFzZXQgcGF0aD0KOiAlcyIgJSB0 ZW1wX2RhdGFzZXRfZmlsZV9uYW1lICkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRhdGFz ZXRzX3VzYWdlX2NvdW50c1sgdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSBdPQogPTNEPTNEIDE6CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLm1vdmUoIHRlbXBfZGF0YXNldF9maWxl X25hbWUsIGhkYS5maWxlXz0KbmFtZSApCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgpA QCAtMzE0LDYgKzMxNSw3IEBACiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgogICAg ICAgICAgICAgICAgIGppaGEuam9iLnN0ZGVyciArPTNEICJFcnJvciBjbGVhbmluZyB1cCBoaXN0 b3J5IGltcG9ydCBqb2I9CjogJXMiICUgZQogICAgICAgICAgICAgICAgIHNlbGYuc2Ffc2Vzc2lv bi5mbHVzaCgpCisgICAgICAgICAgICAgICAgcmFpc2UKPTIwCj0yMAogY2xhc3MgSm9iRXhwb3J0 SGlzdG9yeUFyY2hpdmVXcmFwcGVyKCBvYmplY3QsIFVzZXNBbm5vdGF0aW9ucyApOgoKZGlmZiAt ciAxZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJi MmU0ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiBsaWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAv dW5wYWNrX3Rhcl9nel9hcmNoaXZlLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC91 bnBhY2tfdGFyX2d6X2FyY2hpdmUucHkKKysrIGIvbGliL2dhbGF4eS90b29scy9pbXBfZXhwL3Vu cGFja190YXJfZ3pfYXJjaGl2ZS5weQpAQCAtNiw2ICs2LDcgQEAKICAgICAtLVt1cmx8ZmlsZV0g c291cmNlIHR5cGUsIGVpdGhlciBhIFVSTCBvciBhIGZpbGUuCiAiIiIKPTIwCitpbXBvcnQgb3MK IGltcG9ydCBzeXMKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IHRhcmZpbGUKQEAgLTQzLDYgKzQ0 LDIyIEBACiAgICAgICAgIHJldHVybiBOb25lCj0yMAo9MjAKK2RlZiBjaGVja19hcmNoaXZlKCBh cmNoaXZlX2ZpbGUsIGRlc3RfZGlyICk6CisgICAgIiIiCisgICAgRW5zdXJlIHRoYXQgYSB0YXIg YXJjaGl2ZSBoYXMgbm8gYWJzb2x1dGUgcGF0aHMgb3IgcmVsYXRpdmUgcGF0aHMgb3V0cz0KaWRl CisgICAgdGhlIGFyY2hpdmUuCisgICAgIiIiCisgICAgd2l0aCB0YXJmaWxlLm9wZW4oIGFyY2hp dmVfZmlsZSwgbW9kZT0zRCdyOmd6JyApIGFzIGFyY2hpdmVfZnA6CisgICAgICAgIGZvciBhcmNf cGF0aCBpbiBhcmNoaXZlX2ZwLmdldG5hbWVzKCk6CisgICAgICAgICAgICBhc3NlcnQgb3MucGF0 aC5ub3JtcGF0aCgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICAg ICAgICAgIGRlc3RfZGlyLAorICAgICAgICAgICAgICAgICAgICBhcmNfcGF0aAorICAgICAgICAg ICAgICAgICkgKS5zdGFydHN3aXRoKCBkZXN0X2Rpci5yc3RyaXAob3Muc2VwKSArIG9zLnNlcCAp LCBcCisgICAgICAgICAgICAgICAgIkFyY2hpdmUgbWVtYmVyIHdvdWxkIGV4dHJhY3Qgb3V0c2lk ZSB0YXJnZXQgZGlyZWN0b3J5OiAlcz0KIiAlIGFyY19wYXRoCisgICAgcmV0dXJuIFRydWUKKwor CiBkZWYgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVfZmlsZSwgZGVzdF9kaXIgKToKICAgICAiIiIK ICAgICBVbnBhY2sgYSB0YXIgYW5kL29yIGd6aXBwZWQgYXJjaGl2ZSBpbnRvIGEgZGVzdGluYXRp b24gZGlyZWN0b3J5LgpAQCAtNTEsMTMgKzY4LDggQEAKICAgICBhcmNoaXZlX2ZwLmV4dHJhY3Rh bGwoIHBhdGg9M0RkZXN0X2RpciApCiAgICAgYXJjaGl2ZV9mcC5jbG9zZSgpCj0yMAotaWYgX19u YW1lX18gPTNEPTNEICJfX21haW5fXyI6Ci0gICAgIyBQYXJzZSBjb21tYW5kIGxpbmUuCi0gICAg cGFyc2VyID0zRCBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICAgIHBhcnNlci5hZGRfb3B0aW9u KCAnLVUnLCAnLS11cmwnLCBkZXN0PTNEJ2lzX3VybCcsIGFjdGlvbj0zRCJzdG9yZV90cnU9CmUi LCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1G JywgJy0tZmlsZScsIGRlc3Q9M0QnaXNfZmlsZScsIGFjdGlvbj0zRCJzdG9yZV90PQpydWUiLCBo ZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1lJywg Jy0tZW5jb2RlZCcsIGRlc3Q9M0QnaXNfYjY0ZW5jb2RlZCcsIGFjdGlvbj0KPTNEInN0b3JlX3Ry dWUiLCBkZWZhdWx0PTNERmFsc2UsIGhlbHA9M0QnU291cmNlIGFuZCBkZXN0aW5hdGlvbiBkaXIg dmFsdWVzPQogYXJlIGJhc2U2NCBlbmNvZGVkLicgKQotICAgIChvcHRpb25zLCBhcmdzKSA9M0Qg cGFyc2VyLnBhcnNlX2FyZ3MoKQorCitkZWYgbWFpbihvcHRpb25zLCBhcmdzKToKICAgICBpc191 cmwgPTNEIGJvb2woIG9wdGlvbnMuaXNfdXJsICkKICAgICBpc19maWxlID0zRCBib29sKCBvcHRp b25zLmlzX2ZpbGUgKQogICAgIGFyY2hpdmVfc291cmNlLCBkZXN0X2RpciA9M0QgYXJncwpAQCAt NjYsMTQgKzc4LDI1IEBACiAgICAgICAgIGFyY2hpdmVfc291cmNlID0zRCBiNjRkZWNvZGUoIGFy Y2hpdmVfc291cmNlICkKICAgICAgICAgZGVzdF9kaXIgPTNEIGI2NGRlY29kZSggZGVzdF9kaXIg KQo9MjAKKyAgICAjIEdldCBhcmNoaXZlIGZyb20gVVJMLgorICAgIGlmIGlzX3VybDoKKyAgICAg ICAgYXJjaGl2ZV9maWxlID0zRCB1cmxfdG9fZmlsZSggYXJjaGl2ZV9zb3VyY2UsIHRlbXBmaWxl Lk5hbWVkVGVtcG9yPQphcnlGaWxlKCBkaXI9M0RkZXN0X2RpciApLm5hbWUgKQorICAgIGVsaWYg aXNfZmlsZToKKyAgICAgICAgYXJjaGl2ZV9maWxlID0zRCBhcmNoaXZlX3NvdXJjZQorCisgICAg IyBVbnBhY2sgYXJjaGl2ZS4KKyAgICBjaGVja19hcmNoaXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3Rf ZGlyICkKKyAgICB1bnBhY2tfYXJjaGl2ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciApCisKKwor aWYgX19uYW1lX18gPTNEPTNEICJfX21haW5fXyI6CisgICAgIyBQYXJzZSBjb21tYW5kIGxpbmUu CisgICAgcGFyc2VyID0zRCBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQorICAgIHBhcnNlci5hZGRf b3B0aW9uKCAnLVUnLCAnLS11cmwnLCBkZXN0PTNEJ2lzX3VybCcsIGFjdGlvbj0zRCJzdG9yZV90 cnU9CmUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKKyAgICBwYXJzZXIuYWRkX29wdGlv biggJy1GJywgJy0tZmlsZScsIGRlc3Q9M0QnaXNfZmlsZScsIGFjdGlvbj0zRCJzdG9yZV90PQpy dWUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKKyAgICBwYXJzZXIuYWRkX29wdGlvbigg Jy1lJywgJy0tZW5jb2RlZCcsIGRlc3Q9M0QnaXNfYjY0ZW5jb2RlZCcsIGFjdGlvbj0KPTNEInN0 b3JlX3RydWUiLCBkZWZhdWx0PTNERmFsc2UsIGhlbHA9M0QnU291cmNlIGFuZCBkZXN0aW5hdGlv biBkaXIgdmFsdWVzPQogYXJlIGJhc2U2NCBlbmNvZGVkLicgKQorICAgIChvcHRpb25zLCBhcmdz KSA9M0QgcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgIHRyeToKLSAgICAgICAgIyBHZXQgYXJjaGl2 ZSBmcm9tIFVSTC4KLSAgICAgICAgaWYgaXNfdXJsOgotICAgICAgICAgICAgYXJjaGl2ZV9maWxl ID0zRCB1cmxfdG9fZmlsZSggYXJjaGl2ZV9zb3VyY2UsIHRlbXBmaWxlLk5hbWVkVGU9Cm1wb3Jh cnlGaWxlKCBkaXI9M0RkZXN0X2RpciApLm5hbWUgKQotICAgICAgICBlbGlmIGlzX2ZpbGU6Ci0g ICAgICAgICAgICBhcmNoaXZlX2ZpbGUgPTNEIGFyY2hpdmVfc291cmNlCi0KLSAgICAgICAgIyBV bnBhY2sgYXJjaGl2ZS4KLSAgICAgICAgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVfZmlsZSwgZGVz dF9kaXIgKQorICAgICAgICBtYWluKG9wdGlvbnMsIGFyZ3MpCiAgICAgZXhjZXB0IEV4Y2VwdGlv biwgZToKICAgICAgICAgcHJpbnQgIkVycm9yIHVucGFja2luZyB0YXIvZ3ogYXJjaGl2ZTogJXMi ICUgZSwgc3lzLnN0ZGVycgoKZGlmZiAtciAxZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJj MzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiBs aWIvZ2FsYXh5L3V0aWwvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS91dGlsL19faW5pdF9f LnB5CisrKyBiL2xpYi9nYWxheHkvdXRpbC9fX2luaXRfXy5weQpAQCAtMjgsNyArMjgsNyBAQAo9 MjAKIGZyb20gZW1haWwuTUlNRVRleHQgaW1wb3J0IE1JTUVUZXh0Cj0yMAotZnJvbSBvcy5wYXRo IGltcG9ydCByZWxwYXRoCitmcm9tIG9zLnBhdGggaW1wb3J0IHJlbHBhdGgsIG5vcm1wYXRoCiBm cm9tIGhhc2hsaWIgaW1wb3J0IG1kNQogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGl6aXAKPTIwCkBA IC0xMjQzLDYgKzEyNDMsMjMgQEAKIGRlZiBnYWxheHlfZGlyZWN0b3J5KCk6CiAgICAgcmV0dXJu IG9zLnBhdGguYWJzcGF0aChnYWxheHlfcm9vdF9wYXRoKQo9MjAKKworZGVmIHNhZmVfcmVscGF0 aChwYXRoKToKKyAgICAiIiIKKyAgICBHaXZlbiB3aGF0IHdlIGV4cGVjdCB0byBiZSBhIHJlbGF0 aXZlIHBhdGgsIGRldGVybWluZSB3aGV0aGVyIHRoZSBwYXRoCisgICAgd291bGQgZXhpc3QgaW5z aWRlIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKworICAgIDp0eXBlICAgcGF0aDogICBzdHJpbmcK KyAgICA6cGFyYW0gIHBhdGg6ICAgYSBwYXRoIHRvIGNoZWNrCisgICAgOnJ0eXBlOiAgICAgICAg IGJvb2wKKyAgICA6cmV0dXJuczogICAgICAgYGBUcnVlYGAgaWYgcGF0aCBpcyByZWxhdGl2ZSBh bmQgZG9lcyBub3QgcmVmZXJlbmNlIGEgPQpwYXRoCisgICAgICAgIGluIGEgcGFyZW50IGRpcmVj dG9yeSwgYGBGYWxzZWBgIG90aGVyd2lzZS4KKyAgICAiIiIKKyAgICBpZiBwYXRoLnN0YXJ0c3dp dGgob3Muc2VwKSBvciBub3JtcGF0aChwYXRoKS5zdGFydHN3aXRoKG9zLnBhcmRpcik6CisgICAg ICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBUcnVlCisKKwogaWYgX19uYW1lX18gPTNEPTNE ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IGRvY3Rlc3QKICAgICBkb2N0ZXN0LnRlc3Rtb2Qoc3lz Lm1vZHVsZXNbX19uYW1lX19dLCB2ZXJib3NlPTNERmFsc2UpCgpkaWZmIC1yIDFmMzQwNzJkNDcz Zjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2ZjgzNGQ9 CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkvdmVyc2lvbi5weQotLS0gYS9saWIvZ2FsYXh5 L3ZlcnNpb24ucHkKKysrIGIvbGliL2dhbGF4eS92ZXJzaW9uLnB5CkBAIC0xLDMgKzEsMyBAQAog VkVSU0lPTl9NQUpPUiA9M0QgIjE1LjAzIgotVkVSU0lPTl9NSU5PUiA9M0QgIjMiCitWRVJTSU9O X01JTk9SID0zRCAiNCIKIFZFUlNJT04gPTNEIFZFUlNJT05fTUFKT1IgKyAoJy4nICsgVkVSU0lP Tl9NSU5PUiBpZiBWRVJTSU9OX01JTk9SIGVsc2UgJycpCgpkaWZmIC1yIDFmMzQwNzJkNDczZjg3 MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2ZjgzNGQ9CjNk ZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5Ci0t LSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5CisrKyBiL2xpYi9nYWxh eHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5CkBAIC04NSwxNCArODUsMTQgQEAKPTIwCiAg ICAgQF9mdXR1cmVfZXhwb3NlX2FwaQogICAgIEB3ZWIucmVxdWlyZV9hZG1pbgotICAgIGRlZiBy ZWxvYWQoIHNlbGYsIHRyYW5zLCB0b29sX2lkLCAqKmt3ZCApOgorICAgIGRlZiByZWxvYWQoIHNl bGYsIHRyYW5zLCBpZCwgKiprd2QgKToKICAgICAgICAgIiIiCiAgICAgICAgIEdFVCAvYXBpL3Rv b2xzL3t0b29sX2lkfS9yZWxvYWQKICAgICAgICAgUmVsb2FkIHNwZWNpZmllZCB0b29sLgogICAg ICAgICAiIiIKICAgICAgICAgdG9vbGJveCA9M0QgdHJhbnMuYXBwLnRvb2xib3gKLSAgICAgICAg Z2FsYXh5LnF1ZXVlX3dvcmtlci5zZW5kX2NvbnRyb2xfdGFzayggdHJhbnMsICdyZWxvYWRfdG9v bCcsIG5vb3BfPQpzZWxmPTNEVHJ1ZSwga3dhcmdzPTNEeyAndG9vbF9pZCc6IHRvb2xfaWQgfSAp Ci0gICAgICAgIG1lc3NhZ2UsIHN0YXR1cyA9M0QgdHJhbnMuYXBwLnRvb2xib3gucmVsb2FkX3Rv b2xfYnlfaWQoIHRvb2xfaWQgKQorICAgICAgICBnYWxheHkucXVldWVfd29ya2VyLnNlbmRfY29u dHJvbF90YXNrKCB0cmFucywgJ3JlbG9hZF90b29sJywgbm9vcF89CnNlbGY9M0RUcnVlLCBrd2Fy Z3M9M0R7ICd0b29sX2lkJzogaWQgfSApCisgICAgICAgIG1lc3NhZ2UsIHN0YXR1cyA9M0QgdHJh bnMuYXBwLnRvb2xib3gucmVsb2FkX3Rvb2xfYnlfaWQoIGlkICkKICAgICAgICAgcmV0dXJuIHsg c3RhdHVzOiBtZXNzYWdlIH0KPTIwCiAgICAgQF9mdXR1cmVfZXhwb3NlX2FwaQoKZGlmZiAtciAx ZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0 ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2Nv bnRyb2xsZXJzL2FkbWluX3Rvb2xzaGVkLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxh eHkvY29udHJvbGxlcnMvYWRtaW5fdG9vbHNoZWQucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBz L2dhbGF4eS9jb250cm9sbGVycy9hZG1pbl90b29sc2hlZC5weQpAQCAtMzg0LDExICszODQsMTEg QEAKPTIwCiAgICAgQHdlYi5qc29uCiAgICAgQHdlYi5yZXF1aXJlX2FkbWluCi0gICAgZGVmIGdl dF9maWxlX2NvbnRlbnRzKCBzZWxmLCB0cmFucywgZmlsZV9wYXRoICk6CisgICAgZGVmIGdldF9m aWxlX2NvbnRlbnRzKCBzZWxmLCB0cmFucywgZmlsZV9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAg ICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0cmFucy5yZXNwb25zZS5oZWFkZXJzWydQ cmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0cmFucy5yZXNwb25zZS5oZWFkZXJzWydF eHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4gc3VjLmdldF9yZXBvc2l0b3J5X2ZpbGVf Y29udGVudHMoIGZpbGVfcGF0aCApCisgICAgICAgIHJldHVybiBzdWMuZ2V0X3JlcG9zaXRvcnlf ZmlsZV9jb250ZW50cyggdHJhbnMuYXBwLCBmaWxlX3BhdGgsIHJlcD0Kb3NpdG9yeV9pZCApCj0y MAogICAgIEB3ZWIuZXhwb3NlCiAgICAgQHdlYi5yZXF1aXJlX2FkbWluCkBAIC05NjEsMTEgKzk2 MSwxMSBAQAo9MjAKICAgICBAd2ViLmpzb24KICAgICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBk ZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCBmb2xkZXJfcGF0aCApOgorICAgIGRlZiBvcGVu X2ZvbGRlciggc2VsZiwgdHJhbnMsIGZvbGRlcl9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAgICAg ICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0cmFucy5yZXNwb25zZS5oZWFkZXJzWydQcmFn bWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0cmFucy5yZXNwb25zZS5oZWFkZXJzWydFeHBp cmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4gc3VjLm9wZW5fcmVwb3NpdG9yeV9maWxlc19m b2xkZXIoIGZvbGRlcl9wYXRoICkKKyAgICAgICAgcmV0dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlf ZmlsZXNfZm9sZGVyKCB0cmFucy5hcHAsIGZvbGRlcl9wYXRoLCByPQplcG9zaXRvcnlfaWQgKQo9 MjAKICAgICBAd2ViLmV4cG9zZQogICAgIEB3ZWIucmVxdWlyZV9hZG1pbgoKZGlmZiAtciAxZjM0 MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0ZDNh NmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRy b2xsZXJzL3JlcXVlc3RzX2FkbWluLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkv Y29udHJvbGxlcnMvcmVxdWVzdHNfYWRtaW4ucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dh bGF4eS9jb250cm9sbGVycy9yZXF1ZXN0c19hZG1pbi5weQpAQCAtNiwxMCArNiw3IEBACiBmcm9t IGdhbGF4eSBpbXBvcnQgbW9kZWwsIHV0aWwKIGZyb20gZ2FsYXh5LndlYi5mb3JtX2J1aWxkZXIg aW1wb3J0ICoKIGZyb20gLnJlcXVlc3RzX2NvbW1vbiBpbXBvcnQgUmVxdWVzdHNHcmlkLCBpbnZh bGlkX2lkX3JlZGlyZWN0Ci1mcm9tIGdhbGF4eSBpbXBvcnQgZWdncwotZWdncy5yZXF1aXJlKCJh bXFwIikKLWltcG9ydCBhbXFwCi1pbXBvcnQgbG9nZ2luZywgb3MsIHBleHBlY3QsIENvbmZpZ1Bh cnNlcgoraW1wb3J0IGxvZ2dpbmcsIG9zLCBDb25maWdQYXJzZXIKPTIwCiBsb2cgPTNEIGxvZ2dp bmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMApAQCAtMzUxLDE4MiArMzQ4LDYgQEAKICAgICAg ICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250 cm9sbGVyPTNEJ3JlPQpxdWVzdHNfYWRtaW4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0zRCdtYW5hZ2U9Cl9kYXRhc2V0 cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2FtcGxlX2lkPTNEc2FtcD0KbGVfaWQgKSApCi0gICAgQHdlYi5leHBvc2UKLSAgICBA d2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyKCBz ZWxmLCB0cmFucywgKiprd2QgKToKLSAgICAgICAgcGFyYW1zID0zRCB1dGlsLlBhcmFtcygga3dk ICkKLSAgICAgICAgbWVzc2FnZSA9M0QgdXRpbC5yZXN0b3JlX3RleHQoIHBhcmFtcy5nZXQoICdt ZXNzYWdlJywgJycgKSApCi0gICAgICAgIHN0YXR1cyA9M0QgcGFyYW1zLmdldCggJ3N0YXR1cycs ICdkb25lJyApCi0gICAgICAgIHJlcXVlc3RfaWQgPTNEIGt3ZC5nZXQoICdyZXF1ZXN0X2lkJywg Tm9uZSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZpY2VfaWQgPTNEIGt3ZC5nZXQoICdleHRlcm5h bF9zZXJ2aWNlX2lkJywgTm9uZSApCi0gICAgICAgIGZpbGVzID0zRCBbXQotICAgICAgICByZXF1 ZXN0ID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2RlbC5SZXF1ZXN0ICkuZ2V0 KCB0cmE9Cm5zLnNlY3VyaXR5LmRlY29kZV9pZCggcmVxdWVzdF9pZCApICkKLSAgICAgICAgZXh0 ZXJuYWxfc2VydmljZSA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMubW9kZWwuRXh0 ZXJuYWxTPQplcnZpY2UgKS5nZXQoIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggZXh0ZXJuYWxf c2VydmljZV9pZCApICkKLSAgICAgICAgIyBMb2FkIHRoZSBkYXRhIHRyYW5zZmVyIHNldHRpbmdz Ci0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UubG9hZF9kYXRhX3RyYW5zZmVyX3NldHRpbmdzKCB0 cmFucyApCi0gICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJh bnNmZXJbIHRyYW5zLm1vZGVsLkV4dGVybj0KYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9j b2wuU0NQIF0KLSAgICAgICAgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXIgPTNEIHV0aWwu cmVzdG9yZV90ZXh0KCBwYXJhbXMuZ2V0KCAnPQpzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2Zl cicsICcnICkgKQotICAgICAgICBpZiBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlcjoKLSAg ICAgICAgICAgIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyID0zRCBzZWxlY3RlZF9kYXRh c2V0c190b190cmFuc2ZlPQpyLnNwbGl0KCcsJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg IHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyID0zRCBbXQotICAgICAgICBzYW1wbGVfaWQg PTNEIGt3ZC5nZXQoICdzYW1wbGVfaWQnLCAnbm9uZScgKQotICAgICAgICBzYW1wbGVfaWRfc2Vs ZWN0X2ZpZWxkID0zRCBzZWxmLl9fYnVpbGRfc2FtcGxlX2lkX3NlbGVjdF9maWVsZCggdHI9CmFu cywgcmVxdWVzdCwgc2FtcGxlX2lkICkKLSAgICAgICAgaWYgc2FtcGxlX2lkICE9M0QgJ25vbmUn OgotICAgICAgICAgICAgc2FtcGxlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5t b2RlbC5TYW1wbGUgKS5nZXQoIHQ9CnJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBzYW1wbGVfaWQg KSApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzYW1wbGUgPTNEIE5vbmUKLSAgICAgICAg IyBUaGUgX19nZXRfZmlsZXMoKSBtZXRob2QgcmVkaXJlY3RzIGhlcmUgd2l0aCBhIHN0YXR1cyBv ZiAnZXJyb3InPQogYW5kIGEgbWVzc2FnZSBpZiB0aGVyZQotICAgICAgICAjIHdhcyBhIHByb2Js ZW0gcmV0cmlldmluZyB0aGUgZmlsZXMuCi0gICAgICAgIGlmIHBhcmFtcy5nZXQoICdzZWxlY3Rf ZGF0YXNldHNfdG9fdHJhbnNmZXJfYnV0dG9uJywgRmFsc2UgKToKLSAgICAgICAgICAgICMgR2V0 IHRoZSBzYW1wbGUgdGhhdCB3YXMgc2VxdWVuY2VkIHRvIHByb2R1Y2UgdGhlc2UgZGF0YXNldHMu Ci0gICAgICAgICAgICBpZiBzYW1wbGVfaWQgPTNEPTNEICdub25lJzoKLSAgICAgICAgICAgICAg ICBkZWwga3dkWyAnc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyX2J1dHRvbicgXQotICAgICAg ICAgICAgICAgIG1lc3NhZ2UgPTNEICdTZWxlY3QgdGhlIHNhbXBsZSB0aGF0IHdhcyBzZXF1ZW5j ZWQgdG8gcHJvZHU9CmNlIHRoZSBkYXRhc2V0cyB5b3Ugd2FudCB0byB0cmFuc2Zlci4nCi0gICAg ICAgICAgICAgICAga3dkWyAnbWVzc2FnZScgXSA9M0QgbWVzc2FnZQotICAgICAgICAgICAgICAg IGt3ZFsgJ3N0YXR1cycgXSA9M0QgJ2Vycm9yJwotICAgICAgICAgICAgICAgIHJldHVybiB0cmFu cy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB3ZWIudXJsX2ZvciggY29udHJvbGw9CmVyPTNEJ3Jl cXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0KPTNEJ3NlbGVjdF9kYXRhc2V0c190b190 cmFuc2ZlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqKmt3ZCApICkKLSAgICAgICAgICAgIGlmIG5vdCBzYW1wbGUu bGlicmFyeToKLSAgICAgICAgICAgICAgICAjIERpc3BsYXkgYW4gZXJyb3IgaWYgYSBzYW1wbGUg aGFzIGJlZW4gc2VsZWN0ZWQgdGhhdAotICAgICAgICAgICAgICAgICMgaGFzIG5vdCB5ZXQgYmVl biBhc3NvY2lhdGVkIHdpdGggYSBkZXN0aW5hdGlvbiBsaWJyYXJ5LgotICAgICAgICAgICAgICAg IG1lc3NhZ2UgPTNEICdTZWxlY3QgYSB0YXJnZXQgZGF0YSBsaWJyYXJ5IGFuZCBmb2xkZXIgZm9y IHQ9CmhlIHNhbXBsZSBiZWZvcmUgc2VsZWN0aW5nIHRoZSBkYXRhc2V0cy4nCi0gICAgICAgICAg ICAgICAgc3RhdHVzID0zRCAnZXJyb3InCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJl c3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVz dHNfY29tbW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0KPTNEJ2VkaXRfc2FtcGxlcycsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjbnRybGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPTNEdHJhPQpucy5z ZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVlc3QuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0KPTNEc3Rh dHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWVzc2FnZT0KPTNEbWVzc2FnZSApICkKLSAgICAgICAgICAgICMgU2F2 ZSB0aGUgc2FtcGxlIGRhdGFzZXRzCi0gICAgICAgICAgICBzYW1wbGVfZGF0YXNldF9maWxlX25h bWVzID0zRCBzZWxmLl9fY3JlYXRlX3NhbXBsZV9kYXRhc2V0cyggdD0KcmFucywgc2FtcGxlLCBz ZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlciwgZXh0ZXJuYWxfc2VydmljZSApCi0gICAgICAg ICAgICBpZiBzYW1wbGVfZGF0YXNldF9maWxlX25hbWVzOgotICAgICAgICAgICAgICAgIG1lc3Nh Z2UgPTNEICdEYXRhc2V0cyAoJXMpIGhhdmUgYmVlbiBzZWxlY3RlZCBmb3Igc2FtcGxlICg9CiVz KScgJSBcCi0gICAgICAgICAgICAgICAgICAgICggc3RyKCBzYW1wbGVfZGF0YXNldF9maWxlX25h bWVzIClbMTotMV0ucmVwbGFjZSggIiciLD0KICIiICksIHNhbXBsZS5uYW1lICkKLSAgICAgICAg ICAgIHJldHVybiB0cmFucy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB3ZWIudXJsX2ZvciggY29u dHJvbGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPTNEJ21hPQpuYWdlX2Rh dGFzZXRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVxdWVzdF9pZD0KPTNEcmVxdWVzdF9pZCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlX2lk PTNEPQpzYW1wbGVfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9M0RtZT0Kc3NhZ2UsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0z RHN0YT0KdHVzICkgKQotICAgICAgICByZXR1cm4gdHJhbnMuZmlsbF90ZW1wbGF0ZSggJy9hZG1p bi9yZXF1ZXN0cy9zZWxlY3RfZGF0YXNldHNfdG9fdHI9CmFuc2Zlci5tYWtvJywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNudHJsbGVyPTNEJ3JlcXVlc3RzX2FkbWluJywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q9M0RyZXF1ZXN0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfc2VydmljZT0zRGV4 dGVybmFsX3NlcnZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3Bf Y29uZmlncz0zRHNjcF9jb25maWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2FtcGxlPTNEc2FtcGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2FtcGxlX2lkX3NlbGVjdF9maWVsZD0zRHNhbXBsZV9pZF9zZWw9CmVjdF9maWVsZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0zRHN0YXR1cywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9M0RtZXNzYWdlICkKLSAgICBAd2Vi Lmpzb24KLSAgICBkZWYgZ2V0X2ZpbGVfZGV0YWlscyggc2VsZiwgdHJhbnMsIHJlcXVlc3RfaWQs IGV4dGVybmFsX3NlcnZpY2VfaWQsIGZvPQpsZGVyX3BhdGggKToKLSAgICAgICAgZGVmIHByaW50 X3RpY2tzKCBkICk6Ci0gICAgICAgICAgICAjIHBleHBlY3QgdGltZW91dCBtZXRob2QKLSAgICAg ICAgICAgIHBhc3MKLSAgICAgICAgIyBBdm9pZCBjYWNoaW5nCi0gICAgICAgIHRyYW5zLnJlc3Bv bnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2FjaGUnCi0gICAgICAgIHRyYW5zLnJlc3Bv bnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0gICAgICAgIHJlcXVlc3QgPTNEIHRyYW5z LnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLlJlcXVlc3QgKS5nZXQoIHRyYT0KbnMuc2Vj dXJpdHkuZGVjb2RlX2lkKCByZXF1ZXN0X2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNl ID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2RlbC5FeHRlcm5hbFM9CmVydmlj ZSApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBleHRlcm5hbF9zZXJ2aWNlX2lkICkg KQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxvYWRfZGF0YV90cmFuc2Zlcl9zZXR0aW5ncygg dHJhbnMgKQotICAgICAgICBzY3BfY29uZmlncyA9M0QgZXh0ZXJuYWxfc2VydmljZS5kYXRhX3Ry YW5zZmVyWyB0cmFucy5tb2RlbC5FeHRlcm49CmFsU2VydmljZS5kYXRhX3RyYW5zZmVyX3Byb3Rv Y29sLlNDUCBdCi0gICAgICAgIGNtZCAgPTNEICdzc2ggJXNAJXMgImxzIC1vZ2hwIFwnJXNcJyIn ICUgKCBzY3BfY29uZmlnc1sgJ3VzZXJfbmFtZT0KJyBdLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcF9jb25maWdzWyAnaG9zdCcgXSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXJfcGF0aCAp Ci0gICAgICAgICMgSGFuZGxlIHRoZSBhdXRoZW50aWNhdGlvbiBtZXNzYWdlIGlmIHNzaCBrZXlz IGFyZSBub3Qgc2V0IC0gdGhlID0KbWVzc2FnZSBpcwotICAgICAgICAjIHNvbWV0aGluZyBsaWtl OiAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIGNvbm5lY3RpbmcgKHk9CmVzL25v KS4iCi0gICAgICAgIG91dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNtZCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsgJ1woeWVzXC9ub1wpXC4qJyA6ICd5ZXNcclxuJywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuc3N3b3JkOionIDogc2Nw X2NvbmZpZ3NbICdwYXNzd29yPQpkJyBdICsgJ1xyXG4nLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGV4cGVjdC5USU1FT1VUIDogcHJpbnRfdGlja3MgfSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9M0QxMCApCi0gICAgICAgIGZvciBwYXNz d29yZF9zdHIgaW4gWyAnUGFzc3dvcmQ6XHJcbicsICdwYXNzd29yZDpcclxuJyBdOgotICAgICAg ICAgICAgIyBFbGltaW5hdGUgdGhlIG91dHB1dCBjcmVhdGVkIHVzaW5nIHNzaCBmcm9tIHRoZSB0 cmVlCi0gICAgICAgICAgICBpZiBwYXNzd29yZF9zdHIgaW4gb3V0cHV0OgotICAgICAgICAgICAg ICAgIG91dHB1dCA9M0Qgb3V0cHV0LnJlcGxhY2UoIHBhc3N3b3JkX3N0ciwgJycgKQotICAgICAg ICByZXR1cm4gdW5pY29kZSggb3V0cHV0LnJlcGxhY2UoICdcclxuJywgJzxici8+JyApICkKLSAg ICBAd2ViLmpzb24KLSAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCByZXF1ZXN0X2lk LCBleHRlcm5hbF9zZXJ2aWNlX2lkLCBrZXkgKToKLSAgICAgICAgIyBBdm9pZCBjYWNoaW5nCi0g ICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2FjaGUnCi0g ICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0gICAgICAg IHJlcXVlc3QgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLlJlcXVlc3Qg KS5nZXQoIHRyYT0KbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCByZXF1ZXN0X2lkICkgKQotICAgICAg ICBleHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2Rl bC5FeHRlcm5hbFM9CmVydmljZSApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBleHRl cm5hbF9zZXJ2aWNlX2lkICkgKQotICAgICAgICBmb2xkZXJfcGF0aCA9M0Qga2V5Ci0gICAgICAg IGZpbGVzX2xpc3QgPTNEIHNlbGYuX19nZXRfZmlsZXMoIHRyYW5zLCByZXF1ZXN0LCBleHRlcm5h bF9zZXJ2aWNlLD0KIGZvbGRlcl9wYXRoICkKLSAgICAgICAgZm9sZGVyX2NvbnRlbnRzID0zRCBb XQotICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXNfbGlzdDoKLSAgICAgICAgICAgIGlzX2Zv bGRlciA9M0QgRmFsc2UKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lIGFuZCBmaWxlbmFtZVstMV0g PTNEPTNEIG9zLnNlcDoKLSAgICAgICAgICAgICAgICBpc19mb2xkZXIgPTNEIFRydWUKLSAgICAg ICAgICAgIGlmIGZpbGVuYW1lOgotICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0 aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUgKQotICAgICAgICAgICAgICAgIG5vZGUgPTNE IHsgInRpdGxlIjogZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImlzRm9sZGVy IjogaXNfZm9sZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICJpc0xhenkiOiBpc19mb2xk ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInRvb2x0aXAiOiBmdWxsX3BhdGgsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgImtleSI6IGZ1bGxfcGF0aCB9Ci0gICAgICAgICAgICAgICAg Zm9sZGVyX2NvbnRlbnRzLmFwcGVuZCggbm9kZSApCi0gICAgICAgIHJldHVybiBmb2xkZXJfY29u dGVudHMKLSAgICBkZWYgX19nZXRfZmlsZXMoIHNlbGYsIHRyYW5zLCByZXF1ZXN0LCBleHRlcm5h bF9zZXJ2aWNlLCBmb2xkZXJfcGF0aCApOgotICAgICAgICAjIFJldHJpZXZlcyB0aGUgZmlsZW5h bWVzIHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHJlbW90ZSBob3N0LgotICAgICAgICBvayA9 M0QgVHJ1ZQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxvYWRfZGF0YV90cmFuc2Zlcl9zZXR0 aW5ncyggdHJhbnMgKQotICAgICAgICBzY3BfY29uZmlncyA9M0QgZXh0ZXJuYWxfc2VydmljZS5k YXRhX3RyYW5zZmVyWyB0cmFucy5tb2RlbC5FeHRlcm49CmFsU2VydmljZS5kYXRhX3RyYW5zZmVy X3Byb3RvY29sLlNDUCBdCi0gICAgICAgIGlmIG5vdCBzY3BfY29uZmlnc1sgJ2hvc3QnIF0gb3Ig bm90IHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBdIG9yID0Kbm90IHNjcF9jb25maWdzWyAncGFz c3dvcmQnIF06Ci0gICAgICAgICAgICBzdGF0dXMgPTNEICdlcnJvcicKLSAgICAgICAgICAgIG1l c3NhZ2UgPTNEICJFcnJvciBpbiBleHRlcm5hbCBzZXJ2aWNlIGxvZ2luIGluZm9ybWF0aW9uLiIK LSAgICAgICAgICAgIG9rID0zRCBGYWxzZQotICAgICAgICBkZWYgcHJpbnRfdGlja3MoIGQgKToK LSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgY21kICA9M0QgJ3NzaCAlc0AlcyAibHMgLXAgXCcl c1wnIicgJSAoIHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBdPQosIHNjcF9jb25maWdzWyAnaG9z dCcgXSwgZm9sZGVyX3BhdGggKQotICAgICAgICAjIEhhbmRsZSB0aGUgYXV0aGVudGljYXRpb24g bWVzc2FnZSBpZiBrZXlzIGFyZSBub3Qgc2V0IC0gdGhlIG1lc3M9CmFnZSBpcwotICAgICAgICAj IHNvbWV0aGluZyBsaWtlOiAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIGNvbm5l Y3RpbmcgKHk9CmVzL25vKS4iCi0gICAgICAgIG91dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNtZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsgJ1woeWVzXC9ub1wpXC4q JyA6ICd5ZXNcclxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5z c3dvcmQ6KicgOiBzY3BfY29uZmlnc1sgJ3Bhc3N3b3JkPQonIF0gKyAnXHJcbicsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwZWN0LlRJTUVPVVQgOiBwcmludF90 aWNrcyB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0zRDEwICkKLSAg ICAgICAgaWYgJ05vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnknIGluIG91dHB1dDoKLSAgICAgICAg ICAgIHN0YXR1cyA9M0QgJ2Vycm9yJwotICAgICAgICAgICAgbWVzc2FnZSA9M0QgIk5vIGZvbGRl ciBuYW1lZCAoJXMpIGV4aXN0cyBvbiB0aGUgZXh0ZXJuYWwgc2Vydmk9CmNlLiIgJSBmb2xkZXJf cGF0aAotICAgICAgICAgICAgb2sgPTNEIEZhbHNlCi0gICAgICAgIGlmIG9rOgotICAgICAgICAg ICAgaWYgJ2Fzc3dvcmQ6JyBpbiBvdXRwdXQ6Ci0gICAgICAgICAgICAgICAgIyBFbGltaW5hdGUg dGhlIG91dHB1dCBjcmVhdGVkIHVzaW5nIHNzaCBmcm9tIHRoZSB0cmVlCi0gICAgICAgICAgICAg ICAgb3V0cHV0X2FzX2xpc3QgPTNEIG91dHB1dC5zcGxpdGxpbmVzKClbIDE6IF0KLSAgICAgICAg ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3V0cHV0X2FzX2xpc3QgPTNEIG91dHB1dC5zcGxp dGxpbmVzKCkKLSAgICAgICAgICAgIHJldHVybiBvdXRwdXRfYXNfbGlzdAotICAgICAgICByZXR1 cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsZXI9 M0QncmU9CnF1ZXN0c19hZG1pbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPTNEJ3NlbGVjdD0KX2RhdGFzZXRzX3RvX3Ry YW5zZmVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXF1ZXN0X2lkPTNEdHJhPQpucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVl c3QuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlPQpfaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVf aWQoIGV4dGVybmFsX3NlcnZpY2UuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzdGF0dXMsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0z RG1lc3NhZz0KZSApICkKLSAgICBkZWYgX19jcmVhdGVfc2FtcGxlX2RhdGFzZXRzKCBzZWxmLCB0 cmFucywgc2FtcGxlLCBzZWxlY3RlZF9kYXRhc2V0c190PQpvX3RyYW5zZmVyLCBleHRlcm5hbF9z ZXJ2aWNlICk6Ci0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UubG9hZF9kYXRhX3RyYW5zZmVyX3Nl dHRpbmdzKCB0cmFucyApCi0gICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNl LmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4dGVybj0KYWxTZXJ2aWNlLmRhdGFfdHJhbnNm ZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgc2FtcGxlX2RhdGFzZXRfZmlsZV9uYW1lcyA9M0Qg W10KLSAgICAgICAgaWYgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXI6Ci0gICAgICAgICAg ICBmb3IgZmlsZXBhdGggaW4gc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXI6Ci0gICAgICAg ICAgICAgICAgIyBGSVhNRTogaGFuZGxlIGZvbGRlciBzZWxlY3Rpb24gLSBpZ25vcmUgZm9sZGVy cyBmb3Igbm93Ci0gICAgICAgICAgICAgICAgaWYgZmlsZXBhdGhbLTFdICE9M0Qgb3Muc2VwOgot ICAgICAgICAgICAgICAgICAgICBuYW1lID0zRCBzZWxmLl9fcmVuYW1lX2RhdGFzZXQoIHNhbXBs ZSwgZmlsZXBhdGguc3BsaXQ9CiggJy8nIClbLTFdLCBzY3BfY29uZmlncyApCi0gICAgICAgICAg ICAgICAgICAgIHN0YXR1cyA9M0QgdHJhbnMuYXBwLm1vZGVsLlNhbXBsZURhdGFzZXQudHJhbnNm ZXJfc3RhdD0KdXMuTk9UX1NUQVJURUQKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSA9M0Qgc2Ft cGxlLmdldF91bnRyYW5zZmVycmVkX2RhdGFzZXRfc2l6ZSggZmlsZXBhPQp0aCwgc2NwX2NvbmZp Z3MgKQotICAgICAgICAgICAgICAgICAgICBzYW1wbGVfZGF0YXNldCA9M0QgdHJhbnMubW9kZWwu U2FtcGxlRGF0YXNldCggc2FtcGxlPQo9M0RzYW1wbGUsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9wYXRoPQo9M0Rm aWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzPQp0YXR1cywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPTNEbmFtPQpl LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVycm9yX21zZz0KPTNEJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0zRHNpej0KZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBleHRlcm5hbF9zPQplcnZpY2U9M0RleHRlcm5hbF9zZXJ2aWNlICkKLSAgICAgICAgICAgICAg ICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHNhbXBsZV9kYXRhc2V0ICkKLSAgICAgICAgICAg ICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICAgICAgICAgICAgIHNh bXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMuYXBwZW5kKCBzdHIoIHNhbXBsZV9kYXRhc2V0Lj0KbmFt ZSApICkKLSAgICAgICAgcmV0dXJuIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMKICAgICBkZWYg X19yZW5hbWVfZGF0YXNldCggc2VsZiwgc2FtcGxlLCBmaWxlcGF0aCwgc2NwX2NvbmZpZ3MgKToK ICAgICAgICAgbmFtZSA9M0QgZmlsZXBhdGguc3BsaXQoICcvJyApWy0xXQogICAgICAgICBvcHRp b25zID0zRCBzYW1wbGUucmVxdWVzdC50eXBlLnJlbmFtZV9kYXRhc2V0X29wdGlvbnMKQEAgLTU2 MSw5MCArMzgyLDYgQEAKICAgICAgICAgICAgIGZsdXNoX25lZWRlZCA9M0QgVHJ1ZQogICAgICAg ICBpZiBmbHVzaF9uZWVkZWQ6CiAgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkK LSAgICBkZWYgX19jcmVhdGVfZGF0YV90cmFuc2Zlcl9tZXNzYWdlcyggc2VsZiwgdHJhbnMsIHNh bXBsZSwgc2VsZWN0ZWRfc2FtPQpwbGVfZGF0YXNldHMgKToKLSAgICAgICAgIiIiCi0gICAgICAg IENyZWF0ZXMgdGhlIHhtbCBtZXNzYWdlcyB0byBzZW5kIHRvIHRoZSByYWJiaXRtcSBzZXJ2ZXIu IEl0IHJldHVybj0KcyBhIGRpY3Rpb25hcnkgb2YgbWVzc2FnZXMKLSAgICAgICAga2V5ZWQgYnkg dGhlIGV4dGVybmFsIHNlcnZpY2UgdXNlZCB0byB0cmFuc2ZlciB0aGUgZGF0YXNldHMKLSAgICAg ICAgIiIiCi0gICAgICAgICMgQ3JlYXRlIHRoZSB4bWwgbWVzc2FnZSBiYXNlZCBvbiB0aGUgZm9s bG93aW5nIHRlbXBsYXRlCi0gICAgICAgIHhtbCA9M0QgXAotICAgICAgICAgICAgJycnIDxkYXRh X3RyYW5zZmVyPgotICAgICAgICAgICAgICAgICAgICA8Z2FsYXh5X2hvc3Q+JShHQUxBWFlfSE9T VClzPC9nYWxheHlfaG9zdD4KLSAgICAgICAgICAgICAgICAgICAgPGFwaV9rZXk+JShBUElfS0VZ KXM8L2FwaV9rZXk+Ci0gICAgICAgICAgICAgICAgICAgIDxkYXRhX2hvc3Q+JShEQVRBX0hPU1Qp czwvZGF0YV9ob3N0PgotICAgICAgICAgICAgICAgICAgICA8ZGF0YV91c2VyPiUoREFUQV9VU0VS KXM8L2RhdGFfdXNlcj4KLSAgICAgICAgICAgICAgICAgICAgPGRhdGFfcGFzc3dvcmQ+JShEQVRB X1BBU1NXT1JEKXM8L2RhdGFfcGFzc3dvcmQ+Ci0gICAgICAgICAgICAgICAgICAgIDxyZXF1ZXN0 X2lkPiUoUkVRVUVTVF9JRClzPC9yZXF1ZXN0X2lkPgotICAgICAgICAgICAgICAgICAgICA8c2Ft cGxlX2lkPiUoU0FNUExFX0lEKXM8L3NhbXBsZV9pZD4KLSAgICAgICAgICAgICAgICAgICAgPGxp YnJhcnlfaWQ+JShMSUJSQVJZX0lEKXM8L2xpYnJhcnlfaWQ+Ci0gICAgICAgICAgICAgICAgICAg IDxmb2xkZXJfaWQ+JShGT0xERVJfSUQpczwvZm9sZGVyX2lkPgotICAgICAgICAgICAgICAgICAg ICAlKERBVEFTRVRTKXMKLSAgICAgICAgICAgICAgICA8L2RhdGFfdHJhbnNmZXI+JycnCi0gICAg ICAgIGRhdGFzZXRfeG1sID0zRCBcCi0gICAgICAgICAgICAnJyc8ZGF0YXNldD4KLSAgICAgICAg ICAgICAgICAgICA8ZGF0YXNldF9pZD4lKElEKXM8L2RhdGFzZXRfaWQ+Ci0gICAgICAgICAgICAg ICAgICAgPG5hbWU+JShOQU1FKXM8L25hbWU+Ci0gICAgICAgICAgICAgICAgICAgPGZpbGU+JShG SUxFKXM8L2ZpbGU+Ci0gICAgICAgICAgICAgICA8L2RhdGFzZXQ+JycnCi0gICAgICAgICMgSGVy ZSB3ZSBncm91cCBhbGwgdGhlIHNhbXBsZV9kYXRhc2V0cyBieSB0aGUgZXh0ZXJuYWwgc2Vydmlj ZSB1cz0KZWQgdG8gdHJhbnNmZXIgdGhlbS4KLSAgICAgICAgIyBUaGUgaWRlYSBpcyB0byBidW5k bGUgdXAgdGhlIHNhbXBsZV9kYXRhc2V0cyB3aGljaCB1c2VzIHRoZSBzYW1lPQogZXh0ZXJuYWwg c2VydmljZSBhbmQKLSAgICAgICAgIyBzZW5kIGEgc2luZ2xlIEFNUVAgbWVzc2FnZSB0byB0aGUg Z2FsYXh5X2xpc3RlbmVyCi0gICAgICAgIGRhdGFzZXRfZWxlbWVudHMgPTNEIHt9Ci0gICAgICAg IGZvciBzYW1wbGVfZGF0YXNldCBpbiBzZWxlY3RlZF9zYW1wbGVfZGF0YXNldHM6Ci0gICAgICAg ICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCBzYW1wbGVfZGF0YXNldC5leHRlcm5hbF9zZXJ2aWNl Ci0gICAgICAgICAgICBpZiBzYW1wbGVfZGF0YXNldC5zdGF0dXMgPTNEPTNEIHRyYW5zLmFwcC5t b2RlbC5TYW1wbGVEYXRhc2V0Lj0KdHJhbnNmZXJfc3RhdHVzLk5PVF9TVEFSVEVEOgotICAgICAg ICAgICAgICAgIGlmIG5vdCBkYXRhc2V0X2VsZW1lbnRzLmhhc19rZXkoIGV4dGVybmFsX3NlcnZp Y2UgKToKLSAgICAgICAgICAgICAgICAgICAgZGF0YXNldF9lbGVtZW50c1sgZXh0ZXJuYWxfc2Vy dmljZSBdID0zRCAnJwotICAgICAgICAgICAgICAgIGRhdGFzZXRfZWxlbWVudHNbIGV4dGVybmFs X3NlcnZpY2UgXSArPTNEIGRhdGFzZXRfeG1sICUgZGk9CmN0KCBJRD0zRHN0ciggc2FtcGxlX2Rh dGFzZXQuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FPQo9M0RzYW1wbGVfZGF0YXNldC5uYW1lLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEZJTEU9Cj0zRHNhbXBsZV9kYXRhc2V0LmZpbGVfcGF0aCApCi0gICAgICAg ICAgICAgICAgIyB1cGRhdGUgdGhlIGRhdGFzZXQgdHJhbnNmZXIgc3RhdHVzCi0gICAgICAgICAg ICAgICAgc2FtcGxlX2RhdGFzZXQuc3RhdHVzID0zRCB0cmFucy5hcHAubW9kZWwuU2FtcGxlRGF0 YXNldC50cj0KYW5zZmVyX3N0YXR1cy5JTl9RVUVVRQotICAgICAgICAgICAgICAgIHRyYW5zLnNh X3Nlc3Npb24uYWRkKCBzYW1wbGVfZGF0YXNldCApCi0gICAgICAgICAgICAgICAgdHJhbnMuc2Ff c2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICMgRmluYWxseSBwcmVwZW5kIHRoZSBleHRlcm5hbCBz ZXJ2aWNlIGluZm8gdG8gdGhlIHNldHMgb2Ygc2FtcGxlID0KZGF0YXNldHMKLSAgICAgICAgbWVz c2FnZXMgPTNEIFtdCi0gICAgICAgIGZvciBleHRlcm5hbF9zZXJ2aWNlLCBkYXRhc2V0X2VsZW0g aW4gZGF0YXNldF9lbGVtZW50cy5pdGVtcygpOgotICAgICAgICAgICAgZXh0ZXJuYWxfc2Vydmlj ZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRyYW5zICkKLSAgICAgICAgICAgIHNjcF9j b25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4 PQp0ZXJuYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgICAg ICMgQ2hlY2sgZGF0YSB0cmFuc2ZlciBzZXR0aW5ncwotICAgICAgICAgICAgZXJyX21zZyA9M0Qg c2VsZi5fX3ZhbGlkYXRlX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRyYW5zLCBzYW09CnBsZS5y ZXF1ZXN0LnR5cGUsIHNjcF9jb25maWdzICkKLSAgICAgICAgICAgIGlmIGVycl9tc2c6Ci0gICAg ICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxf Zm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPQo9 M0QnbWFuYWdlX2RhdGFzZXRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9pPQpkPTNEdHJhbnMuc2VjdXJp dHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0KPTNEJ2Vycm9yJywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1lc3NhZ2U9Cj0zRGVycl9tc2cgKSApCi0gICAgICAgICAgICBtZXNzYWdlID0z RCB4bWwgJSBkaWN0KCBHQUxBWFlfSE9TVD0zRHRyYW5zLnJlcXVlc3QuaG9zdCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBBUElfS0VZPTNEdHJhbnMudXNlci5hcGlfa2V5c1sw XS5rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQV9IT1NUPTNEc2Nw X2NvbmZpZ3NbICdob3N0JyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERB VEFfVVNFUj0zRHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBdLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIERBVEFfUEFTU1dPUkQ9M0RzY3BfY29uZmlnc1sgJ3Bhc3N3b3JkJyA9 Cl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVRVUVTVF9JRD0zRHN0cigg c2FtcGxlLnJlcXVlc3QuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT QU1QTEVfSUQ9M0RzdHIoIHNhbXBsZS5pZCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExJQlJBUllfSUQ9M0RzdHIoIHNhbXBsZS5saWJyYXJ5LmlkICksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRk9MREVSX0lEPTNEc3RyKCBzYW1wbGUuZm9sZGVyLmlk ICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQVNFVFM9M0RkYXRhc2V0 X2VsZW0gKQotICAgICAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCBtZXNzYWdlLnJlcGxhY2UoICdc bicsICcnICkucmVwbGFjZSggJ1xyJywgJyc9CiApICkKLSAgICAgICAgcmV0dXJuIG1lc3NhZ2Vz Ci0gICAgZGVmIF9fdmFsaWRhdGVfZGF0YV90cmFuc2Zlcl9zZXR0aW5ncyggc2VsZiwgdHJhbnMs IHJlcXVlc3RfdHlwZSwgc2NwXz0KY29uZmlncyApOgotICAgICAgICBlcnJfbXNnID0zRCAnJwot ICAgICAgICAjIGNoZWNrIHRoZSBleHRlcm5hbCBzZXJ2aWNlIGxvZ2luIGluZm8KLSAgICAgICAg aWYgbm90IHNjcF9jb25maWdzLmdldCggJ2hvc3QnLCAnJyApIFwKLSAgICAgICAgICAgIG9yIG5v dCBzY3BfY29uZmlncy5nZXQoICd1c2VyX25hbWUnLCAnJyApIFwKLSAgICAgICAgICAgIG9yIG5v dCBzY3BfY29uZmlncy5nZXQoICdwYXNzd29yZCcsICcnICk6Ci0gICAgICAgICAgICBlcnJfbXNn ICs9M0QgIkVycm9yIGluIGV4dGVybmFsIHNlcnZpY2UgbG9naW4gaW5mb3JtYXRpb24uICIKLSAg ICAgICAgaWYgbm90IHRyYW5zLnVzZXIuYXBpX2tleXM6Ci0gICAgICAgICAgICBlcnJfbXNnICs9 M0QgIlNldCB5b3VyIEFQSSBLZXkgaW4geW91ciBVc2VyIFByZWZlcmVuY2VzIHRvIHRyYT0KbnNm ZXIgZGF0YXNldHMuICIKLSAgICAgICAgIyBDaGVjayBpZiBsaWJyYXJ5X2ltcG9ydF9kaXIgaXMg c2V0Ci0gICAgICAgIGlmIG5vdCB0cmFucy5hcHAuY29uZmlnLmxpYnJhcnlfaW1wb3J0X2RpcjoK LSAgICAgICAgICAgIGVycl9tc2cgPTNEICInVGhlIGxpYnJhcnlfaW1wb3J0X2Rpcicgc2V0dGlu ZyBpcyBub3QgY29ycmVjdGx5PQogc2V0IGluIHRoZSBHYWxheHkgY29uZmlnIGZpbGUuICIKLSAg ICAgICAgIyBDaGVjayB0aGUgUmFiYml0TVEgc2VydmVyIHNldHRpbmdzIGluIHRoZSBjb25maWcg ZmlsZQotICAgICAgICBmb3IgaywgdiBpbiB0cmFucy5hcHAuY29uZmlnLmFtcXAuaXRlbXMoKToK LSAgICAgICAgICAgIGlmIG5vdCB2OgotICAgICAgICAgICAgICAgIGVycl9tc2cgKz0zRCAnU2V0 IFJhYmJpdE1RIHNlcnZlciBzZXR0aW5ncyBpbiB0aGUgImdhbGF4eV89CmFtcXAiIHNlY3Rpb24g b2YgdGhlIEdhbGF4eSBjb25maWcgZmlsZSwgc3BlY2lmaWNhbGx5ICIlcyIgaXMgbm90IHNldC4n ICUgawotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHJldHVybiBlcnJfbXNnCiAgICAg QHdlYi5leHBvc2UKICAgICBAd2ViLnJlcXVpcmVfYWRtaW4KICAgICBkZWYgaW5pdGlhdGVfZGF0 YV90cmFuc2Zlciggc2VsZiwgdHJhbnMsIHNhbXBsZV9pZCwgc2FtcGxlX2RhdGFzZXRzPTNEPQpb XSwgc2FtcGxlX2RhdGFzZXRfaWQ9M0QnJyApOgpAQCAtNjg2LDM1ICs0MjMsOCBAQAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA9CiAgICAgICAgICAgICAgICAgIGV4dGVybmFsX3NlcnZpY2U9M0RleHRlcm5h bF9zZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAgICAgICAgICAgIGV4dGVybmFs X3NlcnZpY2VfdHlwZT0zRGV4dGVybmFsX3NlcnZpY2VfdHlwZSApCiAgICAgICAgIGVsc2U6Ci0g ICAgICAgICAgICAjIFRPRE86IFVzaW5nIFJhYmJpdE1xIGZvciBub3csIGJ1dCBlbGltaW5hdGUg dGhpcyBlbnRpcmUgYmxvYz0KayB3aGVuIHdlIHJlcGxhY2UgUmFiYml0TXEgd2l0aCBHYWxheHkn cwotICAgICAgICAgICAgIyBvd24gbWVzc2FnaW5nIGVuZ2luZS4gIFdlJ3JlIGhvbGRpbmcgb2Zm IG9uIHVzaW5nIHRoZSBuZXcgd2E9CnkgdG8gdHJhbnNmZXIgZmlsZXMgbWFudWFsbHkgdW50aWwg d2UKLSAgICAgICAgICAgICMgaW1wbGVtZW50IGEgR2FsYXh5LXByb3ByaWV0YXJ5IG1lc3NhZ2lu ZyBlbmdpbmUgYmVjYXVzZSB0aGUgPQpkZWZlcnJlZCBqb2IgcGx1Z2lucyBjdXJyZW50bHkgcGVy Zm9ybQotICAgICAgICAgICAgIyBjb25zdGFudCBkYiBoaXRzIHRvIGNoZWNrIGZvciBkZWZlcnJl ZCBqb2JzIHRoYXQgYXJlIG5vdCBpbiA9CmEgZmluaXNoZWQgc3RhdGUuCi0gICAgICAgICAgICAj IENyZWF0ZSB0aGUgbWVzc2FnZQotICAgICAgICAgICAgbWVzc2FnZXMgPTNEIHNlbGYuX19jcmVh dGVfZGF0YV90cmFuc2Zlcl9tZXNzYWdlcyggdHJhbnMsIHNhbXA9CmxlLCBzYW1wbGVfZGF0YXNl dHMgKQotICAgICAgICAgICAgIyBTZW5kIHRoZSBtZXNzYWdlcwotICAgICAgICAgICAgZm9yIHJt cV9tc2cgaW4gbWVzc2FnZXM6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg ICAgICBjb25uID0zRCBhbXFwLkNvbm5lY3Rpb24oIGhvc3Q9M0R0cmFucy5hcHAuY29uZmlnLmFt cXA9ClsgJ2hvc3QnIF0gKyAiOiIgKyB0cmFucy5hcHAuY29uZmlnLmFtcXBbICdwb3J0JyBdLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyaWQ9M0R0cmFu cy5hcHAuY29uZmlnLmFtcXA9ClsgJ3VzZXJpZCcgXSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9M0R0cmFucy5hcHAuY29uZmlnLmFtPQpxcFsg J3Bhc3N3b3JkJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2aXJ0dWFsX2hvc3Q9M0R0cmFucy5hcHAuY29uZmk9CmcuYW1xcFsgJ3ZpcnR1YWxfaG9zdCcg XSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbiA9M0QgY29ubi5jaGFubmVsKCkKLSAgICAgICAg ICAgICAgICAgICAgbXNnID0zRCBhbXFwLk1lc3NhZ2UoIHJtcV9tc2csCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPTNEJ3RleHQvcGxhaW4nLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uX2hlYWRl cnM9M0R7ICdtc2dfdHlwZSc9CjogJ2RhdGFfdHJhbnNmZXInIH0gKQotICAgICAgICAgICAgICAg ICAgICBtc2cucHJvcGVydGllc1sgImRlbGl2ZXJ5X21vZGUiIF0gPTNEIDIKLSAgICAgICAgICAg ICAgICAgICAgY2hhbi5iYXNpY19wdWJsaXNoKCBtc2csCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXhjaGFuZ2U9M0R0cmFucy5hcHAuY29uZmlnLmFtcXBbID0KJ2V4 Y2hhbmdlJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRp bmdfa2V5PTNEdHJhbnMuYXBwLmNvbmZpZy5hbXE9CnBbICdyb3V0aW5nX2tleScgXSApCi0gICAg ICAgICAgICAgICAgICAgIGNoYW4uY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICBjb25uLmNs b3NlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAg ICAgICAgICBtZXNzYWdlID0zRCAiRXJyb3Igc2VuZGluZyB0aGUgZGF0YSB0cmFuc2ZlciBtZXNz YWdlIHQ9Cm8gdGhlIEdhbGF4eSBBTVFQIG1lc3NhZ2UgcXVldWU6PGJyLz4lcyIgJSBzdHIoZSkK LSAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0zRCAiZXJyb3IiCi0gICAgICAgICAgICBpZiBu b3QgbWVzc2FnZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAiJWkgZGF0YXNldHMgaGF2 ZSBiZWVuIHF1ZXVlZCBmb3IgdHJhbnNmZXIgZnJvPQptIHRoZSBleHRlcm5hbCBzZXJ2aWNlLiIg JSBsZW4oIHNhbXBsZV9kYXRhc2V0cyApCi0gICAgICAgICAgICAgICAgc3RhdHVzID0zRCAiZG9u ZSIKKyAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJNZXNzYWdlIHF1ZXVlIHRyYW5zZmVyIGlzIG5v IGxvbmdlciBzdXBwb3J0ZWQsIHBsPQplYXNlIHNldCBlbmFibGVfYmV0YV9qb2JfbWFuYWdlcnMg PTNEIFRydWUgaW4gZ2FsYXh5LmluaSIKKyAgICAgICAgICAgIHN0YXR1cyA9M0QgImVycm9yIgog ICAgICAgICByZXR1cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3Io IGNvbnRyb2xsZXI9M0QncmU9CnF1ZXN0c19hZG1pbicsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPTNEJ21hbmFnZT0KX2Rh dGFzZXRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzYW1wbGVfaWQ9M0R0cmFuPQpzLnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxl LmlkICksCgpkaWZmIC1yIDFmMzQwNzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQg LXIgN2RkYjQxZGNiMmIyZTRkM2E2ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkv d2ViYXBwcy90b29sX3NoZWQvY29udHJvbGxlcnMvcmVwb3NpdG9yeS5weQotLS0gYS9saWIvZ2Fs YXh5L3dlYmFwcHMvdG9vbF9zaGVkL2NvbnRyb2xsZXJzL3JlcG9zaXRvcnkucHkKKysrIGIvbGli L2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9jb250cm9sbGVycy9yZXBvc2l0b3J5LnB5CkBAIC0x NjM1LDExICsxNjM1LDExIEBACiAgICAgICAgIHJldHVybiAnJwo9MjAKICAgICBAd2ViLmpzb24K LSAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNlbGYsIHRyYW5zLCBmaWxlX3BhdGggKToKKyAg ICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNlbGYsIHRyYW5zLCBmaWxlX3BhdGgsIHJlcG9zaXRv cnlfaWQgKToKICAgICAgICAgIyBBdm9pZCBjYWNoaW5nCiAgICAgICAgIHRyYW5zLnJlc3BvbnNl LmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2FjaGUnCiAgICAgICAgIHRyYW5zLnJlc3BvbnNl LmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0gICAgICAgIHJldHVybiBzdWMuZ2V0X3JlcG9z aXRvcnlfZmlsZV9jb250ZW50cyggZmlsZV9wYXRoICkKKyAgICAgICAgcmV0dXJuIHN1Yy5nZXRf cmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCB0cmFucy5hcHAsIGZpbGVfcGF0aCwgcmVwPQpvc2l0 b3J5X2lkICkKPTIwCiAgICAgQHdlYi5leHBvc2UKICAgICBkZWYgZ2V0X2Z1bmN0aW9uYWxfdGVz dF9yc3MoIHNlbGYsIHRyYW5zLCAqKmt3ZCApOgpAQCAtMjYxOSwxMSArMjYxOSwxMSBAQAogICAg ICAgICByZXR1cm4gJycKPTIwCiAgICAgQHdlYi5qc29uCi0gICAgZGVmIG9wZW5fZm9sZGVyKCBz ZWxmLCB0cmFucywgZm9sZGVyX3BhdGggKToKKyAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRy YW5zLCBmb2xkZXJfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgogICAgICAgICAjIEF2b2lkIGNhY2hp bmcKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJhZ21hJ10gPTNEICduby1jYWNo ZScKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhwaXJlcyddID0zRCAnMCcKLSAg ICAgICAgcmV0dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCBmb2xkZXJfcGF0 aCApCisgICAgICAgIHJldHVybiBzdWMub3Blbl9yZXBvc2l0b3J5X2ZpbGVzX2ZvbGRlciggdHJh bnMuYXBwLCBmb2xkZXJfcGF0aCwgcj0KZXBvc2l0b3J5X2lkICkKPTIwCiAgICAgQHdlYi5leHBv c2UKICAgICBkZWYgcHJldmlld190b29sc19pbl9jaGFuZ2VzZXQoIHNlbGYsIHRyYW5zLCByZXBv c2l0b3J5X2lkLCAqKmt3ZCApOgoKZGlmZiAtciAxZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZh NzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkw MiBsaWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL2ZyYW1ld29yay9taWRkbGV3YXJlL2hnLnB5 Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQvZnJhbWV3b3JrL21pZGRsZXdhcmUv aGcucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9mcmFtZXdvcmsvbWlkZGxl d2FyZS9oZy5weQpAQCAtOSw3ICs5LDcgQEAKIGZyb20gcGFzdGUuaHR0cGhlYWRlcnMgaW1wb3J0 IEFVVEhfVFlQRQogZnJvbSBwYXN0ZS5odHRwaGVhZGVycyBpbXBvcnQgUkVNT1RFX1VTRVIKPTIw Ci1mcm9tIGdhbGF4eS51dGlsIGltcG9ydCBhc2Jvb2wKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0 IGFzYm9vbCwgc2FmZV9yZWxwYXRoCiBmcm9tIGdhbGF4eS51dGlsLmhhc2hfdXRpbCBpbXBvcnQg bmV3X3NlY3VyZV9oYXNoCiBmcm9tIHRvb2xfc2hlZC51dGlsIGltcG9ydCBoZ191dGlsCiBpbXBv cnQgdG9vbF9zaGVkLnJlcG9zaXRvcnlfdHlwZXMudXRpbCBhcyBydF91dGlsCkBAIC0xMTMsNyAr MTEzLDExIEBACiAgICAgICAgICAgICAgICAgICAgIGZoLndyaXRlKCBjaHVuayApCiAgICAgICAg ICAgICAgICAgZmguY2xvc2UoKQogICAgICAgICAgICAgICAgIGZoID0zRCBvcGVuKCB0bXBfZmls ZW5hbWUsICdyYicgKQotICAgICAgICAgICAgICAgIGNoYW5nZXNldF9ncm91cHMgPTNEIGpzb24u bG9hZHMoIGhnX3V0aWwuYnVuZGxlX3RvX2pzb24oIGY9CmggKSApCisgICAgICAgICAgICAgICAg dHJ5OgorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzZXRfZ3JvdXBzID0zRCBqc29uLmxvYWRz KCBoZ191dGlsLmJ1bmRsZV90b19qc289Cm4oIGZoICkgKQorICAgICAgICAgICAgICAgIGV4Y2Vw dCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgbXNnID0zRCAnWW91ciB2ZXJz aW9uIG9mIE1lcmN1cmlhbCBpcyBub3Qgc3VwcG9ydGVkLiBQPQpsZWFzZSB1c2UgYSB2ZXJzaW9u IDwgMy41JworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2Rpc3BsYXlfZXhjZXB0 aW9uX3JlbW90ZWx5KCBzdGFydF9yZXNwb249CnNlLCBtc2cgKQogICAgICAgICAgICAgICAgIGZo LmNsb3NlKCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIG9zLnVu bGluayggdG1wX2ZpbGVuYW1lICkKQEAgLTEyMiw2ICsxMjYsMTkgQEAKICAgICAgICAgICAgICAg ICBpZiBjaGFuZ2VzZXRfZ3JvdXBzOgogICAgICAgICAgICAgICAgICAgICAjIENoZWNrIHRoZSBy ZXBvc2l0b3J5IHR5cGUgdG8gbWFrZSBzdXJlIGluYXBwcm9wcmlhdGU9CiBmaWxlcyBhcmUgbm90 IGJlaW5nIHB1c2hlZC4KICAgICAgICAgICAgICAgICAgICAgaWYgJ1BBVEhfSU5GTycgaW4gZW52 aXJvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRW5zdXJlIHRoZXJlIGFyZSBubyBzeW1s aW5rcyB3aXRoIHRhcmdldHMgb3V0c2lkPQplIHRoZSByZXBvCisgICAgICAgICAgICAgICAgICAg ICAgICBmb3IgZW50cnkgaW4gY2hhbmdlc2V0X2dyb3VwczoKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiBsZW4oIGVudHJ5ICkgPTNEPTNEIDI6CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZpbGVuYW1lLCBjaGFuZ2VfbGlzdCA9M0QgZW50cnkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2hhbmdlX2xpc3QsIGxpc3QpOgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlX2xpc3QgPTNEIFtjaGFu Z2VfbGlzdF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNoYW5nZSBpbiBj aGFuZ2VfbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwYXRj aCBpbiBjaGFuZ2VbJ2RhdGEnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0YXJnZXQgPTNEIHBhdGNoWydibG9jayddLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAoICggcGF0Y2hbJ2VuZCddIC0gcGF0Y2hbJ3N0YXJ0 PQonXSA9M0Q9M0QgMCApIGFuZCBub3Qgc2FmZV9yZWxwYXRoKCB0YXJnZXQgKSApOgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPTNEICJDaGFuZ2VzIGlu Y2x1ZGUgYSBzeW09Cmxpbmsgb3V0c2lkZSBvZiB0aGUgcmVwb3NpdG9yeTogJXMgLT4gJXMiICUg KCBmaWxlbmFtZSwgdGFyZ2V0ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbG9nLndhcm5pbmcoIG1zZyApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGlzcGxheV9leGNlcHRpbz0Kbl9yZW1vdGVs eSggc3RhcnRfcmVzcG9uc2UsIG1zZyApCiAgICAgICAgICAgICAgICAgICAgICAgICAjIEluc3Rh bnRpYXRlIGEgZGF0YWJhc2UgY29ubmVjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgZW5n aW5lID0zRCBzcWxhbGNoZW15LmNyZWF0ZV9lbmdpbmUoIHNlbGYuZGJfdXJsICkKICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gPTNEIGVuZ2luZS5jb25uZWN0KCkKCmRpZmYgLXIg MWYzNDA3MmQ0NzNmODcxYjkwYmYxYjJiY2M2YTcyYzMyMjQyMDAxZCAtciA3ZGRiNDFkY2IyYjJl NGQzYTZmODM0ZD0KM2RkMTE0MjZmMjZmYjc5MDIgbGliL2dhbGF4eS93b3JrZmxvdy9yZW5kZXIu cHkKLS0tIGEvbGliL2dhbGF4eS93b3JrZmxvdy9yZW5kZXIucHkKKysrIGIvbGliL2dhbGF4eS93 b3JrZmxvdy9yZW5kZXIucHkKQEAgLTM0LDggKzM0LDggQEAKICAgICAgICAgY2FudmFzLmFwcGVu ZCggc2VsZi5ib3hlcyApCiAgICAgICAgIGNhbnZhcy5hcHBlbmQoIHNlbGYudGV4dCApCiAgICAg ICAgIHdpZHRoLCBoZWlnaHQgPTNEICggbWF4X3ggKyBtYXhfd2lkdGggKyA1MCApLCBtYXhfeSAr IDMwMAotICAgICAgICBjYW52YXNbICd3aWR0aCcgXSA9M0QgIiVzIHB4IiAlIHdpZHRoCi0gICAg ICAgIGNhbnZhc1sgJ2hlaWdodCcgXSA9M0QgIiVzIHB4IiAlIGhlaWdodAorICAgICAgICBjYW52 YXNbICd3aWR0aCcgXSA9M0QgIiVzcHgiICUgd2lkdGgKKyAgICAgICAgY2FudmFzWyAnaGVpZ2h0 JyBdID0zRCAiJXNweCIgJSBoZWlnaHQKICAgICAgICAgY2FudmFzWyAndmlld0JveCcgXSA9M0Qg IjAgMCAlcyAlcyIgJSAoIHdpZHRoLCBoZWlnaHQgKQo9MjAKICAgICBkZWYgYWRkX2JveGVzKCBz ZWxmLCBzdGVwX2RpY3QsIHdpZHRoLCBuYW1lX2ZpbGwgKToKQEAgLTEyMCw3ICsxMjAsNyBAQAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWRbIDEg XSAtIG1hcmdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluX2Nvb3Jkc1sgMCBdIC0gMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbl9jb29yZHNbIDEgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFycm93X2VuZD0zRCJ0cnVlIiApLlNWRygpICkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycm93X2VuZD0zRCJjb25uXyVzIiAl IChsZW4oPQpzZWxmLmNvbm5lY3RvcnMua2V5cygpKSArIDEpICkuU1ZHKCkgKQo9MjAKICAgICBk ZWYgYWRkX3N0ZXBzKCBzZWxmLCBoaWdobGlnaHRfZXJyb3JzPTNERmFsc2UgKToKICAgICAgICAg IyBPbmx5IGhpZ2hsaWdodCBtaXNzaW5nIHRvb2xzIGlmIGRpc3BsYXlpbmcgaW4gdGhlIHRvb2wg c2hlZC4KCmRpZmYgLXIgMWYzNDA3MmQ0NzNmODcxYjkwYmYxYjJiY2M2YTcyYzMyMjQyMDAxZCAt ciA3ZGRiNDFkY2IyYjJlNGQzYTZmODM0ZD0KM2RkMTE0MjZmMjZmYjc5MDIgbGliL3Rvb2xfc2hl ZC9jYXBzdWxlL2NhcHN1bGVfbWFuYWdlci5weQotLS0gYS9saWIvdG9vbF9zaGVkL2NhcHN1bGUv Y2Fwc3VsZV9tYW5hZ2VyLnB5CisrKyBiL2xpYi90b29sX3NoZWQvY2Fwc3VsZS9jYXBzdWxlX21h bmFnZXIucHkKQEAgLTEyLDYgKzEyLDcgQEAKIGZyb20gZ2FsYXh5Lm1vZGVsLm9ybSBpbXBvcnQg YW5kXwogZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgYXNib29sCiBmcm9tIGdhbGF4eS51dGlsIGlt cG9ydCBDSFVOS19TSVpFCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBzYWZlX3JlbHBhdGgKIGZy b20gZ2FsYXh5LnV0aWwub2RpY3QgaW1wb3J0IG9kaWN0Cj0yMAogZnJvbSB0b29sX3NoZWQuZGVw ZW5kZW5jaWVzLnJlcG9zaXRvcnkucmVsYXRpb25fYnVpbGRlciBpbXBvcnQgUmVsYXRpb25CdWk9 CmxkZXIKQEAgLTcyNywyOSArNzI4LDE2IEBACiAgICAgICAgIHJlcG8gPTNEIGhnX3V0aWwuZ2V0 X3JlcG9fZm9yX3JlcG9zaXRvcnkoIHNlbGYuYXBwLCByZXBvc2l0b3J5PTNETj0Kb25lLCByZXBv X3BhdGg9M0RyZXBvX2RpciwgY3JlYXRlPTNERmFsc2UgKQogICAgICAgICB1bmRlc2lyYWJsZV9k aXJzX3JlbW92ZWQgPTNEIDAKICAgICAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0Qg MAotICAgICAgICBvaywgZXJyb3JfbWVzc2FnZSA9M0QgY29tbWl0X3V0aWwuY2hlY2tfYXJjaGl2 ZSggcmVwb3NpdG9yeSwgYXJjaGk9CnZlICkKLSAgICAgICAgaWYgb2s6CisgICAgICAgIGNoZWNr X3Jlc3VsdHMgPTNEIGNvbW1pdF91dGlsLmNoZWNrX2FyY2hpdmUoIHJlcG9zaXRvcnksIGFyY2hp dmUgKQorICAgICAgICAjIFdlIGZpbHRlciBvdXQgdW5kZXNpcmFibGUgZmlsZXMgYnV0IGZhaWwg b24gdW5kZXNyaWFibGUgZGlycy4gTm90CisgICAgICAgICMgc3VyZSB3aHksIGp1c3QgdHJ5aW5n IHRvIG1haW50YWluIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGJlZm9yZS4gLT0KbmF0ZQorICAgICAg ICBpZiBub3QgY2hlY2tfcmVzdWx0cy5pbnZhbGlkIGFuZCBub3QgY2hlY2tfcmVzdWx0cy51bmRl c2lyYWJsZV9kaXI9CnM6CiAgICAgICAgICAgICBmdWxsX3BhdGggPTNEIG9zLnBhdGguYWJzcGF0 aCggcmVwb19kaXIgKQotICAgICAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hpdmUgPTNEIFtdCi0g ICAgICAgICAgICBmb3IgdGFyaW5mb19vYmogaW4gYXJjaGl2ZS5nZXRtZW1iZXJzKCk6Ci0gICAg ICAgICAgICAgICAgIyBDaGVjayBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgaW4gdGhlIGFyY2hpdmUu Ci0gICAgICAgICAgICAgICAgb2sgPTNEIG9zLnBhdGguYmFzZW5hbWUoIHRhcmluZm9fb2JqLm5h bWUgKSBub3QgaW4gY29tbWl0Xz0KdXRpbC5VTkRFU0lSQUJMRV9GSUxFUwotICAgICAgICAgICAg ICAgIGlmIG9rOgotICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZV9wYXRoX2l0ZW0gaW4gdGFy aW5mb19vYmoubmFtZS5zcGxpdCggJy8nICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBm aWxlX3BhdGhfaXRlbSBpbiBjb21taXRfdXRpbC5VTkRFU0lSQUJMRV9ESVJTOgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuZGVzaXJhYmxlX2RpcnNfcmVtb3ZlZCArPTNEIDEKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0zRCAnSW1wb3J0IGZhaWxlZDog aW52YWxpZCBmaWxlPQogcGF0aCA8Yj4lczwvYj4gaW4gYXJjaGl2ZSA8Yj4lczwvYj4nICUgXAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0ciggZmlsZV9wYXRoX2l0ZW0gKSwg c3RyKCBhcmNoaXZlX2ZpbGU9Cl9uYW1lICkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc3VsdHNfZGljdFsgJ29rJyBdID0zRCBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc3VsdHNfZGljdFsgJ2Vycm9yX21lc3NhZ2UnIF0gKz0zRCBlcnJvcl9tZXM9CnNhZ2UK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0c19kaWN0Ci0gICAgICAg ICAgICAgICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZlLmFwcGVuZCggdGFyaW5mb19vYmoubmFt ZSApCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdW5kZXNpcmFi bGVfZmlsZXNfcmVtb3ZlZCArPTNEIDEKICAgICAgICAgICAgICMgRXh0cmFjdCB0aGUgdXBsb2Fk ZWQgYXJjaGl2ZSB0byB0aGUgcmVwb3NpdG9yeSByb290LgotICAgICAgICAgICAgYXJjaGl2ZS5l eHRyYWN0YWxsKCBwYXRoPTNEZnVsbF9wYXRoICkKKyAgICAgICAgICAgIGFyY2hpdmUuZXh0cmFj dGFsbCggcGF0aD0zRGZ1bGxfcGF0aCwgbWVtYmVycz0zRGNoZWNrX3Jlc3VsdHMuPQp2YWxpZCAp CiAgICAgICAgICAgICBhcmNoaXZlLmNsb3NlKCkKLSAgICAgICAgICAgIGZvciBmaWxlbmFtZSBp biBmaWxlbmFtZXNfaW5fYXJjaGl2ZToKKyAgICAgICAgICAgIGZvciB0YXJfbWVtYmVyIGluIGNo ZWNrX3Jlc3VsdHMudmFsaWQ6CisgICAgICAgICAgICAgICAgZmlsZW5hbWUgPTNEIHRhcl9tZW1i ZXIubmFtZQogICAgICAgICAgICAgICAgIHVwbG9hZGVkX2ZpbGVfbmFtZSA9M0Qgb3MucGF0aC5q b2luKCBmdWxsX3BhdGgsIGZpbGVuYW1lICkKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLnNw bGl0KCB1cGxvYWRlZF9maWxlX25hbWUgKVsgLTEgXSA9M0Q9M0QgcnRfdXRpPQpsLlJFUE9TSVRP UllfREVQRU5ERU5DWV9ERUZJTklUSU9OX0ZJTEVOQU1FOgogICAgICAgICAgICAgICAgICAgICAj IEluc3BlY3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIHRvIHNlZSBpZiB0b29sc2hlZCA9Cm9y IGNoYW5nZXNldF9yZXZpc2lvbiBhdHRyaWJ1dGVzCkBAIC03NzYsNiArNzY0LDkgQEAKICAgICAg ICAgICAgIG5ld19yZXBvX2FsZXJ0ID0zRCBUcnVlCiAgICAgICAgICAgICAjIFNpbmNlIHRoZSBy ZXBvc2l0b3J5IGlzIG5ldywgdGhlIGZvbGxvd2luZyBtdXN0IGJlIEZhbHNlLgogICAgICAgICAg ICAgcmVtb3ZlX3JlcG9fZmlsZXNfbm90X2luX3RhciA9M0QgRmFsc2UKKyAgICAgICAgICAgIGZp bGVuYW1lc19pbl9hcmNoaXZlID0zRCBbIG1lbWJlci5uYW1lIGZvciBtZW1iZXIgaW4gY2hlY2tf cmVzPQp1bHRzLnZhbGlkIF0KKyAgICAgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQg PTNEIGxlbiggY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJsZV9mPQppbGVzICkKKyAgICAgICAgICAg IHVuZGVzaXJhYmxlX2RpcnNfcmVtb3ZlZCA9M0QgMAogICAgICAgICAgICAgb2ssIGVycm9yX21l c3NhZ2UsIGZpbGVzX3RvX3JlbW92ZSwgY29udGVudF9hbGVydF9zdHIsIHVuZGVzaXI9CmFibGVf ZGlyc19yZW1vdmVkLCB1bmRlc2lyYWJsZV9maWxlc19yZW1vdmVkID0zRCBcCiAgICAgICAgICAg ICAgICAgY29tbWl0X3V0aWwuaGFuZGxlX2RpcmVjdG9yeV9jaGFuZ2VzKCBzZWxmLmFwcCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu aG9zdCwKQEAgLTgwNiw3ICs3OTcsMTMgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFy Y2hpdmUuY2xvc2UoKQogICAgICAgICAgICAgcmVzdWx0c19kaWN0WyAnb2snIF0gPTNEIEZhbHNl Ci0gICAgICAgICAgICByZXN1bHRzX2RpY3RbICdlcnJvcl9tZXNzYWdlJyBdICs9M0QgZXJyb3Jf bWVzc2FnZQorICAgICAgICAgICAgcmVzdWx0c19kaWN0WyAnZXJyb3JfbWVzc2FnZScgXSArPTNE ICdDYXBzdWxlIGVycm9ycyB3ZXJlIGZvdW49CmQ6ICcKKyAgICAgICAgICAgIGlmIGNoZWNrX3Jl c3VsdHMuaW52YWxpZDoKKyAgICAgICAgICAgICAgICByZXN1bHRzX2RpY3RbICdlcnJvcl9tZXNz YWdlJyBdICs9M0QgJyVzIEludmFsaWQgZmlsZXMgd2VyPQplOiAlcy4nICUgKAorICAgICAgICAg ICAgICAgICAgICAnICcuam9pbiggY2hlY2tfcmVzdWx0cy5lcnJvcnMgKSwgJywgJy5qb2luKCBj aGVja19yZXM9CnVsdHMuaW52YWxpZCApICkKKyAgICAgICAgICAgIGlmIGNoZWNrX3Jlc3VsdHMu dW5kZXNpcmFibGVfZGlyczoKKyAgICAgICAgICAgICAgICByZXN1bHRzX2RpY3RbICdlcnJvcl9t ZXNzYWdlJyBdICs9M0QgJyBVbmRlc2lyYWJsZSBkaXJlY3RvPQpyaWVzIHdlcmU6ICVzLicgJSAo CisgICAgICAgICAgICAgICAgICAgICcsICcuam9pbiggY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJs ZV9kaXJzICkgKQogICAgICAgICByZXR1cm4gcmVzdWx0c19kaWN0Cj0yMAogICAgIGRlZiB1cGxv YWRfY2Fwc3VsZSggc2VsZiwgKiprd2QgKToKQEAgLTg2Myw2ICs4NjAsMTIgQEAKICAgICAgICAg ICAgICAgICByZXR1cm5fZGljdFsgJ3N0YXR1cycgXSA9M0QgJ2Vycm9yJwogICAgICAgICAgICAg ICAgIHVwbG9hZGVkX2ZpbGUuY2xvc2UoKQogICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5f ZGljdAorICAgICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVfYXJjaGl2ZV9wYXRocyggdGFy X2FyY2hpdmUgKToKKyAgICAgICAgICAgICAgICByZXR1cm5fZGljdFsgJ3N0YXR1cycgXSA9M0Qg J2Vycm9yJworICAgICAgICAgICAgICAgIHJldHVybl9kaWN0WyAnbWVzc2FnZScgXSA9M0QgKCAn VGhpcyBjYXBzdWxlIGNvbnRhaW5zIGFuIGk9Cm52YWxpZCBtZW1iZXIgdHlwZSAnCisgICAgICAg ICAgICAgICAgICAgICdvciBhIGZpbGUgb3V0c2lkZSB0aGUgYXJjaGl2ZSBwYXRoLicgKQorICAg ICAgICAgICAgICAgIHVwbG9hZGVkX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIHJldHVy biByZXR1cm5fZGljdAogICAgICAgICAgICAgcmV0dXJuX2RpY3RbICd0YXJfYXJjaGl2ZScgXSA9 M0QgdGFyX2FyY2hpdmUKICAgICAgICAgICAgIHJldHVybl9kaWN0WyAnY2Fwc3VsZV9maWxlX25h bWUnIF0gPTNEIHVwbG9hZGVkX2ZpbGVfZmlsZW5hbWUKICAgICAgICAgICAgIHVwbG9hZGVkX2Zp bGUuY2xvc2UoKQpAQCAtODcyLDYgKzg3NSwxOCBAQAogICAgICAgICAgICAgcmV0dXJuIHJldHVy bl9kaWN0CiAgICAgICAgIHJldHVybiByZXR1cm5fZGljdAo9MjAKKyAgICBkZWYgdmFsaWRhdGVf YXJjaGl2ZV9wYXRocyggc2VsZiwgdGFyX2FyY2hpdmUgKToKKyAgICAgICAgJycnCisgICAgICAg IEluc3BlY3QgdGhlIGFyY2hpdmUgY29udGVudHMgdG8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5v IHJpc2t5IHN5bT0KbGlua3MuCisgICAgICAgIFJldHVybnMgVHJ1ZSBpZiBhIHN1c3BpY2lvdXMg cGF0aCBpcyBmb3VuZC4KKyAgICAgICAgJycnCisgICAgICAgIGZvciBtZW1iZXIgaW4gdGFyX2Fy Y2hpdmUuZ2V0bWVtYmVycygpOgorICAgICAgICAgICAgaWYgbm90ICggbWVtYmVyLmlzZGlyKCkg b3IgbWVtYmVyLmlzZmlsZSgpIG9yIG1lbWJlci5pc2xuaygpICk6CisgICAgICAgICAgICAgICAg cmV0dXJuIEZhbHNlCisgICAgICAgICAgICBlbGlmIG5vdCBzYWZlX3JlbHBhdGgoIG1lbWJlci5u YW1lICk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVl CisKICAgICBkZWYgdmFsaWRhdGVfY2Fwc3VsZSggc2VsZiwgKiprd2QgKToKICAgICAgICAgIiIi CiAgICAgICAgIEluc3BlY3QgdGhlIHVwbG9hZGVkIGNhcHN1bGUncyBtYW5pZmVzdCBhbmQgaXRz IGNvbnRhaW5lZCBmaWxlcyB0bz0KIGVuc3VyZSBpdCBpcyBhIHZhbGlkCgpkaWZmIC1yIDFmMzQw NzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2 ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi90b29sX3NoZWQvdG9vbHMvdG9vbF92ZXJzaW9u X21hbmFnZXIucHkKLS0tIGEvbGliL3Rvb2xfc2hlZC90b29scy90b29sX3ZlcnNpb25fbWFuYWdl ci5weQorKysgYi9saWIvdG9vbF9zaGVkL3Rvb2xzL3Rvb2xfdmVyc2lvbl9tYW5hZ2VyLnB5CkBA IC0xLDYgKzEsOCBAQAogaW1wb3J0IGxvZ2dpbmcKPTIwCi1mcm9tIGdhbGF4eS5tb2RlbC5vcm0g aW1wb3J0IGFuZF8KK2Zyb20gZ2FsYXh5IGltcG9ydCBlZ2dzCitlZ2dzLnJlcXVpcmUoJ1NRTEFs Y2hlbXknKQorZnJvbSBzcWxhbGNoZW15IGltcG9ydCBhbmRfLCBvcl8KPTIwCiBmcm9tIHRvb2xf c2hlZC51dGlsIGltcG9ydCBoZ191dGlsCiBmcm9tIHRvb2xfc2hlZC51dGlsIGltcG9ydCBzaGVk X3V0aWxfY29tbW9uIGFzIHN1YwpAQCAtMjEsOCArMjMsOCBAQAo9MjAKICAgICBkZWYgZ2V0X3Rv b2xfdmVyc2lvbl9hc3NvY2lhdGlvbiggc2VsZiwgcGFyZW50X3Rvb2xfdmVyc2lvbiwgdG9vbF92 ZXJzPQppb24gKToKICAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBhIFRvb2xWZXJzaW9uQXNz b2NpYXRpb24gaWYgb25lIGV4aXN0cyB0aGF0IGFzc29jaWF0ZXMgdGhlID0KdHdvIHJlY2VpdmVk Ci0gICAgICAgIHRvb2xfdmVyc2lvbnMgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgZnJv bSBHYWxheHkuCisgICAgICAgIFJldHVybiBhIFRvb2xWZXJzaW9uQXNzb2NpYXRpb24gaWYgb25l IGV4aXN0cyB0aGF0IGFzc29jaWF0ZXMgdGhlID0KdHdvCisgICAgICAgIHJlY2VpdmVkIHRvb2xf dmVyc2lvbnMuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgZnJvbSBHYWxheHkuCiAgICAg ICAgICIiIgogICAgICAgICBjb250ZXh0ID0zRCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLmNvbnRl eHQKICAgICAgICAgcmV0dXJuIGNvbnRleHQucXVlcnkoIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwu VG9vbFZlcnNpb25Bc3NvY2lhdGlvPQpuICkgXApAQCAtOTAsNiArOTIsMTYgQEAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xf c2hlZF9yZXBvPQpzaXRvcnk9M0R0b29sX3NoZWRfcmVwb3NpdG9yeSApCiAgICAgICAgICAgICAg ICAgICAgIGNvbnRleHQuYWRkKCB0b29sX3ZlcnNpb25fdXNpbmdfcGFyZW50X2lkICkKICAgICAg ICAgICAgICAgICAgICAgY29udGV4dC5mbHVzaCgpCisgICAgICAgICAgICAgICAgIyBSZW1vdmUg ZXhpc3Rpbmcgd3JvbmcgdG9vbCB2ZXJzaW9uIGFzc29jaWF0aW9ucyBoYXZpbmcKKyAgICAgICAg ICAgICAgICAjIHRvb2xfdmVyc2lvbl91c2luZ19wYXJlbnRfaWQgYXMgcGFyZW50IG9yCisgICAg ICAgICAgICAgICAgIyB0b29sX3ZlcnNpb25fdXNpbmdfdG9vbF9ndWlkIGFzIGNoaWxkLgorICAg ICAgICAgICAgICAgIGNvbnRleHQucXVlcnkoIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwuVG9vbFZl cnNpb25Bc3NvY2lhdGk9Cm9uICkgXAorICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKCBv cl8oIGFuZF8oIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwuVG9vbFZlcnM9CmlvbkFzc29jaWF0aW9u LnRhYmxlLmMucGFyZW50X2lkID0zRD0zRCB0b29sX3ZlcnNpb25fdXNpbmdfcGFyZW50X2lkLmlk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwLmlu c3RhbGxfbW9kZWwuVG9vbFZlcnM9CmlvbkFzc29jaWF0aW9uLnRhYmxlLmMudG9vbF9pZCAhPTNE IHRvb2xfdmVyc2lvbl91c2luZ190b29sX2d1aWQuaWQgKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhbmRfKCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xWZXJzPQpp b25Bc3NvY2lhdGlvbi50YWJsZS5jLnBhcmVudF9pZCAhPTNEIHRvb2xfdmVyc2lvbl91c2luZ19w YXJlbnRfaWQuaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5Ub29sVmVycz0KaW9uQXNzb2NpYXRpb24udGFibGUuYy50 b29sX2lkID0zRD0zRCB0b29sX3ZlcnNpb25fdXNpbmdfdG9vbF9ndWlkLmlkICkgKSApPQogXAor ICAgICAgICAgICAgICAgICAgICAgICAuZGVsZXRlKCkKKyAgICAgICAgICAgICAgICBjb250ZXh0 LmZsdXNoKCkKICAgICAgICAgICAgICAgICB0b29sX3ZlcnNpb25fYXNzb2NpYXRpb24gPTNEIFwK ICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRfdG9vbF92ZXJzaW9uX2Fzc29jaWF0aW9uKCB0 b29sX3ZlcnNpb25fdXNpbmdfPQpwYXJlbnRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbF92ZXJzaW9uX3VzaW5nXz0KdG9vbF9n dWlkICkKCmRpZmYgLXIgMWYzNDA3MmQ0NzNmODcxYjkwYmYxYjJiY2M2YTcyYzMyMjQyMDAxZCAt ciA3ZGRiNDFkY2IyYjJlNGQzYTZmODM0ZD0KM2RkMTE0MjZmMjZmYjc5MDIgbGliL3Rvb2xfc2hl ZC91dGlsL2NvbW1pdF91dGlsLnB5Ci0tLSBhL2xpYi90b29sX3NoZWQvdXRpbC9jb21taXRfdXRp bC5weQorKysgYi9saWIvdG9vbF9zaGVkL3V0aWwvY29tbWl0X3V0aWwucHkKQEAgLTQsOCArNCwx MCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgdGVtcGZpbGUKK2Zyb20gY29s bGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKPTIwCiBmcm9tIGdhbGF4eS5kYXRhdHlwZXMgaW1w b3J0IGNoZWNrZXJzCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBzYWZlX3JlbHBhdGgKPTIwCiBm cm9tIHRvb2xfc2hlZC50b29scyBpbXBvcnQgZGF0YV90YWJsZV9tYW5hZ2VyCj0yMApAQCAtMjEs MzAgKzIzLDQ0IEBACiBVTkRFU0lSQUJMRV9GSUxFUyA9M0QgWyAnLmhnX2FyY2hpdmFsLnR4dCcs ICdoZ3JjJywgJy5EU19TdG9yZScsICd0b29sX3Rlcz0KdF9vdXRwdXQuaHRtbCcsICd0b29sX3Rl c3Rfb3V0cHV0Lmpzb24nIF0KPTIwCiBkZWYgY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgYXJj aGl2ZSApOgorICAgIHZhbGlkID0zRCBbXQorICAgIGludmFsaWQgPTNEIFtdCisgICAgZXJyb3Jz ID0zRCBbXQorICAgIHVuZGVzaXJhYmxlX2ZpbGVzID0zRCBbXQorICAgIHVuZGVzaXJhYmxlX2Rp cnMgPTNEIFtdCiAgICAgZm9yIG1lbWJlciBpbiBhcmNoaXZlLmdldG1lbWJlcnMoKToKICAgICAg ICAgIyBBbGxvdyByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBvbmx5CiAgICAgICAgIGlm IG5vdCAoIG1lbWJlci5pc2RpcigpIG9yIG1lbWJlci5pc2ZpbGUoKSBvciBtZW1iZXIuaXNsbmso KSApOgotICAgICAgICAgICAgbWVzc2FnZSA9M0QgIlVwbG9hZGVkIGFyY2hpdmVzIGNhbiBvbmx5 IGluY2x1ZGUgcmVndWxhciBkaXJlY3Q9Cm9yaWVzIGFuZCBmaWxlcyAobm8gc3ltYm9saWMgbGlu a3MsIGRldmljZXMsIGV0YykuICAiCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgIlRoZSBwcm9i bGVtYXRpYyBtZW1iZXIgaW4gdGhpcyBhcmNoaXZlIGlzICVzLCIgJT0KIHN0ciggbWVtYmVyLm5h bWUgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAgICAgIGZvciBpdGVt IGluIFsgJy5oZycsICcuLicsICcvJyBdOgotICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUuc3Rh cnRzd2l0aCggaXRlbSApOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRlZCBh cmNoaXZlcyBjYW5ub3QgY29udGFpbiAuaGcgZGlyZWN0b3I9CmllcywgYWJzb2x1dGUgZmlsZW5h bWVzIHN0YXJ0aW5nIHdpdGggJy8nLCBvciBmaWxlbmFtZXMgd2l0aCB0d28gZG90cyAnLi4nLj0K ICAiCi0gICAgICAgICAgICAgICAgbWVzc2FnZSArPTNEICJUaGUgcHJvYmxlbWF0aWMgbWVtYmVy IGluIHRoaXMgYXJjaGl2ZSBpcyAlcz0KLiIgJSBzdHIoIG1lbWJlci5uYW1lICkKLSAgICAgICAg ICAgICAgICByZXR1cm4gRmFsc2UsIG1lc3NhZ2UKLSAgICAgICAgaWYgbWVtYmVyLm5hbWUgaW4g WyAnaGdyYycgXToKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRlZCBhcmNoaXZlcyBj YW5ub3QgY29udGFpbiBoZ3JjIGZpbGVzLiAgIgotICAgICAgICAgICAgbWVzc2FnZSArPTNEICJU aGUgcHJvYmxlbWF0aWMgbWVtYmVyIGluIHRoaXMgYXJjaGl2ZSBpcyAlcy4iICU9CiBzdHIoIG1l bWJlci5uYW1lICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZQorICAgICAgICAg ICAgZXJyb3JzLmFwcGVuZCggIlVwbG9hZGVkIGFyY2hpdmVzIGNhbiBvbmx5IGluY2x1ZGUgcmVn dWxhciBkaXI9CmVjdG9yaWVzIGFuZCBmaWxlcyAobm8gc3ltYm9saWMgbGlua3MsIGRldmljZXMs IGV0YykuIiApCisgICAgICAgICAgICBpbnZhbGlkLmFwcGVuZCggbWVtYmVyICkKKyAgICAgICAg ICAgIGNvbnRpbnVlCisgICAgICAgIGlmIG5vdCBzYWZlX3JlbHBhdGgoIG1lbWJlci5uYW1lICk6 CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCAiVXBsb2FkZWQgYXJjaGl2ZXMgY2Fubm90IGNv bnRhaW4gZmlsZXMgdGhhdCB3bz0KdWxkIGV4dHJhY3Qgb3V0c2lkZSBvZiB0aGUgYXJjaGl2ZS4i ICkKKyAgICAgICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29u dGludWUKKyAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZSggbWVtYmVyLm5hbWUgKSBpbiBVTkRF U0lSQUJMRV9GSUxFUzoKKyAgICAgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzLmFwcGVuZCggbWVt YmVyICkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGhlYWQgPTNEIHRhaWwgPTNEIG1l bWJlci5uYW1lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIHRhaWw6CisgICAgICAg ICAgICAgICAgaGVhZCwgdGFpbCA9M0Qgb3MucGF0aC5zcGxpdChoZWFkKQorICAgICAgICAgICAg ICAgIGlmIHRhaWwgaW4gVU5ERVNJUkFCTEVfRElSUzoKKyAgICAgICAgICAgICAgICAgICAgdW5k ZXNpcmFibGVfZGlycy5hcHBlbmQoIG1lbWJlciApCisgICAgICAgICAgICAgICAgICAgIGFzc2Vy dCBGYWxzZQorICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6CisgICAgICAgICAgICBjb250 aW51ZQogICAgICAgICBpZiByZXBvc2l0b3J5LnR5cGUgPTNEPTNEIHJ0X3V0aWwuUkVQT1NJVE9S WV9TVUlURV9ERUZJTklUSU9OIGFuZCA9Cm1lbWJlci5uYW1lICE9M0QgcnRfdXRpbC5SRVBPU0lU T1JZX0RFUEVOREVOQ1lfREVGSU5JVElPTl9GSUxFTkFNRToKLSAgICAgICAgICAgIG1lc3NhZ2Ug PTNEICdSZXBvc2l0b3JpZXMgb2YgdHlwZSA8Yj5SZXBvc2l0b3J5IHN1aXRlIGRlZmluaXRpPQpv bjwvYj4gY2FuIGNvbnRhaW4gb25seSBhIHNpbmdsZSBmaWxlIG5hbWVkIDxiPnJlcG9zaXRvcnlf ZGVwZW5kZW5jaWVzLnhtbDw9Ci9iPi4nCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgJ1RoaXMg YXJjaGl2ZSBjb250YWlucyBhIG1lbWJlciBuYW1lZCAlcy4nICUgc3RyKD0KIG1lbWJlci5uYW1l ICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZQorICAgICAgICAgICAgZXJyb3Jz LmFwcGVuZCggJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlJlcG9zaXRvcnkgc3VpdGUgZGVmaW49 Cml0aW9uPC9iPiBjYW4gY29udGFpbiBvbmx5IGEgc2luZ2xlIGZpbGUgbmFtZWQgPGI+cmVwb3Np dG9yeV9kZXBlbmRlbmNpZXMueD0KbWw8L2I+LicgKQorICAgICAgICAgICAgaW52YWxpZC5hcHBl bmQoIG1lbWJlciApCisgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBpZiByZXBvc2l0b3J5 LnR5cGUgPTNEPTNEIHJ0X3V0aWwuVE9PTF9ERVBFTkRFTkNZX0RFRklOSVRJT04gYW5kIG09CmVt YmVyLm5hbWUgIT0zRCBydF91dGlsLlRPT0xfREVQRU5ERU5DWV9ERUZJTklUSU9OX0ZJTEVOQU1F OgotICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlRvb2wg ZGVwZW5kZW5jeSBkZWZpbml0aW89Cm48L2I+IGNhbiBjb250YWluIG9ubHkgYSBzaW5nbGUgZmls ZSBuYW1lZCA8Yj50b29sX2RlcGVuZGVuY2llcy54bWw8L2I+LicKLSAgICAgICAgICAgIG1lc3Nh Z2UgKz0zRCAnVGhpcyBhcmNoaXZlIGNvbnRhaW5zIGEgbWVtYmVyIG5hbWVkICVzLicgJSBzdHIo PQogbWVtYmVyLm5hbWUgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAg cmV0dXJuIFRydWUsICcnCisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCAnUmVwb3NpdG9yaWVz IG9mIHR5cGUgPGI+VG9vbCBkZXBlbmRlbmN5IGRlZmluaT0KdGlvbjwvYj4gY2FuIGNvbnRhaW4g b25seSBhIHNpbmdsZSBmaWxlIG5hbWVkIDxiPnRvb2xfZGVwZW5kZW5jaWVzLnhtbDwvYj4uPQon ICkKKyAgICAgICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29u dGludWUKKyAgICAgICAgdmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgIEFyY2hpdmVDaGVja1Jl c3VsdHMgPTNEIG5hbWVkdHVwbGUoICdBcmNoaXZlQ2hlY2tSZXN1bHRzJywgWyAndmFsaWQnLCA9 CidpbnZhbGlkJywgJ3VuZGVzaXJhYmxlX2ZpbGVzJywgJ3VuZGVzaXJhYmxlX2RpcnMnLCAnZXJy b3JzJyBdICkKKyAgICByZXR1cm4gQXJjaGl2ZUNoZWNrUmVzdWx0cyggdmFsaWQsIGludmFsaWQs IHVuZGVzaXJhYmxlX2ZpbGVzLCB1bmRlc2lyPQphYmxlX2RpcnMsIGVycm9ycyApCj0yMAogZGVm IGNoZWNrX2ZpbGVfY29udGVudHNfZm9yX2VtYWlsX2FsZXJ0cyggYXBwICk6CiAgICAgIiIiCgpk aWZmIC1yIDFmMzQwNzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQx ZGNiMmIyZTRkM2E2ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi90b29sX3NoZWQvdXRpbC9y ZXBvc2l0b3J5X2NvbnRlbnRfdXRpbC5weQotLS0gYS9saWIvdG9vbF9zaGVkL3V0aWwvcmVwb3Np dG9yeV9jb250ZW50X3V0aWwucHkKKysrIGIvbGliL3Rvb2xfc2hlZC91dGlsL3JlcG9zaXRvcnlf Y29udGVudF91dGlsLnB5CkBAIC0xNSwzMSArMTUsMjMgQEAKICAgICBoZ191dGlsLmdldF9yZXBv X2Zvcl9yZXBvc2l0b3J5KCB0cmFucy5hcHAsIHJlcG9zaXRvcnk9M0ROb25lLCByZXBvX3BhPQp0 aD0zRHJlcG9fZGlyLCBjcmVhdGU9M0RGYWxzZSApCiAgICAgdW5kZXNpcmFibGVfZGlyc19yZW1v dmVkID0zRCAwCiAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgMAotICAgIG9rLCBt ZXNzYWdlID0zRCBjb21taXRfdXRpbC5jaGVja19hcmNoaXZlKCByZXBvc2l0b3J5LCB0YXIgKQot ICAgIGlmIG5vdCBvazoKKyAgICBjaGVja19yZXN1bHRzID0zRCBjb21taXRfdXRpbC5jaGVja19h cmNoaXZlKCByZXBvc2l0b3J5LCB0YXIgKQorICAgIGlmIGNoZWNrX3Jlc3VsdHMuaW52YWxpZDoK ICAgICAgICAgdGFyLmNsb3NlKCkKICAgICAgICAgdXBsb2FkZWRfZmlsZS5jbG9zZSgpCi0gICAg ICAgIHJldHVybiBvaywgbWVzc2FnZSwgW10sICcnLCB1bmRlc2lyYWJsZV9kaXJzX3JlbW92ZWQs IHVuZGVzaXJhYmxlXz0KZmlsZXNfcmVtb3ZlZAorICAgICAgICBtZXNzYWdlID0zRCAnJXMgSW52 YWxpZCBwYXRocyB3ZXJlOiAlcycgJSAoCisgICAgICAgICAgICAnICcuam9pbiggY2hlY2tfcmVz dWx0cy5lcnJvcnMgKSwgJywgJy5qb2luKCBjaGVja19yZXN1bHRzLmludj0KYWxpZCApICkKKyAg ICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlLCBbXSwgJycsIHVuZGVzaXJhYmxlX2RpcnNfcmVt b3ZlZCwgdW5kZXNpcmFiPQpsZV9maWxlc19yZW1vdmVkCiAgICAgZWxzZToKICAgICAgICAgaWYg dXBsb2FkX3BvaW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZnVsbF9wYXRoID0zRCBvcy5w YXRoLmFic3BhdGgoIG9zLnBhdGguam9pbiggcmVwb19kaXIsIHVwbG9hZF89CnBvaW50ICkgKQog ICAgICAgICBlbHNlOgogICAgICAgICAgICAgZnVsbF9wYXRoID0zRCBvcy5wYXRoLmFic3BhdGgo IHJlcG9fZGlyICkKLSAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hpdmUgPTNEIFtdCi0gICAgICAg IGZvciB0YXJpbmZvX29iaiBpbiB0YXIuZ2V0bWVtYmVycygpOgotICAgICAgICAgICAgb2sgPTNE IG9zLnBhdGguYmFzZW5hbWUoIHRhcmluZm9fb2JqLm5hbWUgKSBub3QgaW4gY29tbWl0X3V0aWw9 Ci5VTkRFU0lSQUJMRV9GSUxFUwotICAgICAgICAgICAgaWYgb2s6Ci0gICAgICAgICAgICAgICAg Zm9yIGZpbGVfcGF0aF9pdGVtIGluIHRhcmluZm9fb2JqLm5hbWUuc3BsaXQoICcvJyApOgotICAg ICAgICAgICAgICAgICAgICBpZiBmaWxlX3BhdGhfaXRlbSBpbiBjb21taXRfdXRpbC5VTkRFU0lS QUJMRV9ESVJTOgotICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXNpcmFibGVfZGlyc19yZW1v dmVkICs9M0QgMQotICAgICAgICAgICAgICAgICAgICAgICAgb2sgPTNEIEZhbHNlCi0gICAgICAg ICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg ICB1bmRlc2lyYWJsZV9maWxlc19yZW1vdmVkICs9M0QgMQotICAgICAgICAgICAgaWYgb2s6Ci0g ICAgICAgICAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hpdmUuYXBwZW5kKCB0YXJpbmZvX29iai5u YW1lICkKKyAgICAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgbGVuKCBjaGVja19y ZXN1bHRzLnVuZGVzaXJhYmxlX2ZpbGVzPQogKQorICAgICAgICB1bmRlc2lyYWJsZV9kaXJzX3Jl bW92ZWQgPTNEIGxlbiggY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJsZV9kaXJzICkKKyAgICAgICAg ZmlsZW5hbWVzX2luX2FyY2hpdmUgPTNEIFsgdGkubmFtZSBmb3IgdGkgaW4gY2hlY2tfcmVzdWx0 cy52YWxpZCBdCiAgICAgICAgICMgRXh0cmFjdCB0aGUgdXBsb2FkZWQgdGFyIHRvIHRoZSBsb2Fk X3BvaW50IHdpdGhpbiB0aGUgcmVwb3NpdG9yeT0KIGhpZXJhcmNoeS4KLSAgICAgICAgdGFyLmV4 dHJhY3RhbGwoIHBhdGg9M0RmdWxsX3BhdGggKQorICAgICAgICB0YXIuZXh0cmFjdGFsbCggcGF0 aD0zRGZ1bGxfcGF0aCwgbWVtYmVycz0zRGNoZWNrX3Jlc3VsdHMudmFsaWQgKQogICAgICAgICB0 YXIuY2xvc2UoKQogICAgICAgICB1cGxvYWRlZF9maWxlLmNsb3NlKCkKICAgICAgICAgZm9yIGZp bGVuYW1lIGluIGZpbGVuYW1lc19pbl9hcmNoaXZlOgoKZGlmZiAtciAxZjM0MDcyZDQ3M2Y4NzFi OTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0ZDNhNmY4MzRkPQozZGQx MTQyNmYyNmZiNzkwMiBsaWIvdG9vbF9zaGVkL3V0aWwvc2hlZF91dGlsX2NvbW1vbi5weQotLS0g YS9saWIvdG9vbF9zaGVkL3V0aWwvc2hlZF91dGlsX2NvbW1vbi5weQorKysgYi9saWIvdG9vbF9z aGVkL3V0aWwvc2hlZF91dGlsX2NvbW1vbi5weQpAQCAtNTM1LDkgKzUzNSwxNyBAQAogICAgIHJl dHVybiByZXBvc2l0b3J5Cj0yMAo9MjAKLWRlZiBnZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRz KCBmaWxlX3BhdGggKToKK2RlZiBnZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCBhcHAsIGZp bGVfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgogICAgICIiIlJldHVybiB0aGUgZGlzcGxheS1zYWZl IGNvbnRlbnRzIG9mIGEgcmVwb3NpdG9yeSBmaWxlIGZvciBkaXNwbGF5IGk9Cm4gYSBicm93c2Vy LiIiIgotICAgIGlmIGNoZWNrZXJzLmlzX2d6aXAoIGZpbGVfcGF0aCApOgorICAgIHNhZmVfc3Ry ID0zRCAnJworICAgIGlmIG5vdCBpc19wYXRoX3dpdGhpbl9yZXBvKCBhcHAsIGZpbGVfcGF0aCwg cmVwb3NpdG9yeV9pZCApOgorICAgICAgICBsb2cud2FybmluZyggJ1JlcXVlc3QgdHJpZXMgdG8g YWNjZXNzIGEgZmlsZSBvdXRzaWRlIG9mIHRoZSByZXBvc2k9CnRvcnkgbG9jYXRpb24uIEZpbGUg cGF0aDogJXMnLCBmaWxlX3BhdGggKQorICAgICAgICByZXR1cm4gJ0ludmFsaWQgZmlsZSBwYXRo JworICAgICMgU3ltbGluayB0YXJnZXRzIGFyZSBjaGVja2VkIGJ5IGlzX3BhdGhfd2l0aGluX3Jl cG8KKyAgICBpZiBvcy5wYXRoLmlzbGluayggZmlsZV9wYXRoICk6CisgICAgICAgIHNhZmVfc3Ry ID0zRCAnbGluayB0bzogJyArIGJhc2ljX3V0aWwudG9faHRtbF9zdHJpbmcoIG9zLnJlYWRsaW5r KD0KIGZpbGVfcGF0aCApICkKKyAgICAgICAgcmV0dXJuIHNhZmVfc3RyCisgICAgZWxpZiBjaGVj a2Vycy5pc19nemlwKCBmaWxlX3BhdGggKToKICAgICAgICAgcmV0dXJuICc8YnIvPmd6aXAgY29t cHJlc3NlZCBmaWxlPGJyLz4nCiAgICAgZWxpZiBjaGVja2Vycy5pc19iejIoIGZpbGVfcGF0aCAp OgogICAgICAgICByZXR1cm4gJzxici8+YnoyIGNvbXByZXNzZWQgZmlsZTxici8+JwpAQCAtNTQ2 LDcgKzU1NCw2IEBACiAgICAgZWxpZiBjaGVja2Vycy5jaGVja19iaW5hcnkoIGZpbGVfcGF0aCAp OgogICAgICAgICByZXR1cm4gJzxici8+QmluYXJ5IGZpbGU8YnIvPicKICAgICBlbHNlOgotICAg ICAgICBzYWZlX3N0ciA9M0QgJycKICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKCBv cGVuKCBmaWxlX3BhdGggKSApOgogICAgICAgICAgICAgc2FmZV9zdHIgPTNEICclcyVzJyAlICgg c2FmZV9zdHIsIGJhc2ljX3V0aWwudG9faHRtbF9zdHJpbmcoIGw9CmluZSApICkKICAgICAgICAg ICAgICMgU3RvcCByZWFkaW5nIGFmdGVyIHN0cmluZyBpcyBsYXJnZXIgdGhhbiBNQVhfQ09OVEVO VF9TSVpFLgpAQCAtNTU2LDYgKzU2Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIHV0aWwubmlj ZV9zaXplKCBNQVhfQ09OVEVOVF9TSVpFICkKICAgICAgICAgICAgICAgICBzYWZlX3N0ciA9M0Qg JyVzJXMnICUgKCBzYWZlX3N0ciwgbGFyZ2Vfc3RyICkKICAgICAgICAgICAgICAgICBicmVhawor CiAgICAgICAgIGlmIGxlbiggc2FmZV9zdHIgKSA+IGJhc2ljX3V0aWwuTUFYX0RJU1BMQVlfU0la RToKICAgICAgICAgICAgICMgRWxpbWluYXRlIHRoZSBtaWRkbGUgb2YgdGhlIGZpbGUgdG8gZGlz cGxheSBhIGZpbGUgbm8gbGFyZ2VyPQogdGhhbiBiYXNpY191dGlsLk1BWF9ESVNQTEFZX1NJWkUu CiAgICAgICAgICAgICAjIFRoaXMgbWF5IG5vdCBiZSBpZGVhbCBpZiB0aGUgZmlsZSBpcyBsYXJn ZXIgdGhhbiBNQVhfQ09OVEVOVD0KX1NJWkUuCkBAIC01NzcsOSArNTg1LDYgQEAKICAgICAgICAg IyBTa2lwIC5oZyBkaXJlY3RvcmllcwogICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoICcuaGcn ICk6CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKCBvcy5w YXRoLmpvaW4oIGZvbGRlcl9wYXRoLCBpdGVtICkgKToKLSAgICAgICAgICAgICMgQXBwZW5kIGEg Jy8nIGNoYXJhY3RlciBzbyB0aGF0IG91ciBqcXVlcnkgZHluYXRyZWUgd2lsbCBmdW5jPQp0aW9u IHByb3Blcmx5LgotICAgICAgICAgICAgaXRlbSA9M0QgJyVzLycgJSBpdGVtCiAgICAgICAgIGNv bnRlbnRzLmFwcGVuZCggaXRlbSApCiAgICAgaWYgY29udGVudHM6CiAgICAgICAgIGNvbnRlbnRz LnNvcnQoKQpAQCAtMTA0OSwxMSArMTA1NCwxNSBAQAogICAgIHJldHVybiBoYXNhdHRyKCBhcHAs ICJpbnN0YWxsX21vZGVsIiApCj0yMAo9MjAKLWRlZiBvcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9s ZGVyKCBmb2xkZXJfcGF0aCApOgorZGVmIG9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIGFw cCwgZm9sZGVyX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAiIiIKICAgICBSZXR1cm4gYSBs aXN0IG9mIGRpY3Rpb25hcmllcywgZWFjaCBvZiB3aGljaCBjb250YWlucyBpbmZvcm1hdGlvbiBm b3IgPQphIGZpbGUgb3IgZGlyZWN0b3J5IGNvbnRhaW5lZAogICAgIHdpdGhpbiBhIGRpcmVjdG9y eSBpbiBhIHJlcG9zaXRvcnkgZmlsZSBoaWVyYXJjaHkuCiAgICAgIiIiCisgICAgIyBTeW1saW5r IHRhcmdldHMgYXJlIGNoZWNrZWQgYnkgaXNfcGF0aF93aXRoaW5fcmVwbworICAgIGlmIG5vdCBp c19wYXRoX3dpdGhpbl9yZXBvKCBhcHAsIGZvbGRlcl9wYXRoLCByZXBvc2l0b3J5X2lkICk6Cisg ICAgICAgIGxvZy53YXJuaW5nKCAnUmVxdWVzdCB0cmllcyB0byBhY2Nlc3MgYSBmb2xkZXIgb3V0 c2lkZSBvZiB0aGUgcmVwbz0Kc2l0b3J5IGxvY2F0aW9uLiBGb2xkZXIgcGF0aDogJXMnLCBmb2xk ZXJfcGF0aCApCisgICAgICAgIHJldHVybiBbXQogICAgIHRyeToKICAgICAgICAgZmlsZXNfbGlz dCA9M0QgZ2V0X3JlcG9zaXRvcnlfZmlsZXMoIGZvbGRlcl9wYXRoICkKICAgICBleGNlcHQgT1NF cnJvciwgZToKQEAgLTEwNjMsMTAgKzEwNzIsMTcgQEAKICAgICBmb2xkZXJfY29udGVudHMgPTNE IFtdCiAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzX2xpc3Q6CiAgICAgICAgIGlzX2ZvbGRlciA9 M0QgRmFsc2UKLSAgICAgICAgaWYgZmlsZW5hbWUgYW5kIGZpbGVuYW1lWyAtMSBdID0zRD0zRCBv cy5zZXA6Ci0gICAgICAgICAgICBpc19mb2xkZXIgPTNEIFRydWUKKyAgICAgICAgZnVsbF9wYXRo ID0zRCBvcy5wYXRoLmpvaW4oIGZvbGRlcl9wYXRoLCBmaWxlbmFtZSApCisgICAgICAgIGlzX2xp bmsgPTNEIG9zLnBhdGguaXNsaW5rKCBmdWxsX3BhdGggKQorICAgICAgICBwYXRoX2lzX3dpdGhp bl9yZXBvID0zRCBpc19wYXRoX3dpdGhpbl9yZXBvKCBhcHAsIGZ1bGxfcGF0aCwgcmVwb3M9Cml0 b3J5X2lkICkKKyAgICAgICAgaWYgaXNfbGluayBhbmQgbm90IHBhdGhfaXNfd2l0aGluX3JlcG86 CisgICAgICAgICAgICBsb2cud2FybmluZyggJ1ZhbGlkIGZvbGRlciBjb250YWlucyBhIHN5bWxp bmsgb3V0c2lkZSBvZiB0aGUgcj0KZXBvc2l0b3J5IGxvY2F0aW9uLiBMaW5rIGZvdW5kIGluOiAn ICsgc3RyKCBmdWxsX3BhdGggKSApCiAgICAgICAgIGlmIGZpbGVuYW1lOgotICAgICAgICAgICAg ZnVsbF9wYXRoID0zRCBvcy5wYXRoLmpvaW4oIGZvbGRlcl9wYXRoLCBmaWxlbmFtZSApCisgICAg ICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKCBmdWxsX3BhdGggKSBhbmQgcGF0aF9pc193aXRoaW5f cmVwbzoKKyAgICAgICAgICAgICAgICAjIEFwcGVuZCBhICcvJyBjaGFyYWN0ZXIgc28gdGhhdCBv dXIganF1ZXJ5IGR5bmF0cmVlIHdpbGwgPQpmdW5jdGlvbiBwcm9wZXJseS4KKyAgICAgICAgICAg ICAgICBmaWxlbmFtZSA9M0QgJyVzLycgJSBmaWxlbmFtZQorICAgICAgICAgICAgICAgIGZ1bGxf cGF0aCA9M0QgJyVzLycgJSBmdWxsX3BhdGgKKyAgICAgICAgICAgICAgICBpc19mb2xkZXIgPTNE IFRydWUKICAgICAgICAgICAgIG5vZGUgPTNEIHsgInRpdGxlIjogZmlsZW5hbWUsCiAgICAgICAg ICAgICAgICAgICAgICAiaXNGb2xkZXIiOiBpc19mb2xkZXIsCiAgICAgICAgICAgICAgICAgICAg ICAiaXNMYXp5IjogaXNfZm9sZGVyLApAQCAtMTA3Niw2ICsxMDkyLDE2IEBACiAgICAgcmV0dXJu IGZvbGRlcl9jb250ZW50cwo9MjAKPTIwCitkZWYgaXNfcGF0aF93aXRoaW5fcmVwbyggYXBwLCBw YXRoLCByZXBvc2l0b3J5X2lkICk6CisgICAgIiIiCisgICAgRGV0ZWN0IHdoZXRoZXIgdGhlIGdp dmVuIHBhdGggaXMgd2l0aGluIHRoZSByZXBvc2l0b3J5IGZvbGRlIHJvbiB0aGUgZD0KaXNrLgor ICAgIFVzZSB0byBmaWx0ZXIgbWFsaWNpb3VzIHN5bWxpbmtzIHRhcmdldGluZyBvdXRzaWRlIHBh dGhzLgorICAgICIiIgorICAgIHJlcG9fcGF0aCA9M0Qgb3MucGF0aC5hYnNwYXRoKCBnZXRfcmVw b3NpdG9yeV9ieV9pZCggYXBwLCByZXBvc2l0b3J5X2k9CmQgKS5yZXBvX3BhdGgoIGFwcCApICkK KyAgICByZXNvbHZlZF9wYXRoID0zRCBvcy5wYXRoLnJlYWxwYXRoKCBwYXRoICkKKyAgICByZXR1 cm4gb3MucGF0aC5jb21tb25wcmVmaXgoIFsgcmVwb19wYXRoLCByZXNvbHZlZF9wYXRoIF0gKSA9 M0Q9M0QgcmVwPQpvX3BhdGgKKworCiBkZWYgcmVwb3NpdG9yeV93YXNfcHJldmlvdXNseV9pbnN0 YWxsZWQoIGFwcCwgdG9vbF9zaGVkX3VybCwgcmVwb3NpdG9yeV9uYT0KbWUsIHJlcG9faW5mb190 dXBsZSwgZnJvbV90aXA9M0RGYWxzZSApOgogICAgICIiIgogICAgIEZpbmQgb3V0IGlmIGEgcmVw b3NpdG9yeSBpcyBhbHJlYWR5IGluc3RhbGxlZCBpbnRvIEdhbGF4eSAtIHRoZXJlIGFyZSA9CnNl dmVyYWwgc2NlbmFyaW9zIHdoZXJlIHRoaXMKCmRpZmYgLXIgMWYzNDA3MmQ0NzNmODcxYjkwYmYx YjJiY2M2YTcyYzMyMjQyMDAxZCAtciA3ZGRiNDFkY2IyYjJlNGQzYTZmODM0ZD0KM2RkMTE0MjZm MjZmYjc5MDIgdGVtcGxhdGVzL2FkbWluL3JlcXVlc3RzL3NlbGVjdF9kYXRhc2V0c190b190cmFu c2Zlci5tYWtvCi0tLSBhL3RlbXBsYXRlcy9hZG1pbi9yZXF1ZXN0cy9zZWxlY3RfZGF0YXNldHNf dG9fdHJhbnNmZXIubWFrbworKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi08JWluaGVy aXQgZmlsZT0zRCIvYmFzZS5tYWtvIi8+Ci08JW5hbWVzcGFjZSBmaWxlPTNEIi9tZXNzYWdlLm1h a28iIGltcG9ydD0zRCJyZW5kZXJfbXNnIiAvPgotPCVuYW1lc3BhY2UgZmlsZT0zRCIvcmVxdWVz dHMvY29tbW9uL2NvbW1vbi5tYWtvIiBpbXBvcnQ9M0QicmVuZGVyX3NhbXBsZV89CmRhdGFzZXRz IiAvPgotPCVuYW1lc3BhY2UgZmlsZT0zRCIvcmVxdWVzdHMvY29tbW9uL2NvbW1vbi5tYWtvIiBp bXBvcnQ9M0QiY29tbW9uX2phdmFzY3I9CmlwdHMiIC8+Ci0KLTwlZGVmIG5hbWU9M0QiamF2YXNj cmlwdHMoKSI+Ci0gICAke3BhcmVudC5qYXZhc2NyaXB0cygpfQotICAgJHtjb21tb25famF2YXNj cmlwdHMoKX0KLTwvJWRlZj4KLQotJHtoLmpzKCAibGlicy9qcXVlcnkvanF1ZXJ5LXVpIiwgImxp YnMvanF1ZXJ5L2pxdWVyeS5jb29raWUiLCAibGlicy9qcXVlcnk9Ci9qcXVlcnkuZHluYXRyZWUi ICl9Ci0ke2guY3NzKCAiZHluYXRyZWVfc2tpbi91aS5keW5hdHJlZSIgKX0KLQotPHNjcmlwdCB0 eXBlPTNEInRleHQvamF2YXNjcmlwdCI+Ci0gICAgJChmdW5jdGlvbigpewotICAgICAgICAkKCIj dHJlZSIpLmFqYXhDb21wbGV0ZShmdW5jdGlvbihldmVudCwgWE1MSHR0cFJlcXVlc3QsIGFqYXhP cHRpb249CnMpIHsKLSAgICAgICAgICAgIF9sb2coImRlYnVnIiwgImFqYXhDb21wbGV0ZTogJW8i LCB0aGlzKTsgLy8gZG9tIGVsZW1lbnQgbGlzdGVuPQppbmcKLSAgICAgICAgfSk7Ci0gICAgICAg IC8vIC0tLSBJbml0aWFsaXplIHNhbXBsZSB0cmVlcwotICAgICAgICAkKCIjdHJlZSIpLmR5bmF0 cmVlKHsKLSAgICAgICAgICAgIHRpdGxlOiAiJHtzY3BfY29uZmlnc1snZGF0YV9sb2NhdGlvbidd fSIsCi0gICAgICAgICAgICByb290VmlzaWJsZTogdHJ1ZSwKLSAgICAgICAgICAgIG1pbkV4cGFu ZExldmVsOiAwLCAvLyAxOiByb290IG5vZGUgaXMgbm90IGNvbGxhcHNpYmxlCi0gICAgICAgICAg ICBwZXJzaXN0OiBmYWxzZSwKLSAgICAgICAgICAgIGNoZWNrYm94OiB0cnVlLAotICAgICAgICAg ICAgc2VsZWN0TW9kZTogMywKLSAgICAgICAgICAgIG9uUG9zdEluaXQ6IGZ1bmN0aW9uKGlzUmVs b2FkaW5nLCBpc0Vycm9yKSB7Ci0gICAgICAgICAgICAgICAgLy9hbGVydCgicmVsb2FkaW5nOiAi K2lzUmVsb2FkaW5nKyIsIGVycm9yOiIraXNFcnJvcik7Ci0gICAgICAgICAgICAgICAgbG9nTXNn KCJvblBvc3RJbml0KCVvLCAlbykgLSAlbyIsIGlzUmVsb2FkaW5nLCBpc0Vycm9yLCB0aD0KaXMp OwotICAgICAgICAgICAgICAgIC8vIFJlLWZpcmUgb25BY3RpdmF0ZSwgc28gdGhlIHRleHQgaXMg dXBkYXRlZAotICAgICAgICAgICAgICAgIHRoaXMucmVhY3RpdmF0ZSgpOwotICAgICAgICAgICAg fSw9MjAKLSAgICAgICAgICAgIGZ4OiB7IGhlaWdodDogInRvZ2dsZSIsIGR1cmF0aW9uOiAyMDAg fSwKLSAgICAgICAgICAgIC8vIGluaXRBamF4IGlzIGhhcmQgdG8gZmFrZSwgc28gd2UgcGFzcyB0 aGUgY2hpbGRyZW4gYXMgb2JqZWN0PQogYXJyYXk6Ci0gICAgICAgICAgICBpbml0QWpheDoge3Vy bDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlc3RzX2FkbWluJywgYT0KY3Rpb249 M0Qnb3Blbl9mb2xkZXInICl9IiwKLSAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJq c29uIiw9MjAKLSAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyByZXF1ZXN0X2lkOiAiJHt0 cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlPQpxdWVzdC5pZCApfSIsIGV4dGVybmFsX3NlcnZp Y2VfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggZXh0ZXJuYWxfc2U9CnJ2aWNlLmlk ICl9Iiwga2V5OiAiJHtzY3BfY29uZmlnc1snZGF0YV9sb2NhdGlvbiddfSIgfSwKLSAgICAgICAg ICAgIH0sCi0gICAgICAgICAgICBvbkxhenlSZWFkOiBmdW5jdGlvbihkdG5vZGUpewotICAgICAg ICAgICAgICAgIGR0bm9kZS5hcHBlbmRBamF4KHsKLSAgICAgICAgICAgICAgICAgICAgdXJsOiAi JHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVxdWVzdHNfYWRtaW4nLCBhY3RpPQpvbj0zRCdv cGVuX2ZvbGRlcicgKX0iLD0yMAotICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24i LAotICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IHJlcXVlc3RfaWQ6ICIke3RyYW5zLnNlY3Vy aXR5LmVuY29kZV9pZCggcmVxdWU9CnN0LmlkICl9IiwgZXh0ZXJuYWxfc2VydmljZV9pZDogIiR7 dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBleHRlcm5hbF9zZXJ2aT0KY2UuaWQgKX0iLCBrZXk6 IGR0bm9kZS5kYXRhLmtleSB9LAotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSwK LSAgICAgICAgICAgIG9uU2VsZWN0OiBmdW5jdGlvbihzZWxlY3QsIGR0bm9kZSkgewotICAgICAg ICAgICAgICAgIC8vIERpc3BsYXkgbGlzdCBvZiBzZWxlY3RlZCBub2RlcwotICAgICAgICAgICAg ICAgIHZhciBzZWxOb2RlcyA9M0QgZHRub2RlLnRyZWUuZ2V0U2VsZWN0ZWROb2RlcygpOwotICAg ICAgICAgICAgICAgIC8vIGNvbnZlcnQgdG8gdGl0bGUva2V5IGFycmF5Ci0gICAgICAgICAgICAg ICAgdmFyIHNlbEtleXMgPTNEICQubWFwKHNlbE5vZGVzLCBmdW5jdGlvbihub2RlKXsKLSAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuZGF0YS5rZXk7Ci0gICAgICAgICAgICAgICAgfSk7 Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQuc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyLnNl bGVjdGVkX2RhdGFzZXRzX3RvXz0KdHJhbnNmZXIudmFsdWUgPTNEIHNlbEtleXMuam9pbigiLCIp Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgb25BY3RpdmF0ZTogZnVuY3Rpb24oZHRub2Rl KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGNlbGwgPTNEICQoIiNmaWxlX2RldGFpbHMiKTsKLSAg ICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRfdmFsdWU7Ci0gICAgICAgICAgICAgICAgaWYgKGR0 bm9kZS5kYXRhLmtleSA9M0Q9M0QgJ3Jvb3QnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVj dGVkX3ZhbHVlID0zRCAiJHtzY3BfY29uZmlnc1snZGF0YV9sb2NhdGlvbiddfS8iOwotICAgICAg ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkX3ZhbHVlID0z RCBkdG5vZGUuZGF0YS5rZXk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICBp ZiAoc2VsZWN0ZWRfdmFsdWUuY2hhckF0KHNlbGVjdGVkX3ZhbHVlLmxlbmd0aC0xKSAhPTNEICcv PQonKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIE1ha2UgYWpheCBjYWxsCi0gICAgICAgICAg ICAgICAgICAgICQuYWpheCggewotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIlBPU1Qi LAotICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9 M0QncmVxdWVzdHNfYWRtaW4nLCA9CmFjdGlvbj0zRCdnZXRfZmlsZV9kZXRhaWxzJyApfSIsCi0g ICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAotICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YTogeyByZXF1ZXN0X2lkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQo cmU9CnF1ZXN0LmlkKX0iLCBleHRlcm5hbF9zZXJ2aWNlX2lkOiAiJHt0cmFucy5zZWN1cml0eS5l bmNvZGVfaWQoZXh0ZXJuYWxfc2Vydj0KaWNlLmlkKX0iLCBmb2xkZXJfcGF0aDogc2VsZWN0ZWRf dmFsdWUgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgOiBmdW5jdGlvbiAoIGRh dGEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5odG1sKCAnPGxhYmVsPicr ZGF0YSsnPC9sYWJlbD4nICkKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg ICAgY2VsbC5odG1sKCAnJyApOwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9LAot ICAgICAgICB9KTsKLSAgICB9KTsKLTwvc2NyaXB0PgotCi08JQotICAgIGlzX2FkbWluID0zRCBj bnRybGxlciA9M0Q9M0QgJ3JlcXVlc3RzX2FkbWluJyBhbmQgdHJhbnMudXNlcl9pc19hZG1pbigp Ci0gICAgY2FuX3RyYW5zZmVyX2RhdGFzZXRzID0zRCBpc19hZG1pbiBhbmQgc2FtcGxlLnVudHJh bnNmZXJyZWRfZGF0YXNldF9maT0KbGVzIGFuZCBzYW1wbGUubGlicmFyeSBhbmQgc2FtcGxlLmZv bGRlcgotJT4KLQotPGJyLz48YnIvPgotPHVsIGNsYXNzPTNEIm1hbmFnZS10YWJsZS1hY3Rpb25z Ij4KLSAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIke2gudXJsX2Zv ciggY29udHJvbGxlcj0zRCdleHRlPQpybmFsX3NlcnZpY2UnLCBhY3Rpb249M0Qndmlld19leHRl cm5hbF9zZXJ2aWNlJywgaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGU9Cl9pZCggZXh0ZXJuYWxf c2VydmljZS5pZCApICl9Ij5FeHRlcm5hbCBzZXJ2aWNlIGNvbmZpZ3VyYXRpb248L2E+PC9saT4K LSAgICAlaWYgY2FuX3RyYW5zZmVyX2RhdGFzZXRzOgotICAgICAgICA8bGk+PGEgY2xhc3M9M0Qi YWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCc9CnJlcXVl c3RzX2FkbWluJywgYWN0aW9uPTNEJ21hbmFnZV9kYXRhc2V0cycsIGNudHJsbGVyPTNEY250cmxs ZXIsIHNhbXBsZV9pZD0KPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSAp fSI+VHJhbnNmZXIgZGF0YXNldHM8L2E+PC9saT4KLSAgICAlZW5kaWYKLSAgICA8bGk+PGEgY2xh c3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdy ZXF1PQplc3RzX2NvbW1vbicsIGFjdGlvbj0zRCd2aWV3X3JlcXVlc3QnLCBjbnRybGxlcj0zRGNu dHJsbGVyLCBpZD0zRHRyYW5zLnNlY3U9CnJpdHkuZW5jb2RlX2lkKCByZXF1ZXN0LmlkICkgKX0i PkJyb3dzZSB0aGlzIHJlcXVlc3Q8L2E+PC9saT4KLTwvdWw+Ci0KLSVpZiBub3Qgc2FtcGxlOgot ICAgIDxici8+Ci0gICAgPGZvbnQgY29sb3I9M0QicmVkIj48Yj48aT5TZWxlY3QgYSBzYW1wbGUg YmVmb3JlIHNlbGVjdGluZyBkYXRhc2V0cyB0bz0KIHRyYW5zZmVyPC9pPjwvYj48L2ZvbnQ+Ci0g ICAgPGJyLz4KLSVlbmRpZgotCi0laWYgcmVxdWVzdC5zYW1wbGVzX3dpdGhvdXRfbGlicmFyeV9k ZXN0aW5hdGlvbnM6Ci0gICAgPHA+Ci0gICAgPGZvbnQgY29sb3I9M0QicmVkIj48Yj48aT5TZWxl Y3QgYSB0YXJnZXQgZGF0YSBsaWJyYXJ5IGFuZCBmb2xkZXIgZm9yID0KYSBzYW1wbGUgYmVmb3Jl IHNlbGVjdGluZyBpdHMgZGF0YXNldHMgdG8gdHJhbnNmZXIgZnJvbSB0aGUgZXh0ZXJuYWwgc2Vy dmljPQplPC9pPjwvYj48L2ZvbnQ+Ci0gICAgPC9wPgotJWVuZGlmCi0KLSVpZiBtZXNzYWdlOgot ICAgICR7cmVuZGVyX21zZyggbWVzc2FnZSwgc3RhdHVzICl9Ci0lZW5kaWYKLQotPGRpdiBjbGFz cz0zRCJ0b29sRm9ybSI+Ci0gICAgPGRpdiBjbGFzcz0zRCJ0b29sRm9ybVRpdGxlIj5TZWxlY3Qg ZGF0YXNldHMgdG8gdHJhbnNmZXIgZnJvbSBkYXRhIGRpcj0KZWN0b3J5IGNvbmZpZ3VyZWQgZm9y IHRoZSBleHRlcm5hbCBzZXJ2aWNlPC9kaXY+Ci0gICAgPGZvcm0gbmFtZT0zRCJzZWxlY3RfZGF0 YXNldHNfdG9fdHJhbnNmZXIiIGlkPTNEInNlbGVjdF9kYXRhc2V0c190b190cj0KYW5zZmVyIiBh Y3Rpb249M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVxdWVzdHNfYWRtaW4nLCBhY3Rp b249M0Qnc2VsPQplY3RfZGF0YXNldHNfdG9fdHJhbnNmZXInLCBjbnRybGxlcj0zRGNudHJsbGVy LCBleHRlcm5hbF9zZXJ2aWNlX2lkPTNEdHJhbnM9Ci5zZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVy bmFsX3NlcnZpY2UuaWQgKSwgcmVxdWVzdF9pZD0zRHRyYW5zLnNlY3VyaXR5LmVuYz0Kb2RlX2lk KCByZXF1ZXN0LmlkICkpfSIgbWV0aG9kPTNEInBvc3QiID4KLSAgICAgICAgPGRpdiBjbGFzcz0z RCJmb3JtLXJvdyI+Ci0gICAgICAgICAgICA8bGFiZWw+U2FtcGxlOjwvbGFiZWw+Ci0gICAgICAg ICAgICAke3NhbXBsZV9pZF9zZWxlY3RfZmllbGQuZ2V0X2h0bWwoKX0KLSAgICAgICAgICAgIDxk aXYgY2xhc3M9M0QidG9vbFBhcmFtSGVscCIgc3R5bGU9M0QiY2xlYXI6IGJvdGg7Ij4KLSAgICAg ICAgICAgICAgICBTZWxlY3QgdGhlIHNhbXBsZSB0aGF0IHdhcyBzZXF1ZW5jZWQgdG8gcHJvZHVj ZSB0aGUgZGF0YXNlPQp0cyB5b3Ugd2FudCB0byB0cmFuc2Zlci4KLSAgICAgICAgICAgIDwvZGl2 PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0zRCJmb3JtLXJvdyIgPgotICAg ICAgICAgICAgPGxhYmVsPlNlbGVjdCBkYXRhc2V0cyBmcm9tIHNvdXJjZSBkYXRhIGxvY2F0aW9u IGRlZmluZWQgaW4gdGg9CmUgZXh0ZXJuYWwgc2VydmljZSBjb25maWd1cmF0aW9uOjwvbGFiZWw+ Ci0gICAgICAgICAgICA8ZGl2IGlkPTNEInRyZWUiID4KLSAgICAgICAgICAgICAgICBMb2FkaW5n Li4uCi0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxpbnB1dCBpZD0zRCJzZWxlY3Rl ZF9kYXRhc2V0c190b190cmFuc2ZlciIgbmFtZT0zRCJzZWxlY3RlZF9kPQphdGFzZXRzX3RvX3Ry YW5zZmVyIiB0eXBlPTNEImhpZGRlbiIgc2l6ZT0zRDQwIi8+Ci0gICAgICAgICAgICA8ZGl2IGNs YXNzPTNEInRvb2xQYXJhbUhlbHAiIHN0eWxlPTNEImNsZWFyOiBib3RoOyI+Ci0gICAgICAgICAg ICAgICAgPHVsPgotICAgICAgICAgICAgICAgICAgICA8bGk+Q2xpY2sgdGhlIDxiPmV4dGVybmFs IHNlcnZpY2UgY29uZmlndXJhdGlvbjwvYj4gYnU9CnR0b24gYW5kIGNoYW5nZSB0aGUgPGI+RGF0 YSBkaXJlY3Rvcnk8L2I+IHNldHRpbmcgdG8gcmVkZWZpbmUgdGhlIHNvdXJjZSBkYT0KdGEgbG9j YXRpb24uPC9saT4KLSAgICAgICAgICAgICAgICAgICAgPGxpPlNlbGVjdCBhIGZvbGRlciB0byBz ZWxlY3QgYWxsIG9mIHRoZSBpbmRpdmlkdWFsIGZpPQpsZXMgd2l0aGluIHRoYXQgZm9sZGVyLjwv bGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT5DbGljayB0aGUgPGI+U2VsZWN0IGRhdGFzZXRz PC9iPiBidXR0b24gd2hlbiBkZXNpcj0KZWQgZGF0YXNldCBjaGVjayBib3hlcyBhcmUgY2hlY2tl ZC48L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICA8L2Rpdj4gICAgICAg ICAgID0yMAotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0zRCJmb3JtLXJvdyI+ Ci0gICAgICAgICAgICA8ZGl2IGlkPTNEImZpbGVfZGV0YWlscyIgY2xhc3M9M0QidG9vbFBhcmFt SGVscCIgc3R5bGU9M0QiY2xlYT0KcjogYm90aDtiYWNrZ3JvdW5kLWNvbG9yOiNGQUZBRkE7Ij48 L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9M0QiZm9ybS1yb3ciPgot ICAgICAgICAgICAgPGlucHV0IHR5cGU9M0Qic3VibWl0IiBuYW1lPTNEInNlbGVjdF9kYXRhc2V0 c190b190cmFuc2Zlcl9idXQ9CnRvbiIgdmFsdWU9M0QiU2VsZWN0IGRhdGFzZXRzIi8+Ci0gICAg ICAgIDwvZGl2PgotICAgIDwvZm9ybT4KLTwvZGl2PgotCi0laWYgc2FtcGxlIGFuZCBzYW1wbGUu ZGF0YXNldHM6Ci0gICAgPCUgdGl0bGUgPTNEICdBbGwgc2VsZWN0ZWQgZGF0YXNldHMgZm9yICIl cyInICUgc2FtcGxlLm5hbWUgJT4KLSAgICA8cC8+Ci0gICAgJHtyZW5kZXJfc2FtcGxlX2RhdGFz ZXRzKCAncmVxdWVzdHNfYWRtaW4nLCBzYW1wbGUsIHNhbXBsZS5kYXRhc2V0cywgdD0KaXRsZSAp fQotJWVuZGlmCgpkaWZmIC1yIDFmMzQwNzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAw MWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIHRlbXBsYXRl cy9hZG1pbi90b29sX3NoZWRfcmVwb3NpdG9yeS9jb21tb24ubWFrbwotLS0gYS90ZW1wbGF0ZXMv YWRtaW4vdG9vbF9zaGVkX3JlcG9zaXRvcnkvY29tbW9uLm1ha28KKysrIGIvdGVtcGxhdGVzL2Fk bWluL3Rvb2xfc2hlZF9yZXBvc2l0b3J5L2NvbW1vbi5tYWtvCkBAIC0yMywxNCArMjMsMTYgQEAK ICAgICAgICAgICAgICAgICBmeDogeyBoZWlnaHQ6ICJ0b2dnbGUiLCBkdXJhdGlvbjogMjAwIH0s CiAgICAgICAgICAgICAgICAgLy8gaW5pdEFqYXggaXMgaGFyZCB0byBmYWtlLCBzbyB3ZSBwYXNz IHRoZSBjaGlsZHJlbiBhcyBvYj0KamVjdCBhcnJheToKICAgICAgICAgICAgICAgICBpbml0QWph eDoge3VybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ2FkbWluX3Rvb2xzaGVkPQonLCBh Y3Rpb249M0Qnb3Blbl9mb2xkZXInICl9IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGFUeXBlOiAianNvbiIsPTIwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZv bGRlcl9wYXRoOiAiJHtkaXJlY3RvcnlfcGF0aHxofSIgfSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGFUeXBlOiAianNvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh OiB7IGZvbGRlcl9wYXRoOiAiJHtkaXJlY3RvcnlfcGF0aHxofSIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29k ZT0KX2lkKCByZXBvc2l0b3J5LmlkICl9IiB9LAogICAgICAgICAgICAgICAgIH0sCiAgICAgICAg ICAgICAgICAgb25MYXp5UmVhZDogZnVuY3Rpb24oZHRub2RlKXsKICAgICAgICAgICAgICAgICAg ICAgZHRub2RlLmFwcGVuZEFqYXgoewotICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHto LnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnYWRtaW5fdG9vbHNoZWQnLCA9CmFjdGlvbj0zRCdvcGVu X2ZvbGRlcicgKX0iLD0yMAorICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9m b3IoIGNvbnRyb2xsZXI9M0QnYWRtaW5fdG9vbHNoZWQnLCA9CmFjdGlvbj0zRCdvcGVuX2ZvbGRl cicgKX0iLAogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiwKLSAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9sZGVyX3BhdGg6IGR0bm9kZS5kYXRhLmtleSB9 LAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0aDogZHRub2RlLmRh dGEua2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkOiAi JHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQ9CiggcmVwb3NpdG9yeS5pZCApfSIgfSwKICAgICAg ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBv blNlbGVjdDogZnVuY3Rpb24oc2VsZWN0LCBkdG5vZGUpIHsKQEAgLTU1LDcgKzU3LDcgQEAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiUE9TVCIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnYWRtaW5fdG9vbHNo ZT0KZCcsIGFjdGlvbj0zRCdnZXRfZmlsZV9jb250ZW50cycgKX0iLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YTogeyBmaWxlX3BhdGg6IHNlbGVjdGVkX3ZhbHVlIH0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YTogeyBmaWxlX3BhdGg6IHNlbGVjdGVkX3ZhbHVlLCByZXBvc2l0b3J5 Xz0KaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggcmVwb3NpdG9yeS5pZCApfSIgfSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzIDogZnVuY3Rpb24oIGRhdGEgKSB7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuaHRtbCggJzxsYWJlbD4nK2Rh dGErJzwvbGFiZWw+JyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKZGlmZiAtciAx ZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0 ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiB0ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVx dWVzdHMvY29tbW9uL2NvbW1vbi5tYWtvCi0tLSBhL3RlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9y ZXF1ZXN0cy9jb21tb24vY29tbW9uLm1ha28KKysrIGIvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5 L3JlcXVlc3RzL2NvbW1vbi9jb21tb24ubWFrbwpAQCAtMzMzLDcgKzMzMyw2IEBACiAgICAgICAg Y2FuX2FkZF9zYW1wbGVzID0zRCBpc191bnN1Ym1pdHRlZAogICAgIGNhbl9kZWxldGVfc2FtcGxl cyA9M0Qgbm90IGFkZGluZ19uZXdfc2FtcGxlcyBhbmQgcmVxdWVzdC5zYW1wbGVzIGFuZCA9Cigg KCBpc19hZG1pbiBhbmQgbm90IGlzX2NvbXBsZXRlICkgb3IgaXNfdW5zdWJtaXR0ZWQgKQogICAg IGNhbl9lZGl0X3NhbXBsZXMgPTNEIHJlcXVlc3Quc2FtcGxlcyBhbmQgKCBpc19hZG1pbiBvciBu b3QgaXNfY29tcGxldGU9CiApCi0gICAgY2FuX3NlbGVjdF9kYXRhc2V0cyA9M0QgaXNfYWRtaW4g YW5kIGRpc3BsYXlhYmxlX3NhbXBsZV93aWRnZXRzIGFuZCAoID0KaXNfc3VibWl0dGVkIG9yIGlz X2NvbXBsZXRlICkKICAgICBjYW5fdHJhbnNmZXJfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCBy ZXF1ZXN0LnNhbXBsZXMgYW5kIG5vdCByZXF1ZXN0PQouaXNfcmVqZWN0ZWQKICAgICBkaXNwbGF5 X2NoZWNrYm94ZXMgPTNEIG5vdCBhZGRpbmdfbmV3X3NhbXBsZXMgYW5kICggaXNfY29tcGxldGUg b3IgaXNfPQpyZWplY3RlZCBvciBpc19zdWJtaXR0ZWQgKQogICAgIGRpc3BsYXlfYmFyX2NvZGUg PTNEIHJlcXVlc3Quc2FtcGxlcyBhbmQgKCBpc19jb21wbGV0ZSBvciBpc19yZWplY3RlZCA9Cm9y IGlzX3N1Ym1pdHRlZCApCkBAIC00MDcsNyArNDA2LDcgQEAKICAgICAgICAgICAgICAgICAlZWxp ZiBzYW1wbGU6CiAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQ+Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgJWlmIHNhbXBsZS5zdGF0ZSBhbmQgKCBjYW5fc2VsZWN0X2RhdGFzZXRzIG9y ID0KY2FuX3RyYW5zZmVyX2RhdGFzZXRzICk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg JWlmIHNhbXBsZS5zdGF0ZSBhbmQgY2FuX3RyYW5zZmVyX2RhdGFzZXRzOgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAjIyBBIHNhbXBsZSB3aWxsIGhhdmUgYSBzdGF0ZSBvbmx5IGFm dGVyIHQ9CmhlIHJlcXVlc3QgaGFzIGJlZW4gc3VibWl0dGVkLgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8JQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5j b2RlZF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2k9CmQoIHNhbXBsZS5pZCApCkBAIC00 MTksMTQgKzQxOCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBj bGFzcz0zRCJ2aWV3LWluZm8iIGhyZWY9M0QiJHtoLnVybD0KX2ZvciggY29udHJvbGxlcj0zRCdy ZXF1ZXN0c19jb21tb24nLCBhY3Rpb249M0Qndmlld19zYW1wbGUnLCBjbnRybGxlcj0zRGNuPQp0 cmxsZXIsIGlkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSApfSI+JHtz YW1wbGUubmFtZSB8IGh9PC89CmE+PC9kaXY+PGRpdiBwb3B1cG1lbnU9M0Qic2FtcGxlLSR7c2Ft cGxlLmlkfS1wb3B1cCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlaWYg Y2FuX3NlbGVjdF9kYXRhc2V0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAlZm9yIGV4dGVybmFsX3NlcnZpY2UgaW4gc2FtcGxlLnJlPQpxdWVzdC50eXBlLmdldF9l eHRlcm5hbF9zZXJ2aWNlc19mb3JfbWFudWFsX2RhdGFfdHJhbnNmZXIoIHRyYW5zICk6Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51X2l0ZW1fbGFiZWwgPTNEICJT ZWxlYz0KdCBkYXRhc2V0cyB0byB0cmFuc2ZlciB1c2luZyAlcyIgJSBleHRlcm5hbF9zZXJ2aWNl Lm5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJT4KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGNsYXNzPTNE ImFjdGlvbi1idXR0b24iPQogaHJlZj0zRCIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXF1 ZXN0c19hZG1pbicsIGFjdGlvbj0zRCdzZWxlY3RfZGF0YXM9CmV0c190b190cmFuc2ZlcicsIGV4 dGVybmFsX3NlcnZpY2VfaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsXz0K c2VydmljZS5pZCApLCByZXF1ZXN0X2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCByZXF1 ZXN0LmlkICksIHNhbXBsZV9pPQpkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUu aWQgKSApfSI+JHttZW51X2l0ZW1fbGFiZWx9PC9hPjwvbGk+Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJWVuZGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJWVuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlaWYg c2FtcGxlLmRhdGFzZXRzIGFuZCBsZW4oIHNhbXBsZS5kYT0KdGFzZXRzICkgPiBsZW4oIHRyYW5z ZmVycmVkX2RhdGFzZXRfZmlsZXMgKSBhbmQgc2FtcGxlLmxpYnJhcnkgYW5kIHNhbXBsZS5mPQpv bGRlcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xh c3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlPQpmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNE J3JlcXVlc3RzX2FkbWluJywgYWN0aW9uPTNEJ21hbmFnZV9kYXRhc2V0cyc9Ciwgc2FtcGxlX2lk PTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSApfSI+TWFuYWdlIHNlbGVj dGVkIGRhdD0KYXNldHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICVlbGlmIHNhbXBsZS5kYXRhc2V0cyBhbmQgbGVuKCBzYW1wbGUuPQpkYXRhc2V0cyApID0z RD0zRCBsZW4oIHRyYW5zZmVycmVkX2RhdGFzZXRfZmlsZXMgKToKQEAgLTY2NSw3ICs2NTYsNiBA QAogICAgICAgICAgICAgaXNfYWRtaW4gPTNEIGNudHJsbGVyID0zRD0zRCAncmVxdWVzdHNfYWRt aW4nIGFuZCB0cmFucy51c2VyX2k9CnNfYWRtaW4oKQogICAgICAgICAgICAgaXNfY29tcGxldGUg PTNEIHNhbXBsZS5yZXF1ZXN0LmlzX2NvbXBsZXRlCiAgICAgICAgICAgICBpc19zdWJtaXR0ZWQg PTNEIHNhbXBsZS5yZXF1ZXN0LmlzX3N1Ym1pdHRlZAotICAgICAgICAgICAgY2FuX3NlbGVjdF9k YXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5kICggaXNfY29tcGxldGUgb3IgaXNfc3VibWk9CnR0ZWQg KQogICAgICAgICAgICAgY2FuX3RyYW5zZmVyX2RhdGFzZXRzID0zRCBpc19hZG1pbiBhbmQgc2Ft cGxlLnVudHJhbnNmZXJyZWRfZGE9CnRhc2V0X2ZpbGVzCiAgICAgICAgICU+CiAgICAgICAgICMj IFRoZSB0cmFuc2ZlciBzdGF0dXMgc2hvdWxkIHVwZGF0ZSBvbmx5IHdoZW4gdGhlIHJlcXVlc3Qg aGFzIGJlZT0KbiBzdWJtaXR0ZWQgb3IgY29tcGxldGUKCmRpZmYgLXIgMWYzNDA3MmQ0NzNmODcx YjkwYmYxYjJiY2M2YTcyYzMyMjQyMDAxZCAtciA3ZGRiNDFkY2IyYjJlNGQzYTZmODM0ZD0KM2Rk MTE0MjZmMjZmYjc5MDIgdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi92 aWV3X3JlcXVlc3RfaGlzPQp0b3J5Lm1ha28KLS0tIGEvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5 L3JlcXVlc3RzL2NvbW1vbi92aWV3X3JlcXVlc3RfaGlzdG9yeS5tYWtvCisrKyBiL3RlbXBsYXRl cy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vdmlld19yZXF1ZXN0X2hpc3RvcnkubWFr bwpAQCAtMTEsNyArMTEsNiBAQAogICAgIGNhbl9hZGRfc2FtcGxlcyA9M0QgaXNfdW5zdWJtaXR0 ZWQKICAgICBjYW5fZWRpdF9yZXF1ZXN0ID0zRCAoIGlzX2FkbWluIGFuZCBub3QgaXNfY29tcGxl dGUgKSBvciBpc191bnN1Ym1pdHRlZAogICAgIGNhbl9yZWplY3QgPTNEIGlzX2FkbWluIGFuZCBp c19zdWJtaXR0ZWQKLSAgICBjYW5fc2VsZWN0X2RhdGFzZXRzID0zRCBpc19hZG1pbiBhbmQgKCBp c19jb21wbGV0ZSBvciBpc19zdWJtaXR0ZWQgKQogICAgIGNhbl9zdWJtaXRfcmVxdWVzdCA9M0Qg cmVxdWVzdC5zYW1wbGVzIGFuZCBpc191bnN1Ym1pdHRlZAogJT4KPTIwCgpkaWZmIC1yIDFmMzQw NzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2 ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIHRlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0 cy9jb21tb24vdmlld19zYW1wbGVfZGF0YT0Kc2V0cy5tYWtvCi0tLSBhL3RlbXBsYXRlcy93ZWJh cHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vdmlld19zYW1wbGVfZGF0YXNldHMubWFrbworKysg Yi90ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVzdHMvY29tbW9uL3ZpZXdfc2FtcGxlX2Rh dGFzZXRzLm1ha28KQEAgLTEyLDcgKzEyLDYgQEAKICAgICBpc19hZG1pbiA9M0QgY250cmxsZXIg PTNEPTNEICdyZXF1ZXN0c19hZG1pbicgYW5kIHRyYW5zLnVzZXJfaXNfYWRtaW4oKQogICAgIGlz X2NvbXBsZXRlID0zRCBzYW1wbGUucmVxdWVzdC5pc19jb21wbGV0ZQogICAgIGlzX3N1Ym1pdHRl ZCA9M0Qgc2FtcGxlLnJlcXVlc3QuaXNfc3VibWl0dGVkCi0gICAgY2FuX3NlbGVjdF9kYXRhc2V0 cyA9M0QgaXNfYWRtaW4gYW5kICggaXNfY29tcGxldGUgb3IgaXNfc3VibWl0dGVkICkKICAgICBj YW5fdHJhbnNmZXJfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCBzYW1wbGUudW50cmFuc2ZlcnJl ZF9kYXRhc2V0X2ZpPQpsZXMgYW5kIHNhbXBsZS5saWJyYXJ5IGFuZCBzYW1wbGUuZm9sZGVyCiAl Pgo9MjAKQEAgLTI0LDkgKzIzLDYgQEAKICAgICAlZW5kaWYKICAgICA8bGk+PGEgY2xhc3M9M0Qi YWN0aW9uLWJ1dHRvbiIgaWQ9M0Qic2FtcGxlLSR7c2FtcGxlLmlkfS1wb3B1cCIgY2xhc3M9Cj0z RCJtZW51YnV0dG9uIj5EYXRhc2V0IEFjdGlvbnM8L2E+PC9saT48ZGl2IHBvcHVwbWVudT0zRCJz YW1wbGUtJHtzYW1wbGUuaT0KZH0tcG9wdXAiPgotICAgICAgICAlaWYgY2FuX3NlbGVjdF9kYXRh c2V0czoKLSAgICAgICAgICAgIDxsaT48YSBjbGFzcz0zRCJhY3Rpb24tYnV0dG9uIiBocmVmPTNE IiR7aC51cmxfZm9yKCBjb250cm9sbGVyPQo9M0QncmVxdWVzdHNfYWRtaW4nLCBhY3Rpb249M0Qn c2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyJywgY250cmxsZXI9M0RjbnQ9CnJsbGVyLCBleHRl cm5hbF9zZXJ2aWNlX2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBleHRlcm5hbF9zZXJ2 aWNlLmlkID0KKSwgcmVxdWVzdF9pZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxl LnJlcXVlc3QuaWQgKSwgc2FtcGxlX2lkPTNEPQp0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHNh bXBsZS5pZCApICl9Ij5TZWxlY3QgbW9yZSBkYXRhc2V0czwvYT48L2xpPgotICAgICAgICAlZW5k aWYKICAgICAgICAgPGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZWY9M0QiJHtoLnVy bF9mb3IoIGNvbnRyb2xsZXI9M0QnPQpsaWJyYXJ5X2NvbW1vbicsIGFjdGlvbj0zRCdicm93c2Vf bGlicmFyeScsIGNudHJsbGVyPTNEY250cmxsZXIsIGlkPTNEdHJhbnM9Ci5zZWN1cml0eS5lbmNv ZGVfaWQoIHNhbXBsZS5saWJyYXJ5LmlkICkgKX0iPlZpZXcgdGFyZ2V0IERhdGEgTGlicmFyeTwv YT48Lz0KbGk+PGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZWY9M0QiJHtoLnVybF9m b3IoIGNvbnRyb2xsZXI9M0QncmVxdWVzPQp0c19jb21tb24nLCBhY3Rpb249M0Qndmlld19yZXF1 ZXN0JywgY250cmxsZXI9M0RjbnRybGxlciwgaWQ9M0R0cmFucy5zZWN1cmk9CnR5LmVuY29kZV9p ZCggc2FtcGxlLnJlcXVlc3QuaWQgKSApfSI+QnJvd3NlIHRoaXMgcmVxdWVzdDwvYT48L2xpPjwv ZGl2PgoKZGlmZiAtciAxZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1y IDdkZGI0MWRjYjJiMmU0ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiB0ZW1wbGF0ZXMvd2Vi YXBwcy90b29sX3NoZWQvcmVwb3NpdG9yeS9jb21tb24ubWFrbwotLS0gYS90ZW1wbGF0ZXMvd2Vi YXBwcy90b29sX3NoZWQvcmVwb3NpdG9yeS9jb21tb24ubWFrbworKysgYi90ZW1wbGF0ZXMvd2Vi YXBwcy90b29sX3NoZWQvcmVwb3NpdG9yeS9jb21tb24ubWFrbwpAQCAtMjEsMTQgKzIxLDE0IEBA CiAgICAgICAgICAgICAgICAgZng6IHsgaGVpZ2h0OiAidG9nZ2xlIiwgZHVyYXRpb246IDIwMCB9 LAogICAgICAgICAgICAgICAgIC8vIGluaXRBamF4IGlzIGhhcmQgdG8gZmFrZSwgc28gd2UgcGFz cyB0aGUgY2hpbGRyZW4gYXMgb2I9CmplY3QgYXJyYXk6CiAgICAgICAgICAgICAgICAgaW5pdEFq YXg6IHt1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXBvc2l0b3J5JywgYT0KY3Rp b249M0Qnb3Blbl9mb2xkZXInICl9IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFU eXBlOiAianNvbiIsPTIwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRl cl9wYXRoOiAiJHtyZXBvc2l0b3J5LnJlcG9fcGF0aCggdD0KcmFucy5hcHAgKX0iIH0sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0aDogIiR7cmVwb3NpdG9yeS5yZXBvX3BhdGgo IHQ9CnJhbnMuYXBwICl9IiwgcmVwb3NpdG9yeV9pZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2Rl X2lkKCByZXBvc2l0b3J5LmlkICl9Ij0KICB9LAogICAgICAgICAgICAgICAgIH0sCiAgICAgICAg ICAgICAgICAgb25MYXp5UmVhZDogZnVuY3Rpb24oZHRub2RlKXsKICAgICAgICAgICAgICAgICAg ICAgZHRub2RlLmFwcGVuZEFqYXgoewotICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHto LnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVwb3NpdG9yeScsIGFjdGk9Cm9uPTNEJ29wZW5fZm9s ZGVyJyApfSIsPTIwCisgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJsX2Zvcigg Y29udHJvbGxlcj0zRCdyZXBvc2l0b3J5JywgYWN0aT0Kb249M0Qnb3Blbl9mb2xkZXInICl9IiwK ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCi0gICAgICAgICAgICAg ICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiBkdG5vZGUuZGF0YS5rZXkgfSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9sZGVyX3BhdGg6IGR0bm9kZS5kYXRhLmtleSwg cmVwb3NpdG9yeV9pPQpkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcG9zaXRvcnku aWQgKX0iICB9LAogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9LAog ICAgICAgICAgICAgICAgIG9uU2VsZWN0OiBmdW5jdGlvbihzZWxlY3QsIGR0bm9kZSkgewpAQCAt NjEsNyArNjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxl cj0zRCdyZXBvc2l0b3J5JywgPQphY3Rpb249M0QnZ2V0X2ZpbGVfY29udGVudHMnICl9IiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGE6IHsgZmlsZV9wYXRoOiBzZWxlY3RlZF92YWx1ZSB9LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZmlsZV9wYXRoOiBzZWxlY3RlZF92YWx1 ZSwgcmVwb3NpdG9yeV89CmlkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcG9zaXRv cnkuaWQgKX0iIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA6IGZ1bmN0 aW9uICggZGF0YSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5odG1s KCAnPGxhYmVsPicrZGF0YSsnPC9sYWJlbD4nICkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRz LzZjMmZkN2JkZGM2Yy8KQ2hhbmdlc2V0OiAgIDZjMmZkN2JkZGM2YwpCcmFuY2g6ICAgICAgcmVs ZWFzZV8xNS4wNQpVc2VyOiAgICAgICAgbmF0ZWZvbwpEYXRlOiAgICAgICAgMjAxNi0wMi0yNCAy MDo1NDo1MSswMDowMApTdW1tYXJ5OiAgICAgUmVsZWFzZSAxNS4wNS4yCkFmZmVjdGVkICM6ICAz MSBmaWxlcwoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRk IC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIvZ2FsYXh5 L2V4Y2VwdGlvbnMvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS9leGNlcHRpb25zL19faW5p dF9fLnB5CisrKyBiL2xpYi9nYWxheHkvZXhjZXB0aW9ucy9fX2luaXRfXy5weQpAQCAtNzEsNiAr NzEsMTEgQEAKICAgICBlcnJfY29kZSA9M0QgZXJyb3JfY29kZXMuTUFMRk9STUVEX0lECj0yMAo9 MjAKK2NsYXNzIE1hbGZvcm1lZENvbnRlbnRzKCBNZXNzYWdlRXhjZXB0aW9uICk6CisgICAgc3Rh dHVzX2NvZGUgPTNEIDQwMAorICAgIGVycl9jb2RlID0zRCBlcnJvcl9jb2Rlcy5NQUxGT1JNRURf Q09OVEVOVFMKKworCiBjbGFzcyBVbmtub3duQ29udGVudHNUeXBlKCBNZXNzYWdlRXhjZXB0aW9u ICk6CiAgICAgc3RhdHVzX2NvZGUgPTNEIDQwMAogICAgIGVycl9jb2RlID0zRCBlcnJvcl9jb2Rl cy5VTktOT1dOX0NPTlRFTlRTX1RZUEUKCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2 ZDY4Njk5ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1 MTViNGUgbGliL2dhbGF4eS9leGNlcHRpb25zL2Vycm9yX2NvZGVzLmpzb24KLS0tIGEvbGliL2dh bGF4eS9leGNlcHRpb25zL2Vycm9yX2NvZGVzLmpzb24KKysrIGIvbGliL2dhbGF4eS9leGNlcHRp b25zL2Vycm9yX2NvZGVzLmpzb24KQEAgLTYxLDEwICs2MSwxNSBAQAogICAgIH0sCiAgICB7CiAg ICAgIm5hbWUiOiAiVVNFUl9UT09MX01FVEFfUEFSQU1FVEVSX1BST0JMRU0iLAotICAgICJjb2Rl IjogNDAwMDExLAorICAgICJjb2RlIjogNDAwMDEyLAogICAgICJtZXNzYWdlIjogIlN1cHBsaWVk IGluY29ycmVjdCBvciBpbmNvbXBhdGlibGUgdG9vbCBtZXRhIHBhcmFtZXRlcnMuIgogICAgfSwK ICAgIHsKKyAgICAibmFtZSI6ICJNQUxGT1JNRURfQ09OVEVOVFMiLAorICAgICJjb2RlIjogNDAw MDEzLAorICAgICJtZXNzYWdlIjogIlRoZSBjb250ZW50cyBvZiB0aGUgcmVxdWVzdCBhcmUgbWFs Zm9ybWVkLiIKKyAgICB9LAorICAgewogICAgICJuYW1lIjogIlVTRVJfQVVUSEVOVElDQVRJT05f RkFJTEVEIiwKICAgICAiY29kZSI6IDQwMTAwMSwKICAgICAibWVzc2FnZSI6ICJBdXRoZW50aWNh dGlvbiBmYWlsZWQsIGludmFsaWQgY3JlZGVudGlhbHMgc3VwcGxpZWQuIgoKZGlmZiAtciAyMGQ1 YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4 YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIvZ2FsYXh5L21vZGVsL19faW5pdF9fLnB5Ci0t LSBhL2xpYi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS9tb2RlbC9f X2luaXRfXy5weQpAQCAtNSwxNSArNSwxMSBAQAogdGhlIHJlbGF0aW9uc2hpcCBjYXJkaW5hbGl0 aWVzIGFyZSBvYnZpb3VzIChlLmcuIHByZWZlciBEYXRhc2V0IHRvIERhdGEpCiAiIiIKPTIwCi1m cm9tIGdhbGF4eSBpbXBvcnQgZWdncwotZWdncy5yZXF1aXJlKCJwZXhwZWN0IikKLQogaW1wb3J0 IGNvZGVjcwogaW1wb3J0IGVycm5vCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9wZXJhdG9yCiBp bXBvcnQgb3MKLWltcG9ydCBwZXhwZWN0CiBpbXBvcnQganNvbgogaW1wb3J0IHNvY2tldAogaW1w b3J0IHRpbWUKQEAgLTE0MzQsMTMgKzE0MzAsMTEgQEAKICAgICBkZWYgZ2V0X3RvdGFsX3NpemUo IHNlbGYgKToKICAgICAgICAgaWYgc2VsZi50b3RhbF9zaXplIGlzIG5vdCBOb25lOgogICAgICAg ICAgICAgcmV0dXJuIHNlbGYudG90YWxfc2l6ZQotICAgICAgICBpZiBzZWxmLmZpbGVfc2l6ZToK LSAgICAgICAgICAgICMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBzZXQgaWYgdW5zZXQK LSAgICAgICAgICAgIHNlbGYuc2V0X3RvdGFsX3NpemUoKQotICAgICAgICAgICAgZGJfc2Vzc2lv biA9M0Qgb2JqZWN0X3Nlc3Npb24oIHNlbGYgKQotICAgICAgICAgICAgZGJfc2Vzc2lvbi5mbHVz aCgpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi50b3RhbF9zaXplCi0gICAgICAgIHJldHVybiAw CisgICAgICAgICMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBzZXQgaWYgdW5zZXQKKyAg ICAgICAgc2VsZi5zZXRfdG90YWxfc2l6ZSgpCisgICAgICAgIGRiX3Nlc3Npb24gPTNEIG9iamVj dF9zZXNzaW9uKCBzZWxmICkKKyAgICAgICAgZGJfc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgIHJl dHVybiBzZWxmLnRvdGFsX3NpemUKICAgICBkZWYgc2V0X3RvdGFsX3NpemUoIHNlbGYgKToKICAg ICAgICAgaWYgc2VsZi5maWxlX3NpemUgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuc2V0X3Np emUoKQpAQCAtMzkzOSwyNyArMzkzMyw2IEBACiAgICAgICAgICAgICAgICAgdW50cmFuc2ZlcnJl ZF9kYXRhc2V0cy5hcHBlbmQoIGRhdGFzZXQgKQogICAgICAgICByZXR1cm4gdW50cmFuc2ZlcnJl ZF9kYXRhc2V0cwo9MjAKLSAgICBkZWYgZ2V0X3VudHJhbnNmZXJyZWRfZGF0YXNldF9zaXplKCBz ZWxmLCBmaWxlcGF0aCwgc2NwX2NvbmZpZ3MgKToKLSAgICAgICAgZGVmIHByaW50X3RpY2tzKCBk ICk6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVycm9yX21zZyA9M0QgJ0Vycm9yIGVuY291 bnRlcmVkIGluIGRldGVybWluaW5nIHRoZSBmaWxlIHNpemUgb2YgJT0KcyBvbiB0aGUgZXh0ZXJu YWxfc2VydmljZS4nICUgZmlsZXBhdGgKLSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzWydob3N0 J10gb3Igbm90IHNjcF9jb25maWdzWyd1c2VyX25hbWUnXSBvciBub3QgPQpzY3BfY29uZmlnc1sn cGFzc3dvcmQnXToKLSAgICAgICAgICAgIHJldHVybiBlcnJvcl9tc2cKLSAgICAgICAgbG9naW5f c3RyID0zRCAnJXNAJXMnICUgKCBzY3BfY29uZmlnc1sndXNlcl9uYW1lJ10sIHNjcF9jb25maWdz WydoPQpvc3QnXSApCi0gICAgICAgIGNtZCAgPTNEICdzc2ggJXMgImR1IC1zaCBcJyVzXCciJyAl ICggbG9naW5fc3RyLCBmaWxlcGF0aCApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG91dHB1 dCA9M0QgcGV4cGVjdC5ydW4oIGNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBldmVudHM9M0R7ICcuc3N3b3JkOionOiBzY3BfY29uZmlnc1sncGFzPQpzd29yZCddKydcclxu JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwZWN0LlRJ TUVPVVQ6cHJpbnRfdGlja3N9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp bWVvdXQ9M0QxMCApCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICByZXR1 cm4gZXJyb3JfbXNnCi0gICAgICAgICMgY2xlYW51cCB0aGUgb3V0cHV0IHRvIGdldCBqdXN0IHRo ZSBmaWxlIHNpemUKLSAgICAgICAgcmV0dXJuICBvdXRwdXQucmVwbGFjZSggZmlsZXBhdGgsICcn IClcCi0gICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoICdQYXNzd29yZDonLCAnJyApXAot ICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCAiJ3MgcGFzc3dvcmQ6IiwgJycgKVwKLSAg ICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSggbG9naW5fc3RyLCAnJyApXAotICAgICAgICAg ICAgICAgICAgICAgIC5zdHJpcCgpCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHJ1bl9kZXRhaWxz KCBzZWxmICk6CiAgICAgICAgICMgc2VsZi5ydW5zIGlzIGEgbGlzdCBvZiBTYW1wbGVSdW5Bc3Nv Y2lhdGlvbnMgb3JkZXJlZCBkZXNjZW5kaW5nID0Kb24gdXBkYXRlX3RpbWUuCgpkaWZmIC1yIDIw ZDVhMjFhZGQ5YWI0NWQ5YzRjNWMyNmQ2ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0 ZThhNjQwOTM9CmYzZmM0YzQzNzBmNTE1YjRlIGxpYi9nYWxheHkvb2JqZWN0c3RvcmUvX19pbml0 X18ucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9fX2luaXRfXy5weQorKysgYi9saWIv Z2FsYXh5L29iamVjdHN0b3JlL19faW5pdF9fLnB5CkBAIC0xMSw3ICsxMSw3IEBACiBpbXBvcnQg dGhyZWFkaW5nCiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKPTIwCi1mcm9tIGdh bGF4eS51dGlsIGltcG9ydCB1bWFza19maXhfcGVybXMsIGZvcmNlX3N5bWxpbmsKK2Zyb20gZ2Fs YXh5LnV0aWwgaW1wb3J0IHVtYXNrX2ZpeF9wZXJtcywgZm9yY2Vfc3ltbGluaywgc2FmZV9yZWxw YXRoCiBmcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3RJbnZhbGlkLCBPYmplY3RO b3RGb3VuZAogZnJvbSBnYWxheHkudXRpbC5zbGVlcGVyIGltcG9ydCBTbGVlcGVyCiBmcm9tIGdh bGF4eS51dGlsLmRpcmVjdG9yeV9oYXNoIGltcG9ydCBkaXJlY3RvcnlfaGFzaF9pZApAQCAtMjUy LDcgKzI1MiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21wb3NlZCBkaXJl Y3Rvcnkgc3RydWN0dXJlIGRvZXMgbm90IGluY2x1ZGU9CiBhIGhhc2ggaWQKICAgICAgICAgICAg ICAgICAgICAgICAgICAoZS5nLiwgL2ZpbGVzL2RhdGFzZXRfMTAuZGF0IChvbGQpIHZzLiAvZmls ZXMvMDAwPQovZGF0YXNldF8xMC5kYXQgKG5ldykpCiAgICAgICAgICIiIgotICAgICAgICBiYXNl ID0zRCBzZWxmLmV4dHJhX2RpcnMuZ2V0KGJhc2VfZGlyLCBzZWxmLmZpbGVfcGF0aCkKKyAgICAg ICAgYmFzZSA9M0Qgb3MucGF0aC5hYnNwYXRoKHNlbGYuZXh0cmFfZGlycy5nZXQoYmFzZV9kaXIs IHNlbGYuZmlsZV9wPQphdGgpKQorICAgICAgICAjIGV4dHJhX2RpciBzaG91bGQgbmV2ZXIgYmUg Y29uc3RydWN0ZWQgZnJvbSBwcm92aWRlZCBkYXRhIGJ1dCBqdXN0CisgICAgICAgICMgbWFrZSBz dXJlIHRoZXJlIGFyZSBubyBzaGVuYW5uaWdhbnMgYWZvb3QKKyAgICAgICAgaWYgZXh0cmFfZGly IGFuZCBleHRyYV9kaXIgIT0zRCBvcy5wYXRoLm5vcm1wYXRoKGV4dHJhX2Rpcik6CisgICAgICAg ICAgICBsb2cud2FybmluZygnZXh0cmFfZGlyIGlzIG5vdCBub3JtYWxpemVkOiAlcycsIGV4dHJh X2RpcikKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2Jq ZWN0IGlzIGludmFsaWQiKQorICAgICAgICAjIGVuc3VyZSB0aGF0IGFueSBwYXJlbnQgZGlyZWN0 b3J5IHJlZmVyZW5jZXMgaW4gYWx0X25hbWUgd291bGQgbm90CisgICAgICAgICMgcmVzdWx0IGlu IGEgcGF0aCBub3QgY29udGFpbmVkIGluIHRoZSBkaXJlY3RvcnkgcGF0aCBjb25zdHJ1Y3RlZD0K IGhlcmUKKyAgICAgICAgaWYgYWx0X25hbWUgYW5kIG5vdCBzYWZlX3JlbHBhdGgoYWx0X25hbWUp OgorICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxkIGxvY2F0ZSBwYXRoIG91 dHNpZGUgZGlyOiAlcycsIGFsdF89Cm5hbWUpCisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZh bGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKICAgICAgICAgaWYgb2xkX3N0 eWxlOgogICAgICAgICAgICAgaWYgZXh0cmFfZGlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAg ICAgIHBhdGggPTNEIG9zLnBhdGguam9pbihiYXNlLCBleHRyYV9kaXIpCkBAIC02MTksOSArNjI5 LDEwIEBACiAgICAgZWxpZiBzdG9yZSA9M0Q9M0QgJ2lyb2RzJzoKICAgICAgICAgZnJvbSAucm9k cyBpbXBvcnQgSVJPRFNPYmplY3RTdG9yZQogICAgICAgICByZXR1cm4gSVJPRFNPYmplY3RTdG9y ZShjb25maWc9M0Rjb25maWcsIGNvbmZpZ194bWw9M0Rjb25maWdfeG1sKQotICAgIGVsaWYgc3Rv cmUgPTNEPTNEICdwdWxzYXInOgotICAgICAgICBmcm9tIC5wdWxzYXIgaW1wb3J0IFB1bHNhck9i amVjdFN0b3JlCi0gICAgICAgIHJldHVybiBQdWxzYXJPYmplY3RTdG9yZShjb25maWc9M0Rjb25m aWcsIGNvbmZpZ194bWw9M0Rjb25maWdfeG1sKQorICAgICMgRGlzYWJsZSB0aGUgUHVsc2FyIG9i amVjdCBzdG9yZSBmb3Igbm93IHVudGlsIGl0IHJlY2VpdmVzIHNvbWUgYXR0ZW49CnRpb24KKyAg ICAjIGVsaWYgc3RvcmUgPTNEPTNEICdwdWxzYXInOgorICAgICMgICAgZnJvbSAucHVsc2FyIGlt cG9ydCBQdWxzYXJPYmplY3RTdG9yZQorICAgICMgICAgcmV0dXJuIFB1bHNhck9iamVjdFN0b3Jl KGNvbmZpZz0zRGNvbmZpZywgY29uZmlnX3htbD0zRGNvbmZpZ194bWwpCiAgICAgZWxzZToKICAg ICAgICAgbG9nLmVycm9yKCJVbnJlY29nbml6ZWQgb2JqZWN0IHN0b3JlIGRlZmluaXRpb246IHsw fSIuZm9ybWF0KHN0b3JlPQopKQo9MjAKCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2 ZDY4Njk5ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1 MTViNGUgbGliL2dhbGF4eS9vYmplY3RzdG9yZS9yb2RzLnB5Ci0tLSBhL2xpYi9nYWxheHkvb2Jq ZWN0c3RvcmUvcm9kcy5weQorKysgYi9saWIvZ2FsYXh5L29iamVjdHN0b3JlL3JvZHMucHkKQEAg LTEyLDcgKzEyLDggQEAKIGZyb20gcG9zaXhwYXRoIGltcG9ydCBiYXNlbmFtZSBhcyBwYXRoX2Jh c2VuYW1lCiBmcm9tIHBvc2l4cGF0aCBpbXBvcnQgZGlybmFtZSBhcyBwYXRoX2Rpcm5hbWUKPTIw Ci1mcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3ROb3RGb3VuZAorZnJvbSBnYWxh eHkuZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0Tm90Rm91bmQsIE9iamVjdEludmFsaWQKK2Zyb20g Z2FsYXh5LnV0aWwgaW1wb3J0IHNhZmVfcmVscGF0aAogZnJvbSAuLm9iamVjdHN0b3JlIGltcG9y dCBEaXNrT2JqZWN0U3RvcmUsIE9iamVjdFN0b3JlLCBsb2NhbF9leHRyYV9kaXJzCj0yMAogdHJ5 OgpAQCAtNzEsNiArNzIsMjAgQEAKICAgICAgICAgbG9nLmluZm8oICJpUk9EUyBkYXRhIGZvciB0 aGlzIGluc3RhbmNlIHdpbGwgYmUgc3RvcmVkIGluIGNvbGxlY3RpPQpvbjogJXMsIHJlc291cmNl OiAlcyIsIHNlbGYucm9vdF9jb2xsZWN0aW9uX3BhdGgsIHNlbGYuZGVmYXVsdF9yZXNvdXJjZSAp Cj0yMAogICAgIGRlZiBfX2dldF9yb2RzX3BhdGgoIHNlbGYsIG9iaiwgYmFzZV9kaXI9M0ROb25l LCBkaXJfb25seT0zREZhbHNlLCBleHQ9CnJhX2Rpcj0zRE5vbmUsIGV4dHJhX2Rpcl9hdF9yb290 PTNERmFsc2UsIGFsdF9uYW1lPTNETm9uZSwgc3RyaXBfZGF0PTNEVHJ1ZT0KLCAqKmt3YXJncyAp OgorICAgICAgICAjIGV4dHJhX2RpciBzaG91bGQgbmV2ZXIgYmUgY29uc3RydWN0ZWQgZnJvbSBw cm92aWRlZCBkYXRhIGJ1dCBqdXN0CisgICAgICAgICMgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBz aGVuYW5uaWdhbnMgYWZvb3QKKyAgICAgICAgaWYgZXh0cmFfZGlyIGFuZCBleHRyYV9kaXIgIT0z RCBvcy5wYXRoLm5vcm1wYXRoKGV4dHJhX2Rpcik6CisgICAgICAgICAgICBsb2cud2FybmluZygn ZXh0cmFfZGlyIGlzIG5vdCBub3JtYWxpemVkOiAlcycsIGV4dHJhX2RpcikKKyAgICAgICAgICAg IHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGludmFsaWQiKQor ICAgICAgICAjIGVuc3VyZSB0aGF0IGFueSBwYXJlbnQgZGlyZWN0b3J5IHJlZmVyZW5jZXMgaW4g YWx0X25hbWUgd291bGQgbm90CisgICAgICAgICMgcmVzdWx0IGluIGEgcGF0aCBub3QgY29udGFp bmVkIGluIHRoZSBkaXJlY3RvcnkgcGF0aCBjb25zdHJ1Y3RlZD0KIGhlcmUKKyAgICAgICAgaWYg YWx0X25hbWU6CisgICAgICAgICAgICBpZiBub3Qgc2FmZV9yZWxwYXRoKGFsdF9uYW1lKToKKyAg ICAgICAgICAgICAgICBsb2cud2FybmluZygnYWx0X25hbWUgd291bGQgbG9jYXRlIHBhdGggb3V0 c2lkZSBkaXI6ICVzJywgPQphbHRfbmFtZSkKKyAgICAgICAgICAgICAgICByYWlzZSBPYmplY3RJ bnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKKyAgICAgICAgICAgICMg YWx0X25hbWUgY2FuIGNvbnRhaW4gcGFyZW50IGRpcmVjdG9yeSByZWZlcmVuY2VzLCBidXQgaVJP RFMgPQp3aWxsCisgICAgICAgICAgICAjIG5vdCBmb2xsb3cgdGhlbSwgc28gaWYgdGhleSBhcmUg dmFsaWQgd2Ugbm9ybWFsaXplIHRoZW0gb3V0CisgICAgICAgICAgICBhbHRfbmFtZSA9M0Qgb3Mu cGF0aC5ub3JtcGF0aChhbHRfbmFtZSkKICAgICAgICAgcGF0aCA9M0QgIiIKICAgICAgICAgaWYg ZXh0cmFfZGlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcGF0aCA9M0QgZXh0cmFfZGlyCgpk aWZmIC1yIDIwZDVhMjFhZGQ5YWI0NWQ5YzRjNWMyNmQ2ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3 YmRkYzZjMWM0ZThhNjQwOTM9CmYzZmM0YzQzNzBmNTE1YjRlIGxpYi9nYWxheHkvb2JqZWN0c3Rv cmUvczMucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9zMy5weQorKysgYi9saWIvZ2Fs YXh5L29iamVjdHN0b3JlL3MzLnB5CkBAIC0xMiw4ICsxMiw4IEBACj0yMAogZnJvbSBkYXRldGlt ZSBpbXBvcnQgZGF0ZXRpbWUKPTIwCi1mcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmpl Y3ROb3RGb3VuZAotZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc3RyaW5nX2FzX2Jvb2wsIHVtYXNr X2ZpeF9wZXJtcworZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0Tm90Rm91bmQs IE9iamVjdEludmFsaWQKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHN0cmluZ19hc19ib29sLCB1 bWFza19maXhfcGVybXMsIHNhZmVfcmVscGF0aAogZnJvbSBnYWxheHkudXRpbC5kaXJlY3Rvcnlf aGFzaCBpbXBvcnQgZGlyZWN0b3J5X2hhc2hfaWQKIGZyb20gZ2FsYXh5LnV0aWwuc2xlZXBlciBp bXBvcnQgU2xlZXBlcgogZnJvbSAuczNfbXVsdGlwYXJ0X3VwbG9hZCBpbXBvcnQgbXVsdGlwYXJ0 X3VwbG9hZApAQCAtMjAxLDYgKzIwMSwyMCBAQAogICAgICAgICAgICAgICAgIHVtYXNrX2ZpeF9w ZXJtcyggcGF0aCwgc2VsZi5jb25maWcudW1hc2ssIDA2NjYsIHNlbGYuY29uZmk9CmcuZ2lkICkK PTIwCiAgICAgZGVmIF9jb25zdHJ1Y3RfcGF0aChzZWxmLCBvYmosIGRpcl9vbmx5PTNETm9uZSwg ZXh0cmFfZGlyPTNETm9uZSwgZXh0cj0KYV9kaXJfYXRfcm9vdD0zREZhbHNlLCBhbHRfbmFtZT0z RE5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgIyBleHRyYV9kaXIgc2hvdWxkIG5ldmVyIGJlIGNv bnN0cnVjdGVkIGZyb20gcHJvdmlkZWQgZGF0YSBidXQganVzdAorICAgICAgICAjIG1ha2Ugc3Vy ZSB0aGVyZSBhcmUgbm8gc2hlbmFubmlnYW5zIGFmb290CisgICAgICAgIGlmIGV4dHJhX2RpciBh bmQgZXh0cmFfZGlyICE9M0Qgb3MucGF0aC5ub3JtcGF0aChleHRyYV9kaXIpOgorICAgICAgICAg ICAgbG9nLndhcm5pbmcoJ2V4dHJhX2RpciBpcyBub3Qgbm9ybWFsaXplZDogJXMnLCBleHRyYV9k aXIpCisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVj dCBpcyBpbnZhbGlkIikKKyAgICAgICAgIyBlbnN1cmUgdGhhdCBhbnkgcGFyZW50IGRpcmVjdG9y eSByZWZlcmVuY2VzIGluIGFsdF9uYW1lIHdvdWxkIG5vdAorICAgICAgICAjIHJlc3VsdCBpbiBh IHBhdGggbm90IGNvbnRhaW5lZCBpbiB0aGUgZGlyZWN0b3J5IHBhdGggY29uc3RydWN0ZWQ9CiBo ZXJlCisgICAgICAgIGlmIGFsdF9uYW1lOgorICAgICAgICAgICAgaWYgbm90IHNhZmVfcmVscGF0 aChhbHRfbmFtZSk6CisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxk IGxvY2F0ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsID0KYWx0X25hbWUpCisgICAgICAgICAgICAg ICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIp CisgICAgICAgICAgICAjIGFsdF9uYW1lIGNhbiBjb250YWluIHBhcmVudCBkaXJlY3RvcnkgcmVm ZXJlbmNlcywgYnV0IFMzIHdpbD0KbCBub3QKKyAgICAgICAgICAgICMgZm9sbG93IHRoZW0sIHNv IGlmIHRoZXkgYXJlIHZhbGlkIHdlIG5vcm1hbGl6ZSB0aGVtIG91dAorICAgICAgICAgICAgYWx0 X25hbWUgPTNEIG9zLnBhdGgubm9ybXBhdGgoYWx0X25hbWUpCiAgICAgICAgIHJlbF9wYXRoID0z RCBvcy5wYXRoLmpvaW4oKmRpcmVjdG9yeV9oYXNoX2lkKG9iai5pZCkpCiAgICAgICAgIGlmIGV4 dHJhX2RpciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIGV4dHJhX2Rpcl9hdF9yb290OgoK ZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRkIC1yIDZjMmZk N2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIvZ2FsYXh5L3Rvb2xzL2lt cF9leHAvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS90b29scy9pbXBfZXhwL19faW5pdF9f LnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC9fX2luaXRfXy5weQpAQCAtNSw2ICs1 LDcgQEAKIGltcG9ydCBqc29uCiBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gZ2FsYXh5IGltcG9ydCBt b2RlbAorZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgTWFsZm9ybWVkQ29udGVudHMKIGZy b20gZ2FsYXh5Lm1vZGVsLml0ZW1fYXR0cnMgaW1wb3J0IFVzZXNBbm5vdGF0aW9ucwogZnJvbSBn YWxheHkubW9kZWwub3JtIGltcG9ydCBlYWdlcmxvYWQsIGVhZ2VybG9hZF9hbGwKIGZyb20gZ2Fs YXh5LnRvb2xzLnBhcmFtZXRlcnMuYmFzaWMgaW1wb3J0IFVudmFsaWRhdGVkVmFsdWUKQEAgLTE5 Miw5ICsxOTMsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiBkYXRhc2V0X2F0dHJzLmdldCgn ZXhwb3J0ZWQnLCBUcnVlKSBpcyBUcnVlOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBEbyBz ZWN1cml0eSBjaGVjayBhbmQgbW92ZS9jb3B5IGRhdGFzZXQgZGF0YS4KICAgICAgICAgICAgICAg ICAgICAgICAgIHRlbXBfZGF0YXNldF9maWxlX25hbWUgPTNEIFwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgoIG9zLnBhdGguam9pbiggYXJjaGl2ZV9kaXIsIGRh PQp0YXNldF9hdHRyc1snZmlsZV9uYW1lJ10gKSApCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb3MucGF0aC5yZWFscGF0aCggb3MucGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpvaT0KbiggYXJj aGl2ZV9kaXIsIGRhdGFzZXRfYXR0cnNbJ2ZpbGVfbmFtZSddICkgKSApCiAgICAgICAgICAgICAg ICAgICAgICAgICBpZiBub3QgZmlsZV9pbl9kaXIoIHRlbXBfZGF0YXNldF9maWxlX25hbWUsIG9z LnBhdD0KaC5qb2luKCBhcmNoaXZlX2RpciwgImRhdGFzZXRzIiApICk6Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCAiSW52YWxpZCBkYXRhc2V0IHBhdGg6ICVz IiAlID0KdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSApCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmFpc2UgTWFsZm9ybWVkQ29udGVudHMoICJJbnZhbGlkIGRhdGFzZXQgcGF0aD0KOiAlcyIg JSB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lICkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRh dGFzZXRzX3VzYWdlX2NvdW50c1sgdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSBdPQogPTNEPTNEIDE6 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLm1vdmUoIHRlbXBfZGF0YXNldF9m aWxlX25hbWUsIGhkYS5maWxlXz0KbmFtZSApCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl OgpAQCAtMzE2LDYgKzMxNyw3IEBACiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgog ICAgICAgICAgICAgICAgIGppaGEuam9iLnN0ZGVyciArPTNEICJFcnJvciBjbGVhbmluZyB1cCBo aXN0b3J5IGltcG9ydCBqb2I9CjogJXMiICUgZQogICAgICAgICAgICAgICAgIHNlbGYuc2Ffc2Vz c2lvbi5mbHVzaCgpCisgICAgICAgICAgICAgICAgcmFpc2UKPTIwCj0yMAogY2xhc3MgSm9iRXhw b3J0SGlzdG9yeUFyY2hpdmVXcmFwcGVyKCBvYmplY3QsIFVzZXNBbm5vdGF0aW9ucyApOgoKZGlm ZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRkIC1yIDZjMmZkN2Jk ZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIvZ2FsYXh5L3Rvb2xzL2ltcF9l eHAvdW5wYWNrX3Rhcl9nel9hcmNoaXZlLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4 cC91bnBhY2tfdGFyX2d6X2FyY2hpdmUucHkKKysrIGIvbGliL2dhbGF4eS90b29scy9pbXBfZXhw L3VucGFja190YXJfZ3pfYXJjaGl2ZS5weQpAQCAtNiw2ICs2LDcgQEAKICAgICAtLVt1cmx8Zmls ZV0gc291cmNlIHR5cGUsIGVpdGhlciBhIFVSTCBvciBhIGZpbGUuCiAiIiIKPTIwCitpbXBvcnQg b3MKIGltcG9ydCBzeXMKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IHRhcmZpbGUKQEAgLTQzLDYg KzQ0LDIyIEBACiAgICAgICAgIHJldHVybiBOb25lCj0yMAo9MjAKK2RlZiBjaGVja19hcmNoaXZl KCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGlyICk6CisgICAgIiIiCisgICAgRW5zdXJlIHRoYXQgYSB0 YXIgYXJjaGl2ZSBoYXMgbm8gYWJzb2x1dGUgcGF0aHMgb3IgcmVsYXRpdmUgcGF0aHMgb3V0cz0K aWRlCisgICAgdGhlIGFyY2hpdmUuCisgICAgIiIiCisgICAgd2l0aCB0YXJmaWxlLm9wZW4oIGFy Y2hpdmVfZmlsZSwgbW9kZT0zRCdyOmd6JyApIGFzIGFyY2hpdmVfZnA6CisgICAgICAgIGZvciBh cmNfcGF0aCBpbiBhcmNoaXZlX2ZwLmdldG5hbWVzKCk6CisgICAgICAgICAgICBhc3NlcnQgb3Mu cGF0aC5ub3JtcGF0aCgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oCisgICAgICAgICAg ICAgICAgICAgIGRlc3RfZGlyLAorICAgICAgICAgICAgICAgICAgICBhcmNfcGF0aAorICAgICAg ICAgICAgICAgICkgKS5zdGFydHN3aXRoKCBkZXN0X2Rpci5yc3RyaXAob3Muc2VwKSArIG9zLnNl cCApLCBcCisgICAgICAgICAgICAgICAgIkFyY2hpdmUgbWVtYmVyIHdvdWxkIGV4dHJhY3Qgb3V0 c2lkZSB0YXJnZXQgZGlyZWN0b3J5OiAlcz0KIiAlIGFyY19wYXRoCisgICAgcmV0dXJuIFRydWUK KworCiBkZWYgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVfZmlsZSwgZGVzdF9kaXIgKToKICAgICAi IiIKICAgICBVbnBhY2sgYSB0YXIgYW5kL29yIGd6aXBwZWQgYXJjaGl2ZSBpbnRvIGEgZGVzdGlu YXRpb24gZGlyZWN0b3J5LgpAQCAtNTEsMTMgKzY4LDggQEAKICAgICBhcmNoaXZlX2ZwLmV4dHJh Y3RhbGwoIHBhdGg9M0RkZXN0X2RpciApCiAgICAgYXJjaGl2ZV9mcC5jbG9zZSgpCj0yMAotaWYg X19uYW1lX18gPTNEPTNEICJfX21haW5fXyI6Ci0gICAgIyBQYXJzZSBjb21tYW5kIGxpbmUuCi0g ICAgcGFyc2VyID0zRCBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICAgIHBhcnNlci5hZGRfb3B0 aW9uKCAnLVUnLCAnLS11cmwnLCBkZXN0PTNEJ2lzX3VybCcsIGFjdGlvbj0zRCJzdG9yZV90cnU9 CmUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigg Jy1GJywgJy0tZmlsZScsIGRlc3Q9M0QnaXNfZmlsZScsIGFjdGlvbj0zRCJzdG9yZV90PQpydWUi LCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1l JywgJy0tZW5jb2RlZCcsIGRlc3Q9M0QnaXNfYjY0ZW5jb2RlZCcsIGFjdGlvbj0KPTNEInN0b3Jl X3RydWUiLCBkZWZhdWx0PTNERmFsc2UsIGhlbHA9M0QnU291cmNlIGFuZCBkZXN0aW5hdGlvbiBk aXIgdmFsdWVzPQogYXJlIGJhc2U2NCBlbmNvZGVkLicgKQotICAgIChvcHRpb25zLCBhcmdzKSA9 M0QgcGFyc2VyLnBhcnNlX2FyZ3MoKQorCitkZWYgbWFpbihvcHRpb25zLCBhcmdzKToKICAgICBp c191cmwgPTNEIGJvb2woIG9wdGlvbnMuaXNfdXJsICkKICAgICBpc19maWxlID0zRCBib29sKCBv cHRpb25zLmlzX2ZpbGUgKQogICAgIGFyY2hpdmVfc291cmNlLCBkZXN0X2RpciA9M0QgYXJncwpA QCAtNjYsMTQgKzc4LDI1IEBACiAgICAgICAgIGFyY2hpdmVfc291cmNlID0zRCBiNjRkZWNvZGUo IGFyY2hpdmVfc291cmNlICkKICAgICAgICAgZGVzdF9kaXIgPTNEIGI2NGRlY29kZSggZGVzdF9k aXIgKQo9MjAKKyAgICAjIEdldCBhcmNoaXZlIGZyb20gVVJMLgorICAgIGlmIGlzX3VybDoKKyAg ICAgICAgYXJjaGl2ZV9maWxlID0zRCB1cmxfdG9fZmlsZSggYXJjaGl2ZV9zb3VyY2UsIHRlbXBm aWxlLk5hbWVkVGVtcG9yPQphcnlGaWxlKCBkaXI9M0RkZXN0X2RpciApLm5hbWUgKQorICAgIGVs aWYgaXNfZmlsZToKKyAgICAgICAgYXJjaGl2ZV9maWxlID0zRCBhcmNoaXZlX3NvdXJjZQorCisg ICAgIyBVbnBhY2sgYXJjaGl2ZS4KKyAgICBjaGVja19hcmNoaXZlKCBhcmNoaXZlX2ZpbGUsIGRl c3RfZGlyICkKKyAgICB1bnBhY2tfYXJjaGl2ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciApCisK KworaWYgX19uYW1lX18gPTNEPTNEICJfX21haW5fXyI6CisgICAgIyBQYXJzZSBjb21tYW5kIGxp bmUuCisgICAgcGFyc2VyID0zRCBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQorICAgIHBhcnNlci5h ZGRfb3B0aW9uKCAnLVUnLCAnLS11cmwnLCBkZXN0PTNEJ2lzX3VybCcsIGFjdGlvbj0zRCJzdG9y ZV90cnU9CmUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKKyAgICBwYXJzZXIuYWRkX29w dGlvbiggJy1GJywgJy0tZmlsZScsIGRlc3Q9M0QnaXNfZmlsZScsIGFjdGlvbj0zRCJzdG9yZV90 PQpydWUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKKyAgICBwYXJzZXIuYWRkX29wdGlv biggJy1lJywgJy0tZW5jb2RlZCcsIGRlc3Q9M0QnaXNfYjY0ZW5jb2RlZCcsIGFjdGlvbj0KPTNE InN0b3JlX3RydWUiLCBkZWZhdWx0PTNERmFsc2UsIGhlbHA9M0QnU291cmNlIGFuZCBkZXN0aW5h dGlvbiBkaXIgdmFsdWVzPQogYXJlIGJhc2U2NCBlbmNvZGVkLicgKQorICAgIChvcHRpb25zLCBh cmdzKSA9M0QgcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgIHRyeToKLSAgICAgICAgIyBHZXQgYXJj aGl2ZSBmcm9tIFVSTC4KLSAgICAgICAgaWYgaXNfdXJsOgotICAgICAgICAgICAgYXJjaGl2ZV9m aWxlID0zRCB1cmxfdG9fZmlsZSggYXJjaGl2ZV9zb3VyY2UsIHRlbXBmaWxlLk5hbWVkVGU9Cm1w b3JhcnlGaWxlKCBkaXI9M0RkZXN0X2RpciApLm5hbWUgKQotICAgICAgICBlbGlmIGlzX2ZpbGU6 Ci0gICAgICAgICAgICBhcmNoaXZlX2ZpbGUgPTNEIGFyY2hpdmVfc291cmNlCi0KLSAgICAgICAg IyBVbnBhY2sgYXJjaGl2ZS4KLSAgICAgICAgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVfZmlsZSwg ZGVzdF9kaXIgKQorICAgICAgICBtYWluKG9wdGlvbnMsIGFyZ3MpCiAgICAgZXhjZXB0IEV4Y2Vw dGlvbiwgZToKICAgICAgICAgcHJpbnQgIkVycm9yIHVucGFja2luZyB0YXIvZ3ogYXJjaGl2ZTog JXMiICUgZSwgc3lzLnN0ZGVycgoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2 OTllNzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0 ZSBsaWIvZ2FsYXh5L3V0aWwvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS91dGlsL19faW5p dF9fLnB5CisrKyBiL2xpYi9nYWxheHkvdXRpbC9fX2luaXRfXy5weQpAQCAtMjksNyArMjksNyBA QAo9MjAKIGZyb20gZW1haWwuTUlNRVRleHQgaW1wb3J0IE1JTUVUZXh0Cj0yMAotZnJvbSBvcy5w YXRoIGltcG9ydCByZWxwYXRoCitmcm9tIG9zLnBhdGggaW1wb3J0IHJlbHBhdGgsIG5vcm1wYXRo CiBmcm9tIGhhc2hsaWIgaW1wb3J0IG1kNQogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGl6aXAKPTIw CkBAIC0xMjUyLDYgKzEyNTIsMjIgQEAKICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKGdhbGF4 eV9yb290X3BhdGgpCj0yMAo9MjAKK2RlZiBzYWZlX3JlbHBhdGgocGF0aCk6CisgICAgIiIiCisg ICAgR2l2ZW4gd2hhdCB3ZSBleHBlY3QgdG8gYmUgYSByZWxhdGl2ZSBwYXRoLCBkZXRlcm1pbmUg d2hldGhlciB0aGUgcGF0aAorICAgIHdvdWxkIGV4aXN0IGluc2lkZSB0aGUgY3VycmVudCBkaXJl Y3RvcnkuCisKKyAgICA6dHlwZSAgIHBhdGg6ICAgc3RyaW5nCisgICAgOnBhcmFtICBwYXRoOiAg IGEgcGF0aCB0byBjaGVjaworICAgIDpydHlwZTogICAgICAgICBib29sCisgICAgOnJldHVybnM6 ICAgICAgIGBgVHJ1ZWBgIGlmIHBhdGggaXMgcmVsYXRpdmUgYW5kIGRvZXMgbm90IHJlZmVyZW5j ZSBhID0KcGF0aAorICAgICAgICBpbiBhIHBhcmVudCBkaXJlY3RvcnksIGBgRmFsc2VgYCBvdGhl cndpc2UuCisgICAgIiIiCisgICAgaWYgcGF0aC5zdGFydHN3aXRoKG9zLnNlcCkgb3Igbm9ybXBh dGgocGF0aCkuc3RhcnRzd2l0aChvcy5wYXJkaXIpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAg ICByZXR1cm4gVHJ1ZQorCisKIGNsYXNzIEV4ZWN1dGlvblRpbWVyKG9iamVjdCk6Cj0yMAogICAg IGRlZiBfX2luaXRfXyhzZWxmKToKCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2ZDY4 Njk5ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1MTVi NGUgbGliL2dhbGF4eS92ZXJzaW9uLnB5Ci0tLSBhL2xpYi9nYWxheHkvdmVyc2lvbi5weQorKysg Yi9saWIvZ2FsYXh5L3ZlcnNpb24ucHkKQEAgLTEsMyArMSwzIEBACiBWRVJTSU9OX01BSk9SID0z RCAiMTUuMDUiCi1WRVJTSU9OX01JTk9SID0zRCAiMSIKK1ZFUlNJT05fTUlOT1IgPTNEICIyIgog VkVSU0lPTiA9M0QgVkVSU0lPTl9NQUpPUiArICgnLicgKyBWRVJTSU9OX01JTk9SIGlmIFZFUlNJ T05fTUlOT1IgZWxzZSAnJykKCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2ZDY4Njk5 ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1MTViNGUg bGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvdG9vbHMucHkKLS0tIGEvbGliL2dhbGF4eS93 ZWJhcHBzL2dhbGF4eS9hcGkvdG9vbHMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4 eS9hcGkvdG9vbHMucHkKQEAgLTEwNywxNCArMTA3LDE0IEBACj0yMAogICAgIEBleHBvc2VfYXBp CiAgICAgQHdlYi5yZXF1aXJlX2FkbWluCi0gICAgZGVmIHJlbG9hZCggc2VsZiwgdHJhbnMsIHRv b2xfaWQsICoqa3dkICk6CisgICAgZGVmIHJlbG9hZCggc2VsZiwgdHJhbnMsIGlkLCAqKmt3ZCAp OgogICAgICAgICAiIiIKICAgICAgICAgR0VUIC9hcGkvdG9vbHMve3Rvb2xfaWR9L3JlbG9hZAog ICAgICAgICBSZWxvYWQgc3BlY2lmaWVkIHRvb2wuCiAgICAgICAgICIiIgogICAgICAgICB0b29s Ym94ID0zRCB0cmFucy5hcHAudG9vbGJveAotICAgICAgICBnYWxheHkucXVldWVfd29ya2VyLnNl bmRfY29udHJvbF90YXNrKCB0cmFucywgJ3JlbG9hZF90b29sJywgbm9vcF89CnNlbGY9M0RUcnVl LCBrd2FyZ3M9M0R7ICd0b29sX2lkJzogdG9vbF9pZCB9ICkKLSAgICAgICAgbWVzc2FnZSwgc3Rh dHVzID0zRCB0cmFucy5hcHAudG9vbGJveC5yZWxvYWRfdG9vbF9ieV9pZCggdG9vbF9pZCApCisg ICAgICAgIGdhbGF4eS5xdWV1ZV93b3JrZXIuc2VuZF9jb250cm9sX3Rhc2soIHRyYW5zLCAncmVs b2FkX3Rvb2wnLCBub29wXz0Kc2VsZj0zRFRydWUsIGt3YXJncz0zRHsgJ3Rvb2xfaWQnOiBpZCB9 ICkKKyAgICAgICAgbWVzc2FnZSwgc3RhdHVzID0zRCB0cmFucy5hcHAudG9vbGJveC5yZWxvYWRf dG9vbF9ieV9pZCggaWQgKQogICAgICAgICByZXR1cm4geyBzdGF0dXM6IG1lc3NhZ2UgfQo9MjAK ICAgICBAZXhwb3NlX2FwaQoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTll NzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBs aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2FkbWluX3Rvb2xzaGVkLnB5Ci0t LSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvYWRtaW5fdG9vbHNoZWQu cHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9hZG1pbl90b29s c2hlZC5weQpAQCAtMzgyLDExICszODIsMTEgQEAKPTIwCiAgICAgQHdlYi5qc29uCiAgICAgQHdl Yi5yZXF1aXJlX2FkbWluCi0gICAgZGVmIGdldF9maWxlX2NvbnRlbnRzKCBzZWxmLCB0cmFucywg ZmlsZV9wYXRoICk6CisgICAgZGVmIGdldF9maWxlX2NvbnRlbnRzKCBzZWxmLCB0cmFucywgZmls ZV9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAgICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAg ICB0cmFucy5yZXNwb25zZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAg ICB0cmFucy5yZXNwb25zZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1 cm4gc3VjLmdldF9yZXBvc2l0b3J5X2ZpbGVfY29udGVudHMoIGZpbGVfcGF0aCApCisgICAgICAg IHJldHVybiBzdWMuZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggdHJhbnMuYXBwLCBmaWxl X3BhdGgsIHJlcD0Kb3NpdG9yeV9pZCApCj0yMAogICAgIEB3ZWIuZXhwb3NlCiAgICAgQHdlYi5y ZXF1aXJlX2FkbWluCkBAIC05MTAsMTEgKzkxMCwxMSBAQAo9MjAKICAgICBAd2ViLmpzb24KICAg ICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCBm b2xkZXJfcGF0aCApOgorICAgIGRlZiBvcGVuX2ZvbGRlciggc2VsZiwgdHJhbnMsIGZvbGRlcl9w YXRoLCByZXBvc2l0b3J5X2lkICk6CiAgICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0 cmFucy5yZXNwb25zZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0 cmFucy5yZXNwb25zZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4g c3VjLm9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIGZvbGRlcl9wYXRoICkKKyAgICAgICAg cmV0dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCB0cmFucy5hcHAsIGZvbGRl cl9wYXRoLCByPQplcG9zaXRvcnlfaWQgKQo9MjAKICAgICBAd2ViLmV4cG9zZQogICAgIEB3ZWIu cmVxdWlyZV9hZG1pbgoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcx MzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIv Z2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3JlcXVlc3RzX2FkbWluLnB5Ci0tLSBh L2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvcmVxdWVzdHNfYWRtaW4ucHkK KysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9yZXF1ZXN0c19hZG1p bi5weQpAQCAtNiwxMCArNiw3IEBACiBmcm9tIGdhbGF4eSBpbXBvcnQgbW9kZWwsIHV0aWwKIGZy b20gZ2FsYXh5LndlYi5mb3JtX2J1aWxkZXIgaW1wb3J0ICoKIGZyb20gLnJlcXVlc3RzX2NvbW1v biBpbXBvcnQgUmVxdWVzdHNHcmlkLCBpbnZhbGlkX2lkX3JlZGlyZWN0Ci1mcm9tIGdhbGF4eSBp bXBvcnQgZWdncwotZWdncy5yZXF1aXJlKCJhbXFwIikKLWltcG9ydCBhbXFwCi1pbXBvcnQgbG9n Z2luZywgb3MsIHBleHBlY3QsIENvbmZpZ1BhcnNlcgoraW1wb3J0IGxvZ2dpbmcsIG9zLCBDb25m aWdQYXJzZXIKPTIwCiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMApA QCAtMzUxLDE4MiArMzQ4LDYgQEAKICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRf cmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlPQpxdWVzdHNfYWRtaW4nLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFjdGlvbj0zRCdtYW5hZ2U9Cl9kYXRhc2V0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlX2lkPTNEc2FtcD0KbGVfaWQg KSApCi0gICAgQHdlYi5leHBvc2UKLSAgICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgc2Vs ZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyKCBzZWxmLCB0cmFucywgKiprd2QgKToKLSAgICAgICAg cGFyYW1zID0zRCB1dGlsLlBhcmFtcygga3dkICkKLSAgICAgICAgbWVzc2FnZSA9M0QgdXRpbC5y ZXN0b3JlX3RleHQoIHBhcmFtcy5nZXQoICdtZXNzYWdlJywgJycgKSApCi0gICAgICAgIHN0YXR1 cyA9M0QgcGFyYW1zLmdldCggJ3N0YXR1cycsICdkb25lJyApCi0gICAgICAgIHJlcXVlc3RfaWQg PTNEIGt3ZC5nZXQoICdyZXF1ZXN0X2lkJywgTm9uZSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZp Y2VfaWQgPTNEIGt3ZC5nZXQoICdleHRlcm5hbF9zZXJ2aWNlX2lkJywgTm9uZSApCi0gICAgICAg IGZpbGVzID0zRCBbXQotICAgICAgICByZXF1ZXN0ID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5 KCB0cmFucy5tb2RlbC5SZXF1ZXN0ICkuZ2V0KCB0cmE9Cm5zLnNlY3VyaXR5LmRlY29kZV9pZCgg cmVxdWVzdF9pZCApICkKLSAgICAgICAgZXh0ZXJuYWxfc2VydmljZSA9M0QgdHJhbnMuc2Ffc2Vz c2lvbi5xdWVyeSggdHJhbnMubW9kZWwuRXh0ZXJuYWxTPQplcnZpY2UgKS5nZXQoIHRyYW5zLnNl Y3VyaXR5LmRlY29kZV9pZCggZXh0ZXJuYWxfc2VydmljZV9pZCApICkKLSAgICAgICAgIyBMb2Fk IHRoZSBkYXRhIHRyYW5zZmVyIHNldHRpbmdzCi0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UubG9h ZF9kYXRhX3RyYW5zZmVyX3NldHRpbmdzKCB0cmFucyApCi0gICAgICAgIHNjcF9jb25maWdzID0z RCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4dGVybj0KYWxT ZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgc2VsZWN0ZWRfZGF0 YXNldHNfdG9fdHJhbnNmZXIgPTNEIHV0aWwucmVzdG9yZV90ZXh0KCBwYXJhbXMuZ2V0KCAnPQpz ZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlcicsICcnICkgKQotICAgICAgICBpZiBzZWxlY3Rl ZF9kYXRhc2V0c190b190cmFuc2ZlcjoKLSAgICAgICAgICAgIHNlbGVjdGVkX2RhdGFzZXRzX3Rv X3RyYW5zZmVyID0zRCBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlPQpyLnNwbGl0KCcsJykK LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVy ID0zRCBbXQotICAgICAgICBzYW1wbGVfaWQgPTNEIGt3ZC5nZXQoICdzYW1wbGVfaWQnLCAnbm9u ZScgKQotICAgICAgICBzYW1wbGVfaWRfc2VsZWN0X2ZpZWxkID0zRCBzZWxmLl9fYnVpbGRfc2Ft cGxlX2lkX3NlbGVjdF9maWVsZCggdHI9CmFucywgcmVxdWVzdCwgc2FtcGxlX2lkICkKLSAgICAg ICAgaWYgc2FtcGxlX2lkICE9M0QgJ25vbmUnOgotICAgICAgICAgICAgc2FtcGxlID0zRCB0cmFu cy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2RlbC5TYW1wbGUgKS5nZXQoIHQ9CnJhbnMuc2Vj dXJpdHkuZGVjb2RlX2lkKCBzYW1wbGVfaWQgKSApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg ICBzYW1wbGUgPTNEIE5vbmUKLSAgICAgICAgIyBUaGUgX19nZXRfZmlsZXMoKSBtZXRob2QgcmVk aXJlY3RzIGhlcmUgd2l0aCBhIHN0YXR1cyBvZiAnZXJyb3InPQogYW5kIGEgbWVzc2FnZSBpZiB0 aGVyZQotICAgICAgICAjIHdhcyBhIHByb2JsZW0gcmV0cmlldmluZyB0aGUgZmlsZXMuCi0gICAg ICAgIGlmIHBhcmFtcy5nZXQoICdzZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXJfYnV0dG9uJywg RmFsc2UgKToKLSAgICAgICAgICAgICMgR2V0IHRoZSBzYW1wbGUgdGhhdCB3YXMgc2VxdWVuY2Vk IHRvIHByb2R1Y2UgdGhlc2UgZGF0YXNldHMuCi0gICAgICAgICAgICBpZiBzYW1wbGVfaWQgPTNE PTNEICdub25lJzoKLSAgICAgICAgICAgICAgICBkZWwga3dkWyAnc2VsZWN0X2RhdGFzZXRzX3Rv X3RyYW5zZmVyX2J1dHRvbicgXQotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdTZWxlY3Qg dGhlIHNhbXBsZSB0aGF0IHdhcyBzZXF1ZW5jZWQgdG8gcHJvZHU9CmNlIHRoZSBkYXRhc2V0cyB5 b3Ugd2FudCB0byB0cmFuc2Zlci4nCi0gICAgICAgICAgICAgICAga3dkWyAnbWVzc2FnZScgXSA9 M0QgbWVzc2FnZQotICAgICAgICAgICAgICAgIGt3ZFsgJ3N0YXR1cycgXSA9M0QgJ2Vycm9yJwot ICAgICAgICAgICAgICAgIHJldHVybiB0cmFucy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB3ZWIu dXJsX2ZvciggY29udHJvbGw9CmVyPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlv bj0KPTNEJ3NlbGVjdF9kYXRhc2V0c190b190cmFuc2ZlcicsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3ZCApICkK LSAgICAgICAgICAgIGlmIG5vdCBzYW1wbGUubGlicmFyeToKLSAgICAgICAgICAgICAgICAjIERp c3BsYXkgYW4gZXJyb3IgaWYgYSBzYW1wbGUgaGFzIGJlZW4gc2VsZWN0ZWQgdGhhdAotICAgICAg ICAgICAgICAgICMgaGFzIG5vdCB5ZXQgYmVlbiBhc3NvY2lhdGVkIHdpdGggYSBkZXN0aW5hdGlv biBsaWJyYXJ5LgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdTZWxlY3QgYSB0YXJnZXQg ZGF0YSBsaWJyYXJ5IGFuZCBmb2xkZXIgZm9yIHQ9CmhlIHNhbXBsZSBiZWZvcmUgc2VsZWN0aW5n IHRoZSBkYXRhc2V0cy4nCi0gICAgICAgICAgICAgICAgc3RhdHVzID0zRCAnZXJyb3InCi0gICAg ICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxf Zm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVzdHNfY29tbW9uJywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0K PTNEJ2VkaXRfc2FtcGxlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbnRybGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWlu JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlkPTNEdHJhPQpucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVlc3QuaWQg KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0YXR1cz0KPTNEc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0KPTNEbWVz c2FnZSApICkKLSAgICAgICAgICAgICMgU2F2ZSB0aGUgc2FtcGxlIGRhdGFzZXRzCi0gICAgICAg ICAgICBzYW1wbGVfZGF0YXNldF9maWxlX25hbWVzID0zRCBzZWxmLl9fY3JlYXRlX3NhbXBsZV9k YXRhc2V0cyggdD0KcmFucywgc2FtcGxlLCBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2Zlciwg ZXh0ZXJuYWxfc2VydmljZSApCi0gICAgICAgICAgICBpZiBzYW1wbGVfZGF0YXNldF9maWxlX25h bWVzOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdEYXRhc2V0cyAoJXMpIGhhdmUgYmVl biBzZWxlY3RlZCBmb3Igc2FtcGxlICg9CiVzKScgJSBcCi0gICAgICAgICAgICAgICAgICAgICgg c3RyKCBzYW1wbGVfZGF0YXNldF9maWxlX25hbWVzIClbMTotMV0ucmVwbGFjZSggIiciLD0KICIi ICksIHNhbXBsZS5uYW1lICkKLSAgICAgICAgICAgIHJldHVybiB0cmFucy5yZXNwb25zZS5zZW5k X3JlZGlyZWN0KCB3ZWIudXJsX2ZvciggY29udHJvbGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWluJywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWN0aW9uPTNEJ21hPQpuYWdlX2RhdGFzZXRzJywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9pZD0KPTNE cmVxdWVzdF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2FtcGxlX2lkPTNEPQpzYW1wbGVfaWQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9 M0RtZT0Kc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0YXR1cz0zRHN0YT0KdHVzICkgKQotICAgICAgICByZXR1cm4g dHJhbnMuZmlsbF90ZW1wbGF0ZSggJy9hZG1pbi9yZXF1ZXN0cy9zZWxlY3RfZGF0YXNldHNfdG9f dHI9CmFuc2Zlci5tYWtvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNu dHJsbGVyPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJlcXVlc3Q9M0RyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXh0ZXJuYWxfc2VydmljZT0zRGV4dGVybmFsX3NlcnZpY2UsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzY3BfY29uZmlncz0zRHNjcF9jb25maWdzLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlPTNEc2FtcGxlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlX2lkX3NlbGVjdF9maWVsZD0zRHNhbXBs ZV9pZF9zZWw9CmVjdF9maWVsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0YXR1cz0zRHN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l c3NhZ2U9M0RtZXNzYWdlICkKLSAgICBAd2ViLmpzb24KLSAgICBkZWYgZ2V0X2ZpbGVfZGV0YWls cyggc2VsZiwgdHJhbnMsIHJlcXVlc3RfaWQsIGV4dGVybmFsX3NlcnZpY2VfaWQsIGZvPQpsZGVy X3BhdGggKToKLSAgICAgICAgZGVmIHByaW50X3RpY2tzKCBkICk6Ci0gICAgICAgICAgICAjIHBl eHBlY3QgdGltZW91dCBtZXRob2QKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgIyBBdm9pZCBj YWNoaW5nCi0gICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8t Y2FjaGUnCi0gICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAn Ci0gICAgICAgIHJlcXVlc3QgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVs LlJlcXVlc3QgKS5nZXQoIHRyYT0KbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCByZXF1ZXN0X2lkICkg KQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0 cmFucy5tb2RlbC5FeHRlcm5hbFM9CmVydmljZSApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2Rl X2lkKCBleHRlcm5hbF9zZXJ2aWNlX2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxv YWRfZGF0YV90cmFuc2Zlcl9zZXR0aW5ncyggdHJhbnMgKQotICAgICAgICBzY3BfY29uZmlncyA9 M0QgZXh0ZXJuYWxfc2VydmljZS5kYXRhX3RyYW5zZmVyWyB0cmFucy5tb2RlbC5FeHRlcm49CmFs U2VydmljZS5kYXRhX3RyYW5zZmVyX3Byb3RvY29sLlNDUCBdCi0gICAgICAgIGNtZCAgPTNEICdz c2ggJXNAJXMgImxzIC1vZ2hwIFwnJXNcJyInICUgKCBzY3BfY29uZmlnc1sgJ3VzZXJfbmFtZT0K JyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj cF9jb25maWdzWyAnaG9zdCcgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmb2xkZXJfcGF0aCApCi0gICAgICAgICMgSGFuZGxlIHRoZSBhdXRoZW50 aWNhdGlvbiBtZXNzYWdlIGlmIHNzaCBrZXlzIGFyZSBub3Qgc2V0IC0gdGhlID0KbWVzc2FnZSBp cwotICAgICAgICAjIHNvbWV0aGluZyBsaWtlOiAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNv bnRpbnVlIGNvbm5lY3RpbmcgKHk9CmVzL25vKS4iCi0gICAgICAgIG91dHB1dCA9M0QgcGV4cGVj dC5ydW4oIGNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsgJ1wo eWVzXC9ub1wpXC4qJyA6ICd5ZXNcclxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICcuc3N3b3JkOionIDogc2NwX2NvbmZpZ3NbICdwYXNzd29yPQpkJyBdICsgJ1xy XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cGVjdC5USU1F T1VUIDogcHJpbnRfdGlja3MgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVv dXQ9M0QxMCApCi0gICAgICAgIGZvciBwYXNzd29yZF9zdHIgaW4gWyAnUGFzc3dvcmQ6XHJcbics ICdwYXNzd29yZDpcclxuJyBdOgotICAgICAgICAgICAgIyBFbGltaW5hdGUgdGhlIG91dHB1dCBj cmVhdGVkIHVzaW5nIHNzaCBmcm9tIHRoZSB0cmVlCi0gICAgICAgICAgICBpZiBwYXNzd29yZF9z dHIgaW4gb3V0cHV0OgotICAgICAgICAgICAgICAgIG91dHB1dCA9M0Qgb3V0cHV0LnJlcGxhY2Uo IHBhc3N3b3JkX3N0ciwgJycgKQotICAgICAgICByZXR1cm4gdW5pY29kZSggb3V0cHV0LnJlcGxh Y2UoICdcclxuJywgJzxici8+JyApICkKLSAgICBAd2ViLmpzb24KLSAgICBkZWYgb3Blbl9mb2xk ZXIoIHNlbGYsIHRyYW5zLCByZXF1ZXN0X2lkLCBleHRlcm5hbF9zZXJ2aWNlX2lkLCBrZXkgKToK LSAgICAgICAgIyBBdm9pZCBjYWNoaW5nCi0gICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNb J1ByYWdtYSddID0zRCAnbm8tY2FjaGUnCi0gICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNb J0V4cGlyZXMnXSA9M0QgJzAnCi0gICAgICAgIHJlcXVlc3QgPTNEIHRyYW5zLnNhX3Nlc3Npb24u cXVlcnkoIHRyYW5zLm1vZGVsLlJlcXVlc3QgKS5nZXQoIHRyYT0KbnMuc2VjdXJpdHkuZGVjb2Rl X2lkKCByZXF1ZXN0X2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5z YV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2RlbC5FeHRlcm5hbFM9CmVydmljZSApLmdldCggdHJh bnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBleHRlcm5hbF9zZXJ2aWNlX2lkICkgKQotICAgICAgICBm b2xkZXJfcGF0aCA9M0Qga2V5Ci0gICAgICAgIGZpbGVzX2xpc3QgPTNEIHNlbGYuX19nZXRfZmls ZXMoIHRyYW5zLCByZXF1ZXN0LCBleHRlcm5hbF9zZXJ2aWNlLD0KIGZvbGRlcl9wYXRoICkKLSAg ICAgICAgZm9sZGVyX2NvbnRlbnRzID0zRCBbXQotICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmls ZXNfbGlzdDoKLSAgICAgICAgICAgIGlzX2ZvbGRlciA9M0QgRmFsc2UKLSAgICAgICAgICAgIGlm IGZpbGVuYW1lIGFuZCBmaWxlbmFtZVstMV0gPTNEPTNEIG9zLnNlcDoKLSAgICAgICAgICAgICAg ICBpc19mb2xkZXIgPTNEIFRydWUKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lOgotICAgICAgICAg ICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUg KQotICAgICAgICAgICAgICAgIG5vZGUgPTNEIHsgInRpdGxlIjogZmlsZW5hbWUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgImlzRm9sZGVyIjogaXNfZm9sZGVyLAotICAgICAgICAgICAgICAg ICAgICAgICAgICJpc0xhenkiOiBpc19mb2xkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg InRvb2x0aXAiOiBmdWxsX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImtleSI6IGZ1 bGxfcGF0aCB9Ci0gICAgICAgICAgICAgICAgZm9sZGVyX2NvbnRlbnRzLmFwcGVuZCggbm9kZSAp Ci0gICAgICAgIHJldHVybiBmb2xkZXJfY29udGVudHMKLSAgICBkZWYgX19nZXRfZmlsZXMoIHNl bGYsIHRyYW5zLCByZXF1ZXN0LCBleHRlcm5hbF9zZXJ2aWNlLCBmb2xkZXJfcGF0aCApOgotICAg ICAgICAjIFJldHJpZXZlcyB0aGUgZmlsZW5hbWVzIHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhl IHJlbW90ZSBob3N0LgotICAgICAgICBvayA9M0QgVHJ1ZQotICAgICAgICBleHRlcm5hbF9zZXJ2 aWNlLmxvYWRfZGF0YV90cmFuc2Zlcl9zZXR0aW5ncyggdHJhbnMgKQotICAgICAgICBzY3BfY29u ZmlncyA9M0QgZXh0ZXJuYWxfc2VydmljZS5kYXRhX3RyYW5zZmVyWyB0cmFucy5tb2RlbC5FeHRl cm49CmFsU2VydmljZS5kYXRhX3RyYW5zZmVyX3Byb3RvY29sLlNDUCBdCi0gICAgICAgIGlmIG5v dCBzY3BfY29uZmlnc1sgJ2hvc3QnIF0gb3Igbm90IHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBd IG9yID0Kbm90IHNjcF9jb25maWdzWyAncGFzc3dvcmQnIF06Ci0gICAgICAgICAgICBzdGF0dXMg PTNEICdlcnJvcicKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJFcnJvciBpbiBleHRlcm5hbCBz ZXJ2aWNlIGxvZ2luIGluZm9ybWF0aW9uLiIKLSAgICAgICAgICAgIG9rID0zRCBGYWxzZQotICAg ICAgICBkZWYgcHJpbnRfdGlja3MoIGQgKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgY21k ICA9M0QgJ3NzaCAlc0AlcyAibHMgLXAgXCclc1wnIicgJSAoIHNjcF9jb25maWdzWyAndXNlcl9u YW1lJyBdPQosIHNjcF9jb25maWdzWyAnaG9zdCcgXSwgZm9sZGVyX3BhdGggKQotICAgICAgICAj IEhhbmRsZSB0aGUgYXV0aGVudGljYXRpb24gbWVzc2FnZSBpZiBrZXlzIGFyZSBub3Qgc2V0IC0g dGhlIG1lc3M9CmFnZSBpcwotICAgICAgICAjIHNvbWV0aGluZyBsaWtlOiAiQXJlIHlvdSBzdXJl IHlvdSB3YW50IHRvIGNvbnRpbnVlIGNvbm5lY3RpbmcgKHk9CmVzL25vKS4iCi0gICAgICAgIG91 dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGV2ZW50cz0zRHsgJ1woeWVzXC9ub1wpXC4qJyA6ICd5ZXNcclxuJywKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJy5zc3dvcmQ6KicgOiBzY3BfY29uZmlnc1sgJ3Bhc3N3 b3JkPQonIF0gKyAnXHJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZXhwZWN0LlRJTUVPVVQgOiBwcmludF90aWNrcyB9LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGltZW91dD0zRDEwICkKLSAgICAgICAgaWYgJ05vIHN1Y2ggZmlsZSBvciBkaXJl Y3RvcnknIGluIG91dHB1dDoKLSAgICAgICAgICAgIHN0YXR1cyA9M0QgJ2Vycm9yJwotICAgICAg ICAgICAgbWVzc2FnZSA9M0QgIk5vIGZvbGRlciBuYW1lZCAoJXMpIGV4aXN0cyBvbiB0aGUgZXh0 ZXJuYWwgc2Vydmk9CmNlLiIgJSBmb2xkZXJfcGF0aAotICAgICAgICAgICAgb2sgPTNEIEZhbHNl Ci0gICAgICAgIGlmIG9rOgotICAgICAgICAgICAgaWYgJ2Fzc3dvcmQ6JyBpbiBvdXRwdXQ6Ci0g ICAgICAgICAgICAgICAgIyBFbGltaW5hdGUgdGhlIG91dHB1dCBjcmVhdGVkIHVzaW5nIHNzaCBm cm9tIHRoZSB0cmVlCi0gICAgICAgICAgICAgICAgb3V0cHV0X2FzX2xpc3QgPTNEIG91dHB1dC5z cGxpdGxpbmVzKClbIDE6IF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3V0 cHV0X2FzX2xpc3QgPTNEIG91dHB1dC5zcGxpdGxpbmVzKCkKLSAgICAgICAgICAgIHJldHVybiBv dXRwdXRfYXNfbGlzdAotICAgICAgICByZXR1cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVj dCggd2ViLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmU9CnF1ZXN0c19hZG1pbicsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u PTNEJ3NlbGVjdD0KX2RhdGFzZXRzX3RvX3RyYW5zZmVyJywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2lkPTNEdHJhPQpu cy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVlc3QuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlPQpf aWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2UuaWQgKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dGF0dXM9M0RzdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbWVzc2FnZT0zRG1lc3NhZz0KZSApICkKLSAgICBkZWYgX19jcmVh dGVfc2FtcGxlX2RhdGFzZXRzKCBzZWxmLCB0cmFucywgc2FtcGxlLCBzZWxlY3RlZF9kYXRhc2V0 c190PQpvX3RyYW5zZmVyLCBleHRlcm5hbF9zZXJ2aWNlICk6Ci0gICAgICAgIGV4dGVybmFsX3Nl cnZpY2UubG9hZF9kYXRhX3RyYW5zZmVyX3NldHRpbmdzKCB0cmFucyApCi0gICAgICAgIHNjcF9j b25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4 dGVybj0KYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgc2Ft cGxlX2RhdGFzZXRfZmlsZV9uYW1lcyA9M0QgW10KLSAgICAgICAgaWYgc2VsZWN0ZWRfZGF0YXNl dHNfdG9fdHJhbnNmZXI6Ci0gICAgICAgICAgICBmb3IgZmlsZXBhdGggaW4gc2VsZWN0ZWRfZGF0 YXNldHNfdG9fdHJhbnNmZXI6Ci0gICAgICAgICAgICAgICAgIyBGSVhNRTogaGFuZGxlIGZvbGRl ciBzZWxlY3Rpb24gLSBpZ25vcmUgZm9sZGVycyBmb3Igbm93Ci0gICAgICAgICAgICAgICAgaWYg ZmlsZXBhdGhbLTFdICE9M0Qgb3Muc2VwOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0zRCBz ZWxmLl9fcmVuYW1lX2RhdGFzZXQoIHNhbXBsZSwgZmlsZXBhdGguc3BsaXQ9CiggJy8nIClbLTFd LCBzY3BfY29uZmlncyApCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9M0QgdHJhbnMuYXBw Lm1vZGVsLlNhbXBsZURhdGFzZXQudHJhbnNmZXJfc3RhdD0KdXMuTk9UX1NUQVJURUQKLSAgICAg ICAgICAgICAgICAgICAgc2l6ZSA9M0Qgc2FtcGxlLmdldF91bnRyYW5zZmVycmVkX2RhdGFzZXRf c2l6ZSggZmlsZXBhPQp0aCwgc2NwX2NvbmZpZ3MgKQotICAgICAgICAgICAgICAgICAgICBzYW1w bGVfZGF0YXNldCA9M0QgdHJhbnMubW9kZWwuU2FtcGxlRGF0YXNldCggc2FtcGxlPQo9M0RzYW1w bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmlsZV9wYXRoPQo9M0RmaWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzPQp0 YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuYW1lPTNEbmFtPQplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21zZz0KPTNEJycsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZT0zRHNpej0KZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9zPQplcnZpY2U9M0RleHRlcm5h bF9zZXJ2aWNlICkKLSAgICAgICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHNh bXBsZV9kYXRhc2V0ICkKLSAgICAgICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVz aCgpCi0gICAgICAgICAgICAgICAgICAgIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMuYXBwZW5k KCBzdHIoIHNhbXBsZV9kYXRhc2V0Lj0KbmFtZSApICkKLSAgICAgICAgcmV0dXJuIHNhbXBsZV9k YXRhc2V0X2ZpbGVfbmFtZXMKICAgICBkZWYgX19yZW5hbWVfZGF0YXNldCggc2VsZiwgc2FtcGxl LCBmaWxlcGF0aCwgc2NwX2NvbmZpZ3MgKToKICAgICAgICAgbmFtZSA9M0QgZmlsZXBhdGguc3Bs aXQoICcvJyApWy0xXQogICAgICAgICBvcHRpb25zID0zRCBzYW1wbGUucmVxdWVzdC50eXBlLnJl bmFtZV9kYXRhc2V0X29wdGlvbnMKQEAgLTU2MSw5MCArMzgyLDYgQEAKICAgICAgICAgICAgIGZs dXNoX25lZWRlZCA9M0QgVHJ1ZQogICAgICAgICBpZiBmbHVzaF9uZWVkZWQ6CiAgICAgICAgICAg ICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKLSAgICBkZWYgX19jcmVhdGVfZGF0YV90cmFuc2Zl cl9tZXNzYWdlcyggc2VsZiwgdHJhbnMsIHNhbXBsZSwgc2VsZWN0ZWRfc2FtPQpwbGVfZGF0YXNl dHMgKToKLSAgICAgICAgIiIiCi0gICAgICAgIENyZWF0ZXMgdGhlIHhtbCBtZXNzYWdlcyB0byBz ZW5kIHRvIHRoZSByYWJiaXRtcSBzZXJ2ZXIuIEl0IHJldHVybj0KcyBhIGRpY3Rpb25hcnkgb2Yg bWVzc2FnZXMKLSAgICAgICAga2V5ZWQgYnkgdGhlIGV4dGVybmFsIHNlcnZpY2UgdXNlZCB0byB0 cmFuc2ZlciB0aGUgZGF0YXNldHMKLSAgICAgICAgIiIiCi0gICAgICAgICMgQ3JlYXRlIHRoZSB4 bWwgbWVzc2FnZSBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIHRlbXBsYXRlCi0gICAgICAgIHhtbCA9 M0QgXAotICAgICAgICAgICAgJycnIDxkYXRhX3RyYW5zZmVyPgotICAgICAgICAgICAgICAgICAg ICA8Z2FsYXh5X2hvc3Q+JShHQUxBWFlfSE9TVClzPC9nYWxheHlfaG9zdD4KLSAgICAgICAgICAg ICAgICAgICAgPGFwaV9rZXk+JShBUElfS0VZKXM8L2FwaV9rZXk+Ci0gICAgICAgICAgICAgICAg ICAgIDxkYXRhX2hvc3Q+JShEQVRBX0hPU1QpczwvZGF0YV9ob3N0PgotICAgICAgICAgICAgICAg ICAgICA8ZGF0YV91c2VyPiUoREFUQV9VU0VSKXM8L2RhdGFfdXNlcj4KLSAgICAgICAgICAgICAg ICAgICAgPGRhdGFfcGFzc3dvcmQ+JShEQVRBX1BBU1NXT1JEKXM8L2RhdGFfcGFzc3dvcmQ+Ci0g ICAgICAgICAgICAgICAgICAgIDxyZXF1ZXN0X2lkPiUoUkVRVUVTVF9JRClzPC9yZXF1ZXN0X2lk PgotICAgICAgICAgICAgICAgICAgICA8c2FtcGxlX2lkPiUoU0FNUExFX0lEKXM8L3NhbXBsZV9p ZD4KLSAgICAgICAgICAgICAgICAgICAgPGxpYnJhcnlfaWQ+JShMSUJSQVJZX0lEKXM8L2xpYnJh cnlfaWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxmb2xkZXJfaWQ+JShGT0xERVJfSUQpczwvZm9s ZGVyX2lkPgotICAgICAgICAgICAgICAgICAgICAlKERBVEFTRVRTKXMKLSAgICAgICAgICAgICAg ICA8L2RhdGFfdHJhbnNmZXI+JycnCi0gICAgICAgIGRhdGFzZXRfeG1sID0zRCBcCi0gICAgICAg ICAgICAnJyc8ZGF0YXNldD4KLSAgICAgICAgICAgICAgICAgICA8ZGF0YXNldF9pZD4lKElEKXM8 L2RhdGFzZXRfaWQ+Ci0gICAgICAgICAgICAgICAgICAgPG5hbWU+JShOQU1FKXM8L25hbWU+Ci0g ICAgICAgICAgICAgICAgICAgPGZpbGU+JShGSUxFKXM8L2ZpbGU+Ci0gICAgICAgICAgICAgICA8 L2RhdGFzZXQ+JycnCi0gICAgICAgICMgSGVyZSB3ZSBncm91cCBhbGwgdGhlIHNhbXBsZV9kYXRh c2V0cyBieSB0aGUgZXh0ZXJuYWwgc2VydmljZSB1cz0KZWQgdG8gdHJhbnNmZXIgdGhlbS4KLSAg ICAgICAgIyBUaGUgaWRlYSBpcyB0byBidW5kbGUgdXAgdGhlIHNhbXBsZV9kYXRhc2V0cyB3aGlj aCB1c2VzIHRoZSBzYW1lPQogZXh0ZXJuYWwgc2VydmljZSBhbmQKLSAgICAgICAgIyBzZW5kIGEg c2luZ2xlIEFNUVAgbWVzc2FnZSB0byB0aGUgZ2FsYXh5X2xpc3RlbmVyCi0gICAgICAgIGRhdGFz ZXRfZWxlbWVudHMgPTNEIHt9Ci0gICAgICAgIGZvciBzYW1wbGVfZGF0YXNldCBpbiBzZWxlY3Rl ZF9zYW1wbGVfZGF0YXNldHM6Ci0gICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCBzYW1w bGVfZGF0YXNldC5leHRlcm5hbF9zZXJ2aWNlCi0gICAgICAgICAgICBpZiBzYW1wbGVfZGF0YXNl dC5zdGF0dXMgPTNEPTNEIHRyYW5zLmFwcC5tb2RlbC5TYW1wbGVEYXRhc2V0Lj0KdHJhbnNmZXJf c3RhdHVzLk5PVF9TVEFSVEVEOgotICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhc2V0X2VsZW1l bnRzLmhhc19rZXkoIGV4dGVybmFsX3NlcnZpY2UgKToKLSAgICAgICAgICAgICAgICAgICAgZGF0 YXNldF9lbGVtZW50c1sgZXh0ZXJuYWxfc2VydmljZSBdID0zRCAnJwotICAgICAgICAgICAgICAg IGRhdGFzZXRfZWxlbWVudHNbIGV4dGVybmFsX3NlcnZpY2UgXSArPTNEIGRhdGFzZXRfeG1sICUg ZGk9CmN0KCBJRD0zRHN0ciggc2FtcGxlX2RhdGFzZXQuaWQgKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1F PQo9M0RzYW1wbGVfZGF0YXNldC5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEU9Cj0zRHNhbXBsZV9k YXRhc2V0LmZpbGVfcGF0aCApCi0gICAgICAgICAgICAgICAgIyB1cGRhdGUgdGhlIGRhdGFzZXQg dHJhbnNmZXIgc3RhdHVzCi0gICAgICAgICAgICAgICAgc2FtcGxlX2RhdGFzZXQuc3RhdHVzID0z RCB0cmFucy5hcHAubW9kZWwuU2FtcGxlRGF0YXNldC50cj0KYW5zZmVyX3N0YXR1cy5JTl9RVUVV RQotICAgICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBzYW1wbGVfZGF0YXNldCAp Ci0gICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICMgRmlu YWxseSBwcmVwZW5kIHRoZSBleHRlcm5hbCBzZXJ2aWNlIGluZm8gdG8gdGhlIHNldHMgb2Ygc2Ft cGxlID0KZGF0YXNldHMKLSAgICAgICAgbWVzc2FnZXMgPTNEIFtdCi0gICAgICAgIGZvciBleHRl cm5hbF9zZXJ2aWNlLCBkYXRhc2V0X2VsZW0gaW4gZGF0YXNldF9lbGVtZW50cy5pdGVtcygpOgot ICAgICAgICAgICAgZXh0ZXJuYWxfc2VydmljZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3Mo IHRyYW5zICkKLSAgICAgICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRh dGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4PQp0ZXJuYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJf cHJvdG9jb2wuU0NQIF0KLSAgICAgICAgICAgICMgQ2hlY2sgZGF0YSB0cmFuc2ZlciBzZXR0aW5n cwotICAgICAgICAgICAgZXJyX21zZyA9M0Qgc2VsZi5fX3ZhbGlkYXRlX2RhdGFfdHJhbnNmZXJf c2V0dGluZ3MoIHRyYW5zLCBzYW09CnBsZS5yZXF1ZXN0LnR5cGUsIHNjcF9jb25maWdzICkKLSAg ICAgICAgICAgIGlmIGVycl9tc2c6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3Bv bnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVzdHNf YWRtaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWN0aW9uPQo9M0QnbWFuYWdlX2RhdGFzZXRzJywKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNhbXBsZV9pPQpkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0YXR1cz0KPTNEJ2Vycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Cj0zRGVycl9tc2cg KSApCi0gICAgICAgICAgICBtZXNzYWdlID0zRCB4bWwgJSBkaWN0KCBHQUxBWFlfSE9TVD0zRHRy YW5zLnJlcXVlc3QuaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUElf S0VZPTNEdHJhbnMudXNlci5hcGlfa2V5c1swXS5rZXksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgREFUQV9IT1NUPTNEc2NwX2NvbmZpZ3NbICdob3N0JyBdLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERBVEFfVVNFUj0zRHNjcF9jb25maWdzWyAndXNlcl9u YW1lJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEFfUEFTU1dPUkQ9 M0RzY3BfY29uZmlnc1sgJ3Bhc3N3b3JkJyA9Cl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUkVRVUVTVF9JRD0zRHN0ciggc2FtcGxlLnJlcXVlc3QuaWQgKSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTQU1QTEVfSUQ9M0RzdHIoIHNhbXBsZS5pZCApLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlJBUllfSUQ9M0RzdHIoIHNhbXBs ZS5saWJyYXJ5LmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9MREVS X0lEPTNEc3RyKCBzYW1wbGUuZm9sZGVyLmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgREFUQVNFVFM9M0RkYXRhc2V0X2VsZW0gKQotICAgICAgICAgICAgbWVzc2FnZXMu YXBwZW5kKCBtZXNzYWdlLnJlcGxhY2UoICdcbicsICcnICkucmVwbGFjZSggJ1xyJywgJyc9CiAp ICkKLSAgICAgICAgcmV0dXJuIG1lc3NhZ2VzCi0gICAgZGVmIF9fdmFsaWRhdGVfZGF0YV90cmFu c2Zlcl9zZXR0aW5ncyggc2VsZiwgdHJhbnMsIHJlcXVlc3RfdHlwZSwgc2NwXz0KY29uZmlncyAp OgotICAgICAgICBlcnJfbXNnID0zRCAnJwotICAgICAgICAjIGNoZWNrIHRoZSBleHRlcm5hbCBz ZXJ2aWNlIGxvZ2luIGluZm8KLSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzLmdldCggJ2hvc3Qn LCAnJyApIFwKLSAgICAgICAgICAgIG9yIG5vdCBzY3BfY29uZmlncy5nZXQoICd1c2VyX25hbWUn LCAnJyApIFwKLSAgICAgICAgICAgIG9yIG5vdCBzY3BfY29uZmlncy5nZXQoICdwYXNzd29yZCcs ICcnICk6Ci0gICAgICAgICAgICBlcnJfbXNnICs9M0QgIkVycm9yIGluIGV4dGVybmFsIHNlcnZp Y2UgbG9naW4gaW5mb3JtYXRpb24uICIKLSAgICAgICAgaWYgbm90IHRyYW5zLnVzZXIuYXBpX2tl eXM6Ci0gICAgICAgICAgICBlcnJfbXNnICs9M0QgIlNldCB5b3VyIEFQSSBLZXkgaW4geW91ciBV c2VyIFByZWZlcmVuY2VzIHRvIHRyYT0KbnNmZXIgZGF0YXNldHMuICIKLSAgICAgICAgIyBDaGVj ayBpZiBsaWJyYXJ5X2ltcG9ydF9kaXIgaXMgc2V0Ci0gICAgICAgIGlmIG5vdCB0cmFucy5hcHAu Y29uZmlnLmxpYnJhcnlfaW1wb3J0X2RpcjoKLSAgICAgICAgICAgIGVycl9tc2cgPTNEICInVGhl IGxpYnJhcnlfaW1wb3J0X2Rpcicgc2V0dGluZyBpcyBub3QgY29ycmVjdGx5PQogc2V0IGluIHRo ZSBHYWxheHkgY29uZmlnIGZpbGUuICIKLSAgICAgICAgIyBDaGVjayB0aGUgUmFiYml0TVEgc2Vy dmVyIHNldHRpbmdzIGluIHRoZSBjb25maWcgZmlsZQotICAgICAgICBmb3IgaywgdiBpbiB0cmFu cy5hcHAuY29uZmlnLmFtcXAuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIG5vdCB2OgotICAgICAg ICAgICAgICAgIGVycl9tc2cgKz0zRCAnU2V0IFJhYmJpdE1RIHNlcnZlciBzZXR0aW5ncyBpbiB0 aGUgImdhbGF4eV89CmFtcXAiIHNlY3Rpb24gb2YgdGhlIEdhbGF4eSBjb25maWcgZmlsZSwgc3Bl Y2lmaWNhbGx5ICIlcyIgaXMgbm90IHNldC4nICUgawotICAgICAgICAgICAgICAgIGJyZWFrCi0g ICAgICAgIHJldHVybiBlcnJfbXNnCiAgICAgQHdlYi5leHBvc2UKICAgICBAd2ViLnJlcXVpcmVf YWRtaW4KICAgICBkZWYgaW5pdGlhdGVfZGF0YV90cmFuc2Zlciggc2VsZiwgdHJhbnMsIHNhbXBs ZV9pZCwgc2FtcGxlX2RhdGFzZXRzPTNEPQpbXSwgc2FtcGxlX2RhdGFzZXRfaWQ9M0QnJyApOgpA QCAtNjg2LDM1ICs0MjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAgICAgICAgICAg IGV4dGVybmFsX3NlcnZpY2U9M0RleHRlcm5hbF9zZXJ2aWNlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9 CiAgICAgICAgICAgICAgICAgIGV4dGVybmFsX3NlcnZpY2VfdHlwZT0zRGV4dGVybmFsX3NlcnZp Y2VfdHlwZSApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFRPRE86IFVzaW5nIFJhYmJp dE1xIGZvciBub3csIGJ1dCBlbGltaW5hdGUgdGhpcyBlbnRpcmUgYmxvYz0KayB3aGVuIHdlIHJl cGxhY2UgUmFiYml0TXEgd2l0aCBHYWxheHkncwotICAgICAgICAgICAgIyBvd24gbWVzc2FnaW5n IGVuZ2luZS4gIFdlJ3JlIGhvbGRpbmcgb2ZmIG9uIHVzaW5nIHRoZSBuZXcgd2E9CnkgdG8gdHJh bnNmZXIgZmlsZXMgbWFudWFsbHkgdW50aWwgd2UKLSAgICAgICAgICAgICMgaW1wbGVtZW50IGEg R2FsYXh5LXByb3ByaWV0YXJ5IG1lc3NhZ2luZyBlbmdpbmUgYmVjYXVzZSB0aGUgPQpkZWZlcnJl ZCBqb2IgcGx1Z2lucyBjdXJyZW50bHkgcGVyZm9ybQotICAgICAgICAgICAgIyBjb25zdGFudCBk YiBoaXRzIHRvIGNoZWNrIGZvciBkZWZlcnJlZCBqb2JzIHRoYXQgYXJlIG5vdCBpbiA9CmEgZmlu aXNoZWQgc3RhdGUuCi0gICAgICAgICAgICAjIENyZWF0ZSB0aGUgbWVzc2FnZQotICAgICAgICAg ICAgbWVzc2FnZXMgPTNEIHNlbGYuX19jcmVhdGVfZGF0YV90cmFuc2Zlcl9tZXNzYWdlcyggdHJh bnMsIHNhbXA9CmxlLCBzYW1wbGVfZGF0YXNldHMgKQotICAgICAgICAgICAgIyBTZW5kIHRoZSBt ZXNzYWdlcwotICAgICAgICAgICAgZm9yIHJtcV9tc2cgaW4gbWVzc2FnZXM6Ci0gICAgICAgICAg ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjb25uID0zRCBhbXFwLkNvbm5lY3Rpb24o IGhvc3Q9M0R0cmFucy5hcHAuY29uZmlnLmFtcXA9ClsgJ2hvc3QnIF0gKyAiOiIgKyB0cmFucy5h cHAuY29uZmlnLmFtcXBbICdwb3J0JyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1c2VyaWQ9M0R0cmFucy5hcHAuY29uZmlnLmFtcXA9ClsgJ3VzZXJpZCcg XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9 M0R0cmFucy5hcHAuY29uZmlnLmFtPQpxcFsgJ3Bhc3N3b3JkJyBdLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsX2hvc3Q9M0R0cmFucy5hcHAuY29u Zmk9CmcuYW1xcFsgJ3ZpcnR1YWxfaG9zdCcgXSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbiA9 M0QgY29ubi5jaGFubmVsKCkKLSAgICAgICAgICAgICAgICAgICAgbXNnID0zRCBhbXFwLk1lc3Nh Z2UoIHJtcV9tc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u dGVudF90eXBlPTNEJ3RleHQvcGxhaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFwcGxpY2F0aW9uX2hlYWRlcnM9M0R7ICdtc2dfdHlwZSc9CjogJ2RhdGFfdHJh bnNmZXInIH0gKQotICAgICAgICAgICAgICAgICAgICBtc2cucHJvcGVydGllc1sgImRlbGl2ZXJ5 X21vZGUiIF0gPTNEIDIKLSAgICAgICAgICAgICAgICAgICAgY2hhbi5iYXNpY19wdWJsaXNoKCBt c2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2U9M0R0 cmFucy5hcHAuY29uZmlnLmFtcXBbID0KJ2V4Y2hhbmdlJyBdLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJvdXRpbmdfa2V5PTNEdHJhbnMuYXBwLmNvbmZpZy5hbXE9 CnBbICdyb3V0aW5nX2tleScgXSApCi0gICAgICAgICAgICAgICAgICAgIGNoYW4uY2xvc2UoKQot ICAgICAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQg RXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAiRXJyb3Igc2Vu ZGluZyB0aGUgZGF0YSB0cmFuc2ZlciBtZXNzYWdlIHQ9Cm8gdGhlIEdhbGF4eSBBTVFQIG1lc3Nh Z2UgcXVldWU6PGJyLz4lcyIgJSBzdHIoZSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0z RCAiZXJyb3IiCi0gICAgICAgICAgICBpZiBub3QgbWVzc2FnZToKLSAgICAgICAgICAgICAgICBt ZXNzYWdlID0zRCAiJWkgZGF0YXNldHMgaGF2ZSBiZWVuIHF1ZXVlZCBmb3IgdHJhbnNmZXIgZnJv PQptIHRoZSBleHRlcm5hbCBzZXJ2aWNlLiIgJSBsZW4oIHNhbXBsZV9kYXRhc2V0cyApCi0gICAg ICAgICAgICAgICAgc3RhdHVzID0zRCAiZG9uZSIKKyAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJN ZXNzYWdlIHF1ZXVlIHRyYW5zZmVyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQsIHBsPQplYXNlIHNl dCBlbmFibGVfYmV0YV9qb2JfbWFuYWdlcnMgPTNEIFRydWUgaW4gZ2FsYXh5LmluaSIKKyAgICAg ICAgICAgIHN0YXR1cyA9M0QgImVycm9yIgogICAgICAgICByZXR1cm4gdHJhbnMucmVzcG9uc2Uu c2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmU9CnF1ZXN0c19hZG1p bicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWN0aW9uPTNEJ21hbmFnZT0KX2RhdGFzZXRzJywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWQ9M0R0cmFuPQpz LnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxlLmlkICksCgpkaWZmIC1yIDIwZDVhMjFhZGQ5YWI0 NWQ5YzRjNWMyNmQ2ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0ZThhNjQwOTM9CmYz ZmM0YzQzNzBmNTE1YjRlIGxpYi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQvY29udHJvbGxlcnMv cmVwb3NpdG9yeS5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL2NvbnRyb2xs ZXJzL3JlcG9zaXRvcnkucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9jb250 cm9sbGVycy9yZXBvc2l0b3J5LnB5CkBAIC0xNjM1LDExICsxNjM1LDExIEBACiAgICAgICAgIHJl dHVybiAnJwo9MjAKICAgICBAd2ViLmpzb24KLSAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNl bGYsIHRyYW5zLCBmaWxlX3BhdGggKToKKyAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNlbGYs IHRyYW5zLCBmaWxlX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAgICAgIyBBdm9pZCBjYWNo aW5nCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2Fj aGUnCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0g ICAgICAgIHJldHVybiBzdWMuZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggZmlsZV9wYXRo ICkKKyAgICAgICAgcmV0dXJuIHN1Yy5nZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCB0cmFu cy5hcHAsIGZpbGVfcGF0aCwgcmVwPQpvc2l0b3J5X2lkICkKPTIwCiAgICAgQHdlYi5leHBvc2UK ICAgICBkZWYgZ2V0X2Z1bmN0aW9uYWxfdGVzdF9yc3MoIHNlbGYsIHRyYW5zLCAqKmt3ZCApOgpA QCAtMjU4OSwxMSArMjU4OSwxMSBAQAogICAgICAgICByZXR1cm4gJycKPTIwCiAgICAgQHdlYi5q c29uCi0gICAgZGVmIG9wZW5fZm9sZGVyKCBzZWxmLCB0cmFucywgZm9sZGVyX3BhdGggKToKKyAg ICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCBmb2xkZXJfcGF0aCwgcmVwb3NpdG9yeV9p ZCApOgogICAgICAgICAjIEF2b2lkIGNhY2hpbmcKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVh ZGVyc1snUHJhZ21hJ10gPTNEICduby1jYWNoZScKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVh ZGVyc1snRXhwaXJlcyddID0zRCAnMCcKLSAgICAgICAgcmV0dXJuIHN1Yy5vcGVuX3JlcG9zaXRv cnlfZmlsZXNfZm9sZGVyKCBmb2xkZXJfcGF0aCApCisgICAgICAgIHJldHVybiBzdWMub3Blbl9y ZXBvc2l0b3J5X2ZpbGVzX2ZvbGRlciggdHJhbnMuYXBwLCBmb2xkZXJfcGF0aCwgcj0KZXBvc2l0 b3J5X2lkICkKPTIwCiAgICAgQHdlYi5leHBvc2UKICAgICBkZWYgcHJldmlld190b29sc19pbl9j aGFuZ2VzZXQoIHNlbGYsIHRyYW5zLCByZXBvc2l0b3J5X2lkLCAqKmt3ZCApOgoKZGlmZiAtciAy MGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFj NGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVk L2ZyYW1ld29yay9taWRkbGV3YXJlL2hnLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy90b29s X3NoZWQvZnJhbWV3b3JrL21pZGRsZXdhcmUvaGcucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBz L3Rvb2xfc2hlZC9mcmFtZXdvcmsvbWlkZGxld2FyZS9oZy5weQpAQCAtOSw3ICs5LDcgQEAKIGZy b20gcGFzdGUuaHR0cGhlYWRlcnMgaW1wb3J0IEFVVEhfVFlQRQogZnJvbSBwYXN0ZS5odHRwaGVh ZGVycyBpbXBvcnQgUkVNT1RFX1VTRVIKPTIwCi1mcm9tIGdhbGF4eS51dGlsIGltcG9ydCBhc2Jv b2wKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IGFzYm9vbCwgc2FmZV9yZWxwYXRoCiBmcm9tIGdh bGF4eS51dGlsLmhhc2hfdXRpbCBpbXBvcnQgbmV3X3NlY3VyZV9oYXNoCiBmcm9tIHRvb2xfc2hl ZC51dGlsIGltcG9ydCBoZ191dGlsCiBmcm9tIHRvb2xfc2hlZC51dGlsIGltcG9ydCBjb21taXRf dXRpbApAQCAtMTE0LDcgKzExNCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBmaC53cml0ZSgg Y2h1bmsgKQogICAgICAgICAgICAgICAgIGZoLmNsb3NlKCkKICAgICAgICAgICAgICAgICBmaCA9 M0Qgb3BlbiggdG1wX2ZpbGVuYW1lLCAncmInICkKLSAgICAgICAgICAgICAgICBjaGFuZ2VzZXRf Z3JvdXBzID0zRCBqc29uLmxvYWRzKCBoZ191dGlsLmJ1bmRsZV90b19qc29uKCBmPQpoICkgKQor ICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlc2V0X2dyb3Vw cyA9M0QganNvbi5sb2FkcyggaGdfdXRpbC5idW5kbGVfdG9fanNvPQpuKCBmaCApICkKKyAgICAg ICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIG1z ZyA9M0QgJ1lvdXIgdmVyc2lvbiBvZiBNZXJjdXJpYWwgaXMgbm90IHN1cHBvcnRlZC4gUD0KbGVh c2UgdXNlIGEgdmVyc2lvbiA8IDMuNScKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu X19kaXNwbGF5X2V4Y2VwdGlvbl9yZW1vdGVseSggc3RhcnRfcmVzcG9uPQpzZSwgbXNnICkKICAg ICAgICAgICAgICAgICBmaC5jbG9zZSgpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAg ICAgICAgICAgICBvcy51bmxpbmsoIHRtcF9maWxlbmFtZSApCkBAIC0xMjMsNiArMTI3LDE5IEBA CiAgICAgICAgICAgICAgICAgaWYgY2hhbmdlc2V0X2dyb3VwczoKICAgICAgICAgICAgICAgICAg ICAgIyBDaGVjayB0aGUgcmVwb3NpdG9yeSB0eXBlIHRvIG1ha2Ugc3VyZSBpbmFwcHJvcHJpYXRl PQogZmlsZXMgYXJlIG5vdCBiZWluZyBwdXNoZWQuCiAgICAgICAgICAgICAgICAgICAgIGlmICdQ QVRIX0lORk8nIGluIGVudmlyb246CisgICAgICAgICAgICAgICAgICAgICAgICAjIEVuc3VyZSB0 aGVyZSBhcmUgbm8gc3ltbGlua3Mgd2l0aCB0YXJnZXRzIG91dHNpZD0KZSB0aGUgcmVwbworICAg ICAgICAgICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIGNoYW5nZXNldF9ncm91cHM6CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKCBlbnRyeSApID0zRD0zRCAyOgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgY2hhbmdlX2xpc3QgPTNEIGVudHJ5 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNoYW5n ZV9saXN0LCBsaXN0KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n ZV9saXN0ID0zRCBbY2hhbmdlX2xpc3RdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZvciBjaGFuZ2UgaW4gY2hhbmdlX2xpc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb3IgcGF0Y2ggaW4gY2hhbmdlWydkYXRhJ106CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0zRCBwYXRjaFsnYmxvY2snXS5zdHJpcCgpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoIHBhdGNoWydlbmQn XSAtIHBhdGNoWydzdGFydD0KJ10gPTNEPTNEIDAgKSBhbmQgbm90IHNhZmVfcmVscGF0aCggdGFy Z2V0ICkgKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNn ID0zRCAiQ2hhbmdlcyBpbmNsdWRlIGEgc3ltPQpsaW5rIG91dHNpZGUgb2YgdGhlIHJlcG9zaXRv cnk6ICVzIC0+ICVzIiAlICggZmlsZW5hbWUsIHRhcmdldCApCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKCBtc2cgKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2Rpc3BsYXlfZXhj ZXB0aW89Cm5fcmVtb3RlbHkoIHN0YXJ0X3Jlc3BvbnNlLCBtc2cgKQogICAgICAgICAgICAgICAg ICAgICAgICAgIyBJbnN0YW50aWF0ZSBhIGRhdGFiYXNlIGNvbm5lY3Rpb24KICAgICAgICAgICAg ICAgICAgICAgICAgIGVuZ2luZSA9M0Qgc3FsYWxjaGVteS5jcmVhdGVfZW5naW5lKCBzZWxmLmRi X3VybCApCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uID0zRCBlbmdpbmUuY29u bmVjdCgpCgpkaWZmIC1yIDIwZDVhMjFhZGQ5YWI0NWQ5YzRjNWMyNmQ2ODY5OWU3NzEzMTAwZGQg LXIgNmMyZmQ3YmRkYzZjMWM0ZThhNjQwOTM9CmYzZmM0YzQzNzBmNTE1YjRlIGxpYi9nYWxheHkv d29ya2Zsb3cvcmVuZGVyLnB5Ci0tLSBhL2xpYi9nYWxheHkvd29ya2Zsb3cvcmVuZGVyLnB5Cisr KyBiL2xpYi9nYWxheHkvd29ya2Zsb3cvcmVuZGVyLnB5CkBAIC0zMCw4ICszMCw4IEBACiAgICAg ICAgIGNhbnZhcy5hcHBlbmQoIHNlbGYuYm94ZXMgKQogICAgICAgICBjYW52YXMuYXBwZW5kKCBz ZWxmLnRleHQgKQogICAgICAgICB3aWR0aCwgaGVpZ2h0ID0zRCAoIG1heF94ICsgbWF4X3dpZHRo ICsgNTAgKSwgbWF4X3kgKyAzMDAKLSAgICAgICAgY2FudmFzWyAnd2lkdGgnIF0gPTNEICIlcyBw eCIgJSB3aWR0aAotICAgICAgICBjYW52YXNbICdoZWlnaHQnIF0gPTNEICIlcyBweCIgJSBoZWln aHQKKyAgICAgICAgY2FudmFzWyAnd2lkdGgnIF0gPTNEICIlc3B4IiAlIHdpZHRoCisgICAgICAg IGNhbnZhc1sgJ2hlaWdodCcgXSA9M0QgIiVzcHgiICUgaGVpZ2h0CiAgICAgICAgIGNhbnZhc1sg J3ZpZXdCb3gnIF0gPTNEICIwIDAgJXMgJXMiICUgKCB3aWR0aCwgaGVpZ2h0ICkKPTIwCiAgICAg ZGVmIGFkZF9ib3hlcyggc2VsZiwgc3RlcF9kaWN0LCB3aWR0aCwgbmFtZV9maWxsICk6CkBAIC0x MDcsNyArMTA3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFkanVzdGVkWyAxIF0gLSBNQVJHSU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbl9jb29yZHNbIDAgXSAtIDEwLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fY29vcmRzWyAxIF0sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvd19lbmQ9M0QidHJ1ZSIgKS5TVkco KSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvd19l bmQ9M0QiY29ubl8lcyIgJSAobGVuKD0Kc2VsZi5jb25uZWN0b3JzLmtleXMoKSkgKyAxKSApLlNW RygpICkKPTIwCiAgICAgZGVmIGFkZF9zdGVwcyggc2VsZiwgaGlnaGxpZ2h0X2Vycm9ycz0zREZh bHNlICk6CiAgICAgICAgICMgT25seSBoaWdobGlnaHQgbWlzc2luZyB0b29scyBpZiBkaXNwbGF5 aW5nIGluIHRoZSB0b29sIHNoZWQuCgpkaWZmIC1yIDIwZDVhMjFhZGQ5YWI0NWQ5YzRjNWMyNmQ2 ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0ZThhNjQwOTM9CmYzZmM0YzQzNzBmNTE1 YjRlIGxpYi9nYWxheHkvd29ya2Zsb3cvcnVuLnB5Ci0tLSBhL2xpYi9nYWxheHkvd29ya2Zsb3cv cnVuLnB5CisrKyBiL2xpYi9nYWxheHkvd29ya2Zsb3cvcnVuLnB5CkBAIC0yODUsNyArMjg1LDEw IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgbW9kdWxlcy5EZWxheWVkV29ya2Zsb3dFdmFsdWF0 aW9uKCkKICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50Cj0yMAotICAgIGRlZiBzZXRfb3V0cHV0 c19mb3JfaW5wdXQoIHNlbGYsIHN0ZXAsIG91dHB1dHM9M0R7fSApOgorICAgIGRlZiBzZXRfb3V0 cHV0c19mb3JfaW5wdXQoIHNlbGYsIHN0ZXAsIG91dHB1dHM9M0ROb25lICk6CisgICAgICAgIGlm IG91dHB1dHMgaXMgTm9uZToKKyAgICAgICAgICAgIG91dHB1dHMgPTNEIHt9CisKICAgICAgICAg aWYgc2VsZi5pbnB1dHNfYnlfc3RlcF9pZDoKICAgICAgICAgICAgIG91dHB1dHNbICdvdXRwdXQn IF0gPTNEIHNlbGYuaW5wdXRzX2J5X3N0ZXBfaWRbIHN0ZXAuaWQgXQo9MjAKCmRpZmYgLXIgMjBk NWEyMWFkZDlhYjQ1ZDljNGM1YzI2ZDY4Njk5ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRl OGE2NDA5Mz0KZjNmYzRjNDM3MGY1MTViNGUgbGliL3Rvb2xfc2hlZC9jYXBzdWxlL2NhcHN1bGVf bWFuYWdlci5weQotLS0gYS9saWIvdG9vbF9zaGVkL2NhcHN1bGUvY2Fwc3VsZV9tYW5hZ2VyLnB5 CisrKyBiL2xpYi90b29sX3NoZWQvY2Fwc3VsZS9jYXBzdWxlX21hbmFnZXIucHkKQEAgLTEyLDYg KzEyLDcgQEAKIGZyb20gZ2FsYXh5Lm1vZGVsLm9ybSBpbXBvcnQgYW5kXwogZnJvbSBnYWxheHku dXRpbCBpbXBvcnQgYXNib29sCiBmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBDSFVOS19TSVpFCitm cm9tIGdhbGF4eS51dGlsIGltcG9ydCBzYWZlX3JlbHBhdGgKIGZyb20gZ2FsYXh5LnV0aWwub2Rp Y3QgaW1wb3J0IG9kaWN0Cj0yMAogZnJvbSB0b29sX3NoZWQuZGVwZW5kZW5jaWVzLnJlcG9zaXRv cnkucmVsYXRpb25fYnVpbGRlciBpbXBvcnQgUmVsYXRpb25CdWk9CmxkZXIKQEAgLTcyNywyOSAr NzI4LDE2IEBACiAgICAgICAgIHJlcG8gPTNEIGhnX3V0aWwuZ2V0X3JlcG9fZm9yX3JlcG9zaXRv cnkoIHNlbGYuYXBwLCByZXBvc2l0b3J5PTNETj0Kb25lLCByZXBvX3BhdGg9M0RyZXBvX2Rpciwg Y3JlYXRlPTNERmFsc2UgKQogICAgICAgICB1bmRlc2lyYWJsZV9kaXJzX3JlbW92ZWQgPTNEIDAK ICAgICAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgMAotICAgICAgICBvaywgZXJy b3JfbWVzc2FnZSA9M0QgY29tbWl0X3V0aWwuY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgYXJj aGk9CnZlICkKLSAgICAgICAgaWYgb2s6CisgICAgICAgIGNoZWNrX3Jlc3VsdHMgPTNEIGNvbW1p dF91dGlsLmNoZWNrX2FyY2hpdmUoIHJlcG9zaXRvcnksIGFyY2hpdmUgKQorICAgICAgICAjIFdl IGZpbHRlciBvdXQgdW5kZXNpcmFibGUgZmlsZXMgYnV0IGZhaWwgb24gdW5kZXNyaWFibGUgZGly cy4gTm90CisgICAgICAgICMgc3VyZSB3aHksIGp1c3QgdHJ5aW5nIHRvIG1haW50YWluIHRoZSBz YW1lIGJlaGF2aW9yIGFzIGJlZm9yZS4gLT0KbmF0ZQorICAgICAgICBpZiBub3QgY2hlY2tfcmVz dWx0cy5pbnZhbGlkIGFuZCBub3QgY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJsZV9kaXI9CnM6CiAg ICAgICAgICAgICBmdWxsX3BhdGggPTNEIG9zLnBhdGguYWJzcGF0aCggcmVwb19kaXIgKQotICAg ICAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hpdmUgPTNEIFtdCi0gICAgICAgICAgICBmb3IgdGFy aW5mb19vYmogaW4gYXJjaGl2ZS5nZXRtZW1iZXJzKCk6Ci0gICAgICAgICAgICAgICAgIyBDaGVj ayBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgaW4gdGhlIGFyY2hpdmUuCi0gICAgICAgICAgICAgICAg b2sgPTNEIG9zLnBhdGguYmFzZW5hbWUoIHRhcmluZm9fb2JqLm5hbWUgKSBub3QgaW4gY29tbWl0 Xz0KdXRpbC5VTkRFU0lSQUJMRV9GSUxFUwotICAgICAgICAgICAgICAgIGlmIG9rOgotICAgICAg ICAgICAgICAgICAgICBmb3IgZmlsZV9wYXRoX2l0ZW0gaW4gdGFyaW5mb19vYmoubmFtZS5zcGxp dCggJy8nICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWxlX3BhdGhfaXRlbSBpbiBj b21taXRfdXRpbC5VTkRFU0lSQUJMRV9ESVJTOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuZGVzaXJhYmxlX2RpcnNfcmVtb3ZlZCArPTNEIDEKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlcnJvcl9tZXNzYWdlID0zRCAnSW1wb3J0IGZhaWxlZDogaW52YWxpZCBmaWxlPQogcGF0 aCA8Yj4lczwvYj4gaW4gYXJjaGl2ZSA8Yj4lczwvYj4nICUgXAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoIHN0ciggZmlsZV9wYXRoX2l0ZW0gKSwgc3RyKCBhcmNoaXZlX2ZpbGU9 Cl9uYW1lICkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNfZGljdFsgJ29r JyBdID0zRCBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNfZGljdFsg J2Vycm9yX21lc3NhZ2UnIF0gKz0zRCBlcnJvcl9tZXM9CnNhZ2UKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gcmVzdWx0c19kaWN0Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVu YW1lc19pbl9hcmNoaXZlLmFwcGVuZCggdGFyaW5mb19vYmoubmFtZSApCi0gICAgICAgICAgICAg ICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCAr PTNEIDEKICAgICAgICAgICAgICMgRXh0cmFjdCB0aGUgdXBsb2FkZWQgYXJjaGl2ZSB0byB0aGUg cmVwb3NpdG9yeSByb290LgotICAgICAgICAgICAgYXJjaGl2ZS5leHRyYWN0YWxsKCBwYXRoPTNE ZnVsbF9wYXRoICkKKyAgICAgICAgICAgIGFyY2hpdmUuZXh0cmFjdGFsbCggcGF0aD0zRGZ1bGxf cGF0aCwgbWVtYmVycz0zRGNoZWNrX3Jlc3VsdHMuPQp2YWxpZCApCiAgICAgICAgICAgICBhcmNo aXZlLmNsb3NlKCkKLSAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXNfaW5fYXJj aGl2ZToKKyAgICAgICAgICAgIGZvciB0YXJfbWVtYmVyIGluIGNoZWNrX3Jlc3VsdHMudmFsaWQ6 CisgICAgICAgICAgICAgICAgZmlsZW5hbWUgPTNEIHRhcl9tZW1iZXIubmFtZQogICAgICAgICAg ICAgICAgIHVwbG9hZGVkX2ZpbGVfbmFtZSA9M0Qgb3MucGF0aC5qb2luKCBmdWxsX3BhdGgsIGZp bGVuYW1lICkKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLnNwbGl0KCB1cGxvYWRlZF9maWxl X25hbWUgKVsgLTEgXSA9M0Q9M0QgcnRfdXRpPQpsLlJFUE9TSVRPUllfREVQRU5ERU5DWV9ERUZJ TklUSU9OX0ZJTEVOQU1FOgogICAgICAgICAgICAgICAgICAgICAjIEluc3BlY3QgdGhlIGNvbnRl bnRzIG9mIHRoZSBmaWxlIHRvIHNlZSBpZiB0b29sc2hlZCA9Cm9yIGNoYW5nZXNldF9yZXZpc2lv biBhdHRyaWJ1dGVzCkBAIC03NzYsNiArNzY0LDkgQEAKICAgICAgICAgICAgIG5ld19yZXBvX2Fs ZXJ0ID0zRCBUcnVlCiAgICAgICAgICAgICAjIFNpbmNlIHRoZSByZXBvc2l0b3J5IGlzIG5ldywg dGhlIGZvbGxvd2luZyBtdXN0IGJlIEZhbHNlLgogICAgICAgICAgICAgcmVtb3ZlX3JlcG9fZmls ZXNfbm90X2luX3RhciA9M0QgRmFsc2UKKyAgICAgICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZl ID0zRCBbIG1lbWJlci5uYW1lIGZvciBtZW1iZXIgaW4gY2hlY2tfcmVzPQp1bHRzLnZhbGlkIF0K KyAgICAgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIGxlbiggY2hlY2tfcmVz dWx0cy51bmRlc2lyYWJsZV9mPQppbGVzICkKKyAgICAgICAgICAgIHVuZGVzaXJhYmxlX2RpcnNf cmVtb3ZlZCA9M0QgMAogICAgICAgICAgICAgb2ssIGVycm9yX21lc3NhZ2UsIGZpbGVzX3RvX3Jl bW92ZSwgY29udGVudF9hbGVydF9zdHIsIHVuZGVzaXI9CmFibGVfZGlyc19yZW1vdmVkLCB1bmRl c2lyYWJsZV9maWxlc19yZW1vdmVkID0zRCBcCiAgICAgICAgICAgICAgICAgY29tbWl0X3V0aWwu aGFuZGxlX2RpcmVjdG9yeV9jaGFuZ2VzKCBzZWxmLmFwcCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG9zdCwKQEAgLTgwNiw3ICs3 OTcsMTMgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFyY2hpdmUuY2xvc2UoKQogICAg ICAgICAgICAgcmVzdWx0c19kaWN0WyAnb2snIF0gPTNEIEZhbHNlCi0gICAgICAgICAgICByZXN1 bHRzX2RpY3RbICdlcnJvcl9tZXNzYWdlJyBdICs9M0QgZXJyb3JfbWVzc2FnZQorICAgICAgICAg ICAgcmVzdWx0c19kaWN0WyAnZXJyb3JfbWVzc2FnZScgXSArPTNEICdDYXBzdWxlIGVycm9ycyB3 ZXJlIGZvdW49CmQ6ICcKKyAgICAgICAgICAgIGlmIGNoZWNrX3Jlc3VsdHMuaW52YWxpZDoKKyAg ICAgICAgICAgICAgICByZXN1bHRzX2RpY3RbICdlcnJvcl9tZXNzYWdlJyBdICs9M0QgJyVzIElu dmFsaWQgZmlsZXMgd2VyPQplOiAlcy4nICUgKAorICAgICAgICAgICAgICAgICAgICAnICcuam9p biggY2hlY2tfcmVzdWx0cy5lcnJvcnMgKSwgJywgJy5qb2luKCBjaGVja19yZXM9CnVsdHMuaW52 YWxpZCApICkKKyAgICAgICAgICAgIGlmIGNoZWNrX3Jlc3VsdHMudW5kZXNpcmFibGVfZGlyczoK KyAgICAgICAgICAgICAgICByZXN1bHRzX2RpY3RbICdlcnJvcl9tZXNzYWdlJyBdICs9M0QgJyBV bmRlc2lyYWJsZSBkaXJlY3RvPQpyaWVzIHdlcmU6ICVzLicgJSAoCisgICAgICAgICAgICAgICAg ICAgICcsICcuam9pbiggY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJsZV9kaXJzICkgKQogICAgICAg ICByZXR1cm4gcmVzdWx0c19kaWN0Cj0yMAogICAgIGRlZiB1cGxvYWRfY2Fwc3VsZSggc2VsZiwg Kiprd2QgKToKQEAgLTg2Myw2ICs4NjAsMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm5fZGlj dFsgJ3N0YXR1cycgXSA9M0QgJ2Vycm9yJwogICAgICAgICAgICAgICAgIHVwbG9hZGVkX2ZpbGUu Y2xvc2UoKQogICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5fZGljdAorICAgICAgICAgICAg aWYgbm90IHNlbGYudmFsaWRhdGVfYXJjaGl2ZV9wYXRocyggdGFyX2FyY2hpdmUgKToKKyAgICAg ICAgICAgICAgICByZXR1cm5fZGljdFsgJ3N0YXR1cycgXSA9M0QgJ2Vycm9yJworICAgICAgICAg ICAgICAgIHJldHVybl9kaWN0WyAnbWVzc2FnZScgXSA9M0QgKCAnVGhpcyBjYXBzdWxlIGNvbnRh aW5zIGFuIGk9Cm52YWxpZCBtZW1iZXIgdHlwZSAnCisgICAgICAgICAgICAgICAgICAgICdvciBh IGZpbGUgb3V0c2lkZSB0aGUgYXJjaGl2ZSBwYXRoLicgKQorICAgICAgICAgICAgICAgIHVwbG9h ZGVkX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5fZGljdAogICAg ICAgICAgICAgcmV0dXJuX2RpY3RbICd0YXJfYXJjaGl2ZScgXSA9M0QgdGFyX2FyY2hpdmUKICAg ICAgICAgICAgIHJldHVybl9kaWN0WyAnY2Fwc3VsZV9maWxlX25hbWUnIF0gPTNEIHVwbG9hZGVk X2ZpbGVfZmlsZW5hbWUKICAgICAgICAgICAgIHVwbG9hZGVkX2ZpbGUuY2xvc2UoKQpAQCAtODcy LDYgKzg3NSwxOCBAQAogICAgICAgICAgICAgcmV0dXJuIHJldHVybl9kaWN0CiAgICAgICAgIHJl dHVybiByZXR1cm5fZGljdAo9MjAKKyAgICBkZWYgdmFsaWRhdGVfYXJjaGl2ZV9wYXRocyggc2Vs ZiwgdGFyX2FyY2hpdmUgKToKKyAgICAgICAgJycnCisgICAgICAgIEluc3BlY3QgdGhlIGFyY2hp dmUgY29udGVudHMgdG8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5vIHJpc2t5IHN5bT0KbGlua3Mu CisgICAgICAgIFJldHVybnMgVHJ1ZSBpZiBhIHN1c3BpY2lvdXMgcGF0aCBpcyBmb3VuZC4KKyAg ICAgICAgJycnCisgICAgICAgIGZvciBtZW1iZXIgaW4gdGFyX2FyY2hpdmUuZ2V0bWVtYmVycygp OgorICAgICAgICAgICAgaWYgbm90ICggbWVtYmVyLmlzZGlyKCkgb3IgbWVtYmVyLmlzZmlsZSgp IG9yIG1lbWJlci5pc2xuaygpICk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAg ICAgICAgICBlbGlmIG5vdCBzYWZlX3JlbHBhdGgoIG1lbWJlci5uYW1lICk6CisgICAgICAgICAg ICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKICAgICBkZWYgdmFsaWRh dGVfY2Fwc3VsZSggc2VsZiwgKiprd2QgKToKICAgICAgICAgIiIiCiAgICAgICAgIEluc3BlY3Qg dGhlIHVwbG9hZGVkIGNhcHN1bGUncyBtYW5pZmVzdCBhbmQgaXRzIGNvbnRhaW5lZCBmaWxlcyB0 bz0KIGVuc3VyZSBpdCBpcyBhIHZhbGlkCgpkaWZmIC1yIDIwZDVhMjFhZGQ5YWI0NWQ5YzRjNWMy NmQ2ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0ZThhNjQwOTM9CmYzZmM0YzQzNzBm NTE1YjRlIGxpYi90b29sX3NoZWQvZ2FsYXh5X2luc3RhbGwvdG9vbF9kZXBlbmRlbmNpZXMvcmVj aXBlL3N0ZT0KcF9oYW5kbGVyLnB5Ci0tLSBhL2xpYi90b29sX3NoZWQvZ2FsYXh5X2luc3RhbGwv dG9vbF9kZXBlbmRlbmNpZXMvcmVjaXBlL3N0ZXBfaGFuZGxlci5weQorKysgYi9saWIvdG9vbF9z aGVkL2dhbGF4eV9pbnN0YWxsL3Rvb2xfZGVwZW5kZW5jaWVzL3JlY2lwZS9zdGVwX2hhbmRsZXIu cHkKQEAgLTExMDUsNiArMTEwNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICMgSWYgc2V0IHRv IGEgdHJ1ZSB2YWx1ZSB0aGVuIE1ha2VNYWtlcidzIHByb21wdCBmdW5jdD0KaW9uIHdpbGwgYWx3 YXlzCiAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIHRoZSBkZWZhdWx0IHdpdGhvdXQgd2Fp dGluZyBmb3IgdXNlciBpbnB1dC4KICAgICAgICAgICAgICAgICAgICAgY21kID0zRCAnJydQRVJM X01NX1VTRV9ERUZBVUxUPTNEMTsgZXhwb3J0IFBFUkxfTU1fVVNFPQpfREVGQVVMVDsgJycnCisg ICAgICAgICAgICAgICAgICAgIGNtZCArPTNEICdIT01FPTNEJXM7IGV4cG9ydCBIT01FOyAnICUg d29ya19kaXIKICAgICAgICAgICAgICAgICAgICAgY21kICs9M0QgJ2V4cG9ydCBQRVJMNUxJQj0z RCRJTlNUQUxMX0RJUi9saWIvcGVybDU6JFBFPQpSTDVMSUI7JwogICAgICAgICAgICAgICAgICAg ICBjbWQgKz0zRCAnZXhwb3J0IFBBVEg9M0QkSU5TVEFMTF9ESVIvYmluOiRQQVRIOycKICAgICAg ICAgICAgICAgICAgICAgaWYgcGVybF9wYWNrYWdlLmZpbmQoICc6Ly8nICkgIT0zRCAtMToKCmRp ZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2ZDY4Njk5ZTc3MTMxMDBkZCAtciA2YzJmZDdi ZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1MTViNGUgbGliL3Rvb2xfc2hlZC90b29scy90 b29sX3ZlcnNpb25fbWFuYWdlci5weQotLS0gYS9saWIvdG9vbF9zaGVkL3Rvb2xzL3Rvb2xfdmVy c2lvbl9tYW5hZ2VyLnB5CisrKyBiL2xpYi90b29sX3NoZWQvdG9vbHMvdG9vbF92ZXJzaW9uX21h bmFnZXIucHkKQEAgLTEsNiArMSw4IEBACiBpbXBvcnQgbG9nZ2luZwo9MjAKLWZyb20gZ2FsYXh5 Lm1vZGVsLm9ybSBpbXBvcnQgYW5kXworZnJvbSBnYWxheHkgaW1wb3J0IGVnZ3MKK2VnZ3MucmVx dWlyZSgnU1FMQWxjaGVteScpCitmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IGFuZF8sIG9yXwo9MjAK IGZyb20gdG9vbF9zaGVkLnV0aWwgaW1wb3J0IGhnX3V0aWwKIGZyb20gdG9vbF9zaGVkLnV0aWwg aW1wb3J0IHNoZWRfdXRpbF9jb21tb24gYXMgc3VjCkBAIC0yMSw4ICsyMyw4IEBACj0yMAogICAg IGRlZiBnZXRfdG9vbF92ZXJzaW9uX2Fzc29jaWF0aW9uKCBzZWxmLCBwYXJlbnRfdG9vbF92ZXJz aW9uLCB0b29sX3ZlcnM9CmlvbiApOgogICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIGEgVG9v bFZlcnNpb25Bc3NvY2lhdGlvbiBpZiBvbmUgZXhpc3RzIHRoYXQgYXNzb2NpYXRlcyB0aGUgPQp0 d28gcmVjZWl2ZWQKLSAgICAgICAgdG9vbF92ZXJzaW9ucyAgVGhpcyBmdW5jdGlvbiBpcyBjYWxs ZWQgb25seSBmcm9tIEdhbGF4eS4KKyAgICAgICAgUmV0dXJuIGEgVG9vbFZlcnNpb25Bc3NvY2lh dGlvbiBpZiBvbmUgZXhpc3RzIHRoYXQgYXNzb2NpYXRlcyB0aGUgPQp0d28KKyAgICAgICAgcmVj ZWl2ZWQgdG9vbF92ZXJzaW9ucy4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25seSBmcm9tIEdh bGF4eS4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPTNEIHNlbGYuYXBwLmluc3RhbGxf bW9kZWwuY29udGV4dAogICAgICAgICByZXR1cm4gY29udGV4dC5xdWVyeSggc2VsZi5hcHAuaW5z dGFsbF9tb2RlbC5Ub29sVmVyc2lvbkFzc29jaWF0aW89Cm4gKSBcCkBAIC05MCw2ICs5MiwxNiBA QAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdG9vbF9zaGVkX3JlcG89CnNpdG9yeT0zRHRvb2xfc2hlZF9yZXBvc2l0b3J5ICkKICAg ICAgICAgICAgICAgICAgICAgY29udGV4dC5hZGQoIHRvb2xfdmVyc2lvbl91c2luZ19wYXJlbnRf aWQgKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZsdXNoKCkKKyAgICAgICAgICAgICAg ICAjIFJlbW92ZSBleGlzdGluZyB3cm9uZyB0b29sIHZlcnNpb24gYXNzb2NpYXRpb25zIGhhdmlu ZworICAgICAgICAgICAgICAgICMgdG9vbF92ZXJzaW9uX3VzaW5nX3BhcmVudF9pZCBhcyBwYXJl bnQgb3IKKyAgICAgICAgICAgICAgICAjIHRvb2xfdmVyc2lvbl91c2luZ190b29sX2d1aWQgYXMg Y2hpbGQuCisgICAgICAgICAgICAgICAgY29udGV4dC5xdWVyeSggc2VsZi5hcHAuaW5zdGFsbF9t b2RlbC5Ub29sVmVyc2lvbkFzc29jaWF0aT0Kb24gKSBcCisgICAgICAgICAgICAgICAgICAgICAg IC5maWx0ZXIoIG9yXyggYW5kXyggc2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5Ub29sVmVycz0KaW9u QXNzb2NpYXRpb24udGFibGUuYy5wYXJlbnRfaWQgPTNEPTNEIHRvb2xfdmVyc2lvbl91c2luZ19w YXJlbnRfaWQuaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5Ub29sVmVycz0KaW9uQXNzb2NpYXRpb24udGFibGUuYy50 b29sX2lkICE9M0QgdG9vbF92ZXJzaW9uX3VzaW5nX3Rvb2xfZ3VpZC5pZCApLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZF8oIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwu VG9vbFZlcnM9CmlvbkFzc29jaWF0aW9uLnRhYmxlLmMucGFyZW50X2lkICE9M0QgdG9vbF92ZXJz aW9uX3VzaW5nX3BhcmVudF9pZC5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xWZXJzPQppb25Bc3NvY2lhdGlv bi50YWJsZS5jLnRvb2xfaWQgPTNEPTNEIHRvb2xfdmVyc2lvbl91c2luZ190b29sX2d1aWQuaWQg KSApICk9CiBcCisgICAgICAgICAgICAgICAgICAgICAgIC5kZWxldGUoKQorICAgICAgICAgICAg ICAgIGNvbnRleHQuZmx1c2goKQogICAgICAgICAgICAgICAgIHRvb2xfdmVyc2lvbl9hc3NvY2lh dGlvbiA9M0QgXAogICAgICAgICAgICAgICAgICAgICBzZWxmLmdldF90b29sX3ZlcnNpb25fYXNz b2NpYXRpb24oIHRvb2xfdmVyc2lvbl91c2luZ189CnBhcmVudF9pZCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sX3ZlcnNpb25fdXNp bmdfPQp0b29sX2d1aWQgKQoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTll NzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBs aWIvdG9vbF9zaGVkL3V0aWwvY29tbWl0X3V0aWwucHkKLS0tIGEvbGliL3Rvb2xfc2hlZC91dGls L2NvbW1pdF91dGlsLnB5CisrKyBiL2xpYi90b29sX3NoZWQvdXRpbC9jb21taXRfdXRpbC5weQpA QCAtNSw4ICs1LDEwIEBACiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB0ZW1wZmls ZQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQo9MjAKIGZyb20gZ2FsYXh5LmRh dGF0eXBlcyBpbXBvcnQgY2hlY2tlcnMKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHNhZmVfcmVs cGF0aAo9MjAKIGltcG9ydCB0b29sX3NoZWQucmVwb3NpdG9yeV90eXBlcy51dGlsIGFzIHJ0X3V0 aWwKIGZyb20gdG9vbF9zaGVkLnRvb2xzIGltcG9ydCBkYXRhX3RhYmxlX21hbmFnZXIKQEAgLTIx LDMwICsyMyw0NCBAQAo9MjAKPTIwCiBkZWYgY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgYXJj aGl2ZSApOgorICAgIHZhbGlkID0zRCBbXQorICAgIGludmFsaWQgPTNEIFtdCisgICAgZXJyb3Jz ID0zRCBbXQorICAgIHVuZGVzaXJhYmxlX2ZpbGVzID0zRCBbXQorICAgIHVuZGVzaXJhYmxlX2Rp cnMgPTNEIFtdCiAgICAgZm9yIG1lbWJlciBpbiBhcmNoaXZlLmdldG1lbWJlcnMoKToKICAgICAg ICAgIyBBbGxvdyByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBvbmx5CiAgICAgICAgIGlm IG5vdCAoIG1lbWJlci5pc2RpcigpIG9yIG1lbWJlci5pc2ZpbGUoKSBvciBtZW1iZXIuaXNsbmso KSApOgotICAgICAgICAgICAgbWVzc2FnZSA9M0QgIlVwbG9hZGVkIGFyY2hpdmVzIGNhbiBvbmx5 IGluY2x1ZGUgcmVndWxhciBkaXJlY3Q9Cm9yaWVzIGFuZCBmaWxlcyAobm8gc3ltYm9saWMgbGlu a3MsIGRldmljZXMsIGV0YykuICAiCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgIlRoZSBwcm9i bGVtYXRpYyBtZW1iZXIgaW4gdGhpcyBhcmNoaXZlIGlzICVzLCIgJT0KIHN0ciggbWVtYmVyLm5h bWUgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAgICAgIGZvciBpdGVt IGluIFsgJy5oZycsICcuLicsICcvJyBdOgotICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUuc3Rh cnRzd2l0aCggaXRlbSApOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRlZCBh cmNoaXZlcyBjYW5ub3QgY29udGFpbiAuaGcgZGlyZWN0b3I9CmllcywgYWJzb2x1dGUgZmlsZW5h bWVzIHN0YXJ0aW5nIHdpdGggJy8nLCBvciBmaWxlbmFtZXMgd2l0aCB0d28gZG90cyAnLi4nLj0K ICAiCi0gICAgICAgICAgICAgICAgbWVzc2FnZSArPTNEICJUaGUgcHJvYmxlbWF0aWMgbWVtYmVy IGluIHRoaXMgYXJjaGl2ZSBpcyAlcz0KLiIgJSBzdHIoIG1lbWJlci5uYW1lICkKLSAgICAgICAg ICAgICAgICByZXR1cm4gRmFsc2UsIG1lc3NhZ2UKLSAgICAgICAgaWYgbWVtYmVyLm5hbWUgaW4g WyAnaGdyYycgXToKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRlZCBhcmNoaXZlcyBj YW5ub3QgY29udGFpbiBoZ3JjIGZpbGVzLiAgIgotICAgICAgICAgICAgbWVzc2FnZSArPTNEICJU aGUgcHJvYmxlbWF0aWMgbWVtYmVyIGluIHRoaXMgYXJjaGl2ZSBpcyAlcy4iICU9CiBzdHIoIG1l bWJlci5uYW1lICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZQorICAgICAgICAg ICAgZXJyb3JzLmFwcGVuZCggIlVwbG9hZGVkIGFyY2hpdmVzIGNhbiBvbmx5IGluY2x1ZGUgcmVn dWxhciBkaXI9CmVjdG9yaWVzIGFuZCBmaWxlcyAobm8gc3ltYm9saWMgbGlua3MsIGRldmljZXMs IGV0YykuIiApCisgICAgICAgICAgICBpbnZhbGlkLmFwcGVuZCggbWVtYmVyICkKKyAgICAgICAg ICAgIGNvbnRpbnVlCisgICAgICAgIGlmIG5vdCBzYWZlX3JlbHBhdGgoIG1lbWJlci5uYW1lICk6 CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCAiVXBsb2FkZWQgYXJjaGl2ZXMgY2Fubm90IGNv bnRhaW4gZmlsZXMgdGhhdCB3bz0KdWxkIGV4dHJhY3Qgb3V0c2lkZSBvZiB0aGUgYXJjaGl2ZS4i ICkKKyAgICAgICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29u dGludWUKKyAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZSggbWVtYmVyLm5hbWUgKSBpbiBVTkRF U0lSQUJMRV9GSUxFUzoKKyAgICAgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzLmFwcGVuZCggbWVt YmVyICkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGhlYWQgPTNEIHRhaWwgPTNEIG1l bWJlci5uYW1lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIHRhaWw6CisgICAgICAg ICAgICAgICAgaGVhZCwgdGFpbCA9M0Qgb3MucGF0aC5zcGxpdChoZWFkKQorICAgICAgICAgICAg ICAgIGlmIHRhaWwgaW4gVU5ERVNJUkFCTEVfRElSUzoKKyAgICAgICAgICAgICAgICAgICAgdW5k ZXNpcmFibGVfZGlycy5hcHBlbmQoIG1lbWJlciApCisgICAgICAgICAgICAgICAgICAgIGFzc2Vy dCBGYWxzZQorICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6CisgICAgICAgICAgICBjb250 aW51ZQogICAgICAgICBpZiByZXBvc2l0b3J5LnR5cGUgPTNEPTNEIHJ0X3V0aWwuUkVQT1NJVE9S WV9TVUlURV9ERUZJTklUSU9OIGFuZCA9Cm1lbWJlci5uYW1lICE9M0QgcnRfdXRpbC5SRVBPU0lU T1JZX0RFUEVOREVOQ1lfREVGSU5JVElPTl9GSUxFTkFNRToKLSAgICAgICAgICAgIG1lc3NhZ2Ug PTNEICdSZXBvc2l0b3JpZXMgb2YgdHlwZSA8Yj5SZXBvc2l0b3J5IHN1aXRlIGRlZmluaXRpPQpv bjwvYj4gY2FuIGNvbnRhaW4gb25seSBhIHNpbmdsZSBmaWxlIG5hbWVkIDxiPnJlcG9zaXRvcnlf ZGVwZW5kZW5jaWVzLnhtbDw9Ci9iPi4nCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgJ1RoaXMg YXJjaGl2ZSBjb250YWlucyBhIG1lbWJlciBuYW1lZCAlcy4nICUgc3RyKD0KIG1lbWJlci5uYW1l ICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZQorICAgICAgICAgICAgZXJyb3Jz LmFwcGVuZCggJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlJlcG9zaXRvcnkgc3VpdGUgZGVmaW49 Cml0aW9uPC9iPiBjYW4gY29udGFpbiBvbmx5IGEgc2luZ2xlIGZpbGUgbmFtZWQgPGI+cmVwb3Np dG9yeV9kZXBlbmRlbmNpZXMueD0KbWw8L2I+LicgKQorICAgICAgICAgICAgaW52YWxpZC5hcHBl bmQoIG1lbWJlciApCisgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBpZiByZXBvc2l0b3J5 LnR5cGUgPTNEPTNEIHJ0X3V0aWwuVE9PTF9ERVBFTkRFTkNZX0RFRklOSVRJT04gYW5kIG09CmVt YmVyLm5hbWUgIT0zRCBydF91dGlsLlRPT0xfREVQRU5ERU5DWV9ERUZJTklUSU9OX0ZJTEVOQU1F OgotICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlRvb2wg ZGVwZW5kZW5jeSBkZWZpbml0aW89Cm48L2I+IGNhbiBjb250YWluIG9ubHkgYSBzaW5nbGUgZmls ZSBuYW1lZCA8Yj50b29sX2RlcGVuZGVuY2llcy54bWw8L2I+LicKLSAgICAgICAgICAgIG1lc3Nh Z2UgKz0zRCAnVGhpcyBhcmNoaXZlIGNvbnRhaW5zIGEgbWVtYmVyIG5hbWVkICVzLicgJSBzdHIo PQogbWVtYmVyLm5hbWUgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAg cmV0dXJuIFRydWUsICcnCisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCAnUmVwb3NpdG9yaWVz IG9mIHR5cGUgPGI+VG9vbCBkZXBlbmRlbmN5IGRlZmluaT0KdGlvbjwvYj4gY2FuIGNvbnRhaW4g b25seSBhIHNpbmdsZSBmaWxlIG5hbWVkIDxiPnRvb2xfZGVwZW5kZW5jaWVzLnhtbDwvYj4uPQon ICkKKyAgICAgICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29u dGludWUKKyAgICAgICAgdmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgIEFyY2hpdmVDaGVja1Jl c3VsdHMgPTNEIG5hbWVkdHVwbGUoICdBcmNoaXZlQ2hlY2tSZXN1bHRzJywgWyAndmFsaWQnLCA9 CidpbnZhbGlkJywgJ3VuZGVzaXJhYmxlX2ZpbGVzJywgJ3VuZGVzaXJhYmxlX2RpcnMnLCAnZXJy b3JzJyBdICkKKyAgICByZXR1cm4gQXJjaGl2ZUNoZWNrUmVzdWx0cyggdmFsaWQsIGludmFsaWQs IHVuZGVzaXJhYmxlX2ZpbGVzLCB1bmRlc2lyPQphYmxlX2RpcnMsIGVycm9ycyApCj0yMAo9MjAK IGRlZiBjaGVja19maWxlX2NvbnRlbnRzX2Zvcl9lbWFpbF9hbGVydHMoIGFwcCApOgoKZGlmZiAt ciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2 YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIvdG9vbF9zaGVkL3V0aWwvcmVwb3Np dG9yeV9jb250ZW50X3V0aWwucHkKLS0tIGEvbGliL3Rvb2xfc2hlZC91dGlsL3JlcG9zaXRvcnlf Y29udGVudF91dGlsLnB5CisrKyBiL2xpYi90b29sX3NoZWQvdXRpbC9yZXBvc2l0b3J5X2NvbnRl bnRfdXRpbC5weQpAQCAtMTUsMzEgKzE1LDIzIEBACiAgICAgaGdfdXRpbC5nZXRfcmVwb19mb3Jf cmVwb3NpdG9yeSggdHJhbnMuYXBwLCByZXBvc2l0b3J5PTNETm9uZSwgcmVwb19wYT0KdGg9M0Ry ZXBvX2RpciwgY3JlYXRlPTNERmFsc2UgKQogICAgIHVuZGVzaXJhYmxlX2RpcnNfcmVtb3ZlZCA9 M0QgMAogICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIDAKLSAgICBvaywgbWVzc2Fn ZSA9M0QgY29tbWl0X3V0aWwuY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgdGFyICkKLSAgICBp ZiBub3Qgb2s6CisgICAgY2hlY2tfcmVzdWx0cyA9M0QgY29tbWl0X3V0aWwuY2hlY2tfYXJjaGl2 ZSggcmVwb3NpdG9yeSwgdGFyICkKKyAgICBpZiBjaGVja19yZXN1bHRzLmludmFsaWQ6CiAgICAg ICAgIHRhci5jbG9zZSgpCiAgICAgICAgIHVwbG9hZGVkX2ZpbGUuY2xvc2UoKQotICAgICAgICBy ZXR1cm4gb2ssIG1lc3NhZ2UsIFtdLCAnJywgdW5kZXNpcmFibGVfZGlyc19yZW1vdmVkLCB1bmRl c2lyYWJsZV89CmZpbGVzX3JlbW92ZWQKKyAgICAgICAgbWVzc2FnZSA9M0QgJyVzIEludmFsaWQg cGF0aHMgd2VyZTogJXMnICUgKAorICAgICAgICAgICAgJyAnLmpvaW4oIGNoZWNrX3Jlc3VsdHMu ZXJyb3JzICksICcsICcuam9pbiggY2hlY2tfcmVzdWx0cy5pbnY9CmFsaWQgKSApCisgICAgICAg IHJldHVybiBGYWxzZSwgbWVzc2FnZSwgW10sICcnLCB1bmRlc2lyYWJsZV9kaXJzX3JlbW92ZWQs IHVuZGVzaXJhYj0KbGVfZmlsZXNfcmVtb3ZlZAogICAgIGVsc2U6CiAgICAgICAgIGlmIHVwbG9h ZF9wb2ludCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0aC5h YnNwYXRoKCBvcy5wYXRoLmpvaW4oIHJlcG9fZGlyLCB1cGxvYWRfPQpwb2ludCApICkKICAgICAg ICAgZWxzZToKICAgICAgICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0aC5hYnNwYXRoKCByZXBv X2RpciApCi0gICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZlID0zRCBbXQotICAgICAgICBmb3Ig dGFyaW5mb19vYmogaW4gdGFyLmdldG1lbWJlcnMoKToKLSAgICAgICAgICAgIG9rID0zRCBvcy5w YXRoLmJhc2VuYW1lKCB0YXJpbmZvX29iai5uYW1lICkgbm90IGluIGNvbW1pdF91dGlsPQouVU5E RVNJUkFCTEVfRklMRVMKLSAgICAgICAgICAgIGlmIG9rOgotICAgICAgICAgICAgICAgIGZvciBm aWxlX3BhdGhfaXRlbSBpbiB0YXJpbmZvX29iai5uYW1lLnNwbGl0KCAnLycgKToKLSAgICAgICAg ICAgICAgICAgICAgaWYgZmlsZV9wYXRoX2l0ZW0gaW4gY29tbWl0X3V0aWwuVU5ERVNJUkFCTEVf RElSUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVzaXJhYmxlX2RpcnNfcmVtb3ZlZCAr PTNEIDEKLSAgICAgICAgICAgICAgICAgICAgICAgIG9rID0zRCBGYWxzZQotICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdW5k ZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCArPTNEIDEKLSAgICAgICAgICAgIGlmIG9rOgotICAgICAg ICAgICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZlLmFwcGVuZCggdGFyaW5mb19vYmoubmFtZSAp CisgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIGxlbiggY2hlY2tfcmVzdWx0 cy51bmRlc2lyYWJsZV9maWxlcz0KICkKKyAgICAgICAgdW5kZXNpcmFibGVfZGlyc19yZW1vdmVk ID0zRCBsZW4oIGNoZWNrX3Jlc3VsdHMudW5kZXNpcmFibGVfZGlycyApCisgICAgICAgIGZpbGVu YW1lc19pbl9hcmNoaXZlID0zRCBbIHRpLm5hbWUgZm9yIHRpIGluIGNoZWNrX3Jlc3VsdHMudmFs aWQgXQogICAgICAgICAjIEV4dHJhY3QgdGhlIHVwbG9hZGVkIHRhciB0byB0aGUgbG9hZF9wb2lu dCB3aXRoaW4gdGhlIHJlcG9zaXRvcnk9CiBoaWVyYXJjaHkuCi0gICAgICAgIHRhci5leHRyYWN0 YWxsKCBwYXRoPTNEZnVsbF9wYXRoICkKKyAgICAgICAgdGFyLmV4dHJhY3RhbGwoIHBhdGg9M0Rm dWxsX3BhdGgsIG1lbWJlcnM9M0RjaGVja19yZXN1bHRzLnZhbGlkICkKICAgICAgICAgdGFyLmNs b3NlKCkKICAgICAgICAgdXBsb2FkZWRfZmlsZS5jbG9zZSgpCiAgICAgICAgIGZvciBmaWxlbmFt ZSBpbiBmaWxlbmFtZXNfaW5fYXJjaGl2ZToKCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1 YzI2ZDY4Njk5ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3 MGY1MTViNGUgbGliL3Rvb2xfc2hlZC91dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKLS0tIGEvbGli L3Rvb2xfc2hlZC91dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKKysrIGIvbGliL3Rvb2xfc2hlZC91 dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKQEAgLTUzNSw5ICs1MzUsMTcgQEAKICAgICByZXR1cm4g cmVwb3NpdG9yeQo9MjAKPTIwCi1kZWYgZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggZmls ZV9wYXRoICk6CitkZWYgZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggYXBwLCBmaWxlX3Bh dGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAiIiJSZXR1cm4gdGhlIGRpc3BsYXktc2FmZSBjb250 ZW50cyBvZiBhIHJlcG9zaXRvcnkgZmlsZSBmb3IgZGlzcGxheSBpPQpuIGEgYnJvd3Nlci4iIiIK LSAgICBpZiBjaGVja2Vycy5pc19nemlwKCBmaWxlX3BhdGggKToKKyAgICBzYWZlX3N0ciA9M0Qg JycKKyAgICBpZiBub3QgaXNfcGF0aF93aXRoaW5fcmVwbyggYXBwLCBmaWxlX3BhdGgsIHJlcG9z aXRvcnlfaWQgKToKKyAgICAgICAgbG9nLndhcm5pbmcoICdSZXF1ZXN0IHRyaWVzIHRvIGFjY2Vz cyBhIGZpbGUgb3V0c2lkZSBvZiB0aGUgcmVwb3NpPQp0b3J5IGxvY2F0aW9uLiBGaWxlIHBhdGg6 ICVzJywgZmlsZV9wYXRoICkKKyAgICAgICAgcmV0dXJuICdJbnZhbGlkIGZpbGUgcGF0aCcKKyAg ICAjIFN5bWxpbmsgdGFyZ2V0cyBhcmUgY2hlY2tlZCBieSBpc19wYXRoX3dpdGhpbl9yZXBvCisg ICAgaWYgb3MucGF0aC5pc2xpbmsoIGZpbGVfcGF0aCApOgorICAgICAgICBzYWZlX3N0ciA9M0Qg J2xpbmsgdG86ICcgKyBiYXNpY191dGlsLnRvX2h0bWxfc3RyaW5nKCBvcy5yZWFkbGluayg9CiBm aWxlX3BhdGggKSApCisgICAgICAgIHJldHVybiBzYWZlX3N0cgorICAgIGVsaWYgY2hlY2tlcnMu aXNfZ3ppcCggZmlsZV9wYXRoICk6CiAgICAgICAgIHJldHVybiAnPGJyLz5nemlwIGNvbXByZXNz ZWQgZmlsZTxici8+JwogICAgIGVsaWYgY2hlY2tlcnMuaXNfYnoyKCBmaWxlX3BhdGggKToKICAg ICAgICAgcmV0dXJuICc8YnIvPmJ6MiBjb21wcmVzc2VkIGZpbGU8YnIvPicKQEAgLTU0Niw3ICs1 NTQsNiBAQAogICAgIGVsaWYgY2hlY2tlcnMuY2hlY2tfYmluYXJ5KCBmaWxlX3BhdGggKToKICAg ICAgICAgcmV0dXJuICc8YnIvPkJpbmFyeSBmaWxlPGJyLz4nCiAgICAgZWxzZToKLSAgICAgICAg c2FmZV9zdHIgPTNEICcnCiAgICAgICAgIGZvciBpLCBsaW5lIGluIGVudW1lcmF0ZSggb3Blbigg ZmlsZV9wYXRoICkgKToKICAgICAgICAgICAgIHNhZmVfc3RyID0zRCAnJXMlcycgJSAoIHNhZmVf c3RyLCBiYXNpY191dGlsLnRvX2h0bWxfc3RyaW5nKCBsPQppbmUgKSApCiAgICAgICAgICAgICAj IFN0b3AgcmVhZGluZyBhZnRlciBzdHJpbmcgaXMgbGFyZ2VyIHRoYW4gTUFYX0NPTlRFTlRfU0la RS4KQEAgLTU1Niw2ICs1NjMsNyBAQAogICAgICAgICAgICAgICAgICAgICB1dGlsLm5pY2Vfc2l6 ZSggTUFYX0NPTlRFTlRfU0laRSApCiAgICAgICAgICAgICAgICAgc2FmZV9zdHIgPTNEICclcyVz JyAlICggc2FmZV9zdHIsIGxhcmdlX3N0ciApCiAgICAgICAgICAgICAgICAgYnJlYWsKKwogICAg ICAgICBpZiBsZW4oIHNhZmVfc3RyICkgPiBiYXNpY191dGlsLk1BWF9ESVNQTEFZX1NJWkU6CiAg ICAgICAgICAgICAjIEVsaW1pbmF0ZSB0aGUgbWlkZGxlIG9mIHRoZSBmaWxlIHRvIGRpc3BsYXkg YSBmaWxlIG5vIGxhcmdlcj0KIHRoYW4gYmFzaWNfdXRpbC5NQVhfRElTUExBWV9TSVpFLgogICAg ICAgICAgICAgIyBUaGlzIG1heSBub3QgYmUgaWRlYWwgaWYgdGhlIGZpbGUgaXMgbGFyZ2VyIHRo YW4gTUFYX0NPTlRFTlQ9Cl9TSVpFLgpAQCAtNTc3LDkgKzU4NSw2IEBACiAgICAgICAgICMgU2tp cCAuaGcgZGlyZWN0b3JpZXMKICAgICAgICAgaWYgaXRlbS5zdGFydHN3aXRoKCAnLmhnJyApOgog ICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgb3MucGF0aC5pc2Rpciggb3MucGF0aC5q b2luKCBmb2xkZXJfcGF0aCwgaXRlbSApICk6Ci0gICAgICAgICAgICAjIEFwcGVuZCBhICcvJyBj aGFyYWN0ZXIgc28gdGhhdCBvdXIganF1ZXJ5IGR5bmF0cmVlIHdpbGwgZnVuYz0KdGlvbiBwcm9w ZXJseS4KLSAgICAgICAgICAgIGl0ZW0gPTNEICclcy8nICUgaXRlbQogICAgICAgICBjb250ZW50 cy5hcHBlbmQoIGl0ZW0gKQogICAgIGlmIGNvbnRlbnRzOgogICAgICAgICBjb250ZW50cy5zb3J0 KCkKQEAgLTEwNTQsMTEgKzEwNTksMTUgQEAKICAgICByZXR1cm4gaGFzYXR0ciggYXBwLCAiaW5z dGFsbF9tb2RlbCIgKQo9MjAKPTIwCi1kZWYgb3Blbl9yZXBvc2l0b3J5X2ZpbGVzX2ZvbGRlcigg Zm9sZGVyX3BhdGggKToKK2RlZiBvcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCBhcHAsIGZv bGRlcl9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAgICAgIiIiCiAgICAgUmV0dXJuIGEgbGlzdCBv ZiBkaWN0aW9uYXJpZXMsIGVhY2ggb2Ygd2hpY2ggY29udGFpbnMgaW5mb3JtYXRpb24gZm9yID0K YSBmaWxlIG9yIGRpcmVjdG9yeSBjb250YWluZWQKICAgICB3aXRoaW4gYSBkaXJlY3RvcnkgaW4g YSByZXBvc2l0b3J5IGZpbGUgaGllcmFyY2h5LgogICAgICIiIgorICAgICMgU3ltbGluayB0YXJn ZXRzIGFyZSBjaGVja2VkIGJ5IGlzX3BhdGhfd2l0aGluX3JlcG8KKyAgICBpZiBub3QgaXNfcGF0 aF93aXRoaW5fcmVwbyggYXBwLCBmb2xkZXJfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgorICAgICAg ICBsb2cud2FybmluZyggJ1JlcXVlc3QgdHJpZXMgdG8gYWNjZXNzIGEgZm9sZGVyIG91dHNpZGUg b2YgdGhlIHJlcG89CnNpdG9yeSBsb2NhdGlvbi4gRm9sZGVyIHBhdGg6ICVzJywgZm9sZGVyX3Bh dGggKQorICAgICAgICByZXR1cm4gW10KICAgICB0cnk6CiAgICAgICAgIGZpbGVzX2xpc3QgPTNE IGdldF9yZXBvc2l0b3J5X2ZpbGVzKCBmb2xkZXJfcGF0aCApCiAgICAgZXhjZXB0IE9TRXJyb3Is IGU6CkBAIC0xMDY4LDEwICsxMDc3LDE3IEBACiAgICAgZm9sZGVyX2NvbnRlbnRzID0zRCBbXQog ICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlc19saXN0OgogICAgICAgICBpc19mb2xkZXIgPTNEIEZh bHNlCi0gICAgICAgIGlmIGZpbGVuYW1lIGFuZCBmaWxlbmFtZVsgLTEgXSA9M0Q9M0Qgb3Muc2Vw OgotICAgICAgICAgICAgaXNfZm9sZGVyID0zRCBUcnVlCisgICAgICAgIGZ1bGxfcGF0aCA9M0Qg b3MucGF0aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUgKQorICAgICAgICBpc19saW5rID0z RCBvcy5wYXRoLmlzbGluayggZnVsbF9wYXRoICkKKyAgICAgICAgcGF0aF9pc193aXRoaW5fcmVw byA9M0QgaXNfcGF0aF93aXRoaW5fcmVwbyggYXBwLCBmdWxsX3BhdGgsIHJlcG9zPQppdG9yeV9p ZCApCisgICAgICAgIGlmIGlzX2xpbmsgYW5kIG5vdCBwYXRoX2lzX3dpdGhpbl9yZXBvOgorICAg ICAgICAgICAgbG9nLndhcm5pbmcoICdWYWxpZCBmb2xkZXIgY29udGFpbnMgYSBzeW1saW5rIG91 dHNpZGUgb2YgdGhlIHI9CmVwb3NpdG9yeSBsb2NhdGlvbi4gTGluayBmb3VuZCBpbjogJyArIHN0 ciggZnVsbF9wYXRoICkgKQogICAgICAgICBpZiBmaWxlbmFtZToKLSAgICAgICAgICAgIGZ1bGxf cGF0aCA9M0Qgb3MucGF0aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUgKQorICAgICAgICAg ICAgaWYgb3MucGF0aC5pc2RpciggZnVsbF9wYXRoICkgYW5kIHBhdGhfaXNfd2l0aGluX3JlcG86 CisgICAgICAgICAgICAgICAgIyBBcHBlbmQgYSAnLycgY2hhcmFjdGVyIHNvIHRoYXQgb3VyIGpx dWVyeSBkeW5hdHJlZSB3aWxsID0KZnVuY3Rpb24gcHJvcGVybHkuCisgICAgICAgICAgICAgICAg ZmlsZW5hbWUgPTNEICclcy8nICUgZmlsZW5hbWUKKyAgICAgICAgICAgICAgICBmdWxsX3BhdGgg PTNEICclcy8nICUgZnVsbF9wYXRoCisgICAgICAgICAgICAgICAgaXNfZm9sZGVyID0zRCBUcnVl CiAgICAgICAgICAgICBub2RlID0zRCB7ICJ0aXRsZSI6IGZpbGVuYW1lLAogICAgICAgICAgICAg ICAgICAgICAgImlzRm9sZGVyIjogaXNfZm9sZGVyLAogICAgICAgICAgICAgICAgICAgICAgImlz TGF6eSI6IGlzX2ZvbGRlciwKQEAgLTEwODEsNiArMTA5NywxNiBAQAogICAgIHJldHVybiBmb2xk ZXJfY29udGVudHMKPTIwCj0yMAorZGVmIGlzX3BhdGhfd2l0aGluX3JlcG8oIGFwcCwgcGF0aCwg cmVwb3NpdG9yeV9pZCApOgorICAgICIiIgorICAgIERldGVjdCB3aGV0aGVyIHRoZSBnaXZlbiBw YXRoIGlzIHdpdGhpbiB0aGUgcmVwb3NpdG9yeSBmb2xkZSByb24gdGhlIGQ9Cmlzay4KKyAgICBV c2UgdG8gZmlsdGVyIG1hbGljaW91cyBzeW1saW5rcyB0YXJnZXRpbmcgb3V0c2lkZSBwYXRocy4K KyAgICAiIiIKKyAgICByZXBvX3BhdGggPTNEIG9zLnBhdGguYWJzcGF0aCggZ2V0X3JlcG9zaXRv cnlfYnlfaWQoIGFwcCwgcmVwb3NpdG9yeV9pPQpkICkucmVwb19wYXRoKCBhcHAgKSApCisgICAg cmVzb2x2ZWRfcGF0aCA9M0Qgb3MucGF0aC5yZWFscGF0aCggcGF0aCApCisgICAgcmV0dXJuIG9z LnBhdGguY29tbW9ucHJlZml4KCBbIHJlcG9fcGF0aCwgcmVzb2x2ZWRfcGF0aCBdICkgPTNEPTNE IHJlcD0Kb19wYXRoCisKKwogZGVmIHJlcG9zaXRvcnlfd2FzX3ByZXZpb3VzbHlfaW5zdGFsbGVk KCBhcHAsIHRvb2xfc2hlZF91cmwsIHJlcG9zaXRvcnlfbmE9Cm1lLCByZXBvX2luZm9fdHVwbGUs IGZyb21fdGlwPTNERmFsc2UgKToKICAgICAiIiIKICAgICBGaW5kIG91dCBpZiBhIHJlcG9zaXRv cnkgaXMgYWxyZWFkeSBpbnN0YWxsZWQgaW50byBHYWxheHkgLSB0aGVyZSBhcmUgPQpzZXZlcmFs IHNjZW5hcmlvcyB3aGVyZSB0aGlzCgpkaWZmIC1yIDIwZDVhMjFhZGQ5YWI0NWQ5YzRjNWMyNmQ2 ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0ZThhNjQwOTM9CmYzZmM0YzQzNzBmNTE1 YjRlIHNjcmlwdHMvY2xlYW51cF9kYXRhc2V0cy9jbGVhbnVwX2RhdGFzZXRzLnB5Ci0tLSBhL3Nj cmlwdHMvY2xlYW51cF9kYXRhc2V0cy9jbGVhbnVwX2RhdGFzZXRzLnB5CisrKyBiL3NjcmlwdHMv Y2xlYW51cF9kYXRhc2V0cy9jbGVhbnVwX2RhdGFzZXRzLnB5CkBAIC00NjUsNyArNDY1LDcgQEAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaGRhLmhpc3RvcnkudXNlciBpcyBu b3QgTm9uZSBhbmQgaGRhLmhpPQpzdG9yeS51c2VyIG5vdCBpbiB1c2FnZV91c2VyczoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlX3VzZXJzLmFwcGVuZCggaGRhLmhp c3RvcnkudXNlciApCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdXNlciBpbiB1c2FnZV91 c2VyczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnRvdGFsX2Rpc2tfdXNhZ2Ug LT0zRCBkYXRhc2V0LnRvdGFsX3NpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vy LnRvdGFsX2Rpc2tfdXNhZ2UgLT0zRCBkYXRhc2V0LmdldF90b3RhbF9zPQppemUoKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFwcC5zYV9zZXNzaW9uLmFkZCggdXNlciApCiAgICAgICAg ICAgICAgICAgICAgIHByaW50ICJQdXJnaW5nIGRhdGFzZXQgaWQiLCBkYXRhc2V0LmlkCiAgICAg ICAgICAgICAgICAgICAgIGRhdGFzZXQucHVyZ2VkID0zRCBUcnVlCgpkaWZmIC1yIDIwZDVhMjFh ZGQ5YWI0NWQ5YzRjNWMyNmQ2ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0ZThhNjQw OTM9CmYzZmM0YzQzNzBmNTE1YjRlIHRlbXBsYXRlcy9hZG1pbi9yZXF1ZXN0cy9zZWxlY3RfZGF0 YXNldHNfdG9fdHJhbnNmZXIubWFrbwotLS0gYS90ZW1wbGF0ZXMvYWRtaW4vcmVxdWVzdHMvc2Vs ZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyLm1ha28KKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAs MCBAQAotPCVpbmhlcml0IGZpbGU9M0QiL2Jhc2UubWFrbyIvPgotPCVuYW1lc3BhY2UgZmlsZT0z RCIvbWVzc2FnZS5tYWtvIiBpbXBvcnQ9M0QicmVuZGVyX21zZyIgLz4KLTwlbmFtZXNwYWNlIGZp bGU9M0QiL3JlcXVlc3RzL2NvbW1vbi9jb21tb24ubWFrbyIgaW1wb3J0PTNEInJlbmRlcl9zYW1w bGVfPQpkYXRhc2V0cyIgLz4KLTwlbmFtZXNwYWNlIGZpbGU9M0QiL3JlcXVlc3RzL2NvbW1vbi9j b21tb24ubWFrbyIgaW1wb3J0PTNEImNvbW1vbl9qYXZhc2NyPQppcHRzIiAvPgotCi08JWRlZiBu YW1lPTNEImphdmFzY3JpcHRzKCkiPgotICAgJHtwYXJlbnQuamF2YXNjcmlwdHMoKX0KLSAgICR7 Y29tbW9uX2phdmFzY3JpcHRzKCl9Ci08LyVkZWY+Ci0KLSR7aC5qcyggImxpYnMvanF1ZXJ5L2px dWVyeS11aSIsICJsaWJzL2pxdWVyeS9qcXVlcnkuY29va2llIiwgImxpYnMvanF1ZXJ5PQovanF1 ZXJ5LmR5bmF0cmVlIiApfQotJHtoLmNzcyggImR5bmF0cmVlX3NraW4vdWkuZHluYXRyZWUiICl9 Ci0KLTxzY3JpcHQgdHlwZT0zRCJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICQoZnVuY3Rpb24oKXsK LSAgICAgICAgJCgiI3RyZWUiKS5hamF4Q29tcGxldGUoZnVuY3Rpb24oZXZlbnQsIFhNTEh0dHBS ZXF1ZXN0LCBhamF4T3B0aW9uPQpzKSB7Ci0gICAgICAgICAgICBfbG9nKCJkZWJ1ZyIsICJhamF4 Q29tcGxldGU6ICVvIiwgdGhpcyk7IC8vIGRvbSBlbGVtZW50IGxpc3Rlbj0KaW5nCi0gICAgICAg IH0pOwotICAgICAgICAvLyAtLS0gSW5pdGlhbGl6ZSBzYW1wbGUgdHJlZXMKLSAgICAgICAgJCgi I3RyZWUiKS5keW5hdHJlZSh7Ci0gICAgICAgICAgICB0aXRsZTogIiR7c2NwX2NvbmZpZ3NbJ2Rh dGFfbG9jYXRpb24nXX0iLAotICAgICAgICAgICAgcm9vdFZpc2libGU6IHRydWUsCi0gICAgICAg ICAgICBtaW5FeHBhbmRMZXZlbDogMCwgLy8gMTogcm9vdCBub2RlIGlzIG5vdCBjb2xsYXBzaWJs ZQotICAgICAgICAgICAgcGVyc2lzdDogZmFsc2UsCi0gICAgICAgICAgICBjaGVja2JveDogdHJ1 ZSwKLSAgICAgICAgICAgIHNlbGVjdE1vZGU6IDMsCi0gICAgICAgICAgICBvblBvc3RJbml0OiBm dW5jdGlvbihpc1JlbG9hZGluZywgaXNFcnJvcikgewotICAgICAgICAgICAgICAgIC8vYWxlcnQo InJlbG9hZGluZzogIitpc1JlbG9hZGluZysiLCBlcnJvcjoiK2lzRXJyb3IpOwotICAgICAgICAg ICAgICAgIGxvZ01zZygib25Qb3N0SW5pdCglbywgJW8pIC0gJW8iLCBpc1JlbG9hZGluZywgaXNF cnJvciwgdGg9CmlzKTsKLSAgICAgICAgICAgICAgICAvLyBSZS1maXJlIG9uQWN0aXZhdGUsIHNv IHRoZSB0ZXh0IGlzIHVwZGF0ZWQKLSAgICAgICAgICAgICAgICB0aGlzLnJlYWN0aXZhdGUoKTsK LSAgICAgICAgICAgIH0sPTIwCi0gICAgICAgICAgICBmeDogeyBoZWlnaHQ6ICJ0b2dnbGUiLCBk dXJhdGlvbjogMjAwIH0sCi0gICAgICAgICAgICAvLyBpbml0QWpheCBpcyBoYXJkIHRvIGZha2Us IHNvIHdlIHBhc3MgdGhlIGNoaWxkcmVuIGFzIG9iamVjdD0KIGFycmF5OgotICAgICAgICAgICAg aW5pdEFqYXg6IHt1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXF1ZXN0c19hZG1p bicsIGE9CmN0aW9uPTNEJ29wZW5fZm9sZGVyJyApfSIsCi0gICAgICAgICAgICAgICAgICAgICAg IGRhdGFUeXBlOiAianNvbiIsPTIwCi0gICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgcmVx dWVzdF9pZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCByZT0KcXVlc3QuaWQgKX0iLCBl eHRlcm5hbF9zZXJ2aWNlX2lkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFs X3NlPQpydmljZS5pZCApfSIsIGtleTogIiR7c2NwX2NvbmZpZ3NbJ2RhdGFfbG9jYXRpb24nXX0i IH0sCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgb25MYXp5UmVhZDogZnVuY3Rpb24oZHRu b2RlKXsKLSAgICAgICAgICAgICAgICBkdG5vZGUuYXBwZW5kQWpheCh7Ci0gICAgICAgICAgICAg ICAgICAgIHVybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlc3RzX2FkbWluJywg YWN0aT0Kb249M0Qnb3Blbl9mb2xkZXInICl9Iiw9MjAKLSAgICAgICAgICAgICAgICAgICAgZGF0 YVR5cGU6ICJqc29uIiwKLSAgICAgICAgICAgICAgICAgICAgZGF0YTogeyByZXF1ZXN0X2lkOiAi JHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVlPQpzdC5pZCApfSIsIGV4dGVybmFsX3Nl cnZpY2VfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggZXh0ZXJuYWxfc2Vydmk9CmNl LmlkICl9Iiwga2V5OiBkdG5vZGUuZGF0YS5rZXkgfSwKLSAgICAgICAgICAgICAgICB9KTsKLSAg ICAgICAgICAgIH0sCi0gICAgICAgICAgICBvblNlbGVjdDogZnVuY3Rpb24oc2VsZWN0LCBkdG5v ZGUpIHsKLSAgICAgICAgICAgICAgICAvLyBEaXNwbGF5IGxpc3Qgb2Ygc2VsZWN0ZWQgbm9kZXMK LSAgICAgICAgICAgICAgICB2YXIgc2VsTm9kZXMgPTNEIGR0bm9kZS50cmVlLmdldFNlbGVjdGVk Tm9kZXMoKTsKLSAgICAgICAgICAgICAgICAvLyBjb252ZXJ0IHRvIHRpdGxlL2tleSBhcnJheQot ICAgICAgICAgICAgICAgIHZhciBzZWxLZXlzID0zRCAkLm1hcChzZWxOb2RlcywgZnVuY3Rpb24o bm9kZSl7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmRhdGEua2V5OwotICAgICAg ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGRvY3VtZW50LnNlbGVjdF9kYXRhc2V0c190 b190cmFuc2Zlci5zZWxlY3RlZF9kYXRhc2V0c190b189CnRyYW5zZmVyLnZhbHVlID0zRCBzZWxL ZXlzLmpvaW4oIiwiKQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIG9uQWN0aXZhdGU6IGZ1 bmN0aW9uKGR0bm9kZSkgewotICAgICAgICAgICAgICAgIHZhciBjZWxsID0zRCAkKCIjZmlsZV9k ZXRhaWxzIik7Ci0gICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkX3ZhbHVlOwotICAgICAgICAg ICAgICAgIGlmIChkdG5vZGUuZGF0YS5rZXkgPTNEPTNEICdyb290JykgewotICAgICAgICAgICAg ICAgICAgICBzZWxlY3RlZF92YWx1ZSA9M0QgIiR7c2NwX2NvbmZpZ3NbJ2RhdGFfbG9jYXRpb24n XX0vIjsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzZWxl Y3RlZF92YWx1ZSA9M0QgZHRub2RlLmRhdGEua2V5OwotICAgICAgICAgICAgICAgIH07Ci0gICAg ICAgICAgICAgICAgaWYgKHNlbGVjdGVkX3ZhbHVlLmNoYXJBdChzZWxlY3RlZF92YWx1ZS5sZW5n dGgtMSkgIT0zRCAnLz0KJykgewotICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIGFqYXggY2Fs bAotICAgICAgICAgICAgICAgICAgICAkLmFqYXgoIHsKLSAgICAgICAgICAgICAgICAgICAgICAg IHR5cGU6ICJQT1NUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVybDogIiR7aC51cmxfZm9y KCBjb250cm9sbGVyPTNEJ3JlcXVlc3RzX2FkbWluJywgPQphY3Rpb249M0QnZ2V0X2ZpbGVfZGV0 YWlscycgKX0iLAotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiwKLSAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgcmVxdWVzdF9pZDogIiR7dHJhbnMuc2VjdXJp dHkuZW5jb2RlX2lkKHJlPQpxdWVzdC5pZCl9IiwgZXh0ZXJuYWxfc2VydmljZV9pZDogIiR7dHJh bnMuc2VjdXJpdHkuZW5jb2RlX2lkKGV4dGVybmFsX3NlcnY9CmljZS5pZCl9IiwgZm9sZGVyX3Bh dGg6IHNlbGVjdGVkX3ZhbHVlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzIDog ZnVuY3Rpb24gKCBkYXRhICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuaHRt bCggJzxsYWJlbD4nK2RhdGErJzwvbGFiZWw+JyApCi0gICAgICAgICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICAgICAgICAgIGNlbGwuaHRtbCggJycgKTsKLSAgICAgICAgICAgICAgICB9OwotICAg ICAgICAgICAgfSwKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci08L3NjcmlwdD4KLQotPCUKLSAgICBp c19hZG1pbiA9M0QgY250cmxsZXIgPTNEPTNEICdyZXF1ZXN0c19hZG1pbicgYW5kIHRyYW5zLnVz ZXJfaXNfYWRtaW4oKQotICAgIGNhbl90cmFuc2Zlcl9kYXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5k IHNhbXBsZS51bnRyYW5zZmVycmVkX2RhdGFzZXRfZmk9CmxlcyBhbmQgc2FtcGxlLmxpYnJhcnkg YW5kIHNhbXBsZS5mb2xkZXIKLSU+Ci0KLTxici8+PGJyLz4KLTx1bCBjbGFzcz0zRCJtYW5hZ2Ut dGFibGUtYWN0aW9ucyI+Ci0gICAgPGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZWY9 M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnZXh0ZT0Kcm5hbF9zZXJ2aWNlJywgYWN0aW9u PTNEJ3ZpZXdfZXh0ZXJuYWxfc2VydmljZScsIGlkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlPQpf aWQoIGV4dGVybmFsX3NlcnZpY2UuaWQgKSApfSI+RXh0ZXJuYWwgc2VydmljZSBjb25maWd1cmF0 aW9uPC9hPjwvbGk+Ci0gICAgJWlmIGNhbl90cmFuc2Zlcl9kYXRhc2V0czoKLSAgICAgICAgPGxp PjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZWY9M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xs ZXI9M0QnPQpyZXF1ZXN0c19hZG1pbicsIGFjdGlvbj0zRCdtYW5hZ2VfZGF0YXNldHMnLCBjbnRy bGxlcj0zRGNudHJsbGVyLCBzYW1wbGVfaWQ9Cj0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCgg c2FtcGxlLmlkICkgKX0iPlRyYW5zZmVyIGRhdGFzZXRzPC9hPjwvbGk+Ci0gICAgJWVuZGlmCi0g ICAgPGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZWY9M0QiJHtoLnVybF9mb3IoIGNv bnRyb2xsZXI9M0QncmVxdT0KZXN0c19jb21tb24nLCBhY3Rpb249M0Qndmlld19yZXF1ZXN0Jywg Y250cmxsZXI9M0RjbnRybGxlciwgaWQ9M0R0cmFucy5zZWN1PQpyaXR5LmVuY29kZV9pZCggcmVx dWVzdC5pZCApICl9Ij5Ccm93c2UgdGhpcyByZXF1ZXN0PC9hPjwvbGk+Ci08L3VsPgotCi0laWYg bm90IHNhbXBsZToKLSAgICA8YnIvPgotICAgIDxmb250IGNvbG9yPTNEInJlZCI+PGI+PGk+U2Vs ZWN0IGEgc2FtcGxlIGJlZm9yZSBzZWxlY3RpbmcgZGF0YXNldHMgdG89CiB0cmFuc2ZlcjwvaT48 L2I+PC9mb250PgotICAgIDxici8+Ci0lZW5kaWYKLQotJWlmIHJlcXVlc3Quc2FtcGxlc193aXRo b3V0X2xpYnJhcnlfZGVzdGluYXRpb25zOgotICAgIDxwPgotICAgIDxmb250IGNvbG9yPTNEInJl ZCI+PGI+PGk+U2VsZWN0IGEgdGFyZ2V0IGRhdGEgbGlicmFyeSBhbmQgZm9sZGVyIGZvciA9CmEg c2FtcGxlIGJlZm9yZSBzZWxlY3RpbmcgaXRzIGRhdGFzZXRzIHRvIHRyYW5zZmVyIGZyb20gdGhl IGV4dGVybmFsIHNlcnZpYz0KZTwvaT48L2I+PC9mb250PgotICAgIDwvcD4KLSVlbmRpZgotCi0l aWYgbWVzc2FnZToKLSAgICAke3JlbmRlcl9tc2coIG1lc3NhZ2UsIHN0YXR1cyApfQotJWVuZGlm Ci0KLTxkaXYgY2xhc3M9M0QidG9vbEZvcm0iPgotICAgIDxkaXYgY2xhc3M9M0QidG9vbEZvcm1U aXRsZSI+U2VsZWN0IGRhdGFzZXRzIHRvIHRyYW5zZmVyIGZyb20gZGF0YSBkaXI9CmVjdG9yeSBj b25maWd1cmVkIGZvciB0aGUgZXh0ZXJuYWwgc2VydmljZTwvZGl2PgotICAgIDxmb3JtIG5hbWU9 M0Qic2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyIiBpZD0zRCJzZWxlY3RfZGF0YXNldHNfdG9f dHI9CmFuc2ZlciIgYWN0aW9uPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlc3Rz X2FkbWluJywgYWN0aW9uPTNEJ3NlbD0KZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyJywgY250cmxs ZXI9M0RjbnRybGxlciwgZXh0ZXJuYWxfc2VydmljZV9pZD0zRHRyYW5zPQouc2VjdXJpdHkuZW5j b2RlX2lkKCBleHRlcm5hbF9zZXJ2aWNlLmlkICksIHJlcXVlc3RfaWQ9M0R0cmFucy5zZWN1cml0 eS5lbmM9Cm9kZV9pZCggcmVxdWVzdC5pZCApKX0iIG1ldGhvZD0zRCJwb3N0IiA+Ci0gICAgICAg IDxkaXYgY2xhc3M9M0QiZm9ybS1yb3ciPgotICAgICAgICAgICAgPGxhYmVsPlNhbXBsZTo8L2xh YmVsPgotICAgICAgICAgICAgJHtzYW1wbGVfaWRfc2VsZWN0X2ZpZWxkLmdldF9odG1sKCl9Ci0g ICAgICAgICAgICA8ZGl2IGNsYXNzPTNEInRvb2xQYXJhbUhlbHAiIHN0eWxlPTNEImNsZWFyOiBi b3RoOyI+Ci0gICAgICAgICAgICAgICAgU2VsZWN0IHRoZSBzYW1wbGUgdGhhdCB3YXMgc2VxdWVu Y2VkIHRvIHByb2R1Y2UgdGhlIGRhdGFzZT0KdHMgeW91IHdhbnQgdG8gdHJhbnNmZXIuCi0gICAg ICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9M0QiZm9y bS1yb3ciID4KLSAgICAgICAgICAgIDxsYWJlbD5TZWxlY3QgZGF0YXNldHMgZnJvbSBzb3VyY2Ug ZGF0YSBsb2NhdGlvbiBkZWZpbmVkIGluIHRoPQplIGV4dGVybmFsIHNlcnZpY2UgY29uZmlndXJh dGlvbjo8L2xhYmVsPgotICAgICAgICAgICAgPGRpdiBpZD0zRCJ0cmVlIiA+Ci0gICAgICAgICAg ICAgICAgTG9hZGluZy4uLgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8aW5wdXQg aWQ9M0Qic2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXIiIG5hbWU9M0Qic2VsZWN0ZWRfZD0K YXRhc2V0c190b190cmFuc2ZlciIgdHlwZT0zRCJoaWRkZW4iIHNpemU9M0Q0MCIvPgotICAgICAg ICAgICAgPGRpdiBjbGFzcz0zRCJ0b29sUGFyYW1IZWxwIiBzdHlsZT0zRCJjbGVhcjogYm90aDsi PgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICAgICAgPGxpPkNsaWNrIHRo ZSA8Yj5leHRlcm5hbCBzZXJ2aWNlIGNvbmZpZ3VyYXRpb248L2I+IGJ1PQp0dG9uIGFuZCBjaGFu Z2UgdGhlIDxiPkRhdGEgZGlyZWN0b3J5PC9iPiBzZXR0aW5nIHRvIHJlZGVmaW5lIHRoZSBzb3Vy Y2UgZGE9CnRhIGxvY2F0aW9uLjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT5TZWxlY3Qg YSBmb2xkZXIgdG8gc2VsZWN0IGFsbCBvZiB0aGUgaW5kaXZpZHVhbCBmaT0KbGVzIHdpdGhpbiB0 aGF0IGZvbGRlci48L2xpPgotICAgICAgICAgICAgICAgICAgICA8bGk+Q2xpY2sgdGhlIDxiPlNl bGVjdCBkYXRhc2V0czwvYj4gYnV0dG9uIHdoZW4gZGVzaXI9CmVkIGRhdGFzZXQgY2hlY2sgYm94 ZXMgYXJlIGNoZWNrZWQuPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAg PC9kaXY+ICAgICAgICAgICA9MjAKLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9 M0QiZm9ybS1yb3ciPgotICAgICAgICAgICAgPGRpdiBpZD0zRCJmaWxlX2RldGFpbHMiIGNsYXNz PTNEInRvb2xQYXJhbUhlbHAiIHN0eWxlPTNEImNsZWE9CnI6IGJvdGg7YmFja2dyb3VuZC1jb2xv cjojRkFGQUZBOyI+PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPTNE ImZvcm0tcm93Ij4KLSAgICAgICAgICAgIDxpbnB1dCB0eXBlPTNEInN1Ym1pdCIgbmFtZT0zRCJz ZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXJfYnV0PQp0b24iIHZhbHVlPTNEIlNlbGVjdCBkYXRh c2V0cyIvPgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Zvcm0+Ci08L2Rpdj4KLQotJWlmIHNhbXBs ZSBhbmQgc2FtcGxlLmRhdGFzZXRzOgotICAgIDwlIHRpdGxlID0zRCAnQWxsIHNlbGVjdGVkIGRh dGFzZXRzIGZvciAiJXMiJyAlIHNhbXBsZS5uYW1lICU+Ci0gICAgPHAvPgotICAgICR7cmVuZGVy X3NhbXBsZV9kYXRhc2V0cyggJ3JlcXVlc3RzX2FkbWluJywgc2FtcGxlLCBzYW1wbGUuZGF0YXNl dHMsIHQ9Cml0bGUgKX0KLSVlbmRpZgoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZk Njg2OTllNzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUx NWI0ZSB0ZW1wbGF0ZXMvYWRtaW4vdG9vbF9zaGVkX3JlcG9zaXRvcnkvY29tbW9uLm1ha28KLS0t IGEvdGVtcGxhdGVzL2FkbWluL3Rvb2xfc2hlZF9yZXBvc2l0b3J5L2NvbW1vbi5tYWtvCisrKyBi L3RlbXBsYXRlcy9hZG1pbi90b29sX3NoZWRfcmVwb3NpdG9yeS9jb21tb24ubWFrbwpAQCAtMjMs MTQgKzIzLDE2IEBACiAgICAgICAgICAgICAgICAgZng6IHsgaGVpZ2h0OiAidG9nZ2xlIiwgZHVy YXRpb246IDIwMCB9LAogICAgICAgICAgICAgICAgIC8vIGluaXRBamF4IGlzIGhhcmQgdG8gZmFr ZSwgc28gd2UgcGFzcyB0aGUgY2hpbGRyZW4gYXMgb2I9CmplY3QgYXJyYXk6CiAgICAgICAgICAg ICAgICAgaW5pdEFqYXg6IHt1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdhZG1pbl90 b29sc2hlZD0KJywgYWN0aW9uPTNEJ29wZW5fZm9sZGVyJyApfSIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLD0yMAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YTogeyBmb2xkZXJfcGF0aDogIiR7ZGlyZWN0b3J5X3BhdGh8aH0iIH0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0aDogIiR7ZGlyZWN0b3J5X3BhdGh8aH0iLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkOiAiJHt0cmFucy5z ZWN1cml0eS5lbmNvZGU9Cl9pZCggcmVwb3NpdG9yeS5pZCApfSIgfSwKICAgICAgICAgICAgICAg ICB9LAogICAgICAgICAgICAgICAgIG9uTGF6eVJlYWQ6IGZ1bmN0aW9uKGR0bm9kZSl7CiAgICAg ICAgICAgICAgICAgICAgIGR0bm9kZS5hcHBlbmRBamF4KHsKLSAgICAgICAgICAgICAgICAgICAg ICAgIHVybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ2FkbWluX3Rvb2xzaGVkJywgPQph Y3Rpb249M0Qnb3Blbl9mb2xkZXInICl9Iiw9MjAKKyAgICAgICAgICAgICAgICAgICAgICAgIHVy bDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ2FkbWluX3Rvb2xzaGVkJywgPQphY3Rpb249 M0Qnb3Blbl9mb2xkZXInICl9IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAi anNvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiBkdG5v ZGUuZGF0YS5rZXkgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9sZGVyX3Bh dGg6IGR0bm9kZS5kYXRhLmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVw b3NpdG9yeV9pZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkPQooIHJlcG9zaXRvcnkuaWQg KX0iIH0sCiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0sCiAgICAg ICAgICAgICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uKHNlbGVjdCwgZHRub2RlKSB7CkBAIC01NSw3 ICs1Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIlBPU1QiLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNE J2FkbWluX3Rvb2xzaGU9CmQnLCBhY3Rpb249M0QnZ2V0X2ZpbGVfY29udGVudHMnICl9IiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGE6IHsgZmlsZV9wYXRoOiBzZWxlY3RlZF92YWx1ZSB9LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZmlsZV9wYXRoOiBzZWxlY3RlZF92YWx1 ZSwgcmVwb3NpdG9yeV89CmlkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcG9zaXRv cnkuaWQgKX0iIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA6IGZ1bmN0 aW9uKCBkYXRhICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmh0bWwo ICc8bGFiZWw+JytkYXRhKyc8L2xhYmVsPicgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2ZDY4Njk5ZTc3MTMxMDBkZCAtciA2 YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1MTViNGUgdGVtcGxhdGVzL3dlYmFw cHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi9jb21tb24ubWFrbwotLS0gYS90ZW1wbGF0ZXMvd2Vi YXBwcy9nYWxheHkvcmVxdWVzdHMvY29tbW9uL2NvbW1vbi5tYWtvCisrKyBiL3RlbXBsYXRlcy93 ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vY29tbW9uLm1ha28KQEAgLTMzMyw3ICszMzMs NiBAQAogICAgICAgIGNhbl9hZGRfc2FtcGxlcyA9M0QgaXNfdW5zdWJtaXR0ZWQKICAgICBjYW5f ZGVsZXRlX3NhbXBsZXMgPTNEIG5vdCBhZGRpbmdfbmV3X3NhbXBsZXMgYW5kIHJlcXVlc3Quc2Ft cGxlcyBhbmQgPQooICggaXNfYWRtaW4gYW5kIG5vdCBpc19jb21wbGV0ZSApIG9yIGlzX3Vuc3Vi bWl0dGVkICkKICAgICBjYW5fZWRpdF9zYW1wbGVzID0zRCByZXF1ZXN0LnNhbXBsZXMgYW5kICgg aXNfYWRtaW4gb3Igbm90IGlzX2NvbXBsZXRlPQogKQotICAgIGNhbl9zZWxlY3RfZGF0YXNldHMg PTNEIGlzX2FkbWluIGFuZCBkaXNwbGF5YWJsZV9zYW1wbGVfd2lkZ2V0cyBhbmQgKCA9CmlzX3N1 Ym1pdHRlZCBvciBpc19jb21wbGV0ZSApCiAgICAgY2FuX3RyYW5zZmVyX2RhdGFzZXRzID0zRCBp c19hZG1pbiBhbmQgcmVxdWVzdC5zYW1wbGVzIGFuZCBub3QgcmVxdWVzdD0KLmlzX3JlamVjdGVk CiAgICAgZGlzcGxheV9jaGVja2JveGVzID0zRCBub3QgYWRkaW5nX25ld19zYW1wbGVzIGFuZCAo IGlzX2NvbXBsZXRlIG9yIGlzXz0KcmVqZWN0ZWQgb3IgaXNfc3VibWl0dGVkICkKICAgICBkaXNw bGF5X2Jhcl9jb2RlID0zRCByZXF1ZXN0LnNhbXBsZXMgYW5kICggaXNfY29tcGxldGUgb3IgaXNf cmVqZWN0ZWQgPQpvciBpc19zdWJtaXR0ZWQgKQpAQCAtNDA3LDcgKzQwNiw3IEBACiAgICAgICAg ICAgICAgICAgJWVsaWYgc2FtcGxlOgogICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICVpZiBzYW1wbGUuc3RhdGUgYW5kICggY2FuX3NlbGVj dF9kYXRhc2V0cyBvciA9CmNhbl90cmFuc2Zlcl9kYXRhc2V0cyApOgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICVpZiBzYW1wbGUuc3RhdGUgYW5kIGNhbl90cmFuc2Zlcl9kYXRhc2V0czoK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMgQSBzYW1wbGUgd2lsbCBoYXZlIGEg c3RhdGUgb25seSBhZnRlciB0PQpoZSByZXF1ZXN0IGhhcyBiZWVuIHN1Ym1pdHRlZC4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPCUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVuY29kZWRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pPQpkKCBzYW1w bGUuaWQgKQpAQCAtNDE5LDE0ICs0MTgsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGEgY2xhc3M9M0Qidmlldy1pbmZvIiBocmVmPTNEIiR7aC51cmw9Cl9mb3IoIGNv bnRyb2xsZXI9M0QncmVxdWVzdHNfY29tbW9uJywgYWN0aW9uPTNEJ3ZpZXdfc2FtcGxlJywgY250 cmxsZXI9M0Rjbj0KdHJsbGVyLCBpZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxl LmlkICkgKX0iPiR7c2FtcGxlLm5hbWUgfCBofTwvPQphPjwvZGl2PjxkaXYgcG9wdXBtZW51PTNE InNhbXBsZS0ke3NhbXBsZS5pZH0tcG9wdXAiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJWlmIGNhbl9zZWxlY3RfZGF0YXNldHM6Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJWZvciBleHRlcm5hbF9zZXJ2aWNlIGluIHNhbXBsZS5yZT0KcXVl c3QudHlwZS5nZXRfZXh0ZXJuYWxfc2VydmljZXNfZm9yX21hbnVhbF9kYXRhX3RyYW5zZmVyKCB0 cmFucyApOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8JQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudV9pdGVt X2xhYmVsID0zRCAiU2VsZWM9CnQgZGF0YXNldHMgdG8gdHJhbnNmZXIgdXNpbmcgJXMiICUgZXh0 ZXJuYWxfc2VydmljZS5uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxs aT48YSBjbGFzcz0zRCJhY3Rpb24tYnV0dG9uIj0KIGhyZWY9M0QiJHtoLnVybF9mb3IoIGNvbnRy b2xsZXI9M0QncmVxdWVzdHNfYWRtaW4nLCBhY3Rpb249M0Qnc2VsZWN0X2RhdGFzPQpldHNfdG9f dHJhbnNmZXInLCBleHRlcm5hbF9zZXJ2aWNlX2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lk KCBleHRlcm5hbF89CnNlcnZpY2UuaWQgKSwgcmVxdWVzdF9pZD0zRHRyYW5zLnNlY3VyaXR5LmVu Y29kZV9pZCggcmVxdWVzdC5pZCApLCBzYW1wbGVfaT0KZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29k ZV9pZCggc2FtcGxlLmlkICkgKX0iPiR7bWVudV9pdGVtX2xhYmVsfTwvYT48L2xpPgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVlbmRmb3IKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICVlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJWlmIHNhbXBsZS5kYXRhc2V0cyBhbmQgbGVuKCBzYW1wbGUuZGE9CnRhc2V0cyAp ID4gbGVuKCB0cmFuc2ZlcnJlZF9kYXRhc2V0X2ZpbGVzICkgYW5kIHNhbXBsZS5saWJyYXJ5IGFu ZCBzYW1wbGUuZj0Kb2xkZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZT0KZj0zRCIke2gudXJsX2Zvcigg Y29udHJvbGxlcj0zRCdyZXF1ZXN0c19hZG1pbicsIGFjdGlvbj0zRCdtYW5hZ2VfZGF0YXNldHMn PQosIHNhbXBsZV9pZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxlLmlkICkgKX0i Pk1hbmFnZSBzZWxlY3RlZCBkYXQ9CmFzZXRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAlZWxpZiBzYW1wbGUuZGF0YXNldHMgYW5kIGxlbiggc2FtcGxlLj0K ZGF0YXNldHMgKSA9M0Q9M0QgbGVuKCB0cmFuc2ZlcnJlZF9kYXRhc2V0X2ZpbGVzICk6CkBAIC02 NjUsNyArNjU2LDYgQEAKICAgICAgICAgICAgIGlzX2FkbWluID0zRCBjbnRybGxlciA9M0Q9M0Qg J3JlcXVlc3RzX2FkbWluJyBhbmQgdHJhbnMudXNlcl9pPQpzX2FkbWluKCkKICAgICAgICAgICAg IGlzX2NvbXBsZXRlID0zRCBzYW1wbGUucmVxdWVzdC5pc19jb21wbGV0ZQogICAgICAgICAgICAg aXNfc3VibWl0dGVkID0zRCBzYW1wbGUucmVxdWVzdC5pc19zdWJtaXR0ZWQKLSAgICAgICAgICAg IGNhbl9zZWxlY3RfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCAoIGlzX2NvbXBsZXRlIG9yIGlz X3N1Ym1pPQp0dGVkICkKICAgICAgICAgICAgIGNhbl90cmFuc2Zlcl9kYXRhc2V0cyA9M0QgaXNf YWRtaW4gYW5kIHNhbXBsZS51bnRyYW5zZmVycmVkX2RhPQp0YXNldF9maWxlcwogICAgICAgICAl PgogICAgICAgICAjIyBUaGUgdHJhbnNmZXIgc3RhdHVzIHNob3VsZCB1cGRhdGUgb25seSB3aGVu IHRoZSByZXF1ZXN0IGhhcyBiZWU9Cm4gc3VibWl0dGVkIG9yIGNvbXBsZXRlCgpkaWZmIC1yIDIw ZDVhMjFhZGQ5YWI0NWQ5YzRjNWMyNmQ2ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0 ZThhNjQwOTM9CmYzZmM0YzQzNzBmNTE1YjRlIHRlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1 ZXN0cy9jb21tb24vdmlld19yZXF1ZXN0X2hpcz0KdG9yeS5tYWtvCi0tLSBhL3RlbXBsYXRlcy93 ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vdmlld19yZXF1ZXN0X2hpc3RvcnkubWFrbwor KysgYi90ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVzdHMvY29tbW9uL3ZpZXdfcmVxdWVz dF9oaXN0b3J5Lm1ha28KQEAgLTExLDcgKzExLDYgQEAKICAgICBjYW5fYWRkX3NhbXBsZXMgPTNE IGlzX3Vuc3VibWl0dGVkCiAgICAgY2FuX2VkaXRfcmVxdWVzdCA9M0QgKCBpc19hZG1pbiBhbmQg bm90IGlzX2NvbXBsZXRlICkgb3IgaXNfdW5zdWJtaXR0ZWQKICAgICBjYW5fcmVqZWN0ID0zRCBp c19hZG1pbiBhbmQgaXNfc3VibWl0dGVkCi0gICAgY2FuX3NlbGVjdF9kYXRhc2V0cyA9M0QgaXNf YWRtaW4gYW5kICggaXNfY29tcGxldGUgb3IgaXNfc3VibWl0dGVkICkKICAgICBjYW5fc3VibWl0 X3JlcXVlc3QgPTNEIHJlcXVlc3Quc2FtcGxlcyBhbmQgaXNfdW5zdWJtaXR0ZWQKICU+Cj0yMAoK ZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRkIC1yIDZjMmZk N2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSB0ZW1wbGF0ZXMvd2ViYXBwcy9n YWxheHkvcmVxdWVzdHMvY29tbW9uL3ZpZXdfc2FtcGxlX2RhdGE9CnNldHMubWFrbwotLS0gYS90 ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVzdHMvY29tbW9uL3ZpZXdfc2FtcGxlX2RhdGFz ZXRzLm1ha28KKysrIGIvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi92 aWV3X3NhbXBsZV9kYXRhc2V0cy5tYWtvCkBAIC0xMiw3ICsxMiw2IEBACiAgICAgaXNfYWRtaW4g PTNEIGNudHJsbGVyID0zRD0zRCAncmVxdWVzdHNfYWRtaW4nIGFuZCB0cmFucy51c2VyX2lzX2Fk bWluKCkKICAgICBpc19jb21wbGV0ZSA9M0Qgc2FtcGxlLnJlcXVlc3QuaXNfY29tcGxldGUKICAg ICBpc19zdWJtaXR0ZWQgPTNEIHNhbXBsZS5yZXF1ZXN0LmlzX3N1Ym1pdHRlZAotICAgIGNhbl9z ZWxlY3RfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCAoIGlzX2NvbXBsZXRlIG9yIGlzX3N1Ym1p dHRlZCApCiAgICAgY2FuX3RyYW5zZmVyX2RhdGFzZXRzID0zRCBpc19hZG1pbiBhbmQgc2FtcGxl LnVudHJhbnNmZXJyZWRfZGF0YXNldF9maT0KbGVzIGFuZCBzYW1wbGUubGlicmFyeSBhbmQgc2Ft cGxlLmZvbGRlcgogJT4KPTIwCkBAIC0yNCw5ICsyMyw2IEBACiAgICAgJWVuZGlmCiAgICAgPGxp PjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGlkPTNEInNhbXBsZS0ke3NhbXBsZS5pZH0tcG9w dXAiIGNsYXNzPQo9M0QibWVudWJ1dHRvbiI+RGF0YXNldCBBY3Rpb25zPC9hPjwvbGk+PGRpdiBw b3B1cG1lbnU9M0Qic2FtcGxlLSR7c2FtcGxlLmk9CmR9LXBvcHVwIj4KLSAgICAgICAgJWlmIGNh bl9zZWxlY3RfZGF0YXNldHM6Ci0gICAgICAgICAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1 dHRvbiIgaHJlZj0zRCIke2gudXJsX2ZvciggY29udHJvbGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWlu JywgYWN0aW9uPTNEJ3NlbGVjdF9kYXRhc2V0c190b190cmFuc2ZlcicsIGNudHJsbGVyPTNEY250 PQpybGxlciwgZXh0ZXJuYWxfc2VydmljZV9pZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCgg ZXh0ZXJuYWxfc2VydmljZS5pZCA9CiksIHJlcXVlc3RfaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNv ZGVfaWQoIHNhbXBsZS5yZXF1ZXN0LmlkICksIHNhbXBsZV9pZD0zRD0KdHJhbnMuc2VjdXJpdHku ZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSApfSI+U2VsZWN0IG1vcmUgZGF0YXNldHM8L2E+PC9saT4K LSAgICAgICAgJWVuZGlmCiAgICAgICAgIDxsaT48YSBjbGFzcz0zRCJhY3Rpb24tYnV0dG9uIiBo cmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJz0KbGlicmFyeV9jb21tb24nLCBhY3Rp b249M0QnYnJvd3NlX2xpYnJhcnknLCBjbnRybGxlcj0zRGNudHJsbGVyLCBpZD0zRHRyYW5zPQou c2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUubGlicmFyeS5pZCApICl9Ij5WaWV3IHRhcmdldCBE YXRhIExpYnJhcnk8L2E+PC89CmxpPjxsaT48YSBjbGFzcz0zRCJhY3Rpb24tYnV0dG9uIiBocmVm PTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlcz0KdHNfY29tbW9uJywgYWN0aW9u PTNEJ3ZpZXdfcmVxdWVzdCcsIGNudHJsbGVyPTNEY250cmxsZXIsIGlkPTNEdHJhbnMuc2VjdXJp PQp0eS5lbmNvZGVfaWQoIHNhbXBsZS5yZXF1ZXN0LmlkICkgKX0iPkJyb3dzZSB0aGlzIHJlcXVl c3Q8L2E+PC9saT48L2Rpdj4KCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2ZDY4Njk5 ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1MTViNGUg dGVtcGxhdGVzL3dlYmFwcHMvdG9vbF9zaGVkL3JlcG9zaXRvcnkvY29tbW9uLm1ha28KLS0tIGEv dGVtcGxhdGVzL3dlYmFwcHMvdG9vbF9zaGVkL3JlcG9zaXRvcnkvY29tbW9uLm1ha28KKysrIGIv dGVtcGxhdGVzL3dlYmFwcHMvdG9vbF9zaGVkL3JlcG9zaXRvcnkvY29tbW9uLm1ha28KQEAgLTIy LDE0ICsyMiwxNCBAQAogICAgICAgICAgICAgICAgIGZ4OiB7IGhlaWdodDogInRvZ2dsZSIsIGR1 cmF0aW9uOiAyMDAgfSwKICAgICAgICAgICAgICAgICAvLyBpbml0QWpheCBpcyBoYXJkIHRvIGZh a2UsIHNvIHdlIHBhc3MgdGhlIGNoaWxkcmVuIGFzIG9iPQpqZWN0IGFycmF5OgogICAgICAgICAg ICAgICAgIGluaXRBamF4OiB7dXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVwb3Np dG9yeScsIGE9CmN0aW9uPTNEJ29wZW5fZm9sZGVyJyApfSIsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhVHlwZTogImpzb24iLD0yMAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGF0YTogeyBmb2xkZXJfcGF0aDogIiR7cmVwb3NpdG9yeS5yZXBvX3BhdGgoIHQ9CnJhbnMuYXBw ICl9IiB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9sZGVyX3BhdGg6ICIke3JlcG9zaXRv cnkucmVwb19wYXRoKCB0PQpyYW5zLmFwcCApfSIsIHJlcG9zaXRvcnlfaWQ6ICIke3RyYW5zLnNl Y3VyaXR5LmVuY29kZV9pZCggcmVwb3NpdG9yeS5pZCApfSI9CiAgfSwKICAgICAgICAgICAgICAg ICB9LAogICAgICAgICAgICAgICAgIG9uTGF6eVJlYWQ6IGZ1bmN0aW9uKGR0bm9kZSl7CiAgICAg ICAgICAgICAgICAgICAgIGR0bm9kZS5hcHBlbmRBamF4KHsKLSAgICAgICAgICAgICAgICAgICAg ICAgIHVybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcG9zaXRvcnknLCBhY3RpPQpv bj0zRCdvcGVuX2ZvbGRlcicgKX0iLD0yMAorICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAi JHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVwb3NpdG9yeScsIGFjdGk9Cm9uPTNEJ29wZW5f Zm9sZGVyJyApfSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAot ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0aDogZHRub2RlLmRhdGEu a2V5IH0sCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiBkdG5v ZGUuZGF0YS5rZXksIHJlcG9zaXRvcnlfaT0KZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lk KCByZXBvc2l0b3J5LmlkICl9IiAgfSwKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg ICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBvblNlbGVjdDogZnVuY3Rpb24oc2VsZWN0LCBk dG5vZGUpIHsKQEAgLTYyLDcgKzYyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 eXBlOiAiUE9TVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9m b3IoIGNvbnRyb2xsZXI9M0QncmVwb3NpdG9yeScsID0KYWN0aW9uPTNEJ2dldF9maWxlX2NvbnRl bnRzJyApfSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZpbGVfcGF0aDogc2VsZWN0ZWRf dmFsdWUgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZpbGVfcGF0aDog c2VsZWN0ZWRfdmFsdWUsIHJlcG9zaXRvcnlfPQppZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2Rl X2lkKCByZXBvc2l0b3J5LmlkICl9IiB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1 Y2Nlc3MgOiBmdW5jdGlvbiAoIGRhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNlbGwuaHRtbCggJzxsYWJlbD4nK2RhdGErJzwvbGFiZWw+JyApCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTll NzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSB0 ZXN0L3VuaXQvdGVzdF9nYWxheHlfbWFwcGluZy5weQotLS0gYS90ZXN0L3VuaXQvdGVzdF9nYWxh eHlfbWFwcGluZy5weQorKysgYi90ZXN0L3VuaXQvdGVzdF9nYWxheHlfbWFwcGluZy5weQpAQCAt NDEzLDcgKzQxMyw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xz KToKICAgICAgICAgIyBTdGFydCB0aGUgZGF0YWJhc2UgYW5kIGNvbm5lY3QgdGhlIG1hcHBpbmcK LSAgICAgICAgY2xzLm1vZGVsID0zRCBtYXBwaW5nLmluaXQoICIvdG1wIiwgInNxbGl0ZTovLy86 bWVtb3J5OiIsIGNyZWF0ZV90PQphYmxlcz0zRFRydWUgKQorICAgICAgICBjbHMubW9kZWwgPTNE IG1hcHBpbmcuaW5pdCggIi90bXAiLCAic3FsaXRlOi8vLzptZW1vcnk6IiwgY3JlYXRlX3Q9CmFi bGVzPTNEVHJ1ZSwgb2JqZWN0X3N0b3JlPTNETW9ja09iamVjdFN0b3JlKCkgKQogICAgICAgICBh c3NlcnQgY2xzLm1vZGVsLmVuZ2luZSBpcyBub3QgTm9uZQo9MjAKICAgICBAY2xhc3NtZXRob2QK QEAgLTQ0Miw2ICs0NDIsMjEgQEAKICAgICAgICAgY2xzLm1vZGVsLnNlc3Npb24uZXhwdW5nZV9h bGwoKQo9MjAKPTIwCitjbGFzcyBNb2NrT2JqZWN0U3RvcmUob2JqZWN0KToKKworICAgIGRlZiBf X2luaXRfXyhzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHNpemUoc2VsZiwgZGF0YXNl dCk6CisgICAgICAgIHJldHVybiA0MgorCisgICAgZGVmIGV4aXN0cyhzZWxmLCAqYXJncywgKipr d2RzKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwg KmFyZ3MsICoqa3dkcyk6CisgICAgICAgIHJldHVybiAiZGF0YWVzdF8xNC5kYXQiCisKKwogZGVm IGdldF9zdWl0ZSgpOgogICAgIHN1aXRlID0zRCB1bml0dGVzdC5UZXN0U3VpdGUoKQogICAgIHN1 aXRlLmFkZFRlc3QoIE1hcHBpbmdUZXN0cyggInRlc3RfYmFzaWMiICkgKQoKCmh0dHBzOi8vYml0 YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8wMzRjYjBmYjg3ZGYvCkNo YW5nZXNldDogICAwMzRjYjBmYjg3ZGYKQnJhbmNoOiAgICAgIHJlbGVhc2VfMTUuMDcKVXNlcjog ICAgICAgIG5hdGVmb28KRGF0ZTogICAgICAgIDIwMTYtMDItMjQgMjA6NTY6MzMrMDA6MDAKU3Vt bWFyeTogICAgIFJlbGVhc2UgMTUuMDcuMQpBZmZlY3RlZCAjOiAgMTM1IGZpbGVzCgpkaWZmIC1y IGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2Rm YzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGNsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMv Y29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYT0KdG9yLmpzCi0tLSBhL2NsaWVudC9nYWxh eHkvc2NyaXB0cy9tdmMvY29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcworKysg Yi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2NvbGxlY3Rpb24vbGlzdC1jb2xsZWN0aW9uLWNy ZWF0b3IuanMKQEAgLTQzLDcgKzQzLDcgQEAKICAgICAvL1RPRE86IGxvdHMgb2YgdW51c2VkIHNw YWNlIGluIHRoZSBlbGVtZW50IC0gcG9zc2libHkgbG9hZCBkZXRhaWxzIGFuPQpkIGRpc3BsYXkg dGhlbSBob3Jpei4KICAgICB0ZW1wbGF0ZSA6IF8udGVtcGxhdGUoWwogICAgICAgICAnPGEgY2xh c3M9M0QibmFtZSIgdGl0bGU9M0QiJywgX2woICdDbGljayB0byByZW5hbWUnICksICciIGhyZWY9 M0Q9CiJqYXZhc2NyaXB0OnZvaWQoMCkiPicsCi0gICAgICAgICAgICAnPCU9M0QgZWxlbWVudC5u YW1lICU+JywKKyAgICAgICAgICAgICc8JS0gZWxlbWVudC5uYW1lICU+JywKICAgICAgICAgJzwv YT4nLAogICAgICAgICAnPGJ1dHRvbiBjbGFzcz0zRCJkaXNjYXJkIGJ0biBidG4tc20iIHRpdGxl PTNEIicsIF9sKCAnUmVtb3ZlIHRoaXM9CiBkYXRhc2V0IGZyb20gdGhlIGxpc3QnICksICciPics CiAgICAgICAgICAgICBfbCggJ0Rpc2NhcmQnICksCkBAIC05MjUsNyArOTI1LDcgQEAKICAgICAg ICAgaW52YWxpZEVsZW1lbnRzIDogXy50ZW1wbGF0ZShbCiAgICAgICAgICAgICBfbCggJ1RoZSBm b2xsb3dpbmcgc2VsZWN0aW9ucyBjb3VsZCBub3QgYmUgaW5jbHVkZWQgZHVlIHRvIHBybz0KYmxl bXM6JyApLAogICAgICAgICAgICAgJzx1bD48JSBfLmVhY2goIHByb2JsZW1zLCBmdW5jdGlvbigg cHJvYmxlbSApeyAlPicsCi0gICAgICAgICAgICAgICAgJzxsaT48Yj48JT0zRCBwcm9ibGVtLmVs ZW1lbnQubmFtZSAlPjwvYj46IDwlPTNEIHByb2JsZW0udD0KZXh0ICU+PC9saT4nLAorICAgICAg ICAgICAgICAgICc8bGk+PGI+PCUtIHByb2JsZW0uZWxlbWVudC5uYW1lICU+PC9iPjogPCUtIHBy b2JsZW0udGV4dCA9CiU+PC9saT4nLAogICAgICAgICAgICAgJzwlIH0pOyAlPjwvdWw+JwogICAg ICAgICBdLmpvaW4oJycpKSwKPTIwCkBAIC05NDUsNyArOTQ1LDcgQEAKICAgICAgICAgICAgICAg ICAgICAgICAgICc8JSBpZiggXy5zaXplKCBwcm9ibGVtcyApICl7ICU+JywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfbCggJ1RoZSBmb2xsb3dpbmcgc2VsZWN0aW9ucyBjb3VsZCBub3Qg YmUgaW5jPQpsdWRlZCBkdWUgdG8gcHJvYmxlbXMnICksICc6JywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnPHVsPjwlIF8uZWFjaCggcHJvYmxlbXMsIGZ1bmN0aW9uKCBwcm9ibGVtICl7 PQogJT4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGxpPjxiPjwlPTNEIHBy b2JsZW0uZWxlbWVudC5uYW1lICU+PC9iPjo9CiA8JT0zRCBwcm9ibGVtLnRleHQgJT48L2xpPics CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8bGk+PGI+PCUtIHByb2JsZW0uZWxl bWVudC5uYW1lICU+PC9iPjogPD0KJS0gcHJvYmxlbS50ZXh0ICU+PC9saT4nLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICc8JSB9KTsgJT48L3VsPicsCiAgICAgICAgICAgICAgICAgICAg ICAgICAnPCUgfSBlbHNlIGlmKCBfLnNpemUoIGVsZW1lbnRzICkgPCAxICl7ICU+JywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfbCggJ05vIGRhdGFzZXRzIHdlcmUgc2VsZWN0ZWQnICks ICcuJywKCmRpZmYgLXIgYzhhYjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAt ciAwMzRjYjBmYjg3ZGZjMmFlNTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgY2xpZW50L2dhbGF4 eS9zY3JpcHRzL212Yy9jb2xsZWN0aW9uL2xpc3Qtb2YtcGFpcnMtY29sbGVjPQp0aW9uLWNyZWF0 b3IuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9jb2xsZWN0aW9uL2xpc3Qtb2Yt cGFpcnMtY29sbGVjdGlvbi1jcmVhdG9yPQouanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRz L212Yy9jb2xsZWN0aW9uL2xpc3Qtb2YtcGFpcnMtY29sbGVjdGlvbi1jcmVhdG9yPQouanMKQEAg LTMwLDExICszMCwxMSBAQAogICAgIH0sCj0yMAogICAgIHRlbXBsYXRlIDogXy50ZW1wbGF0ZShb Ci0gICAgICAgICc8c3BhbiBjbGFzcz0zRCJmb3J3YXJkLWRhdGFzZXQtbmFtZSBmbGV4LWNvbHVt biI+PCU9M0QgcGFpci5mb3J3YT0KcmQubmFtZSAlPjwvc3Bhbj4nLAorICAgICAgICAnPHNwYW4g Y2xhc3M9M0QiZm9yd2FyZC1kYXRhc2V0LW5hbWUgZmxleC1jb2x1bW4iPjwlLSBwYWlyLmZvcndh cmQ9Ci5uYW1lICU+PC9zcGFuPicsCiAgICAgICAgICc8c3BhbiBjbGFzcz0zRCJwYWlyLW5hbWUt Y29sdW1uIGZsZXgtY29sdW1uIj4nLAotICAgICAgICAgICAgJzxzcGFuIGNsYXNzPTNEInBhaXIt bmFtZSI+PCU9M0QgcGFpci5uYW1lICU+PC9zcGFuPicsCisgICAgICAgICAgICAnPHNwYW4gY2xh c3M9M0QicGFpci1uYW1lIj48JS0gcGFpci5uYW1lICU+PC9zcGFuPicsCiAgICAgICAgICc8L3Nw YW4+JywKLSAgICAgICAgJzxzcGFuIGNsYXNzPTNEInJldmVyc2UtZGF0YXNldC1uYW1lIGZsZXgt Y29sdW1uIj48JT0zRCBwYWlyLnJldmVyPQpzZS5uYW1lICU+PC9zcGFuPicKKyAgICAgICAgJzxz cGFuIGNsYXNzPTNEInJldmVyc2UtZGF0YXNldC1uYW1lIGZsZXgtY29sdW1uIj48JS0gcGFpci5y ZXZlcnNlPQoubmFtZSAlPjwvc3Bhbj4nCiAgICAgXS5qb2luKCcnKSksCj0yMAogICAgIHJlbmRl ciA6IGZ1bmN0aW9uKCl7CgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5 OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGNs aWVudC9nYWxheHkvc2NyaXB0cy9tdmMvY29sbGVjdGlvbi9wYWlyLWNvbGxlY3Rpb24tY3JlYT0K dG9yLmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvY29sbGVjdGlvbi9wYWlyLWNv bGxlY3Rpb24tY3JlYXRvci5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2NvbGxl Y3Rpb24vcGFpci1jb2xsZWN0aW9uLWNyZWF0b3IuanMKQEAgLTMyLDggKzMyLDggQEAKPTIwCiAg ICAgLy9UT0RPOiBsb3RzIG9mIHVudXNlZCBzcGFjZSBpbiB0aGUgZWxlbWVudCAtIHBvc3NpYmx5 IGxvYWQgZGV0YWlscyBhbj0KZCBkaXNwbGF5IHRoZW0gaG9yaXouCiAgICAgdGVtcGxhdGUgOiBf LnRlbXBsYXRlKFsKLSAgICAgICAgJzxzcGFuIGNsYXNzPTNEImlkZW50aWZpZXIiPjwlPTNEIGlk ZW50aWZpZXIgJT48L3NwYW4+JywKLSAgICAgICAgJzxzcGFuIGNsYXNzPTNEIm5hbWUiPjwlPTNE IGVsZW1lbnQubmFtZSAlPjwvc3Bhbj4nLAorICAgICAgICAnPHNwYW4gY2xhc3M9M0QiaWRlbnRp ZmllciI+PCUtIGlkZW50aWZpZXIgJT48L3NwYW4+JywKKyAgICAgICAgJzxzcGFuIGNsYXNzPTNE Im5hbWUiPjwlLSBlbGVtZW50Lm5hbWUgJT48L3NwYW4+JywKICAgICBdLmpvaW4oJycpKSwKPTIw CiAgICAgLyoqIHJlbW92ZSB0aGUgRE9NIGFuZCBhbnkgbGlzdGVuZXJzICovCkBAIC0xNzYsMTUg KzE3NiwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJzwlIGlmKCBfLnNpemUoIHByb2Js ZW1zICkgKXsgJT4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sKCAnVGhlIGZvbGxv d2luZyBzZWxlY3Rpb25zIGNvdWxkIG5vdCBiZSBpbmM9Cmx1ZGVkIGR1ZSB0byBwcm9ibGVtcycg KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHVsPjwlIF8uZWFjaCggcHJvYmxlbXMs IGZ1bmN0aW9uKCBwcm9ibGVtICl7PQogJT4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnPGxpPjxiPjwlPTNEIHByb2JsZW0uZWxlbWVudC5uYW1lICU+PC9iPjo9CiA8JT0zRCBw cm9ibGVtLnRleHQgJT48L2xpPicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8 bGk+PGI+PCUtIHByb2JsZW0uZWxlbWVudC5uYW1lICU+PC9iPjogPD0KJS0gcHJvYmxlbS50ZXh0 ICU+PC9saT4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8JSB9KTsgJT48L3VsPics CiAgICAgICAgICAgICAgICAgICAgICAgICAnPCUgfSBlbHNlIGlmKCBfLnNpemUoIGVsZW1lbnRz ICkgPTNEPTNEPTNEIDAgKXsgJT0KPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2wo ICdObyBkYXRhc2V0cyB3ZXJlIHNlbGVjdGVkJyApLCAnLicsCiAgICAgICAgICAgICAgICAgICAg ICAgICAnPCUgfSBlbHNlIGlmKCBfLnNpemUoIGVsZW1lbnRzICkgPTNEPTNEPTNEIDEgKXsgJT0K PicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2woICdPbmx5IG9uZSBkYXRhc2V0IHdh cyBzZWxlY3RlZCcgKSwgJzogPCU9Cj0zRCBlbGVtZW50c1swXS5uYW1lICU+JywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBfbCggJ09ubHkgb25lIGRhdGFzZXQgd2FzIHNlbGVjdGVkJyAp LCAnOiA8JS0gPQplbGVtZW50c1swXS5uYW1lICU+JywKICAgICAgICAgICAgICAgICAgICAgICAg ICc8JSB9IGVsc2UgaWYoIF8uc2l6ZSggZWxlbWVudHMgKSA+IDIgKXsgJT4nLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF9sKCAnVG9vIG1hbnkgZGF0YXNldHMgd2VyZSBzZWxlY3RlZCcg KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOiA8JT0zRCBfLnBsdWNrKCBlbGVtZW50 cywgIm5hbWUiICkuam9pbiggIiwgPQoiKSAlPicsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJzogPCUtIF8ucGx1Y2soIGVsZW1lbnRzLCAibmFtZSIgKS5qb2luKCAiLCAiKT0KICU+JywK ICAgICAgICAgICAgICAgICAgICAgICAgICc8JSB9ICU+JywKICAgICAgICAgICAgICAgICAgICAg ICAgICc8YnIgLz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgX2woICdUd28gKGFuZCBvbmx5 IHR3bykgZWxlbWVudHMgYXJlIG5lZWRlZCBmb3IgdGg9CmUgcGFpcicgKSwgJy4gJywKCmRpZmYg LXIgYzhhYjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3 ZGZjMmFlNTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212 Yy9kYXRhc2V0L2RhdGFzZXQtY2hvaWNlLmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9t dmMvZGF0YXNldC9kYXRhc2V0LWNob2ljZS5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMv bXZjL2RhdGFzZXQvZGF0YXNldC1jaG9pY2UuanMKQEAgLTI0OSw3ICsyNDksNyBAQAogICAgIF90 ZW1wbGF0ZSA6IGZ1bmN0aW9uKCBqc29uICl7CiAgICAgICAgIHJldHVybiBfLnRlbXBsYXRlKFsK ICAgICAgICAgICAgICc8bGFiZWw+JywKLSAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9M0Qi cHJvbXB0Ij48JT0zRCBsYWJlbCAlPjwvc3Bhbj4nLAorICAgICAgICAgICAgICAgICc8c3BhbiBj bGFzcz0zRCJwcm9tcHQiPjwlLSBsYWJlbCAlPjwvc3Bhbj4nLAogICAgICAgICAgICAgICAgICc8 ZGl2IGNsYXNzPTNEInNlbGVjdGVkIj48L2Rpdj4nLAogICAgICAgICAgICAgJzwvbGFiZWw+Jwog ICAgICAgICBdLmpvaW4oJycpKSgganNvbiApOwpAQCAtMjYxLDExICsyNjEsMTEgQEAKIC8vVE9E TzogYnJlYWsgb3V0PwogICAgICAgICAgICAgcmV0dXJuICQoIF8udGVtcGxhdGUoWwogICAgICAg ICAgICAgICAgICc8ZGl2IGNsYXNzPTNEInNlbGVjdGVkIj4nLAotICAgICAgICAgICAgICAgICAg ICAnPHNwYW4gY2xhc3M9M0QidGl0bGUiPjwlPTNEIHNlbGVjdGVkLmhpZCAlPjogPCU9M0Qgc2U9 CmxlY3RlZC5uYW1lICU+PC9zcGFuPicsCisgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFz cz0zRCJ0aXRsZSI+PCUtIHNlbGVjdGVkLmhpZCAlPjogPCUtIHNlbGVjdD0KZWQubmFtZSAlPjwv c3Bhbj4nLAogICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9M0Qic3VidGl0bGUiPics Ci0gICAgICAgICAgICAgICAgICAgICAgICAnPGk+PCU9M0Qgc2VsZWN0ZWQubWlzY19ibHVyYiAl PjwvaT4nLAotICAgICAgICAgICAgICAgICAgICAgICAgJzxpPicsIF9sKCAnZm9ybWF0JyApICsg JzogJywgJzwlPTNEIHNlbGVjdGVkLmZpbGU9Cl9leHQgJT48L2k+JywKLSAgICAgICAgICAgICAg ICAgICAgICAgICc8aT48JT0zRCBzZWxlY3RlZC5taXNjX2luZm8gJT48L2k+JywKKyAgICAgICAg ICAgICAgICAgICAgICAgICc8aT48JS0gc2VsZWN0ZWQubWlzY19ibHVyYiAlPjwvaT4nLAorICAg ICAgICAgICAgICAgICAgICAgICAgJzxpPicsIF9sKCAnZm9ybWF0JyApICsgJzogJywgJzwlLSBz ZWxlY3RlZC5maWxlX2U9Cnh0ICU+PC9pPicsCisgICAgICAgICAgICAgICAgICAgICAgICAnPGk+ PCUtIHNlbGVjdGVkLm1pc2NfaW5mbyAlPjwvaT4nLAogICAgICAgICAgICAgICAgICAgICAnPC9z cGFuPicsCiAgICAgICAgICAgICAgICAgJzwvZGl2PicKICAgICAgICAgICAgIF0uam9pbiggJycg KSwgeyB2YXJpYWJsZSA6ICdzZWxlY3RlZCcgfSkoIGpzb24uc2VsZWN0ZWRbMF0gKSk7CkBAIC0z ODgsNyArMzg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgJzwlIGlmKCBqc29uLnNob3dIZWFk ZXJzICl7ICU+JywKICAgICAgICAgICAgICAgICAgICAgICAgICc8dGhlYWQ+PHRyPicsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJzwlIF8ubWFwKCBqc29uLmNlbGxzLCBmdW5jdGlvbigg dmFsLCBrZXkgKXsgJT0KPicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8dGg+ PCU9M0QgdmFsICU+PC90aD4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHRo PjwlLSB2YWwgJT48L3RoPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwlIH0pOyAl PicsCiAgICAgICAgICAgICAgICAgICAgICAgICAnPC90cj48L3RoZWFkPicsCiAgICAgICAgICAg ICAgICAgICAgICc8JSB9ICU+JywKQEAgLTM5Niw3ICszOTYsNyBAQAogICAgICAgICAgICAgICAg ICAgICAgICAgJzwlIF8ubWFwKCBqc29uLnNlbGVjdGVkLCBmdW5jdGlvbiggc2VsZWN0ZWQgKXsg JT49CicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0cj4nLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnPCUgXy5tYXAoIGpzb24uY2VsbHMsIGZ1bmN0aW9uKCB2YWws IGtleSA9Cil7ICU+JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8dGQg Y2xhc3M9M0QiY2VsbC08JT0zRCBrZXkgJT4iPjwlPTNEPQogc2VsZWN0ZWRbIGtleSBdICU+PC90 ZD4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0zRCJj ZWxsLTwlLSBrZXkgJT4iPjwlLSBzZWw9CmVjdGVkWyBrZXkgXSAlPjwvdGQ+JywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJzwlIH0pICU+JywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnPC90cj4nLAogICAgICAgICAgICAgICAgICAgICAgICAgJzwlIH0pOyAlPicsCgpk aWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2Iw ZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGNsaWVudC9nYWxheHkvc2NyaXB0 cy9tdmMvZGF0YXNldC9kYXRhc2V0LWxpLWVkaXQuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3Jp cHRzL212Yy9kYXRhc2V0L2RhdGFzZXQtbGktZWRpdC5qcworKysgYi9jbGllbnQvZ2FsYXh5L3Nj cmlwdHMvbXZjL2RhdGFzZXQvZGF0YXNldC1saS1lZGl0LmpzCkBAIC0zMDYsNyArMzA2LDcgQEAK ICAgICAgICAgICAgICc8JSBpZiggZGF0YXNldC5zdGF0ZSA9M0Q9M0Q9M0QgImZhaWxlZF9tZXRh ZGF0YSIgKXsgJT4nLAogICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEImZhaWxlZF9tZXRh ZGF0YS13YXJuaW5nIHdhcm5pbmdtZXNzYWdlc21hbGw9CiI+JywKICAgICAgICAgICAgICAgICAg ICAgX2woICdBbiBlcnJvciBvY2N1cnJlZCBzZXR0aW5nIHRoZSBtZXRhZGF0YSBmb3IgdGhpcyBk PQphdGFzZXQnICksCi0gICAgICAgICAgICAgICAgICAgICc8YnIgLz48YSBocmVmPTNEIjwlPTNE IGRhdGFzZXQudXJscy5lZGl0ICU+IiB0YXJnZXQ9Cj0zRCI8JT0zRCB2aWV3LmxpbmtUYXJnZXQg JT4iPicsCisgICAgICAgICAgICAgICAgICAgICc8YnIgLz48YSBocmVmPTNEIjwlLSBkYXRhc2V0 LnVybHMuZWRpdCAlPiIgdGFyZ2V0PTNEIj0KPCUtIHZpZXcubGlua1RhcmdldCAlPiI+JywKICAg ICAgICAgICAgICAgICAgICAgICAgIF9sKCAnU2V0IGl0IG1hbnVhbGx5IG9yIHJldHJ5IGF1dG8t ZGV0ZWN0aW9uJyApLAogICAgICAgICAgICAgICAgICAgICAnPC9hPicsCiAgICAgICAgICAgICAg ICAgJzwvZGl2PicsCkBAIC0zMzIsOSArMzMyLDkgQEAKPTIwCiAgICAgdmFyIHZpc3VhbGl6YXRp b25zVGVtcGxhdGUgPTNEIEJBU0VfTVZDLndyYXBUZW1wbGF0ZShbCiAgICAgICAgICc8JSBpZigg dmlzdWFsaXphdGlvbnMubGVuZ3RoID0zRD0zRD0zRCAxICl7ICU+JywKLSAgICAgICAgICAgICc8 YSBjbGFzcz0zRCJ2aXN1YWxpemF0aW9uLWJ0biB2aXN1YWxpemF0aW9uLWxpbmsgaWNvbi1idG4i IGhyPQplZj0zRCI8JT0zRCB2aXN1YWxpemF0aW9uc1swXS5ocmVmICU+IicsCi0gICAgICAgICAg ICAgICAgICAgICcgdGFyZ2V0PTNEIjwlPTNEIHZpc3VhbGl6YXRpb25zWzBdLnRhcmdldCAlPiIg dGl0bGU9Cj0zRCInLCBfbCggJ1Zpc3VhbGl6ZSBpbicgKSwKLSAgICAgICAgICAgICAgICAgICAg JyA8JT0zRCB2aXN1YWxpemF0aW9uc1swXS5odG1sICU+Ij4nLAorICAgICAgICAgICAgJzxhIGNs YXNzPTNEInZpc3VhbGl6YXRpb24tYnRuIHZpc3VhbGl6YXRpb24tbGluayBpY29uLWJ0biIgaHI9 CmVmPTNEIjwlLSB2aXN1YWxpemF0aW9uc1swXS5ocmVmICU+IicsCisgICAgICAgICAgICAgICAg ICAgICcgdGFyZ2V0PTNEIjwlLSB2aXN1YWxpemF0aW9uc1swXS50YXJnZXQgJT4iIHRpdGxlPTNE Ij0KJywgX2woICdWaXN1YWxpemUgaW4nICksCisgICAgICAgICAgICAgICAgICAgICcgPCUtIHZp c3VhbGl6YXRpb25zWzBdLmh0bWwgJT4iPicsCiAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNz PTNEImZhIGZhLWJhci1jaGFydC1vIj48L3NwYW4+JywKICAgICAgICAgICAgICc8L2E+JywKPTIw CkBAIC0zNDUsOSArMzQ1LDkgQEAKICAgICAgICAgICAgICAgICAnPC9hPicsCiAgICAgICAgICAg ICAgICAgJzx1bCBjbGFzcz0zRCJkcm9wZG93bi1tZW51IiByb2xlPTNEIm1lbnUiPicsCiAgICAg ICAgICAgICAgICAgICAgICc8JSBfLmVhY2goIHZpc3VhbGl6YXRpb25zLCBmdW5jdGlvbiggdmlz dWFsaXphdGlvbiApez0KICU+JywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8bGk+PGEgY2xh c3M9M0QidmlzdWFsaXphdGlvbi1saW5rIiBocmVmPTNEIjwlPTNEPQogdmlzdWFsaXphdGlvbi5o cmVmICU+IicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgdGFyZ2V0PTNEIjwl PTNEIHZpc3VhbGl6YXRpb24udGFyZ2V0ICU+Ij0KPicsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgJzwlPTNEIHZpc3VhbGl6YXRpb24uaHRtbCAlPicsCisgICAgICAgICAgICAgICAgICAg ICAgICAnPGxpPjxhIGNsYXNzPTNEInZpc3VhbGl6YXRpb24tbGluayIgaHJlZj0zRCI8JS0gdj0K aXN1YWxpemF0aW9uLmhyZWYgJT4iJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JyB0YXJnZXQ9M0QiPCUtIHZpc3VhbGl6YXRpb24udGFyZ2V0ICU+Ij4nLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICc8JS0gdmlzdWFsaXphdGlvbi5odG1sICU+JywKICAgICAgICAgICAg ICAgICAgICAgICAgICc8L2E+PC9saT4nLAogICAgICAgICAgICAgICAgICAgICAnPCUgfSk7ICU+ JywKICAgICAgICAgICAgICAgICAnPC91bD4nLAoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2 ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4 MTg5Nzk3ZTk3OSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2RhdGFzZXQvZGF0YXNldC1saS5q cwotLS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2RhdGFzZXQvZGF0YXNldC1saS5qcwor KysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2RhdGFzZXQvZGF0YXNldC1saS5qcwpAQCAt NDczLDcgKzQ3Myw3IEBACiAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPTNEImRpc3BsYXkt YXBwbGljYXRpb24tbG9jYXRpb24iPjwlLSBhcHAubGFiZT0KbCAlPjwvc3Bhbj4gJywKICAgICAg ICAgICAgICAgICAnPHNwYW4gY2xhc3M9M0QiZGlzcGxheS1hcHBsaWNhdGlvbi1saW5rcyI+JywK ICAgICAgICAgICAgICAgICAgICAgJzwlIF8uZWFjaCggYXBwLmxpbmtzLCBmdW5jdGlvbiggbGlu ayApeyAlPicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPGEgdGFyZ2V0PTNEIjwlPTNEIGxp bmsudGFyZ2V0ICU+IiBocmVmPTNEIjwlPTNEID0KbGluay5ocmVmICU+Ij4nLAorICAgICAgICAg ICAgICAgICAgICAgICAgJzxhIHRhcmdldD0zRCI8JS0gbGluay50YXJnZXQgJT4iIGhyZWY9M0Qi PCUtIGxpbms9Ci5ocmVmICU+Ij4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8JSBw cmludCggX2woIGxpbmsudGV4dCApICk7ICU+JywKICAgICAgICAgICAgICAgICAgICAgICAgICc8 L2E+ICcsCiAgICAgICAgICAgICAgICAgICAgICc8JSB9KTsgJT4nLAoKZGlmZiAtciBjOGFiMGZl Mjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRl MTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2hpc3Rvcnkv aGlzdG9yeS1wYW5lbC5qcwotLS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2hpc3Rvcnkv aGlzdG9yeS1wYW5lbC5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2hpc3Rvcnkv aGlzdG9yeS1wYW5lbC5qcwpAQCAtNjExLDEwICs2MTEsMTAgQEAKICAgICB2YXIgY29udHJvbHNU ZW1wbGF0ZSA9M0QgQkFTRV9NVkMud3JhcFRlbXBsYXRlKFsKICAgICAgICAgJzxkaXYgY2xhc3M9 M0QiY29udHJvbHMiPicsCiAgICAgICAgICAgICAnPGRpdiBjbGFzcz0zRCJ0aXRsZSI+JywKLSAg ICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0zRCJuYW1lIj48JT0zRCBoaXN0b3J5Lm5hbWUgJT48 L2Rpdj4nLAorICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEIm5hbWUiPjwlLSBoaXN0b3J5 Lm5hbWUgJT48L2Rpdj4nLAogICAgICAgICAgICAgJzwvZGl2PicsCiAgICAgICAgICAgICAnPGRp diBjbGFzcz0zRCJzdWJ0aXRsZSI+PC9kaXY+JywKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNE Imhpc3Rvcnktc2l6ZSI+PCU9M0QgaGlzdG9yeS5uaWNlX3NpemUgJT48L2Rpdj4nLAorICAgICAg ICAgICAgJzxkaXYgY2xhc3M9M0QiaGlzdG9yeS1zaXplIj48JS0gaGlzdG9yeS5uaWNlX3NpemUg JT48L2Rpdj4nLAo9MjAKICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEImFjdGlvbnMiPjwvZGl2 PicsCj0yMAoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYw IC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGllbnQvZ2Fs YXh5L3NjcmlwdHMvbXZjL2hpc3RvcnkvbXVsdGktcGFuZWwuanMKLS0tIGEvY2xpZW50L2dhbGF4 eS9zY3JpcHRzL212Yy9oaXN0b3J5L211bHRpLXBhbmVsLmpzCisrKyBiL2NsaWVudC9nYWxheHkv c2NyaXB0cy9tdmMvaGlzdG9yeS9tdWx0aS1wYW5lbC5qcwpAQCAtMTYsNyArMTYsNyBAQAogICAg IH0KPTIwCiAgICAgLy8gbWF5YmUgYmV0dGVyIGFzIG11bHRpc2VsZWN0IGRpYWxvZz8KLSAgICB2 YXIgaGlzdG9yeU5hbWUgPTNEIGhpc3RvcnkuZ2V0KCAnbmFtZScgKSwKKyAgICB2YXIgaGlzdG9y eU5hbWUgPTNEIF8uZXNjYXBlKGhpc3RvcnkuZ2V0KCAnbmFtZScgKSksCiAgICAgICAgIGRlZmF1 bHRDb3B5TmFtZSA9M0QgIkNvcHkgb2YgJyIgKyBoaXN0b3J5TmFtZSArICInIjsKPTIwCiAgICAg ZnVuY3Rpb24gdmFsaWRhdGVOYW1lKCBuYW1lICl7CkBAIC0xMDc1LDEzICsxMDc1LDEzIEBACiAg ICAgICAgICAgICAnPGRpdiBjbGFzcz0zRCJvcmRlciBidG4tZ3JvdXAiPicsCiAgICAgICAgICAg ICAgICAgJzxidXR0b24gdHlwZT0zRCJidXR0b24iIGNsYXNzPTNEImJ0biBidG4tZGVmYXVsdCBk cm9wZG93bj0KLXRvZ2dsZSIgZGF0YS10b2dnbGU9M0QiZHJvcGRvd24iPicsCiAgICAgICAgICAg ICAgICAgICAgIF9sKCAnT3JkZXIgaGlzdG9yaWVzIGJ5JyApICsgJyAnLAotICAgICAgICAgICAg ICAgICAgICAnPHNwYW4gY2xhc3M9M0QiY3VycmVudC1vcmRlciI+PCU9M0Qgdmlldy5zb3J0T3Jk ZXJzWyA9CnZpZXcub3JkZXIgXS50ZXh0ICU+PC9zcGFuPiAnLAorICAgICAgICAgICAgICAgICAg ICAnPHNwYW4gY2xhc3M9M0QiY3VycmVudC1vcmRlciI+PCUtIHZpZXcuc29ydE9yZGVyc1sgdmk9 CmV3Lm9yZGVyIF0udGV4dCAlPjwvc3Bhbj4gJywKICAgICAgICAgICAgICAgICAgICAgJzxzcGFu IGNsYXNzPTNEImNhcmV0Ij48L3NwYW4+JywKICAgICAgICAgICAgICAgICAnPC9idXR0b24+JywK ICAgICAgICAgICAgICAgICAnPHVsIGNsYXNzPTNEImRyb3Bkb3duLW1lbnUiIHJvbGU9M0QibWVu dSI+JywKICAgICAgICAgICAgICAgICAgICAgJzwlIF8uZWFjaCggdmlldy5zb3J0T3JkZXJzLCBm dW5jdGlvbiggb3JkZXIsIGtleSApeyAlPQo+JywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8 bGk+PGEgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCk7IiBjbGFzcz0zRCJzZXQtPQpvcmRlciIg ZGF0YS1vcmRlcj0zRCI8JT0zRCBrZXkgJT4iPicsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgJzwlPTNEIG9yZGVyLnRleHQgJT4nLAorICAgICAgICAgICAgICAgICAgICAgICAgJzxsaT48 YSBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKTsiIGNsYXNzPTNEInNldC09Cm9yZGVyIiBkYXRh LW9yZGVyPTNEIjwlLSBrZXkgJT4iPicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwl LSBvcmRlci50ZXh0ICU+JywKICAgICAgICAgICAgICAgICAgICAgICAgICc8L2E+PC9saT4nLAog ICAgICAgICAgICAgICAgICAgICAnPCUgfSk7ICU+JywKICAgICAgICAgICAgICAgICAnPC91bD4n LAoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAz NGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGllbnQvZ2FsYXh5L3Nj cmlwdHMvbXZjL2pvYi9qb2ItbGkuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9q b2Ivam9iLWxpLmpzCisrKyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvam9iL2pvYi1saS5q cwpAQCAtMTIxLDcgKzEyMSw3IEBACj0yMAogICAgIHZhciBlbFRlbXBsYXRlID0zRCBCQVNFX01W Qy53cmFwVGVtcGxhdGUoWwogICAgICAgICAnPGRpdiBjbGFzcz0zRCJsaXN0LWVsZW1lbnQiPics Ci0gICAgICAgICAgICAnPGRpdiBjbGFzcz0zRCJpZCI+PCU9M0QgbW9kZWwuaWQgJT48L2Rpdj4n LAorICAgICAgICAgICAgJzxkaXYgY2xhc3M9M0QiaWQiPjwlLSBtb2RlbC5pZCAlPjwvZGl2Pics CiAgICAgICAgICAgICAvLyBlcnJvcnMsIG1lc3NhZ2VzLCBldGMuCiAgICAgICAgICAgICAnPGRp diBjbGFzcz0zRCJ3YXJuaW5ncyI+PC9kaXY+JywKPTIwCkBAIC0xNjEsNyArMTYxLDcgQEAKICAg ICAgICAgICAgIC8vICAgICcgJywgX2woICdDcmVhdGVkJyApLCAnOiA8JT0zRCBuZXcgRGF0ZSgg am9iLmNyZWF0ZV90aW1lPQogKS50b1N0cmluZygpICU+LCAnLAogICAgICAgICAgICAgLy8nPC9z cGFuJywKICAgICAgICAgICAgIC8vJzxzcGFuIGNsYXNzPTNEInZlcnNpb24iPicsCi0gICAgICAg ICAgICAvLyAgICAnICgnLCBfbCggJ3ZlcnNpb24nICksICc6IDwlPTNEIHZpZXcudG9vbC52ZXJz aW9uICU+KScsCisgICAgICAgICAgICAvLyAgICAnICgnLCBfbCggJ3ZlcnNpb24nICksICc6IDwl LSB2aWV3LnRvb2wudmVyc2lvbiAlPiknLAogICAgICAgICAgICAgLy8nPC9zcGFuJywKICAgICAg ICAgJzwvZGl2PicKICAgICBdLCAnam9iJyApOwpAQCAtMTcwLDIwICsxNzAsMjAgQEAKICAgICAg ICAgJzxkaXYgY2xhc3M9M0QiZGV0YWlscyI+JywKICAgICAgICAgICAgIC8vJzxkaXYgY2xhc3M9 M0QidmVyc2lvbiI+JywKICAgICAgICAgICAgIC8vICAgICc8bGFiZWwgY2xhc3M9M0QicHJvbXB0 Ij4nLCBfbCggJ1ZlcnNpb24nICksICc8L2xhYmVsPicsCi0gICAgICAgICAgICAvLyAgICAnPHNw YW4gY2xhc3M9M0QidmFsdWUiPjwlPTNEIHZpZXcudG9vbC52ZXJzaW9uICU+PC9zcGFuPj0KJywK KyAgICAgICAgICAgIC8vICAgICc8c3BhbiBjbGFzcz0zRCJ2YWx1ZSI+PCUtIHZpZXcudG9vbC52 ZXJzaW9uICU+PC9zcGFuPicsCiAgICAgICAgICAgICAvLyc8L2Rpdj4nLAogICAgICAgICAgICAg JzxkaXYgY2xhc3M9M0QicGFyYW1zIj4nLAogICAgICAgICAgICAgICAgICc8JSBfLmVhY2goIHZp ZXcuX2xhYmVsSW5wdXRNYXAoKSwgZnVuY3Rpb24oIGlucHV0LCBsYWJlbCA9Cil7ICU+JywKLSAg ICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9M0QiaW5wdXQiIGRhdGEtaW5wdXQtbmFtZT0z RCI8JT0zRCBpbnB1dC5uPQphbWUgJT4iIGRhdGEtaW5wdXQtaWQ9M0QiPCU9M0QgaW5wdXQuaWQg JT4iPicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPGxhYmVsIGNsYXNzPTNEInByb21wdCI+ PCU9M0QgbGFiZWwgJT48L2xhYmVsPicsCisgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNz PTNEImlucHV0IiBkYXRhLWlucHV0LW5hbWU9M0QiPCUtIGlucHV0Lm5hbT0KZSAlPiIgZGF0YS1p bnB1dC1pZD0zRCI8JS0gaW5wdXQuaWQgJT4iPicsCisgICAgICAgICAgICAgICAgICAgICAgICAn PGxhYmVsIGNsYXNzPTNEInByb21wdCI+PCUtIGxhYmVsICU+PC9sYWJlbD4nLAogLy9UT0RPOiBp bnB1dCBkYXRhc2V0IG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0z RCJ2YWx1ZSI+PCU9M0QgaW5wdXQuY29udGVudC5uYW1lICU+PQo8L3NwYW4+JywKKyAgICAgICAg ICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0zRCJ2YWx1ZSI+PCUtIGlucHV0LmNvbnRlbnQu bmFtZSAlPjwvPQpzcGFuPicsCiAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nLAogICAgICAg ICAgICAgICAgICc8JSB9KSAlPicsCiAgICAgICAgICAgICAgICAgJzwlIF8uZWFjaCggdmlldy5f bGFiZWxQYXJhbU1hcCgpLCBmdW5jdGlvbiggcGFyYW0sIGxhYmVsID0KKXsgJT4nLAotICAgICAg ICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0zRCJwYXJhbSIgZGF0YS1pbnB1dC1uYW1lPTNEIjwl PTNEIHBhcmFtLm49CmFtZSAlPiI+JywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8bGFiZWwg Y2xhc3M9M0QicHJvbXB0Ij48JT0zRCBsYWJlbCAlPjwvbGFiZWw+JywKLSAgICAgICAgICAgICAg ICAgICAgICAgICc8c3BhbiBjbGFzcz0zRCJ2YWx1ZSI+PCU9M0QgcGFyYW0gJT48L3NwYW4+JywK KyAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9M0QicGFyYW0iIGRhdGEtaW5wdXQtbmFt ZT0zRCI8JS0gcGFyYW0ubmFtPQplICU+Ij4nLAorICAgICAgICAgICAgICAgICAgICAgICAgJzxs YWJlbCBjbGFzcz0zRCJwcm9tcHQiPjwlLSBsYWJlbCAlPjwvbGFiZWw+JywKKyAgICAgICAgICAg ICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0zRCJ2YWx1ZSI+PCUtIHBhcmFtICU+PC9zcGFuPics CiAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nLAogICAgICAgICAgICAgICAgICc8JSB9KSAl PicsCiAgICAgICAgICAgICAnPC9kaXY+JywKCmRpZmYgLXIgYzhhYjBmZTI4NmJmMTBhZGQyNmZl OTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3ZGZjMmFlNTZkZTEwNz0KMmE0NWE2ODE4 OTc5N2U5NzkgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9saXN0L2xpc3QtcGFuZWwuanMKLS0t IGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9saXN0L2xpc3QtcGFuZWwuanMKKysrIGIvY2xp ZW50L2dhbGF4eS9zY3JpcHRzL212Yy9saXN0L2xpc3QtcGFuZWwuanMKQEAgLTgwMSw5ICs4MDEs OSBAQAogICAgIHZhciBjb250cm9sc1RlbXBsYXRlID0zRCBCQVNFX01WQy53cmFwVGVtcGxhdGUo WwogICAgICAgICAnPGRpdiBjbGFzcz0zRCJjb250cm9scyI+JywKICAgICAgICAgICAgICc8ZGl2 IGNsYXNzPTNEInRpdGxlIj4nLAotICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEIm5hbWUi PjwlPTNEIHZpZXcudGl0bGUgJT48L2Rpdj4nLAorICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNz PTNEIm5hbWUiPjwlLSB2aWV3LnRpdGxlICU+PC9kaXY+JywKICAgICAgICAgICAgICc8L2Rpdj4n LAotICAgICAgICAgICAgJzxkaXYgY2xhc3M9M0Qic3VidGl0bGUiPjwlPTNEIHZpZXcuc3VidGl0 bGUgJT48L2Rpdj4nLAorICAgICAgICAgICAgJzxkaXYgY2xhc3M9M0Qic3VidGl0bGUiPjwlLSB2 aWV3LnN1YnRpdGxlICU+PC9kaXY+JywKICAgICAgICAgICAgIC8vIGJ1dHRvbnMsIGNvbnRyb2xz IGdvIGhlcmUKICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEImFjdGlvbnMiPjwvZGl2PicsCiAg ICAgICAgICAgICAvLyBkZWxldGVkIG1zZywgZXRjLgpAQCAtOTQyLDkgKzk0Miw5IEBACiAgICAg ICAgICc8ZGl2IGNsYXNzPTNEImNvbnRyb2xzIj4nLAogICAgICAgICAgICAgJzxkaXYgY2xhc3M9 M0QidGl0bGUiPicsCiAvL1RPRE86IHRoaXMgaXMgcmVhbGx5IHRoZSBvbmx5IGRpZmZlcmVuY2Ug LSBjb25zaWRlciBmYWN0b3JpbmcgdGl0bGViYXIgbz0KdXQKLSAgICAgICAgICAgICAgICAnPGRp diBjbGFzcz0zRCJuYW1lIj48JT0zRCBtb2RlbC5uYW1lICU+PC9kaXY+JywKKyAgICAgICAgICAg ICAgICAnPGRpdiBjbGFzcz0zRCJuYW1lIj48JS0gbW9kZWwubmFtZSAlPjwvZGl2PicsCiAgICAg ICAgICAgICAnPC9kaXY+JywKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEInN1YnRpdGxlIj48 JT0zRCB2aWV3LnN1YnRpdGxlICU+PC9kaXY+JywKKyAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNE InN1YnRpdGxlIj48JS0gdmlldy5zdWJ0aXRsZSAlPjwvZGl2PicsCiAgICAgICAgICAgICAnPGRp diBjbGFzcz0zRCJhY3Rpb25zIj48L2Rpdj4nLAogICAgICAgICAgICAgJzxkaXYgY2xhc3M9M0Qi bWVzc2FnZXMiPjwvZGl2PicsCj0yMAoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5Njcz MzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3 ZTk3OSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzLmpzCi0tLSBhL2NsaWVudC9nYWxh eHkvc2NyaXB0cy9tdmMvdG9vbHMuanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90 b29scy5qcwpAQCAtMjYyLDcgKzI2Miw3IEBACj0yMAogICAgICAgICAvLyBSdW4gam9iIGFuZCBy ZXNvbHZlIHJ1bl9kZWZlcnJlZCB0byB0b29sIG91dHB1dHMuCiAgICAgICAgICQud2hlbihzc19k ZWZlcnJlZC5nbygpKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICAgICAgcnVuX2Rl ZmVycmVkLnJlc29sdmUobmV3IGRhdGEuRGF0YXNldENvbGxlY3Rpb24oKS5yZXNldChyZXN1bHQ9 CikpOworICAgICAgICAgICAgcnVuX2RlZmVycmVkLnJlc29sdmUobmV3IGRhdGEuRGF0YXNldENv bGxlY3Rpb24ocmVzdWx0KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gcnVuX2RlZmVy cmVkOwogICAgIH0KCmRpZmYgLXIgYzhhYjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFm ZmRmMCAtciAwMzRjYjBmYjg3ZGZjMmFlNTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgY2xpZW50 L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLmpzCi0tLSBhL2NsaWVudC9nYWxh eHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS5qcworKysgYi9jbGllbnQvZ2FsYXh5L3Nj cmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0uanMKQEAgLTE5LDcgKzE5LDcgQEAKICAgICAgICAg ICAgICAgICBvbmNsaWNrICA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBleGVj dXRlLndhaXQoKTsKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mb3JtLnBvcnRsZXQuZGlzYWJs ZSgpOwotICAgICAgICAgICAgICAgICAgICBUb29sSm9icy5zdWJtaXQoc2VsZi5mb3JtLCBvcHRp b25zLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgVG9vbEpvYnMuc3VibWl0KHNl bGYuZm9ybSwgc2VsZi5vcHRpb25zLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAg ICAgIGV4ZWN1dGUudW53YWl0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcm0u cG9ydGxldC5lbmFibGUoKTsKICAgICAgICAgICAgICAgICAgICAgfSk7CkBAIC00MCw5ICs0MCwx MCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gY3JlYXRlIG9wdGlvbnMgZGljdGlv bmFyeQogICAgICAgICAgICAgb3B0aW9ucyA9M0QgVXRpbHMubWVyZ2Uob3B0aW9ucywgewotICAg ICAgICAgICAgICAgIGJ1dHRvbnMgICAgIDogeworICAgICAgICAgICAgICAgIGJ1dHRvbnMgICAg ICAgIDogewogICAgICAgICAgICAgICAgICAgICBleGVjdXRlIDogZXhlY3V0ZQotICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGluaXRpYWxfZXJy b3JzIDogdHJ1ZQogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBUb29sRm9ybUJhc2UucHJv dG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBvcHRpb25zKTsKICAgICAgICAgfQoKZGlmZiAt ciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdk ZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZj L3VpL3VpLXNlbGVjdC1kZWZhdWx0LmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMv dWkvdWktc2VsZWN0LWRlZmF1bHQuanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy91 aS91aS1zZWxlY3QtZGVmYXVsdC5qcwpAQCAtMjYxLDcgKzI2MSw3IEBACiAgICAgLyoqIFRlbXBs YXRlIGZvciBzZWxlY3Qgb3B0aW9ucwogICAgICovCiAgICAgX3RlbXBsYXRlT3B0aW9uOiBmdW5j dGlvbihvcHRpb25zKSB7Ci0gICAgICAgIHJldHVybiAnPG9wdGlvbiB2YWx1ZT0zRCInICsgb3B0 aW9ucy52YWx1ZSArICciPicgKyBvcHRpb25zLmxhYmVsID0KKyAnPC9vcHRpb24+JzsKKyAgICAg ICAgcmV0dXJuICc8b3B0aW9uIHZhbHVlPTNEIicgKyBvcHRpb25zLnZhbHVlICsgJyI+JyArIF8u ZXNjYXBlKG9wdGlvPQpucy5sYWJlbCkgKyAnPC9vcHRpb24+JzsKICAgICB9LAo9MjAKICAgICAv KiogVGVtcGxhdGUgZm9yIHNlbGVjdCB2aWV3CgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZm ZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgx ODk3OTdlOTc5IGNsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdWkvdWktc2VsZWN0LWxpYnJhcnku anMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy91aS91aS1zZWxlY3QtbGlicmFyeS5q cworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3VpL3VpLXNlbGVjdC1saWJyYXJ5Lmpz CkBAIC00LDcgKzQsNyBAQAo9MjAKIC8vIGNvbGxlY3Rpb24gb2YgbGlicmFyaWVzCiB2YXIgTGli cmFyaWVzID0zRCBCYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVuZCh7Ci0gICAgdXJsOiBnYWxheHlf Y29uZmlnLnJvb3QgKyAnYXBpL2xpYnJhcmllcycKKyAgICB1cmw6IGdhbGF4eV9jb25maWcucm9v dCArICdhcGkvbGlicmFyaWVzP2RlbGV0ZWQ9M0RmYWxzZScKIH0pOwo9MjAKIC8vIGNvbGxlY3Rp b24gb2YgZGF0YXNldAoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5 YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGll bnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3VwbG9hZC91cGxvYWQtcm93LmpzCi0tLSBhL2NsaWVudC9n YWxheHkvc2NyaXB0cy9tdmMvdXBsb2FkL3VwbG9hZC1yb3cuanMKKysrIGIvY2xpZW50L2dhbGF4 eS9zY3JpcHRzL212Yy91cGxvYWQvdXBsb2FkLXJvdy5qcwpAQCAtMTE4LDcgKzExOCw3IEBACiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9uKCdtb3VzZWRvd24nLCBmdW5jdGlvbihlKSB7 IGUucHJldmVudERlZmF1bD0KdCgpOyB9KTsKPTIwCiAgICAgICAgIC8vIGhhbmRsZSB0ZXh0IGVk aXRpbmcgZXZlbnQKLSAgICAgICAgaXQuZmluZCgnI3RleHQtY29udGVudCcpLm9uKCdrZXl1cCcs IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgaXQuZmluZCgnI3RleHQtY29udGVudCcpLm9uKCdjaGFu Z2UgaW5wdXQnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICBzZWxmLm1vZGVsLnNldCgndXJs X3Bhc3RlJywgJChlLnRhcmdldCkudmFsKCkpOwogICAgICAgICAgICAgc2VsZi5tb2RlbC5zZXQo J2ZpbGVfc2l6ZScsICQoZS50YXJnZXQpLnZhbCgpLmxlbmd0aCk7CiAgICAgICAgIH0pOwoKZGlm ZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZi ODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMv bXZjL3dvcmtmbG93L3dvcmtmbG93LXRlcm1pbmFscy5qcwotLS0gYS9jbGllbnQvZ2FsYXh5L3Nj cmlwdHMvbXZjL3dvcmtmbG93L3dvcmtmbG93LXRlcm1pbmFscy5qcworKysgYi9jbGllbnQvZ2Fs YXh5L3NjcmlwdHMvbXZjL3dvcmtmbG93L3dvcmtmbG93LXRlcm1pbmFscy5qcwpAQCAtNDU0LDcg KzQ1NCw3IEBACiAgICAgICAgIH0KICAgICB9KTsKPTIwCi0gICAgdmFyIE91dHB1dENvbGxlY3Rp b25UZXJtaW5hbCA9M0QgT3V0cHV0VGVybWluYWwuZXh0ZW5kKCB7CisgICAgdmFyIE91dHB1dENv bGxlY3Rpb25UZXJtaW5hbCA9M0QgVGVybWluYWwuZXh0ZW5kKCB7CiAgICAgICAgIGluaXRpYWxp emU6IGZ1bmN0aW9uKCBhdHRyICkgewogICAgICAgICAgICAgVGVybWluYWwucHJvdG90eXBlLmlu aXRpYWxpemUuY2FsbCggdGhpcywgYXR0ciApOwogICAgICAgICAgICAgdGhpcy5kYXRhdHlwZXMg PTNEIGF0dHIuZGF0YXR5cGVzOwoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBj ZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3 OSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvdml6L3N3ZWVwc3Rlci5qcwotLS0gYS9jbGllbnQvZ2Fs YXh5L3NjcmlwdHMvdml6L3N3ZWVwc3Rlci5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMv dml6L3N3ZWVwc3Rlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qKgotICogVmlzdWFsaXphdGlvbiBh bmQgY29tcG9uZW50cyBmb3IgU3dlZXBzdGVyLCBhIHZpc3VhbGl6YXRpb24gZm9yIGV4cGxvcmk9 Cm5nIGEgdG9vbCdzIHBhcmFtZXRlciBzcGFjZSB2aWE9MjAKKyAqIFZpc3VhbGl6YXRpb24gYW5k IGNvbXBvbmVudHMgZm9yIFN3ZWVwc3RlciwgYSB2aXN1YWxpemF0aW9uIGZvciBleHBsb3JpPQpu ZyBhIHRvb2wncyBwYXJhbWV0ZXIgc3BhY2UgdmlhCiAgKiBnZW5vbWljIHZpc3VhbGl6YXRpb24u CiAgKi8KPTIwCkBAIC03LDcgKzcsNyBAQAogICAgICAgIGZ1bmN0aW9uKF8sIGQzLCB1dGlsLCB2 aXN1YWxpemF0aW9uLCB0cmFja3MsIHRvb2xzLCBkYXRhLCBjb25maWcsIG09Cm9kX2ljb25fYnRu KSB7Cj0yMAogLyoqCi0gKiBBIGNvbGxlY3Rpb24gb2YgdG9vbCBpbnB1dCBzZXR0aW5ncy4gT2Jq ZWN0IGlzIHVzZWZ1bCBmb3Iga2VlcGluZyBhIGxpcz0KdCBvZiBzZXR0aW5ncz0yMAorICogQSBj b2xsZWN0aW9uIG9mIHRvb2wgaW5wdXQgc2V0dGluZ3MuIE9iamVjdCBpcyB1c2VmdWwgZm9yIGtl ZXBpbmcgYSBsaXM9CnQgb2Ygc2V0dGluZ3MKICAqIGZvciBmdXR1cmUgdXNlIHdpdGhvdXQgY2hh bmdpbmcgdGhlIGlucHV0J3MgdmFsdWUgYW5kIGZvciBwcmVzZXJ2aW5nIGluPQpwdXRzIG9yZGVy LgogICovCiB2YXIgVG9vbElucHV0c1NldHRpbmdzID0zRCBCYWNrYm9uZS5Nb2RlbC5leHRlbmQo ewpAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICB2YWx1ZXM6IG51bGwKICAgICB9CiB9KTsKLT0y MAorCiAvKioKICAqIFRyZWUgZm9yIGEgdG9vbCdzIHBhcmFtZXRlcnMuCiAgKi8KQEAgLTI1LDcg KzI1LDcgQEAKICAgICAgICAgdG9vbDogbnVsbCwKICAgICAgICAgdHJlZV9kYXRhOiBudWxsCiAg ICAgfSwKLSAgID0yMAorCiAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9ucykgewogICAg ICAgICAvLyBTZXQgdXAgdG9vbCBwYXJhbWV0ZXJzIHRvIHdvcmsgd2l0aCB0cmVlLgogICAgICAg ICB2YXIgc2VsZiA9M0QgdGhpczsKQEAgLTEwOSw3ICsxMDksNyBAQAogICAgICAgICAgICAgICAg ICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgICAgICAvLyBSZWN1cnNlIHRvIGhhbmRs ZSBvdGhlciBwYXJhbWV0ZXJzLgogICAgICAgICAgICAgICAgIHJldHVybiBfLm1hcChzZXR0aW5n cywgZnVuY3Rpb24oc2V0dGluZykgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gewpAQCAt MTQxLDcgKzE0MSw3IEBACiAgICAgZ2V0X251bV9sZWF2ZXM6IGZ1bmN0aW9uKCkgewogICAgICAg ICByZXR1cm4gdGhpcy5nZXRfdHJlZV9wYXJhbXMoKS5yZWR1Y2UoZnVuY3Rpb24obWVtbywgcGFy YW0pIHsgcmV0dXI9Cm4gbWVtbyAqIHBhcmFtLmdldF9zYW1wbGVzKCkubGVuZ3RoOyB9LCAxKTsK ICAgICB9LAotICAgPTIwCisKICAgICAvKioKICAgICAgKiBSZXR1cm5zIGFycmF5IG9mIFRvb2xJ bnB1dHNTZXR0aW5ncyBvYmplY3RzIGJhc2VkIG9uIGEgbm9kZSBhbmQgaXRzPQogc3VidHJlZS4K ICAgICAgKi8KQEAgLTE1OSw3ICsxNTksNyBAQAogICAgICAgICAgICAgICAgIGN1cl9ub2RlID0z RCBjdXJfbm9kZS5wYXJlbnQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICA9MjAK KwogICAgICAgICAvLyBXYWxrIHN1YnRyZWUgc3RhcnRpbmcgYXQgY2xpY2tlZCBub2RlIHRvIGdl dCBmdWxsIGxpc3Qgb2Ygc2V0dGk9Cm5ncy4KICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXMsCiAg ICAgICAgICAgICBnZXRfc2V0dGluZ3MgPTNEIGZ1bmN0aW9uKG5vZGUsIHNldHRpbmdzKSB7CkBA IC0xNjgsNyArMTY4LDcgQEAKICAgICAgICAgICAgICAgICBpZiAobm9kZS5wYXJhbSkgewogICAg ICAgICAgICAgICAgICAgICBzZXR0aW5nc1tub2RlLnBhcmFtLmdldCgnbmFtZScpXSA9M0Qgbm9k ZS52YWx1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAg ICAgICAgaWYgKCFub2RlLmNoaWxkcmVuKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEF0IGxl YWYgbm9kZSwgc28gcmV0dXJuIHNldHRpbmdzLgogICAgICAgICAgICAgICAgICAgICByZXR1cm4g bmV3IFRvb2xJbnB1dHNTZXR0aW5ncyh7CkBAIC0xODIsMTAgKzE4MiwxMCBAQAogICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBhbGxfc2V0dGluZ3MgPTNEIGdl dF9zZXR0aW5ncyh0YXJnZXRfbm9kZSwgZml4ZWRfc2V0dGluZ3MpOwotICAgICAgID0yMAorCiAg ICAgICAgIC8vIElmIHVzZXIgY2xpY2tlZCBvbiBsZWFmLCBzZXR0aW5ncyBpcyBhIHNpbmdsZSBk aWN0LiBDb252ZXJ0IHRvID0KYXJyYXkgZm9yIHNpbXBsaWNpdHkuCiAgICAgICAgIGlmICghXy5p c0FycmF5KGFsbF9zZXR0aW5ncykpIHsgYWxsX3NldHRpbmdzID0zRCBbIGFsbF9zZXR0aW5ncyBd Oz0KIH0KLSAgICAgICA9MjAKKwogICAgICAgICByZXR1cm4gYWxsX3NldHRpbmdzOwogICAgIH0s Cj0yMApAQCAtMjM1LDcgKzIzNSw3IEBACiAgICAgICogUmV0dXJucyBhIGxpc3Qgb2YgcGFyYW1l dGVycyB1c2VkIGluIHRyZWUuCiAgICAgICovCiAgICAgdG9KU09OOiBmdW5jdGlvbigpIHsKLSAg ICAgICAgLy8gRklYTUU6IHJldHVybmluZyBhbmQganNvbmlmeWluZyBjb21wbGV0ZSBwYXJhbSBj YXVzZXMgdHJvdWJsZSBvPQpuIHRoZSBzZXJ2ZXIgc2lkZSw9MjAKKyAgICAgICAgLy8gRklYTUU6 IHJldHVybmluZyBhbmQganNvbmlmeWluZyBjb21wbGV0ZSBwYXJhbSBjYXVzZXMgdHJvdWJsZSBv PQpuIHRoZSBzZXJ2ZXIgc2lkZSwKICAgICAgICAgLy8gc28ganVzdCB1c2UgZXNzZW50aWFsIGF0 dHJpYnV0ZXMgZm9yIG5vdy4KICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0X3RyZWVfcGFyYW1zKCku bWFwKGZ1bmN0aW9uKHBhcmFtKSB7CiAgICAgICAgICAgICByZXR1cm4gewpAQCAtMjU1LDcgKzI1 NSw3IEBACiAgICAgICAgIHNldHRpbmdzOiBudWxsLAogICAgICAgICByZWdpb25zOiBudWxsCiAg ICAgfSwKLSAgID0yMAorCiAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9ucykgewogICAg ICAgICB0aGlzLnNldCgncmVnaW9ucycsIG9wdGlvbnMucmVnaW9ucyk7CiAgICAgICAgIGlmIChv cHRpb25zLnRyYWNrKSB7CkBAIC0yNzIsNyArMjcyLDcgQEAKICAgICAgICAgdmFyIHRoaXNfc2V0 dGluZ3MgPTNEIHRoaXMuZ2V0KCdzZXR0aW5ncycpLAogICAgICAgICAgICAgb3RoZXJfc2V0dGlu Z3MgPTNEIGFfdHJhY2suZ2V0KCdzZXR0aW5ncycpOwogICAgICAgICBmb3IgKHZhciBwcm9wIGlu IHRoaXNfc2V0dGluZ3MpIHsKLSAgICAgICAgICAgIGlmICghb3RoZXJfc2V0dGluZ3NbcHJvcF0g fHw9MjAKKyAgICAgICAgICAgIGlmICghb3RoZXJfc2V0dGluZ3NbcHJvcF0gfHwKICAgICAgICAg ICAgICAgICB0aGlzX3NldHRpbmdzW3Byb3BdICE9M0Q9M0Qgb3RoZXJfc2V0dGluZ3NbcHJvcF0p IHsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC0zMTYs OCArMzE2LDggQEAKICAgICAgICAgdGhpcy5zZXQoJ3Rvb2xfd2l0aF9zYW1wbGFibGVfaW5wdXRz JywgdG9vbF93aXRoX3NhbXBsYWJsZV9pbnB1dHMpOwogICAgICAgICAvLyBSZW1vdmUgY29tcGxl eCBwYXJhbWV0ZXJzIGZvciBub3cuCiAgICAgICAgIHRvb2xfd2l0aF9zYW1wbGFibGVfaW5wdXRz LnJlbW92ZV9pbnB1dHMoIFsgJ2RhdGEnLCAnaGlkZGVuX2RhdGEnLD0KICdjb25kaXRpb25hbCcs ICd0ZXh0JyBdICk7Ci0gICAgICAgPTIwCi0gICAgICAgIHRoaXMuc2V0KCdwYXJhbWV0ZXJfdHJl ZScsIG5ldyBUb29sUGFyYW1ldGVyVHJlZSh7PTIwCisKKyAgICAgICAgdGhpcy5zZXQoJ3BhcmFt ZXRlcl90cmVlJywgbmV3IFRvb2xQYXJhbWV0ZXJUcmVlKHsKICAgICAgICAgICAgIHRvb2w6IHRv b2xfd2l0aF9zYW1wbGFibGVfaW5wdXRzLAogICAgICAgICAgICAgY29uZmlnOiBvcHRpb25zLnRy ZWVfY29uZmlnCiAgICAgICAgIH0pKTsKQEAgLTQ0NSw5ICs0NDUsOSBAQAogdmFyIFRvb2xJbnB1 dFZhbE9yU3dlZXBWaWV3ID0zRCBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7Cj0yMAogICAgIC8vIFRl bXBsYXRlIGZvciByZW5kZXJpbmcgc3dlZXAgaW5wdXRzOgotICAgIG51bWJlcl9pbnB1dF90ZW1w bGF0ZTogJzxkaXYgY2xhc3M9M0QiZm9ybS1yb3ctaW5wdXQgc3dlZXAiPicgKz0yMAorICAgIG51 bWJlcl9pbnB1dF90ZW1wbGF0ZTogJzxkaXYgY2xhc3M9M0QiZm9ybS1yb3ctaW5wdXQgc3dlZXAi PicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCBjbGFzcz0zRCJtaW4iIHR5 cGU9M0QidGV4dCIgc2l6ZT0zRCI2IiA9CnZhbHVlPTNEIjwlPTNEIG1pbiAlPiI+IC0gJyArCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IGNsYXNzPTNEIm1heCIgdHlwZT0zRCJ0 ZXh0IiBzaXplPTNEIjYiID0KdmFsdWU9M0QiPCU9M0QgbWF4ICU+Ij4nICs9MjAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICc8aW5wdXQgY2xhc3M9M0QibWF4IiB0eXBlPTNEInRleHQiIHNp emU9M0QiNiIgPQp2YWx1ZT0zRCI8JT0zRCBtYXggJT4iPicgKwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgJyBzYW1wbGVzOiA8aW5wdXQgY2xhc3M9M0QibnVtX3NhbXBsZXMiIHR5cGU9M0Q9 CiJ0ZXh0IiBzaXplPTNEIjEiIHZhbHVlPTNEIjwlPTNEIG51bV9zYW1wbGVzICU+Ij4nICsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nLAo9MjAKQEAgLTQ3MSwxNiArNDcxLDE2 IEBACj0yMAogICAgICAgICAvLyBBZGQgcm93IGZvciBwYXJhbWV0ZXIgc3dlZXAgaW5wdXRzLgog ICAgICAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiB0b29scy5JbnRlZ2VyVG9vbFBhcmFtZXRlcikg ewotICAgICAgICAgICAgc3dlZXBfaW5wdXRzX3JvdyA9M0QgJChfLnRlbXBsYXRlKHRoaXMubnVt YmVyX2lucHV0X3RlbXBsYXRlLCA9CnRoaXMubW9kZWwudG9KU09OKCkpKTsKKyAgICAgICAgICAg IHN3ZWVwX2lucHV0c19yb3cgPTNEICQoIF8udGVtcGxhdGUodGhpcy5udW1iZXJfaW5wdXRfdGVt cGxhdGUpPQoodGhpcy5tb2RlbC50b0pTT04oKSkgKTsKICAgICAgICAgfQogICAgICAgICBlbHNl IGlmIChpbnB1dCBpbnN0YW5jZW9mIHRvb2xzLlNlbGVjdFRvb2xQYXJhbWV0ZXIpIHsKICAgICAg ICAgICAgIHZhciBvcHRpb25zID0zRCBfLm1hcCh0aGlzLiRlbC5maW5kKCdzZWxlY3Qgb3B0aW9u JyksIGZ1bmN0aW9uPQoob3B0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKG9w dGlvbikudmFsKCk7CiAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgb3B0aW9u c190ZXh0ID0zRCBvcHRpb25zLmpvaW4oJywgJyk7Ci0gICAgICAgICAgICBzd2VlcF9pbnB1dHNf cm93ID0zRCAkKF8udGVtcGxhdGUodGhpcy5zZWxlY3RfaW5wdXRfdGVtcGxhdGUsIHsKKyAgICAg ICAgICAgIHN3ZWVwX2lucHV0c19yb3cgPTNEICQoIF8udGVtcGxhdGUodGhpcy5zZWxlY3RfaW5w dXRfdGVtcGxhdGUpPQooewogICAgICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNfdGV4dAot ICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgfSkgKTsKICAgICAgICAgfQogICAgICAgICBz d2VlcF9pbnB1dHNfcm93Lmluc2VydEFmdGVyKHNpbmdsZV9pbnB1dF9yb3cpOwo9MjAKQEAgLTQ5 Nyw3ICs0OTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmhpZGUoKTsKICAgICAg ICAgICAgICAgICAgICAgc2VsZi4kZWwuZmluZCgnLmljb24tYnV0dG9uLnRvZ2dsZScpLnNob3co KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAg fSwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB0aXRsZTogJ1JlbW92ZSBwYXJhbWV0 ZXIgZnJvbSB0cmVlJywKQEAgLTUxMSw5ICs1MTEsOSBAQAogICAgICAgICAgICAgICAgICAgICBz ZWxmLiRlbC5maW5kKCcuaWNvbi1idXR0b24ucGx1cy1idXR0b24nKS5zaG93KCk7CiAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgXSw9MjAKKyAgICAgICAgICAg IF0sCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgfSk7 CiAgICAgICAgICAgICB0aGlzLiRlbC5wcmVwZW5kKG1lbnUuJGVsKTsKPTIwCkBAIC01NjgsMTIg KzU2OCwxMiBAQAogICovCiB2YXIgVG9vbFBhcmFtZXRlclRyZWVWaWV3ID0zRCBCYWNrYm9uZS5W aWV3LmV4dGVuZCh7CiAgICAgY2xhc3NOYW1lOiAndG9vbC1wYXJhbWV0ZXItdHJlZScsCi0gICA9 MjAKKwogICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAgLy8gV2hl biB0cmVlIGRhdGEgY2hhbmdlcywgcmUtcmVuZGVyLgogICAgICAgICB0aGlzLm1vZGVsLm9uKCdj aGFuZ2U6dHJlZV9kYXRhJywgdGhpcy5yZW5kZXIsIHRoaXMpOwogICAgIH0sCi0gICA9MjAKKwog ICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgIC8vIFN0YXJ0IGZyZXNoLgogICAgICAg ICB0aGlzLiRlbC5jaGlsZHJlbigpLnJlbW92ZSgpOwpAQCAtNjQwLDcgKzY0MCw3IEBACiAgICAg ICAgICAgLm9uKCdtb3VzZW91dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgbm9kZS5zdHls ZSgnZmlsbCcsICcjMDAwJyk7CiAgICAgICAgICAgfSk7Ci0gPTIwCisKICAgICAgICAgbm9kZS5h cHBlbmQoImNpcmNsZSIpCiAgICAgICAgICAgLmF0dHIoInIiLCA5KTsKPTIwCkBAIC02NTgsMTMg KzY1OCwxMyBAQAogdmFyIFN3ZWVwc3RlclZpc3VhbGl6YXRpb25WaWV3ID0zRCBCYWNrYm9uZS5W aWV3LmV4dGVuZCh7CiAgICAgY2xhc3NOYW1lOiAnU3dlZXBzdGVyJywKPTIwCi0gICAgaGVscFRl eHQ6PTIwCisgICAgaGVscFRleHQ6CiAgICAgICAgICc8ZGl2PjxoND5HZXR0aW5nIFN0YXJ0ZWQ8 L2g0PicgKwogICAgICAgICAnPG9sPjxsaT5DcmVhdGUgYSBwYXJhbWV0ZXIgdHJlZSBieSB1c2lu ZyB0aGUgaWNvbnMgbmV4dCB0byB0aGUgdG89Cm9sXCdzIHBhcmFtZXRlciBuYW1lcyB0byBhZGQg b3IgcmVtb3ZlIHBhcmFtZXRlcnMuJyArCiAgICAgICAgICc8bGk+QWRqdXN0IHRoZSB0cmVlIGJ5 IHVzaW5nIHBhcmFtZXRlciBpbnB1dHMgdG8gc2VsZWN0IG1pbiwgbWF4LD0KIGFuZCBudW1iZXIg b2Ygc2FtcGxlcycgKwogICAgICAgICAnPGxpPlJ1biB0aGUgdG9vbCB3aXRoIGRpZmZlcmVudCBz ZXR0aW5ncyBieSBjbGlja2luZyBvbiB0cmVlIG5vZGU9CnMnICsKICAgICAgICAgJzwvb2w+PC9k aXY+JywKLSAgID0yMAorCiAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9ucykgewogICAg ICAgICB0aGlzLmNhbnZhc19tYW5hZ2VyID0zRCBuZXcgdmlzdWFsaXphdGlvbi5DYW52YXNNYW5h Z2VyKHRoaXMuJGVsLnA9CmFyZW50cygnYm9keScpKTsKICAgICAgICAgdGhpcy50b29sX3BhcmFt X3RyZWVfdmlldyA9M0QgbmV3IFRvb2xQYXJhbWV0ZXJUcmVlVmlldyh7IG1vZGVsOiB0PQpoaXMu bW9kZWwuZ2V0KCdwYXJhbWV0ZXJfdHJlZScpIH0pOwpAQCAtNjgwLDcgKzY4MCw3IEBACiAgICAg ICAgIH0pOwo9MjAKICAgICAgICAgLy8gU2V0IGJsb2NrLCByZXZlcnNlIHN0cmFuZCBibG9jayBj b2xvcnM7IHRoZXNlIGNvbG9ycyB3aWxsIGJlIHVzPQplZCBmb3IgYWxsIHRyYWNrcy4KLSAgICAg ICAgdGhpcy5jb25maWcgPTNEIGNvbmZpZy5Db25maWdTZXR0aW5nQ29sbGVjdGlvbi5mcm9tX21v ZGVsc19hbmRfc2F2PQplZF92YWx1ZXMoPTIwCisgICAgICAgIHRoaXMuY29uZmlnID0zRCBjb25m aWcuQ29uZmlnU2V0dGluZ0NvbGxlY3Rpb24uZnJvbV9tb2RlbHNfYW5kX3Nhdj0KZWRfdmFsdWVz KAogICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgIHsga2V5OiAnbmFtZScsIGxhYmVsOiAn TmFtZScsIHR5cGU6ICd0ZXh0JywgZGVmYXVsdF92YWx1ZTo9CiAnJyB9LAogICAgICAgICAgICAg ICAgIHsga2V5OiAnYV9jb2xvcicsIGxhYmVsOiAnQSBDb2xvcicsIHR5cGU6ICdjb2xvcicsIGRl ZmF1bHQ9Cl92YWx1ZTogIiNGRjAwMDAiIH0sCkBAIC02OTMsNyArNjkzLDcgQEAKICAgICAgICAg ICAgIF0sIHt9CiAgICAgICAgICk7CiAgICAgfSwKLSAgID0yMAorCiAgICAgcmVuZGVyOiBmdW5j dGlvbigpIHsKICAgICAgICAgLy8gUmVuZGVyIHRyZWUgZGVzaWduIHZpZXcgaW4gbGVmdCBwYW5l bC4KICAgICAgICAgdmFyIHRyZWVfZGVzaWduX3ZpZXcgPTNEIG5ldyBUb29sUGFyYW1ldGVyVHJl ZURlc2lnblZpZXcoewpAQCAtNzQ5LDcgKzc0OSw3IEBACiAgICAgICAgICAgICBbCiAgICAgICAg ICAgICAgICAgLy8gU2F2ZS4KICAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIHsg aWNvbl9jbGFzczogJ2Rpc2stLWFycm93JywgdGl0bGU6ICdTYXZlJywgb25fY2xpY2s6IGZ1bmM9 CnRpb24oKSB7PTIwCisgICAgICAgICAgICAgICAgeyBpY29uX2NsYXNzOiAnZGlzay0tYXJyb3cn LCB0aXRsZTogJ1NhdmUnLCBvbl9jbGljazogZnVuYz0KdGlvbigpIHsKICAgICAgICAgICAgICAg ICAgICAgLy8gU2hvdyBzYXZpbmcgZGlhbG9nIGJveAogICAgICAgICAgICAgICAgICAgICBzaG93 X21vZGFsKCJTYXZpbmcuLi4iLCAicHJvZ3Jlc3MiKTsKPTIwCkBAIC03NjAsOCArNzYwLDggQEAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzX2NoYW5nZXMnOiBmYWxzZQogICAgICAg ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAg ICAgICAgICAgIC5lcnJvcihmdW5jdGlvbigpIHs9MjAKLSAgICAgICAgICAgICAgICAgICAgICAg IHNob3dfbW9kYWwoICJDb3VsZCBOb3QgU2F2ZSIsICJDb3VsZCBub3Qgc2F2ZSB2aXN1PQphbGl6 YXRpb24uIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuIiw9MjAKKyAgICAgICAgICAgICAgICAgICAg LmVycm9yKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19tb2RhbCgg IkNvdWxkIE5vdCBTYXZlIiwgIkNvdWxkIG5vdCBzYXZlIHZpc3U9CmFsaXphdGlvbi4gUGxlYXNl IHRyeSBhZ2FpbiBsYXRlci4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eyAiQ2xvc2UiIDogaGlkZV9tb2RhbCB9ICk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAg ICAgICAgICAgICAgIH0gfSwKQEAgLTc3MiwxNCArNzcyLDE0IEBACiAgICAgICAgICAgICAgICAg ICAgIHRpdGxlOiAnU2V0IGRpc3BsYXkgbW9kZScKICAgICAgICAgICAgICAgICB9LAogICAgICAg ICAgICAgICAgIC8vIENsb3NlIHZpei4KLSAgICAgICAgICAgICAgICB7PTIwCi0gICAgICAgICAg ICAgICAgICAgIGljb25fY2xhc3M6ICdjcm9zcy1jaXJjbGUnLD0yMAotICAgICAgICAgICAgICAg ICAgICB0aXRsZTogJ0Nsb3NlJyw9MjAKLSAgICAgICAgICAgICAgICAgICAgb25fY2xpY2s6IGZ1 bmN0aW9uKCkgez0yMAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWNv bl9jbGFzczogJ2Nyb3NzLWNpcmNsZScsCisgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQ2xv c2UnLAorICAgICAgICAgICAgICAgICAgICBvbl9jbGljazogZnVuY3Rpb24oKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPTNEICIke2gudXJsX2ZvciggY29udHJv bGxlcj0zRCd2aT0Kc3VhbGl6YXRpb24nLCBhY3Rpb249M0QnbGlzdCcgKX0iOwotICAgICAgICAg ICAgICAgICAgICB9PTIwCisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICBdLD0yMAorICAgICAgICAgICAgXSwKICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICB0b29sdGlwX2NvbmZpZzoge3BsYWNlbWVudDogJ2JvdHRvbSd9CiAgICAgICAg ICAgICB9KTsKQEAgLTc5NywxMyArNzk3LDEzIEBACiAgICAgICAgICAgICB9KTsKPTIwCiAgICAg ICAgICAgICBtYWtlX3BvcHVwbWVudShtZW51LiRlbC5maW5kKCcuY2hldnJvbi1leHBhbmQnKSwg bW9kZV9tYXBwaW5nKTsKLSAgICAgICA9MjAKKwogICAgICAgICBtZW51LiRlbC5hdHRyKCJzdHls ZSIsICJmbG9hdDogcmlnaHQiKTsKICAgICAgICAgJCgiI3JpZ2h0IC51bmlmaWVkLXBhbmVsLWhl YWRlci1pbm5lciIpLmFwcGVuZChtZW51LiRlbCk7CiAgICAgfSwKPTIwCiAgICAgZ2V0X2Jhc2Vf Y29sb3I6IGZ1bmN0aW9uKGJhc2UpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmdldF92 YWx1ZShiYXNlLnRvTG93ZXJDYXNlKCkgKyAnX2NvbG9yJykgfHw9MjAKKyAgICAgICAgcmV0dXJu IHRoaXMuY29uZmlnLmdldF92YWx1ZShiYXNlLnRvTG93ZXJDYXNlKCkgKyAnX2NvbG9yJykgfHwK ICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmdldF92YWx1ZSgnbl9jb2xvcicpOwogICAgIH0s Cj0yMApAQCAtODU3LDcgKzg1Nyw3IEBACiAgICAgfSwKPTIwCiAgICAgLyoqCi0gICAgICogU2V0 cyB1cCBoYW5kbGluZyB3aGVuIHRyZWUgbm9kZXMgYXJlIGNsaWNrZWQuIFdoZW4gYSBub2RlIGlz IGNsaWNrZT0KZCwgdGhlIHRvb2wgaXMgcnVuIGZvciBlYWNoIG9mPTIwCisgICAgICogU2V0cyB1 cCBoYW5kbGluZyB3aGVuIHRyZWUgbm9kZXMgYXJlIGNsaWNrZWQuIFdoZW4gYSBub2RlIGlzIGNs aWNrZT0KZCwgdGhlIHRvb2wgaXMgcnVuIGZvciBlYWNoIG9mCiAgICAgICogdGhlIHNldHRpbmdz IGRlZmluZWQgYnkgdGhlIG5vZGUncyBzdWJ0cmVlIGFuZCB0cmFja3MgYXJlIGFkZGVkIGZvcj0K IGVhY2ggcnVuLgogICAgICAqLwogICAgIGhhbmRsZV9ub2RlX2NsaWNrczogZnVuY3Rpb24oKSB7 CkBAIC04NzUsMTEgKzg3NSwxMSBAQAo9MjAKICAgICAgICAgICAgIC8vIERvIG5vdCBhbGxvdyAx MCsgam9icyB0byBiZSBydW4uCiAgICAgICAgICAgICBpZiAoYWxsX3NldHRpbmdzLmxlbmd0aCA+ PTNEIDEwKSB7Ci0gICAgICAgICAgICAgICAgc2hvd19tb2RhbCgiV2hvYSB0aGVyZSBjb3dib3kh Iiw9MjAKKyAgICAgICAgICAgICAgICBzaG93X21vZGFsKCJXaG9hIHRoZXJlIGNvd2JveSEiLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3UgY2xpY2tlZCBvbiBhIG5vZGUgdG8gdHJ5 ICIgKyBzZWxmLm1vZGVsLmc9CmV0KCd0b29sJykuZ2V0KCduYW1lJykgKwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICIgd2l0aCAiICsgYWxsX3NldHRpbmdzLmxlbmd0aCArCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIiBkaWZmZXJlbnQgY29tYmluYXRpb25zIG9mIHNldHRpbmdz LiBZb3UgY2FuID0Kb25seSBydW4gMTAgam9icyBhdCBhIHRpbWUuIiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7PTIwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiT2siOiBmdW5jdGlvbigpIHsgaGlkZV9tb2RhbCgp OyBydW5fam9ic189CmRlZmVycmVkLnJlc29sdmUoZmFsc2UpOyB9CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CkBAIC05MDEsNyArOTAxLDcgQEAKICAgICAg ICAgICAgICAgICAgICAgc2VsZi5hZGRfdHJhY2socG1fdHJhY2spOwogICAgICAgICAgICAgICAg ICAgICByZXR1cm4gcG1fdHJhY2s7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAg ICAgICAgPTIwCisKICAgICAgICAgICAgICAgICAvLyBGb3IgZWFjaCB0cmFjaywgcnVuIHRvb2wg dXNpbmcgdHJhY2sncyBzZXR0aW5ncyBhbmQgdXBkPQphdGUgdHJhY2suCiAgICAgICAgICAgICAg ICAgXy5lYWNoKG5ld190cmFja3MsIGZ1bmN0aW9uKHBtX3RyYWNrLCBpbmRleCkgewogICAgICAg ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewpAQCAtOTE1LDcgKzkxNSw3IEBA CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrX2NvbmZpZyA9M0QgZGF0YXNl dC5nZXQoJ3RyYWNrX2NvbmZpZz0KJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g U2V0IGRhdGFzZXQgdG8gYmUgdGhlIHRvb2wncyBvdXRwdXQuCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdHJhY2tfY29uZmlnLmRhdGFzZXQgPTNEIGRhdGFzZXQ7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gU2V0IHRvb2wgdG8gbnVsbCBzbyB0aGF0IGl0IGlzIG5vdCB1bnBh Y2tlZD0KOyB1bnBhY2tpbmcgaXQgbWVzc2VzIHdpdGg9MjAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBTZXQgdG9vbCB0byBudWxsIHNvIHRoYXQgaXQgaXMgbm90IHVucGFja2VkPQo7 IHVucGFja2luZyBpdCBtZXNzZXMgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IHRoZSB0b29sIHBhcmFtZXRlcnMgYW5kIHBhcmFtZXRlciB0cmVlLgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRyYWNrX2NvbmZpZy50b29sID0zRCBudWxsOwo9MjAKQEAgLTkyNCwxMSAr OTI0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuZCBhZGQg dHJhY2sgZm9yIG91dHB1dCBkYXRhc2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh ciB0cmFja19vYmogPTNEIHRyYWNrcy5vYmplY3RfZnJvbV90ZW1wbGF0ZSg9CnRyYWNrX2NvbmZp Zywgc2VsZiwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tfb2JqLmlu aXRfZm9yX3Rvb2xfZGF0YSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPTIwCisKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwbV90cmFjay5zZXQoJ3RyYWNrJywgdHJhY2tfb2Jq KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICB9LCBp bmRleCAqIDEwMDAwKTsKLSAgICAgICAgICAgICAgICB9KTsgICA9MjAKKyAgICAgICAgICAgICAg ICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CgpkaWZmIC1yIGM4YWIw ZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2 ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGNsaWVudC90b29sc2hlZC9zY3JpcHRzL212Yy9ncm91 cHMvZ3JvdXAtZGV0YWlsLXZpZXcuanMKLS0tIGEvY2xpZW50L3Rvb2xzaGVkL3NjcmlwdHMvbXZj L2dyb3Vwcy9ncm91cC1kZXRhaWwtdmlldy5qcworKysgYi9jbGllbnQvdG9vbHNoZWQvc2NyaXB0 cy9tdmMvZ3JvdXBzL2dyb3VwLWRldGFpbC12aWV3LmpzCkBAIC01Niw3ICs1Niw3IEBACiAgICAg dGVtcGxhdGVSb3c6IGZ1bmN0aW9uKCkgewogICAgICAgICByZXR1cm4gXy50ZW1wbGF0ZShbCiAg ICAgICAgICAgICAgICAgJzxkaXY+JywKLSAgICAgICAgICAgICAgICAgICAgJzxoMz48JT0zRCBn cm91cC5nZXQoIm5hbWUiKSAlPjwvaDM+JywKKyAgICAgICAgICAgICAgICAgICAgJzxoMz48JT0z RCBfLmVzY2FwZShncm91cC5nZXQoIm5hbWUiKSkgJT48L2gzPicsCiAgICAgICAgICAgICAgICAg ICAgICc8cCBjbGFzcz0zRCIiIHN0eWxlPTNEImNvbG9yOmdyYXk7Ij4nLAogICAgICAgICAgICAg ICAgICAgICAnQSBncm91cCBvZiA8JT0zRCBncm91cC5nZXQoIm1lbWJlcnMiKS5sZW5ndGggJT4g bWVtYmU9CnJzIHdpdGggPCU9M0QgZ3JvdXAuZ2V0KCJyZXBvc2l0b3JpZXMiKS5sZW5ndGggJT4g cmVwb3NpdG9yaWVzIGFuZCBhIHRvdGFsID0Kb2YgPCU9M0QgZ3JvdXAuZ2V0KCJ0b3RhbF9kb3du bG9hZHMiKSAlPiBjb21iaW5lZCByZXBvc2l0b3J5IGNsb25lcy48L3A+JywKPTIwCkBAIC03MSwx MCArNzEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCUgXy5lYWNoKGdyb3Vw LmdldCgibWVtYmVycyIpLCBmdW5jdGlvbihtZW1iPQplcikgeyAlPicsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJzx0cj4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn PHRkPicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCU9M0QgbWVtYmVy LnVzZXJuYW1lICU+JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8JT0z RCBfLmVzY2FwZShtZW1iZXIudXNlcm5hbWUpICU+JywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJzwvdGQ+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZD4n LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxhIGRhdGEtdG9nZ2xlPTNE InRvb2x0aXAiIGRhdGEtcGxhY2U9Cm1lbnQ9M0QidG9wIiB0aXRsZT0zRCJSZXBvc2l0b3JpZXMg b2YgPCU9M0QgbWVtYmVyLnVzZXJuYW1lICU+IiBocmVmPTNEIi9yZT0KcG9zaXRvcnkvYnJvd3Nl X3JlcG9zaXRvcmllc19ieV91c2VyP3VzZXJfaWQ9M0Q8JT0zRCBtZW1iZXIuaWQgJT4mdXNlX3Bh bmVsPQpzPTNEdHJ1ZSIgaWQ9M0QiPCU9M0QgbWVtYmVyLmlkICU+Ij48JT0zRCBtZW1iZXIudXNl cl9yZXBvc19jb3VudCAlPjwvYT4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJzxhIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2U9Cm1lbnQ9M0QidG9wIiB0 aXRsZT0zRCJSZXBvc2l0b3JpZXMgb2YgPCU9M0QgXy5lc2NhcGUobWVtYmVyLnVzZXJuYW1lKSAl PiIgaD0KcmVmPTNEIi9yZXBvc2l0b3J5L2Jyb3dzZV9yZXBvc2l0b3JpZXNfYnlfdXNlcj91c2Vy X2lkPTNEPCU9M0QgbWVtYmVyLmlkICU+PQomdXNlX3BhbmVscz0zRHRydWUiIGlkPTNEIjwlPTNE IG1lbWJlci5pZCAlPiI+PCU9M0QgbWVtYmVyLnVzZXJfcmVwb3NfY291bnQ9CiAlPjwvYT4nLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC90ZD4nLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnPHRkPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnPCU9M0QgbWVtYmVyLnRpbWVfY3JlYXRlZCAlPicsCkBAIC0xMDEsMTYgKzEwMSwxNiBA QAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8JSBfLmVhY2goZ3JvdXAuZ2V0KCJyZXBv c2l0b3JpZXMiKSwgZnVuY3Rpb249CihyZXBvKSB7ICU+JywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJzx0cj4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jzx0ZD4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8YSBkYXRh LXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRhLXA9CmxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiRGV0 YWlscyBvZiA8JT0zRCByZXBvLm5hbWUgJT4iIGhyZWY9M0QiL3ZpZXcvPCU9Cj0zRCByZXBvLm93 bmVyICU+LzwlPTNEIHJlcG8ubmFtZSAlPiIgaWQ9M0QiPCU9M0QgcmVwby5pZCAlPiI+PCU9M0Qg cmVwby5uYT0KbWUgJT48L2E+JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnPGEgZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wPQpsYWNlbWVudD0zRCJ0b3Ai IHRpdGxlPTNEIkRldGFpbHMgb2YgPCU9M0QgXy5lc2NhcGUocmVwby5uYW1lKSAlPiIgaHJlZj0z RCI9Ci92aWV3LzwlPTNEIF8uZXNjYXBlKHJlcG8ub3duZXIpICU+LzwlPTNEIF9lc2NhcGUocmVw by5uYW1lKSAlPiIgaWQ9M0QiPCU9Cj0zRCByZXBvLmlkICU+Ij48JT0zRCBfLmVzY2FwZShyZXBv Lm5hbWUpICU+PC9hPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC90 ZD4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZD4nLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8JT0zRCByZXBvLmRlc2NyaXB0aW9u ICU+JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCU9M0QgXy5l c2NhcGUocmVwby5kZXNjcmlwdGlvbikgPQolPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnPC90ZD4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jzx0ZD4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8JT0zRCBy ZXBvLnRpbWVzX2Rvd25sb2FkZWQgJT4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJzwvdGQ+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+ JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCU9M0QgcmVwby5v d25lciAlPicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwlPTNE IF8uZXNjYXBlKHJlcG8ub3duZXIpICU+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICc8L3RkPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHRk PicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwlIF8uZWFjaCgo cmVwby5jYXRlZ29yaWVzKSwgZnVuYz0KdGlvbihjYXQpIHsgJT4nLAoKZGlmZiAtciBjOGFiMGZl Mjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRl MTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGllbnQvdG9vbHNoZWQvc2NyaXB0cy9tdmMvZ3JvdXBz L2dyb3VwLWxpc3Ryb3ctdmlldy5qcwotLS0gYS9jbGllbnQvdG9vbHNoZWQvc2NyaXB0cy9tdmMv Z3JvdXBzL2dyb3VwLWxpc3Ryb3ctdmlldy5qcworKysgYi9jbGllbnQvdG9vbHNoZWQvc2NyaXB0 cy9tdmMvZ3JvdXBzL2dyb3VwLWxpc3Ryb3ctdmlldy5qcwpAQCAtMTksNyArMTksNyBAQAogICAg IHRlbXBsYXRlUm93OiBmdW5jdGlvbigpIHsKICAgICAgICAgcmV0dXJuIF8udGVtcGxhdGUoWwog ICAgICAgICAgICAgICAgICc8dHIgY2xhc3M9M0QiIiBkYXRhLWlkPTNEIjwlLSBncm91cC5nZXQo ImlkIikgJT4iPicsCi0gICAgICAgICAgICAgICAgJzx0ZD48YSBocmVmPTNEImdyb3VwcyMvPCU9 M0QgZ3JvdXAuZ2V0KCJpZCIpICU+Ij48JT0zRCBncj0Kb3VwLmdldCgibmFtZSIpICU+PC9hPjwv dGQ+JywKKyAgICAgICAgICAgICAgICAnPHRkPjxhIGhyZWY9M0QiZ3JvdXBzIy88JT0zRCBncm91 cC5nZXQoImlkIikgJT4iPjwlPTNEIF8uPQplc2NhcGUoZ3JvdXAuZ2V0KCJuYW1lIikpICU+PC9h PjwvdGQ+JywKICAgICAgICAgICAgICAgICAvLyAnPHRkPmRlc2NyaXB0aW9uPC90ZD4nLAogICAg ICAgICAgICAgICAgICc8dGQ+PCU9M0QgZ3JvdXAuZ2V0KCJ0b3RhbF9tZW1iZXJzIikgJT48L3Rk PicsCiAgICAgICAgICAgICAgICAgJzx0ZD48JT0zRCBncm91cC5nZXQoInRvdGFsX3JlcG9zIikg JT48L3RkPicsCgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZk ZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGNvbmZpZy9q b2JfY29uZi54bWwuc2FtcGxlX2FkdmFuY2VkCi0tLSBhL2NvbmZpZy9qb2JfY29uZi54bWwuc2Ft cGxlX2FkdmFuY2VkCisrKyBiL2NvbmZpZy9qb2JfY29uZi54bWwuc2FtcGxlX2FkdmFuY2VkCkBA IC01NCw2ICs1NCwxOSBAQAogICAgICAgICAgICAgICAgZ2FsYXh5X2luZnJhc3RydWN0dXJlX3Vy bCBpcyBzZXQgaW4gZ2FsYXh5LmluaS4KICAgICAgICAgICAtLT48cGFyYW0gaWQ9M0QiZ2FsYXh5 X3VybCI+aHR0cDovL2xvY2FsaG9zdDo4MDgwPC9wYXJhbT4KKyAgICAgICAgICA8IS0tIEFNUVAg ZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgYSBwdWJsaXNoZWQgbWVzc2FnZSBpcyByZWNlaXZlPQpk IGJ5CisgICAgICAgICAgICAgICB0aGUgQU1RUCBzZXJ2ZXIsIHNvIEdhbGF4eS9QdWxzYXIgY2Fu IHJlcXVlc3QgdGhhdCB0aGUgY29ucz0KdW1lcgorICAgICAgICAgICAgICAgYWNrbm93bGVkZ2Ug bWVzc2FnZXMgYW5kIHdpbGwgcmVzZW5kIHRoZW0gaWYgYWNrbm93bGVkZ2VtZW49CnQgaXMKKyAg ICAgICAgICAgICAgIG5vdCByZWNlaXZlZCBhZnRlciBhIGNvbmZpZ3VyYWJsZSB0aW1lb3V0LiAg LS0+CisgICAgICAgICAgPCEtLSA8cGFyYW0gaWQ9M0QiYW1xcF9hY2tub3dsZWRnZSI+RmFsc2U8 L3BhcmFtPiAtLT4KKyAgICAgICAgICA8IS0tIEdhbGF4eSByZXVzZXMgUHVsc2FyJ3MgcGVyc2lz dGVuY2VfZGlyZWN0b3J5IHBhcmFtZXRlciAodmlhPQogdGhlCisgICAgICAgICAgICAgICBQdWxz YXIgY2xpZW50IGxpYikgdG8gc3RvcmUgYSByZWNvcmQgb2YgcmVjZWl2ZWQKKyAgICAgICAgICAg ICAgIGFja25vd2xlZGdlbWVudHMsIGFuZCB0byBrZWVwIHRyYWNrIG9mIG1lc3NhZ2VzIHdoaWNo IGhhdmUgPQpub3QKKyAgICAgICAgICAgICAgIGJlZW4gYWNrbm93bGVkZ2VkLiAtLT4KKyAgICAg ICAgICA8IS0tIDxwYXJhbSBpZD0zRCJwZXJzaXN0ZW5jZV9kaXJlY3RvcnkiPi9wYXRoL3RvL2Rp cjwvcGFyYW0+IC0tPgorICAgICAgICAgIDwhLS0gTnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBm b3IgYW4gYWNrbm93bGVkZ2VtZW50IGJlZm9yZQorICAgICAgICAgICAgICAgcmVwdWJsaXNoaW5n IGEgbWVzc2FnZS4gLS0+CisgICAgICAgICAgPCEtLSA8cGFyYW0gaWQ9M0QiYW1xcF9yZXB1Ymxp c2hfdGltZSI+MzA8L3BhcmFtPiAtLT48IS0tIFB1bHNhcj0KIGpvYiBtYW5hZ2VyIHRvIGNvbW11 bmljYXRlIHdpdGggKHNlZSBQdWxzYXIKICAgICAgICAgICAgICAgIGRvY3MgZm9yIGluZm9ybWF0 aW9uIG9uIGpvYiBtYW5hZ2VycykuIC0tPjwhLS0gPHBhcmFtIGlkPTNEPQoibWFuYWdlciI+X2Rl ZmF1bHRfPC9wYXJhbT4gLS0+CgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNm Yzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5 IGNvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL2NvbmZpZy9p cD0KeXRob24uaW5pLnNhbXBsZQotLS0gYS9jb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZp cm9ubWVudHMvaXB5dGhvbi9jb25maWcvaXB5dGhvbi5pbmkuc2E9Cm1wbGUKKysrIGIvY29uZmln L3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vY29uZmlnL2lweXRob24u aW5pLnNhPQptcGxlCkBAIC0xMiw3ICsxMiw3IEBACiBjb21tYW5kID0zRCBkb2NrZXIKPTIwCiAj IFRoZSBkb2NrZXIgaW1hZ2UgbmFtZSB0aGF0IHNob3VsZCBiZSBzdGFydGVkLgotaW1hZ2UgPTNE IGJncnVlbmluZy9kb2NrZXItaXB5dGhvbi1ub3RlYm9vazpkZXYKK2ltYWdlID0zRCBiZ3J1ZW5p bmcvZG9ja2VyLWlweXRob24tbm90ZWJvb2s6MTUuMDcKPTIwCiAjIEFkZGl0aW9uYWwgYXJndW1l bnRzIHRoYXQgYXJlIHBhc3NlZCB0byB0aGUgYGRvY2tlciBydW5gIGNvbW1hbmQuCiBjb21tYW5k X2luamVjdCA9M0QgLS1zaWctcHJveHk9M0R0cnVlIC1lIERFQlVHPTNEZmFsc2UKCmRpZmYgLXIg YzhhYjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3ZGZj MmFlNTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVf ZW52aXJvbm1lbnRzL3JzdHVkaW8vY29uZmlnL3JzPQp0dWRpby5pbmkuc2FtcGxlCi0tLSBhL2Nv bmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9yc3R1ZGlvL2NvbmZpZy9yc3R1 ZGlvLmluaS5zYT0KbXBsZQorKysgYi9jb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9u bWVudHMvcnN0dWRpby9jb25maWcvcnN0dWRpby5pbmkuc2E9Cm1wbGUKQEAgLTcsNyArNyw3IEBA Cj0yMAogW2RvY2tlcl0KIGNvbW1hbmQgPTNEIGRvY2tlcgotaW1hZ2UgPTNEIGVyYXNjaGUvZG9j a2VyLXJzdHVkaW8tbm90ZWJvb2s6ZGV2CitpbWFnZSA9M0QgZXJhc2NoZS9kb2NrZXItcnN0dWRp by1ub3RlYm9vazoxNS4wNwo9MjAKICMgQWRkaXRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmUgcGFz c2VkIHRvIHRoZSBgZG9ja2VyIHJ1bmAgY29tbWFuZC4gYC11YAogIyBzZXR0aW5ncyBhcmUgY29t cGxldGVseSBpZ25vcmVkLgoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3 OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBk b2Mvc291cmNlL3JlbGVhc2VzLzE1LjA3LnJzdAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zb3Vy Y2UvcmVsZWFzZXMvMTUuMDcucnN0CkBAIC0wLDAgKzEsNTQ4IEBACisKKy4uIHRvX2RvYworCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxNS4wNworLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorCitFbmhhbmNlbWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKworCisuLiBlbmhhbmNlbWVudHMKKworKiBJbnRlcmFjdGl2ZSBlbnZpcm9ubWVudCAo SUUpIGZyYW1ld29yayB1cGRhdGVzIGluY2x1ZGluZyBhIG5ldyBJRSBmb3IgUlM9CnR1ZGlvLgor ICAoVGhhbmtzIHRvIGEgdGVhbSBlZmZvcnQgc3BlYXJoZWFkZWQgYnkgYEBlcmFzY2hlIDxodHRw czovL2dpdGh1Yi5jb20vZXI9CmFzY2hlPmBfXy4pCisgIGBQdWxsIFJlcXVlc3QgMjI5YF8sIGBQ dWxsIFJlcXVlc3QgMjMwYF8KKyogUmV3b3JrIHdvcmtmbG93IGVkaXRvciB0byB1c2UgbmV3ZXIg dG9vbCBmb3JtIGNvbXBvbmVudHMgYW5kIGFsbG93IGNvbnN0PQpydWN0aW9uCisgIG9mIHdvcmtm bG93cyB3aXRoIHRvb2xzIGV4cGxpY2l0bHkgcHJvZHVjaW5nIG91dHB1dCBjb2xsZWN0aW9ucy4K KyAgYFB1bGwgUmVxdWVzdCAyODZgXywgYFB1bGwgUmVxdWVzdCAzMjhgXywgYFB1bGwgUmVxdWVz dCAzMTFgXywKKyAgYFB1bGwgUmVxdWVzdCAzOTdgXywgYFB1bGwgUmVxdWVzdCAyMzNgXywgYFB1 bGwgUmVxdWVzdCA2MjVgXywKKyAgYFB1bGwgUmVxdWVzdCA2MDJgXworKiBJbXBsZW1lbnQgcG9s aWNpZXMgZm9yIGNvbW1pdHRlcnMgYW5kIHB1bGwgcmVxdWVzdHMuCisgIGBQdWxsIFJlcXVlc3Qg Mjk1YF8sIGBQdWxsIFJlcXVlc3QgMzE0YF8KKyogQWxsb3cgZXhwb3J0aW5nIGEgbGlicmFyeSBm b2xkZXIgdG8gYSBoaXN0b3J5LiAoVGhhbmtzIHRvIGBAZXJpY2VubnMKKyAgPGh0dHBzOi8vZ2l0 aHViLmNvbS9lcmljZW5ucz5gX18uKSBgUHVsbCBSZXF1ZXN0IDQyNmBfCisqIEZpeCBhbmQgdXBk YXRlIGRvY3VtZW50YXRpb24gYXZhaWxhYmxlIG9uIHRoZSBSZWFkVGhlRG9jcyB3aXRoIHBhcnRp Y3VsYXIKKyAgZm9jdXMgb24gdGhlIEFQSSBkb2N1bWVudGF0aW9uLiAoVGhhbmtzIHRvIGBAbnNv cmFuem8KKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9uc29yYW56bz5gX18uKQorICBgUHVsbCBSZXF1 ZXN0IDM5OWBfLCBgUHVsbCBSZXF1ZXN0IDQwNWBfCisqIEFkZCBFREFNIElEcyB0byBHYWxheHkg ZGF0YXR5cGVzLiAoVGhhbmtzIHRvIGEgdGVhbSBlZmZvcnQgaW5pdGlhdGVkIGJ5ID0KYEBlcmFz Y2hlCisgIDxodHRwczovL2dpdGh1Yi5jb20vZXJhc2NoZT5gX18uKQorICBgUHVsbCBSZXF1ZXN0 IDgwYF8sIGBQdWxsIFJlcXVlc3QgMzQyYF8KKyogSW1wcm92ZWQgcmVwb3J0cyBhcHAgc29ydGlu ZyBhbmQgYnVnIGZpeGVzIHRoYW5rcyB0bworICBEYW5pZWwgQm91Y2hhcmQgKGBAQWlyaXN0b3Rh bCA8aHR0cHM6Ly9naXRodWIuY29tL0FpcmlzdG90YWw+YF9fKS4gRXZlbiA9Cm1vcmUKKyAgcmVw b3J0cyBlbmhhbmNlbWVudHMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgbmV4dCByZWxlYXNlIG9m IEdhbGF4eSBpbmNsPQp1ZGluZworICBuZXcgbGFuZGluZyBwYWdlLCBwYWdpbmF0aW9uLCBhbmQg c3BhcmtsaW5lIGdyYXBocy4KKyAgYFB1bGwgUmVxdWVzdCAzMDNgXywgYFB1bGwgUmVxdWVzdCAz MzBgXywgYFB1bGwgUmVxdWVzdCAzMzhgXworKiBTaWduaWZpY2FudCBzcGVlZHVwIG9mIHRvb2wg cGFuZWwvaG9tZXBhZ2UgbG9hZGluZy4gKFRoYW5rcyB0byBgQGFicmV0YXVkCisgIDxodHRwczov L2dpdGh1Yi5jb20vYWJyZXRhdWQ+YF9fLikgYFB1bGwgUmVxdWVzdCAxNTlgXworKiBBbGxvdyBw YXJhbWV0ZXJpemF0aW9uIG9mIHRvb2wgWE1MIG1hY3Jvcy4gYFB1bGwgUmVxdWVzdCAzNjJgXwor KiBBbGxvdyB1c2Ugb2YgdG9vbC1zdHlsZSBYTUwgbWFjcm9zIGluIGBgam9iX2NvbmYueG1sYGAu IGBQdWxsIFJlcXVlc3QgMzY9CjJgXworKiBVcGRhdGUgYW5kIGNsYXJpZnkgYWRtaW4gbWVudS4g YFB1bGwgUmVxdWVzdCAzMDJgXworKiBBZGQgdXNhZ2UgaW5mb3JtYXRpb24gdG8gcHl0aG9uIGNs ZWFudXAgc2NyaXB0cy4gKFRoYW5rcyB0byBgQGRwcnlhbjc5CisgIDxodHRwczovL2dpdGh1Yi5j b20vZHByeWFuNzk+YF9fLikgYFB1bGwgUmVxdWVzdCAyNzRgXworKiBBZGRlZCBkZWZhdWx0IGlu ZGV4aW5nIGZvciBiY2YgZmlsZXMuIGBQdWxsIFJlcXVlc3QgMTYzYF8KKyogSW1wbGVtZW50IG1l cmdpbmcgb2YgQkFNIGZpbGVzIGZvciB0aGUgcGFyYWxsZWxpc20gZnJhbWV3b3JrLiAoVGhhbmtz IHRvCisgIGBAcm9hbHZhMSA8aHR0cHM6Ly9naXRodWIuY29tL3JvYWx2YTE+YF9fLikgYFB1bGwg UmVxdWVzdCAxNDlgXworKiBTZW5kIHNpZ25hbCB0byByZWxvYWQgZGF0YSB0YWJsZXMgd2hlbiBh ZGRpbmcgYW4gZW50cnkgKFRoYW5rcyB0byBgQGFicmU9CnRhdWQKKyAgPGh0dHBzOi8vZ2l0aHVi LmNvbS9hYnJldGF1ZD5gX18uKSBgUHVsbCBSZXF1ZXN0IDI1MGBfCisqIEFkZCBkaXNwbGF5IGZv ciBJbnRlcnZhbCBmaWxlcyBhdCBJR1YgdmlhIGJlZHN0cmljdC4gYFB1bGwgUmVxdWVzdCAyNTlg XworKiBJbmNsdWRlIG1vcmUgaW5mb3JtYXRpb24gaW4gZGVmYXVsdCBgYHdlbGNvbWUuaHRtbGBg IGZpbGUuIGBQdWxsIFJlcXVlc3Q9CiAxOTBgXworKiBJbXBsZW1lbnQgYSBjb21tYW5kIGxpbmUg c2NyaXB0IGZvciBjb2xsZWN0aW5nIHN0YXRzIG9uIGpvYiBydW50aW1lcy49MjAKKyAgYFB1bGwg UmVxdWVzdCAxNTFgXworKiBJbXBsZW1lbnQgYW4gYXV0aGVudGljYXRpb24gcHJvdmlkZXIgZm9y IFBBTSAoUGx1Z2dhYmxlIEF1dGhlbnRpY2F0aW9uIE09Cm9kdWxlcykKKyAgKFRoYW5rcyB0byBg QHB2YW5oZXVzIDxodHRwczovL2dpdGh1Yi5jb20vcHZhbmhldXM+YF9fLikgYFB1bGwgUmVxdWVz dCA0PQo1OGBfCisqIFJlLWltcGxlbWVudCBsaWJyYXJ5IGRhdGEgYW5kIEZUUCBmaWxlIHBhcmFt ZXRlcnMgZm9yIG5ldyB0b29sIGZvcm0uCisgIGBQdWxsIFJlcXVlc3QgMTMyYF8sIGBQdWxsIFJl cXVlc3QgNTQ2YF8KKyogQWRkaW5nIHRvb2wgZXJyb3IgdHJhY2tpbmcuIChUaGFua3MgdG8gYEBr ZWxscm90dAorICA8aHR0cHM6Ly9naXRodWIuY29tL2tlbGxyb3R0PmBfXy4pIGBQdWxsIFJlcXVl c3QgMzIyYF8KKyogSW1wbGVtZW50IGBgPGZpbHRlcj5gYCB0YWcgZm9yIG91dHB1dCBjb2xsZWN0 aW9ucy4gYFB1bGwgUmVxdWVzdCA0NTVgXworKiBBbGxvdyBlbnZpcm9ubWVudCB2YXJpYWJsZSBk ZWZpbml0aW9ucyBpbiB0b29sIFhNTC4gYFB1bGwgUmVxdWVzdCAzOTVgXworKiBBZGQgbmV3IGBg ZXhjbHVkZV9taW5gYCBhbmQgYGBleGNsdWRlX21heGBgIGF0dHJpYnV0ZXMgdG8gYGBJblJhbmdl VmFsaWQ9CmF0b3JgYAorICBmb3IgbnVtZXJpYyB0b29sIHBhcmFtZXRlcnMuIChUaGFua3MgdG8g YEBncmVndm9ua3VzdGVyCisgIDxodHRwczovL2dpdGh1Yi5jb20vZ3JlZ3Zvbmt1c3Rlcj5gX18u KSBgUHVsbCBSZXF1ZXN0IDMzOWBfCisqIEFkZGVkIHVubGlua2VkIFRvb2wgU2hlZCBkZXBlbmRl bmN5IHJlc29sdmVyLiAoVGhhbmtzIHRvIGBAQ2hyaXN0aWFuLUIKKyAgPGh0dHBzOi8vZ2l0aHVi LmNvbS9DaHJpc3RpYW4tQj5gX18uKSBgUHVsbCBSZXF1ZXN0IDQ0MWBfCisqIEFkZCBlbWJvc3Mg ZGF0YXR5cGVzIChwcmV2aW91c2x5IG1pZ3JhdGVkIHRvIFRvb2wgU2hlZCkuIChUaGFua3MgdG8g YEBiZz0KcnVlbmluZworICA8aHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZz5gX18uKSBgUHVs bCBSZXF1ZXN0IDE0OGBfCisqIEFkZCBuZXcgSG1tZXIgJiBTdG9ja2hvbG0gZGF0YXR5cGVzLiAo VGhhbmtzIHRvIGBAZXJhc2NoZQorICA8aHR0cHM6Ly9naXRodWIuY29tL2VyYXNjaGU+YF9fLikg YFB1bGwgUmVxdWVzdCAyMThgXworKiBBZGQgYW4gUkRhdGEgZGF0YXR5cGUuIChUaGFua3MgdG8g YEBlcmFzY2hlCisgIDxodHRwczovL2dpdGh1Yi5jb20vZXJhc2NoZT5gX18uKSBgUHVsbCBSZXF1 ZXN0IDIzOWBfCisqIEFkZCBtYXV2ZSBYTUZBIGRhdGF0eXBlIChUaGFua3MgdG8gYEBlcmFzY2hl IDxodHRwczovL2dpdGh1Yi5jb20vZXJhc2NoZT0KPmBfXy4pCisgIGBQdWxsIFJlcXVlc3QgMjcw YF8KKyogQWRkIENvbm5lY3Rpdml0eVRhYmxlIChcKi5jdCkgKFJOQSAyRCBzdHJ1Y3R1cmUgZm9y bWF0KSBkYXRhdHlwZS4KKyAgKFRoYW5rcyB0byBgQHlob29nc3RyYXRlIDxodHRwczovL2dpdGh1 Yi5jb20veWhvb2dzdHJhdGU+YF9fLikKKyAgYFB1bGwgUmVxdWVzdCA0MzlgXworKiBBZGQgSWxs dW1pbmEgbWV0aHlsYXRpb24gZGF0YXR5cGUgKElEQVQpLiBgUHVsbCBSZXF1ZXN0IDMzNWBfCisq IEFkZCBEb3QtQnJhY2tldCBub3RhdGlvbiAoZGJuKSBkYXRhdHlwZS4gKFRoYW5rcyB0byBgQHlo b29nc3RyYXRlCisgIDxodHRwczovL2dpdGh1Yi5jb20veWhvb2dzdHJhdGU+YF9fLikgYFB1bGwg UmVxdWVzdCAzNjZgXworKiBBZGQgcHJvdGVvbWljcyBkYXRhdHlwZXMuIChUaGFua3MgdG8gYEBp cmFjb29rZQorICA8aHR0cHM6Ly9naXRodWIuY29tL2lyYWNvb2tlPmBfXy4pIGBQdWxsIFJlcXVl c3QgMzg5YF8KKyogQWRkIG5ldyBNelNRbGl0ZSBkYXRhdHlwZSBmb3IgYWdncmVnYXRpbmcgTVMt YmFzZWQgcHJvdGVpbiBpZGVudGlmaWNhdGlvbgorICBpbmZvcm1hdGlvbi4gKFRoYW5rcyB0byBg QGpqLXVtbiA8aHR0cHM6Ly9naXRodWIuY29tL2pqLXVtbj5gX18uKQorICBgUHVsbCBSZXF1ZXN0 IDQyN2BfCisqIEFsbG93IGBgZGlzcGxheV9pbl91cGxvYWRgYCBieSBkZWZhdWx0IGZvciBoNSBm aWxlcy4gYFB1bGwgUmVxdWVzdCA0NzBgXworKiBBY2NlcHQgaGlzdG9yeSBpZCBpbiB0b29sIHN0 YXRlIGNvbnN0cnVjdGlvbiBBUEkuIGBQdWxsIFJlcXVlc3QgMjY4YF8KKyogQWRkaW5nIGRhdGFz ZXQgdXVpZCBpbmZvcm1hdGlvbiB0byBqb2IgYW5kIHdvcmtmbG93IGludm9jYXRpb24gY2FsbHMu CisgIChUaGFua3MgdG8gYEBrZWxscm90dCA8aHR0cHM6Ly9naXRodWIuY29tL2tlbGxyb3R0PmBf Xy4pIGBQdWxsIFJlcXVlc3QgMT0KODFgXworKiBBbGxvdyB3b3JrZmxvd3MgZXhlY3V0ZWQgdmlh IHRoZSBBUEkgdG8gb3B0aW9uYWxseSBydW4gd2l0aCB0b29sIHVwZ3JhZGU9CnMuCisgIGBQdWxs IFJlcXVlc3QgNDAyYF8KKyogVmFyaW91cyBQRVAtOCBmaXhlcywgbW9yZSB0byBjb21lIG5leHQg cmVsZWFzZS4gKFRoYW5rcyB0byBlZmZvcnRzIGxlYWQgPQpieQorICBgQG5zb3JhbnpvIDxodHRw czovL2dpdGh1Yi5jb20vbnNvcmFuem8+YF9fLAorICBgQHJlbWltYXJlbmNvIDxodHRwczovL2dp dGh1Yi5jb20vcmVtaW1hcmVuY28+YF9fLCBhbmQKKyAgYEBiZ3J1ZW5pbmcgPGh0dHBzOi8vZ2l0 aHViLmNvbS9iZ3J1ZW5pbmc+YF9fLikKKyAgYFB1bGwgUmVxdWVzdCA0MjFgXywgYFB1bGwgUmVx dWVzdCA0MjJgXywgYFB1bGwgUmVxdWVzdCA0MjRgXywKKyAgYFB1bGwgUmVxdWVzdCA0MzNgXywg YFB1bGwgUmVxdWVzdCA0NDlgXywgYFB1bGwgUmVxdWVzdCAzNTBgXywKKyAgYFB1bGwgUmVxdWVz dCA0NTNgXywgYFB1bGwgUmVxdWVzdCAzOTRgXywgYFB1bGwgUmVxdWVzdCAyMDRgXworKiBOb3Nl IHVwZGF0ZSB3aXRoIGBgLS1kZWJ1Z2BgIG9wdGlvbiBhZGRlZCB0byBgYHJ1bl90ZXN0cy5zaGBg LiBgUHVsbCBSZXE9CnVlc3QgMTcyYF8KKyogTWVudGlvbiBgYC1pbnN0YWxsZWRgYCBvcHRpb24g aW4gYGBydW5fdGVzdHMuc2hgYCBoZWxwLiBgUHVsbCBSZXF1ZXN0IDMyPQozYF8KKyogQWxsb3cg Y29uZmlnIG9mIHNoZWQgdG9vbCBjb25maWd1cmF0aW9uIGZpbGUgdXNlZCB3aXRoIGBgcnVuX3Rl c3RzLnNoCisgIC1pbnN0YWxsZWRgYC4gYFB1bGwgUmVxdWVzdCAyNjdgXworKiBBbGxvdyBydW5u aW5nIHRlc3RzIGZyb20gb3V0ZXIgZGlyZWN0b3JpZXMgKFRoYW5rcyB0byBgQHlob29nc3RyYXRl CisgIDxodHRwczovL2dpdGh1Yi5jb20veWhvb2dzdHJhdGU+YF9fLikgYFB1bGwgUmVxdWVzdCAx MzdgXworKiBFbmhhbmNlbWVudCBhbGxvd2luZyB1c2Ugb2YgRFJNQUEgd2hlbiBHYWxheHkgaW5z dGFuY2UgaXNuJ3Qgb24gYSBzaGFyZWQKKyAgdm9sdW1lIHdpdGggY29tcHV0ZSBub2Rlcy4gKFRo YW5rcyB0byBgQHZhdnJ1c2EgPGh0dHBzOi8vZ2l0aHViLmNvbS92YXZyPQp1c2E+YF9fLik9MjAK KyAgYFB1bGwgUmVxdWVzdCAxNjBgXworKiBFbmhhbmNlbWVudHMgZm9yIENvbmRvci49MjAKKyAg KFRoYW5rcyB0byBgQGRwcnlhbjc5IDxodHRwczovL2dpdGh1Yi5jb20vZHByeWFuNzk+YF9fLikK KyAgYFB1bGwgUmVxdWVzdCAyODlgXworKiBVcGRhdGUgYGBnc3VtbWFyeWBgIGRlcGVuZGVuY2ll cy4gKFRoYW5rcyB0byBgQGJncnVlbmluZworICA8aHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmlu Zz5gX18uKSBgUHVsbCBSZXF1ZXN0IDE4MmBfCisqIFJlZmFjdG9yIHZpc3VhbGl6YXRpb24gcGx1 Z2lucyB0byBwcm9tb3RlIGltcGxlbWVudGF0aW9uIHRvIGEgY2xhc3MuCisgIGBQdWxsIFJlcXVl c3QgMTg2YF8KKyogU3dpdGNoIHZpc3VhbGl6YXRpb25zIHJlZ2lzdHJ5IHRvIGVudHJ5X3BvaW50 IGNvbmZpZyBkZWZpbml0aW9uIGZvcj0yMAorICBidWlsdC1pbiB2aXN1YWxpemF0aW9ucy4gYFB1 bGwgUmVxdWVzdCAyNDNgXworKiBTZXQgZGVmYXVsdCB2YWx1ZSBmb3IgSUUgc2lnIHByb3h5IChU aGFua3MgdG8gYEBlcmFzY2hlCisgIDxodHRwczovL2dpdGh1Yi5jb20vZXJhc2NoZT5gX18uKSBg UHVsbCBSZXF1ZXN0IDE5N2BfCisqIE90aGVyIHNtYWxsZXIgaW50ZXJhY3RpdmUgZW52aXJvbm1l bnQgdXBkYXRlcy4gKFRoYW5rcyB0bworICBgQGVyYXNjaGUgPGh0dHBzOi8vZ2l0aHViLmNvbS9l cmFzY2hlPmBfXy4pCisgIGBQdWxsIFJlcXVlc3QgNDEyYF8KKyogUmVmdXNlIHRvIGxvYWQgaW50 ZXJhY3RpdmUgZGVidWdnaW5nIG1pZGRsZXdhcmUgdW5kZXIgdXdzZ2kuCisgIGBQdWxsIFJlcXVl c3QgMjAwYF8KKyogTW92ZSBzdHlsZXNoZWV0IHNvdXJjZSBmaWxlcyBmcm9tIGBgc3RhdGljL3N0 eWxlL3NyY2BgIHRvCisgIGBgY2xpZW50L2dhbGF4eS9zdHlsZWBgLiBgUHVsbCBSZXF1ZXN0IDIw OGBfCisqIEZpeCBzcHJpdGUgcGF0aHMgYnkgdXNpbmcgaGFyZGNvZGVkIHBhdGggaW4gdGFzay4g YFB1bGwgUmVxdWVzdAorICAyNzlgXworKiBJbXByb3ZlIHZhcmlvdXMgZm9jdXMgaGFuZGxpbmcg YmVoYXZpb3IgaW4gdGhlIFVJLiBgUHVsbCBSZXF1ZXN0IDI4MGBfCisqIEZpeGVzIGFuZCB1cGRh dGVzIHRvIHZhcmlvdXMgSmF2YVNjcmlwdC1iYXNlZCB1bml0IHRlc3RzLiBgUHVsbCBSZXF1ZXN0 ID0KMjE5YF8KKyogVXBkYXRlIHZhcmlvdXMgY2xpZW50IGxpYnMgKGUuZy4galF1ZXJ5LCBSYXZl biwgZDMsIHJlcXVpcmVqcykuCisgIGBQdWxsIFJlcXVlc3QgMjIxYF8sIGBQdWxsIFJlcXVlc3Qg MjQxYF8KKyogSWdub3JlIHNhbXBsZSBmaWxlcyBmcm9tIHRvb2xzaGVkIGluc3RhbGxlZCB0b29s cy4gKFRoYW5rcyB0byBgQFVub2RlCisgIDxodHRwczovL2dpdGh1Yi5jb20vVW5vZGU+YF9fLikg YFB1bGwgUmVxdWVzdCAyNDhgXworKiBBZGQgdGVzdCBvcHRpb24gZm9yIGRpc2FibGluZyB0cnVu Y2F0aW9uIG9mIHRlc3QgZGlmZnMuCisgIGBQdWxsIFJlcXVlc3QgMjQ5YF8KKyogVmFyaW91cyBk b2N1bWVudGF0aW9uIGFuZCB3b3JkaW5nIGltcHJvdmVtZW50cyBmb3IgdmFyaW91cyBmaWxlcy4K KyAgKFRoYW5rcyB0byBgQG5zb3JhbnpvIDxodHRwczovL2dpdGh1Yi5jb20vbnNvcmFuem8+YF9f LikKKyAgYFB1bGwgUmVxdWVzdCAyNzdgXworKiBBbGxvdyBleHRlcm5hbCBkaXNwbGF5IGFwcGxp Y2F0aW9ucyBvcHRpb25hbCBhY2Nlc3MgdG8gZmlsZXMgd2l0aGluIGEKKyAgZGF0YXNldCdzIGBg ZXh0cmFfZmlsZXNfcGF0aGBgLiBgUHVsbCBSZXF1ZXN0IDI4NGBfCisqIEltcHJvdmUgdGhlIGRh dGEgbWFuYWdlciBKU09OIGRhdGF0eXBlJ3MgY2xhc3MgdG8gYmUgbW9yZSBzcGVjaWZpYy4KKyAg YFB1bGwgUmVxdWVzdCAyODVgXworKiBBbGxvdyBzZXR0aW5nIGNvbm5lY3Rpb24gb3B0aW9ucyBm b3IgTERBUCBhdXRoZW50aWNhdGlvbi4gKFRoYW5rcyB0byBgQFU9Cm5vZGUKKyAgPGh0dHBzOi8v Z2l0aHViLmNvbS9Vbm9kZT5gX18uKSBgUHVsbCBSZXF1ZXN0IDI4N2BfCisqIEZpeCBmb3IgZ3pp cCBiZWluZyBpbXBvcnRlZCB0d2ljZS4gKFRoYW5rcyB0byBgQGJncnVlbmluZworICA8aHR0cHM6 Ly9naXRodWIuY29tL2JncnVlbmluZz5gX18uKSBgUHVsbCBSZXF1ZXN0IDI5NmBfCisqIEV4cG9y dCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZnJvbSBhbGwgZGVwZW5kZW50IHJlcG9zaXRvcmllcy4K KyAgKFRoYW5rcyB0byBgQGJncnVlbmluZyA8aHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZz5g X18uKSBgUHVsbCBSZXF1ZXN0PQogMjk3YF8KKyogSW1wcm92ZSBgYGF1dGhfY29uZi54bWwuc2Ft cGxlYGAgZG9jdW1lbnRhdGlvbi4gKFRoYW5rcyB0byBgQG5zb3JhbnpvCisgIDxodHRwczovL2dp dGh1Yi5jb20vbnNvcmFuem8+YF9fLikgYFB1bGwgUmVxdWVzdCAyOTlgXworKiBQcmVzZXJ2ZSB1 bml4IHBlcm1pc3Npb25zLCBpZiBhbnksIHdoZW4gZXh0cmFjdGluZyAuemlwIGZpbGVzIGR1cmlu ZyB0b289Cmwgc2hlZAorICBpbnN0YWxsYXRpb25zLiBgUHVsbCBSZXF1ZXN0IDMwOGBfCisqIFVw ZGF0ZSBtYWlsaW5nIGxpc3RzIHRvIHVzZSBsaXN0cy5nYWxheHlwcm9qZWN0Lm9yZyBhZGRyZXNz ZXMuCisgIGBQdWxsIFJlcXVlc3QgMzE2YF8KKyogQWRkIG5ldyBhcmd1bWVudCB0byBpbmplY3Qg dm9sdW1lcyBpbiBgYGRvY2tlcl9jbWQoKWBgIGFuZCBgYGxhdW5jaCgpYGAuCisgIChUaGFua3Mg dG8gYEBiZ3J1ZW5pbmcgPGh0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmc+YF9fLikgYFB1bGwg UmVxdWVzdD0KIDMxOGBfCisqIENyZWF0ZSBhIHNlcGFyYXRlIGFwcGxpY2F0aW9uIGVudHJ5IHBv aW50IHRvIGJlIHVzZWQgYnkgdVdTR0kgd2l0aG91dCBgYD0KLS1pbmktCisgIHBhc3RlYGAgYW5k IFBhc3RlRGVwbG95LiBgUHVsbCBSZXF1ZXN0IDMyNWBfCisqIEltcGxlbWVudCBncm91cHMgaW4g VG9vbCBTaGVkIG1vZGVscyBhbmQgVUkuIGBQdWxsIFJlcXVlc3QgMzI2YF8sCisgIGBQdWxsIFJl cXVlc3QgMzc0YF8KKyogSW1wcm92ZWQgZGF0YXR5cGUgcmVnaXN0cnkgZGVidWdnaW5nLiBgUHVs bCBSZXF1ZXN0IDMyOWBfCisqIEFkZCBhcHAgb3B0aW9uIHRvIGNsaWVudCBwcm9jZXNzIHRvIGFs bG93IGJ1aWxkaW5nIFRvb2wgU2hlZCBzY3JpcHRzLj0yMAorICBgUHVsbCBSZXF1ZXN0IDMzMmBf CisqIEFkZCBncnVudCBjb21tYW5kIGBgZ3J1bnQgZGVjb21wcmVzc2BgIHRvIGNvcHkgZGVjb21w cmVzc2VkIGFydGlmYWN0cy4KKyAgYFB1bGwgUmVxdWVzdCAxNzNgXworKiBJbXByb3ZlbWVudHMg dG8gVG9vbCBTaGVkIHNlYXJjaCBBUEkuCisgIGBQdWxsIFJlcXVlc3QgMzM0YF8sIGBQdWxsIFJl cXVlc3QgMzc2YF8sIGBQdWxsIFJlcXVlc3QgNDIwYF8sIGBQdWxsIFJlcT0KdWVzdCA1NjNgXwor KiBSZXN0b3JlIGxpbmsgdG8gbWVyY3VyaWFsIGJyb3dzaW5nIG9mIHJlcG9zaXRvcmllcy4gYFB1 bGwgUmVxdWVzdCAzNDBgXworKiBFbmhhbmNlIHRvb2wgdGVzdGluZyB0byBvbmx5IGNsZWFudXAg c3VjY2Vzc2Z1bCBqb2JzLiBgUHVsbCBSZXF1ZXN0IDM0MWBfCisqIEltcGxlbWVudCBtZXRhZGF0 YSBzaXplIGxpbWl0aW5nLiBgUHVsbCBSZXF1ZXN0IDM0NWBfLCBgUHVsbCBSZXF1ZXN0IDQxNj0K YF8KKyogQWRkIHRvb2wgcGFyYW1ldGVyIGFyZ3VtZW50IHRvIHBhcmFtZXRlciBoZWxwLgorICBg UHVsbCBSZXF1ZXN0IDM0NmBfLCBgUHVsbCBSZXF1ZXN0IDM1MWBfCisqIFJlZmFjdG9yIFRvb2wg U2hlZCBKYXZhU2NyaXB0IGZpbGVzIHRvIGJlIHNlcGFyYXRlZCBmcm9tIEdhbGF4eSBKYXZhIFNj cj0KaXB0CisgIGBQdWxsIFJlcXVlc3QgMzQ3YF8KKyogRml4ZWQgb2JqZWN0IHN0b3JlIHBhdGgg LSBgYGpvYl93b3JrYGAuIChUaGFua3MgdG8gYEBjaGFyegorICA8aHR0cHM6Ly9naXRodWIuY29t L2NoYXJ6PmBfXy4pIGBQdWxsIFJlcXVlc3QgMzU0YF8KKyogTWFrZSBkZWJ1Z2dpbmcgb3V0cHV0 IG5pY2VyIGZvciBJRSdzIChUaGFua3MgdG8gYEBiZ3J1ZW5pbmcKKyAgPGh0dHBzOi8vZ2l0aHVi LmNvbS9iZ3J1ZW5pbmc+YF9fLikgYFB1bGwgUmVxdWVzdCAzNTVgXworKiBBZGQgY29uZmlndXJh YmxlIERvY2tlciBob3N0bmFtZSAoVGhhbmtzIHRvIGBAYmdydWVuaW5nCisgIDxodHRwczovL2dp dGh1Yi5jb20vYmdydWVuaW5nPmBfXy4pIGBQdWxsIFJlcXVlc3QgMzU2YF8KKyogSW1wcm92ZSBY TUwgc3R5bGluZyBvZiBkaXNwbGF5IGFwcGxpY2F0aW9ucy49MjAKKyAgKFRoYW5rcyB0byBgQGVy YXNjaGUgPGh0dHBzOi8vZ2l0aHViLmNvbS9lcmFzY2hlPmBfXy4pCisgIGBQdWxsIFJlcXVlc3Qg MzY0YF8KKyogUkVBRE1FIGltcHJvdmVtZW50cyBpbmNsdWRpbmcgLSBhZGRpbmcgc2hpZWxkcyBm b3IgQmlvc3RhciwgSVJDLCBhbmQgVHJhPQp2aXMuCisgIGBQdWxsIFJlcXVlc3QgMzY4YF8sIGBQ dWxsIFJlcXVlc3QgMzY5YF8KKyogVXNlIHBhc3NlZCBpbiBVUkwgZm9yIGdldGJ1aWxkcyBtZXRo b2Qgb2YgcGFyc2VfYnVpbGRzLnB5IChUaGFua3MgdG8KKyAgYEBkY3RydWQgPGh0dHBzOi8vZ2l0 aHViLmNvbS9kY3RydWQ+YF9fLikgYFB1bGwgUmVxdWVzdCAzODRgXworKiBBZGQgZXJyb3IgbWVz c2FnZSBmb3IgYmFkIGRlcGVuZGVuY3kgZGVjbGFyYXRpb24gKFRoYW5rcyB0byBgQGtha3R1czQy CisgIDxodHRwczovL2dpdGh1Yi5jb20va2FrdHVzNDI+YF9fLikgYFB1bGwgUmVxdWVzdCA0MTlg XworKiBSZWZhY3RvciBKYXZhU2NyaXB0IHNldCB1cCBjb2RlIGZvciB0YWdnaW5nIHRvd2FyZCBy ZXVzZS4gYFB1bGwgUmVxdWVzdCA9CjQyOWBfCisqIEltcHJvdmVkIG1kNXN1bS9zaGEyNTYgaW4g VG9vbCBTaGVkIGFjdGlvbnMuIChUaGFua3MgdG8gYEB5aG9vZ3N0cmF0ZQorICA8aHR0cHM6Ly9n aXRodWIuY29tL3lob29nc3RyYXRlPmBfXy4pIGBQdWxsIFJlcXVlc3QgNDQ0YF8KKyogSW5jbHVk ZSBvd25lciBhbm5vdGF0aW9ucyBvZiBIREFzIGluIHB1Ymxpc2hlZCBoaXN0b3J5IGRpc3BsYXku CisgIGBQdWxsIFJlcXVlc3QgNDkwYF8KKyogQWRkZWQgbG9nIGVycm9yIGZvciBjb25maWcgZmls ZSBub3QgZm91bmQuIChUaGFua3MgdG8gYEBDaHJpc3RpYW4tQgorICA8aHR0cHM6Ly9naXRodWIu Y29tL0NocmlzdGlhbi1CPmBfXy4pIGBQdWxsIFJlcXVlc3QgNDQzYF8KKyogRml4IGZvciBpbnN0 YWxsaW5nIGRlcGVuZGVuY2llcyBmcm9tIHNvdXJjZSB3aGVuIGRvd25sb2FkIG9mIHByZWNvbXBp bGVkCisgIGJpbmFyaWVzIGhhcyBmYWlsZWQuIGBQdWxsIFJlcXVlc3QgNTMxYF8KKyogVXNlIGEg cGFzc3dvcmQgZmllbGQgZm9yIGRlcHJlY2F0ZWQgY2xvdWRsYXVuY2gncyBzZWNyZXQga2V5IGZp ZWxkLgorICBgUHVsbCBSZXF1ZXN0IDU1MWBfCisqIE5vcm1hbGl6ZSBgYGRhdGF0eXBlc19ieV9l eHRgYCB1cG9uIGVudHJ5LiBgUHVsbCBSZXF1ZXN0IDU2N2BfCisqIFN0b3AgY3JlYXRpbmcgdW5u ZWVkZWQgYGBkYXRhYmFzZS9tZXNzYWdlLm1ha28ucHlgYC4gYFB1bGwgUmVxdWVzdCA1NzVgXwor CisKK0ZpeGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZpeGVzCisK KyogRHVyaW5nIHRoZSAxNS4wNyBkZXZlbG9wbWVudCBjeWNsZSBkb3plbnMgb2YgZml4ZXMgd2Vy ZSBwdXNoZWQgdG8gdGhlCisgIGBgcmVsZWFzZV8xNS4wNWBgIGJyYW5jaCBvZiBHYWxheHkuIFRo ZXNlIGFyZSBhbGwgaW5jbHVkZWQgaW4gMTUuMDcgYW5kCisgIHN1bW1hcml6ZWQgYGhlcmUKKyAg PGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9jb21wYXJlL3YxNS4wNS4u LnJlbGVhc2VfMTUuMDU+PQpgX18KKyAgKHdpdGggc3BlY2lhbCB0aGFua3MgdG8gYEBiZ3J1ZW5p bmcgPGh0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmc+YF9fLAorICBgQG12ZGJlZWsgPGh0dHBz Oi8vZ2l0aHViLmNvbS9tdmRiZWVrPmBfXywKKyAgYEBuc29yYW56byA8aHR0cHM6Ly9naXRodWIu Y29tL25zb3JhbnpvPmBfXywKKyAgYW5kIGBAYWJyZXRhdWQgPGh0dHBzOi8vZ2l0aHViLmNvbS9h YnJldGF1ZD5gX18pLgorKiBTdG9wIFRyYWNrc3RlciBsb2NhdGlvbiB3cmFwcGluZyBpbiBDaHJv bWUuIChUaGFua3MgdG8gYEBkY3RydWQKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9kY3RydWQ+YF9f LikgYFB1bGwgUmVxdWVzdCA0NDBgXworKiBGaXggcmV0dXJuIGludGVnZXIgdmFsdWVzIHdoZW4g J3JvdW5kIHRvIG5lYXJlc3QgaW50ZWdlcicgaXMgc2VsZWN0ZWQgaW4KKyAgR3JvdXAgdG9vbC4g YFB1bGwgUmVxdWVzdCA0NTJgXworKiBGaXggZXh0ZXJuYWwgc2V0X21ldGEgdW5kZXIgc3FsYWxj aGVteSAxLjAuMC4gYFB1bGwgUmVxdWVzdCAxNTBgXworKiBGaXggYGBiYXNlLnV0aWxgYCB0byBn ZXQgdGhlIGNoYW5nZXNldCBmcm9tIGdpdC4gYFB1bGwgUmVxdWVzdCAxNjFgXworKiBSZW1vdmUg YGBiaW9tYXJ0X3Rlc3RgYCB0b29sLCBodHRwOi8vdGVzdC5iaW9tYXJ0Lm9yZy8gaXMgZG93bi4g KFRoYW5rcyA9CnRvCisgIGBAbnNvcmFuem8gPGh0dHBzOi8vZ2l0aHViLmNvbS9uc29yYW56bz5g X18uKSBgUHVsbCBSZXF1ZXN0IDE4M2BfCisqIEZpeCBicm9rZW4gYnJvd3NlciB0ZXN0cy4gYFB1 bGwgUmVxdWVzdCAyMDJgXworKiBGaXggYXNzZXJ0aW9ucyBpbiBgYHRlc3RfVmlzdWFsaXphdGlv bnNSZWdpc3RyeS5weWBgLiBgUHVsbCBSZXF1ZXN0IDIyM2BfCisqIEZpeCBgYHJ1bl90ZXN0cy5z aGBgIGV4aXQgY29kZS4gYFB1bGwgUmVxdWVzdCAyMjVgXworKiBVc2UgYGB1bml0dGVzdDJgYCB0 byBhbGxvdyBQeXRob24gMi43IGFzc2VydGlvbnMgdW5kZXIgUHl0aG9uIDIuNi4KKyAgYFB1bGwg UmVxdWVzdCAyNDZgXworKiBIYXZlIGBgdHJhbnMudXNlcl9mdHBfZGlyYGAgcmV0dXJuIGBgTm9u ZWBgIGluc3RlYWQgb2YgZXJyb3IgaWYgdXBsb2FkIGQ9CmlyIHVuc2V0LgorICBgUHVsbCBSZXF1 ZXN0IDI1N2BfCisqIEFsbG93IElHViBleHRlcm5hbCBkaXNwbGF5cyB0byB1c2UgYSBuYW1lIHdp dGggYSBjb21tYSBpbiBpdC4gYFB1bGwgUmVxdT0KZXN0IDI2MWBfCisqIEZpeCBidWcgaW4gaGlz dG9yeSBzaGFyaW5nLiAoVGhhbmtzIHRvIGBAYmdydWVuaW5nCisgIDxodHRwczovL2dpdGh1Yi5j b20vYmdydWVuaW5nPmBfXy4pIGBQdWxsIFJlcXVlc3QgMjYzYF8KKyogQ29udmVydCB0b29scyBk aXJlY3RvcnkgdG8gb25seSB1c2UgdW5peCBuZXdsaW5lIGNoYXJhY3RlcnMuCisgIChUaGFua3Mg dG8gYEBuc29yYW56byA8aHR0cHM6Ly9naXRodWIuY29tL25zb3JhbnpvPmBfXy4pIGBQdWxsIFJl cXVlc3QgMj0KNjRgXworKiBSZW1vdmUgc3B1cmlvdXMgbnVtcHkgcmVxdWlyZW1lbnQgb24gYGBt YWZfc3RhdHMueG1sYGAgdG9vbC4KKyAgKFRoYW5rcyB0byBgQG5zb3JhbnpvIDxodHRwczovL2dp dGh1Yi5jb20vbnNvcmFuem8+YF9fLikgYFB1bGwgUmVxdWVzdCAyPQo2NGBfCisqIFVzZSBtb3Jl IGFjdGlvbmFibGUgYGBwYWNrYWdlYGAgcmVxdWlyZW1lbnQgdHlwZSBvbiBzb21lIHRvb2xzLgor ICAoVGhhbmtzIHRvIGBAbnNvcmFuem8gPGh0dHBzOi8vZ2l0aHViLmNvbS9uc29yYW56bz5gX18u KSBgUHVsbCBSZXF1ZXN0IDI9CjY0YF8KKyogU21hbGwgZG9jIGZpeCBmb3IgYGBjb25maWcvcGx1 Z2lucy92aXN1YWxpemF0aW9ucy9SRUFETUUudHh0YGAuCisgIChUaGFua3MgdG8gYEBuc29yYW56 byA8aHR0cHM6Ly9naXRodWIuY29tL25zb3JhbnpvPmBfXy4pIGBQdWxsIFJlcXVlc3QgMj0KNjRg XworKiBGaXggZnVuY3Rpb24gbmFtZXMgZm9yIGR5bmFtaWMgdG9vbCB0ZXN0IGZ1bmN0aW9ucy4g YFB1bGwgUmVxdWVzdCAyNjZgXworKiBGaXhlcyB0byBkYXRhc2V0IGNob29zZXIuIGBQdWxsIFJl cXVlc3QgMjcyYF8KKyogRml4IFRyYWNrc3RlciBsb2FkIG9yZGVyIG9mIHJlcXVpcmUgYW5kIGQz LiBgUHVsbCBSZXF1ZXN0IDI5MWBfCisqIFJlbW92ZSBiYWQgSFRNTCB0YWdzIGZyb20gbG9naW4g dGVtcGxhdGUuIChUaGFua3MgdG8gYEBVbm9kZQorICA8aHR0cHM6Ly9naXRodWIuY29tL1Vub2Rl PmBfXy4pIGBQdWxsIFJlcXVlc3QgMjk0YF8KKyogRXhjbHVkZSBjdXJseSBicmFjZXMgZnJvbSBB UEkta2V5IHRvIGZpeCB0b29sc2hlZCBib290c3RyYXBwaW5nLiAoVGhhbmtzPQogdG8KKyAgYEBt dmRiZWVrIDxodHRwczovL2dpdGh1Yi5jb20vbXZkYmVlaz5gX18uKSBgUHVsbCBSZXF1ZXN0IDMw MWBfCisqIEZpeCByZXBlYXRlZCBlcnJvciBtZXNzYWdlcyB3aXRoIGlkZW50aWNhbCB0ZXh0LiBg UHVsbCBSZXF1ZXN0IDMwNmBfCisqIEZpeCBzaGFyZWQgbWFrbyB0ZW1wbGF0ZXMgdGhhdCB3b3Vs ZCBub3Qgd29yayBwcm9wZXJseSB3aXRoIHRoZSBUb29sIFNoZT0KZC4KKyAgYFB1bGwgUmVxdWVz dCAzMDdgXworKiBGaXgganNvbiBzbmlmZmVyIGZvciBsYXJnZSBmaWxlcy4gYFB1bGwgUmVxdWVz dCAzMDlgXworKiBGaXggYSB0eXBvIGVycm9yIGluIGBgdmlzdWFsaXphdGlvbi9wbHVnaW5zL3Jl c291cmNlX3BhcnNlci5weWBgLiAoVGhhbms9CnMgdG8KKyAgYEByZW1pbWFyZW5jbyA8aHR0cHM6 Ly9naXRodWIuY29tL3JlbWltYXJlbmNvPmBfXy4pIGBQdWxsIFJlcXVlc3QgMzEyYF8KKyogRml4 IGZvciBnZW5lcmF0aW5nIG1ldGFkYXRhIG9uIHRvb2xzaGVkIHRvb2xzIHRlc3RzLCB1bmRlciBj ZXJ0YWluCisgIGNvbmRpdGlvbnMuIGBQdWxsIFJlcXVlc3QgMzE5YF8KKyogRml4IFRvb2wgU2hl ZCBtZXRhZGF0YSBnZW5lcmF0aW9uIGJ1Zy4gKFRoYW5rcyB0byBgQGJncnVlbmluZworICA8aHR0 cHM6Ly9naXRodWIuY29tL2JncnVlbmluZz5gX18uKSBgUHVsbCBSZXF1ZXN0IDMzM2BfCisqIEZp eGluZyBzdHJpbmcgYXBwZW5kaW5nIGVycm9yIGluIGxpYnJhcnkgZGljdGlmaWNhdGlvbi4gKFRo YW5rcyB0byBgQGtlbD0KbHJvdHQKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9rZWxscm90dD5gX18u KSBgUHVsbCBSZXF1ZXN0IDMzNmBfCisqIEhpZGUgY29uc3RhbnRseSBicm9rZW4gVG9vbCBTaGVk IHRlc3QgcmVzdWx0cy4gYFB1bGwgUmVxdWVzdCAzMzdgXworKiBGaXggZm9yIGZpeCBmb3IgaGFu ZGxpbmcgb2YgdW5peCBwZXJtaXNzaW9ucyBpbiAuemlwIGZpbGVzLiBgUHVsbCBSZXF1ZXN0Cisg IDM0NGBfCisqIEZpeCBjb21tb24gQVBJIHNjcmlwdHMgc28gdGhleSBkb24ndCBmYWlsIHdoZW4g cmVzcG9uc2UgaGFzIG5vIFVSTCBwYXJhbS4KKyAgYFB1bGwgUmVxdWVzdCAzNTJgXworKiBGaXgg Zm9yIGR5bmFtaWMgdGVzdCBkYXRhIGZldGNoaW5nLiBgUHVsbCBSZXF1ZXN0IDM3MWBfCisqIEZp eCBidWcgaW4gYGBUZXh0LnNwbGl0KClgYCBtZXRob2QuIChUaGFua3MgdG8gYEBuc29yYW56bwor ICA8aHR0cHM6Ly9naXRodWIuY29tL25zb3JhbnpvPmBfXy4pIGBQdWxsIFJlcXVlc3QgMzczYF8K KyogRml4IGFuZCB1cGRhdGUgc2VyaWFsaXplciBjYWxsIHRvIG5vbi1gYHRyYW5zYGAgZm9ybSBm b3IgaGlzdG9yaWVzLgorICBgUHVsbCBSZXF1ZXN0IDM5MGBfCisqIEZpeCBnZXR0aW5nIGFkbWlu IGtleSB3aGVuIGJvb3RzdHJhcHBpbmcgdG9vbHNoZWQuIChUaGFua3MgdG8KKyAgYEBnYWxheHlw cm9qZWN0IDxodHRwczovL2dpdGh1Yi5jb20vZ2FsYXh5cHJvamVjdD5gX18uKSBgUHVsbCBSZXF1 ZXN0IDM5PQoyYF8KKyogRml4IGVycm9yIHdoZW4gZGlzcGxheWluZyBqb2IgcGFyYW1zIGZvciB0 b29scyBjb250YWluaW5nIGEgc2VjdGlvbi4KKyAgKFRoYW5rcyB0byBgQGFicmV0YXVkIDxodHRw czovL2dpdGh1Yi5jb20vYWJyZXRhdWQ+YF9fLikgYFB1bGwgUmVxdWVzdCAzPQo5OGBfCisqIEZp eCBmb3Igc2V0dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSBwYXRocyBmb3IgaW5zdGFsbGVkIHRv b2xzLiAoVGhhbmtzID0KdG8KKyAgYEBncmVndm9ua3VzdGVyIDxodHRwczovL2dpdGh1Yi5jb20v Z3JlZ3Zvbmt1c3Rlcj5gX18uKSBgUHVsbCBSZXF1ZXN0IDQwPQozYF8KKyogUXVvdGEgY2FsY3Vs YXRpb24gZml4ZXMgZm9yIG1hbmFnZXJzLiBgUHVsbCBSZXF1ZXN0IDQwNmBfCisqIEZpeCBwYWdp bmcgaXNzdWUgd2l0aCB3aG9vc2ggZHVlIHRvIG1pc3NpbmcgYGBzdHJgYCB0byBgYGludGBgIGNv bnZlcnNpbz0Kbi4KKyAgYFB1bGwgUmVxdWVzdCA0MDdgXworKiBVc2UgYGB3ZWIudXJsX2Zvcigg Jy8nLCBxdWFsaWZpZWQ9M0RUcnVlIClgYCBpbnN0ZWFkIG9mIGBgJy8nYGAgdG8gZ2VuZXI9CmF0 ZQorICBVUkxzIChmb3IgY29ycmVjdG5lc3MpLiAoVGhhbmtzIHRvIGBAbXZkYmVlayA8aHR0cHM6 Ly9naXRodWIuY29tL212ZGJlZWs9Cj5gX18uKQorICBgUHVsbCBSZXF1ZXN0IDQxNGBfCisqIEZp eCBmb3IgYXN5bmMgZGF0YXNvdXJjZXMuIGBQdWxsIFJlcXVlc3QgNDIzYF8KKyogRml4IFVJIGJ1 ZyByZWxhdGVkIHRvIElEIGNvbGxpc2lvbnMgZm9yIGRpc3BsYXkgb2YgY2VydGFpbiBjb2xsZWN0 aW9ucy4KKyAgYFB1bGwgUmVxdWVzdCA0MzFgXworKiBGaXggYGBydW5fdGVzdHMuc2hgYCBleGFt cGxlIEFQSSB0ZXN0IGNvbW1hbmQuIGBQdWxsIFJlcXVlc3QgNDMyYF8KKyogRml4ZWQgdHlwbyBp biBUb29sIFNoZWQgZG9jc3RyaW5nLiAoVGhhbmtzIHRvIGBAcGV0ZXJqYworICA8aHR0cHM6Ly9n aXRodWIuY29tL3BldGVyamM+YF9fLikgYFB1bGwgUmVxdWVzdCA0MzhgXworKiBWYXJpb3VzIFRy YWNrc3RlciBmaXhlcy4gYFB1bGwgUmVxdWVzdCA0NDZgXworKiBGaXggam9iIHF1ZXJ5IHRvIGFs bG93IGFkbWlucyB0byB2aWV3IG90aGVyIGhpc3Rvcmllcy4gYFB1bGwgUmVxdWVzdCA0NjU9CmBf CisqIEZpeCBgYGRia2V5YGAgZmlsdGVyaW5nIG9mIG11bHRpcGxlIGlucHV0IHRhcmdldHMuIGBQ dWxsIFJlcXVlc3QgNTM0YF8KKyogRml4ZXMgZm9yIGBgRGVsZXRlSW50ZXJtZWRpYXRlc0FjdGlv bmBgLiBgUHVsbCBSZXF1ZXN0IDU0N2BfCisqIEZpeCBvdmVycmlkaW5nIHRoZSBuYW1lIHZhcmlh YmxlIGluIFRvb2wgU2hlZCBpbmRleCBjb2RlLiBgUHVsbCBSZXF1ZXN0ID0KNTY2YF8KKyogRml4 IGJhdGNoIG1vZGUgaW5wdXQgaW4gbmV3IHRvb2wgZm9ybSBVSS4gKFRoYW5rcyB0byBgQGVyaWNl bm5zCisgIDxodHRwczovL2dpdGh1Yi5jb20vZXJpY2VubnM+YF9fLikgYFB1bGwgUmVxdWVzdCA1 NjhgXworKiBDU1YvU0FNIHNuaWZmIG9yZGVyIGZpeC4gYFB1bGwgUmVxdWVzdCA1NzFgXworKiBT aG93IGZpZWxkIGZvciBlbnRlcmluZyByZW1vdGUvaG9tZSB1cmwgd2hlbiBtYW5hZ2luZyBhIFRv b2wgU2hlZCByZXBvc2k9CnRvcnkuCisgIGBQdWxsIFJlcXVlc3QgNTgwYF8KKyogRml4IHJlZ2Vu ZXJhdGluZyByZXBvc2l0b3J5IG1ldGFkYXRhIHdoZW4gY29taW5nIGZyb20gYmF0Y2ggaW50ZXJm YWNlLgorICBgUHVsbCBSZXF1ZXN0IDYwMGBfCisKKworLi4gZ2l0aHViX2xpbmtzCisuLiBfUHVs bCBSZXF1ZXN0IDgwOiBodHRwczovL2dpdGh1Yi5jb20vZ2FsYXh5cHJvamVjdC9nYWxheHkvcHVs bC84MAorLi4gX1B1bGwgUmVxdWVzdCAxMzI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q ZWN0L2dhbGF4eS9wdWxsLzEzMgorLi4gX1B1bGwgUmVxdWVzdCAxMzc6IGh0dHBzOi8vZ2l0aHVi LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzEzNworLi4gX1B1bGwgUmVxdWVzdCAxNDg6 IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE0OAorLi4gX1B1 bGwgUmVxdWVzdCAxNDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w dWxsLzE0OQorLi4gX1B1bGwgUmVxdWVzdCAxNTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw cm9qZWN0L2dhbGF4eS9wdWxsLzE1MAorLi4gX1B1bGwgUmVxdWVzdCAxNTE6IGh0dHBzOi8vZ2l0 aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE1MQorLi4gX1B1bGwgUmVxdWVzdCAx NTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE1OQorLi4g X1B1bGwgUmVxdWVzdCAxNjA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4 eS9wdWxsLzE2MAorLi4gX1B1bGwgUmVxdWVzdCAxNjE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE2MQorLi4gX1B1bGwgUmVxdWVzdCAxNjM6IGh0dHBzOi8v Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE2MworLi4gX1B1bGwgUmVxdWVz dCAxNzI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE3Mgor Li4gX1B1bGwgUmVxdWVzdCAxNzM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh bGF4eS9wdWxsLzE3MworLi4gX1B1bGwgUmVxdWVzdCAxODE6IGh0dHBzOi8vZ2l0aHViLmNvbS9n YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE4MQorLi4gX1B1bGwgUmVxdWVzdCAxODI6IGh0dHBz Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE4MgorLi4gX1B1bGwgUmVx dWVzdCAxODM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE4 MworLi4gX1B1bGwgUmVxdWVzdCAxODY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0 L2dhbGF4eS9wdWxsLzE4NgorLi4gX1B1bGwgUmVxdWVzdCAxOTA6IGh0dHBzOi8vZ2l0aHViLmNv bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE5MAorLi4gX1B1bGwgUmVxdWVzdCAxOTE6IGh0 dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE5MQorLi4gX1B1bGwg UmVxdWVzdCAxOTc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs LzE5NworLi4gX1B1bGwgUmVxdWVzdCAyMDA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q ZWN0L2dhbGF4eS9wdWxsLzIwMAorLi4gX1B1bGwgUmVxdWVzdCAyMDI6IGh0dHBzOi8vZ2l0aHVi LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIwMgorLi4gX1B1bGwgUmVxdWVzdCAyMDQ6 IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIwNAorLi4gX1B1 bGwgUmVxdWVzdCAyMDg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w dWxsLzIwOAorLi4gX1B1bGwgUmVxdWVzdCAyMTg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw cm9qZWN0L2dhbGF4eS9wdWxsLzIxOAorLi4gX1B1bGwgUmVxdWVzdCAyMTk6IGh0dHBzOi8vZ2l0 aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIxOQorLi4gX1B1bGwgUmVxdWVzdCAy MjE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIyMQorLi4g X1B1bGwgUmVxdWVzdCAyMjM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4 eS9wdWxsLzIyMworLi4gX1B1bGwgUmVxdWVzdCAyMjU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIyNQorLi4gX1B1bGwgUmVxdWVzdCAyMjk6IGh0dHBzOi8v Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIyOQorLi4gX1B1bGwgUmVxdWVz dCAyMzA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIzMAor Li4gX1B1bGwgUmVxdWVzdCAyMzM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh bGF4eS9wdWxsLzIzMworLi4gX1B1bGwgUmVxdWVzdCAyMzk6IGh0dHBzOi8vZ2l0aHViLmNvbS9n YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIzOQorLi4gX1B1bGwgUmVxdWVzdCAyNDA6IGh0dHBz Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI0MAorLi4gX1B1bGwgUmVx dWVzdCAyNDE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI0 MQorLi4gX1B1bGwgUmVxdWVzdCAyNDM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0 L2dhbGF4eS9wdWxsLzI0MworLi4gX1B1bGwgUmVxdWVzdCAyNDY6IGh0dHBzOi8vZ2l0aHViLmNv bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI0NgorLi4gX1B1bGwgUmVxdWVzdCAyNDg6IGh0 dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI0OAorLi4gX1B1bGwg UmVxdWVzdCAyNDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs LzI0OQorLi4gX1B1bGwgUmVxdWVzdCAyNTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q ZWN0L2dhbGF4eS9wdWxsLzI1MAorLi4gX1B1bGwgUmVxdWVzdCAyNTc6IGh0dHBzOi8vZ2l0aHVi LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI1NworLi4gX1B1bGwgUmVxdWVzdCAyNTk6 IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI1OQorLi4gX1B1 bGwgUmVxdWVzdCAyNjE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w dWxsLzI2MQorLi4gX1B1bGwgUmVxdWVzdCAyNjM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw cm9qZWN0L2dhbGF4eS9wdWxsLzI2MworLi4gX1B1bGwgUmVxdWVzdCAyNjQ6IGh0dHBzOi8vZ2l0 aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI2NAorLi4gX1B1bGwgUmVxdWVzdCAy NjY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI2NgorLi4g X1B1bGwgUmVxdWVzdCAyNjc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4 eS9wdWxsLzI2NworLi4gX1B1bGwgUmVxdWVzdCAyNjg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI2OAorLi4gX1B1bGwgUmVxdWVzdCAyNjk6IGh0dHBzOi8v Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI2OQorLi4gX1B1bGwgUmVxdWVz dCAyNzA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI3MAor Li4gX1B1bGwgUmVxdWVzdCAyNzI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh bGF4eS9wdWxsLzI3MgorLi4gX1B1bGwgUmVxdWVzdCAyNzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9n YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI3NAorLi4gX1B1bGwgUmVxdWVzdCAyNzc6IGh0dHBz Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI3NworLi4gX1B1bGwgUmVx dWVzdCAyNzk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI3 OQorLi4gX1B1bGwgUmVxdWVzdCAyODA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0 L2dhbGF4eS9wdWxsLzI4MAorLi4gX1B1bGwgUmVxdWVzdCAyODQ6IGh0dHBzOi8vZ2l0aHViLmNv bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI4NAorLi4gX1B1bGwgUmVxdWVzdCAyODU6IGh0 dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI4NQorLi4gX1B1bGwg UmVxdWVzdCAyODY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs LzI4NgorLi4gX1B1bGwgUmVxdWVzdCAyODc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q ZWN0L2dhbGF4eS9wdWxsLzI4NworLi4gX1B1bGwgUmVxdWVzdCAyODk6IGh0dHBzOi8vZ2l0aHVi LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI4OQorLi4gX1B1bGwgUmVxdWVzdCAyOTA6 IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI5MAorLi4gX1B1 bGwgUmVxdWVzdCAyOTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w dWxsLzI5MQorLi4gX1B1bGwgUmVxdWVzdCAyOTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw cm9qZWN0L2dhbGF4eS9wdWxsLzI5NAorLi4gX1B1bGwgUmVxdWVzdCAyOTU6IGh0dHBzOi8vZ2l0 aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI5NQorLi4gX1B1bGwgUmVxdWVzdCAy OTY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI5NgorLi4g X1B1bGwgUmVxdWVzdCAyOTc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4 eS9wdWxsLzI5NworLi4gX1B1bGwgUmVxdWVzdCAyOTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI5OQorLi4gX1B1bGwgUmVxdWVzdCAzMDE6IGh0dHBzOi8v Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMwMQorLi4gX1B1bGwgUmVxdWVz dCAzMDI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMwMgor Li4gX1B1bGwgUmVxdWVzdCAzMDM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh bGF4eS9wdWxsLzMwMworLi4gX1B1bGwgUmVxdWVzdCAzMDY6IGh0dHBzOi8vZ2l0aHViLmNvbS9n YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMwNgorLi4gX1B1bGwgUmVxdWVzdCAzMDc6IGh0dHBz Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMwNworLi4gX1B1bGwgUmVx dWVzdCAzMDg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMw OAorLi4gX1B1bGwgUmVxdWVzdCAzMDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0 L2dhbGF4eS9wdWxsLzMwOQorLi4gX1B1bGwgUmVxdWVzdCAzMTE6IGh0dHBzOi8vZ2l0aHViLmNv bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMxMQorLi4gX1B1bGwgUmVxdWVzdCAzMTI6IGh0 dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMxMgorLi4gX1B1bGwg UmVxdWVzdCAzMTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs LzMxNAorLi4gX1B1bGwgUmVxdWVzdCAzMTY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q ZWN0L2dhbGF4eS9wdWxsLzMxNgorLi4gX1B1bGwgUmVxdWVzdCAzMTg6IGh0dHBzOi8vZ2l0aHVi LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMxOAorLi4gX1B1bGwgUmVxdWVzdCAzMTk6 IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMxOQorLi4gX1B1 bGwgUmVxdWVzdCAzMjI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w dWxsLzMyMgorLi4gX1B1bGwgUmVxdWVzdCAzMjM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw cm9qZWN0L2dhbGF4eS9wdWxsLzMyMworLi4gX1B1bGwgUmVxdWVzdCAzMjU6IGh0dHBzOi8vZ2l0 aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMyNQorLi4gX1B1bGwgUmVxdWVzdCAz MjY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMyNgorLi4g X1B1bGwgUmVxdWVzdCAzMjg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4 eS9wdWxsLzMyOAorLi4gX1B1bGwgUmVxdWVzdCAzMjk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMyOQorLi4gX1B1bGwgUmVxdWVzdCAzMzA6IGh0dHBzOi8v Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMzMAorLi4gX1B1bGwgUmVxdWVz dCAzMzI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMzMgor Li4gX1B1bGwgUmVxdWVzdCAzMzM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh bGF4eS9wdWxsLzMzMworLi4gX1B1bGwgUmVxdWVzdCAzMzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9n YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMzNAorLi4gX1B1bGwgUmVxdWVzdCAzMzU6IGh0dHBz Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMzNQorLi4gX1B1bGwgUmVx dWVzdCAzMzY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMz NgorLi4gX1B1bGwgUmVxdWVzdCAzMzc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0 L2dhbGF4eS9wdWxsLzMzNworLi4gX1B1bGwgUmVxdWVzdCAzMzg6IGh0dHBzOi8vZ2l0aHViLmNv bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMzOAorLi4gX1B1bGwgUmVxdWVzdCAzMzk6IGh0 dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMzOQorLi4gX1B1bGwg UmVxdWVzdCAzNDA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs LzM0MAorLi4gX1B1bGwgUmVxdWVzdCAzNDE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q ZWN0L2dhbGF4eS9wdWxsLzM0MQorLi4gX1B1bGwgUmVxdWVzdCAzNDI6IGh0dHBzOi8vZ2l0aHVi LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM0MgorLi4gX1B1bGwgUmVxdWVzdCAzNDQ6 IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM0NAorLi4gX1B1 bGwgUmVxdWVzdCAzNDU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w dWxsLzM0NQorLi4gX1B1bGwgUmVxdWVzdCAzNDY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw cm9qZWN0L2dhbGF4eS9wdWxsLzM0NgorLi4gX1B1bGwgUmVxdWVzdCAzNDc6IGh0dHBzOi8vZ2l0 aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM0NworLi4gX1B1bGwgUmVxdWVzdCAz NDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM0OQorLi4g X1B1bGwgUmVxdWVzdCAzNTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4 eS9wdWxsLzM1MAorLi4gX1B1bGwgUmVxdWVzdCAzNTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM1MQorLi4gX1B1bGwgUmVxdWVzdCAzNTI6IGh0dHBzOi8v Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM1MgorLi4gX1B1bGwgUmVxdWVz dCAzNTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM1NAor Li4gX1B1bGwgUmVxdWVzdCAzNTU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh bGF4eS9wdWxsLzM1NQorLi4gX1B1bGwgUmVxdWVzdCAzNTY6IGh0dHBzOi8vZ2l0aHViLmNvbS9n YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM1NgorLi4gX1B1bGwgUmVxdWVzdCAzNjI6IGh0dHBz Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM2MgorLi4gX1B1bGwgUmVx dWVzdCAzNjQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM2 NAorLi4gX1B1bGwgUmVxdWVzdCAzNjY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0 L2dhbGF4eS9wdWxsLzM2NgorLi4gX1B1bGwgUmVxdWVzdCAzNjg6IGh0dHBzOi8vZ2l0aHViLmNv bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM2OAorLi4gX1B1bGwgUmVxdWVzdCAzNjk6IGh0 dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM2OQorLi4gX1B1bGwg UmVxdWVzdCAzNzA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs LzM3MAorLi4gX1B1bGwgUmVxdWVzdCAzNzE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q ZWN0L2dhbGF4eS9wdWxsLzM3MQorLi4gX1B1bGwgUmVxdWVzdCAzNzM6IGh0dHBzOi8vZ2l0aHVi LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM3MworLi4gX1B1bGwgUmVxdWVzdCAzNzQ6 IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM3NAorLi4gX1B1 bGwgUmVxdWVzdCAzNzY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w dWxsLzM3NgorLi4gX1B1bGwgUmVxdWVzdCAzODE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw cm9qZWN0L2dhbGF4eS9wdWxsLzM4MQorLi4gX1B1bGwgUmVxdWVzdCAzODM6IGh0dHBzOi8vZ2l0 aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM4MworLi4gX1B1bGwgUmVxdWVzdCAz ODQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM4NAorLi4g X1B1bGwgUmVxdWVzdCAzODY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4 eS9wdWxsLzM4NgorLi4gX1B1bGwgUmVxdWVzdCAzODk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM4OQorLi4gX1B1bGwgUmVxdWVzdCAzOTA6IGh0dHBzOi8v Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM5MAorLi4gX1B1bGwgUmVxdWVz dCAzOTI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM5Mgor Li4gX1B1bGwgUmVxdWVzdCAzOTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh bGF4eS9wdWxsLzM5NAorLi4gX1B1bGwgUmVxdWVzdCAzOTU6IGh0dHBzOi8vZ2l0aHViLmNvbS9n YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM5NQorLi4gX1B1bGwgUmVxdWVzdCAzOTc6IGh0dHBz Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM5NworLi4gX1B1bGwgUmVx dWVzdCAzOTg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM5 OAorLi4gX1B1bGwgUmVxdWVzdCAzOTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0 L2dhbGF4eS9wdWxsLzM5OQorLi4gX1B1bGwgUmVxdWVzdCA0MDI6IGh0dHBzOi8vZ2l0aHViLmNv bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQwMgorLi4gX1B1bGwgUmVxdWVzdCA0MDM6IGh0 dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQwMworLi4gX1B1bGwg UmVxdWVzdCA0MDU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs LzQwNQorLi4gX1B1bGwgUmVxdWVzdCA0MDY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q ZWN0L2dhbGF4eS9wdWxsLzQwNgorLi4gX1B1bGwgUmVxdWVzdCA0MDc6IGh0dHBzOi8vZ2l0aHVi LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQwNworLi4gX1B1bGwgUmVxdWVzdCA0MTA6 IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQxMAorLi4gX1B1 bGwgUmVxdWVzdCA0MTI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w dWxsLzQxMgorLi4gX1B1bGwgUmVxdWVzdCA0MTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw cm9qZWN0L2dhbGF4eS9wdWxsLzQxNAorLi4gX1B1bGwgUmVxdWVzdCA0MTY6IGh0dHBzOi8vZ2l0 aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQxNgorLi4gX1B1bGwgUmVxdWVzdCA0 MTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQxOQorLi4g X1B1bGwgUmVxdWVzdCA0MjA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4 eS9wdWxsLzQyMAorLi4gX1B1bGwgUmVxdWVzdCA0MjE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQyMQorLi4gX1B1bGwgUmVxdWVzdCA0MjI6IGh0dHBzOi8v Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQyMgorLi4gX1B1bGwgUmVxdWVz dCA0MjM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQyMwor Li4gX1B1bGwgUmVxdWVzdCA0MjQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh bGF4eS9wdWxsLzQyNAorLi4gX1B1bGwgUmVxdWVzdCA0MjY6IGh0dHBzOi8vZ2l0aHViLmNvbS9n YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQyNgorLi4gX1B1bGwgUmVxdWVzdCA0Mjc6IGh0dHBz Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQyNworLi4gX1B1bGwgUmVx dWVzdCA0Mjk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQy OQorLi4gX1B1bGwgUmVxdWVzdCA0MzE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0 L2dhbGF4eS9wdWxsLzQzMQorLi4gX1B1bGwgUmVxdWVzdCA0MzI6IGh0dHBzOi8vZ2l0aHViLmNv bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQzMgorLi4gX1B1bGwgUmVxdWVzdCA0MzM6IGh0 dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQzMworLi4gX1B1bGwg UmVxdWVzdCA0Mzg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs LzQzOAorLi4gX1B1bGwgUmVxdWVzdCA0Mzk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q ZWN0L2dhbGF4eS9wdWxsLzQzOQorLi4gX1B1bGwgUmVxdWVzdCA0NDA6IGh0dHBzOi8vZ2l0aHVi LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ0MAorLi4gX1B1bGwgUmVxdWVzdCA0NDE6 IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ0MQorLi4gX1B1 bGwgUmVxdWVzdCA0NDM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w dWxsLzQ0MworLi4gX1B1bGwgUmVxdWVzdCA0NDQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw cm9qZWN0L2dhbGF4eS9wdWxsLzQ0NAorLi4gX1B1bGwgUmVxdWVzdCA0NDY6IGh0dHBzOi8vZ2l0 aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ0NgorLi4gX1B1bGwgUmVxdWVzdCA0 NDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ0OQorLi4g X1B1bGwgUmVxdWVzdCA0NTI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4 eS9wdWxsLzQ1MgorLi4gX1B1bGwgUmVxdWVzdCA0NTM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ1MworLi4gX1B1bGwgUmVxdWVzdCA0NTQ6IGh0dHBzOi8v Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ1NAorLi4gX1B1bGwgUmVxdWVz dCA0NTU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ1NQor Li4gX1B1bGwgUmVxdWVzdCA0NTg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh bGF4eS9wdWxsLzQ1OAorLi4gX1B1bGwgUmVxdWVzdCA0NTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9n YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ1OQorLi4gX1B1bGwgUmVxdWVzdCA0NjI6IGh0dHBz Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ2MgorLi4gX1B1bGwgUmVx dWVzdCA0NjM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ2 MworLi4gX1B1bGwgUmVxdWVzdCA0NjU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0 L2dhbGF4eS9wdWxsLzQ2NQorLi4gX1B1bGwgUmVxdWVzdCA0NzA6IGh0dHBzOi8vZ2l0aHViLmNv bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ3MAorLi4gX1B1bGwgUmVxdWVzdCA0NzI6IGh0 dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ3MgorLi4gX1B1bGwg UmVxdWVzdCA0NzM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs LzQ3MworLi4gX1B1bGwgUmVxdWVzdCA0Nzg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q ZWN0L2dhbGF4eS9wdWxsLzQ3OAorLi4gX1B1bGwgUmVxdWVzdCA0Nzk6IGh0dHBzOi8vZ2l0aHVi LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ3OQorLi4gX1B1bGwgUmVxdWVzdCA0ODA6 IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ4MAorLi4gX1B1 bGwgUmVxdWVzdCA0ODE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w dWxsLzQ4MQorLi4gX1B1bGwgUmVxdWVzdCA0ODI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw cm9qZWN0L2dhbGF4eS9wdWxsLzQ4MgorLi4gX1B1bGwgUmVxdWVzdCA0ODQ6IGh0dHBzOi8vZ2l0 aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ4NAorLi4gX1B1bGwgUmVxdWVzdCA0 ODU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ4NQorLi4g X1B1bGwgUmVxdWVzdCA0ODY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4 eS9wdWxsLzQ4NgorLi4gX1B1bGwgUmVxdWVzdCA0ODc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ4NworLi4gX1B1bGwgUmVxdWVzdCA0ODg6IGh0dHBzOi8v Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ4OAorLi4gX1B1bGwgUmVxdWVz dCA0OTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ5MAor Li4gX1B1bGwgUmVxdWVzdCA0OTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh bGF4eS9wdWxsLzQ5MQorLi4gX1B1bGwgUmVxdWVzdCA0OTI6IGh0dHBzOi8vZ2l0aHViLmNvbS9n YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ5MgorLi4gX1B1bGwgUmVxdWVzdCA0OTM6IGh0dHBz Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ5MworLi4gX1B1bGwgUmVx dWVzdCA0OTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ5 NAorLi4gX1B1bGwgUmVxdWVzdCA0OTU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0 L2dhbGF4eS9wdWxsLzQ5NQorLi4gX1B1bGwgUmVxdWVzdCA0OTY6IGh0dHBzOi8vZ2l0aHViLmNv bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ5NgorLi4gX1B1bGwgUmVxdWVzdCA0OTk6IGh0 dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ5OQorLi4gX1B1bGwg UmVxdWVzdCA1MDA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs LzUwMAorLi4gX1B1bGwgUmVxdWVzdCA1MDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q ZWN0L2dhbGF4eS9wdWxsLzUwOQorLi4gX1B1bGwgUmVxdWVzdCA1MTA6IGh0dHBzOi8vZ2l0aHVi LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUxMAorLi4gX1B1bGwgUmVxdWVzdCA1MTE6 IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUxMQorLi4gX1B1 bGwgUmVxdWVzdCA1MTI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w dWxsLzUxMgorLi4gX1B1bGwgUmVxdWVzdCA1MTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw cm9qZWN0L2dhbGF4eS9wdWxsLzUxNAorLi4gX1B1bGwgUmVxdWVzdCA1MTU6IGh0dHBzOi8vZ2l0 aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUxNQorLi4gX1B1bGwgUmVxdWVzdCA1 MTY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUxNgorLi4g X1B1bGwgUmVxdWVzdCA1MTc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4 eS9wdWxsLzUxNworLi4gX1B1bGwgUmVxdWVzdCA1MjY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUyNgorLi4gX1B1bGwgUmVxdWVzdCA1Mjc6IGh0dHBzOi8v Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUyNworLi4gX1B1bGwgUmVxdWVz dCA1Mjk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUyOQor Li4gX1B1bGwgUmVxdWVzdCA1MzA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh bGF4eS9wdWxsLzUzMAorLi4gX1B1bGwgUmVxdWVzdCA1MzE6IGh0dHBzOi8vZ2l0aHViLmNvbS9n YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUzMQorLi4gX1B1bGwgUmVxdWVzdCA1MzI6IGh0dHBz Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUzMgorLi4gX1B1bGwgUmVx dWVzdCA1MzM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUz MworLi4gX1B1bGwgUmVxdWVzdCA1MzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0 L2dhbGF4eS9wdWxsLzUzNAorLi4gX1B1bGwgUmVxdWVzdCA1MzY6IGh0dHBzOi8vZ2l0aHViLmNv bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUzNgorLi4gX1B1bGwgUmVxdWVzdCA1Mzc6IGh0 dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUzNworLi4gX1B1bGwg UmVxdWVzdCA1Mzg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs LzUzOAorLi4gX1B1bGwgUmVxdWVzdCA1Mzk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q ZWN0L2dhbGF4eS9wdWxsLzUzOQorLi4gX1B1bGwgUmVxdWVzdCA1NDA6IGh0dHBzOi8vZ2l0aHVi LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU0MAorLi4gX1B1bGwgUmVxdWVzdCA1NDM6 IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU0MworLi4gX1B1 bGwgUmVxdWVzdCA1NDQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w dWxsLzU0NAorLi4gX1B1bGwgUmVxdWVzdCA1NDU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw cm9qZWN0L2dhbGF4eS9wdWxsLzU0NQorLi4gX1B1bGwgUmVxdWVzdCA1NDY6IGh0dHBzOi8vZ2l0 aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU0NgorLi4gX1B1bGwgUmVxdWVzdCA1 NDc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU0NworLi4g X1B1bGwgUmVxdWVzdCA1NTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4 eS9wdWxsLzU1MAorLi4gX1B1bGwgUmVxdWVzdCA1NTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU1MQorLi4gX1B1bGwgUmVxdWVzdCA1NTM6IGh0dHBzOi8v Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU1MworLi4gX1B1bGwgUmVxdWVz dCA1NjE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU2MQor Li4gX1B1bGwgUmVxdWVzdCA1NjM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh bGF4eS9wdWxsLzU2MworLi4gX1B1bGwgUmVxdWVzdCA1NjU6IGh0dHBzOi8vZ2l0aHViLmNvbS9n YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU2NQorLi4gX1B1bGwgUmVxdWVzdCA1NjY6IGh0dHBz Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU2NgorLi4gX1B1bGwgUmVx dWVzdCA1Njc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU2 NworLi4gX1B1bGwgUmVxdWVzdCA1Njg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0 L2dhbGF4eS9wdWxsLzU2OAorLi4gX1B1bGwgUmVxdWVzdCA1Njk6IGh0dHBzOi8vZ2l0aHViLmNv bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU2OQorLi4gX1B1bGwgUmVxdWVzdCA1NzE6IGh0 dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU3MQorLi4gX1B1bGwg UmVxdWVzdCA1NzU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs LzU3NQorLi4gX1B1bGwgUmVxdWVzdCA1Nzc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q ZWN0L2dhbGF4eS9wdWxsLzU3NworLi4gX1B1bGwgUmVxdWVzdCA1ODA6IGh0dHBzOi8vZ2l0aHVi LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU4MAorLi4gX1B1bGwgUmVxdWVzdCA1ODE6 IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU4MQorLi4gX1B1 bGwgUmVxdWVzdCA1ODM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w dWxsLzU4MworLi4gX1B1bGwgUmVxdWVzdCA1ODQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw cm9qZWN0L2dhbGF4eS9wdWxsLzU4NAorLi4gX1B1bGwgUmVxdWVzdCA1ODU6IGh0dHBzOi8vZ2l0 aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU4NQorLi4gX1B1bGwgUmVxdWVzdCA1 ODc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU4NworLi4g X1B1bGwgUmVxdWVzdCA1ODk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4 eS9wdWxsLzU4OQorLi4gX1B1bGwgUmVxdWVzdCA1OTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU5MQorLi4gX1B1bGwgUmVxdWVzdCA1OTI6IGh0dHBzOi8v Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU5MgorLi4gX1B1bGwgUmVxdWVz dCA1OTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU5NAor Li4gX1B1bGwgUmVxdWVzdCA2MDA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh bGF4eS9wdWxsLzYwMAorLi4gX1B1bGwgUmVxdWVzdCA2MDI6IGh0dHBzOi8vZ2l0aHViLmNvbS9n YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzYwMgorLi4gX1B1bGwgUmVxdWVzdCA2MjU6IGh0dHBz Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzYyNQoKZGlmZiAtciBjOGFi MGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1 NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBkb2Mvc291cmNlL3JlbGVhc2VzLzE1LjA3X2Fubm91 bmNlLnJzdAotLS0gYS9kb2Mvc291cmNlL3JlbGVhc2VzLzE1LjA3X2Fubm91bmNlLnJzdAorKysg Yi9kb2Mvc291cmNlL3JlbGVhc2VzLzE1LjA3X2Fubm91bmNlLnJzdApAQCAtMiwyMiArMiw2OSBA QAogSnVseSAyMDE1IEdhbGF4eSBSZWxlYXNlICh2IDE1LjA3KQogPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAo9MjAKKwog Li4gaW5jbHVkZTo6IF9oZWFkZXIucnN0Cj0yMAorSGlnaGxpZ2h0cworPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAo9MjAK LVNjaGVkdWxlCisqKkludGVyYWN0aXZlIEVudmlyb25tZW50cyoqCisgIFRoZSBpbnRlcmFjdGl2 ZSBlbnZpcm9ubWVudHMgKElFKSBmcmFtZXdvcmsgZmVhdHVyZXMgc2V2ZXJhbCB1cGRhdGVzIHRo aT0KcyByZWxlYXNlCisgIGFuZCBHYWxheHkgaXMgbm93IGRpc3RyaWJ1dGVkIHdpdGggYSBuZXcg SUUgZm9yIFJTdHVkaW8gaW1wbGVtZW50ZWQgYnkgRT0KcmljIFJhc2NoZS4KKworKipXb3JrZmxv dyBFZGl0b3IgRW5oYW5jZW1lbnRzKioKKyAgVGhlIHdvcmtmbG93IGVkaXRvciBoYXMgYmVlbiBz aWduaWZpY2FudGx5IHJldmFtcGVkIC0gaXQgbm93IHVzZXMgbmV3ZXIgPQp0b29sIGZvcm0KKyAg Y29tcG9uZW50cyBhbmQgYWxsb3cgY29uc3RydWN0aW9uIG9mIHdvcmtmbG93cyB3aXRoIHRvb2xz IGV4cGxpY2l0bHkgcHJvPQpkdWNpbmcKKyAgb3V0cHV0IGNvbGxlY3Rpb25zLgorCisqKlBvbGlj aWVzIGZvciBDb21taXR0ZXJzIGFuZCBQdWxsIFJlcXVlc3RzKioKKyAgVGhlIHByb2Nlc3MgZm9y IGFkZGluZyBjb21taXR0ZXJzIHRvIHRoZSBwcm9qZWN0IGFuZCBmaWVsZGluZyBwdWxsIHJlcXVl PQpzdHMgaGFzPTIwCisgIGJlZW4gZm9ybWFsaXplZCBhbmQgZG9jdW1lbnRlZCBpbiB0aGUgc291 cmNlIGNvZGUuIFRocmVlIG5ldyBjb21taXR0ZXJzID0KaGF2ZSBiZWVuCisgIGFkZGVkIHRvIHRo ZSBwcm9qZWN0IC0gQmo9QzM9QjZybiBHcj1DMz1CQ25pbmcsIE5pY29sYSBTb3JhbnpvLCBhbmQg RXJpYz0KIFJhc2NoZS4KKworCitgR2l0aHViIDxodHRwczovL2dpdGh1Yi5jb20vZ2FsYXh5cHJv amVjdC9nYWxheHk+YF9fCiA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECi0gKiBQbGFubmVkIEZyZWV6ZSBEYXRlOiBKdWx5 IDEzLCAyMDE1Ci0gKiBQbGFubmVkIFJlbGVhc2UgRGF0ZTogSnVseSAyNywgMjAxNQo9MjAKLS4u IEhpZ2hsaWdodHMKLS4uID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0QKK05ldworICAuLiBjb2RlLWJsb2NrOjogc2hlbGwK KyA9MjAKKyAgICAgICUgZ2l0IGNsb25lIC1iIG1hc3RlciBodHRwczovL2dpdGh1Yi5jb20vZ2Fs YXh5cHJvamVjdC9nYWxheHkuZ2l0Cj0yMAotLi4gRG93bmxvYWRzCi0uLiA9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECitV cGRhdGUgdG8gbGF0ZXN0IHN0YWJsZSByZWxlYXNlCisgIC4uIGNvZGUtYmxvY2s6OiBzaGVsbAor ID0yMAorICAgICAgJSBnaXQgY2hlY2tvdXQgbWFzdGVyICYmIHB1bGwgLS1mZi1vbmx5IG9yaWdp biBtYXN0ZXIKPTIwCi0uLiBSZWxlYXNlIE5vdGVzCi0uLiA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECitVcGRhdGUgdG8g ZXhhY3QgdmVyc2lvbgorICAuLiBjb2RlLWJsb2NrOjogc2hlbGwKKyA9MjAKKyAgICAgICUgZ2l0 IGNoZWNrb3V0IHYxNS4wNwo9MjAKPTIwCitgQml0QnVja2V0IDxodHRwczovL2JpdGJ1Y2tldC5v cmcvZ2FsYXh5L2dhbGF4eS1kaXN0PmBfXworPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAorCitVcGdyYWRlCisgIC4uIGNv ZGUtYmxvY2s6OiBzaGVsbAorID0yMAorICAgICAgJSBoZyBwdWxsPTIwCisgICAgICAlIGhnIHVw ZGF0ZSBsYXRlc3RfMTUuMDcKKworCitTZWUgYG91ciB3aWtpIDxodHRwczovL3dpa2kuZ2FsYXh5 cHJvamVjdC5vcmcvRGV2ZWxvcC9Tb3VyY2VDb2RlPmBfXyBmb3IgYT0KZGRpdGlvbmFsIGRldGFp bHMgcmVnYXJkaW5nIHRoZSBzb3VyY2UgY29kZSBsb2NhdGlvbnMuCisKK0RlcHJlY2F0aW9uIE5v dGljZQorPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRAorCitHYWxheHkncyBidWlsdC1pbiBjbG91ZGxhdW5jaCBmdW5jdGlv bmFsaXR5IGlzIGJlaW5nIHJlcGxhY2VkIGJ5IGBDbG91ZExhdT0KbmNoCis8aHR0cHM6Ly9naXRo dWIuY29tL2dhbGF4eXByb2plY3QvY2xvdWRsYXVuY2g+YF9fIGFuZCB3aWxsIGJlIHJlbW92ZWQg ZnJvbT0KIHRoZQorY29yZSBjb2RlYmFzZSBpbiB0aGUgbmV4dCByZWxlYXNlLgorCitSZWxlYXNl IE5vdGVzCis9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNECisKKy4uIGluY2x1ZGU6OiAxNS4wNy5yc3QKKyAgIDpzdGFydC1h ZnRlcjogZW5oYW5jZW1lbnRzCisKIC4uIGluY2x1ZGU6OiBfdGhhbmtzLnJzdAoKZGlmZiAtciBj OGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMy YWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBkb2Mvc291cmNlL3JlbGVhc2VzLzE1LjEwX2Fu bm91bmNlLnJzdAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zb3VyY2UvcmVsZWFzZXMvMTUuMTBf YW5ub3VuY2UucnN0CkBAIC0wLDAgKzEsOSBAQAorPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAorT2N0b2JlciAyMDE1IEdh bGF4eSBSZWxlYXNlICh2IDE1LjEwKQorPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAorCisKK1NjaGVkdWxlCis9M0Q9M0Q9 M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9 M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE PTNECisgKiBQbGFubmVkIEZyZWV6ZSBEYXRlOiBPY3RvYmVyIDUsIDIwMTUKKyAqIFBsYW5uZWQg UmVsZWFzZSBEYXRlOiBPY3RvYmVyIDI2LCAyMDE1CgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRk MjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVh NjgxODk3OTdlOTc5IGRvYy9zb3VyY2UvcmVsZWFzZXMvaW5kZXgucnN0Ci0tLSBhL2RvYy9zb3Vy Y2UvcmVsZWFzZXMvaW5kZXgucnN0CisrKyBiL2RvYy9zb3VyY2UvcmVsZWFzZXMvaW5kZXgucnN0 CkBAIC00LDYgKzQsNyBAQAogLi4gdG9jdHJlZTo6CiAgICA6bWF4ZGVwdGg6IDEKPTIwCisgICAx NS4xMF9hbm5vdW5jZQogICAgMTUuMDdfYW5ub3VuY2UKICAgIDE1LjA1X2Fubm91bmNlCiAgICAx NS4wM19hbm5vdW5jZQoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5 YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBsaWIv Z2FsYXh5L2RhdGF0eXBlcy9iaW5hcnkucHkKLS0tIGEvbGliL2dhbGF4eS9kYXRhdHlwZXMvYmlu YXJ5LnB5CisrKyBiL2xpYi9nYWxheHkvZGF0YXR5cGVzL2JpbmFyeS5weQpAQCAtNDEsMTEgKzQx LDExIEBACj0yMAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgcmVnaXN0ZXJfc25pZmZhYmxl X2JpbmFyeV9mb3JtYXQoZGF0YV90eXBlLCBleHQsIHR5cGVfY2xhc3MpOgotICAgICAgICBCaW5h cnkuc25pZmZhYmxlX2JpbmFyeV9mb3JtYXRzLmFwcGVuZCh7InR5cGUiOiBkYXRhX3R5cGUsICJl eHQiOiA9CmV4dCwgImNsYXNzIjogdHlwZV9jbGFzc30pCisgICAgICAgIEJpbmFyeS5zbmlmZmFi bGVfYmluYXJ5X2Zvcm1hdHMuYXBwZW5kKHsidHlwZSI6IGRhdGFfdHlwZSwgImV4dCI6ID0KZXh0 Lmxvd2VyKCksICJjbGFzcyI6IHR5cGVfY2xhc3N9KQo9MjAKICAgICBAc3RhdGljbWV0aG9kCiAg ICAgZGVmIHJlZ2lzdGVyX3Vuc25pZmZhYmxlX2JpbmFyeV9leHQoZXh0KToKLSAgICAgICAgQmlu YXJ5LnVuc25pZmZhYmxlX2JpbmFyeV9mb3JtYXRzLmFwcGVuZChleHQpCisgICAgICAgIEJpbmFy eS51bnNuaWZmYWJsZV9iaW5hcnlfZm9ybWF0cy5hcHBlbmQoZXh0Lmxvd2VyKCkpCj0yMAogICAg IEBzdGF0aWNtZXRob2QKICAgICBkZWYgaXNfc25pZmZhYmxlX2JpbmFyeSggZmlsZW5hbWUgKToK QEAgLTg5MSw3ICs4OTEsNyBAQAo9MjAKIGNsYXNzIFJEYXRhKCBCaW5hcnkgKToKICAgICAiIiJH ZW5lcmljIFIgRGF0YSBmaWxlIGRhdGF0eXBlIGltcGxlbWVudGF0aW9uIiIiCi0gICAgZmlsZV9l eHQgPTNEICdyZGF0YScKKyAgICBmaWxlX2V4dCA9M0QgJ1JEYXRhJwo9MjAKICAgICBkZWYgX19p bml0X18oIHNlbGYsICoqa3dkICk6CiAgICAgICAgIEJpbmFyeS5fX2luaXRfXyggc2VsZiwgKipr d2QgKQpAQCAtOTA5LDQgKzkwOSw0IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHJl dHVybiBGYWxzZQo9MjAKLUJpbmFyeS5yZWdpc3Rlcl9zbmlmZmFibGVfYmluYXJ5X2Zvcm1hdCgn cmRhdGEnLCAncmRhdGEnLCBSRGF0YSkKK0JpbmFyeS5yZWdpc3Rlcl9zbmlmZmFibGVfYmluYXJ5 X2Zvcm1hdCgnUkRhdGEnLCAnUkRhdGEnLCBSRGF0YSkKCmRpZmYgLXIgYzhhYjBmZTI4NmJmMTBh ZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3ZGZjMmFlNTZkZTEwNz0KMmE0 NWE2ODE4OTc5N2U5NzkgbGliL2dhbGF4eS9kYXRhdHlwZXMvdGFidWxhci5weQotLS0gYS9saWIv Z2FsYXh5L2RhdGF0eXBlcy90YWJ1bGFyLnB5CisrKyBiL2xpYi9nYWxheHkvZGF0YXR5cGVzL3Rh YnVsYXIucHkKQEAgLTI3Myw3ICsyNzMsNyBAQAogICAgICAgICAgICAgICAgIGlmIGNvbHVtbl90 eXBlMiA9M0Q9M0QgY29sdW1uX3R5cGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxz ZQogICAgICAgICAgICAgIyBuZWl0aGVyIGNvbHVtbiB0eXBlIHdhcyBmb3VuZCBpbiBvdXIgb3Jk ZXJlZCBsaXN0LCB0aGlzIGNhbm49Cm90IGhhcHBlbgotICAgICAgICAgICAgcmFpc2UgIlRyaWVk IHRvIGNvbXBhcmUgdW5rbm93biBjb2x1bW4gdHlwZXMiCisgICAgICAgICAgICByYWlzZSBWYWx1 ZUVycm9yKCAiVHJpZWQgdG8gY29tcGFyZSB1bmtub3duIGNvbHVtbiB0eXBlczogJXMgYT0KbmQg JXMiICUgKCBjb2x1bW5fdHlwZTEsIGNvbHVtbl90eXBlMiApICkKPTIwCiAgICAgICAgIGRlZiBp c19pbnQoIGNvbHVtbl90ZXh0ICk6CiAgICAgICAgICAgICB0cnk6CkBAIC05MTMsOCArOTEzLDYg QEAKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0NTViByZWFkZXIgZXJyb3IgLSBs aW5lICVkOiAlcycgJSAocmVhZGVyPQoubGluZV9udW0sIGUpKQo9MjAKICAgICAgICAgICAgICMg R3Vlc3MgY29sdW1uIHR5cGVzCi0gICAgICAgICAgICBpZiBsZW4oaGVhZGVyX3JvdykgIT0zRCBs ZW4oZGF0YV9yb3cpOgotICAgICAgICAgICAgICAgIHJhaXNlICgnbWlzbWF0Y2hpbmcgbnVtYmVy IG9mIGNvbHVtbnMgaW4gaGVhZGVyIGFuZCBkYXRhJykKICAgICAgICAgICAgIGNvbHVtbl90eXBl cyA9M0QgW10KICAgICAgICAgICAgIGZvciBjZWxsIGluIGRhdGFfcm93OgogICAgICAgICAgICAg ICAgIGNvbHVtbl90eXBlcy5hcHBlbmQoc2VsZi5ndWVzc190eXBlKGNlbGwpKQpAQCAtOTIzLDcg KzkyMSw3IEBACiAgICAgICAgICAgICBkYXRhc2V0Lm1ldGFkYXRhLmRhdGFfbGluZXMgPTNEIHJl YWRlci5saW5lX251bSAtIDEKICAgICAgICAgICAgIGRhdGFzZXQubWV0YWRhdGEuY29tbWVudF9s aW5lcyA9M0QgMQogICAgICAgICAgICAgZGF0YXNldC5tZXRhZGF0YS5jb2x1bW5fdHlwZXMgPTNE IGNvbHVtbl90eXBlcwotICAgICAgICAgICAgZGF0YXNldC5tZXRhZGF0YS5jb2x1bW5zID0zRCBs ZW4oaGVhZGVyX3JvdykKKyAgICAgICAgICAgIGRhdGFzZXQubWV0YWRhdGEuY29sdW1ucyA9M0Qg bWF4KCBsZW4oIGhlYWRlcl9yb3cgKSwgbGVuKCBkYXRhPQpfcm93ICkgKQogICAgICAgICAgICAg ZGF0YXNldC5tZXRhZGF0YS5jb2x1bW5fbmFtZXMgPTNEIGhlYWRlcl9yb3cKICAgICAgICAgICAg IGRhdGFzZXQubWV0YWRhdGEuZGVsaW1pdGVyID0zRCByZWFkZXIuZGlhbGVjdC5kZWxpbWl0ZXIK PTIwCgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIg MDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGxpYi9nYWxheHkvZXhj ZXB0aW9ucy9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L2V4Y2VwdGlvbnMvX19pbml0X18u cHkKKysrIGIvbGliL2dhbGF4eS9leGNlcHRpb25zL19faW5pdF9fLnB5CkBAIC03MSw2ICs3MSwx MSBAQAogICAgIGVycl9jb2RlID0zRCBlcnJvcl9jb2Rlcy5NQUxGT1JNRURfSUQKPTIwCj0yMAor Y2xhc3MgTWFsZm9ybWVkQ29udGVudHMoIE1lc3NhZ2VFeGNlcHRpb24gKToKKyAgICBzdGF0dXNf Y29kZSA9M0QgNDAwCisgICAgZXJyX2NvZGUgPTNEIGVycm9yX2NvZGVzLk1BTEZPUk1FRF9DT05U RU5UUworCisKIGNsYXNzIFVua25vd25Db250ZW50c1R5cGUoIE1lc3NhZ2VFeGNlcHRpb24gKToK ICAgICBzdGF0dXNfY29kZSA9M0QgNDAwCiAgICAgZXJyX2NvZGUgPTNEIGVycm9yX2NvZGVzLlVO S05PV05fQ09OVEVOVFNfVFlQRQoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBj ZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3 OSBsaWIvZ2FsYXh5L2V4Y2VwdGlvbnMvZXJyb3JfY29kZXMuanNvbgotLS0gYS9saWIvZ2FsYXh5 L2V4Y2VwdGlvbnMvZXJyb3JfY29kZXMuanNvbgorKysgYi9saWIvZ2FsYXh5L2V4Y2VwdGlvbnMv ZXJyb3JfY29kZXMuanNvbgpAQCAtNjEsMTAgKzYxLDE1IEBACiAgICAgfSwKICAgIHsKICAgICAi bmFtZSI6ICJVU0VSX1RPT0xfTUVUQV9QQVJBTUVURVJfUFJPQkxFTSIsCi0gICAgImNvZGUiOiA0 MDAwMTEsCisgICAgImNvZGUiOiA0MDAwMTIsCiAgICAgIm1lc3NhZ2UiOiAiU3VwcGxpZWQgaW5j b3JyZWN0IG9yIGluY29tcGF0aWJsZSB0b29sIG1ldGEgcGFyYW1ldGVycy4iCiAgICB9LAogICAg eworICAgICJuYW1lIjogIk1BTEZPUk1FRF9DT05URU5UUyIsCisgICAgImNvZGUiOiA0MDAwMTMs CisgICAgIm1lc3NhZ2UiOiAiVGhlIGNvbnRlbnRzIG9mIHRoZSByZXF1ZXN0IGFyZSBtYWxmb3Jt ZWQuIgorICAgIH0sCisgICB7CiAgICAgIm5hbWUiOiAiVVNFUl9BVVRIRU5USUNBVElPTl9GQUlM RUQiLAogICAgICJjb2RlIjogNDAxMDAxLAogICAgICJtZXNzYWdlIjogIkF1dGhlbnRpY2F0aW9u IGZhaWxlZCwgaW52YWxpZCBjcmVkZW50aWFscyBzdXBwbGllZC4iCgpkaWZmIC1yIGM4YWIwZmUy ODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUx MDc9CjJhNDVhNjgxODk3OTdlOTc5IGxpYi9nYWxheHkvam9icy9fX2luaXRfXy5weQotLS0gYS9s aWIvZ2FsYXh5L2pvYnMvX19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS9qb2JzL19faW5pdF9f LnB5CkBAIC0xMDM2LDYgKzEwMzYsMTAgQEAKICAgICBkZWYgY2hhbmdlX3N0YXRlKCBzZWxmLCBz dGF0ZSwgaW5mbz0zREZhbHNlICk6CiAgICAgICAgIGpvYiA9M0Qgc2VsZi5nZXRfam9iKCkKICAg ICAgICAgc2VsZi5zYV9zZXNzaW9uLnJlZnJlc2goIGpvYiApCisgICAgICAgIGlmIGpvYi5zdGF0 ZSBpbiBtb2RlbC5Kb2IudGVybWluYWxfc3RhdGVzOgorICAgICAgICAgICAgbG9nLndhcm5pbmco ICIoJXMpIElnbm9yaW5nIHN0YXRlIGNoYW5nZSBmcm9tICclcycgdG8gJyVzJyBmb3I9CiBqb2Ig IgorICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGF0IGlzIGFscmVhZHkgdGVybWluYWwiLCBq b2IuaWQsIGpvYi5zdGF0ZSwgc3Q9CmF0ZSApCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAg Zm9yIGRhdGFzZXRfYXNzb2MgaW4gam9iLm91dHB1dF9kYXRhc2V0cyArIGpvYi5vdXRwdXRfbGli cmFyeV9kYXRhPQpzZXRzOgogICAgICAgICAgICAgZGF0YXNldCA9M0QgZGF0YXNldF9hc3NvYy5k YXRhc2V0CiAgICAgICAgICAgICBzZWxmLnNhX3Nlc3Npb24ucmVmcmVzaCggZGF0YXNldCApCgpk aWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2Iw ZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGxpYi9nYWxheHkvam9icy9ydW5u ZXJzL3B1bHNhci5weQotLS0gYS9saWIvZ2FsYXh5L2pvYnMvcnVubmVycy9wdWxzYXIucHkKKysr IGIvbGliL2dhbGF4eS9qb2JzL3J1bm5lcnMvcHVsc2FyLnB5CkBAIC02MSw2ICs2MSwxNCBAQAog ICAgICAgICBtYXA9M0RzcGVjcy50b19zdHJfb3Jfbm9uZSwKICAgICAgICAgZGVmYXVsdD0zRE5v bmUsCiAgICAgKSwKKyAgICBwZXJzaXN0ZW5jZV9kaXJlY3Rvcnk9M0RkaWN0KAorICAgICAgICBt YXA9M0RzcGVjcy50b19zdHJfb3Jfbm9uZSwKKyAgICAgICAgZGVmYXVsdD0zRE5vbmUsCisgICAg KSwKKyAgICBhbXFwX2Fja25vd2xlZGdlPTNEZGljdCgKKyAgICAgICAgbWFwPTNEc3BlY3MudG9f Ym9vbF9vcl9ub25lLAorICAgICAgICBkZWZhdWx0PTNETm9uZQorICAgICksCiAgICAgYW1xcF9j b25zdW1lcl90aW1lb3V0PTNEZGljdCgKICAgICAgICAgbWFwPTNEbGFtYmRhIHZhbDogTm9uZSBp ZiB2YWwgPTNEPTNEICJOb25lIiBlbHNlIGZsb2F0KHZhbCksCiAgICAgICAgIGRlZmF1bHQ9M0RO b25lLApAQCAtMTQ1LDcgKzE1Myw3IEBACj0yMAogICAgIGRlZiBfX2luaXRfY2xpZW50X21hbmFn ZXIoIHNlbGYgKToKICAgICAgICAgY2xpZW50X21hbmFnZXJfa3dhcmdzID0zRCB7fQotICAgICAg ICBmb3Iga3dkIGluICdtYW5hZ2VyJywgJ2NhY2hlJywgJ3RyYW5zcG9ydCc6CisgICAgICAgIGZv ciBrd2QgaW4gJ21hbmFnZXInLCAnY2FjaGUnLCAndHJhbnNwb3J0JywgJ3BlcnNpc3RlbmNlX2Rp cmVjdG9yeT0KJzoKICAgICAgICAgICAgIGNsaWVudF9tYW5hZ2VyX2t3YXJnc1sga3dkIF0gPTNE IHNlbGYucnVubmVyX3BhcmFtc1sga3dkIF0KICAgICAgICAgZm9yIGt3ZCBpbiBzZWxmLnJ1bm5l cl9wYXJhbXMua2V5cygpOgogICAgICAgICAgICAgaWYga3dkLnN0YXJ0c3dpdGgoICdhbXFwXycg KToKQEAgLTYxMSw2ICs2MTksNyBAQAogICAgICAgICAjIFRoaXMgaXMgYSBtZXNzYWdlIHF1ZXVl IGRyaXZlbiBydW5uZXIsIGRvbid0IG1vbml0b3IKICAgICAgICAgIyBqdXN0IHNldHVwIHJlcXVp cmVkIGNhbGxiYWNrLgogICAgICAgICBzZWxmLmNsaWVudF9tYW5hZ2VyLmVuc3VyZV9oYXNfc3Rh dHVzX3VwZGF0ZV9jYWxsYmFjayhzZWxmLl9fYXN5bmM9Cl91cGRhdGUpCisgICAgICAgIHNlbGYu Y2xpZW50X21hbmFnZXIuZW5zdXJlX2hhc19hY2tfY29uc3VtZXJzKCkKPTIwCiAgICAgZGVmIF9f YXN5bmNfdXBkYXRlKCBzZWxmLCBmdWxsX3N0YXR1cyApOgogICAgICAgICBqb2JfaWQgPTNEIE5v bmUKCmRpZmYgLXIgYzhhYjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAw MzRjYjBmYjg3ZGZjMmFlNTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgbGliL2dhbGF4eS9tb2Rl bC9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L21vZGVsL19faW5pdF9fLnB5CisrKyBiL2xp Yi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkKQEAgLTUsMTUgKzUsMTEgQEAKIHRoZSByZWxhdGlv bnNoaXAgY2FyZGluYWxpdGllcyBhcmUgb2J2aW91cyAoZS5nLiBwcmVmZXIgRGF0YXNldCB0byBE YXRhKQogIiIiCj0yMAotZnJvbSBnYWxheHkgaW1wb3J0IGVnZ3MKLWVnZ3MucmVxdWlyZSgicGV4 cGVjdCIpCi0KIGltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwogaW1wb3J0IGxvZ2dpbmcKIGlt cG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCi1pbXBvcnQgcGV4cGVjdAogaW1wb3J0IGpzb24KIGlt cG9ydCBzb2NrZXQKIGltcG9ydCB0aW1lCkBAIC0zMTcsNiArMzEzLDkgQEAKICAgICAgICAgICAg ICAgICAgICAgUEFVU0VEID0zRCAncGF1c2VkJywKICAgICAgICAgICAgICAgICAgICAgREVMRVRF RCA9M0QgJ2RlbGV0ZWQnLAogICAgICAgICAgICAgICAgICAgICBERUxFVEVEX05FVyA9M0QgJ2Rl bGV0ZWRfbmV3JyApCisgICAgdGVybWluYWxfc3RhdGVzID0zRCBbIHN0YXRlcy5PSywKKyAgICAg ICAgICAgICAgICAgICAgICAgIHN0YXRlcy5FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAg IHN0YXRlcy5ERUxFVEVEIF0KICAgICAjIFBsZWFzZSBpbmNsdWRlIGFuIGFjY2Vzc29yIChnZXQv c2V0IHBhaXIpIGZvciBhbnkgbmV3IGNvbHVtbnMvbWVtYmVyPQpzLgogICAgIGRlZiBfX2luaXRf Xyggc2VsZiApOgogICAgICAgICBzZWxmLnNlc3Npb25faWQgPTNEIE5vbmUKQEAgLTE0NDYsMTMg KzE0NDUsMTEgQEAKICAgICBkZWYgZ2V0X3RvdGFsX3NpemUoIHNlbGYgKToKICAgICAgICAgaWYg c2VsZi50b3RhbF9zaXplIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYudG90 YWxfc2l6ZQotICAgICAgICBpZiBzZWxmLmZpbGVfc2l6ZToKLSAgICAgICAgICAgICMgZm9yIGJh Y2t3YXJkcyBjb21wYXRpYmlsaXR5LCBzZXQgaWYgdW5zZXQKLSAgICAgICAgICAgIHNlbGYuc2V0 X3RvdGFsX3NpemUoKQotICAgICAgICAgICAgZGJfc2Vzc2lvbiA9M0Qgb2JqZWN0X3Nlc3Npb24o IHNlbGYgKQotICAgICAgICAgICAgZGJfc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICAgICByZXR1 cm4gc2VsZi50b3RhbF9zaXplCi0gICAgICAgIHJldHVybiAwCisgICAgICAgICMgZm9yIGJhY2t3 YXJkcyBjb21wYXRpYmlsaXR5LCBzZXQgaWYgdW5zZXQKKyAgICAgICAgc2VsZi5zZXRfdG90YWxf c2l6ZSgpCisgICAgICAgIGRiX3Nlc3Npb24gPTNEIG9iamVjdF9zZXNzaW9uKCBzZWxmICkKKyAg ICAgICAgZGJfc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgIHJldHVybiBzZWxmLnRvdGFsX3NpemUK ICAgICBkZWYgc2V0X3RvdGFsX3NpemUoIHNlbGYgKToKICAgICAgICAgaWYgc2VsZi5maWxlX3Np emUgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuc2V0X3NpemUoKQpAQCAtMzk3NCwyNyArMzk3 MSw2IEBACiAgICAgICAgICAgICAgICAgdW50cmFuc2ZlcnJlZF9kYXRhc2V0cy5hcHBlbmQoIGRh dGFzZXQgKQogICAgICAgICByZXR1cm4gdW50cmFuc2ZlcnJlZF9kYXRhc2V0cwo9MjAKLSAgICBk ZWYgZ2V0X3VudHJhbnNmZXJyZWRfZGF0YXNldF9zaXplKCBzZWxmLCBmaWxlcGF0aCwgc2NwX2Nv bmZpZ3MgKToKLSAgICAgICAgZGVmIHByaW50X3RpY2tzKCBkICk6Ci0gICAgICAgICAgICBwYXNz Ci0gICAgICAgIGVycm9yX21zZyA9M0QgJ0Vycm9yIGVuY291bnRlcmVkIGluIGRldGVybWluaW5n IHRoZSBmaWxlIHNpemUgb2YgJT0KcyBvbiB0aGUgZXh0ZXJuYWxfc2VydmljZS4nICUgZmlsZXBh dGgKLSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzWydob3N0J10gb3Igbm90IHNjcF9jb25maWdz Wyd1c2VyX25hbWUnXSBvciBub3QgPQpzY3BfY29uZmlnc1sncGFzc3dvcmQnXToKLSAgICAgICAg ICAgIHJldHVybiBlcnJvcl9tc2cKLSAgICAgICAgbG9naW5fc3RyID0zRCAnJXNAJXMnICUgKCBz Y3BfY29uZmlnc1sndXNlcl9uYW1lJ10sIHNjcF9jb25maWdzWydoPQpvc3QnXSApCi0gICAgICAg IGNtZCAgPTNEICdzc2ggJXMgImR1IC1zaCBcJyVzXCciJyAlICggbG9naW5fc3RyLCBmaWxlcGF0 aCApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG91dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNt ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHM9M0R7ICcuc3N3b3Jk OionOiBzY3BfY29uZmlnc1sncGFzPQpzd29yZCddKydcclxuJywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwZWN0LlRJTUVPVVQ6cHJpbnRfdGlja3N9LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9M0QxMCApCi0gICAgICAg IGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3JfbXNnCi0gICAgICAg ICMgY2xlYW51cCB0aGUgb3V0cHV0IHRvIGdldCBqdXN0IHRoZSBmaWxlIHNpemUKLSAgICAgICAg cmV0dXJuICBvdXRwdXQucmVwbGFjZSggZmlsZXBhdGgsICcnIClcCi0gICAgICAgICAgICAgICAg ICAgICAgLnJlcGxhY2UoICdQYXNzd29yZDonLCAnJyApXAotICAgICAgICAgICAgICAgICAgICAg IC5yZXBsYWNlKCAiJ3MgcGFzc3dvcmQ6IiwgJycgKVwKLSAgICAgICAgICAgICAgICAgICAgICAu cmVwbGFjZSggbG9naW5fc3RyLCAnJyApXAotICAgICAgICAgICAgICAgICAgICAgIC5zdHJpcCgp CiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHJ1bl9kZXRhaWxzKCBzZWxmICk6CiAgICAgICAgICMg c2VsZi5ydW5zIGlzIGEgbGlzdCBvZiBTYW1wbGVSdW5Bc3NvY2lhdGlvbnMgb3JkZXJlZCBkZXNj ZW5kaW5nID0Kb24gdXBkYXRlX3RpbWUuCgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2 NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3 OTdlOTc5IGxpYi9nYWxheHkvb2JqZWN0c3RvcmUvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4 eS9vYmplY3RzdG9yZS9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L29iamVjdHN0b3JlL19f aW5pdF9fLnB5CkBAIC0xMSw3ICsxMSw3IEBACiBpbXBvcnQgdGhyZWFkaW5nCiBmcm9tIHhtbC5l dHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKPTIwCi1mcm9tIGdhbGF4eS51dGlsIGltcG9ydCB1bWFz a19maXhfcGVybXMsIGZvcmNlX3N5bWxpbmsKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHVtYXNr X2ZpeF9wZXJtcywgZm9yY2Vfc3ltbGluaywgc2FmZV9yZWxwYXRoCiBmcm9tIGdhbGF4eS5leGNl cHRpb25zIGltcG9ydCBPYmplY3RJbnZhbGlkLCBPYmplY3ROb3RGb3VuZAogZnJvbSBnYWxheHku dXRpbC5zbGVlcGVyIGltcG9ydCBTbGVlcGVyCiBmcm9tIGdhbGF4eS51dGlsLmRpcmVjdG9yeV9o YXNoIGltcG9ydCBkaXJlY3RvcnlfaGFzaF9pZApAQCAtMzMsNiArMzMsMTAgQEAKICAgICBkZWYg X19pbml0X18oc2VsZiwgY29uZmlnLCBjb25maWdfeG1sPTNETm9uZSwgKiprd2FyZ3MpOgogICAg ICAgICBzZWxmLnJ1bm5pbmcgPTNEIFRydWUKICAgICAgICAgc2VsZi5leHRyYV9kaXJzID0zRCB7 fQorICAgICAgICBzZWxmLmNvbmZpZyA9M0QgY29uZmlnCisgICAgICAgIHNlbGYuY2hlY2tfb2xk X3N0eWxlID0zRCBjb25maWcub2JqZWN0X3N0b3JlX2NoZWNrX29sZF9zdHlsZQorICAgICAgICBz ZWxmLmV4dHJhX2RpcnNbJ2pvYl93b3JrJ10gPTNEIGNvbmZpZy5qb2Jfd29ya2luZ19kaXJlY3Rv cnkKKyAgICAgICAgc2VsZi5leHRyYV9kaXJzWyd0ZW1wJ10gPTNEIGNvbmZpZy5uZXdfZmlsZV9w YXRoCj0yMAogICAgIGRlZiBzaHV0ZG93bihzZWxmKToKICAgICAgICAgc2VsZi5ydW5uaW5nID0z RCBGYWxzZQpAQCAtMTk4LDEwICsyMDIsNiBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25m aWcsIGNvbmZpZ194bWw9M0ROb25lLCBmaWxlX3BhdGg9M0ROb25lLCBleHRyYV89CmRpcnM9M0RO b25lKToKICAgICAgICAgc3VwZXIoRGlza09iamVjdFN0b3JlLCBzZWxmKS5fX2luaXRfXyhjb25m aWcsIGNvbmZpZ194bWw9M0ROb25lLCBmPQppbGVfcGF0aD0zRGZpbGVfcGF0aCwgZXh0cmFfZGly cz0zRGV4dHJhX2RpcnMpCiAgICAgICAgIHNlbGYuZmlsZV9wYXRoID0zRCBmaWxlX3BhdGggb3Ig Y29uZmlnLmZpbGVfcGF0aAotICAgICAgICBzZWxmLmNvbmZpZyA9M0QgY29uZmlnCi0gICAgICAg IHNlbGYuY2hlY2tfb2xkX3N0eWxlID0zRCBjb25maWcub2JqZWN0X3N0b3JlX2NoZWNrX29sZF9z dHlsZQotICAgICAgICBzZWxmLmV4dHJhX2RpcnNbJ2pvYl93b3JrJ10gPTNEIGNvbmZpZy5qb2Jf d29ya2luZ19kaXJlY3RvcnkKLSAgICAgICAgc2VsZi5leHRyYV9kaXJzWyd0ZW1wJ10gPTNEIGNv bmZpZy5uZXdfZmlsZV9wYXRoCiAgICAgICAgICMgVGhlIG5ldyBjb25maWdfeG1sIG92ZXJyaWRl cyB1bml2ZXJzZSBzZXR0aW5ncy4KICAgICAgICAgaWYgY29uZmlnX3htbCBpcyBub3QgTm9uZToK ICAgICAgICAgICAgIGZvciBlIGluIGNvbmZpZ194bWw6CkBAIC0yNTIsNyArMjUyLDE3IEBACiAg ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbXBvc2VkIGRpcmVjdG9yeSBzdHJ1Y3R1cmUg ZG9lcyBub3QgaW5jbHVkZT0KIGEgaGFzaCBpZAogICAgICAgICAgICAgICAgICAgICAgICAgIChl LmcuLCAvZmlsZXMvZGF0YXNldF8xMC5kYXQgKG9sZCkgdnMuIC9maWxlcy8wMDA9Ci9kYXRhc2V0 XzEwLmRhdCAobmV3KSkKICAgICAgICAgIiIiCi0gICAgICAgIGJhc2UgPTNEIHNlbGYuZXh0cmFf ZGlycy5nZXQoYmFzZV9kaXIsIHNlbGYuZmlsZV9wYXRoKQorICAgICAgICBiYXNlID0zRCBvcy5w YXRoLmFic3BhdGgoc2VsZi5leHRyYV9kaXJzLmdldChiYXNlX2Rpciwgc2VsZi5maWxlX3A9CmF0 aCkpCisgICAgICAgICMgZXh0cmFfZGlyIHNob3VsZCBuZXZlciBiZSBjb25zdHJ1Y3RlZCBmcm9t IHByb3ZpZGVkIGRhdGEgYnV0IGp1c3QKKyAgICAgICAgIyBtYWtlIHN1cmUgdGhlcmUgYXJlIG5v IHNoZW5hbm5pZ2FucyBhZm9vdAorICAgICAgICBpZiBleHRyYV9kaXIgYW5kIGV4dHJhX2RpciAh PTNEIG9zLnBhdGgubm9ybXBhdGgoZXh0cmFfZGlyKToKKyAgICAgICAgICAgIGxvZy53YXJuaW5n KCdleHRyYV9kaXIgaXMgbm90IG5vcm1hbGl6ZWQ6ICVzJywgZXh0cmFfZGlyKQorICAgICAgICAg ICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIp CisgICAgICAgICMgZW5zdXJlIHRoYXQgYW55IHBhcmVudCBkaXJlY3RvcnkgcmVmZXJlbmNlcyBp biBhbHRfbmFtZSB3b3VsZCBub3QKKyAgICAgICAgIyByZXN1bHQgaW4gYSBwYXRoIG5vdCBjb250 YWluZWQgaW4gdGhlIGRpcmVjdG9yeSBwYXRoIGNvbnN0cnVjdGVkPQogaGVyZQorICAgICAgICBp ZiBhbHRfbmFtZSBhbmQgbm90IHNhZmVfcmVscGF0aChhbHRfbmFtZSk6CisgICAgICAgICAgICBs b2cud2FybmluZygnYWx0X25hbWUgd291bGQgbG9jYXRlIHBhdGggb3V0c2lkZSBkaXI6ICVzJywg YWx0Xz0KbmFtZSkKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0 ZWQgb2JqZWN0IGlzIGludmFsaWQiKQogICAgICAgICBpZiBvbGRfc3R5bGU6CiAgICAgICAgICAg ICBpZiBleHRyYV9kaXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcGF0aCA9M0Qgb3Mu cGF0aC5qb2luKGJhc2UsIGV4dHJhX2RpcikKQEAgLTYxOSw5ICs2MjksMTAgQEAKICAgICBlbGlm IHN0b3JlID0zRD0zRCAnaXJvZHMnOgogICAgICAgICBmcm9tIC5yb2RzIGltcG9ydCBJUk9EU09i amVjdFN0b3JlCiAgICAgICAgIHJldHVybiBJUk9EU09iamVjdFN0b3JlKGNvbmZpZz0zRGNvbmZp ZywgY29uZmlnX3htbD0zRGNvbmZpZ194bWwpCi0gICAgZWxpZiBzdG9yZSA9M0Q9M0QgJ3B1bHNh cic6Ci0gICAgICAgIGZyb20gLnB1bHNhciBpbXBvcnQgUHVsc2FyT2JqZWN0U3RvcmUKLSAgICAg ICAgcmV0dXJuIFB1bHNhck9iamVjdFN0b3JlKGNvbmZpZz0zRGNvbmZpZywgY29uZmlnX3htbD0z RGNvbmZpZ194bWwpCisgICAgIyBEaXNhYmxlIHRoZSBQdWxzYXIgb2JqZWN0IHN0b3JlIGZvciBu b3cgdW50aWwgaXQgcmVjZWl2ZXMgc29tZSBhdHRlbj0KdGlvbgorICAgICMgZWxpZiBzdG9yZSA9 M0Q9M0QgJ3B1bHNhcic6CisgICAgIyAgICBmcm9tIC5wdWxzYXIgaW1wb3J0IFB1bHNhck9iamVj dFN0b3JlCisgICAgIyAgICByZXR1cm4gUHVsc2FyT2JqZWN0U3RvcmUoY29uZmlnPTNEY29uZmln LCBjb25maWdfeG1sPTNEY29uZmlnX3htbCkKICAgICBlbHNlOgogICAgICAgICBsb2cuZXJyb3Io IlVucmVjb2duaXplZCBvYmplY3Qgc3RvcmUgZGVmaW5pdGlvbjogezB9Ii5mb3JtYXQoc3RvcmU9 CikpCj0yMAoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYw IC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBsaWIvZ2FsYXh5 L29iamVjdHN0b3JlL3JvZHMucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9yb2RzLnB5 CisrKyBiL2xpYi9nYWxheHkvb2JqZWN0c3RvcmUvcm9kcy5weQpAQCAtMTIsNyArMTIsOCBAQAog ZnJvbSBwb3NpeHBhdGggaW1wb3J0IGJhc2VuYW1lIGFzIHBhdGhfYmFzZW5hbWUKIGZyb20gcG9z aXhwYXRoIGltcG9ydCBkaXJuYW1lIGFzIHBhdGhfZGlybmFtZQo9MjAKLWZyb20gZ2FsYXh5LmV4 Y2VwdGlvbnMgaW1wb3J0IE9iamVjdE5vdEZvdW5kCitmcm9tIGdhbGF4eS5leGNlcHRpb25zIGlt cG9ydCBPYmplY3ROb3RGb3VuZCwgT2JqZWN0SW52YWxpZAorZnJvbSBnYWxheHkudXRpbCBpbXBv cnQgc2FmZV9yZWxwYXRoCiBmcm9tIC4ub2JqZWN0c3RvcmUgaW1wb3J0IERpc2tPYmplY3RTdG9y ZSwgT2JqZWN0U3RvcmUsIGxvY2FsX2V4dHJhX2RpcnMKPTIwCiB0cnk6CkBAIC03MSw2ICs3Miwy MCBAQAogICAgICAgICBsb2cuaW5mbyggImlST0RTIGRhdGEgZm9yIHRoaXMgaW5zdGFuY2Ugd2ls bCBiZSBzdG9yZWQgaW4gY29sbGVjdGk9Cm9uOiAlcywgcmVzb3VyY2U6ICVzIiwgc2VsZi5yb290 X2NvbGxlY3Rpb25fcGF0aCwgc2VsZi5kZWZhdWx0X3Jlc291cmNlICkKPTIwCiAgICAgZGVmIF9f Z2V0X3JvZHNfcGF0aCggc2VsZiwgb2JqLCBiYXNlX2Rpcj0zRE5vbmUsIGRpcl9vbmx5PTNERmFs c2UsIGV4dD0KcmFfZGlyPTNETm9uZSwgZXh0cmFfZGlyX2F0X3Jvb3Q9M0RGYWxzZSwgYWx0X25h bWU9M0ROb25lLCBzdHJpcF9kYXQ9M0RUcnVlPQosICoqa3dhcmdzICk6CisgICAgICAgICMgZXh0 cmFfZGlyIHNob3VsZCBuZXZlciBiZSBjb25zdHJ1Y3RlZCBmcm9tIHByb3ZpZGVkIGRhdGEgYnV0 IGp1c3QKKyAgICAgICAgIyBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHNoZW5hbm5pZ2FucyBhZm9v dAorICAgICAgICBpZiBleHRyYV9kaXIgYW5kIGV4dHJhX2RpciAhPTNEIG9zLnBhdGgubm9ybXBh dGgoZXh0cmFfZGlyKToKKyAgICAgICAgICAgIGxvZy53YXJuaW5nKCdleHRyYV9kaXIgaXMgbm90 IG5vcm1hbGl6ZWQ6ICVzJywgZXh0cmFfZGlyKQorICAgICAgICAgICAgcmFpc2UgT2JqZWN0SW52 YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIpCisgICAgICAgICMgZW5zdXJl IHRoYXQgYW55IHBhcmVudCBkaXJlY3RvcnkgcmVmZXJlbmNlcyBpbiBhbHRfbmFtZSB3b3VsZCBu b3QKKyAgICAgICAgIyByZXN1bHQgaW4gYSBwYXRoIG5vdCBjb250YWluZWQgaW4gdGhlIGRpcmVj dG9yeSBwYXRoIGNvbnN0cnVjdGVkPQogaGVyZQorICAgICAgICBpZiBhbHRfbmFtZToKKyAgICAg ICAgICAgIGlmIG5vdCBzYWZlX3JlbHBhdGgoYWx0X25hbWUpOgorICAgICAgICAgICAgICAgIGxv Zy53YXJuaW5nKCdhbHRfbmFtZSB3b3VsZCBsb2NhdGUgcGF0aCBvdXRzaWRlIGRpcjogJXMnLCA9 CmFsdF9uYW1lKQorICAgICAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1 ZXN0ZWQgb2JqZWN0IGlzIGludmFsaWQiKQorICAgICAgICAgICAgIyBhbHRfbmFtZSBjYW4gY29u dGFpbiBwYXJlbnQgZGlyZWN0b3J5IHJlZmVyZW5jZXMsIGJ1dCBpUk9EUyA9CndpbGwKKyAgICAg ICAgICAgICMgbm90IGZvbGxvdyB0aGVtLCBzbyBpZiB0aGV5IGFyZSB2YWxpZCB3ZSBub3JtYWxp emUgdGhlbSBvdXQKKyAgICAgICAgICAgIGFsdF9uYW1lID0zRCBvcy5wYXRoLm5vcm1wYXRoKGFs dF9uYW1lKQogICAgICAgICBwYXRoID0zRCAiIgogICAgICAgICBpZiBleHRyYV9kaXIgaXMgbm90 IE5vbmU6CiAgICAgICAgICAgICBwYXRoID0zRCBleHRyYV9kaXIKCmRpZmYgLXIgYzhhYjBmZTI4 NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3ZGZjMmFlNTZkZTEw Nz0KMmE0NWE2ODE4OTc5N2U5NzkgbGliL2dhbGF4eS9vYmplY3RzdG9yZS9zMy5weQotLS0gYS9s aWIvZ2FsYXh5L29iamVjdHN0b3JlL3MzLnB5CisrKyBiL2xpYi9nYWxheHkvb2JqZWN0c3RvcmUv czMucHkKQEAgLTEyLDggKzEyLDggQEAKPTIwCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGlt ZQo9MjAKLWZyb20gZ2FsYXh5LmV4Y2VwdGlvbnMgaW1wb3J0IE9iamVjdE5vdEZvdW5kCi1mcm9t IGdhbGF4eS51dGlsIGltcG9ydCBzdHJpbmdfYXNfYm9vbCwgdW1hc2tfZml4X3Blcm1zCitmcm9t IGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3ROb3RGb3VuZCwgT2JqZWN0SW52YWxpZAor ZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc3RyaW5nX2FzX2Jvb2wsIHVtYXNrX2ZpeF9wZXJtcywg c2FmZV9yZWxwYXRoCiBmcm9tIGdhbGF4eS51dGlsLmRpcmVjdG9yeV9oYXNoIGltcG9ydCBkaXJl Y3RvcnlfaGFzaF9pZAogZnJvbSBnYWxheHkudXRpbC5zbGVlcGVyIGltcG9ydCBTbGVlcGVyCiBm cm9tIC5zM19tdWx0aXBhcnRfdXBsb2FkIGltcG9ydCBtdWx0aXBhcnRfdXBsb2FkCkBAIC00NSw3 ICs0NSw2IEBACiAgICAgICAgIGlmIGJvdG8gaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIEV4 Y2VwdGlvbihOT19CT1RPX0VSUk9SX01FU1NBR0UpCiAgICAgICAgIHN1cGVyKFMzT2JqZWN0U3Rv cmUsIHNlbGYpLl9faW5pdF9fKGNvbmZpZywgY29uZmlnX3htbCkKLSAgICAgICAgc2VsZi5jb25m aWcgPTNEIGNvbmZpZwogICAgICAgICBzZWxmLnN0YWdpbmdfcGF0aCA9M0Qgc2VsZi5jb25maWcu ZmlsZV9wYXRoCiAgICAgICAgIHNlbGYudHJhbnNmZXJfcHJvZ3Jlc3MgPTNEIDAKICAgICAgICAg c2VsZi5fcGFyc2VfY29uZmlnX3htbChjb25maWdfeG1sKQpAQCAtMjA5LDYgKzIwOCwyMCBAQAog ICAgICAgICAgICAgICAgIHVtYXNrX2ZpeF9wZXJtcyggcGF0aCwgc2VsZi5jb25maWcudW1hc2ss IDA2NjYsIHNlbGYuY29uZmk9CmcuZ2lkICkKPTIwCiAgICAgZGVmIF9jb25zdHJ1Y3RfcGF0aChz ZWxmLCBvYmosIGJhc2VfZGlyPTNETm9uZSwgZGlyX29ubHk9M0ROb25lLCBleHRyYT0KX2Rpcj0z RE5vbmUsIGV4dHJhX2Rpcl9hdF9yb290PTNERmFsc2UsIGFsdF9uYW1lPTNETm9uZSwgb2JqX2Rp cj0zREZhbHNlLCAqPQoqa3dhcmdzKToKKyAgICAgICAgIyBleHRyYV9kaXIgc2hvdWxkIG5ldmVy IGJlIGNvbnN0cnVjdGVkIGZyb20gcHJvdmlkZWQgZGF0YSBidXQganVzdAorICAgICAgICAjIG1h a2Ugc3VyZSB0aGVyZSBhcmUgbm8gc2hlbmFubmlnYW5zIGFmb290CisgICAgICAgIGlmIGV4dHJh X2RpciBhbmQgZXh0cmFfZGlyICE9M0Qgb3MucGF0aC5ub3JtcGF0aChleHRyYV9kaXIpOgorICAg ICAgICAgICAgbG9nLndhcm5pbmcoJ2V4dHJhX2RpciBpcyBub3Qgbm9ybWFsaXplZDogJXMnLCBl eHRyYV9kaXIpCisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVk IG9iamVjdCBpcyBpbnZhbGlkIikKKyAgICAgICAgIyBlbnN1cmUgdGhhdCBhbnkgcGFyZW50IGRp cmVjdG9yeSByZWZlcmVuY2VzIGluIGFsdF9uYW1lIHdvdWxkIG5vdAorICAgICAgICAjIHJlc3Vs dCBpbiBhIHBhdGggbm90IGNvbnRhaW5lZCBpbiB0aGUgZGlyZWN0b3J5IHBhdGggY29uc3RydWN0 ZWQ9CiBoZXJlCisgICAgICAgIGlmIGFsdF9uYW1lOgorICAgICAgICAgICAgaWYgbm90IHNhZmVf cmVscGF0aChhbHRfbmFtZSk6CisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1l IHdvdWxkIGxvY2F0ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsID0KYWx0X25hbWUpCisgICAgICAg ICAgICAgICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52 YWxpZCIpCisgICAgICAgICAgICAjIGFsdF9uYW1lIGNhbiBjb250YWluIHBhcmVudCBkaXJlY3Rv cnkgcmVmZXJlbmNlcywgYnV0IFMzIHdpbD0KbCBub3QKKyAgICAgICAgICAgICMgZm9sbG93IHRo ZW0sIHNvIGlmIHRoZXkgYXJlIHZhbGlkIHdlIG5vcm1hbGl6ZSB0aGVtIG91dAorICAgICAgICAg ICAgYWx0X25hbWUgPTNEIG9zLnBhdGgubm9ybXBhdGgoYWx0X25hbWUpCiAgICAgICAgIHJlbF9w YXRoID0zRCBvcy5wYXRoLmpvaW4oKmRpcmVjdG9yeV9oYXNoX2lkKG9iai5pZCkpCiAgICAgICAg IGlmIGV4dHJhX2RpciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIGV4dHJhX2Rpcl9hdF9y b290OgoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1y IDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBsaWIvZ2FsYXh5L3Rv b2xzL19faW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkKKysrIGIv bGliL2dhbGF4eS90b29scy9fX2luaXRfXy5weQpAQCAtMTUxNyw2ICsxNTE3LDggQEAKICAgICAg ICAgICAgICAgICAgICAgICAgIGdyb3VwX2Vycm9yc1stMV0gPTNEIHsgJ19faW5kZXhfXyc6ICdD YW5ub3QgYWRkIHJlPQpwZWF0IChtYXggc2l6ZT0zRCVpKS4nICUgaW5wdXQubWF4IH0KICAgICAg ICAgICAgICAgICAgICAgICAgIGFueV9ncm91cF9lcnJvcnMgPTNEIFRydWUKICAgICAgICAgICAg ICAgICAgICAgcmVwX2luZGV4ICs9M0QgMQorICAgICAgICAgICAgICAgIGlmIGFueV9ncm91cF9l cnJvcnM6CisgICAgICAgICAgICAgICAgICAgIGVycm9yc1sgaW5wdXQubmFtZSBdID0zRCBncm91 cF9lcnJvcnMKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSggaW5wdXQsIENvbmRpdGlvbmFs ICk6CiAgICAgICAgICAgICAgICAgZ3JvdXBfc3RhdGUgPTNEIHN0YXRlW2lucHV0Lm5hbWVdCiAg ICAgICAgICAgICAgICAgZ3JvdXBfcHJlZml4ID0zRCAiJXN8IiAlICgga2V5ICkKCmRpZmYgLXIg YzhhYjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3ZGZj MmFlNTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgbGliL2dhbGF4eS90b29scy9pbXBfZXhwL19f aW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC9fX2luaXRfXy5weQorKysg Yi9saWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAvX19pbml0X18ucHkKQEAgLTUsNiArNSw3IEBACiBp bXBvcnQganNvbgogaW1wb3J0IGRhdGV0aW1lCiBmcm9tIGdhbGF4eSBpbXBvcnQgbW9kZWwKK2Zy b20gZ2FsYXh5LmV4Y2VwdGlvbnMgaW1wb3J0IE1hbGZvcm1lZENvbnRlbnRzCiBmcm9tIGdhbGF4 eS5tb2RlbC5pdGVtX2F0dHJzIGltcG9ydCBVc2VzQW5ub3RhdGlvbnMKIGZyb20gZ2FsYXh5Lm1v ZGVsLm9ybSBpbXBvcnQgZWFnZXJsb2FkLCBlYWdlcmxvYWRfYWxsCiBmcm9tIGdhbGF4eS50b29s cy5wYXJhbWV0ZXJzLmJhc2ljIGltcG9ydCBVbnZhbGlkYXRlZFZhbHVlCkBAIC0xOTIsOSArMTkz LDkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgZGF0YXNldF9hdHRycy5nZXQoJ2V4cG9ydGVk JywgVHJ1ZSkgaXMgVHJ1ZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgRG8gc2VjdXJpdHkg Y2hlY2sgYW5kIG1vdmUvY29weSBkYXRhc2V0IGRhdGEuCiAgICAgICAgICAgICAgICAgICAgICAg ICB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lID0zRCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgb3MucGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpvaW4oIGFyY2hpdmVfZGlyLCBkYT0KdGFzZXRf YXR0cnNbJ2ZpbGVfbmFtZSddICkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBh dGgucmVhbHBhdGgoIG9zLnBhdGguYWJzcGF0aCggb3MucGF0aC5qb2k9Cm4oIGFyY2hpdmVfZGly LCBkYXRhc2V0X2F0dHJzWydmaWxlX25hbWUnXSApICkgKQogICAgICAgICAgICAgICAgICAgICAg ICAgaWYgbm90IGZpbGVfaW5fZGlyKCB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lLCBvcy5wYXQ9Cmgu am9pbiggYXJjaGl2ZV9kaXIsICJkYXRhc2V0cyIgKSApOgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJhaXNlIEV4Y2VwdGlvbiggIkludmFsaWQgZGF0YXNldCBwYXRoOiAlcyIgJSA9CnRl bXBfZGF0YXNldF9maWxlX25hbWUgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNl IE1hbGZvcm1lZENvbnRlbnRzKCAiSW52YWxpZCBkYXRhc2V0IHBhdGg9CjogJXMiICUgdGVtcF9k YXRhc2V0X2ZpbGVfbmFtZSApCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkYXRhc2V0c191 c2FnZV9jb3VudHNbIHRlbXBfZGF0YXNldF9maWxlX25hbWUgXT0KID0zRD0zRCAxOgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5tb3ZlKCB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1l LCBoZGEuZmlsZV89Cm5hbWUgKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTMx Niw2ICszMTcsNyBAQAogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAg ICAgICAgICBqaWhhLmpvYi5zdGRlcnIgKz0zRCAiRXJyb3IgY2xlYW5pbmcgdXAgaGlzdG9yeSBp bXBvcnQgam9iPQo6ICVzIiAlIGUKICAgICAgICAgICAgICAgICBzZWxmLnNhX3Nlc3Npb24uZmx1 c2goKQorICAgICAgICAgICAgICAgIHJhaXNlCj0yMAo9MjAKIGNsYXNzIEpvYkV4cG9ydEhpc3Rv cnlBcmNoaXZlV3JhcHBlciggb2JqZWN0LCBVc2VzQW5ub3RhdGlvbnMgKToKCmRpZmYgLXIgYzhh YjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3ZGZjMmFl NTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgbGliL2dhbGF4eS90b29scy9pbXBfZXhwL3VucGFj a190YXJfZ3pfYXJjaGl2ZS5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAvdW5wYWNr X3Rhcl9nel9hcmNoaXZlLnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC91bnBhY2tf dGFyX2d6X2FyY2hpdmUucHkKQEAgLTYsNiArNiw3IEBACiAgICAgLS1bdXJsfGZpbGVdIHNvdXJj ZSB0eXBlLCBlaXRoZXIgYSBVUkwgb3IgYSBmaWxlLgogIiIiCj0yMAoraW1wb3J0IG9zCiBpbXBv cnQgc3lzCiBpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCB0YXJmaWxlCkBAIC00Myw2ICs0NCwyMiBA QAogICAgICAgICByZXR1cm4gTm9uZQo9MjAKPTIwCitkZWYgY2hlY2tfYXJjaGl2ZSggYXJjaGl2 ZV9maWxlLCBkZXN0X2RpciApOgorICAgICIiIgorICAgIEVuc3VyZSB0aGF0IGEgdGFyIGFyY2hp dmUgaGFzIG5vIGFic29sdXRlIHBhdGhzIG9yIHJlbGF0aXZlIHBhdGhzIG91dHM9CmlkZQorICAg IHRoZSBhcmNoaXZlLgorICAgICIiIgorICAgIHdpdGggdGFyZmlsZS5vcGVuKCBhcmNoaXZlX2Zp bGUsIG1vZGU9M0QncjpneicgKSBhcyBhcmNoaXZlX2ZwOgorICAgICAgICBmb3IgYXJjX3BhdGgg aW4gYXJjaGl2ZV9mcC5nZXRuYW1lcygpOgorICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGgubm9y bXBhdGgoCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKAorICAgICAgICAgICAgICAgICAg ICBkZXN0X2RpciwKKyAgICAgICAgICAgICAgICAgICAgYXJjX3BhdGgKKyAgICAgICAgICAgICAg ICApICkuc3RhcnRzd2l0aCggZGVzdF9kaXIucnN0cmlwKG9zLnNlcCkgKyBvcy5zZXAgKSwgXAor ICAgICAgICAgICAgICAgICJBcmNoaXZlIG1lbWJlciB3b3VsZCBleHRyYWN0IG91dHNpZGUgdGFy Z2V0IGRpcmVjdG9yeTogJXM9CiIgJSBhcmNfcGF0aAorICAgIHJldHVybiBUcnVlCisKKwogZGVm IHVucGFja19hcmNoaXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGlyICk6CiAgICAgIiIiCiAgICAg VW5wYWNrIGEgdGFyIGFuZC9vciBnemlwcGVkIGFyY2hpdmUgaW50byBhIGRlc3RpbmF0aW9uIGRp cmVjdG9yeS4KQEAgLTUxLDEzICs2OCw4IEBACiAgICAgYXJjaGl2ZV9mcC5leHRyYWN0YWxsKCBw YXRoPTNEZGVzdF9kaXIgKQogICAgIGFyY2hpdmVfZnAuY2xvc2UoKQo9MjAKLWlmIF9fbmFtZV9f ID0zRD0zRCAiX19tYWluX18iOgotICAgICMgUGFyc2UgY29tbWFuZCBsaW5lLgotICAgIHBhcnNl ciA9M0Qgb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKLSAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1V JywgJy0tdXJsJywgZGVzdD0zRCdpc191cmwnLCBhY3Rpb249M0Qic3RvcmVfdHJ1PQplIiwgaGVs cD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oICctRicsICct LWZpbGUnLCBkZXN0PTNEJ2lzX2ZpbGUnLCBhY3Rpb249M0Qic3RvcmVfdD0KcnVlIiwgaGVscD0z RCdTb3VyY2UgaXMgYSBVUkwuJyApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oICctZScsICctLWVu Y29kZWQnLCBkZXN0PTNEJ2lzX2I2NGVuY29kZWQnLCBhY3Rpb249Cj0zRCJzdG9yZV90cnVlIiwg ZGVmYXVsdD0zREZhbHNlLCBoZWxwPTNEJ1NvdXJjZSBhbmQgZGVzdGluYXRpb24gZGlyIHZhbHVl cz0KIGFyZSBiYXNlNjQgZW5jb2RlZC4nICkKLSAgICAob3B0aW9ucywgYXJncykgPTNEIHBhcnNl ci5wYXJzZV9hcmdzKCkKKworZGVmIG1haW4ob3B0aW9ucywgYXJncyk6CiAgICAgaXNfdXJsID0z RCBib29sKCBvcHRpb25zLmlzX3VybCApCiAgICAgaXNfZmlsZSA9M0QgYm9vbCggb3B0aW9ucy5p c19maWxlICkKICAgICBhcmNoaXZlX3NvdXJjZSwgZGVzdF9kaXIgPTNEIGFyZ3MKQEAgLTY2LDE0 ICs3OCwyNSBAQAogICAgICAgICBhcmNoaXZlX3NvdXJjZSA9M0QgYjY0ZGVjb2RlKCBhcmNoaXZl X3NvdXJjZSApCiAgICAgICAgIGRlc3RfZGlyID0zRCBiNjRkZWNvZGUoIGRlc3RfZGlyICkKPTIw CisgICAgIyBHZXQgYXJjaGl2ZSBmcm9tIFVSTC4KKyAgICBpZiBpc191cmw6CisgICAgICAgIGFy Y2hpdmVfZmlsZSA9M0QgdXJsX3RvX2ZpbGUoIGFyY2hpdmVfc291cmNlLCB0ZW1wZmlsZS5OYW1l ZFRlbXBvcj0KYXJ5RmlsZSggZGlyPTNEZGVzdF9kaXIgKS5uYW1lICkKKyAgICBlbGlmIGlzX2Zp bGU6CisgICAgICAgIGFyY2hpdmVfZmlsZSA9M0QgYXJjaGl2ZV9zb3VyY2UKKworICAgICMgVW5w YWNrIGFyY2hpdmUuCisgICAgY2hlY2tfYXJjaGl2ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciAp CisgICAgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVfZmlsZSwgZGVzdF9kaXIgKQorCisKK2lmIF9f bmFtZV9fID0zRD0zRCAiX19tYWluX18iOgorICAgICMgUGFyc2UgY29tbWFuZCBsaW5lLgorICAg IHBhcnNlciA9M0Qgb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX29wdGlv biggJy1VJywgJy0tdXJsJywgZGVzdD0zRCdpc191cmwnLCBhY3Rpb249M0Qic3RvcmVfdHJ1PQpl IiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCisgICAgcGFyc2VyLmFkZF9vcHRpb24oICct RicsICctLWZpbGUnLCBkZXN0PTNEJ2lzX2ZpbGUnLCBhY3Rpb249M0Qic3RvcmVfdD0KcnVlIiwg aGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCisgICAgcGFyc2VyLmFkZF9vcHRpb24oICctZScs ICctLWVuY29kZWQnLCBkZXN0PTNEJ2lzX2I2NGVuY29kZWQnLCBhY3Rpb249Cj0zRCJzdG9yZV90 cnVlIiwgZGVmYXVsdD0zREZhbHNlLCBoZWxwPTNEJ1NvdXJjZSBhbmQgZGVzdGluYXRpb24gZGly IHZhbHVlcz0KIGFyZSBiYXNlNjQgZW5jb2RlZC4nICkKKyAgICAob3B0aW9ucywgYXJncykgPTNE IHBhcnNlci5wYXJzZV9hcmdzKCkKICAgICB0cnk6Ci0gICAgICAgICMgR2V0IGFyY2hpdmUgZnJv bSBVUkwuCi0gICAgICAgIGlmIGlzX3VybDoKLSAgICAgICAgICAgIGFyY2hpdmVfZmlsZSA9M0Qg dXJsX3RvX2ZpbGUoIGFyY2hpdmVfc291cmNlLCB0ZW1wZmlsZS5OYW1lZFRlPQptcG9yYXJ5Rmls ZSggZGlyPTNEZGVzdF9kaXIgKS5uYW1lICkKLSAgICAgICAgZWxpZiBpc19maWxlOgotICAgICAg ICAgICAgYXJjaGl2ZV9maWxlID0zRCBhcmNoaXZlX3NvdXJjZQotCi0gICAgICAgICMgVW5wYWNr IGFyY2hpdmUuCi0gICAgICAgIHVucGFja19hcmNoaXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGly ICkKKyAgICAgICAgbWFpbihvcHRpb25zLCBhcmdzKQogICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6 CiAgICAgICAgIHByaW50ICJFcnJvciB1bnBhY2tpbmcgdGFyL2d6IGFyY2hpdmU6ICVzIiAlIGUs IHN5cy5zdGRlcnIKClRoaXMgZGlmZiBpcyBzbyBiaWcgdGhhdCB3ZSBuZWVkZWQgdG8gdHJ1bmNh dGUgdGhlIHJlbWFpbmRlci4KCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNl bnRyYWwvY29tbWl0cy8zNmMwNTI2MTM0MzQvCkNoYW5nZXNldDogICAzNmMwNTI2MTM0MzQKQnJh bmNoOiAgICAgIHJlbGVhc2VfMTUuMTAKVXNlcjogICAgICAgIG5hdGVmb28KRGF0ZTogICAgICAg IDIwMTYtMDItMjQgMjE6MDE6MjgrMDA6MDAKU3VtbWFyeTogICAgIFJlbGVhc2UgMTUuMTAuMgpB ZmZlY3RlZCAjOiAgNzUgZmlsZXMKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRi YmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2Fh NTUgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9jb2xsZWN0aW9uL2xpc3QtY29sbGVjdGlvbi1j cmVhPQp0b3IuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9jb2xsZWN0aW9uL2xp c3QtY29sbGVjdGlvbi1jcmVhdG9yLmpzCisrKyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMv Y29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcwpAQCAtMTAwMyw3ICsxMDAzLDcg QEAKICAgICAgICAgdGl0bGUgICA6IG9wdGlvbnMudGl0bGUgfHwgX2woICdDcmVhdGUgYSBjb2xs ZWN0aW9uJyApLAogICAgICAgICBib2R5ICAgIDogY3JlYXRvci4kZWwsCiAgICAgICAgIHdpZHRo ICAgOiAnODAlJywKLSAgICAgICAgaGVpZ2h0ICA6ICdtaW4tY29udGVudCcsCisgICAgICAgIGhl aWdodCAgOiAnMTAwJScsCiAgICAgICAgIGNsb3NpbmdfZXZlbnRzOiB0cnVlCiAgICAgfSk7CiAg ICAgY3JlYXRvci5yZW5kZXIoKTsKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRi YmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2Fh NTUgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9saWJyYXJ5L2xpYnJhcnktZm9sZGVydG9vbGJh ci12PQppZXcuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9saWJyYXJ5L2xpYnJh cnktZm9sZGVydG9vbGJhci12aWV3LmpzCisrKyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMv bGlicmFyeS9saWJyYXJ5LWZvbGRlcnRvb2xiYXItdmlldy5qcwpAQCAtNTUwLDcgKzU1MCwxMSBA QAogICAgICAgfSwKICAgICAgIGVycm9yOiBmdW5jdGlvbihtb2RlbCwgcmVzcG9uc2UpewogICAg ICAgICBpZiAodHlwZW9mIHJlc3BvbnNlLnJlc3BvbnNlSlNPTiAhPTNEPTNEICJ1bmRlZmluZWQi KXsKLSAgICAgICAgICBtb2RfdG9hc3RyLmVycm9yKHJlc3BvbnNlLnJlc3BvbnNlSlNPTi5lcnJf bXNnKTsKKyAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VKU09OLmVycl9jb2RlID0zRD0z RD0zRCA0MDQwMDEpeworICAgICAgICAgICAgbW9kX3RvYXN0ci53YXJuaW5nKHJlc3BvbnNlLnJl c3BvbnNlSlNPTi5lcnJfbXNnKTsKKyAgICAgICAgICB9IGVsc2V7CisgICAgICAgICAgICBtb2Rf dG9hc3RyLmVycm9yKHJlc3BvbnNlLnJlc3BvbnNlSlNPTi5lcnJfbXNnKTsKKyAgICAgICAgICB9 CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgbW9kX3RvYXN0ci5lcnJvcignQW4gZXJyb3Ig b2N1cnJlZC4nKTsKICAgICAgICAgfQoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNh ZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3 YWE1NSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvdXRpbHMvdXBsb2FkYm94LmpzCi0tLSBhL2NsaWVu dC9nYWxheHkvc2NyaXB0cy91dGlscy91cGxvYWRib3guanMKKysrIGIvY2xpZW50L2dhbGF4eS9z Y3JpcHRzL3V0aWxzL3VwbG9hZGJveC5qcwpAQCAtMTE3LDEwICsxMTcsMTAgQEAKPTIwCiAgICAg ICAgIC8vIGFwcGVuZCBoaWRkZW4gdXBsb2FkIGZpZWxkCiAgICAgICAgIHZhciAkaW5wdXQgPTNE ICQoJzxpbnB1dCB0eXBlPTNEImZpbGUiIHN0eWxlPTNEImRpc3BsYXk6IG5vbmUiICcgKz0KIChv cHRzLm11bHRpcGxlICYmICdtdWx0aXBsZScgfHwgJycpICsgJy8+Jyk7Ci0gICAgICAgIGVsLmFw cGVuZCgkaW5wdXQpLmNoYW5nZShmdW5jdGlvbiAoZSkgeworICAgICAgICBlbC5hcHBlbmQoJGlu cHV0LmNoYW5nZShmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgb3B0cy5vbmNoYW5nZShlLnRh cmdldC5maWxlcyk7CiAgICAgICAgICAgICAkKHRoaXMpLnZhbCgnJyk7Ci0gICAgICAgIH0pOwor ICAgICAgICB9KSk7Cj0yMAogICAgICAgICAvLyBkcmFnL2Ryb3AgZXZlbnRzCiAgICAgICAgIGVs Lm9uKCdkcm9wJywgZnVuY3Rpb24gKGUpIHsKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0 NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUx OWE5N2FhNTUgZWdncy5pbmkKLS0tIGEvZWdncy5pbmkKKysrIGIvZWdncy5pbmkKQEAgLTMwLDcg KzMwLDcgQEAKIDsgbXNncGFja19weXRob24gPTNEIDAuMi40Cj0yMAogW2VnZ3M6bm9wbGF0Zm9y bV0KLWFtcXAgPTNEIDEuNC42CithbXFwID0zRCAxLjQuOAogYW55anNvbiA9M0QgMC4zLjMKIEJl YWtlciA9M0QgMS40CiBiaW9ibGVuZCA9M0QgMC41LjIKQEAgLTQwLDcgKzQwLDcgQEAKIGRybWFh ID0zRCAwLjcuNgogRmFicmljID0zRCAxLjcuMAogaW1wb3J0bGliID0zRCAxLjAuMwota29tYnUg PTNEIDMuMC4yNAora29tYnUgPTNEIDMuMC4zMAogbHJ1Y2FjaGUgPTNEIDAuMgogTWFrbyA9M0Qg MC40LjEKIG1vY2sgPTNEIDEuMC4xCgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2Fk YmJjNDEwYzU1NTJkMWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdh YTU1IGxpYi9nYWxheHkvY29uZmlnLnB5Ci0tLSBhL2xpYi9nYWxheHkvY29uZmlnLnB5CisrKyBi L2xpYi9nYWxheHkvY29uZmlnLnB5CkBAIC0yNTMsNyArMjUzLDkgQEAKICAgICAgICAgc2VsZi5s b2dfZXZlbnRzID0zRCBzdHJpbmdfYXNfYm9vbCgga3dhcmdzLmdldCggJ2xvZ19ldmVudHMnLCAn RmFsPQpzZScgKSApCiAgICAgICAgIHNlbGYuc2FuaXRpemVfYWxsX2h0bWwgPTNEIHN0cmluZ19h c19ib29sKCBrd2FyZ3MuZ2V0KCAnc2FuaXRpemVfYT0KbGxfaHRtbCcsIFRydWUgKSApCiAgICAg ICAgIHNlbGYuc2FuaXRpemVfd2hpdGVsaXN0X2ZpbGUgPTNEIHJlc29sdmVfcGF0aCgga3dhcmdz LmdldCggJ3Nhbml0aT0KemVfd2hpdGVsaXN0X2ZpbGUnLCAiY29uZmlnL3Nhbml0aXplX3doaXRl bGlzdC50eHQiICksIHNlbGYucm9vdCApCi0gICAgICAgIHNlbGYucmVsb2FkX3Nhbml0aXplX3do aXRlbGlzdCgpCisgICAgICAgIHNlbGYuc2FuaXRpemVfd2hpdGVsaXN0ID0zRCBbXQorICAgICAg ICBpZiBrd2FyZ3MuZ2V0KCdzYW5pdGl6ZV93aGl0ZWxpc3RfZmlsZScsIE5vbmUpIGlzIG5vdCBO b25lOgorICAgICAgICAgICAgc2VsZi5yZWxvYWRfc2FuaXRpemVfd2hpdGVsaXN0KCkKICAgICAg ICAgc2VsZi5zZXJ2ZV94c3NfdnVsbmVyYWJsZV9taW1ldHlwZXMgPTNEIHN0cmluZ19hc19ib29s KCBrd2FyZ3MuZ2V0PQooICdzZXJ2ZV94c3NfdnVsbmVyYWJsZV9taW1ldHlwZXMnLCBGYWxzZSAp ICkKICAgICAgICAgc2VsZi50cnVzdF9pcHl0aG9uX25vdGVib29rX2NvbnZlcnNpb24gPTNEIHN0 cmluZ19hc19ib29sKCBrd2FyZ3MuPQpnZXQoICd0cnVzdF9pcHl0aG9uX25vdGVib29rX2NvbnZl cnNpb24nLCBGYWxzZSApICkKICAgICAgICAgc2VsZi5lbmFibGVfb2xkX2Rpc3BsYXlfYXBwbGlj YXRpb25zID0zRCBzdHJpbmdfYXNfYm9vbCgga3dhcmdzLmdlPQp0KCAiZW5hYmxlX29sZF9kaXNw bGF5X2FwcGxpY2F0aW9ucyIsICJUcnVlIiApICkKQEAgLTQ3NCw3ICs0NzYsNyBAQAogICAgICAg ICAgICAgICAgICAgICBpZiBub3QgbGluZS5zdGFydHN3aXRoKCIjIik6CiAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLnNhbml0aXplX3doaXRlbGlzdC5hcHBlbmQobGluZS5zdHJpcCgpKQog ICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIGxvZy53YXJuaW5nKCJTYW5pdGl6 ZSBsb2cgZmlsZSAlcyBkb2VzIG5vdCBleGlzdCwgY29udGludWluZyB3PQppdGggbm8gdG9vbHMg d2hpdGVsaXN0ZWQuIikKKyAgICAgICAgICAgIGxvZy53YXJuaW5nKCJTYW5pdGl6ZSBsb2cgZmls ZSAlcyBkb2VzIG5vdCBleGlzdCwgY29udGludWluZyB3PQppdGggbm8gdG9vbHMgd2hpdGVsaXN0 ZWQuIiwgc2VsZi5zYW5pdGl6ZV93aGl0ZWxpc3RfZmlsZSkKPTIwCiAgICAgZGVmIF9fcGFyc2Vf Y29uZmlnX2ZpbGVfb3B0aW9ucyggc2VsZiwga3dhcmdzICk6CiAgICAgICAgICIiIgoKZGlmZiAt ciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQz NDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvZ2FsYXh5L2RhdGF0eXBlcy9pbnRl cnZhbC5weQotLS0gYS9saWIvZ2FsYXh5L2RhdGF0eXBlcy9pbnRlcnZhbC5weQorKysgYi9saWIv Z2FsYXh5L2RhdGF0eXBlcy9pbnRlcnZhbC5weQpAQCAtMTUyMCwxNCArMTUyMCwyMSBAQAogICAg ICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICBsaW5lID0zRCBmaC5yZWFkbGlu ZSgpCiAgICAgICAgICAgICAgICAgbGluZSA9M0QgbGluZS5zdHJpcCgpCisgICAgICAgICAgICAg ICAgIyBUaGUgZmlyc3QgbGluZSBpcyBhbHdheXMgYSBjb21tZW50IGxpa2UgdGhpczoKKyAgICAg ICAgICAgICAgICAjIDIwMTUtMTEtMjMgMjA6MTg6NTYuNTE7aW5wdXQuYmFtO1JFQUQxCisgICAg ICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgICAg IGNvdW50ICs9M0QgMQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAg ICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgICAgICAjIEVPRgogICAgICAgICAgICAg ICAgICAgICBpZiBjb3VudCA+IDE6CisgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBzZWNv bmQgbGluZSBpcyBhbHdheXMgdGhlIGxhYmVsczoKKyAgICAgICAgICAgICAgICAgICAgICAgICMg Y2hyb20gaW5kZXggZm9yd2FyZCByZXZlcnNlIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAg ICAjIFdlIG5lZWQgYXQgbGVhc3QgdGhlIGNvbHVtbiBsYWJlbHMgYW5kIGEgZGF0YSBsaT0KbmUu CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICAgICAgICAgICAg ICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgICAgICAjIFNraXAgZmlyc3QgbGluZS4KLSAgICAg ICAgICAgICAgICBpZiBjb3VudCA+IDA6CisgICAgICAgICAgICAgICAgaWYgY291bnQgPiAxOgog ICAgICAgICAgICAgICAgICAgICBpdGVtcyA9M0QgbGluZS5zcGxpdCgnXHQnKQogICAgICAgICAg ICAgICAgICAgICBpZiBsZW4oaXRlbXMpICE9M0QgNToKICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBGYWxzZQoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1 NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIv Z2FsYXh5L2V4Y2VwdGlvbnMvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS9leGNlcHRpb25z L19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvZXhjZXB0aW9ucy9fX2luaXRfXy5weQpAQCAt NzAsNiArNzAsMTEgQEAKICAgICBlcnJfY29kZSA9M0QgZXJyb3JfY29kZXMuTUFMRk9STUVEX0lE Cj0yMAo9MjAKK2NsYXNzIE1hbGZvcm1lZENvbnRlbnRzKCBNZXNzYWdlRXhjZXB0aW9uICk6Cisg ICAgc3RhdHVzX2NvZGUgPTNEIDQwMAorICAgIGVycl9jb2RlID0zRCBlcnJvcl9jb2Rlcy5NQUxG T1JNRURfQ09OVEVOVFMKKworCiBjbGFzcyBVbmtub3duQ29udGVudHNUeXBlKCBNZXNzYWdlRXhj ZXB0aW9uICk6CiAgICAgc3RhdHVzX2NvZGUgPTNEIDQwMAogICAgIGVycl9jb2RlID0zRCBlcnJv cl9jb2Rlcy5VTktOT1dOX0NPTlRFTlRTX1RZUEUKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2Mw OTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRi MWUxOWE5N2FhNTUgbGliL2dhbGF4eS9leGNlcHRpb25zL2Vycm9yX2NvZGVzLmpzb24KLS0tIGEv bGliL2dhbGF4eS9leGNlcHRpb25zL2Vycm9yX2NvZGVzLmpzb24KKysrIGIvbGliL2dhbGF4eS9l eGNlcHRpb25zL2Vycm9yX2NvZGVzLmpzb24KQEAgLTYxLDEwICs2MSwxNSBAQAogICAgIH0sCiAg ICB7CiAgICAgIm5hbWUiOiAiVVNFUl9UT09MX01FVEFfUEFSQU1FVEVSX1BST0JMRU0iLAotICAg ICJjb2RlIjogNDAwMDExLAorICAgICJjb2RlIjogNDAwMDEyLAogICAgICJtZXNzYWdlIjogIlN1 cHBsaWVkIGluY29ycmVjdCBvciBpbmNvbXBhdGlibGUgdG9vbCBtZXRhIHBhcmFtZXRlcnMuIgog ICAgfSwKICAgIHsKKyAgICAibmFtZSI6ICJNQUxGT1JNRURfQ09OVEVOVFMiLAorICAgICJjb2Rl IjogNDAwMDEzLAorICAgICJtZXNzYWdlIjogIlRoZSBjb250ZW50cyBvZiB0aGUgcmVxdWVzdCBh cmUgbWFsZm9ybWVkLiIKKyAgICB9LAorICAgewogICAgICJuYW1lIjogIlVTRVJfQVVUSEVOVElD QVRJT05fRkFJTEVEIiwKICAgICAiY29kZSI6IDQwMTAwMSwKICAgICAibWVzc2FnZSI6ICJBdXRo ZW50aWNhdGlvbiBmYWlsZWQsIGludmFsaWQgY3JlZGVudGlhbHMgc3VwcGxpZWQuIgoKZGlmZiAt ciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQz NDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvZ2FsYXh5L2pvYnMvcnVubmVycy9f X2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L2pvYnMvcnVubmVycy9fX2luaXRfXy5weQorKysg Yi9saWIvZ2FsYXh5L2pvYnMvcnVubmVycy9fX2luaXRfXy5weQpAQCAtMzE5LDcgKzMxOSw3IEBA CiAgICAgICAgICAgICAjIHN5bmMgZmlsZSBzeXN0ZW0gdG8gYXZvaWQgIlRleHQgZmlsZSBidXN5 IiBwcm9ibGVtcy4KICAgICAgICAgICAgICMgVGhlc2UgaGF2ZSBvY2N1cnJlZCBib3RoIGluIERv Y2tlciBjb250YWluZXJzIGFuZCBvbiBFQzIgY2x1PQpzdGVycwogICAgICAgICAgICAgIyB1bmRl ciBoaWdoIGxvYWQuCi0gICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyJzeW5jIl0p CisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyIvYmluL3N5bmMiXSkKICAgICAg ICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHBhc3MKPTIwCgpkaWZmIC1yIGQ2MmYz ZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBm OWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxheHkvam9icy9ydW5uZXJzL3B1bHNhci5w eQotLS0gYS9saWIvZ2FsYXh5L2pvYnMvcnVubmVycy9wdWxzYXIucHkKKysrIGIvbGliL2dhbGF4 eS9qb2JzL3J1bm5lcnMvcHVsc2FyLnB5CkBAIC02OSw2ICs2OSwxMCBAQAogICAgICAgICBtYXA9 M0RzcGVjcy50b19ib29sX29yX25vbmUsCiAgICAgICAgIGRlZmF1bHQ9M0ROb25lCiAgICAgKSwK KyAgICBhbXFwX2Fja19yZXB1Ymxpc2hfdGltZT0zRGRpY3QoCisgICAgICAgIG1hcD0zRGxhbWJk YSB2YWw6IE5vbmUgaWYgdmFsID0zRD0zRCAiTm9uZSIgZWxzZSBpbnQodmFsKSwKKyAgICAgICAg ZGVmYXVsdD0zRE5vbmUsCisgICAgKSwKICAgICBhbXFwX2NvbnN1bWVyX3RpbWVvdXQ9M0RkaWN0 KAogICAgICAgICBtYXA9M0RsYW1iZGEgdmFsOiBOb25lIGlmIHZhbCA9M0Q9M0QgIk5vbmUiIGVs c2UgZmxvYXQodmFsKSwKICAgICAgICAgZGVmYXVsdD0zRE5vbmUsCgpkaWZmIC1yIGQ2MmYzZTUw YjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBmOWU0 NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkKLS0tIGEv bGliL2dhbGF4eS9tb2RlbC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L21vZGVsL19faW5p dF9fLnB5CkBAIC0yNCwxMSArMjQsNiBAQAogZnJvbSBzcWxhbGNoZW15Lm9ybSBpbXBvcnQgam9p bmVkbG9hZCwgb2JqZWN0X3Nlc3Npb24sIGFsaWFzZWQKIGZyb20gc3FsYWxjaGVteS5leHQgaW1w b3J0IGh5YnJpZAo9MjAKLXRyeToKLSAgICBpbXBvcnQgcGV4cGVjdAotZXhjZXB0IEltcG9ydEVy cm9yOgotICAgIHBleHBlY3QgPTNEIE5vbmUKLQogaW1wb3J0IGdhbGF4eS5kYXRhdHlwZXMKIGlt cG9ydCBnYWxheHkuZGF0YXR5cGVzLnJlZ2lzdHJ5CiBpbXBvcnQgZ2FsYXh5Lm1vZGVsLm9ybS5u b3cKQEAgLTYwLDkgKzU1LDYgQEAKICMgdGhpcyBiZSB1bmxpbWl0ZWQgLSBmaWx0ZXIgaW4gUHl0 aG9uIGlmIG92ZXIgdGhpcyBsaW1pdC4KIE1BWF9JTl9GSUxURVJfTEVOR1RIID0zRCAxMDAKPTIw Ci1QRVhQRUNUX0lNUE9SVF9NRVNTQUdFID0zRCAoJ1RoZSBQeXRob24gcGV4cGVjdCBwYWNrYWdl IGlzIHJlcXVpcmVkIHRvIHVzZT0KIHRoaXMgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAn ZmVhdHVyZSwgcGxlYXNlIGluc3RhbGwgaXQnKQotCj0yMAogY2xhc3MgTm9Db252ZXJ0ZXJFeGNl cHRpb24oRXhjZXB0aW9uKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgpAQCAtNDI1 MSwzMCArNDI0Myw2IEBACiAgICAgICAgICAgICAgICAgdW50cmFuc2ZlcnJlZF9kYXRhc2V0cy5h cHBlbmQoIGRhdGFzZXQgKQogICAgICAgICByZXR1cm4gdW50cmFuc2ZlcnJlZF9kYXRhc2V0cwo9 MjAKLSAgICBkZWYgZ2V0X3VudHJhbnNmZXJyZWRfZGF0YXNldF9zaXplKCBzZWxmLCBmaWxlcGF0 aCwgc2NwX2NvbmZpZ3MgKToKLSAgICAgICAgZGVmIHByaW50X3RpY2tzKCBkICk6Ci0gICAgICAg ICAgICBwYXNzCi0gICAgICAgIGlmIHBleHBlY3QgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVy biBQRVhQRUNUX0lNUE9SVF9NRVNTQUdFCi0gICAgICAgIGVycm9yX21zZyA9M0QgJ0Vycm9yIGVu Y291bnRlcmVkIGluIGRldGVybWluaW5nIHRoZSBmaWxlIHNpemUgb2YgJT0KcyBvbiB0aGUgZXh0 ZXJuYWxfc2VydmljZS4nICUgZmlsZXBhdGgKLSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzWydo b3N0J10gb3Igbm90IHNjcF9jb25maWdzWyd1c2VyX25hbWUnXSBvciBub3QgPQpzY3BfY29uZmln c1sncGFzc3dvcmQnXToKLSAgICAgICAgICAgIHJldHVybiBlcnJvcl9tc2cKLSAgICAgICAgbG9n aW5fc3RyID0zRCAnJXNAJXMnICUgKCBzY3BfY29uZmlnc1sndXNlcl9uYW1lJ10sIHNjcF9jb25m aWdzWydoPQpvc3QnXSApCi0gICAgICAgIGNtZCA9M0QgJ3NzaCAlcyAiZHUgLXNoIFwnJXNcJyIn ICUgKCBsb2dpbl9zdHIsIGZpbGVwYXRoICkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3V0 cHV0ID0zRCBwZXhwZWN0LnJ1biggY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGV2ZW50cz0zRHsgJy5zc3dvcmQ6Kic6IHNjcF9jb25maWdzWydwYXM9CnN3b3JkJ10gKyAn XHJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cGVj dC5USU1FT1VUOiBwcmludF90aWNrc30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGltZW91dD0zRDEwICkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAg IHJldHVybiBlcnJvcl9tc2cKLSAgICAgICAgIyBjbGVhbnVwIHRoZSBvdXRwdXQgdG8gZ2V0IGp1 c3QgdGhlIGZpbGUgc2l6ZQotICAgICAgICByZXR1cm4gb3V0cHV0LnJlcGxhY2UoIGZpbGVwYXRo LCAnJyApXAotICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoICdQYXNzd29yZDonLCAnJyAp XAotICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoICIncyBwYXNzd29yZDoiLCAnJyApXAot ICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoIGxvZ2luX3N0ciwgJycgKVwKLSAgICAgICAg ICAgICAgICAgICAgIC5zdHJpcCgpCi0KICAgICBAcHJvcGVydHkKICAgICBkZWYgcnVuX2RldGFp bHMoIHNlbGYgKToKICAgICAgICAgIyBzZWxmLnJ1bnMgaXMgYSBsaXN0IG9mIFNhbXBsZVJ1bkFz c29jaWF0aW9ucyBvcmRlcmVkIGRlc2NlbmRpbmcgPQpvbiB1cGRhdGVfdGltZS4KCmRpZmYgLXIg ZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQx MjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS9tb2RlbC90b29sX3NoZWRf aW5zdGFsbC9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L21vZGVsL3Rvb2xfc2hlZF9pbnN0 YWxsL19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvbW9kZWwvdG9vbF9zaGVkX2luc3RhbGwv X19pbml0X18ucHkKQEAgLTk2LDcgKzk2LDE0IEBACiAgICAgICAgIFJldHVybiB0aGUgaW4tbWVt b3J5IHZlcnNpb24gb2YgdGhlIHNoZWRfdG9vbF9jb25mIGZpbGUsIHdoaWNoIGlzID0Kc3RvcmVk IGluIHRoZSBjb25maWdfZWxlbXMgZW50cnkKICAgICAgICAgaW4gdGhlIHNoZWRfdG9vbF9jb25m X2RpY3QuCiAgICAgICAgICIiIgotICAgICAgICBpZiBub3Qgc2VsZi5zaGVkX2NvbmZpZ19maWxl bmFtZToKKworICAgICAgICBkZWYgX2lzX3ZhbGlkX3NoZWRfY29uZmlnX2ZpbGVuYW1lKCBmaWxl bmFtZSApOgorICAgICAgICAgICAgZm9yIHNoZWRfdG9vbF9jb25mX2RpY3QgaW4gYXBwLnRvb2xi b3guZHluYW1pY19jb25mcyggaW5jbHVkZV89Cm1pZ3JhdGVkX3Rvb2xfY29uZj0zRFRydWUgKToK KyAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZSA9M0Q9M0Qgc2hlZF90b29sX2NvbmZfZGljdFsg J2NvbmZpZ19maWxlbmFtZScgPQpdOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQor ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgaWYgbm90IHNlbGYuc2hlZF9jb25m aWdfZmlsZW5hbWUgb3Igbm90IF9pc192YWxpZF9zaGVkX2NvbmZpZ19maWxlPQpuYW1lKCBzZWxm LnNoZWRfY29uZmlnX2ZpbGVuYW1lICk6CiAgICAgICAgICAgICBzZWxmLmd1ZXNzX3NoZWRfY29u ZmlnKCBhcHAsIGRlZmF1bHQ9M0RkZWZhdWx0ICkKICAgICAgICAgaWYgc2VsZi5zaGVkX2NvbmZp Z19maWxlbmFtZToKICAgICAgICAgICAgIGZvciBzaGVkX3Rvb2xfY29uZl9kaWN0IGluIGFwcC50 b29sYm94LmR5bmFtaWNfY29uZnMoIGluY2x1ZGVfPQptaWdyYXRlZF90b29sX2NvbmY9M0RUcnVl ICk6CgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEgLXIg MzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxheHkvb2Jq ZWN0c3RvcmUvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9fX2luaXRf Xy5weQorKysgYi9saWIvZ2FsYXh5L29iamVjdHN0b3JlL19faW5pdF9fLnB5CkBAIC0xMSw3ICsx MSw3IEBACiBpbXBvcnQgdGhyZWFkaW5nCiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRy ZWUKPTIwCi1mcm9tIGdhbGF4eS51dGlsIGltcG9ydCB1bWFza19maXhfcGVybXMsIGZvcmNlX3N5 bWxpbmsKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHVtYXNrX2ZpeF9wZXJtcywgZm9yY2Vfc3lt bGluaywgc2FmZV9yZWxwYXRoCiBmcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3RJ bnZhbGlkLCBPYmplY3ROb3RGb3VuZAogZnJvbSBnYWxheHkudXRpbC5zbGVlcGVyIGltcG9ydCBT bGVlcGVyCiBmcm9tIGdhbGF4eS51dGlsLmRpcmVjdG9yeV9oYXNoIGltcG9ydCBkaXJlY3Rvcnlf aGFzaF9pZApAQCAtMjUyLDcgKzI1MiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHRo ZSBjb21wb3NlZCBkaXJlY3Rvcnkgc3RydWN0dXJlIGRvZXMgbm90IGluY2x1ZGU9CiBhIGhhc2gg aWQKICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiwgL2ZpbGVzL2RhdGFzZXRfMTAuZGF0 IChvbGQpIHZzLiAvZmlsZXMvMDAwPQovZGF0YXNldF8xMC5kYXQgKG5ldykpCiAgICAgICAgICIi IgotICAgICAgICBiYXNlID0zRCBzZWxmLmV4dHJhX2RpcnMuZ2V0KGJhc2VfZGlyLCBzZWxmLmZp bGVfcGF0aCkKKyAgICAgICAgYmFzZSA9M0Qgb3MucGF0aC5hYnNwYXRoKHNlbGYuZXh0cmFfZGly cy5nZXQoYmFzZV9kaXIsIHNlbGYuZmlsZV9wPQphdGgpKQorICAgICAgICAjIGV4dHJhX2RpciBz aG91bGQgbmV2ZXIgYmUgY29uc3RydWN0ZWQgZnJvbSBwcm92aWRlZCBkYXRhIGJ1dCBqdXN0Cisg ICAgICAgICMgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBzaGVuYW5uaWdhbnMgYWZvb3QKKyAgICAg ICAgaWYgZXh0cmFfZGlyIGFuZCBleHRyYV9kaXIgIT0zRCBvcy5wYXRoLm5vcm1wYXRoKGV4dHJh X2Rpcik6CisgICAgICAgICAgICBsb2cud2FybmluZygnZXh0cmFfZGlyIGlzIG5vdCBub3JtYWxp emVkOiAlcycsIGV4dHJhX2RpcikKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRo ZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGludmFsaWQiKQorICAgICAgICAjIGVuc3VyZSB0aGF0IGFu eSBwYXJlbnQgZGlyZWN0b3J5IHJlZmVyZW5jZXMgaW4gYWx0X25hbWUgd291bGQgbm90CisgICAg ICAgICMgcmVzdWx0IGluIGEgcGF0aCBub3QgY29udGFpbmVkIGluIHRoZSBkaXJlY3RvcnkgcGF0 aCBjb25zdHJ1Y3RlZD0KIGhlcmUKKyAgICAgICAgaWYgYWx0X25hbWUgYW5kIG5vdCBzYWZlX3Jl bHBhdGgoYWx0X25hbWUpOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxk IGxvY2F0ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsIGFsdF89Cm5hbWUpCisgICAgICAgICAgICBy YWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKICAg ICAgICAgaWYgb2xkX3N0eWxlOgogICAgICAgICAgICAgaWYgZXh0cmFfZGlyIGlzIG5vdCBOb25l OgogICAgICAgICAgICAgICAgIHBhdGggPTNEIG9zLnBhdGguam9pbihiYXNlLCBleHRyYV9kaXIp CkBAIC02MTksOSArNjI5LDEwIEBACiAgICAgZWxpZiBzdG9yZSA9M0Q9M0QgJ2lyb2RzJzoKICAg ICAgICAgZnJvbSAucm9kcyBpbXBvcnQgSVJPRFNPYmplY3RTdG9yZQogICAgICAgICByZXR1cm4g SVJPRFNPYmplY3RTdG9yZShjb25maWc9M0Rjb25maWcsIGNvbmZpZ194bWw9M0Rjb25maWdfeG1s KQotICAgIGVsaWYgc3RvcmUgPTNEPTNEICdwdWxzYXInOgotICAgICAgICBmcm9tIC5wdWxzYXIg aW1wb3J0IFB1bHNhck9iamVjdFN0b3JlCi0gICAgICAgIHJldHVybiBQdWxzYXJPYmplY3RTdG9y ZShjb25maWc9M0Rjb25maWcsIGNvbmZpZ194bWw9M0Rjb25maWdfeG1sKQorICAgICMgRGlzYWJs ZSB0aGUgUHVsc2FyIG9iamVjdCBzdG9yZSBmb3Igbm93IHVudGlsIGl0IHJlY2VpdmVzIHNvbWUg YXR0ZW49CnRpb24KKyAgICAjIGVsaWYgc3RvcmUgPTNEPTNEICdwdWxzYXInOgorICAgICMgICAg ZnJvbSAucHVsc2FyIGltcG9ydCBQdWxzYXJPYmplY3RTdG9yZQorICAgICMgICAgcmV0dXJuIFB1 bHNhck9iamVjdFN0b3JlKGNvbmZpZz0zRGNvbmZpZywgY29uZmlnX3htbD0zRGNvbmZpZ194bWwp CiAgICAgZWxzZToKICAgICAgICAgbG9nLmVycm9yKCJVbnJlY29nbml6ZWQgb2JqZWN0IHN0b3Jl IGRlZmluaXRpb246IHswfSIuZm9ybWF0KHN0b3JlPQopKQo9MjAKCmRpZmYgLXIgZDYyZjNlNTBi NTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0 Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS9vYmplY3RzdG9yZS9yb2RzLnB5Ci0tLSBh L2xpYi9nYWxheHkvb2JqZWN0c3RvcmUvcm9kcy5weQorKysgYi9saWIvZ2FsYXh5L29iamVjdHN0 b3JlL3JvZHMucHkKQEAgLTEyLDcgKzEyLDggQEAKIGZyb20gcG9zaXhwYXRoIGltcG9ydCBiYXNl bmFtZSBhcyBwYXRoX2Jhc2VuYW1lCiBmcm9tIHBvc2l4cGF0aCBpbXBvcnQgZGlybmFtZSBhcyBw YXRoX2Rpcm5hbWUKPTIwCi1mcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3ROb3RG b3VuZAorZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0Tm90Rm91bmQsIE9iamVj dEludmFsaWQKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHNhZmVfcmVscGF0aAogZnJvbSAuLm9i amVjdHN0b3JlIGltcG9ydCBEaXNrT2JqZWN0U3RvcmUsIE9iamVjdFN0b3JlLCBsb2NhbF9leHRy YV9kaXJzCj0yMAogdHJ5OgpAQCAtNzEsNiArNzIsMjAgQEAKICAgICAgICAgbG9nLmluZm8oICJp Uk9EUyBkYXRhIGZvciB0aGlzIGluc3RhbmNlIHdpbGwgYmUgc3RvcmVkIGluIGNvbGxlY3RpPQpv bjogJXMsIHJlc291cmNlOiAlcyIsIHNlbGYucm9vdF9jb2xsZWN0aW9uX3BhdGgsIHNlbGYuZGVm YXVsdF9yZXNvdXJjZSApCj0yMAogICAgIGRlZiBfX2dldF9yb2RzX3BhdGgoIHNlbGYsIG9iaiwg YmFzZV9kaXI9M0ROb25lLCBkaXJfb25seT0zREZhbHNlLCBleHQ9CnJhX2Rpcj0zRE5vbmUsIGV4 dHJhX2Rpcl9hdF9yb290PTNERmFsc2UsIGFsdF9uYW1lPTNETm9uZSwgc3RyaXBfZGF0PTNEVHJ1 ZT0KLCAqKmt3YXJncyApOgorICAgICAgICAjIGV4dHJhX2RpciBzaG91bGQgbmV2ZXIgYmUgY29u c3RydWN0ZWQgZnJvbSBwcm92aWRlZCBkYXRhIGJ1dCBqdXN0CisgICAgICAgICMgbWFrZSBzdXJl IHRoZXJlIGFyZSBubyBzaGVuYW5uaWdhbnMgYWZvb3QKKyAgICAgICAgaWYgZXh0cmFfZGlyIGFu ZCBleHRyYV9kaXIgIT0zRCBvcy5wYXRoLm5vcm1wYXRoKGV4dHJhX2Rpcik6CisgICAgICAgICAg ICBsb2cud2FybmluZygnZXh0cmFfZGlyIGlzIG5vdCBub3JtYWxpemVkOiAlcycsIGV4dHJhX2Rp cikKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2JqZWN0 IGlzIGludmFsaWQiKQorICAgICAgICAjIGVuc3VyZSB0aGF0IGFueSBwYXJlbnQgZGlyZWN0b3J5 IHJlZmVyZW5jZXMgaW4gYWx0X25hbWUgd291bGQgbm90CisgICAgICAgICMgcmVzdWx0IGluIGEg cGF0aCBub3QgY29udGFpbmVkIGluIHRoZSBkaXJlY3RvcnkgcGF0aCBjb25zdHJ1Y3RlZD0KIGhl cmUKKyAgICAgICAgaWYgYWx0X25hbWU6CisgICAgICAgICAgICBpZiBub3Qgc2FmZV9yZWxwYXRo KGFsdF9uYW1lKToKKyAgICAgICAgICAgICAgICBsb2cud2FybmluZygnYWx0X25hbWUgd291bGQg bG9jYXRlIHBhdGggb3V0c2lkZSBkaXI6ICVzJywgPQphbHRfbmFtZSkKKyAgICAgICAgICAgICAg ICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikK KyAgICAgICAgICAgICMgYWx0X25hbWUgY2FuIGNvbnRhaW4gcGFyZW50IGRpcmVjdG9yeSByZWZl cmVuY2VzLCBidXQgaVJPRFMgPQp3aWxsCisgICAgICAgICAgICAjIG5vdCBmb2xsb3cgdGhlbSwg c28gaWYgdGhleSBhcmUgdmFsaWQgd2Ugbm9ybWFsaXplIHRoZW0gb3V0CisgICAgICAgICAgICBh bHRfbmFtZSA9M0Qgb3MucGF0aC5ub3JtcGF0aChhbHRfbmFtZSkKICAgICAgICAgcGF0aCA9M0Qg IiIKICAgICAgICAgaWYgZXh0cmFfZGlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcGF0aCA9 M0QgZXh0cmFfZGlyCgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1 NTJkMWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9n YWxheHkvb2JqZWN0c3RvcmUvczMucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9zMy5w eQorKysgYi9saWIvZ2FsYXh5L29iamVjdHN0b3JlL3MzLnB5CkBAIC0xMiw4ICsxMiw4IEBACj0y MAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKPTIwCi1mcm9tIGdhbGF4eS5leGNlcHRp b25zIGltcG9ydCBPYmplY3ROb3RGb3VuZAotZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc3RyaW5n X2FzX2Jvb2wsIHVtYXNrX2ZpeF9wZXJtcworZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQg T2JqZWN0Tm90Rm91bmQsIE9iamVjdEludmFsaWQKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHN0 cmluZ19hc19ib29sLCB1bWFza19maXhfcGVybXMsIHNhZmVfcmVscGF0aAogZnJvbSBnYWxheHku dXRpbC5kaXJlY3RvcnlfaGFzaCBpbXBvcnQgZGlyZWN0b3J5X2hhc2hfaWQKIGZyb20gZ2FsYXh5 LnV0aWwuc2xlZXBlciBpbXBvcnQgU2xlZXBlcgogZnJvbSAuczNfbXVsdGlwYXJ0X3VwbG9hZCBp bXBvcnQgbXVsdGlwYXJ0X3VwbG9hZApAQCAtMjA4LDYgKzIwOCwyMCBAQAogICAgICAgICAgICAg ICAgIHVtYXNrX2ZpeF9wZXJtcyggcGF0aCwgc2VsZi5jb25maWcudW1hc2ssIDA2NjYsIHNlbGYu Y29uZmk9CmcuZ2lkICkKPTIwCiAgICAgZGVmIF9jb25zdHJ1Y3RfcGF0aChzZWxmLCBvYmosIGJh c2VfZGlyPTNETm9uZSwgZGlyX29ubHk9M0ROb25lLCBleHRyYT0KX2Rpcj0zRE5vbmUsIGV4dHJh X2Rpcl9hdF9yb290PTNERmFsc2UsIGFsdF9uYW1lPTNETm9uZSwgb2JqX2Rpcj0zREZhbHNlLCAq PQoqa3dhcmdzKToKKyAgICAgICAgIyBleHRyYV9kaXIgc2hvdWxkIG5ldmVyIGJlIGNvbnN0cnVj dGVkIGZyb20gcHJvdmlkZWQgZGF0YSBidXQganVzdAorICAgICAgICAjIG1ha2Ugc3VyZSB0aGVy ZSBhcmUgbm8gc2hlbmFubmlnYW5zIGFmb290CisgICAgICAgIGlmIGV4dHJhX2RpciBhbmQgZXh0 cmFfZGlyICE9M0Qgb3MucGF0aC5ub3JtcGF0aChleHRyYV9kaXIpOgorICAgICAgICAgICAgbG9n Lndhcm5pbmcoJ2V4dHJhX2RpciBpcyBub3Qgbm9ybWFsaXplZDogJXMnLCBleHRyYV9kaXIpCisg ICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBp bnZhbGlkIikKKyAgICAgICAgIyBlbnN1cmUgdGhhdCBhbnkgcGFyZW50IGRpcmVjdG9yeSByZWZl cmVuY2VzIGluIGFsdF9uYW1lIHdvdWxkIG5vdAorICAgICAgICAjIHJlc3VsdCBpbiBhIHBhdGgg bm90IGNvbnRhaW5lZCBpbiB0aGUgZGlyZWN0b3J5IHBhdGggY29uc3RydWN0ZWQ9CiBoZXJlCisg ICAgICAgIGlmIGFsdF9uYW1lOgorICAgICAgICAgICAgaWYgbm90IHNhZmVfcmVscGF0aChhbHRf bmFtZSk6CisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxkIGxvY2F0 ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsID0KYWx0X25hbWUpCisgICAgICAgICAgICAgICAgcmFp c2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIpCisgICAg ICAgICAgICAjIGFsdF9uYW1lIGNhbiBjb250YWluIHBhcmVudCBkaXJlY3RvcnkgcmVmZXJlbmNl cywgYnV0IFMzIHdpbD0KbCBub3QKKyAgICAgICAgICAgICMgZm9sbG93IHRoZW0sIHNvIGlmIHRo ZXkgYXJlIHZhbGlkIHdlIG5vcm1hbGl6ZSB0aGVtIG91dAorICAgICAgICAgICAgYWx0X25hbWUg PTNEIG9zLnBhdGgubm9ybXBhdGgoYWx0X25hbWUpCiAgICAgICAgIHJlbF9wYXRoID0zRCBvcy5w YXRoLmpvaW4oKmRpcmVjdG9yeV9oYXNoX2lkKG9iai5pZCkpCiAgICAgICAgIGlmIGV4dHJhX2Rp ciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIGV4dHJhX2Rpcl9hdF9yb290OgoKZGlmZiAt ciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQz NDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9f LnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS90 b29scy9fX2luaXRfXy5weQpAQCAtMjAwMyw3ICsyMDAzLDcgQEAKICAgICAgICAgICAgICAgICBp ZiBpc2luc3RhbmNlKCBpbnB1dCwgQ29uZGl0aW9uYWwgKToKICAgICAgICAgICAgICAgICAgICAg Y29uZF9tZXNzYWdlcyA9M0Qge30KICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlucHV0Lmlz X2pvYl9yZXNvdXJjZV9jb25kaXRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRf bWVzc2FnZXMgPTNEIHsgaW5wdXQudGVzdF9wYXJhbS5uYW1lOiAiTm8gdmFsPQp1ZSBmb3VuZCBm b3IgJyVzJXMnLCB1c2VkIGRlZmF1bHQiICUgKCBwcmVmaXgsIGlucHV0LmxhYmVsICkgfQorICAg ICAgICAgICAgICAgICAgICAgICAgY29uZF9tZXNzYWdlcyA9M0QgeyBpbnB1dC50ZXN0X3BhcmFt Lm5hbWU6ICJObyB2YWw9CnVlIGZvdW5kIGZvciAnJXMlcycsIHVzZWQgZGVmYXVsdCIgJSAoIHBy ZWZpeCwgaW5wdXQudGVzdF9wYXJhbS5sYWJlbCApIH0KICAgICAgICAgICAgICAgICAgICAgICAg IG1lc3NhZ2VzWyBpbnB1dC5uYW1lIF0gPTNEIGNvbmRfbWVzc2FnZXMKICAgICAgICAgICAgICAg ICAgICAgdGVzdF92YWx1ZSA9M0QgaW5wdXQudGVzdF9wYXJhbS5nZXRfaW5pdGlhbF92YWx1ZSgg dHJhPQpucywgY29udGV4dCApCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfY2FzZSA9M0Qg aW5wdXQuZ2V0X2N1cnJlbnRfY2FzZSggdGVzdF92YWx1ZSwgdD0KcmFucyApCkBAIC0yMDE2LDYg KzIwMTYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcF9kaWN0ID0zRCBkaWN0 KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlc1sgaW5wdXQubmFtZSBdLmFw cGVuZCggcmVwX2RpY3QgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tf YW5kX3VwZGF0ZV9wYXJhbV92YWx1ZXNfaGVscGVyKCBpbnA9CnV0LmlucHV0cywge30sIHRyYW5z LCByZXBfZGljdCwgY29udGV4dCwgcmVwX3ByZWZpeCwgYWxsb3dfd29ya2Zsb3dfcGFyYW1ldD0K ZXJzPTNEYWxsb3dfd29ya2Zsb3dfcGFyYW1ldGVycyApCisgICAgICAgICAgICAgICAgZWxpZiBp c2luc3RhbmNlKCBpbnB1dCwgU2VjdGlvbiApOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdl c1sgaW5wdXQubmFtZSBdID0zRCB7fQorICAgICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX2Fu ZF91cGRhdGVfcGFyYW1fdmFsdWVzX2hlbHBlciggaW5wdXQuaW5wdXQ9CnMsIHt9LCB0cmFucywg bWVzc2FnZXNbIGlucHV0Lm5hbWUgXSwgY29udGV4dCwgcHJlZml4LCBhbGxvd193b3JrZmxvd19w YXJhbT0KZXRlcnM9M0RhbGxvd193b3JrZmxvd19wYXJhbWV0ZXJzICkKICAgICAgICAgICAgICAg ICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBtZXNzYWdlc1sgaW5wdXQubmFtZSBdID0zRCAi Tm8gdmFsdWUgZm91bmQgZm9yICclcyVzJyw9CiB1c2VkIGRlZmF1bHQiICUgKCBwcmVmaXgsIGlu cHV0LmxhYmVsICkKICAgICAgICAgICAgICAgICB2YWx1ZXNbIGlucHV0Lm5hbWUgXSA9M0QgaW5w dXQuZ2V0X2luaXRpYWxfdmFsdWUoIHRyYW5zLCBjPQpvbnRleHQgKQpAQCAtMjA0Myw2ICsyMDQ2 LDkgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAg IGN1cnJlbnQgPTNEIGdyb3VwX3ZhbHVlc1siX19jdXJyZW50X2Nhc2VfXyJdCiAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLmNoZWNrX2FuZF91cGRhdGVfcGFyYW1fdmFsdWVzX2hlbHBlcigg aW5wdXQuYz0KYXNlc1tjdXJyZW50XS5pbnB1dHMsIGdyb3VwX3ZhbHVlcywgdHJhbnMsIG1lc3Nh Z2VzLCBjb250ZXh0LCBwcmVmaXgsIGFsbG93PQpfd29ya2Zsb3dfcGFyYW1ldGVycz0zRGFsbG93 X3dvcmtmbG93X3BhcmFtZXRlcnMgKQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSgg aW5wdXQsIFNlY3Rpb24gKToKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXNbIGlucHV0Lm5h bWUgXSA9M0Qge30KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19hbmRfdXBkYXRlX3Bh cmFtX3ZhbHVlc19oZWxwZXIoIGlucHV0LmlucHV0PQpzLCB2YWx1ZXNbIGlucHV0Lm5hbWUgXSwg dHJhbnMsIG1lc3NhZ2VzWyBpbnB1dC5uYW1lIF0sIGNvbnRleHQsIHByZWZpeCwgYWw9Cmxvd193 b3JrZmxvd19wYXJhbWV0ZXJzPTNEYWxsb3dfd29ya2Zsb3dfcGFyYW1ldGVycyApCiAgICAgICAg ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBSZWd1bGFyIHRvb2wgcGFyYW1l dGVyLCBubyByZWN1cnNpb24gbmVlZGVkCiAgICAgICAgICAgICAgICAgICAgIHRyeToKCmRpZmYg LXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0 MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS90b29scy9hY3Rpb25z L19faW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvYWN0aW9ucy9fX2luaXRfXy5weQor KysgYi9saWIvZ2FsYXh5L3Rvb2xzL2FjdGlvbnMvX19pbml0X18ucHkKQEAgLTExMSw5ICsxMTEs MTkgQEAKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSggaW5wdXQsIERhdGFDb2xsZWN0aW9u VG9vbFBhcmFtZXRlciApOgogICAgICAgICAgICAgICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgZm9yIGksIHYgaW4gZW51bWVyYXRl KCB2YWx1ZS5jb2xsZWN0aW9uLmRhdGFzZXRfaW5zdGFuY2VzID0KKToKKworICAgICAgICAgICAg ICAgIGRhdGFzZXRfaW5zdGFuY2VzID0zRCBbXQorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIo IHZhbHVlLCAnY2hpbGRfY29sbGVjdGlvbicgKToKKyAgICAgICAgICAgICAgICAgICAgIyBpZiB3 ZSBhcmUgbWFwcGluZyBhIGNvbGxlY3Rpb24gb3ZlciBhIHRvb2wsIHdlIG9ubHkgPQpyZXF1aXJl IHRoZSBjaGlsZF9jb2xsZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRfaW5zdGFu Y2VzID0zRCB2YWx1ZS5jaGlsZF9jb2xsZWN0aW9uLmRhdGFzZXRfaT0KbnN0YW5jZXMKKyAgICAg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIGVsc2UgdGhlIHRvb2wgdGFr ZXMgYSBjb2xsZWN0aW9uIGFzIGlucHV0IHNvIHdlIG5lZWQ9CiBldmVyeXRoaW5nCisgICAgICAg ICAgICAgICAgICAgIGRhdGFzZXRfaW5zdGFuY2VzID0zRCB2YWx1ZS5jb2xsZWN0aW9uLmRhdGFz ZXRfaW5zdGFuYz0KZXMKKworICAgICAgICAgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZSgg ZGF0YXNldF9pbnN0YW5jZXMgKToKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9M0QgdgogICAg ICAgICAgICAgICAgICAgICBjdXJyZW50X3VzZXJfcm9sZXMgPTNEIHRyYW5zLmdldF9jdXJyZW50 X3VzZXJfcm9sZXMoKQorCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB0cmFucy5hcHAuc2Vj dXJpdHlfYWdlbnQuY2FuX2FjY2Vzc19kYXRhc2V0KCBjdT0KcnJlbnRfdXNlcl9yb2xlcywgZGF0 YS5kYXRhc2V0ICk6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oICJV c2VyIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0bz0KIHVzZSBhIGRhdGFzZXQgKCVzKSBwcm92 aWRlZCBmb3IgaW5wdXQuIiAlIGRhdGEuaWQgKQogICAgICAgICAgICAgICAgICAgICAjIFNraXBw aW5nIGltcGxpY2l0IGNvbnZlcnNpb24gc3R1ZmYgZm9yIG5vdywgcmV2aXNpdCA9CmF0CkBAIC0y MjQsNyArMjM0LDcgQEAKICAgICAgICAgY2hpbGRfZGF0YXNldF9uYW1lcyA9M0Qgc2V0KCkKICAg ICAgICAgb2JqZWN0X3N0b3JlX3BvcHVsYXRvciA9M0QgT2JqZWN0U3RvcmVQb3B1bGF0b3IoIHRy YW5zLmFwcCApCj0yMAotICAgICAgICBkZWYgaGFuZGxlX291dHB1dCggbmFtZSwgb3V0cHV0ICk6 CisgICAgICAgIGRlZiBoYW5kbGVfb3V0cHV0KCBuYW1lLCBvdXRwdXQsIGhpZGRlbj0zRE5vbmUg KToKICAgICAgICAgICAgIGlmIG91dHB1dC5wYXJlbnQ6CiAgICAgICAgICAgICAgICAgcGFyZW50 X3RvX2NoaWxkX3BhaXJzLmFwcGVuZCggKCBvdXRwdXQucGFyZW50LCBuYW1lICkgKQogICAgICAg ICAgICAgICAgIGNoaWxkX2RhdGFzZXRfbmFtZXMuYWRkKCBuYW1lICkKQEAgLTI0MCw3ICsyNTAs OSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBleHQgPTNEIGRldGVybWlu ZV9vdXRwdXRfZm9ybWF0KCBvdXRwdXQsIHdyYXBwZWRfcGFyYW1zLnBhPQpyYW1zLCBpbnBfZGF0 YSwgaW5wdXRfZXh0ICkKICAgICAgICAgICAgICAgICBkYXRhID0zRCB0cmFucy5hcHAubW9kZWwu SGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbiggZXh0ZW5zPQppb249M0RleHQsIGNyZWF0ZV9kYXRh c2V0PTNEVHJ1ZSwgc2Ffc2Vzc2lvbj0zRHRyYW5zLnNhX3Nlc3Npb24gKQotICAgICAgICAgICAg ICAgIGlmIG91dHB1dC5oaWRkZW46CisgICAgICAgICAgICAgICAgaWYgaGlkZGVuIGlzIE5vbmU6 CisgICAgICAgICAgICAgICAgICAgIGhpZGRlbiA9M0Qgb3V0cHV0LmhpZGRlbgorICAgICAgICAg ICAgICAgIGlmIGhpZGRlbjoKICAgICAgICAgICAgICAgICAgICAgZGF0YS52aXNpYmxlID0zRCBG YWxzZQogICAgICAgICAgICAgICAgICMgQ29tbWl0IHRoZSBkYXRhc2V0IGltbWVkaWF0ZWx5IHNv IGl0IGdldHMgZGF0YWJhc2UgYXNzaWc9Cm5lZCB1bmlxdWUgaWQKICAgICAgICAgICAgICAgICB0 cmFucy5zYV9zZXNzaW9uLmFkZCggZGF0YSApCkBAIC0zMTgsNyArMzMwLDEwIEBACiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9lbGVtZW50X2lkZW50aWZpZXJzID0zRCBjdXJy ZW50X2VsZW1lbj0KdF9pZGVudGlmaWVyc1sgaW5kZXggXVsgImVsZW1lbnRfaWRlbnRpZmllcnMi IF0KPTIwCiAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RpdmVfb3V0cHV0X25hbWUgPTNE IG91dHB1dF9wYXJ0X2RlZi5lZmZlY3Rpdj0KZV9vdXRwdXRfbmFtZQotICAgICAgICAgICAgICAg ICAgICAgICAgZWxlbWVudCA9M0QgaGFuZGxlX291dHB1dCggZWZmZWN0aXZlX291dHB1dF9uYW1l LCA9Cm91dHB1dF9wYXJ0X2RlZi5vdXRwdXRfZGVmICkKKyAgICAgICAgICAgICAgICAgICAgICAg IGVsZW1lbnQgPTNEIGhhbmRsZV9vdXRwdXQoIGVmZmVjdGl2ZV9vdXRwdXRfbmFtZSwgPQpvdXRw dXRfcGFydF9kZWYub3V0cHV0X2RlZiwgaGlkZGVuPTNEVHJ1ZSApCisgICAgICAgICAgICAgICAg ICAgICAgICAjIFRPRE86IHRoaXMgc2hvdWxkbid0IGV4aXN0IGluIHRoZSB0b3AtbGV2ZWwgb2Yg dD0KaGUgaGlzdG9yeSBhdCBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYnV0IGZvciBu b3cgd2UgYXJlIHN0aWxsIHdvcmtpbmcgYXJvdW5kIHRoYXQgYnkgPQpoaWRpbmcgdGhlIGNvbnRl bnRzCisgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZXJlLgogICAgICAgICAgICAgICAgICAg ICAgICAgIyBGb2xsb3dpbmcgaGFjayBjYXVzZXMgZGF0YXNldCB0byBubyBiZSBhZGRlZCB0byA9 Cmhpc3RvcnkuLi4KICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2RhdGFzZXRfbmFtZXMu YWRkKCBlZmZlY3RpdmVfb3V0cHV0X25hbWUgKQo9MjAKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1 N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJk ZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS90b29scy9pbXBfZXhwL19faW5pdF9fLnB5Ci0tLSBh L2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L3Rv b2xzL2ltcF9leHAvX19pbml0X18ucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGZyb20gc3FsYWxjaGVt eS5vcm0gaW1wb3J0IGVhZ2VybG9hZCwgZWFnZXJsb2FkX2FsbAo9MjAKIGZyb20gZ2FsYXh5IGlt cG9ydCBtb2RlbAorZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgTWFsZm9ybWVkQ29udGVu dHMKIGZyb20gZ2FsYXh5Lm1vZGVsLml0ZW1fYXR0cnMgaW1wb3J0IFVzZXNBbm5vdGF0aW9ucwog ZnJvbSBnYWxheHkudG9vbHMucGFyYW1ldGVycy5iYXNpYyBpbXBvcnQgVW52YWxpZGF0ZWRWYWx1 ZQogZnJvbSBnYWxheHkudXRpbC5qc29uIGltcG9ydCBkdW1wcywgbG9hZHMKQEAgLTE3MCw5ICsx NzEsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiBkYXRhc2V0X2F0dHJzLmdldCgnZXhwb3J0 ZWQnLCBUcnVlKSBpcyBUcnVlOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBEbyBzZWN1cml0 eSBjaGVjayBhbmQgbW92ZS9jb3B5IGRhdGFzZXQgZGF0YS4KICAgICAgICAgICAgICAgICAgICAg ICAgIHRlbXBfZGF0YXNldF9maWxlX25hbWUgPTNEIFwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvcy5wYXRoLmFic3BhdGgoIG9zLnBhdGguam9pbiggYXJjaGl2ZV9kaXIsIGRhPQp0YXNl dF9hdHRyc1snZmlsZV9uYW1lJ10gKSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mu cGF0aC5yZWFscGF0aCggb3MucGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpvaT0KbiggYXJjaGl2ZV9k aXIsIGRhdGFzZXRfYXR0cnNbJ2ZpbGVfbmFtZSddICkgKSApCiAgICAgICAgICAgICAgICAgICAg ICAgICBpZiBub3QgZmlsZV9pbl9kaXIoIHRlbXBfZGF0YXNldF9maWxlX25hbWUsIG9zLnBhdD0K aC5qb2luKCBhcmNoaXZlX2RpciwgImRhdGFzZXRzIiApICk6Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCAiSW52YWxpZCBkYXRhc2V0IHBhdGg6ICVzIiAlID0K dGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFp c2UgTWFsZm9ybWVkQ29udGVudHMoICJJbnZhbGlkIGRhdGFzZXQgcGF0aD0KOiAlcyIgJSB0ZW1w X2RhdGFzZXRfZmlsZV9uYW1lICkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRhdGFzZXRz X3VzYWdlX2NvdW50c1sgdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSBdPQogPTNEPTNEIDE6CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHAub2JqZWN0X3N0b3JlLnVwZGF0ZV9mcm9t X2ZpbGUoIGhkYS5kYT0KdGFzZXQsIGZpbGVfbmFtZT0zRHRlbXBfZGF0YXNldF9maWxlX25hbWUs IGNyZWF0ZT0zRFRydWUgKQo9MjAKQEAgLTMwOSw2ICszMTAsNyBAQAogICAgICAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAgICAgICAgICBqaWhhLmpvYi5zdGRlcnIgKz0zRCAi RXJyb3IgY2xlYW5pbmcgdXAgaGlzdG9yeSBpbXBvcnQgam9iPQo6ICVzIiAlIGUKICAgICAgICAg ICAgICAgICBzZWxmLnNhX3Nlc3Npb24uZmx1c2goKQorICAgICAgICAgICAgICAgIHJhaXNlCj0y MAo9MjAKIGNsYXNzIEpvYkV4cG9ydEhpc3RvcnlBcmNoaXZlV3JhcHBlciggb2JqZWN0LCBVc2Vz QW5ub3RhdGlvbnMgKToKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBj NTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGli L2dhbGF4eS90b29scy9pbXBfZXhwL3VucGFja190YXJfZ3pfYXJjaGl2ZS5weQotLS0gYS9saWIv Z2FsYXh5L3Rvb2xzL2ltcF9leHAvdW5wYWNrX3Rhcl9nel9hcmNoaXZlLnB5CisrKyBiL2xpYi9n YWxheHkvdG9vbHMvaW1wX2V4cC91bnBhY2tfdGFyX2d6X2FyY2hpdmUucHkKQEAgLTYsNiArNiw3 IEBACiAgICAgLS1bdXJsfGZpbGVdIHNvdXJjZSB0eXBlLCBlaXRoZXIgYSBVUkwgb3IgYSBmaWxl LgogIiIiCj0yMAoraW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3B0cGFyc2UKIGltcG9y dCB0YXJmaWxlCkBAIC00Myw2ICs0NCwyMiBAQAogICAgICAgICByZXR1cm4gTm9uZQo9MjAKPTIw CitkZWYgY2hlY2tfYXJjaGl2ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciApOgorICAgICIiIgor ICAgIEVuc3VyZSB0aGF0IGEgdGFyIGFyY2hpdmUgaGFzIG5vIGFic29sdXRlIHBhdGhzIG9yIHJl bGF0aXZlIHBhdGhzIG91dHM9CmlkZQorICAgIHRoZSBhcmNoaXZlLgorICAgICIiIgorICAgIHdp dGggdGFyZmlsZS5vcGVuKCBhcmNoaXZlX2ZpbGUsIG1vZGU9M0QncjpneicgKSBhcyBhcmNoaXZl X2ZwOgorICAgICAgICBmb3IgYXJjX3BhdGggaW4gYXJjaGl2ZV9mcC5nZXRuYW1lcygpOgorICAg ICAgICAgICAgYXNzZXJ0IG9zLnBhdGgubm9ybXBhdGgoCisgICAgICAgICAgICAgICAgb3MucGF0 aC5qb2luKAorICAgICAgICAgICAgICAgICAgICBkZXN0X2RpciwKKyAgICAgICAgICAgICAgICAg ICAgYXJjX3BhdGgKKyAgICAgICAgICAgICAgICApICkuc3RhcnRzd2l0aCggZGVzdF9kaXIucnN0 cmlwKG9zLnNlcCkgKyBvcy5zZXAgKSwgXAorICAgICAgICAgICAgICAgICJBcmNoaXZlIG1lbWJl ciB3b3VsZCBleHRyYWN0IG91dHNpZGUgdGFyZ2V0IGRpcmVjdG9yeTogJXM9CiIgJSBhcmNfcGF0 aAorICAgIHJldHVybiBUcnVlCisKKwogZGVmIHVucGFja19hcmNoaXZlKCBhcmNoaXZlX2ZpbGUs IGRlc3RfZGlyICk6CiAgICAgIiIiCiAgICAgVW5wYWNrIGEgdGFyIGFuZC9vciBnemlwcGVkIGFy Y2hpdmUgaW50byBhIGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4KQEAgLTUxLDEzICs2OCw4IEBACiAg ICAgYXJjaGl2ZV9mcC5leHRyYWN0YWxsKCBwYXRoPTNEZGVzdF9kaXIgKQogICAgIGFyY2hpdmVf ZnAuY2xvc2UoKQo9MjAKLWlmIF9fbmFtZV9fID0zRD0zRCAiX19tYWluX18iOgotICAgICMgUGFy c2UgY29tbWFuZCBsaW5lLgotICAgIHBhcnNlciA9M0Qgb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkK LSAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1VJywgJy0tdXJsJywgZGVzdD0zRCdpc191cmwnLCBh Y3Rpb249M0Qic3RvcmVfdHJ1PQplIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCi0gICAg cGFyc2VyLmFkZF9vcHRpb24oICctRicsICctLWZpbGUnLCBkZXN0PTNEJ2lzX2ZpbGUnLCBhY3Rp b249M0Qic3RvcmVfdD0KcnVlIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCi0gICAgcGFy c2VyLmFkZF9vcHRpb24oICctZScsICctLWVuY29kZWQnLCBkZXN0PTNEJ2lzX2I2NGVuY29kZWQn LCBhY3Rpb249Cj0zRCJzdG9yZV90cnVlIiwgZGVmYXVsdD0zREZhbHNlLCBoZWxwPTNEJ1NvdXJj ZSBhbmQgZGVzdGluYXRpb24gZGlyIHZhbHVlcz0KIGFyZSBiYXNlNjQgZW5jb2RlZC4nICkKLSAg ICAob3B0aW9ucywgYXJncykgPTNEIHBhcnNlci5wYXJzZV9hcmdzKCkKKworZGVmIG1haW4ob3B0 aW9ucywgYXJncyk6CiAgICAgaXNfdXJsID0zRCBib29sKCBvcHRpb25zLmlzX3VybCApCiAgICAg aXNfZmlsZSA9M0QgYm9vbCggb3B0aW9ucy5pc19maWxlICkKICAgICBhcmNoaXZlX3NvdXJjZSwg ZGVzdF9kaXIgPTNEIGFyZ3MKQEAgLTY2LDE0ICs3OCwyNSBAQAogICAgICAgICBhcmNoaXZlX3Nv dXJjZSA9M0QgYjY0ZGVjb2RlKCBhcmNoaXZlX3NvdXJjZSApCiAgICAgICAgIGRlc3RfZGlyID0z RCBiNjRkZWNvZGUoIGRlc3RfZGlyICkKPTIwCisgICAgIyBHZXQgYXJjaGl2ZSBmcm9tIFVSTC4K KyAgICBpZiBpc191cmw6CisgICAgICAgIGFyY2hpdmVfZmlsZSA9M0QgdXJsX3RvX2ZpbGUoIGFy Y2hpdmVfc291cmNlLCB0ZW1wZmlsZS5OYW1lZFRlbXBvcj0KYXJ5RmlsZSggZGlyPTNEZGVzdF9k aXIgKS5uYW1lICkKKyAgICBlbGlmIGlzX2ZpbGU6CisgICAgICAgIGFyY2hpdmVfZmlsZSA9M0Qg YXJjaGl2ZV9zb3VyY2UKKworICAgICMgVW5wYWNrIGFyY2hpdmUuCisgICAgY2hlY2tfYXJjaGl2 ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciApCisgICAgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVf ZmlsZSwgZGVzdF9kaXIgKQorCisKK2lmIF9fbmFtZV9fID0zRD0zRCAiX19tYWluX18iOgorICAg ICMgUGFyc2UgY29tbWFuZCBsaW5lLgorICAgIHBhcnNlciA9M0Qgb3B0cGFyc2UuT3B0aW9uUGFy c2VyKCkKKyAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1VJywgJy0tdXJsJywgZGVzdD0zRCdpc191 cmwnLCBhY3Rpb249M0Qic3RvcmVfdHJ1PQplIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyAp CisgICAgcGFyc2VyLmFkZF9vcHRpb24oICctRicsICctLWZpbGUnLCBkZXN0PTNEJ2lzX2ZpbGUn LCBhY3Rpb249M0Qic3RvcmVfdD0KcnVlIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCisg ICAgcGFyc2VyLmFkZF9vcHRpb24oICctZScsICctLWVuY29kZWQnLCBkZXN0PTNEJ2lzX2I2NGVu Y29kZWQnLCBhY3Rpb249Cj0zRCJzdG9yZV90cnVlIiwgZGVmYXVsdD0zREZhbHNlLCBoZWxwPTNE J1NvdXJjZSBhbmQgZGVzdGluYXRpb24gZGlyIHZhbHVlcz0KIGFyZSBiYXNlNjQgZW5jb2RlZC4n ICkKKyAgICAob3B0aW9ucywgYXJncykgPTNEIHBhcnNlci5wYXJzZV9hcmdzKCkKICAgICB0cnk6 Ci0gICAgICAgICMgR2V0IGFyY2hpdmUgZnJvbSBVUkwuCi0gICAgICAgIGlmIGlzX3VybDoKLSAg ICAgICAgICAgIGFyY2hpdmVfZmlsZSA9M0QgdXJsX3RvX2ZpbGUoIGFyY2hpdmVfc291cmNlLCB0 ZW1wZmlsZS5OYW1lZFRlPQptcG9yYXJ5RmlsZSggZGlyPTNEZGVzdF9kaXIgKS5uYW1lICkKLSAg ICAgICAgZWxpZiBpc19maWxlOgotICAgICAgICAgICAgYXJjaGl2ZV9maWxlID0zRCBhcmNoaXZl X3NvdXJjZQotCi0gICAgICAgICMgVW5wYWNrIGFyY2hpdmUuCi0gICAgICAgIHVucGFja19hcmNo aXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGlyICkKKyAgICAgICAgbWFpbihvcHRpb25zLCBhcmdz KQogICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CiAgICAgICAgIHByaW50ICJFcnJvciB1bnBhY2tp bmcgdGFyL2d6IGFyY2hpdmU6ICVzIiAlIGUsIHN5cy5zdGRlcnIKCmRpZmYgLXIgZDYyZjNlNTBi NTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0 Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS90b29scy9wYXJhbWV0ZXJzL2Jhc2ljLnB5 Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvcGFyYW1ldGVycy9iYXNpYy5weQorKysgYi9saWIvZ2Fs YXh5L3Rvb2xzL3BhcmFtZXRlcnMvYmFzaWMucHkKQEAgLTIxNjYsMTQgKzIxNjYsMTUgQEAKICAg ICAgICAgbXVsdGlwbGUgPTNEIHNlbGYubXVsdGlwbGUKPTIwCiAgICAgICAgICMgYWRkIGRhdGFz ZXRzCisgICAgICAgIHZpc2libGVfaGRhID0zRCBvdGhlcl92YWx1ZXMuZ2V0KCBzZWxmLm5hbWUg KQogICAgICAgICBmb3IgaGRhIGluIGhpc3RvcnkuYWN0aXZlX2RhdGFzZXRzX2NoaWxkcmVuX2Fu ZF9yb2xlczoKLSAgICAgICAgICAgIG1hdGNoID0zRCBkYXRhc2V0X21hdGNoZXIuaGRhX21hdGNo KCBoZGEgKQorICAgICAgICAgICAgbWF0Y2ggPTNEIGRhdGFzZXRfbWF0Y2hlci5oZGFfbWF0Y2go IGhkYSwgZW5zdXJlX3Zpc2libGU9M0R2aXM9CmlibGVfaGRhICE9M0QgaGRhICkKICAgICAgICAg ICAgIGlmIG1hdGNoOgogICAgICAgICAgICAgICAgIG0gPTNEIG1hdGNoLmhkYQogICAgICAgICAg ICAgICAgIGRbJ29wdGlvbnMnXVsnaGRhJ10uYXBwZW5kKHsKICAgICAgICAgICAgICAgICAgICAg J2lkJyAgICAgICAgICAgIDogdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBtLmlkICksCiAgICAg ICAgICAgICAgICAgICAgICdoaWQnICAgICAgICAgICA6IG0uaGlkLAotICAgICAgICAgICAgICAg ICAgICAnbmFtZScgICAgICAgICAgOiBtLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICduYW1l JyAgICAgICAgICA6IG0ubmFtZSBpZiBtLnZpc2libGUgZWxzZSAnKGhpZGRlbikgJT0KcycgJSBt Lm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICdzcmMnICAgICAgICAgICA6ICdoZGEnCiAgICAg ICAgICAgICAgICAgfSkKPTIwCgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJj NDEwYzU1NTJkMWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1 IGxpYi9nYWxheHkvdG9vbHMvcGFyc2VyL3htbC5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL3Bh cnNlci94bWwucHkKKysrIGIvbGliL2dhbGF4eS90b29scy9wYXJzZXIveG1sLnB5CkBAIC0zMDYs NiArMzA2LDcgQEAKICAgICAgICAgc3RkZXJyPTNEX19wYXJzZV9hc3NlcnRfbGlzdF9mcm9tX2Vs ZW0oIHRlc3RfZWxlbS5maW5kKCJhc3NlcnRfc3RkPQplcnIiKSApLAogICAgICAgICBleHBlY3Rf ZXhpdF9jb2RlPTNEdGVzdF9lbGVtLmdldCgiZXhwZWN0X2V4aXRfY29kZSIpLAogICAgICAgICBl eHBlY3RfZmFpbHVyZT0zRHN0cmluZ19hc19ib29sKHRlc3RfZWxlbS5nZXQoImV4cGVjdF9mYWls dXJlIiwgRmE9CmxzZSkpLAorICAgICAgICBtYXhzZWNvbmRzPTNEdGVzdF9lbGVtLmdldCgibWF4 c2Vjb25kcyIsIE5vbmUpLAogICAgICkKICAgICBfY29weV90b19kaWN0X2lmX3ByZXNlbnQodGVz dF9lbGVtLCBydmFsLCBbImludGVyYWN0b3IiLCAibnVtX291dHB1dHMiPQpdKQogICAgIHJldHVy biBydmFsCgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEg LXIgMzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxheHkv dG9vbHMvdGVzdC5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL3Rlc3QucHkKKysrIGIvbGliL2dh bGF4eS90b29scy90ZXN0LnB5CkBAIC0xNCw3ICsxNCw3IEBACiBERUZBVUxUX0ZUWVBFID0zRCAn YXV0bycKIERFRkFVTFRfREJLRVkgPTNEICdoZzE3JwogREVGQVVMVF9JTlRFUkFDVE9SID0zRCAi YXBpIiAgIyBEZWZhdWx0IG1lY2hhbmlzbSB0ZXN0IGNvZGUgdXNlcyBmb3IgaW50ZXI9CmFjdGlu ZyB3aXRoIEdhbGF4eSBpbnN0YW5jZS4KLURFRkFVTFRfTUFYX1NFQ1MgPTNEIDEyMAorREVGQVVM VF9NQVhfU0VDUyA9M0QgTm9uZQo9MjAKPTIwCiBAbm90dGVzdApAQCAtNDIsNyArNDIsOSBAQAo9 MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIHRvb2wsIHRlc3RfZGljdCwgaSwgZGVmYXVsdF9p bnRlcmFjdG9yICk6CiAgICAgICAgIG5hbWUgPTNEIHRlc3RfZGljdC5nZXQoICduYW1lJywgJ1Rl c3QtJWQnICUgKGkgKyAxKSApCi0gICAgICAgIG1heHNlY29uZHMgPTNEIGludCggdGVzdF9kaWN0 LmdldCggJ21heHNlY29uZHMnLCBERUZBVUxUX01BWF9TRUNTID0KKSApCisgICAgICAgIG1heHNl Y29uZHMgPTNEIHRlc3RfZGljdC5nZXQoICdtYXhzZWNvbmRzJywgREVGQVVMVF9NQVhfU0VDUyAp CisgICAgICAgIGlmIG1heHNlY29uZHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBtYXhzZWNv bmRzID0zRCBpbnQoIG1heHNlY29uZHMgKQo9MjAKICAgICAgICAgc2VsZi50b29sID0zRCB0b29s CiAgICAgICAgIHNlbGYubmFtZSA9M0QgbmFtZQoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5 NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIx ZTE5YTk3YWE1NSBsaWIvZ2FsYXh5L3Rvb2xzL3Rvb2xib3gvYmFzZS5weQotLS0gYS9saWIvZ2Fs YXh5L3Rvb2xzL3Rvb2xib3gvYmFzZS5weQorKysgYi9saWIvZ2FsYXh5L3Rvb2xzL3Rvb2xib3gv YmFzZS5weQpAQCAtNiw4ICs2LDYgQEAKIGltcG9ydCB0ZW1wZmlsZQo9MjAKIGZyb20gZ2FsYXh5 IGltcG9ydCBlZ2dzCi1lZ2dzLnJlcXVpcmUoICJTUUxBbGNoZW15ID49M0QgMC40IiApCi1mcm9t IHNxbGFsY2hlbXkgaW1wb3J0IGFuZF8KIGVnZ3MucmVxdWlyZSggIk1hcmt1cFNhZmUiICkKIGZy b20gbWFya3Vwc2FmZSBpbXBvcnQgZXNjYXBlCj0yMApAQCAtMTksNyArMTcsNyBAQAogZnJvbSBn YWxheHkudXRpbCBpbXBvcnQgc3RyaW5nX2FzX2Jvb2wKIGZyb20gZ2FsYXh5LnV0aWwuYnVuY2gg aW1wb3J0IEJ1bmNoCj0yMAotZnJvbSB0b29sX3NoZWQudXRpbCBpbXBvcnQgY29tbW9uX3V0aWwK K2Zyb20gdG9vbF9zaGVkLnV0aWwgaW1wb3J0IHNoZWRfdXRpbF9jb21tb24KPTIwCiBmcm9tIC5w YW5lbCBpbXBvcnQgVG9vbFBhbmVsRWxlbWVudHMKIGZyb20gLnBhbmVsIGltcG9ydCBUb29sU2Vj dGlvbkxhYmVsCkBAIC00NDksMTYgKzQ0Nyw2IEBACiAgICAgZGVmIHRvb2xzKCBzZWxmICk6CiAg ICAgICAgIHJldHVybiBzZWxmLl90b29sc19ieV9pZC5pdGVyaXRlbXMoKQo9MjAKLSAgICBkZWYg X19nZXRfdG9vbF9zaGVkX3JlcG9zaXRvcnkoIHNlbGYsIHRvb2xfc2hlZCwgbmFtZSwgb3duZXIs IGluc3RhbGxlPQpkX2NoYW5nZXNldF9yZXZpc2lvbiApOgotICAgICAgICAjIFdlIHN0b3JlIG9u bHkgdGhlIHBvcnQsIGlmIG9uZSBleGlzdHMsIGluIHRoZSBkYXRhYmFzZS4KLSAgICAgICAgdG9v bF9zaGVkID0zRCBjb21tb25fdXRpbC5yZW1vdmVfcHJvdG9jb2xfZnJvbV90b29sX3NoZWRfdXJs KCB0b29sPQpfc2hlZCApCi0gICAgICAgIHJldHVybiBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLmNv bnRleHQucXVlcnkoIHNlbGYuYXBwLmluc3RhbGxfbW9kZT0KbC5Ub29sU2hlZFJlcG9zaXRvcnkg KSBcCi0gICAgICAgICAgICAuZmlsdGVyKCBhbmRfKCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRv b2xTaGVkUmVwb3NpdG9yeS50YWJsZT0KLmMudG9vbF9zaGVkID0zRD0zRCB0b29sX3NoZWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xTaGVk UmVwb3NpdG9yeS50YWJsZT0KLmMubmFtZSA9M0Q9M0QgbmFtZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwuVG9vbFNoZWRSZXBvc2l0b3J5LnRhYmxl PQouYy5vd25lciA9M0Q9M0Qgb3duZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmFwcC5pbnN0YWxsX21vZGVsLlRvb2xTaGVkUmVwb3NpdG9yeS50YWJsZT0KLmMuaW5zdGFsbGVk X2NoYW5nZXNldF9yZXZpc2lvbiA9M0Q9M0QgaW5zdGFsbGVkX2NoYW5nZXNldF9yZXZpc2lvbiAp ICkgXAotICAgICAgICAgICAgLmZpcnN0KCkKLQogICAgIGRlZiBnZXRfdG9vbF9jb21wb25lbnRz KCBzZWxmLCB0b29sX2lkLCB0b29sX3ZlcnNpb249M0ROb25lLCBnZXRfbG9hZGU9CmRfdG9vbHNf YnlfbGluZWFnZT0zREZhbHNlLCBzZXRfc2VsZWN0ZWQ9M0RGYWxzZSApOgogICAgICAgICAiIiIK ICAgICAgICAgUmV0cmlldmUgYWxsIGxvYWRlZCB2ZXJzaW9ucyBvZiBhIHRvb2wgZnJvbSB0aGUg dG9vbGJveCBhbmQgcmV0dXJuPQogYSBzZWxlY3QgbGlzdCBlbmFibGluZwpAQCAtNTg4LDEwICs1 NzYsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgIyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlz c3VlIC0gdGhlIHRhZyB1c2VkIHRvIGJlIG5hPQptZWQgJ2NoYW5nZXNldF9yZXZpc2lvbicuCiAg ICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZF9jaGFuZ2VzZXRfcmV2aXNpb25fZWxlbSA9M0Qg ZWxlbS5maW5kKCAiY2hhbj0KZ2VzZXRfcmV2aXNpb24iICkKICAgICAgICAgICAgICAgICBpbnN0 YWxsZWRfY2hhbmdlc2V0X3JldmlzaW9uID0zRCBpbnN0YWxsZWRfY2hhbmdlc2V0X3JldmlzPQpp b25fZWxlbS50ZXh0Ci0gICAgICAgICAgICAgICAgdG9vbF9zaGVkX3JlcG9zaXRvcnkgPTNEIHNl bGYuX19nZXRfdG9vbF9zaGVkX3JlcG9zaXRvcnkoID0KdG9vbF9zaGVkLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmU9CnBvc2l0b3J5X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZT0KcG9zaXRvcnlfb3duZXIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbj0Kc3RhbGxlZF9jaGFuZ2VzZXRfcmV2aXNpb24gKQorICAgICAg ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3BsaXR0ZWRfcGF0aCA9M0QgcGF0 aC5zcGxpdCgnLycpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzcGxpdHRlZF9wYXRoWzBd ID0zRD0zRCB0b29sX3NoZWQKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHNwbGl0dGVkX3Bh dGhbMl0gPTNEPTNEIHJlcG9zaXRvcnlfb3duZXIKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0 IHNwbGl0dGVkX3BhdGhbM10gPTNEPTNEIHJlcG9zaXRvcnlfbmFtZQorICAgICAgICAgICAgICAg ICAgICBpZiBzcGxpdHRlZF9wYXRoWzRdICE9M0QgaW5zdGFsbGVkX2NoYW5nZXNldF9yZXZpc2lv bjoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBUb29s IFNoZWQgcmVwb3NpdG9yeSBoYXMgPQpiZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAjIHVw ZGF0ZWQgdG8gYSBuZXcgcmV2aXNpb24gYW5kIHRoZSBpbnN0YWxsZWRfY2hhbj0KZ2VzZXRfcmV2 aXNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICMgZWxlbWVudCBpbiBzaGVkX3Rvb2xfY29u Zi54bWwgZmlsZSBoYXMgYmVlbiB1cGRhPQp0ZWQgdG9vCisgICAgICAgICAgICAgICAgICAgICAg ICBsb2cuZGVidWcoIlRoZSBpbnN0YWxsZWRfY2hhbmdlc2V0X3JldmlzaW9uIGZvciB0bz0Kb2wg JXMgaXMgJXMsIHVzaW5nICVzIGluc3RlYWQiLCBwYXRoLCBpbnN0YWxsZWRfY2hhbmdlc2V0X3Jl dmlzaW9uLCBzcGxpdHRlPQpkX3BhdGhbNF0pCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0 YWxsZWRfY2hhbmdlc2V0X3JldmlzaW9uID0zRCBzcGxpdHRlZF9wYXRoWzRdCisgICAgICAgICAg ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICBsb2cuZGVi dWcoIkVycm9yIHdoaWxlIGxvYWRpbmcgdG9vbCAlcyA6ICVzIiwgcGF0aCwgZSkKKyAgICAgICAg ICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHRvb2xfc2hlZF9yZXBvc2l0b3J5ID0z RCBzaGVkX3V0aWxfY29tbW9uLmdldF9pbnN0YWxsZWRfcmU9CnBvc2l0b3J5KHNlbGYuYXBwLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA9CiAgICAgICB0b29sX3NoZWQ9M0R0b29sX3NoZWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID0KICAgICAgIG5hbWU9M0RyZXBvc2l0b3J5X25hbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgID0KICAgICAgIG93bmVyPTNEcmVwb3NpdG9yeV9vd25lciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PQogICAgICAgaW5zdGFsbGVkX2NoYW5nZXNldF9yZXZpc2lvbj0zRGluc3RhbGxlZF9jaGFuZ2Vz ZXRfcmV2aXNpb24pCj0yMAogICAgICAgICAgICAgICAgIGlmIHRvb2xfc2hlZF9yZXBvc2l0b3J5 OgogICAgICAgICAgICAgICAgICAgICAjIE9ubHkgbG9hZCB0b29scyBpZiB0aGUgcmVwb3NpdG9y eSBpcyBub3QgZGVhY3RpdmF0ZWQ9CiBvciB1bmluc3RhbGxlZC4KCmRpZmYgLXIgZDYyZjNlNTBi NTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0 Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS91dGlsL19faW5pdF9fLnB5Ci0tLSBhL2xp Yi9nYWxheHkvdXRpbC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L3V0aWwvX19pbml0X18u cHkKQEAgLTI5LDcgKzI5LDcgQEAKPTIwCiBmcm9tIGVtYWlsLk1JTUVUZXh0IGltcG9ydCBNSU1F VGV4dAo9MjAKLWZyb20gb3MucGF0aCBpbXBvcnQgcmVscGF0aAorZnJvbSBvcy5wYXRoIGltcG9y dCByZWxwYXRoLCBub3JtcGF0aAogZnJvbSBoYXNobGliIGltcG9ydCBtZDUKIGZyb20gaXRlcnRv b2xzIGltcG9ydCBpemlwCj0yMApAQCAtMzUyLDcgKzM1MiwxMSBAQAogICAgIGVsaWYgaXNpbnN0 YW5jZSggdGltZSwgZGF0ZXRpbWUgKToKICAgICAgICAgZGlmZiA9M0Qgbm93IC0gdGltZQogICAg IGVsaWYgaXNpbnN0YW5jZSggdGltZSwgYmFzZXN0cmluZyApOgotICAgICAgICB0aW1lID0zRCBk YXRldGltZS5zdHJwdGltZSggdGltZSwgIiVZLSVtLSVkVCVIOiVNOiVTLiVmIiApCisgICAgICAg IHRyeToKKyAgICAgICAgICAgIHRpbWUgPTNEIGRhdGV0aW1lLnN0cnB0aW1lKCB0aW1lLCAiJVkt JW0tJWRUJUg6JU06JVMuJWYiICkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAg ICAgICAjIE15U1FMIG1heSBub3Qgc3VwcG9ydCBtaWNyb3NlY29uZHMgcHJlY2lzaW9uCisgICAg ICAgICAgICB0aW1lID0zRCBkYXRldGltZS5zdHJwdGltZSggdGltZSwgIiVZLSVtLSVkVCVIOiVN OiVTIiApCiAgICAgICAgIGRpZmYgPTNEIG5vdyAtIHRpbWUKICAgICBlbHNlOgogICAgICAgICBk aWZmID0zRCBub3cgLSBub3cKQEAgLTEyNzMsNiArMTI3NywyMiBAQAogICAgICAgICAgICAgcmFp c2UKPTIwCj0yMAorZGVmIHNhZmVfcmVscGF0aChwYXRoKToKKyAgICAiIiIKKyAgICBHaXZlbiB3 aGF0IHdlIGV4cGVjdCB0byBiZSBhIHJlbGF0aXZlIHBhdGgsIGRldGVybWluZSB3aGV0aGVyIHRo ZSBwYXRoCisgICAgd291bGQgZXhpc3QgaW5zaWRlIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKwor ICAgIDp0eXBlICAgcGF0aDogICBzdHJpbmcKKyAgICA6cGFyYW0gIHBhdGg6ICAgYSBwYXRoIHRv IGNoZWNrCisgICAgOnJ0eXBlOiAgICAgICAgIGJvb2wKKyAgICA6cmV0dXJuczogICAgICAgYGBU cnVlYGAgaWYgcGF0aCBpcyByZWxhdGl2ZSBhbmQgZG9lcyBub3QgcmVmZXJlbmNlIGEgPQpwYXRo CisgICAgICAgIGluIGEgcGFyZW50IGRpcmVjdG9yeSwgYGBGYWxzZWBgIG90aGVyd2lzZS4KKyAg ICAiIiIKKyAgICBpZiBwYXRoLnN0YXJ0c3dpdGgob3Muc2VwKSBvciBub3JtcGF0aChwYXRoKS5z dGFydHN3aXRoKG9zLnBhcmRpcik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBU cnVlCisKKwogY2xhc3MgRXhlY3V0aW9uVGltZXIob2JqZWN0KToKPTIwCiAgICAgZGVmIF9faW5p dF9fKHNlbGYpOgoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUy ZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvZ2Fs YXh5L3ZlcnNpb24ucHkKLS0tIGEvbGliL2dhbGF4eS92ZXJzaW9uLnB5CisrKyBiL2xpYi9nYWxh eHkvdmVyc2lvbi5weQpAQCAtMSwzICsxLDMgQEAKIFZFUlNJT05fTUFKT1IgPTNEICIxNS4xMCIK LVZFUlNJT05fTUlOT1IgPTNEICJkZXYiCitWRVJTSU9OX01JTk9SID0zRCAiMiIKIFZFUlNJT04g PTNEIFZFUlNJT05fTUFKT1IgKyAoJy4nICsgVkVSU0lPTl9NSU5PUiBpZiBWRVJTSU9OX01JTk9S IGVsc2UgJycpCgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJk MWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxh eHkvd2ViYXBwcy9nYWxheHkvYXBpL2xkYV9kYXRhc2V0cy5weQotLS0gYS9saWIvZ2FsYXh5L3dl YmFwcHMvZ2FsYXh5L2FwaS9sZGFfZGF0YXNldHMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBz L2dhbGF4eS9hcGkvbGRhX2RhdGFzZXRzLnB5CkBAIC00MTMsNyArNDEzLDcgQEAKPTIwCiAgICAg ICAgIDpwYXJhbSAgZW5jb2RlZF9mb2xkZXJfaWQ6ICAgICAgdGhlIGVuY29kZWQgaWQgb2YgdGhl IGZvbGRlciB0byBpbT0KcG9ydCBkYXRhc2V0KHMpIHRvCiAgICAgICAgIDp0eXBlICAgZW5jb2Rl ZF9mb2xkZXJfaWQ6ICAgICAgYW4gZW5jb2RlZCBpZCBzdHJpbmcKLSAgICAgICAgOnBhcmFtICBz b3VyY2U6ICAgICAgICAgICAgICAgICBzb3VyY2UgdGhlIGRhdGFzZXRzIHNob3VsZCBiZSBsb2Fk PQplZCBmb3JtCisgICAgICAgIDpwYXJhbSAgc291cmNlOiAgICAgICAgICAgICAgICAgc291cmNl IHRoZSBkYXRhc2V0cyBzaG91bGQgYmUgbG9hZD0KZWQgZnJvbQogICAgICAgICA6dHlwZSAgIHNv dXJjZTogICAgICAgICAgICAgICAgIHN0cgogICAgICAgICA6cGFyYW0gIGxpbmtfZGF0YTogICAg ICAgICAgICAgIGZsYWcgd2hldGhlciB0byBsaW5rIHRoZSBkYXRhc2V0IHQ9Cm8gZGF0YSBvciBj b3B5IGl0IHRvIEdhbGF4eSwgZGVmYXVsdHMgdG8gY29weQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHdoaWxlIGxpbmtpbmcgaXMgc2V0IHRvIFRydWUgYWxsIHM9Cnlt bGlua3Mgd2lsbCBiZSByZXNvbHZlZCBfb25jZV8KQEAgLTQzNCw3ICs0MzQsNyBAQAogICAgICAg ICBrd2RbICd0b19wb3NpeF9saW5lcycgXSA9M0QgJ1RydWUnCiAgICAgICAgIGt3ZFsgJ2Ria2V5 JyBdID0zRCBrd2QuZ2V0KCAnZGJrZXknLCAnPycgKQogICAgICAgICBrd2RbICdmaWxlX3R5cGUn IF0gPTNEIGt3ZC5nZXQoICdmaWxlX3R5cGUnLCAnYXV0bycgKQotICAgICAgICBrd2RbJyBsaW5r X2RhdGFfb25seScgXSA9M0QgJ2xpbmtfdG9fZmlsZXMnIGlmIHV0aWwuc3RyaW5nX2FzX2Jvb2w9 Cigga3dkLmdldCggJ2xpbmtfZGF0YScsIEZhbHNlICkgKSBlbHNlICdjb3B5X2ZpbGVzJworICAg ICAgICBrd2RbJ2xpbmtfZGF0YV9vbmx5J10gPTNEICdsaW5rX3RvX2ZpbGVzJyBpZiB1dGlsLnN0 cmluZ19hc19ib29sKCA9Cmt3ZC5nZXQoICdsaW5rX2RhdGEnLCBGYWxzZSApICkgZWxzZSAnY29w eV9maWxlcycKICAgICAgICAgZW5jb2RlZF9mb2xkZXJfaWQgPTNEIGt3ZC5nZXQoICdlbmNvZGVk X2ZvbGRlcl9pZCcsIE5vbmUgKQogICAgICAgICBpZiBlbmNvZGVkX2ZvbGRlcl9pZCBpcyBub3Qg Tm9uZToKICAgICAgICAgICAgIGZvbGRlcl9pZCA9M0Qgc2VsZi5mb2xkZXJfbWFuYWdlci5jdXRf YW5kX2RlY29kZSggdHJhbnMsIGVuY29kPQplZF9mb2xkZXJfaWQgKQoKZGlmZiAtciBkNjJmM2U1 MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjll NDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9yZW1v dGVfZmlsZXMucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvcmVtb3RlX2Zp bGVzLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3JlbW90ZV9maWxlcy5w eQpAQCAtNDIsNiArNDIsOCBAQAogICAgICAgICAgICAgaWYgdXNlcl9iYXNlX2RpciBpcyBOb25l OgogICAgICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQ29uZmlnRG9lc05vdEFsbG93RXhj ZXB0aW9uKCAnVGhlIGNvbmZpZ3U9CnJhdGlvbiBvZiB0aGlzIEdhbGF4eSBpbnN0YW5jZSBkb2Vz IG5vdCBhbGxvdyB1cGxvYWQgZnJvbSB1c2VyIGRpcmVjdG9yaWVzLj0KJyApCiAgICAgICAgICAg ICBmdWxsX2ltcG9ydF9kaXIgPTNEIG9zLnBhdGguam9pbiggdXNlcl9iYXNlX2RpciwgdXNlcl9s b2dpbiApCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZnVsbF9pbXBvcnRfZGly KToKKyAgICAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLk9iamVjdE5vdEZvdW5kKCdZb3Ug ZG8gbm90IGhhdmUgYW55IGZpbGVzPQogaW4geW91ciB1c2VyIGRpcmVjdG9yeS4gVXNlIEZUUCB0 byB1cGxvYWQgdGhlcmUuJykKICAgICAgICAgICAgIGlmIGZ1bGxfaW1wb3J0X2RpciBpcyBub3Qg Tm9uZToKICAgICAgICAgICAgICAgICBpZiBmb3JtYXQgPTNEPTNEICdqc3RyZWUnOgogICAgICAg ICAgICAgICAgICAgICBkaXNhYmxlID0zRCBrd2QuZ2V0KCAnZGlzYWJsZScsICdmb2xkZXJzJykK QEAgLTUxLDYgKzUzLDggQEAKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwg ZXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCBzdHIoIGV4Y2Vw dGlvbiApICkKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuSW50ZXJu YWxTZXJ2ZXJFcnJvciggJ0NvdWxkIG5vdCBjPQpyZWF0ZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9m IHRoZSBnaXZlbiBmb2xkZXI6ICcgKyBzdHIoIGZ1bGxfaW1wb3J0X2RpciApICkKKyAgICAgICAg ICAgICAgICAgICAgaWYgbm90IHJlc3BvbnNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFp c2UgZXhjZXB0aW9ucy5PYmplY3ROb3RGb3VuZCgnWW91IGRvIG5vdCBoYXZlIGE9Cm55IGZpbGVz IGluIHlvdXIgdXNlciBkaXJlY3RvcnkuIFVzZSBGVFAgdG8gdXBsb2FkIHRoZXJlLicpCiAgICAg ICAgICAgICAgICAgZWxpZiBmb3JtYXQgPTNEPTNEICdhamF4JzoKICAgICAgICAgICAgICAgICAg ICAgcmFpc2UgZXhjZXB0aW9ucy5Ob3RJbXBsZW1lbnRlZCggJ05vdCBpbXBsZW1lbnRlZCB5ZXQu PQogU29ycnkuJyApCiAgICAgICAgICAgICAgICAgZWxzZToKCmRpZmYgLXIgZDYyZjNlNTBiNTY3 YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0K NGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9h ZG1pbl90b29sc2hlZC5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xs ZXJzL2FkbWluX3Rvb2xzaGVkLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29u dHJvbGxlcnMvYWRtaW5fdG9vbHNoZWQucHkKQEAgLTM5MCwxMSArMzkwLDExIEBACj0yMAogICAg IEB3ZWIuanNvbgogICAgIEB3ZWIucmVxdWlyZV9hZG1pbgotICAgIGRlZiBnZXRfZmlsZV9jb250 ZW50cyggc2VsZiwgdHJhbnMsIGZpbGVfcGF0aCApOgorICAgIGRlZiBnZXRfZmlsZV9jb250ZW50 cyggc2VsZiwgdHJhbnMsIGZpbGVfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgogICAgICAgICAjIEF2 b2lkIGNhY2hpbmcKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJhZ21hJ10gPTNE ICduby1jYWNoZScKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhwaXJlcyddID0z RCAnMCcKLSAgICAgICAgcmV0dXJuIHN1Yy5nZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCBm aWxlX3BhdGggKQorICAgICAgICByZXR1cm4gc3VjLmdldF9yZXBvc2l0b3J5X2ZpbGVfY29udGVu dHMoIHRyYW5zLmFwcCwgZmlsZV9wYXRoLCByZXA9Cm9zaXRvcnlfaWQgKQo9MjAKICAgICBAd2Vi LmV4cG9zZQogICAgIEB3ZWIucmVxdWlyZV9hZG1pbgpAQCAtOTE4LDExICs5MTgsMTEgQEAKPTIw CiAgICAgQHdlYi5qc29uCiAgICAgQHdlYi5yZXF1aXJlX2FkbWluCi0gICAgZGVmIG9wZW5fZm9s ZGVyKCBzZWxmLCB0cmFucywgZm9sZGVyX3BhdGggKToKKyAgICBkZWYgb3Blbl9mb2xkZXIoIHNl bGYsIHRyYW5zLCBmb2xkZXJfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgogICAgICAgICAjIEF2b2lk IGNhY2hpbmcKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJhZ21hJ10gPTNEICdu by1jYWNoZScKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhwaXJlcyddID0zRCAn MCcKLSAgICAgICAgcmV0dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCBmb2xk ZXJfcGF0aCApCisgICAgICAgIHJldHVybiBzdWMub3Blbl9yZXBvc2l0b3J5X2ZpbGVzX2ZvbGRl ciggdHJhbnMuYXBwLCBmb2xkZXJfcGF0aCwgcj0KZXBvc2l0b3J5X2lkICkKPTIwCiAgICAgQHdl Yi5leHBvc2UKICAgICBAd2ViLnJlcXVpcmVfYWRtaW4KQEAgLTEyOTYsNiArMTI5NiwyMSBAQAog ICAgICAgICAgICAgICAgICMgSnVzdCBpbiBjYXNlIHRoZSB0b29sX3NlY3Rpb24uaWQgZGlmZmVy cyBmcm9tIHRvb2xfcGFuZWw9Cl9zZWN0aW9uX2lkLCB3aGljaCBpdCBzaG91bGRuJ3QuLi4KICAg ICAgICAgICAgICAgICB0b29sX3BhbmVsX3NlY3Rpb25faWQgPTNEIHN0ciggdG9vbF9zZWN0aW9u LmlkICkKICAgICAgICAgaWYgdG9vbF9zaGVkX3JlcG9zaXRvcnkuc3RhdHVzID0zRD0zRCB0cmFu cy5pbnN0YWxsX21vZGVsLlRvb2xTaGVkPQpSZXBvc2l0b3J5Lmluc3RhbGxhdGlvbl9zdGF0dXMu VU5JTlNUQUxMRUQ6CisgICAgICAgICAgICByZXBvc2l0b3J5X3R5cGUgPTNEIHN1Yy5nZXRfcmVw b3NpdG9yeV90eXBlX2Zyb21fdG9vbF9zaGVkKHRyYT0KbnMuYXBwLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9v bF89CnNoZWRfdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbF89CnNoZWRfcmVwb3NpdG9yeS5uYW1lLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdG9vbF89CnNoZWRfcmVwb3NpdG9yeS5vd25lcikKKyAgICAgICAgICAgIGlm IHJlcG9zaXRvcnlfdHlwZSA9M0Q9M0QgcnRfdXRpbC5UT09MX0RFUEVOREVOQ1lfREVGSU5JVElP TjoKKyAgICAgICAgICAgICAgICAjIFJlcG9zaXRvcmllcyBvZiB0eXBlIHRvb2xfZGVwZW5kZW5j eV9kZWZpbml0aW9uIG11c3QgZ2V0PQogdGhlIGxhdGVzdAorICAgICAgICAgICAgICAgICMgbWV0 YWRhdGEgZnJvbSB0aGUgVG9vbCBTaGVkIHNpbmNlIHRoZXkgaGF2ZSBvbmx5IGEgc2luZ2w9CmUg aW5zdGFsbGFibGUKKyAgICAgICAgICAgICAgICAjIHJldmlzaW9uLgorICAgICAgICAgICAgICAg IHJhd190ZXh0ID0zRCBzdWMuZ2V0X3Rvb2xfZGVwZW5kZW5jeV9kZWZpbml0aW9uX21ldGFkYXRh X2Y9CnJvbV90b29sX3NoZWQodHJhbnMuYXBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAg ICAgIHRvb2xfc2hlZF91cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0KICAgICAgICAgICAgdG9vbF9z aGVkX3JlcG9zaXRvcnkubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPQogICAgICAgICAgICB0b29s X3NoZWRfcmVwb3NpdG9yeS5vd25lcikKKyAgICAgICAgICAgICAgICBuZXdfbWV0YSA9M0QganNv bi5sb2FkcyhyYXdfdGV4dCkKKyAgICAgICAgICAgICAgICAjIENsZWFuIHVwIG9sZCByZXBvc2l0 b3J5IGRlcGVuZGVuY3kgYW5kIHRvb2wgZGVwZW5kZW5jeSByPQplbGF0aW9uc2hpcHMuCisgICAg ICAgICAgICAgICAgc3VjLmNsZWFuX2RlcGVuZGVuY3lfcmVsYXRpb25zaGlwcyh0cmFucywgbmV3 X21ldGEsIHRvb2xfcz0KaGVkX3JlcG9zaXRvcnksIHRvb2xfc2hlZF91cmwpCiAgICAgICAgICAg ICAjIFRoZSByZXBvc2l0b3J5J3Mgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCBmcm9tICdVbmluc3Rh bGxlZCcgdD0KbyAnTmV3JyB3aGVuIGluaXRpYXRpbmcgcmVpbnN0YWxsCiAgICAgICAgICAgICAj IHNvIHRoZSByZXBvc2l0b3J5X2luc3RhbGxhdGlvbl91cGRhdGVyIHdpbGwgZnVuY3Rpb24uCiAg ICAgICAgICAgICB0b29sX3NoZWRfcmVwb3NpdG9yeSA9M0Qgc3VjLmNyZWF0ZV9vcl91cGRhdGVf dG9vbF9zaGVkX3JlcG9zaT0KdG9yeSggdHJhbnMuYXBwLApAQCAtMTQ4OCw3ICsxNTAzLDcgQEAK ICAgICAgICAgcmVwb3NpdG9yeV9jbG9uZV91cmwgPTNEIGNvbW1vbl91dGlsLmdlbmVyYXRlX2Ns b25lX3VybF9mb3JfaW5zdGFsPQpsZWRfcmVwb3NpdG9yeSggdHJhbnMuYXBwLCB0b29sX3NoZWRf cmVwb3NpdG9yeSApCiAgICAgICAgIG1ldGFkYXRhID0zRCB0b29sX3NoZWRfcmVwb3NpdG9yeS5t ZXRhZGF0YQogICAgICAgICB0b29sX3NoZWRfdXJsID0zRCBjb21tb25fdXRpbC5nZXRfdG9vbF9z aGVkX3VybF9mcm9tX3Rvb2xfc2hlZF9yZWc9CmlzdHJ5KCB0cmFucy5hcHAsIHN0ciggdG9vbF9z aGVkX3JlcG9zaXRvcnkudG9vbF9zaGVkICkgKQotICAgICAgICB0b29sX3BhdGgsIHJlbGF0aXZl X2luc3RhbGxfZGlyID0zRCB0b29sX3NoZWRfcmVwb3NpdG9yeS5nZXRfdG9vbF89CnJlbGF0aXZl X3BhdGgoIHRyYW5zLmFwcCApCisgICAgICAgIHRvb2xfcGF0aCA9M0QgdG9vbF9zaGVkX3JlcG9z aXRvcnkuZ2V0X3Rvb2xfcmVsYXRpdmVfcGF0aCggdHJhbnMuYT0KcHAgKVswXQogICAgICAgICBp ZiBsYXRlc3RfY2hhbmdlc2V0X3JldmlzaW9uIGFuZCBsYXRlc3RfY3R4X3JldjoKICAgICAgICAg ICAgICMgVGhlcmUgYXJlIHVwZGF0ZXMgYXZhaWxhYmxlIGluIHRoZSB0b29sIHNoZWQgZm9yIHRo ZSByZXBvc2l0PQpvcnksIHNvIHVzZSB0aGUgcmVjZWl2ZWQKICAgICAgICAgICAgICMgZGVwZW5k ZW5jeSBpbmZvcm1hdGlvbiB3aGljaCB3YXMgcmV0cmlldmVkIGZyb20gdGhlIHRvb2wgc2hlPQpk LgpAQCAtMTQ5NywyMCArMTUxMiwxNCBAQAogICAgICAgICAgICAgcmVhZG1lX2ZpbGVzX2RpY3Qg PTNEIHVwZGF0ZWRfcmVwb19pbmZvX2RpY3QuZ2V0KCAncmVhZG1lX2ZpbGU9CnNfZGljdCcsIE5v bmUgKQogICAgICAgICAgICAgaW5jbHVkZXNfZGF0YV9tYW5hZ2VycyA9M0QgdXBkYXRlZF9yZXBv X2luZm9fZGljdC5nZXQoICdpbmNsdWQ9CmVzX2RhdGFfbWFuYWdlcnMnLCBGYWxzZSApCiAgICAg ICAgICAgICBpbmNsdWRlc19kYXRhdHlwZXMgPTNEIHVwZGF0ZWRfcmVwb19pbmZvX2RpY3QuZ2V0 KCAnaW5jbHVkZXNfZD0KYXRhdHlwZXMnLCBGYWxzZSApCi0gICAgICAgICAgICBpbmNsdWRlc190 b29scyA9M0QgdXBkYXRlZF9yZXBvX2luZm9fZGljdC5nZXQoICdpbmNsdWRlc190b29scz0KJywg RmFsc2UgKQotICAgICAgICAgICAgaW5jbHVkZXNfdG9vbHNfZm9yX2Rpc3BsYXlfaW5fdG9vbF9w YW5lbCA9M0QgdXBkYXRlZF9yZXBvX2luZm89Cl9kaWN0LmdldCggJ2luY2x1ZGVzX3Rvb2xzX2Zv cl9kaXNwbGF5X2luX3Rvb2xfcGFuZWwnLCBGYWxzZSApCiAgICAgICAgICAgICBpbmNsdWRlc193 b3JrZmxvd3MgPTNEIHVwZGF0ZWRfcmVwb19pbmZvX2RpY3QuZ2V0KCAnaW5jbHVkZXNfdz0Kb3Jr Zmxvd3MnLCBGYWxzZSApCi0gICAgICAgICAgICBoYXNfcmVwb3NpdG9yeV9kZXBlbmRlbmNpZXMg PTNEIHVwZGF0ZWRfcmVwb19pbmZvX2RpY3QuZ2V0KCAnaD0KYXNfcmVwb3NpdG9yeV9kZXBlbmRl bmNpZXMnLCBGYWxzZSApCiAgICAgICAgICAgICBpbmNsdWRlc190b29sX2RlcGVuZGVuY2llcyA9 M0QgdXBkYXRlZF9yZXBvX2luZm9fZGljdC5nZXQoICdpbj0KY2x1ZGVzX3Rvb2xfZGVwZW5kZW5j aWVzJywgRmFsc2UgKQogICAgICAgICAgICAgcmVwb19pbmZvX2RpY3QgPTNEIHVwZGF0ZWRfcmVw b19pbmZvX2RpY3RbICdyZXBvX2luZm9fZGljdCcgXQogICAgICAgICBlbHNlOgogICAgICAgICAg ICAgIyBUaGVyZSBhcmUgbm8gdXBkYXRlcyBhdmFpbGFibGUgZnJvbSB0aGUgdG9vbCBzaGVkIGZv ciB0aGUgcmU9CnBvc2l0b3J5LCBzbyB1c2UgaXRzIGxvY2FsbHkgc3RvcmVkIG1ldGFkYXRhLgot ICAgICAgICAgICAgaGFzX3JlcG9zaXRvcnlfZGVwZW5kZW5jaWVzID0zRCBGYWxzZQogICAgICAg ICAgICAgaW5jbHVkZXNfZGF0YV9tYW5hZ2VycyA9M0QgRmFsc2UKICAgICAgICAgICAgIGluY2x1 ZGVzX2RhdGF0eXBlcyA9M0QgRmFsc2UKICAgICAgICAgICAgIGluY2x1ZGVzX3Rvb2xfZGVwZW5k ZW5jaWVzID0zRCBGYWxzZQotICAgICAgICAgICAgaW5jbHVkZXNfdG9vbHMgPTNEIEZhbHNlCi0g ICAgICAgICAgICBpbmNsdWRlc190b29sc19mb3JfZGlzcGxheV9pbl90b29sX3BhbmVsID0zRCBG YWxzZQogICAgICAgICAgICAgaW5jbHVkZXNfd29ya2Zsb3dzID0zRCBGYWxzZQogICAgICAgICAg ICAgcmVhZG1lX2ZpbGVzX2RpY3QgPTNEIE5vbmUKICAgICAgICAgICAgIHRvb2xfZGVwZW5kZW5j aWVzID0zRCBOb25lCkBAIC0xNTE5LDE0ICsxNTI4LDYgQEAKICAgICAgICAgICAgICAgICAgICAg aW5jbHVkZXNfZGF0YV9tYW5hZ2VycyA9M0QgVHJ1ZQogICAgICAgICAgICAgICAgIGlmICdkYXRh dHlwZXMnIGluIG1ldGFkYXRhOgogICAgICAgICAgICAgICAgICAgICBpbmNsdWRlc19kYXRhdHlw ZXMgPTNEIFRydWUKLSAgICAgICAgICAgICAgICBpZiAndG9vbHMnIGluIG1ldGFkYXRhOgotICAg ICAgICAgICAgICAgICAgICBpbmNsdWRlc190b29scyA9M0QgVHJ1ZQotICAgICAgICAgICAgICAg ICAgICAjIEhhbmRsZSBpbmNsdWRlc190b29sc19mb3JfZGlzcGxheV9pbl90b29sX3BhbmVsLgot ICAgICAgICAgICAgICAgICAgICB0b29sX2RpY3RzID0zRCBtZXRhZGF0YVsgJ3Rvb2xzJyBdCi0g ICAgICAgICAgICAgICAgICAgIGZvciB0b29sX2RpY3QgaW4gdG9vbF9kaWN0czoKLSAgICAgICAg ICAgICAgICAgICAgICAgIGlmIHRvb2xfZGljdC5nZXQoICdhZGRfdG9fdG9vbF9wYW5lbCcsIFRy dWUgKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlc190b29sc19mb3JfZGlz cGxheV9pbl90b29sX3BhbmVsID0zRCBUPQpydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBicmVhawogICAgICAgICAgICAgICAgIGlmICd0b29sX2RlcGVuZGVuY2llcycgaW4gbWV0YWRh dGE6CiAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzX3Rvb2xfZGVwZW5kZW5jaWVzID0zRCBU cnVlCiAgICAgICAgICAgICAgICAgaWYgJ3dvcmtmbG93cycgaW4gbWV0YWRhdGE6CkBAIC0xNTU1 LDggKzE1NTYsNyBAQAogICAgICAgICBkZXBlbmRlbmNpZXNfZm9yX3JlcG9zaXRvcnlfZGljdCA9 M0QgaXJtLmdldF9kZXBlbmRlbmNpZXNfZm9yX3JlcG89CnNpdG9yeSggdG9vbF9zaGVkX3VybCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPQogICAgICByZXBvX2luZm9fZGljdCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPQogICAgICBpbmNsdWRlc190b29sX2RlcGVuZGVuY2llcywKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PQogICAgICB1cGRhdGluZz0zREZhbHNlICkKLSAgICAgICAgaGFzX3JlcG9zaXRvcnlfZGVwZW5k ZW5jaWVzID0zRCBkZXBlbmRlbmNpZXNfZm9yX3JlcG9zaXRvcnlfZGljdC5nPQpldCggJ2hhc19y ZXBvc2l0b3J5X2RlcGVuZGVuY2llcycsIEZhbHNlICkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPQogICAg ICB1cGRhdGluZz0zRFRydWUgKQogICAgICAgICBpbmNsdWRlc190b29sX2RlcGVuZGVuY2llcyA9 M0QgZGVwZW5kZW5jaWVzX2Zvcl9yZXBvc2l0b3J5X2RpY3QuZ2U9CnQoICdpbmNsdWRlc190b29s X2RlcGVuZGVuY2llcycsIEZhbHNlICkKICAgICAgICAgaW5jbHVkZXNfdG9vbHMgPTNEIGRlcGVu ZGVuY2llc19mb3JfcmVwb3NpdG9yeV9kaWN0LmdldCggJ2luY2x1ZGVzPQpfdG9vbHMnLCBGYWxz ZSApCiAgICAgICAgIGluY2x1ZGVzX3Rvb2xzX2Zvcl9kaXNwbGF5X2luX3Rvb2xfcGFuZWwgPTNE IGRlcGVuZGVuY2llc19mb3JfcmVwbz0Kc2l0b3J5X2RpY3QuZ2V0KCAnaW5jbHVkZXNfdG9vbHNf Zm9yX2Rpc3BsYXlfaW5fdG9vbF9wYW5lbCcsIEZhbHNlICkKCmRpZmYgLXIgZDYyZjNlNTBiNTY3 YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0K NGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9y ZXF1ZXN0c19hZG1pbi5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xs ZXJzL3JlcXVlc3RzX2FkbWluLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29u dHJvbGxlcnMvcmVxdWVzdHNfYWRtaW4ucHkKQEAgLTEwLDE1ICsxMCw3IEBACiBmcm9tIGdhbGF4 eSBpbXBvcnQgZWdncwogZWdncy5yZXF1aXJlKCAiTWFya3VwU2FmZSIgKQogZnJvbSBtYXJrdXBz YWZlIGltcG9ydCBlc2NhcGUKLWVnZ3MucmVxdWlyZSgiYW1xcCIpCi1pbXBvcnQgYW1xcAotdHJ5 OgotICAgIGltcG9ydCBwZXhwZWN0Ci1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGV4cGVjdCA9 M0QgTm9uZQo9MjAKLVBFWFBFQ1RfSU1QT1JUX01FU1NBR0UgPTNEICgnVGhlIFB5dGhvbiBwZXhw ZWN0IHBhY2thZ2UgaXMgcmVxdWlyZWQgdG8gdXNlPQogdGhpcyAnCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICdmZWF0dXJlLCBwbGVhc2UgaW5zdGFsbCBpdCcpCj0yMAogbG9nID0zRCBsb2dn aW5nLmdldExvZ2dlciggX19uYW1lX18gKQo9MjAKQEAgLTM3MiwyMDcgKzM2NCw2IEBACiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0 aW9uPTNEJ21hbmFnZT0KX2RhdGFzZXRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWQ9M0RzYW1wPQpsZV9pZCApICkK PTIwCi0gICAgQHdlYi5leHBvc2UKLSAgICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgc2Vs ZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyKCBzZWxmLCB0cmFucywgKiprd2QgKToKLSAgICAgICAg cGFyYW1zID0zRCB1dGlsLlBhcmFtcygga3dkICkKLSAgICAgICAgbWVzc2FnZSA9M0QgdXRpbC5y ZXN0b3JlX3RleHQoIHBhcmFtcy5nZXQoICdtZXNzYWdlJywgJycgKSApCi0gICAgICAgIHN0YXR1 cyA9M0QgcGFyYW1zLmdldCggJ3N0YXR1cycsICdkb25lJyApCi0gICAgICAgIHJlcXVlc3RfaWQg PTNEIGt3ZC5nZXQoICdyZXF1ZXN0X2lkJywgTm9uZSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZp Y2VfaWQgPTNEIGt3ZC5nZXQoICdleHRlcm5hbF9zZXJ2aWNlX2lkJywgTm9uZSApCi0gICAgICAg IHJlcXVlc3QgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLlJlcXVlc3Qg KS5nZXQoIHRyYT0KbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCByZXF1ZXN0X2lkICkgKQotICAgICAg ICBleHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2Rl bC5FeHRlcm5hbFM9CmVydmljZSApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBleHRl cm5hbF9zZXJ2aWNlX2lkICkgKQotICAgICAgICAjIExvYWQgdGhlIGRhdGEgdHJhbnNmZXIgc2V0 dGluZ3MKLSAgICAgICAgZXh0ZXJuYWxfc2VydmljZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGlu Z3MoIHRyYW5zICkKLSAgICAgICAgc2NwX2NvbmZpZ3MgPTNEIGV4dGVybmFsX3NlcnZpY2UuZGF0 YV90cmFuc2ZlclsgdHJhbnMubW9kZWwuRXh0ZXJuPQphbFNlcnZpY2UuZGF0YV90cmFuc2Zlcl9w cm90b2NvbC5TQ1AgXQotICAgICAgICBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlciA9M0Qg dXRpbC5yZXN0b3JlX3RleHQoIHBhcmFtcy5nZXQoICc9CnNlbGVjdGVkX2RhdGFzZXRzX3RvX3Ry YW5zZmVyJywgJycgKSApCi0gICAgICAgIGlmIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVy OgotICAgICAgICAgICAgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXIgPTNEIHNlbGVjdGVk X2RhdGFzZXRzX3RvX3RyYW5zZmU9CnIuc3BsaXQoJywnKQotICAgICAgICBlbHNlOgotICAgICAg ICAgICAgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXIgPTNEIFtdCi0gICAgICAgIHNhbXBs ZV9pZCA9M0Qga3dkLmdldCggJ3NhbXBsZV9pZCcsICdub25lJyApCi0gICAgICAgIHNhbXBsZV9p ZF9zZWxlY3RfZmllbGQgPTNEIHNlbGYuX19idWlsZF9zYW1wbGVfaWRfc2VsZWN0X2ZpZWxkKCB0 cj0KYW5zLCByZXF1ZXN0LCBzYW1wbGVfaWQgKQotICAgICAgICBpZiBzYW1wbGVfaWQgIT0zRCAn bm9uZSc6Ci0gICAgICAgICAgICBzYW1wbGUgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRy YW5zLm1vZGVsLlNhbXBsZSApLmdldCggdD0KcmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIHNhbXBs ZV9pZCApICkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNhbXBsZSA9M0QgTm9uZQotICAg ICAgICAjIFRoZSBfX2dldF9maWxlcygpIG1ldGhvZCByZWRpcmVjdHMgaGVyZSB3aXRoIGEgc3Rh dHVzIG9mICdlcnJvcic9CiBhbmQgYSBtZXNzYWdlIGlmIHRoZXJlCi0gICAgICAgICMgd2FzIGEg cHJvYmxlbSByZXRyaWV2aW5nIHRoZSBmaWxlcy4KLSAgICAgICAgaWYgcGFyYW1zLmdldCggJ3Nl bGVjdF9kYXRhc2V0c190b190cmFuc2Zlcl9idXR0b24nLCBGYWxzZSApOgotICAgICAgICAgICAg IyBHZXQgdGhlIHNhbXBsZSB0aGF0IHdhcyBzZXF1ZW5jZWQgdG8gcHJvZHVjZSB0aGVzZSBkYXRh c2V0cy4KLSAgICAgICAgICAgIGlmIHNhbXBsZV9pZCA9M0Q9M0QgJ25vbmUnOgotICAgICAgICAg ICAgICAgIGRlbCBrd2RbICdzZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXJfYnV0dG9uJyBdCi0g ICAgICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ1NlbGVjdCB0aGUgc2FtcGxlIHRoYXQgd2FzIHNl cXVlbmNlZCB0byBwcm9kdT0KY2UgdGhlIGRhdGFzZXRzIHlvdSB3YW50IHRvIHRyYW5zZmVyLicK LSAgICAgICAgICAgICAgICBrd2RbICdtZXNzYWdlJyBdID0zRCBtZXNzYWdlCi0gICAgICAgICAg ICAgICAga3dkWyAnc3RhdHVzJyBdID0zRCAnZXJyb3InCi0gICAgICAgICAgICAgICAgcmV0dXJu IHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbD0KZXI9 M0QncmVxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPQo9M0Qnc2VsZWN0X2RhdGFzZXRz X3RvX3RyYW5zZmVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dkICkgKQotICAgICAgICAgICAgaWYgbm90IHNh bXBsZS5saWJyYXJ5OgotICAgICAgICAgICAgICAgICMgRGlzcGxheSBhbiBlcnJvciBpZiBhIHNh bXBsZSBoYXMgYmVlbiBzZWxlY3RlZCB0aGF0Ci0gICAgICAgICAgICAgICAgIyBoYXMgbm90IHll dCBiZWVuIGFzc29jaWF0ZWQgd2l0aCBhIGRlc3RpbmF0aW9uIGxpYnJhcnkuCi0gICAgICAgICAg ICAgICAgbWVzc2FnZSA9M0QgJ1NlbGVjdCBhIHRhcmdldCBkYXRhIGxpYnJhcnkgYW5kIGZvbGRl ciBmb3IgdD0KaGUgc2FtcGxlIGJlZm9yZSBzZWxlY3RpbmcgdGhlIGRhdGFzZXRzLicKLSAgICAg ICAgICAgICAgICBzdGF0dXMgPTNEICdlcnJvcicKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJh bnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsPQplcj0zRCdy ZXF1ZXN0c19jb21tb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPQo9M0QnZWRpdF9zYW1wbGVzJywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNudHJsbGVyPQo9M0QncmVxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9M0R0cmE9 Cm5zLnNlY3VyaXR5LmVuY29kZV9pZCggcmVxdWVzdC5pZCApLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPQo9 M0RzdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPQo9M0RtZXNzYWdlICkgKQotICAgICAgICAgICAg IyBTYXZlIHRoZSBzYW1wbGUgZGF0YXNldHMKLSAgICAgICAgICAgIHNhbXBsZV9kYXRhc2V0X2Zp bGVfbmFtZXMgPTNEIHNlbGYuX19jcmVhdGVfc2FtcGxlX2RhdGFzZXRzKCB0PQpyYW5zLCBzYW1w bGUsIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyLCBleHRlcm5hbF9zZXJ2aWNlICkKLSAg ICAgICAgICAgIGlmIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXM6Ci0gICAgICAgICAgICAgICAg bWVzc2FnZSA9M0QgJ0RhdGFzZXRzICglcykgaGF2ZSBiZWVuIHNlbGVjdGVkIGZvciBzYW1wbGUg KD0KJXMpJyAlIFwKLSAgICAgICAgICAgICAgICAgICAgKCBzdHIoIHNhbXBsZV9kYXRhc2V0X2Zp bGVfbmFtZXMgKVsxOi0xXS5yZXBsYWNlKCAiJyIsPQogIiIgKSwgc2FtcGxlLm5hbWUgKQotICAg ICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9y KCBjb250cm9sbGVyPQo9M0QncmVxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249M0QnbWE9Cm5h Z2VfZGF0YXNldHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2lkPQo9M0RyZXF1ZXN0X2lkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1w bGVfaWQ9M0Q9CnNhbXBsZV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0zRG1lPQpzc2FnZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh dHVzPTNEc3RhPQp0dXMgKSApCi0gICAgICAgIHJldHVybiB0cmFucy5maWxsX3RlbXBsYXRlKCAn L2FkbWluL3JlcXVlc3RzL3NlbGVjdF9kYXRhc2V0c190b190cj0KYW5zZmVyLm1ha28nLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY250cmxsZXI9M0QncmVxdWVzdHNfYWRt aW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdD0zRHJlcXVl c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNl PTNEZXh0ZXJuYWxfc2VydmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNjcF9jb25maWdzPTNEc2NwX2NvbmZpZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzYW1wbGU9M0RzYW1wbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzYW1wbGVfaWRfc2VsZWN0X2ZpZWxkPTNEc2FtcGxlX2lkX3NlbD0KZWN0X2ZpZWxkLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTNEc3RhdHVzLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0zRG1lc3NhZ2UgKQotCi0g ICAgQHdlYi5qc29uCi0gICAgZGVmIGdldF9maWxlX2RldGFpbHMoIHNlbGYsIHRyYW5zLCByZXF1 ZXN0X2lkLCBleHRlcm5hbF9zZXJ2aWNlX2lkLCBmbz0KbGRlcl9wYXRoICk6Ci0gICAgICAgIGRl ZiBwcmludF90aWNrcyggZCApOgotICAgICAgICAgICAgIyBwZXhwZWN0IHRpbWVvdXQgbWV0aG9k Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgICMgQXZvaWQgY2FjaGluZwotICAgICAgICB0cmFu cy5yZXNwb25zZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwotICAgICAgICB0cmFu cy5yZXNwb25zZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICBpZiBwZXhwZWN0 IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gUEVYUEVDVF9JTVBPUlRfTUVTU0FHRQotICAg ICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5t b2RlbC5FeHRlcm5hbFM9CmVydmljZSApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBl eHRlcm5hbF9zZXJ2aWNlX2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxvYWRfZGF0 YV90cmFuc2Zlcl9zZXR0aW5ncyggdHJhbnMgKQotICAgICAgICBzY3BfY29uZmlncyA9M0QgZXh0 ZXJuYWxfc2VydmljZS5kYXRhX3RyYW5zZmVyWyB0cmFucy5tb2RlbC5FeHRlcm49CmFsU2Vydmlj ZS5kYXRhX3RyYW5zZmVyX3Byb3RvY29sLlNDUCBdCi0gICAgICAgIGNtZCA9M0QgJ3NzaCAlc0Al cyAibHMgLW9naHAgXCclc1wnIicgJSAoIHNjcF9jb25maWdzWyAndXNlcl9uYW1lJz0KIF0sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3BfY29uZmln c1sgJ2hvc3QnIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmb2xkZXJfcGF0aCApCi0gICAgICAgICMgSGFuZGxlIHRoZSBhdXRoZW50aWNhdGlvbiBt ZXNzYWdlIGlmIHNzaCBrZXlzIGFyZSBub3Qgc2V0IC0gdGhlID0KbWVzc2FnZSBpcwotICAgICAg ICAjIHNvbWV0aGluZyBsaWtlOiAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIGNv bm5lY3RpbmcgKHk9CmVzL25vKS4iCi0gICAgICAgIG91dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNt ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsgJ1woeWVzXC9ub1wp XC4qJyA6ICd5ZXNcclxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICcuc3N3b3JkOionIDogc2NwX2NvbmZpZ3NbICdwYXNzd29yPQpkJyBdICsgJ1xyXG4nLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cGVjdC5USU1FT1VUIDogcHJp bnRfdGlja3MgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9M0QxMCAp Ci0gICAgICAgIGZvciBwYXNzd29yZF9zdHIgaW4gWyAnUGFzc3dvcmQ6XHJcbicsICdwYXNzd29y ZDpcclxuJyBdOgotICAgICAgICAgICAgIyBFbGltaW5hdGUgdGhlIG91dHB1dCBjcmVhdGVkIHVz aW5nIHNzaCBmcm9tIHRoZSB0cmVlCi0gICAgICAgICAgICBpZiBwYXNzd29yZF9zdHIgaW4gb3V0 cHV0OgotICAgICAgICAgICAgICAgIG91dHB1dCA9M0Qgb3V0cHV0LnJlcGxhY2UoIHBhc3N3b3Jk X3N0ciwgJycgKQotICAgICAgICByZXR1cm4gdW5pY29kZSggb3V0cHV0LnJlcGxhY2UoICdcclxu JywgJzxici8+JyApICkKLQotICAgIEB3ZWIuanNvbgotICAgIGRlZiBvcGVuX2ZvbGRlciggc2Vs ZiwgdHJhbnMsIHJlcXVlc3RfaWQsIGV4dGVybmFsX3NlcnZpY2VfaWQsIGtleSApOgotICAgICAg ICAjIEF2b2lkIGNhY2hpbmcKLSAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJhZ21h J10gPTNEICduby1jYWNoZScKLSAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhwaXJl cyddID0zRCAnMCcKLSAgICAgICAgcmVxdWVzdCA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSgg dHJhbnMubW9kZWwuUmVxdWVzdCApLmdldCggdHJhPQpucy5zZWN1cml0eS5kZWNvZGVfaWQoIHJl cXVlc3RfaWQgKSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UgPTNEIHRyYW5zLnNhX3Nlc3Np b24ucXVlcnkoIHRyYW5zLm1vZGVsLkV4dGVybmFsUz0KZXJ2aWNlICkuZ2V0KCB0cmFucy5zZWN1 cml0eS5kZWNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2VfaWQgKSApCi0gICAgICAgIGZvbGRlcl9w YXRoID0zRCBrZXkKLSAgICAgICAgZmlsZXNfbGlzdCA9M0Qgc2VsZi5fX2dldF9maWxlcyggdHJh bnMsIHJlcXVlc3QsIGV4dGVybmFsX3NlcnZpY2UsPQogZm9sZGVyX3BhdGggKQotICAgICAgICBm b2xkZXJfY29udGVudHMgPTNEIFtdCi0gICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlc19saXN0 OgotICAgICAgICAgICAgaXNfZm9sZGVyID0zRCBGYWxzZQotICAgICAgICAgICAgaWYgZmlsZW5h bWUgYW5kIGZpbGVuYW1lWy0xXSA9M0Q9M0Qgb3Muc2VwOgotICAgICAgICAgICAgICAgIGlzX2Zv bGRlciA9M0QgVHJ1ZQotICAgICAgICAgICAgaWYgZmlsZW5hbWU6Ci0gICAgICAgICAgICAgICAg ZnVsbF9wYXRoID0zRCBvcy5wYXRoLmpvaW4oIGZvbGRlcl9wYXRoLCBmaWxlbmFtZSApCi0gICAg ICAgICAgICAgICAgbm9kZSA9M0QgeyAidGl0bGUiOiBmaWxlbmFtZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAiaXNGb2xkZXIiOiBpc19mb2xkZXIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgImlzTGF6eSI6IGlzX2ZvbGRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAidG9vbHRp cCI6IGZ1bGxfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAia2V5IjogZnVsbF9wYXRo IH0KLSAgICAgICAgICAgICAgICBmb2xkZXJfY29udGVudHMuYXBwZW5kKCBub2RlICkKLSAgICAg ICAgcmV0dXJuIGZvbGRlcl9jb250ZW50cwotCi0gICAgZGVmIF9fZ2V0X2ZpbGVzKCBzZWxmLCB0 cmFucywgcmVxdWVzdCwgZXh0ZXJuYWxfc2VydmljZSwgZm9sZGVyX3BhdGggKToKLSAgICAgICAg IyBSZXRyaWV2ZXMgdGhlIGZpbGVuYW1lcyB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHRoZSByZW1v dGUgaG9zdC4KLSAgICAgICAgb2sgPTNEIFRydWUKLSAgICAgICAgZXh0ZXJuYWxfc2VydmljZS5s b2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRyYW5zICkKLSAgICAgICAgc2NwX2NvbmZpZ3Mg PTNEIGV4dGVybmFsX3NlcnZpY2UuZGF0YV90cmFuc2ZlclsgdHJhbnMubW9kZWwuRXh0ZXJuPQph bFNlcnZpY2UuZGF0YV90cmFuc2Zlcl9wcm90b2NvbC5TQ1AgXQotICAgICAgICBpZiBub3Qgc2Nw X2NvbmZpZ3NbICdob3N0JyBdIG9yIG5vdCBzY3BfY29uZmlnc1sgJ3VzZXJfbmFtZScgXSBvciA9 Cm5vdCBzY3BfY29uZmlnc1sgJ3Bhc3N3b3JkJyBdOgotICAgICAgICAgICAgc3RhdHVzID0zRCAn ZXJyb3InCi0gICAgICAgICAgICBtZXNzYWdlID0zRCAiRXJyb3IgaW4gZXh0ZXJuYWwgc2Vydmlj ZSBsb2dpbiBpbmZvcm1hdGlvbi4iCi0gICAgICAgICAgICBvayA9M0QgRmFsc2UKLQotICAgICAg ICBkZWYgcHJpbnRfdGlja3MoIGQgKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgY21kID0z RCAnc3NoICVzQCVzICJscyAtcCBcJyVzXCciJyAlICggc2NwX2NvbmZpZ3NbICd1c2VyX25hbWUn IF0sPQogc2NwX2NvbmZpZ3NbICdob3N0JyBdLCBmb2xkZXJfcGF0aCApCi0gICAgICAgICMgSGFu ZGxlIHRoZSBhdXRoZW50aWNhdGlvbiBtZXNzYWdlIGlmIGtleXMgYXJlIG5vdCBzZXQgLSB0aGUg bWVzcz0KYWdlIGlzCi0gICAgICAgICMgc29tZXRoaW5nIGxpa2U6ICJBcmUgeW91IHN1cmUgeW91 IHdhbnQgdG8gY29udGludWUgY29ubmVjdGluZyAoeT0KZXMvbm8pLiIKLSAgICAgICAgaWYgcGV4 cGVjdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIG91dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNt ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHM9M0R7ICdcKHllc1wv bm9cKVwuKicgOiAneWVzXHJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJy5zc3dvcmQ6KicgOiBzY3BfY29uZmlnc1sgJ3Bhcz0Kc3dvcmQnIF0gKyAnXHJc bicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cGVjdC5U SU1FT1VUIDogcHJpbnRfdGlja3MgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aW1lb3V0PTNEMTAgKQotICAgICAgICAgICAgaWYgJ05vIHN1Y2ggZmlsZSBvciBkaXJlY3Rv cnknIGluIG91dHB1dDoKLSAgICAgICAgICAgICAgICBzdGF0dXMgPTNEICdlcnJvcicKLSAgICAg ICAgICAgICAgICBtZXNzYWdlID0zRCAiTm8gZm9sZGVyIG5hbWVkICglcykgZXhpc3RzIG9uIHRo ZSBleHRlcm5hbCBzPQplcnZpY2UuIiAlIGZvbGRlcl9wYXRoCi0gICAgICAgICAgICAgICAgb2sg PTNEIEZhbHNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3RhdHVzID0zRCAnZXJy b3InCi0gICAgICAgICAgICAgICAgbWVzc2FnZSA9M0QgUEVYUEVDVF9JTVBPUlRfTUVTU0FHRQot ICAgICAgICAgICAgICAgIG9rID0zRCBGYWxzZQotICAgICAgICBpZiBvazoKLSAgICAgICAgICAg IGlmICdhc3N3b3JkOicgaW4gb3V0cHV0OgotICAgICAgICAgICAgICAgICMgRWxpbWluYXRlIHRo ZSBvdXRwdXQgY3JlYXRlZCB1c2luZyBzc2ggZnJvbSB0aGUgdHJlZQotICAgICAgICAgICAgICAg IG91dHB1dF9hc19saXN0ID0zRCBvdXRwdXQuc3BsaXRsaW5lcygpWyAxOiBdCi0gICAgICAgICAg ICBlbHNlOgotICAgICAgICAgICAgICAgIG91dHB1dF9hc19saXN0ID0zRCBvdXRwdXQuc3BsaXRs aW5lcygpCi0gICAgICAgICAgICByZXR1cm4gb3V0cHV0X2FzX2xpc3QKLSAgICAgICAgcmV0dXJu IHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbGVyPTNE J3JlPQpxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0zRCdzZWxlY3Q9Cl9kYXRhc2V0c190b190cmFu c2ZlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVxdWVzdF9pZD0zRHRyYT0KbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCByZXF1ZXN0 LmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXh0ZXJuYWxfc2VydmljZT0KX2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lk KCBleHRlcm5hbF9zZXJ2aWNlLmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTNEc3RhdHVzLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9M0Rt ZXNzYWc9CmUgKSApCi0KLSAgICBkZWYgX19jcmVhdGVfc2FtcGxlX2RhdGFzZXRzKCBzZWxmLCB0 cmFucywgc2FtcGxlLCBzZWxlY3RlZF9kYXRhc2V0c190PQpvX3RyYW5zZmVyLCBleHRlcm5hbF9z ZXJ2aWNlICk6Ci0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UubG9hZF9kYXRhX3RyYW5zZmVyX3Nl dHRpbmdzKCB0cmFucyApCi0gICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNl LmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4dGVybj0KYWxTZXJ2aWNlLmRhdGFfdHJhbnNm ZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgc2FtcGxlX2RhdGFzZXRfZmlsZV9uYW1lcyA9M0Qg W10KLSAgICAgICAgaWYgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXI6Ci0gICAgICAgICAg ICBmb3IgZmlsZXBhdGggaW4gc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXI6Ci0gICAgICAg ICAgICAgICAgIyBGSVhNRTogaGFuZGxlIGZvbGRlciBzZWxlY3Rpb24gLSBpZ25vcmUgZm9sZGVy cyBmb3Igbm93Ci0gICAgICAgICAgICAgICAgaWYgZmlsZXBhdGhbLTFdICE9M0Qgb3Muc2VwOgot ICAgICAgICAgICAgICAgICAgICBuYW1lID0zRCBzZWxmLl9fcmVuYW1lX2RhdGFzZXQoIHNhbXBs ZSwgZmlsZXBhdGguc3BsaXQ9CiggJy8nIClbLTFdLCBzY3BfY29uZmlncyApCi0gICAgICAgICAg ICAgICAgICAgIHN0YXR1cyA9M0QgdHJhbnMuYXBwLm1vZGVsLlNhbXBsZURhdGFzZXQudHJhbnNm ZXJfc3RhdD0KdXMuTk9UX1NUQVJURUQKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSA9M0Qgc2Ft cGxlLmdldF91bnRyYW5zZmVycmVkX2RhdGFzZXRfc2l6ZSggZmlsZXBhPQp0aCwgc2NwX2NvbmZp Z3MgKQotICAgICAgICAgICAgICAgICAgICBzYW1wbGVfZGF0YXNldCA9M0QgdHJhbnMubW9kZWwu U2FtcGxlRGF0YXNldCggc2FtcGxlPQo9M0RzYW1wbGUsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9wYXRoPQo9M0Rm aWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzPQp0YXR1cywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPTNEbmFtPQpl LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVycm9yX21zZz0KPTNEJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0zRHNpej0KZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBleHRlcm5hbF9zPQplcnZpY2U9M0RleHRlcm5hbF9zZXJ2aWNlICkKLSAgICAgICAgICAgICAg ICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHNhbXBsZV9kYXRhc2V0ICkKLSAgICAgICAgICAg ICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICAgICAgICAgICAgIHNh bXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMuYXBwZW5kKCBzdHIoIHNhbXBsZV9kYXRhc2V0Lj0KbmFt ZSApICkKLSAgICAgICAgcmV0dXJuIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMKLQotICAgIGRl ZiBfX3JlbmFtZV9kYXRhc2V0KCBzZWxmLCBzYW1wbGUsIGZpbGVwYXRoLCBzY3BfY29uZmlncyAp OgotICAgICAgICBuYW1lID0zRCBmaWxlcGF0aC5zcGxpdCggJy8nIClbLTFdCi0gICAgICAgIG9w dGlvbnMgPTNEIHNhbXBsZS5yZXF1ZXN0LnR5cGUucmVuYW1lX2RhdGFzZXRfb3B0aW9ucwotICAg ICAgICBvcHRpb24gPTNEIHNjcF9jb25maWdzLmdldCggJ3JlbmFtZV9kYXRhc2V0Jywgb3B0aW9u cy5OTyApCi0gICAgICAgIGlmIG9wdGlvbiA9M0Q9M0Qgb3B0aW9ucy5TQU1QTEVfTkFNRToKLSAg ICAgICAgICAgIG5ld19uYW1lID0zRCBzYW1wbGUubmFtZSArICdfJyArIG5hbWUKLSAgICAgICAg aWYgb3B0aW9uID0zRD0zRCBvcHRpb25zLkVYUEVSSU1FTlRfQU5EX1NBTVBMRV9OQU1FOgotICAg ICAgICAgICAgbmV3X25hbWUgPTNEIHNhbXBsZS5yZXF1ZXN0Lm5hbWUgKyAnXycgKyBzYW1wbGUu bmFtZSArICdfJyArIG49CmFtZQotICAgICAgICBpZiBvcHRpb24gPTNEPTNEIG9wdGlvbnMuRVhQ RVJJTUVOVF9OQU1FOgotICAgICAgICAgICAgbmV3X25hbWUgPTNEIHNhbXBsZS5yZXF1ZXN0Lm5h bWUgKyAnXycgKyBuYW1lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuZXdfbmFtZSA9M0Qg bmFtZQotICAgICAgICByZXR1cm4gdXRpbC5zYW5pdGl6ZV9mb3JfZmlsZW5hbWUoIG5ld19uYW1l ICkKLQogICAgIGRlZiBfX2Vuc3VyZV9saWJyYXJ5X2FkZF9wZXJtaXNzaW9uKCBzZWxmLCB0cmFu cywgdGFyZ2V0X2xpYnJhcnksIHRhcmc9CmV0X2ZvbGRlciApOgogICAgICAgICAiIiIKICAgICAg ICAgRW5zdXJlcyB0aGUgY3VycmVudCBhZG1pbiB1c2VyIGhhcyBBRERfTElCUkFSWSBwZXJtaXNz aW9uIG9uIHRoZSB0PQphcmdldCBkYXRhIGxpYnJhcnkgYW5kIGZvbGRlci4KQEAgLTU5NSw5MiAr Mzg2LDYgQEAKICAgICAgICAgaWYgZmx1c2hfbmVlZGVkOgogICAgICAgICAgICAgdHJhbnMuc2Ff c2Vzc2lvbi5mbHVzaCgpCj0yMAotICAgIGRlZiBfX2NyZWF0ZV9kYXRhX3RyYW5zZmVyX21lc3Nh Z2VzKCBzZWxmLCB0cmFucywgc2FtcGxlLCBzZWxlY3RlZF9zYW09CnBsZV9kYXRhc2V0cyApOgot ICAgICAgICAiIiIKLSAgICAgICAgQ3JlYXRlcyB0aGUgeG1sIG1lc3NhZ2VzIHRvIHNlbmQgdG8g dGhlIHJhYmJpdG1xIHNlcnZlci4gSXQgcmV0dXJuPQpzIGEgZGljdGlvbmFyeSBvZiBtZXNzYWdl cwotICAgICAgICBrZXllZCBieSB0aGUgZXh0ZXJuYWwgc2VydmljZSB1c2VkIHRvIHRyYW5zZmVy IHRoZSBkYXRhc2V0cwotICAgICAgICAiIiIKLSAgICAgICAgIyBDcmVhdGUgdGhlIHhtbCBtZXNz YWdlIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgdGVtcGxhdGUKLSAgICAgICAgeG1sID0zRCBcCi0g ICAgICAgICAgICAnJycgPGRhdGFfdHJhbnNmZXI+Ci0gICAgICAgICAgICAgICAgICAgIDxnYWxh eHlfaG9zdD4lKEdBTEFYWV9IT1NUKXM8L2dhbGF4eV9ob3N0PgotICAgICAgICAgICAgICAgICAg ICA8YXBpX2tleT4lKEFQSV9LRVkpczwvYXBpX2tleT4KLSAgICAgICAgICAgICAgICAgICAgPGRh dGFfaG9zdD4lKERBVEFfSE9TVClzPC9kYXRhX2hvc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxk YXRhX3VzZXI+JShEQVRBX1VTRVIpczwvZGF0YV91c2VyPgotICAgICAgICAgICAgICAgICAgICA8 ZGF0YV9wYXNzd29yZD4lKERBVEFfUEFTU1dPUkQpczwvZGF0YV9wYXNzd29yZD4KLSAgICAgICAg ICAgICAgICAgICAgPHJlcXVlc3RfaWQ+JShSRVFVRVNUX0lEKXM8L3JlcXVlc3RfaWQ+Ci0gICAg ICAgICAgICAgICAgICAgIDxzYW1wbGVfaWQ+JShTQU1QTEVfSUQpczwvc2FtcGxlX2lkPgotICAg ICAgICAgICAgICAgICAgICA8bGlicmFyeV9pZD4lKExJQlJBUllfSUQpczwvbGlicmFyeV9pZD4K LSAgICAgICAgICAgICAgICAgICAgPGZvbGRlcl9pZD4lKEZPTERFUl9JRClzPC9mb2xkZXJfaWQ+ Ci0gICAgICAgICAgICAgICAgICAgICUoREFUQVNFVFMpcwotICAgICAgICAgICAgICAgIDwvZGF0 YV90cmFuc2Zlcj4nJycKLSAgICAgICAgZGF0YXNldF94bWwgPTNEIFwKLSAgICAgICAgICAgICcn JzxkYXRhc2V0PgotICAgICAgICAgICAgICAgICAgIDxkYXRhc2V0X2lkPiUoSUQpczwvZGF0YXNl dF9pZD4KLSAgICAgICAgICAgICAgICAgICA8bmFtZT4lKE5BTUUpczwvbmFtZT4KLSAgICAgICAg ICAgICAgICAgICA8ZmlsZT4lKEZJTEUpczwvZmlsZT4KLSAgICAgICAgICAgICAgIDwvZGF0YXNl dD4nJycKLSAgICAgICAgIyBIZXJlIHdlIGdyb3VwIGFsbCB0aGUgc2FtcGxlX2RhdGFzZXRzIGJ5 IHRoZSBleHRlcm5hbCBzZXJ2aWNlIHVzPQplZCB0byB0cmFuc2ZlciB0aGVtLgotICAgICAgICAj IFRoZSBpZGVhIGlzIHRvIGJ1bmRsZSB1cCB0aGUgc2FtcGxlX2RhdGFzZXRzIHdoaWNoIHVzZXMg dGhlIHNhbWU9CiBleHRlcm5hbCBzZXJ2aWNlIGFuZAotICAgICAgICAjIHNlbmQgYSBzaW5nbGUg QU1RUCBtZXNzYWdlIHRvIHRoZSBnYWxheHlfbGlzdGVuZXIKLSAgICAgICAgZGF0YXNldF9lbGVt ZW50cyA9M0Qge30KLSAgICAgICAgZm9yIHNhbXBsZV9kYXRhc2V0IGluIHNlbGVjdGVkX3NhbXBs ZV9kYXRhc2V0czoKLSAgICAgICAgICAgIGV4dGVybmFsX3NlcnZpY2UgPTNEIHNhbXBsZV9kYXRh c2V0LmV4dGVybmFsX3NlcnZpY2UKLSAgICAgICAgICAgIGlmIHNhbXBsZV9kYXRhc2V0LnN0YXR1 cyA9M0Q9M0QgdHJhbnMuYXBwLm1vZGVsLlNhbXBsZURhdGFzZXQuPQp0cmFuc2Zlcl9zdGF0dXMu Tk9UX1NUQVJURUQ6Ci0gICAgICAgICAgICAgICAgaWYgZXh0ZXJuYWxfc2VydmljZSBub3QgaW4g ZGF0YXNldF9lbGVtZW50czoKLSAgICAgICAgICAgICAgICAgICAgZGF0YXNldF9lbGVtZW50c1sg ZXh0ZXJuYWxfc2VydmljZSBdID0zRCAnJwotICAgICAgICAgICAgICAgIGRhdGFzZXRfZWxlbWVu dHNbIGV4dGVybmFsX3NlcnZpY2UgXSArPTNEIGRhdGFzZXRfeG1sICUgZGk9CmN0KCBJRD0zRHN0 ciggc2FtcGxlX2RhdGFzZXQuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPQogIE5BTUU9M0RzYW1w bGVfZGF0YXNldC5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgRklMRT0zRHNhbXBsZV9kYXRh c2V0LmZpbGVfcGF0aCApCi0gICAgICAgICAgICAgICAgIyB1cGRhdGUgdGhlIGRhdGFzZXQgdHJh bnNmZXIgc3RhdHVzCi0gICAgICAgICAgICAgICAgc2FtcGxlX2RhdGFzZXQuc3RhdHVzID0zRCB0 cmFucy5hcHAubW9kZWwuU2FtcGxlRGF0YXNldC50cj0KYW5zZmVyX3N0YXR1cy5JTl9RVUVVRQot ICAgICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBzYW1wbGVfZGF0YXNldCApCi0g ICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICMgRmluYWxs eSBwcmVwZW5kIHRoZSBleHRlcm5hbCBzZXJ2aWNlIGluZm8gdG8gdGhlIHNldHMgb2Ygc2FtcGxl ID0KZGF0YXNldHMKLSAgICAgICAgbWVzc2FnZXMgPTNEIFtdCi0gICAgICAgIGZvciBleHRlcm5h bF9zZXJ2aWNlLCBkYXRhc2V0X2VsZW0gaW4gZGF0YXNldF9lbGVtZW50cy5pdGVtcygpOgotICAg ICAgICAgICAgZXh0ZXJuYWxfc2VydmljZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRy YW5zICkKLSAgICAgICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFf dHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4PQp0ZXJuYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJv dG9jb2wuU0NQIF0KLSAgICAgICAgICAgICMgQ2hlY2sgZGF0YSB0cmFuc2ZlciBzZXR0aW5ncwot ICAgICAgICAgICAgZXJyX21zZyA9M0Qgc2VsZi5fX3ZhbGlkYXRlX2RhdGFfdHJhbnNmZXJfc2V0 dGluZ3MoIHRyYW5zLCBzYW09CnBsZS5yZXF1ZXN0LnR5cGUsIHNjcF9jb25maWdzICkKLSAgICAg ICAgICAgIGlmIGVycl9tc2c6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNl LnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVzdHNfYWRt aW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWN0aW9uPQo9M0QnbWFuYWdlX2RhdGFzZXRzJywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNh bXBsZV9pPQpkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0YXR1cz0KPTNEJ2Vycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Cj0zRGVycl9tc2cgKSAp Ci0gICAgICAgICAgICBtZXNzYWdlID0zRCB4bWwgJSBkaWN0KCBHQUxBWFlfSE9TVD0zRHRyYW5z LnJlcXVlc3QuaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUElfS0VZ PTNEdHJhbnMudXNlci5hcGlfa2V5c1swXS5rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgREFUQV9IT1NUPTNEc2NwX2NvbmZpZ3NbICdob3N0JyBdLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIERBVEFfVVNFUj0zRHNjcF9jb25maWdzWyAndXNlcl9uYW1l JyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEFfUEFTU1dPUkQ9M0Rz Y3BfY29uZmlnc1sgJ3Bhc3N3b3JkJyA9Cl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUkVRVUVTVF9JRD0zRHN0ciggc2FtcGxlLnJlcXVlc3QuaWQgKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTQU1QTEVfSUQ9M0RzdHIoIHNhbXBsZS5pZCApLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlJBUllfSUQ9M0RzdHIoIHNhbXBsZS5s aWJyYXJ5LmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9MREVSX0lE PTNEc3RyKCBzYW1wbGUuZm9sZGVyLmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgREFUQVNFVFM9M0RkYXRhc2V0X2VsZW0gKQotICAgICAgICAgICAgbWVzc2FnZXMuYXBw ZW5kKCBtZXNzYWdlLnJlcGxhY2UoICdcbicsICcnICkucmVwbGFjZSggJ1xyJywgJyc9CiApICkK LSAgICAgICAgcmV0dXJuIG1lc3NhZ2VzCi0KLSAgICBkZWYgX192YWxpZGF0ZV9kYXRhX3RyYW5z ZmVyX3NldHRpbmdzKCBzZWxmLCB0cmFucywgcmVxdWVzdF90eXBlLCBzY3BfPQpjb25maWdzICk6 Ci0gICAgICAgIGVycl9tc2cgPTNEICcnCi0gICAgICAgICMgY2hlY2sgdGhlIGV4dGVybmFsIHNl cnZpY2UgbG9naW4gaW5mbwotICAgICAgICBpZiBub3Qgc2NwX2NvbmZpZ3MuZ2V0KCAnaG9zdCcs ICcnICkgb3IgXAotICAgICAgICAgICAgICAgIG5vdCBzY3BfY29uZmlncy5nZXQoICd1c2VyX25h bWUnLCAnJyApIG9yIFwKLSAgICAgICAgICAgICAgICBub3Qgc2NwX2NvbmZpZ3MuZ2V0KCAncGFz c3dvcmQnLCAnJyApOgotICAgICAgICAgICAgZXJyX21zZyArPTNEICJFcnJvciBpbiBleHRlcm5h bCBzZXJ2aWNlIGxvZ2luIGluZm9ybWF0aW9uLiAiCi0gICAgICAgIGlmIG5vdCB0cmFucy51c2Vy LmFwaV9rZXlzOgotICAgICAgICAgICAgZXJyX21zZyArPTNEICJTZXQgeW91ciBBUEkgS2V5IGlu IHlvdXIgVXNlciBQcmVmZXJlbmNlcyB0byB0cmE9Cm5zZmVyIGRhdGFzZXRzLiAiCi0gICAgICAg ICMgQ2hlY2sgaWYgbGlicmFyeV9pbXBvcnRfZGlyIGlzIHNldAotICAgICAgICBpZiBub3QgdHJh bnMuYXBwLmNvbmZpZy5saWJyYXJ5X2ltcG9ydF9kaXI6Ci0gICAgICAgICAgICBlcnJfbXNnID0z RCAiJ1RoZSBsaWJyYXJ5X2ltcG9ydF9kaXInIHNldHRpbmcgaXMgbm90IGNvcnJlY3RseT0KIHNl dCBpbiB0aGUgR2FsYXh5IGNvbmZpZyBmaWxlLiAiCi0gICAgICAgICMgQ2hlY2sgdGhlIFJhYmJp dE1RIHNlcnZlciBzZXR0aW5ncyBpbiB0aGUgY29uZmlnIGZpbGUKLSAgICAgICAgZm9yIGssIHYg aW4gdHJhbnMuYXBwLmNvbmZpZy5hbXFwLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBub3QgdjoK LSAgICAgICAgICAgICAgICBlcnJfbXNnICs9M0QgJ1NldCBSYWJiaXRNUSBzZXJ2ZXIgc2V0dGlu Z3MgaW4gdGhlICJnYWxheHlfPQphbXFwIiBzZWN0aW9uIG9mIHRoZSBHYWxheHkgY29uZmlnIGZp bGUsIHNwZWNpZmljYWxseSAiJXMiIGlzIG5vdCBzZXQuJyAlIGsKLSAgICAgICAgICAgICAgICBi cmVhawotICAgICAgICByZXR1cm4gZXJyX21zZwotCiAgICAgQHdlYi5leHBvc2UKICAgICBAd2Vi LnJlcXVpcmVfYWRtaW4KICAgICBkZWYgaW5pdGlhdGVfZGF0YV90cmFuc2Zlciggc2VsZiwgdHJh bnMsIHNhbXBsZV9pZCwgc2FtcGxlX2RhdGFzZXRzPTNEPQpbXSwgc2FtcGxlX2RhdGFzZXRfaWQ9 M0QnJyApOgpAQCAtNzIyLDM1ICs0MjcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAg ICAgICAgICAgIGV4dGVybmFsX3NlcnZpY2U9M0RleHRlcm5hbF9zZXJ2aWNlLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA9CiAgICAgICAgICAgICAgICAgIGV4dGVybmFsX3NlcnZpY2VfdHlwZT0zRGV4dGVy bmFsX3NlcnZpY2VfdHlwZSApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFRPRE86IFVz aW5nIFJhYmJpdE1xIGZvciBub3csIGJ1dCBlbGltaW5hdGUgdGhpcyBlbnRpcmUgYmxvYz0KayB3 aGVuIHdlIHJlcGxhY2UgUmFiYml0TXEgd2l0aCBHYWxheHkncwotICAgICAgICAgICAgIyBvd24g bWVzc2FnaW5nIGVuZ2luZS4gIFdlJ3JlIGhvbGRpbmcgb2ZmIG9uIHVzaW5nIHRoZSBuZXcgd2E9 CnkgdG8gdHJhbnNmZXIgZmlsZXMgbWFudWFsbHkgdW50aWwgd2UKLSAgICAgICAgICAgICMgaW1w bGVtZW50IGEgR2FsYXh5LXByb3ByaWV0YXJ5IG1lc3NhZ2luZyBlbmdpbmUgYmVjYXVzZSB0aGUg PQpkZWZlcnJlZCBqb2IgcGx1Z2lucyBjdXJyZW50bHkgcGVyZm9ybQotICAgICAgICAgICAgIyBj b25zdGFudCBkYiBoaXRzIHRvIGNoZWNrIGZvciBkZWZlcnJlZCBqb2JzIHRoYXQgYXJlIG5vdCBp biA9CmEgZmluaXNoZWQgc3RhdGUuCi0gICAgICAgICAgICAjIENyZWF0ZSB0aGUgbWVzc2FnZQot ICAgICAgICAgICAgbWVzc2FnZXMgPTNEIHNlbGYuX19jcmVhdGVfZGF0YV90cmFuc2Zlcl9tZXNz YWdlcyggdHJhbnMsIHNhbXA9CmxlLCBzYW1wbGVfZGF0YXNldHMgKQotICAgICAgICAgICAgIyBT ZW5kIHRoZSBtZXNzYWdlcwotICAgICAgICAgICAgZm9yIHJtcV9tc2cgaW4gbWVzc2FnZXM6Ci0g ICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjb25uID0zRCBhbXFwLkNv bm5lY3Rpb24oIGhvc3Q9M0R0cmFucy5hcHAuY29uZmlnLmFtcXA9ClsgJ2hvc3QnIF0gKyAiOiIg KyB0cmFucy5hcHAuY29uZmlnLmFtcXBbICdwb3J0JyBdLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1c2VyaWQ9M0R0cmFucy5hcHAuY29uZmlnLmFtcXA9Clsg J3VzZXJpZCcgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGFzc3dvcmQ9M0R0cmFucy5hcHAuY29uZmlnLmFtPQpxcFsgJ3Bhc3N3b3JkJyBdLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsX2hvc3Q9M0R0cmFu cy5hcHAuY29uZmk9CmcuYW1xcFsgJ3ZpcnR1YWxfaG9zdCcgXSkKLSAgICAgICAgICAgICAgICAg ICAgY2hhbiA9M0QgY29ubi5jaGFubmVsKCkKLSAgICAgICAgICAgICAgICAgICAgbXNnID0zRCBh bXFwLk1lc3NhZ2UoIHJtcV9tc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29udGVudF90eXBlPTNEJ3RleHQvcGxhaW4nLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uX2hlYWRlcnM9M0R7ICdtc2dfdHlwZSc9Cjog J2RhdGFfdHJhbnNmZXInIH0gKQotICAgICAgICAgICAgICAgICAgICBtc2cucHJvcGVydGllc1sg ImRlbGl2ZXJ5X21vZGUiIF0gPTNEIDIKLSAgICAgICAgICAgICAgICAgICAgY2hhbi5iYXNpY19w dWJsaXNoKCBtc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj aGFuZ2U9M0R0cmFucy5hcHAuY29uZmlnLmFtcXBbID0KJ2V4Y2hhbmdlJyBdLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRpbmdfa2V5PTNEdHJhbnMuYXBwLmNv bmZpZy5hbXE9CnBbICdyb3V0aW5nX2tleScgXSApCi0gICAgICAgICAgICAgICAgICAgIGNoYW4u Y2xvc2UoKQotICAgICAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgICAgICAg ICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAi RXJyb3Igc2VuZGluZyB0aGUgZGF0YSB0cmFuc2ZlciBtZXNzYWdlIHQ9Cm8gdGhlIEdhbGF4eSBB TVFQIG1lc3NhZ2UgcXVldWU6PGJyLz4lcyIgJSBzdHIoZSkKLSAgICAgICAgICAgICAgICAgICAg c3RhdHVzID0zRCAiZXJyb3IiCi0gICAgICAgICAgICBpZiBub3QgbWVzc2FnZToKLSAgICAgICAg ICAgICAgICBtZXNzYWdlID0zRCAiJWkgZGF0YXNldHMgaGF2ZSBiZWVuIHF1ZXVlZCBmb3IgdHJh bnNmZXIgZnJvPQptIHRoZSBleHRlcm5hbCBzZXJ2aWNlLiIgJSBsZW4oIHNhbXBsZV9kYXRhc2V0 cyApCi0gICAgICAgICAgICAgICAgc3RhdHVzID0zRCAiZG9uZSIKKyAgICAgICAgICAgIG1lc3Nh Z2UgPTNEICJNZXNzYWdlIHF1ZXVlIHRyYW5zZmVyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQsIHBs PQplYXNlIHNldCBlbmFibGVfYmV0YV9qb2JfbWFuYWdlcnMgPTNEIFRydWUgaW4gZ2FsYXh5Lmlu aSIKKyAgICAgICAgICAgIHN0YXR1cyA9M0QgImVycm9yIgogICAgICAgICByZXR1cm4gdHJhbnMu cmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmU9CnF1 ZXN0c19hZG1pbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWN0aW9uPTNEJ21hbmFnZT0KX2RhdGFzZXRzJywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWQ9 M0R0cmFuPQpzLnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxlLmlkICksCgpkaWZmIC1yIGQ2MmYz ZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBm OWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQvY29u dHJvbGxlcnMvcmVwb3NpdG9yeS5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVk L2NvbnRyb2xsZXJzL3JlcG9zaXRvcnkucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xf c2hlZC9jb250cm9sbGVycy9yZXBvc2l0b3J5LnB5CkBAIC0xNDcwLDExICsxNDcwLDExIEBACiAg ICAgICAgIHJldHVybiAnJwo9MjAKICAgICBAd2ViLmpzb24KLSAgICBkZWYgZ2V0X2ZpbGVfY29u dGVudHMoIHNlbGYsIHRyYW5zLCBmaWxlX3BhdGggKToKKyAgICBkZWYgZ2V0X2ZpbGVfY29udGVu dHMoIHNlbGYsIHRyYW5zLCBmaWxlX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAgICAgIyBB dm9pZCBjYWNoaW5nCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0z RCAnbm8tY2FjaGUnCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9 M0QgJzAnCi0gICAgICAgIHJldHVybiBzdWMuZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cygg ZmlsZV9wYXRoICkKKyAgICAgICAgcmV0dXJuIHN1Yy5nZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRl bnRzKCB0cmFucy5hcHAsIGZpbGVfcGF0aCwgcmVwPQpvc2l0b3J5X2lkICkKPTIwCiAgICAgQHdl Yi5leHBvc2UKICAgICBkZWYgZ2V0X2Z1bmN0aW9uYWxfdGVzdF9yc3MoIHNlbGYsIHRyYW5zLCAq Kmt3ZCApOgpAQCAtMTY4NCw2ICsxNjg0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICBpbmNs dWRlc190b29sX2RlcGVuZGVuY2llcz0zRGluY2x1ZGVzX3Rvb2xfZGVwZW5kZW5jaT0KZXMsCiAg ICAgICAgICAgICAgICAgICAgICByZXBvX2luZm9fZGljdHM9M0RyZXBvX2luZm9fZGljdHMgKQo9 MjAKKyAgICBAd2ViLmV4cG9zZQorICAgIGRlZiBnZXRfcmVwb3NpdG9yeV90eXBlKCBzZWxmLCB0 cmFucywgKiprd2QgKToKKyAgICAgICAgIiIiR2l2ZW4gYSByZXBvc2l0b3J5IG5hbWUgYW5kIG93 bmVyLCByZXR1cm4gdGhlIHR5cGUuIiIiCisgICAgICAgIHJlcG9zaXRvcnlfbmFtZSA9M0Qga3dk WyAnbmFtZScgXQorICAgICAgICByZXBvc2l0b3J5X293bmVyID0zRCBrd2RbICdvd25lcicgXQor ICAgICAgICByZXBvc2l0b3J5ID0zRCBzdWMuZ2V0X3JlcG9zaXRvcnlfYnlfbmFtZV9hbmRfb3du ZXIoIHRyYW5zLmFwcCwgcmU9CnBvc2l0b3J5X25hbWUsIHJlcG9zaXRvcnlfb3duZXIgKQorICAg ICAgICByZXR1cm4gc3RyKCByZXBvc2l0b3J5LnR5cGUgKQorCiAgICAgQHdlYi5qc29uCiAgICAg ZGVmIGdldF9yZXF1aXJlZF9yZXBvX2luZm9fZGljdCggc2VsZiwgdHJhbnMsIGVuY29kZWRfc3Ry PTNETm9uZSApOgogICAgICAgICAiIiIKQEAgLTE3NTEsNiArMTc1OSwyMiBAQAogICAgICAgICAg ICAgcmV0dXJuIGNvbnRlbnRzCiAgICAgICAgIHJldHVybiAnJwo9MjAKKyAgICBAd2ViLmpzb24K KyAgICBkZWYgZ2V0X3Rvb2xfZGVwZW5kZW5jeV9kZWZpbml0aW9uX21ldGFkYXRhKCBzZWxmLCB0 cmFucywgKiprd2QgKToKKyAgICAgICAgIiIiCisgICAgICAgIEdpdmVuIGEgcmVwb3NpdG9yeSBu YW1lIGFuZCBvd25lcm9mIGEgcmVwb3NpdG9yeSB3aG9zZSB0eXBlIGlzCisgICAgICAgIHRvb2xf ZGVwZW5kZW5jeV9kZWZpbml0aW9uLCByZXR1cm4gdGhlIGN1cnJlbnQgbWV0YWRhdGEuCisgICAg ICAgICIiIgorICAgICAgICByZXBvc2l0b3J5X25hbWUgPTNEIGt3ZFsgJ25hbWUnIF0KKyAgICAg ICAgcmVwb3NpdG9yeV9vd25lciA9M0Qga3dkWyAnb3duZXInIF0KKyAgICAgICAgcmVwb3NpdG9y eSA9M0Qgc3VjLmdldF9yZXBvc2l0b3J5X2J5X25hbWVfYW5kX293bmVyKCB0cmFucy5hcHAsIHJl PQpwb3NpdG9yeV9uYW1lLCByZXBvc2l0b3J5X293bmVyICkKKyAgICAgICAgZW5jb2RlZF9pZCA9 M0QgdHJhbnMuYXBwLnNlY3VyaXR5LmVuY29kZV9pZCggcmVwb3NpdG9yeS5pZCApCisgICAgICAg IHJlcG9zaXRvcnlfdGlwID0zRCByZXBvc2l0b3J5LnRpcCggdHJhbnMuYXBwICkKKyAgICAgICAg cmVwb3NpdG9yeV9tZXRhZGF0YSA9M0Qgc3VjLmdldF9yZXBvc2l0b3J5X21ldGFkYXRhX2J5X2No YW5nZXNldF9yPQpldmlzaW9uKCB0cmFucy5hcHAsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0KICAgICAg IGVuY29kZWRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0KICAgICAgIHJlcG9zaXRvcnlfdGlwICkK KyAgICAgICAgcmV0dXJuIHJlcG9zaXRvcnlfbWV0YWRhdGEubWV0YWRhdGEKKwogICAgIEB3ZWIu ZXhwb3NlCiAgICAgZGVmIGdldF90b29sX3ZlcnNpb25zKCBzZWxmLCB0cmFucywgKiprd2QgKToK ICAgICAgICAgIiIiCkBAIC0yNDE1LDExICsyNDM5LDExIEBACiAgICAgICAgIHJldHVybiAnJwo9 MjAKICAgICBAd2ViLmpzb24KLSAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCBmb2xk ZXJfcGF0aCApOgorICAgIGRlZiBvcGVuX2ZvbGRlciggc2VsZiwgdHJhbnMsIGZvbGRlcl9wYXRo LCByZXBvc2l0b3J5X2lkICk6CiAgICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0cmFu cy5yZXNwb25zZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0cmFu cy5yZXNwb25zZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4gc3Vj Lm9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIGZvbGRlcl9wYXRoICkKKyAgICAgICAgcmV0 dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCB0cmFucy5hcHAsIGZvbGRlcl9w YXRoLCByPQplcG9zaXRvcnlfaWQgKQo9MjAKICAgICBAd2ViLmV4cG9zZQogICAgIGRlZiBwcmV2 aWV3X3Rvb2xzX2luX2NoYW5nZXNldCggc2VsZiwgdHJhbnMsIHJlcG9zaXRvcnlfaWQsICoqa3dk ICk6CgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEgLXIg MzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxheHkvd2Vi YXBwcy90b29sX3NoZWQvZnJhbWV3b3JrL21pZGRsZXdhcmUvaGcucHkKLS0tIGEvbGliL2dhbGF4 eS93ZWJhcHBzL3Rvb2xfc2hlZC9mcmFtZXdvcmsvbWlkZGxld2FyZS9oZy5weQorKysgYi9saWIv Z2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL2ZyYW1ld29yay9taWRkbGV3YXJlL2hnLnB5CkBAIC0x MCw3ICsxMCw3IEBACiBmcm9tIHBhc3RlLmh0dHBoZWFkZXJzIGltcG9ydCBBVVRIX1RZUEUKIGZy b20gcGFzdGUuaHR0cGhlYWRlcnMgaW1wb3J0IFJFTU9URV9VU0VSCj0yMAotZnJvbSBnYWxheHku dXRpbCBpbXBvcnQgYXNib29sCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBhc2Jvb2wsIHNhZmVf cmVscGF0aAogZnJvbSBnYWxheHkudXRpbC5oYXNoX3V0aWwgaW1wb3J0IG5ld19zZWN1cmVfaGFz aAogZnJvbSB0b29sX3NoZWQudXRpbCBpbXBvcnQgaGdfdXRpbAogZnJvbSB0b29sX3NoZWQudXRp bCBpbXBvcnQgY29tbWl0X3V0aWwKQEAgLTExNSw3ICsxMTUsMTEgQEAKICAgICAgICAgICAgICAg ICAgICAgZmgud3JpdGUoIGNodW5rICkKICAgICAgICAgICAgICAgICBmaC5jbG9zZSgpCiAgICAg ICAgICAgICAgICAgZmggPTNEIG9wZW4oIHRtcF9maWxlbmFtZSwgJ3JiJyApCi0gICAgICAgICAg ICAgICAgY2hhbmdlc2V0X2dyb3VwcyA9M0QganNvbi5sb2FkcyggaGdfdXRpbC5idW5kbGVfdG9f anNvbiggZj0KaCApICkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAg IGNoYW5nZXNldF9ncm91cHMgPTNEIGpzb24ubG9hZHMoIGhnX3V0aWwuYnVuZGxlX3RvX2pzbz0K biggZmggKSApCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAg ICAgICAgICAgICAgICBtc2cgPTNEICdZb3VyIHZlcnNpb24gb2YgTWVyY3VyaWFsIGlzIG5vdCBz dXBwb3J0ZWQuIFA9CmxlYXNlIHVzZSBhIHZlcnNpb24gPCAzLjUnCisgICAgICAgICAgICAgICAg ICAgIHJldHVybiBzZWxmLl9fZGlzcGxheV9leGNlcHRpb25fcmVtb3RlbHkoIHN0YXJ0X3Jlc3Bv bj0Kc2UsIG1zZyApCiAgICAgICAgICAgICAgICAgZmguY2xvc2UoKQogICAgICAgICAgICAgICAg IHRyeToKICAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKCB0bXBfZmlsZW5hbWUgKQpAQCAt MTI0LDYgKzEyOCwxOSBAQAogICAgICAgICAgICAgICAgIGlmIGNoYW5nZXNldF9ncm91cHM6CiAg ICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhlIHJlcG9zaXRvcnkgdHlwZSB0byBtYWtlIHN1 cmUgaW5hcHByb3ByaWF0ZT0KIGZpbGVzIGFyZSBub3QgYmVpbmcgcHVzaGVkLgogICAgICAgICAg ICAgICAgICAgICBpZiAnUEFUSF9JTkZPJyBpbiBlbnZpcm9uOgorICAgICAgICAgICAgICAgICAg ICAgICAgIyBFbnN1cmUgdGhlcmUgYXJlIG5vIHN5bWxpbmtzIHdpdGggdGFyZ2V0cyBvdXRzaWQ9 CmUgdGhlIHJlcG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlbnRyeSBpbiBjaGFuZ2Vz ZXRfZ3JvdXBzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbiggZW50cnkgKSA9 M0Q9M0QgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGNoYW5n ZV9saXN0ID0zRCBlbnRyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qg aXNpbnN0YW5jZShjaGFuZ2VfbGlzdCwgbGlzdCk6CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjaGFuZ2VfbGlzdCA9M0QgW2NoYW5nZV9saXN0XQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmb3IgY2hhbmdlIGluIGNoYW5nZV9saXN0OgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhdGNoIGluIGNoYW5nZVsnZGF0YSddOgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9M0QgcGF0Y2hbJ2Js b2NrJ10uc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm ICggKCBwYXRjaFsnZW5kJ10gLSBwYXRjaFsnc3RhcnQ9CiddID0zRD0zRCAwICkgYW5kIG5vdCBz YWZlX3JlbHBhdGgoIHRhcmdldCApICk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1zZyA9M0QgIkNoYW5nZXMgaW5jbHVkZSBhIHN5bT0KbGluayBvdXRzaWRl IG9mIHRoZSByZXBvc2l0b3J5OiAlcyAtPiAlcyIgJSAoIGZpbGVuYW1lLCB0YXJnZXQgKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2cud2FybmluZyggbXNn ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNl bGYuX19kaXNwbGF5X2V4Y2VwdGlvPQpuX3JlbW90ZWx5KCBzdGFydF9yZXNwb25zZSwgbXNnICkK ICAgICAgICAgICAgICAgICAgICAgICAgICMgSW5zdGFudGlhdGUgYSBkYXRhYmFzZSBjb25uZWN0 aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmUgPTNEIHNxbGFsY2hlbXkuY3JlYXRl X2VuZ2luZSggc2VsZi5kYl91cmwgKQogICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlv biA9M0QgZW5naW5lLmNvbm5lY3QoKQoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNh ZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3 YWE1NSBsaWIvZ2FsYXh5L3dvcmtmbG93L2V4dHJhY3QucHkKLS0tIGEvbGliL2dhbGF4eS93b3Jr Zmxvdy9leHRyYWN0LnB5CisrKyBiL2xpYi9nYWxheHkvd29ya2Zsb3cvZXh0cmFjdC5weQpAQCAt MTQsNyArMTQsOCBAQAogZnJvbSBnYWxheHkudG9vbHMgaW1wb3J0IFRvb2xPdXRwdXRDb2xsZWN0 aW9uUGFydAogZnJvbSBnYWxheHkudG9vbHMucGFyYW1ldGVycy5ncm91cGluZyBpbXBvcnQgKAog ICAgIENvbmRpdGlvbmFsLAotICAgIFJlcGVhdAorICAgIFJlcGVhdCwKKyAgICBTZWN0aW9uCiAp CiBmcm9tIC5zdGVwcyBpbXBvcnQgKAogICAgIGF0dGFjaF9vcmRlcmVkX3N0ZXBzLApAQCAtMzQw LDEwICszNDEsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgay5zdGFydHN3aXRoKCBrZXkg KToKICAgICAgICAgICAgICAgICAgICAgICAgIGRlbCByb290X3ZhbHVlc1trXQogICAgICAgICAg ICAgZWxpZiBpc2luc3RhbmNlKCBpbnB1dCwgUmVwZWF0ICk6Ci0gICAgICAgICAgICAgICAgZ3Jv dXBfdmFsdWVzID0zRCB2YWx1ZXNba2V5XQotICAgICAgICAgICAgICAgIGZvciBpLCByZXBfdmFs dWVzIGluIGVudW1lcmF0ZSggZ3JvdXBfdmFsdWVzICk6Ci0gICAgICAgICAgICAgICAgICAgIHJl cF9pbmRleCA9M0QgcmVwX3ZhbHVlc1snX19pbmRleF9fJ10KLSAgICAgICAgICAgICAgICAgICAg Y2xlYW51cCggIiVzJXNfJWR8IiAlIChwcmVmaXgsIGtleSwgcmVwX2luZGV4ICksIGlucHV0PQou aW5wdXRzLCBncm91cF92YWx1ZXNbaV0gKQorICAgICAgICAgICAgICAgIGlmIGtleSBpbiB2YWx1 ZXM6CisgICAgICAgICAgICAgICAgICAgIGdyb3VwX3ZhbHVlcyA9M0QgdmFsdWVzW2tleV0KKyAg ICAgICAgICAgICAgICAgICAgZm9yIGksIHJlcF92YWx1ZXMgaW4gZW51bWVyYXRlKCBncm91cF92 YWx1ZXMgKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcF9pbmRleCA9M0QgcmVwX3ZhbHVl c1snX19pbmRleF9fJ10KKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFudXAoICIlcyVzXyVk fCIgJSAocHJlZml4LCBrZXksIHJlcF9pbmRleCApLCBpPQpucHV0LmlucHV0cywgZ3JvdXBfdmFs dWVzW2ldICkKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSggaW5wdXQsIENvbmRpdGlvbmFs ICk6CiAgICAgICAgICAgICAgICAgIyBTY3J1YiBkeW5hbWljIHJlc291cmNlIHJlbGF0ZWQgcGFy YW1ldGVycyBmcm9tIHdvcmtmbG93cywKICAgICAgICAgICAgICAgICAjIHRoZXkgY2F1c2UgcHJv YmxlbXMgYW5kIHRoZSB3b3JrZmxvdyBwcm9iYWJseSBzaG91bGQgaW5jPQpsdWRlCkBAIC0zNTIs OSArMzU0LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGlmIGlucHV0Lm5hbWUgaW4gdmFsdWVz OgogICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHZhbHVlc1tpbnB1dC5uYW1lXQogICAgICAg ICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBncm91cF92YWx1ZXMgPTNEIHZh bHVlc1tpbnB1dC5uYW1lXQotICAgICAgICAgICAgICAgIGN1cnJlbnRfY2FzZSA9M0QgZ3JvdXBf dmFsdWVzWydfX2N1cnJlbnRfY2FzZV9fJ10KLSAgICAgICAgICAgICAgICBjbGVhbnVwKCAiJXMl c3wiICUgKCBwcmVmaXgsIGtleSApLCBpbnB1dC5jYXNlc1tjdXJyZW50X2NhPQpzZV0uaW5wdXRz LCBncm91cF92YWx1ZXMgKQorICAgICAgICAgICAgICAgIGlmIGlucHV0Lm5hbWUgaW4gdmFsdWVz OgorICAgICAgICAgICAgICAgICAgICBncm91cF92YWx1ZXMgPTNEIHZhbHVlc1tpbnB1dC5uYW1l XQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2Nhc2UgPTNEIGdyb3VwX3ZhbHVlc1snX19j dXJyZW50X2Nhc2VfXyddCisgICAgICAgICAgICAgICAgICAgIGNsZWFudXAoICIlcyVzfCIgJSAo IHByZWZpeCwga2V5ICksIGlucHV0LmNhc2VzW2N1cnJlbj0KdF9jYXNlXS5pbnB1dHMsIGdyb3Vw X3ZhbHVlcyApCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoIGlucHV0LCBTZWN0aW9uICk6 CisgICAgICAgICAgICAgICAgaWYgaW5wdXQubmFtZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAg ICAgICAgIGNsZWFudXAoICIlcyVzfCIgJSAoIHByZWZpeCwga2V5ICksIGlucHV0LmlucHV0cywg dmFsdT0KZXNbaW5wdXQubmFtZV0gKQogICAgIGNsZWFudXAoICIiLCBpbnB1dHMsIHZhbHVlcyAp CiAgICAgcmV0dXJuIGFzc29jaWF0aW9ucwo9MjAKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2Mw OTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRi MWUxOWE5N2FhNTUgbGliL3Rvb2xfc2hlZC9jYXBzdWxlL2NhcHN1bGVfbWFuYWdlci5weQotLS0g YS9saWIvdG9vbF9zaGVkL2NhcHN1bGUvY2Fwc3VsZV9tYW5hZ2VyLnB5CisrKyBiL2xpYi90b29s X3NoZWQvY2Fwc3VsZS9jYXBzdWxlX21hbmFnZXIucHkKQEAgLTE2LDYgKzE2LDcgQEAKIGZyb20g Z2FsYXh5IGltcG9ydCB3ZWIKIGZyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IGFzYm9vbAogZnJvbSBn YWxheHkudXRpbCBpbXBvcnQgQ0hVTktfU0laRQorZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc2Fm ZV9yZWxwYXRoCiBmcm9tIGdhbGF4eS51dGlsLm9kaWN0IGltcG9ydCBvZGljdAogZnJvbSB0b29s X3NoZWQuZGVwZW5kZW5jaWVzLnJlcG9zaXRvcnkucmVsYXRpb25fYnVpbGRlciBpbXBvcnQgUmVs YXRpb25CdWk9CmxkZXIKIGZyb20gdG9vbF9zaGVkLmRlcGVuZGVuY2llcyBpbXBvcnQgYXR0cmli dXRlX2hhbmRsZXJzCkBAIC03MjEsMjkgKzcyMiwxNiBAQAogICAgICAgICBoZ191dGlsLmdldF9y ZXBvX2Zvcl9yZXBvc2l0b3J5KCBzZWxmLmFwcCwgcmVwb3NpdG9yeT0zRE5vbmUsIHJlcG89Cl9w YXRoPTNEcmVwb19kaXIsIGNyZWF0ZT0zREZhbHNlICkKICAgICAgICAgdW5kZXNpcmFibGVfZGly c19yZW1vdmVkID0zRCAwCiAgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIDAK LSAgICAgICAgb2ssIGVycm9yX21lc3NhZ2UgPTNEIGNvbW1pdF91dGlsLmNoZWNrX2FyY2hpdmUo IHJlcG9zaXRvcnksIGFyY2hpPQp2ZSApCi0gICAgICAgIGlmIG9rOgorICAgICAgICBjaGVja19y ZXN1bHRzID0zRCBjb21taXRfdXRpbC5jaGVja19hcmNoaXZlKCByZXBvc2l0b3J5LCBhcmNoaXZl ICkKKyAgICAgICAgIyBXZSBmaWx0ZXIgb3V0IHVuZGVzaXJhYmxlIGZpbGVzIGJ1dCBmYWlsIG9u IHVuZGVzcmlhYmxlIGRpcnMuIE5vdAorICAgICAgICAjIHN1cmUgd2h5LCBqdXN0IHRyeWluZyB0 byBtYWludGFpbiB0aGUgc2FtZSBiZWhhdmlvciBhcyBiZWZvcmUuIC09Cm5hdGUKKyAgICAgICAg aWYgbm90IGNoZWNrX3Jlc3VsdHMuaW52YWxpZCBhbmQgbm90IGNoZWNrX3Jlc3VsdHMudW5kZXNp cmFibGVfZGlyPQpzOgogICAgICAgICAgICAgZnVsbF9wYXRoID0zRCBvcy5wYXRoLmFic3BhdGgo IHJlcG9fZGlyICkKLSAgICAgICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZlID0zRCBbXQotICAg ICAgICAgICAgZm9yIHRhcmluZm9fb2JqIGluIGFyY2hpdmUuZ2V0bWVtYmVycygpOgotICAgICAg ICAgICAgICAgICMgQ2hlY2sgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluIHRoZSBhcmNoaXZlLgot ICAgICAgICAgICAgICAgIG9rID0zRCBvcy5wYXRoLmJhc2VuYW1lKCB0YXJpbmZvX29iai5uYW1l ICkgbm90IGluIGNvbW1pdF89CnV0aWwuVU5ERVNJUkFCTEVfRklMRVMKLSAgICAgICAgICAgICAg ICBpZiBvazoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVfcGF0aF9pdGVtIGluIHRhcmlu Zm9fb2JqLm5hbWUuc3BsaXQoICcvJyApOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmls ZV9wYXRoX2l0ZW0gaW4gY29tbWl0X3V0aWwuVU5ERVNJUkFCTEVfRElSUzoKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bmRlc2lyYWJsZV9kaXJzX3JlbW92ZWQgKz0zRCAxCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9M0QgJ0ltcG9ydCBmYWlsZWQ6IGlu dmFsaWQgZmlsZT0KIHBhdGggPGI+JXM8L2I+IGluIGFyY2hpdmUgPGI+JXM8L2I+JyAlIFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBzdHIoIGZpbGVfcGF0aF9pdGVtICksIHN0 ciggYXJjaGl2ZV9maWxlPQpfbmFtZSApICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXN1bHRzX2RpY3RbICdvaycgXSA9M0QgRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXN1bHRzX2RpY3RbICdlcnJvcl9tZXNzYWdlJyBdICs9M0QgZXJyb3JfbWVzPQpzYWdlCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHNfZGljdAotICAgICAgICAg ICAgICAgICAgICBmaWxlbmFtZXNfaW5fYXJjaGl2ZS5hcHBlbmQoIHRhcmluZm9fb2JqLm5hbWUg KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHVuZGVzaXJhYmxl X2ZpbGVzX3JlbW92ZWQgKz0zRCAxCiAgICAgICAgICAgICAjIEV4dHJhY3QgdGhlIHVwbG9hZGVk IGFyY2hpdmUgdG8gdGhlIHJlcG9zaXRvcnkgcm9vdC4KLSAgICAgICAgICAgIGFyY2hpdmUuZXh0 cmFjdGFsbCggcGF0aD0zRGZ1bGxfcGF0aCApCisgICAgICAgICAgICBhcmNoaXZlLmV4dHJhY3Rh bGwoIHBhdGg9M0RmdWxsX3BhdGgsIG1lbWJlcnM9M0RjaGVja19yZXN1bHRzLj0KdmFsaWQgKQog ICAgICAgICAgICAgYXJjaGl2ZS5jbG9zZSgpCi0gICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4g ZmlsZW5hbWVzX2luX2FyY2hpdmU6CisgICAgICAgICAgICBmb3IgdGFyX21lbWJlciBpbiBjaGVj a19yZXN1bHRzLnZhbGlkOgorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0zRCB0YXJfbWVtYmVy Lm5hbWUKICAgICAgICAgICAgICAgICB1cGxvYWRlZF9maWxlX25hbWUgPTNEIG9zLnBhdGguam9p biggZnVsbF9wYXRoLCBmaWxlbmFtZSApCiAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5zcGxp dCggdXBsb2FkZWRfZmlsZV9uYW1lIClbIC0xIF0gPTNEPTNEIHJ0X3V0aT0KbC5SRVBPU0lUT1JZ X0RFUEVOREVOQ1lfREVGSU5JVElPTl9GSUxFTkFNRToKICAgICAgICAgICAgICAgICAgICAgIyBJ bnNwZWN0IHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSB0byBzZWUgaWYgdG9vbHNoZWQgPQpvciBj aGFuZ2VzZXRfcmV2aXNpb24gYXR0cmlidXRlcwpAQCAtNzcwLDYgKzc1OCw5IEBACiAgICAgICAg ICAgICBuZXdfcmVwb19hbGVydCA9M0QgVHJ1ZQogICAgICAgICAgICAgIyBTaW5jZSB0aGUgcmVw b3NpdG9yeSBpcyBuZXcsIHRoZSBmb2xsb3dpbmcgbXVzdCBiZSBGYWxzZS4KICAgICAgICAgICAg IHJlbW92ZV9yZXBvX2ZpbGVzX25vdF9pbl90YXIgPTNEIEZhbHNlCisgICAgICAgICAgICBmaWxl bmFtZXNfaW5fYXJjaGl2ZSA9M0QgWyBtZW1iZXIubmFtZSBmb3IgbWVtYmVyIGluIGNoZWNrX3Jl cz0KdWx0cy52YWxpZCBdCisgICAgICAgICAgICB1bmRlc2lyYWJsZV9maWxlc19yZW1vdmVkID0z RCBsZW4oIGNoZWNrX3Jlc3VsdHMudW5kZXNpcmFibGVfZj0KaWxlcyApCisgICAgICAgICAgICB1 bmRlc2lyYWJsZV9kaXJzX3JlbW92ZWQgPTNEIDAKICAgICAgICAgICAgIG9rLCBlcnJvcl9tZXNz YWdlLCBmaWxlc190b19yZW1vdmUsIGNvbnRlbnRfYWxlcnRfc3RyLCB1bmRlc2lyPQphYmxlX2Rp cnNfcmVtb3ZlZCwgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgXAogICAgICAgICAgICAg ICAgIGNvbW1pdF91dGlsLmhhbmRsZV9kaXJlY3RvcnlfY2hhbmdlcyggc2VsZi5hcHAsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhv c3QsCkBAIC04MDAsNyArNzkxLDEzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhcmNo aXZlLmNsb3NlKCkKICAgICAgICAgICAgIHJlc3VsdHNfZGljdFsgJ29rJyBdID0zRCBGYWxzZQot ICAgICAgICAgICAgcmVzdWx0c19kaWN0WyAnZXJyb3JfbWVzc2FnZScgXSArPTNEIGVycm9yX21l c3NhZ2UKKyAgICAgICAgICAgIHJlc3VsdHNfZGljdFsgJ2Vycm9yX21lc3NhZ2UnIF0gKz0zRCAn Q2Fwc3VsZSBlcnJvcnMgd2VyZSBmb3VuPQpkOiAnCisgICAgICAgICAgICBpZiBjaGVja19yZXN1 bHRzLmludmFsaWQ6CisgICAgICAgICAgICAgICAgcmVzdWx0c19kaWN0WyAnZXJyb3JfbWVzc2Fn ZScgXSArPTNEICclcyBJbnZhbGlkIGZpbGVzIHdlcj0KZTogJXMuJyAlICgKKyAgICAgICAgICAg ICAgICAgICAgJyAnLmpvaW4oIGNoZWNrX3Jlc3VsdHMuZXJyb3JzICksICcsICcuam9pbiggY2hl Y2tfcmVzPQp1bHRzLmludmFsaWQgKSApCisgICAgICAgICAgICBpZiBjaGVja19yZXN1bHRzLnVu ZGVzaXJhYmxlX2RpcnM6CisgICAgICAgICAgICAgICAgcmVzdWx0c19kaWN0WyAnZXJyb3JfbWVz c2FnZScgXSArPTNEICcgVW5kZXNpcmFibGUgZGlyZWN0bz0KcmllcyB3ZXJlOiAlcy4nICUgKAor ICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oIGNoZWNrX3Jlc3VsdHMudW5kZXNpcmFibGVf ZGlycyApICkKICAgICAgICAgcmV0dXJuIHJlc3VsdHNfZGljdAo9MjAKICAgICBkZWYgdXBsb2Fk X2NhcHN1bGUoIHNlbGYsICoqa3dkICk6CkBAIC04NTMsNiArODUwLDEyIEBACiAgICAgICAgICAg ICAgICAgcmV0dXJuX2RpY3RbICdzdGF0dXMnIF0gPTNEICdlcnJvcicKICAgICAgICAgICAgICAg ICB1cGxvYWRlZF9maWxlLmNsb3NlKCkKICAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuX2Rp Y3QKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZhbGlkYXRlX2FyY2hpdmVfcGF0aHMoIHRhcl9h cmNoaXZlICk6CisgICAgICAgICAgICAgICAgcmV0dXJuX2RpY3RbICdzdGF0dXMnIF0gPTNEICdl cnJvcicKKyAgICAgICAgICAgICAgICByZXR1cm5fZGljdFsgJ21lc3NhZ2UnIF0gPTNEICggJ1Ro aXMgY2Fwc3VsZSBjb250YWlucyBhbiBpPQpudmFsaWQgbWVtYmVyIHR5cGUgJworICAgICAgICAg ICAgICAgICAgICAnb3IgYSBmaWxlIG91dHNpZGUgdGhlIGFyY2hpdmUgcGF0aC4nICkKKyAgICAg ICAgICAgICAgICB1cGxvYWRlZF9maWxlLmNsb3NlKCkKKyAgICAgICAgICAgICAgICByZXR1cm4g cmV0dXJuX2RpY3QKICAgICAgICAgICAgIHJldHVybl9kaWN0WyAndGFyX2FyY2hpdmUnIF0gPTNE IHRhcl9hcmNoaXZlCiAgICAgICAgICAgICByZXR1cm5fZGljdFsgJ2NhcHN1bGVfZmlsZV9uYW1l JyBdID0zRCB1cGxvYWRlZF9maWxlX2ZpbGVuYW1lCiAgICAgICAgICAgICB1cGxvYWRlZF9maWxl LmNsb3NlKCkKQEAgLTg2Miw2ICs4NjUsMTggQEAKICAgICAgICAgICAgIHJldHVybiByZXR1cm5f ZGljdAogICAgICAgICByZXR1cm4gcmV0dXJuX2RpY3QKPTIwCisgICAgZGVmIHZhbGlkYXRlX2Fy Y2hpdmVfcGF0aHMoIHNlbGYsIHRhcl9hcmNoaXZlICk6CisgICAgICAgICcnJworICAgICAgICBJ bnNwZWN0IHRoZSBhcmNoaXZlIGNvbnRlbnRzIHRvIGVuc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBy aXNreSBzeW09CmxpbmtzLgorICAgICAgICBSZXR1cm5zIFRydWUgaWYgYSBzdXNwaWNpb3VzIHBh dGggaXMgZm91bmQuCisgICAgICAgICcnJworICAgICAgICBmb3IgbWVtYmVyIGluIHRhcl9hcmNo aXZlLmdldG1lbWJlcnMoKToKKyAgICAgICAgICAgIGlmIG5vdCAoIG1lbWJlci5pc2RpcigpIG9y IG1lbWJlci5pc2ZpbGUoKSBvciBtZW1iZXIuaXNsbmsoKSApOgorICAgICAgICAgICAgICAgIHJl dHVybiBGYWxzZQorICAgICAgICAgICAgZWxpZiBub3Qgc2FmZV9yZWxwYXRoKCBtZW1iZXIubmFt ZSApOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQor CiAgICAgZGVmIHZhbGlkYXRlX2NhcHN1bGUoIHNlbGYsICoqa3dkICk6CiAgICAgICAgICIiIgog ICAgICAgICBJbnNwZWN0IHRoZSB1cGxvYWRlZCBjYXBzdWxlJ3MgbWFuaWZlc3QgYW5kIGl0cyBj b250YWluZWQgZmlsZXMgdG89CiBlbnN1cmUgaXQgaXMgYSB2YWxpZAoKZGlmZiAtciBkNjJmM2U1 MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjll NDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvdG9vbF9zaGVkL2dhbGF4eV9pbnN0YWxsL3JlcG9z aXRvcnlfZGVwZW5kZW5jaWVzL3JlcG89CnNpdG9yeV9kZXBlbmRlbmN5X21hbmFnZXIucHkKLS0t IGEvbGliL3Rvb2xfc2hlZC9nYWxheHlfaW5zdGFsbC9yZXBvc2l0b3J5X2RlcGVuZGVuY2llcy9y ZXBvc2l0b3J5X2RlcGVuPQpkZW5jeV9tYW5hZ2VyLnB5CisrKyBiL2xpYi90b29sX3NoZWQvZ2Fs YXh5X2luc3RhbGwvcmVwb3NpdG9yeV9kZXBlbmRlbmNpZXMvcmVwb3NpdG9yeV9kZXBlbj0KZGVu Y3lfbWFuYWdlci5weQpAQCAtNDE0LDYgKzQxNCwyMyBAQAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWxsX3JlcG9faW5mb19kaWN0c19rZXlzID0zRCBbIGQua2V5cyg9Cilb IDAgXSBmb3IgZCBpbiBhbGxfcmVwb19pbmZvX2RpY3RzIF0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIHJlcXVpcmVkX3JlcG9faW5mb19kaWN0X2tleSBub3QgaW4gPQph bGxfcmVwb19pbmZvX2RpY3RzX2tleXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYWxsX3JlcG9faW5mb19kaWN0cy5hcHBlbmQoIHJlcXVpcj0KZWRfcmVwb19pbmZv X2RpY3QgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkX3JlcG9faW5mb19k aWN0X2tleSBjb3JyPQplc3BvbmRzIHRvIHRoZSByZXBvIG5hbWUuCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBBIHNpbmdsZSBpbnN0YWxsIHRyYW5zYWN0aW9uIG1p Zz0KaHQgcmVxdWlyZSB0aGUgaW5zdGFsbGF0aW9uIG9mIDIgb3IgbW9yZSByZXBvcworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCB0aGUgc2FtZSByZXBvIG5h bWUgYnV0IGRpZmY9CmVyZW50IG93bmVycyBvciB2ZXJzaW9ucy4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIFRoZXJlZm9yZSwgaWYgcmVxdWlyZWRfcmVwb19pbmZv PQpfZGljdF9rZXkgaXMgYWxyZWFkeSBpbiBhbGxfcmVwb19pbmZvX2RpY3RzLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgdG9vbCBpZCBp cyBhbHJlYWQ9CnkgcHJlc2VudC4gSWYgaXQgaXMgbm90LCB3ZSBhcmUgZGVhbGluZyB3aXRoIHRo ZSBzYW1lIHJlcG8gbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjIGJ1dCBhIGRpZmZlcmVudCBvd25lci9jaGFuZ2VzZXQgPQpyZXZpc2lvbiBvciB2ZXJzaW9u IGFuZCB3ZSBhZGQgdGhlIHJlcG8gdG8gdGhlIGxpc3Qgb2YgcmVwb3MgdG8gYmUgaW5zdGFsbGU9 CmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbF9pZCA9M0Qg cmVxdWlyZWRfcmVwb19pbmZvX2RpYz0KdFsgcmVxdWlyZWRfcmVwb19pbmZvX2RpY3Rfa2V5IF1b IDEgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3ByZXNlbnQg PTNEIEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJl cG9faW5mb19kaWN0IGluIGFsbF9yZXBvX2luZj0Kb19kaWN0czoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gcmVwb19pbmZvX2RpY3QuaXRl PQptcygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgcmVxdWlyZWRfcmVwb19pbmZvX2RpY3Q9Cl9rZXkgPTNEPTNEIGs6CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdG9vbF9pZCA9M0Q9M0Qg dlsxXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaXNfcHJlc2VudCA9M0QgVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIG5vdCBpc19wcmVzZW50OgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhbGxfcmVwb19pbmZvX2RpY3RzLmFwcGVuZCggcmU9CnF1 aXJlZF9yZXBvX2luZm9fZGljdCApCiAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfcmVxdWly ZWRfcmVwb19pbmZvX2RpY3RbICdhbGxfcmVwb19pbmZvX2RpY3RzJz0KIF0gPTNEIGFsbF9yZXBv X2luZm9fZGljdHMKICAgICAgICAgcmV0dXJuIGFsbF9yZXF1aXJlZF9yZXBvX2luZm9fZGljdAo9 MjAKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAz NmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL3Rvb2xfc2hlZC91 dGlsL2NvbW1pdF91dGlsLnB5Ci0tLSBhL2xpYi90b29sX3NoZWQvdXRpbC9jb21taXRfdXRpbC5w eQorKysgYi9saWIvdG9vbF9zaGVkL3V0aWwvY29tbWl0X3V0aWwucHkKQEAgLTUsNiArNSw3IEBA CiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB0ZW1wZmlsZQorZnJvbSBjb2xsZWN0 aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQo9MjAKIGZyb20gZ2FsYXh5IGltcG9ydCBlZ2dzCiBlZ2dz LnJlcXVpcmUoJ1NRTEFsY2hlbXknKQpAQCAtMTIsNiArMTMsNyBAQAo9MjAKIGltcG9ydCB0b29s X3NoZWQucmVwb3NpdG9yeV90eXBlcy51dGlsIGFzIHJ0X3V0aWwKIGZyb20gZ2FsYXh5LmRhdGF0 eXBlcyBpbXBvcnQgY2hlY2tlcnMKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHNhZmVfcmVscGF0 aAogZnJvbSB0b29sX3NoZWQudG9vbHMgaW1wb3J0IGRhdGFfdGFibGVfbWFuYWdlcgogZnJvbSB0 b29sX3NoZWQudXRpbCBpbXBvcnQgYmFzaWNfdXRpbCwgaGdfdXRpbCwgc2hlZF91dGlsX2NvbW1v biBhcyBzdWMKPTIwCkBAIC0yMiwzMCArMjQsNDQgQEAKPTIwCj0yMAogZGVmIGNoZWNrX2FyY2hp dmUoIHJlcG9zaXRvcnksIGFyY2hpdmUgKToKKyAgICB2YWxpZCA9M0QgW10KKyAgICBpbnZhbGlk ID0zRCBbXQorICAgIGVycm9ycyA9M0QgW10KKyAgICB1bmRlc2lyYWJsZV9maWxlcyA9M0QgW10K KyAgICB1bmRlc2lyYWJsZV9kaXJzID0zRCBbXQogICAgIGZvciBtZW1iZXIgaW4gYXJjaGl2ZS5n ZXRtZW1iZXJzKCk6CiAgICAgICAgICMgQWxsb3cgcmVndWxhciBmaWxlcyBhbmQgZGlyZWN0b3Jp ZXMgb25seQogICAgICAgICBpZiBub3QgKCBtZW1iZXIuaXNkaXIoKSBvciBtZW1iZXIuaXNmaWxl KCkgb3IgbWVtYmVyLmlzbG5rKCkgKToKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRl ZCBhcmNoaXZlcyBjYW4gb25seSBpbmNsdWRlIHJlZ3VsYXIgZGlyZWN0PQpvcmllcyBhbmQgZmls ZXMgKG5vIHN5bWJvbGljIGxpbmtzLCBkZXZpY2VzLCBldGMpLiAgIgotICAgICAgICAgICAgbWVz c2FnZSArPTNEICJUaGUgcHJvYmxlbWF0aWMgbWVtYmVyIGluIHRoaXMgYXJjaGl2ZSBpcyAlcywi ICU9CiBzdHIoIG1lbWJlci5uYW1lICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2Fn ZQotICAgICAgICBmb3IgaXRlbSBpbiBbICcuaGcnLCAnLi4nLCAnLycgXToKLSAgICAgICAgICAg IGlmIG1lbWJlci5uYW1lLnN0YXJ0c3dpdGgoIGl0ZW0gKToKLSAgICAgICAgICAgICAgICBtZXNz YWdlID0zRCAiVXBsb2FkZWQgYXJjaGl2ZXMgY2Fubm90IGNvbnRhaW4gLmhnIGRpcmVjdG9yPQpp ZXMsIGFic29sdXRlIGZpbGVuYW1lcyBzdGFydGluZyB3aXRoICcvJywgb3IgZmlsZW5hbWVzIHdp dGggdHdvIGRvdHMgJy4uJy49CiAgIgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0zRCAiVGhl IHByb2JsZW1hdGljIG1lbWJlciBpbiB0aGlzIGFyY2hpdmUgaXMgJXM9Ci4iICUgc3RyKCBtZW1i ZXIubmFtZSApCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAgICAg IGlmIG1lbWJlci5uYW1lIGluIFsgJ2hncmMnIF06Ci0gICAgICAgICAgICBtZXNzYWdlID0zRCAi VXBsb2FkZWQgYXJjaGl2ZXMgY2Fubm90IGNvbnRhaW4gaGdyYyBmaWxlcy4gICIKLSAgICAgICAg ICAgIG1lc3NhZ2UgKz0zRCAiVGhlIHByb2JsZW1hdGljIG1lbWJlciBpbiB0aGlzIGFyY2hpdmUg aXMgJXMuIiAlPQogc3RyKCBtZW1iZXIubmFtZSApCi0gICAgICAgICAgICByZXR1cm4gRmFsc2Us IG1lc3NhZ2UKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoICJVcGxvYWRlZCBhcmNoaXZlcyBj YW4gb25seSBpbmNsdWRlIHJlZ3VsYXIgZGlyPQplY3RvcmllcyBhbmQgZmlsZXMgKG5vIHN5bWJv bGljIGxpbmtzLCBkZXZpY2VzLCBldGMpLiIgKQorICAgICAgICAgICAgaW52YWxpZC5hcHBlbmQo IG1lbWJlciApCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBub3Qgc2FmZV9yZWxw YXRoKCBtZW1iZXIubmFtZSApOgorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCggIlVwbG9hZGVk IGFyY2hpdmVzIGNhbm5vdCBjb250YWluIGZpbGVzIHRoYXQgd289CnVsZCBleHRyYWN0IG91dHNp ZGUgb2YgdGhlIGFyY2hpdmUuIiApCisgICAgICAgICAgICBpbnZhbGlkLmFwcGVuZCggbWVtYmVy ICkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoIG1l bWJlci5uYW1lICkgaW4gVU5ERVNJUkFCTEVfRklMRVM6CisgICAgICAgICAgICB1bmRlc2lyYWJs ZV9maWxlcy5hcHBlbmQoIG1lbWJlciApCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBo ZWFkID0zRCB0YWlsID0zRCBtZW1iZXIubmFtZQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3 aGlsZSB0YWlsOgorICAgICAgICAgICAgICAgIGhlYWQsIHRhaWwgPTNEIG9zLnBhdGguc3BsaXQo aGVhZCkKKyAgICAgICAgICAgICAgICBpZiB0YWlsIGluIFVOREVTSVJBQkxFX0RJUlM6CisgICAg ICAgICAgICAgICAgICAgIHVuZGVzaXJhYmxlX2RpcnMuYXBwZW5kKCBtZW1iZXIgKQorICAgICAg ICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9y OgorICAgICAgICAgICAgY29udGludWUKICAgICAgICAgaWYgcmVwb3NpdG9yeS50eXBlID0zRD0z RCBydF91dGlsLlJFUE9TSVRPUllfU1VJVEVfREVGSU5JVElPTiBhbmQgPQptZW1iZXIubmFtZSAh PTNEIHJ0X3V0aWwuUkVQT1NJVE9SWV9ERVBFTkRFTkNZX0RFRklOSVRJT05fRklMRU5BTUU6Ci0g ICAgICAgICAgICBtZXNzYWdlID0zRCAnUmVwb3NpdG9yaWVzIG9mIHR5cGUgPGI+UmVwb3NpdG9y eSBzdWl0ZSBkZWZpbml0aT0Kb248L2I+IGNhbiBjb250YWluIG9ubHkgYSBzaW5nbGUgZmlsZSBu YW1lZCA8Yj5yZXBvc2l0b3J5X2RlcGVuZGVuY2llcy54bWw8PQovYj4uJwotICAgICAgICAgICAg bWVzc2FnZSArPTNEICdUaGlzIGFyY2hpdmUgY29udGFpbnMgYSBtZW1iZXIgbmFtZWQgJXMuJyAl IHN0cig9CiBtZW1iZXIubmFtZSApCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UsIG1lc3NhZ2UK KyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoICdSZXBvc2l0b3JpZXMgb2YgdHlwZSA8Yj5SZXBv c2l0b3J5IHN1aXRlIGRlZmluPQppdGlvbjwvYj4gY2FuIGNvbnRhaW4gb25seSBhIHNpbmdsZSBm aWxlIG5hbWVkIDxiPnJlcG9zaXRvcnlfZGVwZW5kZW5jaWVzLng9Cm1sPC9iPi4nICkKKyAgICAg ICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29udGludWUKICAg ICAgICAgaWYgcmVwb3NpdG9yeS50eXBlID0zRD0zRCBydF91dGlsLlRPT0xfREVQRU5ERU5DWV9E RUZJTklUSU9OIGFuZCBtPQplbWJlci5uYW1lICE9M0QgcnRfdXRpbC5UT09MX0RFUEVOREVOQ1lf REVGSU5JVElPTl9GSUxFTkFNRToKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdSZXBvc2l0b3Jp ZXMgb2YgdHlwZSA8Yj5Ub29sIGRlcGVuZGVuY3kgZGVmaW5pdGlvPQpuPC9iPiBjYW4gY29udGFp biBvbmx5IGEgc2luZ2xlIGZpbGUgbmFtZWQgPGI+dG9vbF9kZXBlbmRlbmNpZXMueG1sPC9iPi4n Ci0gICAgICAgICAgICBtZXNzYWdlICs9M0QgJ1RoaXMgYXJjaGl2ZSBjb250YWlucyBhIG1lbWJl ciBuYW1lZCAlcy4nICUgc3RyKD0KIG1lbWJlci5uYW1lICkKLSAgICAgICAgICAgIHJldHVybiBG YWxzZSwgbWVzc2FnZQotICAgIHJldHVybiBUcnVlLCAnJworICAgICAgICAgICAgZXJyb3JzLmFw cGVuZCggJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlRvb2wgZGVwZW5kZW5jeSBkZWZpbmk9CnRp b248L2I+IGNhbiBjb250YWluIG9ubHkgYSBzaW5nbGUgZmlsZSBuYW1lZCA8Yj50b29sX2RlcGVu ZGVuY2llcy54bWw8L2I+Lj0KJyApCisgICAgICAgICAgICBpbnZhbGlkLmFwcGVuZCggbWVtYmVy ICkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHZhbGlkLmFwcGVuZCggbWVtYmVyICkK KyAgICBBcmNoaXZlQ2hlY2tSZXN1bHRzID0zRCBuYW1lZHR1cGxlKCAnQXJjaGl2ZUNoZWNrUmVz dWx0cycsIFsgJ3ZhbGlkJywgPQonaW52YWxpZCcsICd1bmRlc2lyYWJsZV9maWxlcycsICd1bmRl c2lyYWJsZV9kaXJzJywgJ2Vycm9ycycgXSApCisgICAgcmV0dXJuIEFyY2hpdmVDaGVja1Jlc3Vs dHMoIHZhbGlkLCBpbnZhbGlkLCB1bmRlc2lyYWJsZV9maWxlcywgdW5kZXNpcj0KYWJsZV9kaXJz LCBlcnJvcnMgKQo9MjAKPTIwCiBkZWYgY2hlY2tfZmlsZV9jb250ZW50c19mb3JfZW1haWxfYWxl cnRzKCBhcHAgKToKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1 MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL3Rv b2xfc2hlZC91dGlsL2VuY29kaW5nX3V0aWwucHkKLS0tIGEvbGliL3Rvb2xfc2hlZC91dGlsL2Vu Y29kaW5nX3V0aWwucHkKKysrIGIvbGliL3Rvb2xfc2hlZC91dGlsL2VuY29kaW5nX3V0aWwucHkK QEAgLTMsNyArMyw2IEBACiBpbXBvcnQgbG9nZ2luZwo9MjAKIGZyb20gZ2FsYXh5LnV0aWwuaGFz aF91dGlsIGltcG9ydCBobWFjX25ldwotZnJvbSBnYWxheHkudXRpbC5qc29uIGltcG9ydCBqc29u X2ZpeAo9MjAKIGxvZyA9M0QgbG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKPTIwCkBAIC0y MSwxMyArMjAsOCBAQAogICAgIHZhbHVlcyA9M0QgTm9uZQogICAgIHRyeToKICAgICAgICAgdmFs dWVzID0zRCBqc29uLmxvYWRzKCB2YWx1ZSApCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAg ICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICBwYXNzCi0gICAgaWYgdmFsdWVzIGlzIG5vdCBO b25lOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4ganNvbl9maXgoIHZhbHVlcyAp Ci0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBsb2cuZGVidWcoICJG aXhpbmcgZGVjb2RlZCBqc29uIHZhbHVlcyAnJXMnIGZyb20gdG9vbCBzaGVkIHRocj0KZXcgZXhj ZXB0aW9uOiAlcyIgJSAoIHN0ciggdmFsdWVzICksIHN0ciggZSApICkgKQogICAgIGlmIHZhbHVl cyBpcyBOb25lOgogICAgICAgICB2YWx1ZXMgPTNEIHZhbHVlCiAgICAgcmV0dXJuIHZhbHVlcwoK ZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1 MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvdG9vbF9zaGVkL3V0aWwv cmVwb3NpdG9yeV9jb250ZW50X3V0aWwucHkKLS0tIGEvbGliL3Rvb2xfc2hlZC91dGlsL3JlcG9z aXRvcnlfY29udGVudF91dGlsLnB5CisrKyBiL2xpYi90b29sX3NoZWQvdXRpbC9yZXBvc2l0b3J5 X2NvbnRlbnRfdXRpbC5weQpAQCAtMTUsMzEgKzE1LDIzIEBACiAgICAgaGdfdXRpbC5nZXRfcmVw b19mb3JfcmVwb3NpdG9yeSggdHJhbnMuYXBwLCByZXBvc2l0b3J5PTNETm9uZSwgcmVwb19wYT0K dGg9M0RyZXBvX2RpciwgY3JlYXRlPTNERmFsc2UgKQogICAgIHVuZGVzaXJhYmxlX2RpcnNfcmVt b3ZlZCA9M0QgMAogICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIDAKLSAgICBvaywg bWVzc2FnZSA9M0QgY29tbWl0X3V0aWwuY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgdGFyICkK LSAgICBpZiBub3Qgb2s6CisgICAgY2hlY2tfcmVzdWx0cyA9M0QgY29tbWl0X3V0aWwuY2hlY2tf YXJjaGl2ZSggcmVwb3NpdG9yeSwgdGFyICkKKyAgICBpZiBjaGVja19yZXN1bHRzLmludmFsaWQ6 CiAgICAgICAgIHRhci5jbG9zZSgpCiAgICAgICAgIHVwbG9hZGVkX2ZpbGUuY2xvc2UoKQotICAg ICAgICByZXR1cm4gb2ssIG1lc3NhZ2UsIFtdLCAnJywgdW5kZXNpcmFibGVfZGlyc19yZW1vdmVk LCB1bmRlc2lyYWJsZV89CmZpbGVzX3JlbW92ZWQKKyAgICAgICAgbWVzc2FnZSA9M0QgJyVzIElu dmFsaWQgcGF0aHMgd2VyZTogJXMnICUgKAorICAgICAgICAgICAgJyAnLmpvaW4oIGNoZWNrX3Jl c3VsdHMuZXJyb3JzICksICcsICcuam9pbiggY2hlY2tfcmVzdWx0cy5pbnY9CmFsaWQgKSApCisg ICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZSwgW10sICcnLCB1bmRlc2lyYWJsZV9kaXJzX3Jl bW92ZWQsIHVuZGVzaXJhYj0KbGVfZmlsZXNfcmVtb3ZlZAogICAgIGVsc2U6CiAgICAgICAgIGlm IHVwbG9hZF9wb2ludCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3Mu cGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpvaW4oIHJlcG9fZGlyLCB1cGxvYWRfPQpwb2ludCApICkK ICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0aC5hYnNwYXRo KCByZXBvX2RpciApCi0gICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZlID0zRCBbXQotICAgICAg ICBmb3IgdGFyaW5mb19vYmogaW4gdGFyLmdldG1lbWJlcnMoKToKLSAgICAgICAgICAgIG9rID0z RCBvcy5wYXRoLmJhc2VuYW1lKCB0YXJpbmZvX29iai5uYW1lICkgbm90IGluIGNvbW1pdF91dGls PQouVU5ERVNJUkFCTEVfRklMRVMKLSAgICAgICAgICAgIGlmIG9rOgotICAgICAgICAgICAgICAg IGZvciBmaWxlX3BhdGhfaXRlbSBpbiB0YXJpbmZvX29iai5uYW1lLnNwbGl0KCAnLycgKToKLSAg ICAgICAgICAgICAgICAgICAgaWYgZmlsZV9wYXRoX2l0ZW0gaW4gY29tbWl0X3V0aWwuVU5ERVNJ UkFCTEVfRElSUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVzaXJhYmxlX2RpcnNfcmVt b3ZlZCArPTNEIDEKLSAgICAgICAgICAgICAgICAgICAgICAgIG9rID0zRCBGYWxzZQotICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg ICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCArPTNEIDEKLSAgICAgICAgICAgIGlmIG9rOgot ICAgICAgICAgICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZlLmFwcGVuZCggdGFyaW5mb19vYmou bmFtZSApCisgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIGxlbiggY2hlY2tf cmVzdWx0cy51bmRlc2lyYWJsZV9maWxlcz0KICkKKyAgICAgICAgdW5kZXNpcmFibGVfZGlyc19y ZW1vdmVkID0zRCBsZW4oIGNoZWNrX3Jlc3VsdHMudW5kZXNpcmFibGVfZGlycyApCisgICAgICAg IGZpbGVuYW1lc19pbl9hcmNoaXZlID0zRCBbIHRpLm5hbWUgZm9yIHRpIGluIGNoZWNrX3Jlc3Vs dHMudmFsaWQgXQogICAgICAgICAjIEV4dHJhY3QgdGhlIHVwbG9hZGVkIHRhciB0byB0aGUgbG9h ZF9wb2ludCB3aXRoaW4gdGhlIHJlcG9zaXRvcnk9CiBoaWVyYXJjaHkuCi0gICAgICAgIHRhci5l eHRyYWN0YWxsKCBwYXRoPTNEZnVsbF9wYXRoICkKKyAgICAgICAgdGFyLmV4dHJhY3RhbGwoIHBh dGg9M0RmdWxsX3BhdGgsIG1lbWJlcnM9M0RjaGVja19yZXN1bHRzLnZhbGlkICkKICAgICAgICAg dGFyLmNsb3NlKCkKICAgICAgICAgdXBsb2FkZWRfZmlsZS5jbG9zZSgpCiAgICAgICAgIGZvciBm aWxlbmFtZSBpbiBmaWxlbmFtZXNfaW5fYXJjaGl2ZToKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1 N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJk ZDRiMWUxOWE5N2FhNTUgbGliL3Rvb2xfc2hlZC91dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKLS0t IGEvbGliL3Rvb2xfc2hlZC91dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKKysrIGIvbGliL3Rvb2xf c2hlZC91dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKQEAgLTgzLDYgKzgzLDU5IEBACiAiIiIKPTIw Cj0yMAorZGVmIGNhbl9lbGltaW5hdGVfcmVwb3NpdG9yeV9kZXBlbmRlbmN5KG1ldGFkYXRhX2Rp Y3QsIHRvb2xfc2hlZF91cmwsIG5hbWU9Ciwgb3duZXIpOgorICAgICIiIgorICAgIERldGVybWlu ZSBpZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYSByZXBvc2l0b3J5X2RlcGVuZGVuY3kgcmVj b3JkCisgICAgYXNzb2NpYXRlZCB3aXRoIGEgdG9vbF9zaGVkX3JlcG9zaXRvcnkgcmVjb3JkIG9u IHRoZSBHYWxheHkgc2lkZQorICAgIGNhbiBiZSBlbGltaW5hdGVkLgorICAgICIiIgorICAgIHJk X2RpY3QgPTNEIG1ldGFkYXRhX2RpY3QuZ2V0KCdyZXBvc2l0b3J5X2RlcGVuZGVuY2llcycsIHt9 KQorICAgIHJkX3R1cHMgPTNEIHJkX2RpY3QuZ2V0KCAncmVwb3NpdG9yeV9kZXBlbmRlbmNpZXMn LCBbXSApCisgICAgZm9yIHJkX3R1cCBpbiByZF90dXBzOgorICAgICAgICB0c3UsIG4sIG8sIG5v bmUxLCBub25lMiwgbm9uZTMgPTNEIGNvbW1vbl91dGlsLnBhcnNlX3JlcG9zaXRvcnlfZGU9CnBl bmRlbmN5X3R1cGxlKHJkX3R1cCkKKyAgICAgICAgaWYgdHN1ID0zRD0zRCB0b29sX3NoZWRfdXJs IGFuZCBuID0zRD0zRCBuYW1lIGFuZCBvID0zRD0zRCBvd25lcjoKKyAgICAgICAgICAgICMgVGhl IHJlcG9zaXRvcnkgZGVwZW5kZW5jeSBpcyBjdXJyZW50LCBzbyBrZWVwIGl0LgorICAgICAgICAg ICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKKworCitkZWYgY2FuX2VsaW1pbmF0ZV90 b29sX2RlcGVuZGVuY3kobWV0YWRhdGFfZGljdCwgbmFtZSwgdHlwZSwgdmVyc2lvbik6CisgICAg IiIiCisgICAgRGV0ZXJtaW5lIGlmIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBhIHRvb2xfZGVw ZW5kZW5jeSByZWNvcmQKKyAgICBhc3NvY2lhdGVkIHdpdGggYSB0b29sX3NoZWRfcmVwb3NpdG9y eSByZWNvcmQgb24gdGhlIEdhbGF4eSBzaWRlCisgICAgY2FuIGJlIGVsaW1pbmF0ZWQuCisgICAg IiIiCisgICAgdGRfZGljdCA9M0QgbWV0YWRhdGFfZGljdC5nZXQoJ3Rvb2xfZGVwZW5kZW5jaWVz Jywge30pCisgICAgZm9yIHRkX2tleSwgdGRfdmFsIGluIHRkX2RpY3QuaXRlbXMoKToKKyAgICAg ICAgbiA9M0QgdGRfdmFsLmdldCgnbmFtZScsIE5vbmUpCisgICAgICAgIHQgPTNEIHRkX3ZhbC5n ZXQoJ3R5cGUnLCBOb25lKQorICAgICAgICB2ID0zRCB0ZF92YWwuZ2V0KCd2ZXJzaW9uJywgTm9u ZSkKKyAgICAgICAgaWYgbiA9M0Q9M0QgbmFtZSBhbmQgdCA9M0Q9M0QgdHlwZSBhbmQgdiA9M0Q9 M0QgdmVyc2lvbjoKKyAgICAgICAgICAgICMgVGhlIHRvb2wgZGVwZW5kZW5jeSBpcyBjdXJyZW50 LCBzbyBrZWVwIGl0LgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUK KworCitkZWYgY2xlYW5fZGVwZW5kZW5jeV9yZWxhdGlvbnNoaXBzKHRyYW5zLCBtZXRhZGF0YV9k aWN0LCB0b29sX3NoZWRfcmVwb3NpdD0Kb3J5LCB0b29sX3NoZWRfdXJsKToKKyAgICAiIiIKKyAg ICBSZXBvc2l0b3JpZXMgb2YgdHlwZSB0b29sX2RlcGVuZGVuY3lfZGVmaW5pdGlvbiBhbGxvdyBm b3IgZGVmaW5pbmcgYQorICAgIHBhY2thZ2UgZGVwZW5kZW5jeSBhdCBzb21lIHBvaW50IGluIHRo ZSBjaGFuZ2UgbG9nIGFuZCB0aGVuIHJlbW92aW5nIHQ9CmhlCisgICAgZGVwZW5kZW5jeSBsYXRl ciBpbiB0aGUgY2hhbmdlIGxvZy4gIFRoaXMgZnVuY3Rpb24ga2VlcHMgdGhlIGRlcGVuZGVuY3kK KyAgICByZWxhdGlvbnNoaXBzIG9uIHRoZSBHYWxheHkgc2lkZSBjdXJyZW50IGJ5IGRlbGV0aW5n IGRhdGFiYXNlIHJlY29yZHMKKyAgICB0aGF0IGRlZmluZWQgdGhlIG5vdy1icm9rZW4gcmVsYXRp b25zaGlwcy4KKyAgICAiIiIKKyAgICBmb3IgcnJkYSBpbiB0b29sX3NoZWRfcmVwb3NpdG9yeS5y ZXF1aXJlZF9yZXBvc2l0b3JpZXM6CisgICAgICAgIHJkID0zRCBycmRhLnJlcG9zaXRvcnlfZGVw ZW5kZW5jeQorICAgICAgICByID0zRCByZC5yZXBvc2l0b3J5CisgICAgICAgIGlmIGNhbl9lbGlt aW5hdGVfcmVwb3NpdG9yeV9kZXBlbmRlbmN5KG1ldGFkYXRhX2RpY3QsIHRvb2xfc2hlZF91cj0K bCwgci5uYW1lLCByLm93bmVyKToKKyAgICAgICAgICAgIHRyYW5zLmluc3RhbGxfbW9kZWwuY29u dGV4dC5kZWxldGUocnJkYSkKKyAgICAgICAgICAgIHRyYW5zLmluc3RhbGxfbW9kZWwuY29udGV4 dC5mbHVzaCgpCisgICAgZm9yIHRkIGluIHRvb2xfc2hlZF9yZXBvc2l0b3J5LnRvb2xfZGVwZW5k ZW5jaWVzOgorICAgICAgICBpZiBjYW5fZWxpbWluYXRlX3Rvb2xfZGVwZW5kZW5jeShtZXRhZGF0 YV9kaWN0LCB0ZC5uYW1lLCB0ZC50eXBlLCA9CnRkLnZlcnNpb24pOgorICAgICAgICAgICAgdHJh bnMuaW5zdGFsbF9tb2RlbC5jb250ZXh0LmRlbGV0ZSh0ZCkKKyAgICAgICAgICAgIHRyYW5zLmlu c3RhbGxfbW9kZWwuY29udGV4dC5mbHVzaCgpCisKKwogZGVmIGNyZWF0ZV9vcl91cGRhdGVfdG9v bF9zaGVkX3JlcG9zaXRvcnkoIGFwcCwgbmFtZSwgZGVzY3JpcHRpb24sIGluc3RhbGw9CmVkX2No YW5nZXNldF9yZXZpc2lvbiwgY3R4X3JldiwgcmVwb3NpdG9yeV9jbG9uZV91cmwsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFfZGljdCwgc3RhdHVz LCBjdXJyZW50Xz0KY2hhbmdlc2V0X3JldmlzaW9uPTNETm9uZSwgb3duZXI9M0QnJywgZGlzdF90 b19zaGVkPTNERmFsc2UgKToKICAgICAiIiIKQEAgLTMwMCw2ICszNTMsMTkgQEAKICAgICByZXR1 cm4gaGdfdXRpbC5JTklUSUFMX0NIQU5HRUxPR19IQVNICj0yMAo9MjAKK2RlZiBnZXRfdG9vbF9k ZXBlbmRlbmN5X2RlZmluaXRpb25fbWV0YWRhdGFfZnJvbV90b29sX3NoZWQoIGFwcCwgdG9vbF9z aGVkPQpfdXJsLCBuYW1lLCBvd25lciApOgorICAgICIiIgorICAgIFNlbmQgYSByZXF1ZXN0IHRv IHRoZSB0b29sIHNoZWQgdG8gcmV0cmlldmUgdGhlIGN1cnJlbnQgbWV0YWRhdGEgZm9yIGEKKyAg ICByZXBvc2l0b3J5IG9mIHR5cGUgdG9vbF9kZXBlbmRlbmN5X2RlZmluaXRpb24gZGVmaW5lZCBi eSB0aGUgY29tYmluYXRpPQpvbgorICAgIG9mIGEgbmFtZSBhbmQgb3duZXIuCisgICAgIiIiCisg ICAgdG9vbF9zaGVkX3VybCA9M0QgY29tbW9uX3V0aWwuZ2V0X3Rvb2xfc2hlZF91cmxfZnJvbV90 b29sX3NoZWRfcmVnaXN0cj0KeSggYXBwLCB0b29sX3NoZWRfdXJsICkKKyAgICBwYXJhbXMgPTNE IGRpY3QoIG5hbWU9M0RuYW1lLCBvd25lcj0zRG93bmVyICkKKyAgICBwYXRoc3BlYyA9M0QgWyAn cmVwb3NpdG9yeScsICdnZXRfdG9vbF9kZXBlbmRlbmN5X2RlZmluaXRpb25fbWV0YWRhdGEnPQog XQorICAgIG1ldGFkYXRhID0zRCBjb21tb25fdXRpbC50b29sX3NoZWRfZ2V0KCBhcHAsIHRvb2xf c2hlZF91cmwsIHBhdGhzcGVjPQo9M0RwYXRoc3BlYywgcGFyYW1zPTNEcGFyYW1zICkKKyAgICBy ZXR1cm4gbWV0YWRhdGEKKworCiBkZWYgZ2V0X25leHRfZG93bmxvYWRhYmxlX2NoYW5nZXNldF9y ZXZpc2lvbiggcmVwb3NpdG9yeSwgcmVwbywgYWZ0ZXJfY2hhbj0KZ2VzZXRfcmV2aXNpb24gKToK ICAgICAiIiIKICAgICBSZXR1cm4gdGhlIGluc3RhbGxhYmxlIGNoYW5nZXNldF9yZXZpc2lvbiBp biB0aGUgcmVwb3NpdG9yeSBjaGFuZ2Vsb2cgPQphZnRlciB0aGUgY2hhbmdlc2V0IHRvIHdoaWNo CkBAIC01MzQsOSArNjAwLDE3IEBACiAgICAgcmV0dXJuIHJlcG9zaXRvcnkKPTIwCj0yMAotZGVm IGdldF9yZXBvc2l0b3J5X2ZpbGVfY29udGVudHMoIGZpbGVfcGF0aCApOgorZGVmIGdldF9yZXBv c2l0b3J5X2ZpbGVfY29udGVudHMoIGFwcCwgZmlsZV9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAg ICAgIiIiUmV0dXJuIHRoZSBkaXNwbGF5LXNhZmUgY29udGVudHMgb2YgYSByZXBvc2l0b3J5IGZp bGUgZm9yIGRpc3BsYXkgaT0KbiBhIGJyb3dzZXIuIiIiCi0gICAgaWYgY2hlY2tlcnMuaXNfZ3pp cCggZmlsZV9wYXRoICk6CisgICAgc2FmZV9zdHIgPTNEICcnCisgICAgaWYgbm90IGlzX3BhdGhf d2l0aGluX3JlcG8oIGFwcCwgZmlsZV9wYXRoLCByZXBvc2l0b3J5X2lkICk6CisgICAgICAgIGxv Zy53YXJuaW5nKCAnUmVxdWVzdCB0cmllcyB0byBhY2Nlc3MgYSBmaWxlIG91dHNpZGUgb2YgdGhl IHJlcG9zaT0KdG9yeSBsb2NhdGlvbi4gRmlsZSBwYXRoOiAlcycsIGZpbGVfcGF0aCApCisgICAg ICAgIHJldHVybiAnSW52YWxpZCBmaWxlIHBhdGgnCisgICAgIyBTeW1saW5rIHRhcmdldHMgYXJl IGNoZWNrZWQgYnkgaXNfcGF0aF93aXRoaW5fcmVwbworICAgIGlmIG9zLnBhdGguaXNsaW5rKCBm aWxlX3BhdGggKToKKyAgICAgICAgc2FmZV9zdHIgPTNEICdsaW5rIHRvOiAnICsgYmFzaWNfdXRp bC50b19odG1sX3N0cmluZyggb3MucmVhZGxpbmsoPQogZmlsZV9wYXRoICkgKQorICAgICAgICBy ZXR1cm4gc2FmZV9zdHIKKyAgICBlbGlmIGNoZWNrZXJzLmlzX2d6aXAoIGZpbGVfcGF0aCApOgog ICAgICAgICByZXR1cm4gJzxici8+Z3ppcCBjb21wcmVzc2VkIGZpbGU8YnIvPicKICAgICBlbGlm IGNoZWNrZXJzLmlzX2J6MiggZmlsZV9wYXRoICk6CiAgICAgICAgIHJldHVybiAnPGJyLz5iejIg Y29tcHJlc3NlZCBmaWxlPGJyLz4nCkBAIC01NDUsNyArNjE5LDYgQEAKICAgICBlbGlmIGNoZWNr ZXJzLmNoZWNrX2JpbmFyeSggZmlsZV9wYXRoICk6CiAgICAgICAgIHJldHVybiAnPGJyLz5CaW5h cnkgZmlsZTxici8+JwogICAgIGVsc2U6Ci0gICAgICAgIHNhZmVfc3RyID0zRCAnJwogICAgICAg ICBmb3IgaSwgbGluZSBpbiBlbnVtZXJhdGUoIG9wZW4oIGZpbGVfcGF0aCApICk6CiAgICAgICAg ICAgICBzYWZlX3N0ciA9M0QgJyVzJXMnICUgKCBzYWZlX3N0ciwgYmFzaWNfdXRpbC50b19odG1s X3N0cmluZyggbD0KaW5lICkgKQogICAgICAgICAgICAgIyBTdG9wIHJlYWRpbmcgYWZ0ZXIgc3Ry aW5nIGlzIGxhcmdlciB0aGFuIE1BWF9DT05URU5UX1NJWkUuCkBAIC01NTUsNiArNjI4LDcgQEAK ICAgICAgICAgICAgICAgICAgICAgdXRpbC5uaWNlX3NpemUoIE1BWF9DT05URU5UX1NJWkUgKQog ICAgICAgICAgICAgICAgIHNhZmVfc3RyID0zRCAnJXMlcycgJSAoIHNhZmVfc3RyLCBsYXJnZV9z dHIgKQogICAgICAgICAgICAgICAgIGJyZWFrCisKICAgICAgICAgaWYgbGVuKCBzYWZlX3N0ciAp ID4gYmFzaWNfdXRpbC5NQVhfRElTUExBWV9TSVpFOgogICAgICAgICAgICAgIyBFbGltaW5hdGUg dGhlIG1pZGRsZSBvZiB0aGUgZmlsZSB0byBkaXNwbGF5IGEgZmlsZSBubyBsYXJnZXI9CiB0aGFu IGJhc2ljX3V0aWwuTUFYX0RJU1BMQVlfU0laRS4KICAgICAgICAgICAgICMgVGhpcyBtYXkgbm90 IGJlIGlkZWFsIGlmIHRoZSBmaWxlIGlzIGxhcmdlciB0aGFuIE1BWF9DT05URU5UPQpfU0laRS4K QEAgLTU3Niw5ICs2NTAsNiBAQAogICAgICAgICAjIFNraXAgLmhnIGRpcmVjdG9yaWVzCiAgICAg ICAgIGlmIGl0ZW0uc3RhcnRzd2l0aCggJy5oZycgKToKICAgICAgICAgICAgIGNvbnRpbnVlCi0g ICAgICAgIGlmIG9zLnBhdGguaXNkaXIoIG9zLnBhdGguam9pbiggZm9sZGVyX3BhdGgsIGl0ZW0g KSApOgotICAgICAgICAgICAgIyBBcHBlbmQgYSAnLycgY2hhcmFjdGVyIHNvIHRoYXQgb3VyIGpx dWVyeSBkeW5hdHJlZSB3aWxsIGZ1bmM9CnRpb24gcHJvcGVybHkuCi0gICAgICAgICAgICBpdGVt ID0zRCAnJXMvJyAlIGl0ZW0KICAgICAgICAgY29udGVudHMuYXBwZW5kKCBpdGVtICkKICAgICBp ZiBjb250ZW50czoKICAgICAgICAgY29udGVudHMuc29ydCgpCkBAIC03MTMsNiArNzg0LDE4IEBA CiAgICAgcmV0dXJuIHF1ZXJ5Cj0yMAo9MjAKK2RlZiBnZXRfcmVwb3NpdG9yeV90eXBlX2Zyb21f dG9vbF9zaGVkKCBhcHAsIHRvb2xfc2hlZF91cmwsIG5hbWUsIG93bmVyICk6CisgICAgIiIiCisg ICAgU2VuZCBhIHJlcXVlc3QgdG8gdGhlIHRvb2wgc2hlZCB0byByZXRyaWV2ZSB0aGUgdHlwZSBm b3IgYSByZXBvc2l0b3J5ID0KZGVmaW5lZCBieSB0aGUKKyAgICBjb21iaW5hdGlvbiBvZiBhIG5h bWUgYW5kIG93bmVyLgorICAgICIiIgorICAgIHRvb2xfc2hlZF91cmwgPTNEIGNvbW1vbl91dGls LmdldF90b29sX3NoZWRfdXJsX2Zyb21fdG9vbF9zaGVkX3JlZ2lzdHI9CnkoIGFwcCwgdG9vbF9z aGVkX3VybCApCisgICAgcGFyYW1zID0zRCBkaWN0KCBuYW1lPTNEbmFtZSwgb3duZXI9M0Rvd25l ciApCisgICAgcGF0aHNwZWMgPTNEIFsgJ3JlcG9zaXRvcnknLCAnZ2V0X3JlcG9zaXRvcnlfdHlw ZScgXQorICAgIHJlcG9zaXRvcnlfdHlwZSA9M0QgY29tbW9uX3V0aWwudG9vbF9zaGVkX2dldCgg YXBwLCB0b29sX3NoZWRfdXJsLCBwYXQ9CmhzcGVjPTNEcGF0aHNwZWMsIHBhcmFtcz0zRHBhcmFt cyApCisgICAgcmV0dXJuIHJlcG9zaXRvcnlfdHlwZQorCisKIGRlZiBnZXRfdG9vbF9wYW5lbF9j b25maWdfdG9vbF9wYXRoX2luc3RhbGxfZGlyKCBhcHAsIHJlcG9zaXRvcnkgKToKICAgICAiIiIK ICAgICBSZXR1cm4gc2hlZC1yZWxhdGVkIHRvb2wgcGFuZWwgY29uZmlnLCB0aGUgdG9vbF9wYXRo IGNvbmZpZ3VyZWQgaW4gaXQsPQogYW5kIHRoZSByZWxhdGl2ZSBwYXRoIHRvCkBAIC0xMDMxLDEx ICsxMTE0LDE1IEBACiAgICAgcmV0dXJuIGhhc2F0dHIoIGFwcCwgImluc3RhbGxfbW9kZWwiICkK PTIwCj0yMAotZGVmIG9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIGZvbGRlcl9wYXRoICk6 CitkZWYgb3Blbl9yZXBvc2l0b3J5X2ZpbGVzX2ZvbGRlciggYXBwLCBmb2xkZXJfcGF0aCwgcmVw b3NpdG9yeV9pZCApOgogICAgICIiIgogICAgIFJldHVybiBhIGxpc3Qgb2YgZGljdGlvbmFyaWVz LCBlYWNoIG9mIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGZvciA9CmEgZmlsZSBvciBkaXJl Y3RvcnkgY29udGFpbmVkCiAgICAgd2l0aGluIGEgZGlyZWN0b3J5IGluIGEgcmVwb3NpdG9yeSBm aWxlIGhpZXJhcmNoeS4KICAgICAiIiIKKyAgICAjIFN5bWxpbmsgdGFyZ2V0cyBhcmUgY2hlY2tl ZCBieSBpc19wYXRoX3dpdGhpbl9yZXBvCisgICAgaWYgbm90IGlzX3BhdGhfd2l0aGluX3JlcG8o IGFwcCwgZm9sZGVyX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKKyAgICAgICAgbG9nLndhcm5pbmco ICdSZXF1ZXN0IHRyaWVzIHRvIGFjY2VzcyBhIGZvbGRlciBvdXRzaWRlIG9mIHRoZSByZXBvPQpz aXRvcnkgbG9jYXRpb24uIEZvbGRlciBwYXRoOiAlcycsIGZvbGRlcl9wYXRoICkKKyAgICAgICAg cmV0dXJuIFtdCiAgICAgdHJ5OgogICAgICAgICBmaWxlc19saXN0ID0zRCBnZXRfcmVwb3NpdG9y eV9maWxlcyggZm9sZGVyX3BhdGggKQogICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgpAQCAtMTA0NSwx MCArMTEzMiwxNyBAQAogICAgIGZvbGRlcl9jb250ZW50cyA9M0QgW10KICAgICBmb3IgZmlsZW5h bWUgaW4gZmlsZXNfbGlzdDoKICAgICAgICAgaXNfZm9sZGVyID0zRCBGYWxzZQotICAgICAgICBp ZiBmaWxlbmFtZSBhbmQgZmlsZW5hbWVbIC0xIF0gPTNEPTNEIG9zLnNlcDoKLSAgICAgICAgICAg IGlzX2ZvbGRlciA9M0QgVHJ1ZQorICAgICAgICBmdWxsX3BhdGggPTNEIG9zLnBhdGguam9pbigg Zm9sZGVyX3BhdGgsIGZpbGVuYW1lICkKKyAgICAgICAgaXNfbGluayA9M0Qgb3MucGF0aC5pc2xp bmsoIGZ1bGxfcGF0aCApCisgICAgICAgIHBhdGhfaXNfd2l0aGluX3JlcG8gPTNEIGlzX3BhdGhf d2l0aGluX3JlcG8oIGFwcCwgZnVsbF9wYXRoLCByZXBvcz0KaXRvcnlfaWQgKQorICAgICAgICBp ZiBpc19saW5rIGFuZCBub3QgcGF0aF9pc193aXRoaW5fcmVwbzoKKyAgICAgICAgICAgIGxvZy53 YXJuaW5nKCAnVmFsaWQgZm9sZGVyIGNvbnRhaW5zIGEgc3ltbGluayBvdXRzaWRlIG9mIHRoZSBy PQplcG9zaXRvcnkgbG9jYXRpb24uIExpbmsgZm91bmQgaW46ICcgKyBzdHIoIGZ1bGxfcGF0aCAp ICkKICAgICAgICAgaWYgZmlsZW5hbWU6Ci0gICAgICAgICAgICBmdWxsX3BhdGggPTNEIG9zLnBh dGguam9pbiggZm9sZGVyX3BhdGgsIGZpbGVuYW1lICkKKyAgICAgICAgICAgIGlmIG9zLnBhdGgu aXNkaXIoIGZ1bGxfcGF0aCApIGFuZCBwYXRoX2lzX3dpdGhpbl9yZXBvOgorICAgICAgICAgICAg ICAgICMgQXBwZW5kIGEgJy8nIGNoYXJhY3RlciBzbyB0aGF0IG91ciBqcXVlcnkgZHluYXRyZWUg d2lsbCA9CmZ1bmN0aW9uIHByb3Blcmx5LgorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0zRCAn JXMvJyAlIGZpbGVuYW1lCisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0zRCAnJXMvJyAlIGZ1 bGxfcGF0aAorICAgICAgICAgICAgICAgIGlzX2ZvbGRlciA9M0QgVHJ1ZQogICAgICAgICAgICAg bm9kZSA9M0QgeyAidGl0bGUiOiBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICJpc0Zv bGRlciI6IGlzX2ZvbGRlciwKICAgICAgICAgICAgICAgICAgICAgICJpc0xhenkiOiBpc19mb2xk ZXIsCkBAIC0xMDU4LDYgKzExNTIsMTYgQEAKICAgICByZXR1cm4gZm9sZGVyX2NvbnRlbnRzCj0y MAo9MjAKK2RlZiBpc19wYXRoX3dpdGhpbl9yZXBvKCBhcHAsIHBhdGgsIHJlcG9zaXRvcnlfaWQg KToKKyAgICAiIiIKKyAgICBEZXRlY3Qgd2hldGhlciB0aGUgZ2l2ZW4gcGF0aCBpcyB3aXRoaW4g dGhlIHJlcG9zaXRvcnkgZm9sZGUgcm9uIHRoZSBkPQppc2suCisgICAgVXNlIHRvIGZpbHRlciBt YWxpY2lvdXMgc3ltbGlua3MgdGFyZ2V0aW5nIG91dHNpZGUgcGF0aHMuCisgICAgIiIiCisgICAg cmVwb19wYXRoID0zRCBvcy5wYXRoLmFic3BhdGgoIGdldF9yZXBvc2l0b3J5X2J5X2lkKCBhcHAs IHJlcG9zaXRvcnlfaT0KZCApLnJlcG9fcGF0aCggYXBwICkgKQorICAgIHJlc29sdmVkX3BhdGgg PTNEIG9zLnBhdGgucmVhbHBhdGgoIHBhdGggKQorICAgIHJldHVybiBvcy5wYXRoLmNvbW1vbnBy ZWZpeCggWyByZXBvX3BhdGgsIHJlc29sdmVkX3BhdGggXSApID0zRD0zRCByZXA9Cm9fcGF0aAor CisKIGRlZiByZXBvc2l0b3J5X3dhc19wcmV2aW91c2x5X2luc3RhbGxlZCggYXBwLCB0b29sX3No ZWRfdXJsLCByZXBvc2l0b3J5X25hPQptZSwgcmVwb19pbmZvX3R1cGxlLCBmcm9tX3RpcD0zREZh bHNlICk6CiAgICAgIiIiCiAgICAgRmluZCBvdXQgaWYgYSByZXBvc2l0b3J5IGlzIGFscmVhZHkg aW5zdGFsbGVkIGludG8gR2FsYXh5IC0gdGhlcmUgYXJlID0Kc2V2ZXJhbCBzY2VuYXJpb3Mgd2hl cmUgdGhpcwoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFh IC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBzY3JpcHRzL2Z1 bmN0aW9uYWxfdGVzdHMucHkKLS0tIGEvc2NyaXB0cy9mdW5jdGlvbmFsX3Rlc3RzLnB5CisrKyBi L3NjcmlwdHMvZnVuY3Rpb25hbF90ZXN0cy5weQpAQCAtMzM2LDYgKzMzNiw3IEBACiAgICAgICAg ICAgICAgICAgICAgICAgIHVzZXJfbGlicmFyeV9pbXBvcnRfZGlyPTNEdXNlcl9saWJyYXJ5X2lt cG9ydF9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl9hcGlfa2V5PTNEbWFzdGVy X2FwaV9rZXksCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZV90YXNrZWRfam9icz0zRFRydWUs CisgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX21pZ3JhdGVfdG9vbHM9M0RGYWxzZSwKICAg ICAgICAgICAgICAgICAgICAgICAgY2xlYW51cF9qb2I9M0Qnb25zdWNjZXNzJywKICAgICAgICAg ICAgICAgICAgICAgICAgZW5hYmxlX2JldGFfdG9vbF9mb3JtYXRzPTNEVHJ1ZSwKICAgICAgICAg ICAgICAgICAgICAgICAgYXV0b19jb25maWd1cmVfbG9nZ2luZz0zRGxvZ2dpbmdfY29uZmlnX2Zp bGUgaXMgTm9uPQplLAoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1 NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBzdGF0 aWMvbWFwcy9tdmMvY29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcy5tYXAKLS0t IGEvc3RhdGljL21hcHMvbXZjL2NvbGxlY3Rpb24vbGlzdC1jb2xsZWN0aW9uLWNyZWF0b3IuanMu bWFwCisrKyBiL3N0YXRpYy9tYXBzL212Yy9jb2xsZWN0aW9uL2xpc3QtY29sbGVjdGlvbi1jcmVh dG9yLmpzLm1hcApAQCAtMSwxICsxLDEgQEAKLXsidmVyc2lvbiI6MywiZmlsZSI6Imxpc3QtY29s bGVjdGlvbi1jcmVhdG9yLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvPQptdmMvY29sbGVj dGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcyJdLCJuYW1lcyI6WyJkZWZpbmUiLCJIRENB IiwiU1RBVEU9ClMiLCJCQVNFX01WQyIsIlVJX01PREFMIiwibmF0dXJhbFNvcnQiLCJfbCIsImNy ZWF0ZUxpc3RDb2xsZWN0aW9uIiwiY29udGVudD0KcyIsImVsZW1lbnRzIiwidG9KU09OIiwicHJv bWlzZSIsImxpc3RDb2xsZWN0aW9uQ3JlYXRvck1vZGFsIiwiY3JlYXRpb25GbiIsPQoibmFtZSIs Im1hcCIsImVsZW1lbnQiLCJpZCIsInNyYyIsImhpc3RvcnlfY29udGVudF90eXBlIiwiY3JlYXRl SERDQSIsIkRhdGE9CnNldENvbGxlY3Rpb25FbGVtZW50VmlldyIsIkJhY2tib25lIiwiVmlldyIs ImV4dGVuZCIsIkxvZ2dhYmxlTWl4aW4iLCJ0YWdOYT0KbWUiLCJjbGFzc05hbWUiLCJpbml0aWFs aXplIiwiYXR0cmlidXRlcyIsInRoaXMiLCJzZWxlY3RlZCIsInJlbmRlciIsIiRlbCIsPQoiYXR0 ciIsImh0bWwiLCJ0ZW1wbGF0ZSIsImFkZENsYXNzIiwiXyIsImpvaW4iLCJzZWxlY3QiLCJ0b2dn bGUiLCJ0b2dnbGVDbGE9CnNzIiwidHJpZ2dlciIsInNvdXJjZSIsImhhc0NsYXNzIiwiZGlzY2Fy ZCIsInZpZXciLCJwYXJlbnRXaWR0aCIsInBhcmVudCIsIj0Kd2lkdGgiLCJhbmltYXRlIiwibWFy Z2luLXJpZ2h0IiwiZGVzdHJveSIsIm9mZiIsInJlbW92ZSIsImV2ZW50cyIsImNsaWNrIiwiPQpj bGljayAubmFtZSIsImNsaWNrIC5kaXNjYXJkIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdv dmVyIiwiZHJvcCIsIl9jbGk9CmNrIiwiZXYiLCJzdG9wUHJvcGFnYXRpb24iLCJfY2xpY2tOYW1l IiwicHJldmVudERlZmF1bHQiLCJyZXNwb25zZSIsInByb21wdD0KIiwiX2NsaWNrRGlzY2FyZCIs Il9kcmFnc3RhcnQiLCJvcmlnaW5hbEV2ZW50IiwiZGF0YVRyYW5zZmVyIiwiZWZmZWN0QWxsb3dl PQpkIiwic2V0RGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJfZHJhZ2VuZCIsInJlbW92ZUNsYXNz IiwiX3NlbmRUb1BhcmVudCIsInQ9Cm9TdHJpbmciLCJMaXN0Q29sbGVjdGlvbkNyZWF0b3IiLCJl bGVtZW50Vmlld0NsYXNzIiwiY29sbGVjdGlvbkNsYXNzIiwiSGlzdD0Kb3J5TGlzdERhdGFzZXRD b2xsZWN0aW9uIiwibWluRWxlbWVudHMiLCJkZWZhdWx0QXR0cmlidXRlcyIsIlR5cGVFcnJvciIs Im9uPQpjcmVhdGUiLCJvbmNhbmNlbCIsImF1dG9zY3JvbGxEaXN0IiwiaGlnaGxpZ2h0Q2xyIiwi bWV0cmljIiwiY3JlYXRvciIsImVhY2g9CiIsInZhbHVlIiwia2V5IiwiaW5pdGlhbEVsZW1lbnRz IiwiX2luc3RhbmNlU2V0VXAiLCJfZWxlbWVudHNTZXRVcCIsIl9zZXRVcD0KQmVoYXZpb3JzIiwi c2VsZWN0ZWRJZHMiLCIkZHJhZ2dpbmciLCJibG9ja2luZyIsImludmFsaWRFbGVtZW50cyIsIndv cmtpbmdFPQpsZW1lbnRzIiwiZWxlbWVudFZpZXdzIiwic2xpY2UiLCJfZW5zdXJlRWxlbWVudElk cyIsIl92YWxpZGF0ZUVsZW1lbnRzIiwiX209CmFuZ2xlRHVwbGljYXRlTmFtZXMiLCJfc29ydEVs ZW1lbnRzIiwiZm9yRWFjaCIsImhhc093blByb3BlcnR5IiwidW5pcXVlSWQiLD0KImZpbHRlciIs InByb2JsZW0iLCJfaXNFbGVtZW50SW52YWxpZCIsInB1c2giLCJ0ZXh0Iiwic3RhdGUiLCJPSyIs ImNvbnRhaW5zPQoiLCJOT1RfUkVBRFlfU1RBVEVTIiwiZGVsZXRlZCIsInB1cmdlZCIsIlNBRkVU WSIsImNvdW50ZXIiLCJleGlzdGluZ05hbWVzIiw9CiJjdXJyTmFtZSIsIkVycm9yIiwic3BlZWQi LCJjYWxsYmFjayIsImxlbmd0aCIsIl9yZW5kZXJJbnZhbGlkIiwiZW1wdHkiLCJ0ZT0KbXBsYXRl cyIsIm1haW4iLCJfcmVuZGVySGVhZGVyIiwiX3JlbmRlck1pZGRsZSIsIl9yZW5kZXJGb290ZXIi LCJfYWRkUGx1Z2luPQpDb21wb25lbnRzIiwiJCIsImZvY3VzIiwiaW52YWxpZEluaXRpYWwiLCJw cm9ibGVtcyIsInNob3ciLCIkaGVhZGVyIiwiaGVhZGU9CnIiLCJmaW5kIiwicHJlcGVuZCIsImhl bHBDb250ZW50IiwiX2ludmFsaWRFbGVtZW50c0FsZXJ0IiwiJG1pZGRsZSIsIm1pZGRsZT0KIiwi X3JlbmRlckxpc3QiLCIkZm9vdGVyIiwiZm9vdGVyIiwiaG92ZXJoaWdobGlnaHQiLCJfc2hvd0Fs ZXJ0IiwiX3ZhbGlkYXRpPQpvbldhcm5pbmciLCJ3aGF0IiwiY2xlYXIiLCJWQUxJREFUSU9OX0NM QVNTIiwiYWRkIiwiX2Rpc2FibGVOYW1lQW5kQ3JlYXRlIiw9CiJkaXNhYmxlIiwiaXNVbmRlZmlu ZWQiLCJwcm9wIiwiJGxpc3QiLCJfcmVuZGVyQ2xlYXJTZWxlY3RlZCIsInNpemUiLCJoaWRlIj0K LCIkdG1wIiwialF1ZXJ5IiwicmVtb3ZlRWxlbWVudFZpZXciLCJlbGVtZW50VmlldyIsIl9jcmVh dGVFbGVtZW50VmlldyIsImFwPQpwZW5kIiwiY2hpbGRyZW4iLCJpbnZva2UiLCJoZWlnaHQiLCJj c3MiLCJoYXMiLCJfbGlzdGVuVG9FbGVtZW50VmlldyIsImxpc3Q9CmVuVG8iLCJkYXRhIiwiYWRk RWxlbWVudFZpZXciLCJ3aXRob3V0Iiwic3RvcExpc3RlbmluZyIsIl9yZW5kZXJOb0VsZW1lbnRz TD0KZWZ0Iiwibm9FbGVtZW50c0xlZnQiLCJfZWxlbWVudFRvSlNPTiIsImNyZWF0ZUxpc3QiLCJt ZXNzYWdlIiwiYWx3YXlzIiwiZmFpPQpsIiwieGhyIiwic3RhdHVzIiwiZG9uZSIsImNhbGwiLCJv biIsIl9lcnJvckhhbmRsZXIiLCJvbmNlIiwiZXJyb3IiLCJjb250ZW49CnQiLCJyZWFkeVN0YXRl IiwicmVzcG9uc2VKU09OIiwiY2xpY2sgLm1vcmUtaGVscCIsImNsaWNrIC5sZXNzLWhlbHAiLCJj bGljaz0KIC5tYWluLWhlbHAiLCJjbGljayAuaGVhZGVyIC5hbGVydCBidXR0b24iLCJjbGljayAu cmVzZXQiLCJjbGljayAuY2xlYXItc2VsPQplY3RlZCIsImNsaWNrIC5jb2xsZWN0aW9uLWVsZW1l bnRzIiwiZHJhZ292ZXIgLmNvbGxlY3Rpb24tZWxlbWVudHMiLCJkcm9wIC49CmNvbGxlY3Rpb24t ZWxlbWVudHMiLCJjb2xsZWN0aW9uLWVsZW1lbnQuZHJhZ3N0YXJ0IC5jb2xsZWN0aW9uLWVsZW1l bnRzIiwiYz0Kb2xsZWN0aW9uLWVsZW1lbnQuZHJhZ2VuZCAgIC5jb2xsZWN0aW9uLWVsZW1lbnRz IiwiY2hhbmdlIC5jb2xsZWN0aW9uLW5hbWUiPQosImtleWRvd24gLmNvbGxlY3Rpb24tbmFtZSIs ImNsaWNrIC5jYW5jZWwtY3JlYXRlIiwiY2xpY2sgLmNyZWF0ZS1jb2xsZWN0aW89Cm4iLCJfY2xp Y2tNb3JlSGVscCIsIl9jbGlja0xlc3NIZWxwIiwiX3RvZ2dsZUhlbHAiLCJhbGVydENsYXNzIiwi X2hpZGVBbGVydD0KIiwicmVzZXQiLCJjbGVhclNlbGVjdGVkRWxlbWVudHMiLCJfZHJhZ292ZXJF bGVtZW50cyIsIl9jaGVja0ZvckF1dG9zY3JvbGwiPQosImNsaWVudFkiLCIkbmVhcmVzdCIsIl9n ZXROZWFyZXN0RWxlbWVudCIsIiRwbGFjZWhvbGRlciIsImJlZm9yZSIsIiRlbGVtZW49CnQiLCJ5 IiwiQVVUT1NDUk9MTF9TUEVFRCIsIm9mZnNldCIsInNjcm9sbFRvcCIsInVwcGVyRGlzdCIsInRv cCIsImxvd2VyRGlzdD0KIiwib3V0ZXJIZWlnaHQiLCJXSUdHTEUiLCJsaXMiLCJ0b0FycmF5Iiwi aSIsIiRsaSIsImhhbGZIZWlnaHQiLCJNYXRoIiwiZmxvPQpvciIsIl9kcm9wRWxlbWVudHMiLCJk cm9wRWZmZWN0IiwiaW5zZXJ0QmVmb3JlIiwiaW5zZXJ0QWZ0ZXIiLCJsYXN0IiwiX3N5bmM9Ck9y ZGVyVG9Eb20iLCJuZXdFbGVtZW50cyIsImZpbmRXaGVyZSIsImNvbnNvbGUiLCJfZWxlbWVudERy YWdzdGFydCIsIl9lbGVtZT0KbnREcmFnZW5kIiwiX2NoYW5nZU5hbWUiLCJfZ2V0TmFtZSIsIl9u YW1lQ2hlY2tGb3JFbnRlciIsImtleUNvZGUiLCJfY2xpY2tDPQpyZWF0ZSIsImVzY2FwZSIsInZh bCIsImNvbGxlY3Rpb25DcmVhdG9yTW9kYWwiLCJvcHRpb25zIiwiQ3JlYXRvckNsYXNzIiwiZGU9 CmZlcnJlZCIsIkRlZmVycmVkIiwibW9kYWwiLCJHYWxheHkiLCJkZWZhdWx0cyIsInJlamVjdCIs InJlc29sdmUiLCJ0aXRsZSIsIj0KYm9keSIsImNsb3NpbmdfZXZlbnRzIiwid2luZG93IiwiX2Nv bGxlY3Rpb25DcmVhdG9yIl0sIm1hcHBpbmdzIjoiQUFDQUEsUUFDPQpJLHlCQUNBLHFCQUNBLGVB Q0Esa0JBQ0EscUJBQ0EscUJBQ0EscUJBQ0QsU0FBVUMsRUFBTUMsRUFBUUMsRUFBVUMsRUFBVUMs RUE9CkFhQyxHQTAvQjVELFFBQVNDLEdBQXNCQyxHQUMzQixHQUFJQyxHQUFXRCxFQUFTRSxTQUNw QkMsRUFBVUMsRUFBNEJILEdBQ2xDST0KLFdBQWEsU0FBVUosRUFBVUssR0FTN0IsTUFSQUwsR0FB V0EsRUFBU00sSUFBSyxTQUFVQyxHQUMvQixPQUNJQyxHQUFVRCxFQUFRPQpDLEdBQ2xCSCxLQUFV RSxFQUFRRixLQUVsQkksSUFBNkMsWUFBakNGLEVBQVFHLHFCQUFvQyxNQUFRLFVBR2pFWCxFQUFT WSxXQUE9CllYLEVBQVUsT0FBUUssS0FHMUQsT0FBT0gsR0E3L0JYLEdBQUlVLEdBQStCQyxTQUFT QyxLQUFLQyxPQUFRckIsRUFBU3NCLGVBQT0KZ0JELFFBRTlFRSxRQUFjLEtBQ2RDLFVBQWMscUJB RWRDLFdBQWEsU0FBVUMsR0FDbkJDLEtBQUtkLFFBQVVhLEVBQVdiLFlBQzFCPQpjLEtBQUtDLFNB QVdGLEVBQVdFLFdBQVksR0FHM0NDLE9BQVMsV0FRTCxNQVBBRixNQUFLRyxJQUNBQyxLQUFNLGtC QUFtQkosS0E9CkFLZCxRQUFRQyxJQUN0Q2lCLEtBQU0sYUFBYSxHQUNuQkMsS0FBTUwsS0FBS00s VUFBV3BCLFFBQVNjLEtBQUtkLFdBQ3JDYyxLQT0KQUtDLFVBQ0xELEtBQUtHLElBQUlJLFNBQVUs WUFFaEJQLE1BSVhNLFNBQVdFLEVBQUVGLFVBQ1QsMEJBQTJCOUIsRUFBSSxtQkFBPQpxQiwrQkFD aEQsc0JBQ0osT0FDQSw2Q0FBOENBLEVBQUkscUNBQXVDLEtBQ3JGQSxFQUFJLFdBQ1IsYUFDRmlD LEtBQUssS0FHUEM9CixPQUFTLFNBQVVDLEdBQ2ZYLEtBQUtHLElBQUlTLFlBQWEsV0FBWUQsR0FD bENYLEtBQUthLFFBQVMsVUFDVkMsT0FBV2QsS0FDWD0KQyxTQUFXRCxLQUFLRyxJQUFJWSxTQUFV LGVBS3RDQyxRQUFVLFdBQ04sR0FBSUMsR0FBT2pCLEtBQ1BrQixFQUFjbEIsS0FBS0csPQpJQUFJ Z0IsU0FBU0MsT0FDcENwQixNQUFLRyxJQUFJa0IsU0FBVUMsZUFBaUJKLEdBQWUsT0FBUSxXQUN2 REQsRUFBS0osUUFBUyw9CldBQ1ZDLE9BQVNHLElBRWJBLEVBQUtNLGFBS2JBLFFBQVUsV0FDTnZC LEtBQUt3QixNQUNMeEIsS0FBS0csSUFBSXNCLFVBR2JDLD0KUUFDSUMsTUFBa0IsU0FDbEJDLGNB QWtCLGFBQ2xCQyxpQkFBa0IsZ0JBRWxCQyxVQUFrQixhQUNsQkMsUUFBa0IsV0FDbEJDLFNBPQpB a0IsZ0JBQ2xCQyxLQUFrQixpQkFJdEJDLE9BQVMsU0FBVUMsR0FDZkEsRUFBR0Msa0JBQ0hwQyxL QUFLVSxPQUFReUIsSUFJakI9CkUsV0FBYSxTQUFVRixHQUNuQkEsRUFBR0Msa0JBQ0hELEVBQUdH LGdCQUNILElBRUlDLEtBRmlCL0QsRUFBSSxvQ0FBc0MsT0FDMT0KQ0EsRUFBSSxnRUFBa0UsS0FB TWlDLEtBQU0sSUFDeEYrQixPQUFRaEUsRUFBSSxvQ0FBdUMsSUFBS3dCLEtBQUtkLFFBQVFGLE1B PQpDaEZ1RCxLQUNBdkMsS0FBS2QsUUFBUUYsS0FBT3VELEVBQ3BCdkMsS0FBS0UsV0FNYnVDLGNB QWdCLFNBQVVOLEdBQ3RCQSxFQUE9CkdDLGtCQUNIcEMsS0FBS2dCLFdBSVQwQixXQUFhLFNBQVVQ LEdBQ2ZBLEVBQUdRLGdCQUFpQlIsRUFBS0EsRUFBR1EsZUFDaENSLD0KRUFBR1MsYUFBYUMsY0FB Z0IsT0FDaENWLEVBQUdTLGFBQWFFLFFBQVMsYUFBY0MsS0FBS0MsVUFBV2hELEtBQUtkLFVBRTVE YyxLPQpBQUtHLElBQUlJLFNBQVUsWUFDbkJQLEtBQUtHLElBQUlnQixTQUFTTixRQUFTLGdDQUFr Q2IsUUFJakVpRCxTQUFXLFdBQ1BqRCw9CktBQUtHLElBQUkrQyxZQUFhLFlBQ3RCbEQsS0FBS0cs SUFBSWdCLFNBQVNOLFFBQVMsOEJBQWdDYixRQUkvRG1ELGNBQWdCLFNBQT0KVWhCLEdBQ3RCbkMs S0FBS0csSUFBSWdCLFNBQVNOLFFBQVNzQixJQUkvQmlCLFNBQVcsV0FDUCxNQUFPLG9DQVFYQyxF QUF3QjdEPQosU0FBU0MsS0FBS0MsT0FBUXJCLEVBQVNzQixlQUFnQkQsUUFHdkU0RCxpQkFBbUIv RCxFQUVuQmdFLGdCQUFtQnBGLEVBQUtxRiw9CjZCQUN4QjNELFVBQW1CLGdFQUduQjRELFlBQW1C LEVBRW5CQyxtQkFHSTNFLFdBQWEsV0FBWSxLQUFNLElBQUk0RSxXQUFXLCtCQT0KRTlDQyxTQUFh LGFBRWJDLFNBQWEsYUFFYkMsZUFBa0IsR0FFbEJDLGFBQWtCLDZCQUl0QmpFLFdBQWEsU0FBVUMs R0FDbkJDLEtBPQpBS2dFLE9BQVEsbUNBQW9DakUsRUFDakQsSUFBSWtFLEdBQVVqRSxJQUNkUSxH QUFFMEQsS0FBTWxFLEtBQUswRCxrQkFBbUIsU0E9CkFVUyxFQUFPQyxHQUM3Q0QsRUFBUXBFLEVB QVlxRSxJQUFTRCxFQUM3QkYsRUFBU0csR0FBUUQsSUFJckJGLEVBQVFJLGdCQUFrQj0KdEUsRUFB V3BCLGFBRXJDcUIsS0FBS3NFLGlCQUNMdEUsS0FBS3VFLGlCQUNMdkUsS0FBS3dFLG1CQUlURixl QUFpQixXQUVidEUsPQpLQUFLeUUsZUFFTHpFLEtBQUswRSxVQUFZLEtBRWpCMUUsS0FBSzJFLFVB QVcsR0FLcEJKLGVBQWlCLFdBR2J2RSxLQUFLNEUsbUI9CkFHTDVFLEtBQUs2RSxtQkFFTDdFLEtB QUs4RSxnQkFHTDlFLEtBQUs2RSxnQkFBa0I3RSxLQUFLcUUsZ0JBQWdCVSxNQUFPLEdBQz0KbkQv RSxLQUFLZ0Ysb0JBQ0xoRixLQUFLaUYsb0JBQ0xqRixLQUFLa0Ysd0JBQ0xsRixLQUFLbUYsaUJB SVRILGtCQUFvQixXQU1oPQpCLE1BTEFoRixNQUFLNkUsZ0JBQWdCTyxRQUFTLFNBQVVsRyxHQUMv QkEsRUFBUW1HLGVBQWdCLFFBQ3pCbkcsRUFBUUMsR0FBS3E9CkIsRUFBRThFLGNBR2hCdEYsS0FB SzZFLGlCQUloQkksa0JBQW9CLFdBQ2hCLEdBQUloQixHQUFVakUsSUFjZCxPQVpBaUUsR0FBUT0K VyxtQkFFUjVFLEtBQUs2RSxnQkFBa0I3RSxLQUFLNkUsZ0JBQWdCVSxPQUFRLFNBQVVyRyxHQUMx RCxHQUFJc0csR0FBVXZCLEVBPQpBUXdCLGtCQUFtQnZHLEVBT3pDLE9BTklzRyxJQUNBdkIsRUFB UVcsZ0JBQWdCYyxNQUNwQnhHLFFBQVVBLEVBQ1Z5RyxLQUFVSCw9CktBR1ZBLElBRUx4RixLQUFL NkUsaUJBSWhCWSxrQkFBb0IsU0FBVXZHLEdBQzFCLE1BQXFDLFlBQWpDQSxFQUFRRyxxQkFDRGIs RT0KQUFJLG9CQUVYVSxFQUFRMEcsUUFBVXhILEVBQU95SCxHQUVkckgsRUFEUGdDLEVBQUVzRixT QUFVMUgsRUFBTzJILGlCQUFrQjdHPQosRUFBUTBHLE9BQ2xDLDhCQUVKLGdEQUVYMUcsRUFBUThH LFNBQVc5RyxFQUFRK0csT0FDcEJ6SCxFQUFJLDhCQUVSLE1BSVgwRyw9CnNCQUF3QixXQUNwQixH QUFJZ0IsR0FBUyxJQUNUQyxFQUFVLEVBQ1ZDLElBQ0pwRyxNQUFLNkUsZ0JBQWdCTyxRQUFTLFNB QVVsRz0KLEdBRXBDLElBREEsR0FBSW1ILEdBQVduSCxFQUFRRixLQUNoQm9ILEVBQWNmLGVBQWdC Z0IsSUFHakMsR0FGQUEsRUFBV25ILEVBPQpBUUYsS0FBTyxLQUFPbUgsRUFBVSxJQUMzQ0EsR0FB VyxFQUNQQSxHQUFXRCxFQUNYLEtBQU0sSUFBSUksT0FBTyw4Q0FHekJwSCw9CkdBQVFGLEtBQU9x SCxFQUNmRCxFQUFlbEgsRUFBUUYsT0FBUyxLQUt4Q21HLGNBQWdCLGFBU2hCakYsT0FBUyxTQUFV cUcsRUFBTz0KQyxHQUV0QixNQUFJeEcsTUFBSzZFLGdCQUFnQjRCLE9BQVN6RyxLQUFLeUQsWUFD NUJ6RCxLQUFLMEcsZUFBZ0JILEVBQU9DLElBPQpHdkN4RyxLQUFLRyxJQUFJd0csUUFBUXRHLEtB QU1MLEtBQUs0RyxVQUFVQyxRQUN0QzdHLEtBQUs4RyxjQUFlUCxHQUNwQnZHLEs9CkFBSytHLGNB QWVSLEdBQ3BCdkcsS0FBS2dILGNBQWVULEdBQ3BCdkcsS0FBS2lILHVCQUNMakgsS0FBS2tILEVB QUcsb0JBQXFCQz0KLFFBQzdCbkgsS0FBS2EsUUFBUyxXQUFZYixNQUNuQkEsT0FLWDBHLGVBQWlC LFdBVWIsTUFSQTFHLE1BQUtHLElBQUl3RyxRQUFRPQp0RyxLQUFNTCxLQUFLNEcsVUFBVVEsZ0JB Q2xDQyxTQUFVckgsS0FBSzRFLGdCQUNmakcsU0FBVXFCLEtBQUs2RSxtQkFFVSxrQkE9CkFsQjdF LE1BQUs2RCxVQUNaN0QsS0FBS2tILEVBQUcsc0JBQXVCSSxPQUVuQ3RILEtBQUthLFFBQVMsV0FB WWIsTUFDbkJBLE1BST0KWDhHLGNBQWdCLFdBQ1osR0FBSVMsR0FBVXZILEtBQUtrSCxFQUFHLFdB QVlQLFFBQVF0RyxLQUFNTCxLQUFLNEcsVUFBVVksVUFDPQoxREMsS0FBTSxpQkFBa0JDLFFBQVNS LEVBQUdsSCxLQUFLNEcsVUFBVWUsZUFLeEQsT0FISTNILE1BQUs0RSxnQkFBZ0I2QixRQUM9CnJC ekcsS0FBSzRILHdCQUVGTCxHQUlYUixjQUFnQixTQUFVUixHQUN0QixHQUFJc0IsR0FBVTdILEtB QUtrSCxFQUFHLFdBQVlQLD0KUUFBUXRHLEtBQU1MLEtBQUs0RyxVQUFVa0IsU0FFL0QsT0FEQTlI LE1BQUsrSCxZQUFheEIsR0FDWHNCLEdBSVhiLGNBQWdCLFdBPQpDWixHQUFJZ0IsR0FBVWhJLEtB QUtrSCxFQUFHLFdBQVlQLFFBQVF0RyxLQUFNTCxLQUFLNEcsVUFBVXFCLFNBSS9ELE9BSDZCLGs9 CkJBQWxCakksTUFBSzZELFVBQ1o3RCxLQUFLa0gsRUFBRyxzQkFBdUJJLE9BRTVCVSxHQUlYZixx QkFBdUIsV0FDbkJqSCxLQUFLaz0KSCxFQUFHLG1CQUFvQmdCLGVBQWdCLHNCQUF1QmxJLEtBQUsr RCxlQUk1RTZELHNCQUF3QixXQUNwQjVILEtBQUttSSxXQUFZbkksPQpLQUFLNEcsVUFBVWhDLGlC QUFrQnlDLFNBQVVySCxLQUFLNEUsa0JBQW9CLGtCQUl6RndELG1CQUFxQixTQUFVQyxFQUFNQyxH QUM9CmpDLEdBQUlDLEdBQW1CLG9CQUNWLFVBQVRGLElBQ0FBLEVBQU9ySSxLQUFLa0gsRUFBRyxv QkFBcUJzQixJQUFLeEksS0FBS2tILD0KRUFBRyw0QkFDakRsSCxLQUFLa0gsRUFBRyxvQkFBcUJD LFFBQVF6RyxVQUVyQzRILEdBQ0FELEVBQU9BLEdBQVFySSxLQUFLa0gsPQpFQUFHLElBQU1xQixH QUM3QkYsRUFBS25GLFlBQWFxRixJQUVsQkYsRUFBSzlILFNBQVVnSSxJQUl2QkUsc0JBQXdCLFNB QVVDLEc9CkFDOUJBLEVBQVdsSSxFQUFFbUksWUFBYUQsSUFBcUIsRUFBVkEsRUFDakNBLElBQ0Ex SSxLQUFLa0gsRUFBRyxvQkFBcUIwQixLQT0KQU0sWUFBWSxHQUMvQzVJLEtBQUtrSCxFQUFHLHNC QUF1QnRHLFlBQWEsWUFBWSxLQVNoRWlJLE1BQVEsV0FDSixNQUFPN0ksTUFBPQpLa0gsRUFBRyx5 QkFJbkI0QixxQkFBdUIsV0FDZnRJLEVBQUV1SSxLQUFNL0ksS0FBS3lFLGFBQ2J6RSxLQUFLa0gs RUFBRyxtREE9CkFvREksT0FFNUR0SCxLQUFLa0gsRUFBRyxtREFBb0Q4QixRQUtwRWpCLFlBQWMs V0FFVixHQUFJOUQsR0FBVWpFLEtBQ1ZpSixFQT0KQU9DLE9BQVEsVUFDZkwsRUFBUTVFLEVBQVE0 RSxPQUVwQnJJLEdBQUUwRCxLQUFNbEUsS0FBSzhFLGFBQWMsU0FBVTdELEdBQ2pDPQpBLEVBQUtN LFVBQ0wwQyxFQUFRa0Ysa0JBQW1CbEksS0FRL0JnRCxFQUFRWSxnQkFBZ0JPLFFBQVMsU0FBVWxH LEdBQ3ZDLEdBQUk9CmtLLEdBQWNuRixFQUFRb0YsbUJBQW9CbkssRUFDOUMrSixHQUFLSyxPQUFR RixFQUFZakosT0FHN0I4RCxFQUFRNkUsdUJBQ1JELD0KRUFBTWxDLFFBQVEyQyxPQUFRTCxFQUFL TSxZQUMzQi9JLEVBQUVnSixPQUFRdkYsRUFBUWEsYUFBYyxVQUU1QitELEVBQU1ZLFNBPQpBV1os RUFBTWEsSUFBSyxjQUM1QmIsRUFBTWEsSUFBSyxlQUFnQixtQkFFM0JiLEVBQU1hLElBQUssZUFB Z0IsUUFLbkNMLG1CQUE9CnFCLFNBQVVuSyxHQUMzQixHQUFJa0ssR0FBYyxHQUFJcEosTUFBS3NE LGtCQUd2QnBFLFFBQVVBLEVBQ1ZlLFNBQVVPLEVBQUVtSj0KLElBQUszSixLQUFLeUUsWUFBYXZG LEVBQVFDLEtBSS9DLE9BRkFhLE1BQUs4RSxhQUFhWSxLQUFNMEQsR0FDeEJwSixLQUFLNEosPQpx QkFBc0JSLEdBQ3BCQSxHQUlYUSxxQkFBdUIsU0FBVTNJLEdBQzdCLEdBQUlnRCxHQUFVakUsSUFD ZGlFLEdBQVE0RixTQUFVNUk9CixHQUNkUCxPQUFTLFNBQVVvSixHQUNmLEdBQUk1SyxHQUFVNEss RUFBS2hKLE9BQU81QixPQUN0QjRLLEdBQUs3SixTQUNMZ0UsRT0KQUFRUSxZQUFhdkYsRUFBUUMs S0FBTyxRQUU3QjhFLEdBQVFRLFlBQWF2RixFQUFRQyxJQUV4QzhFLEVBQVFwRCxRQUFTLGtCQUFt PQpCaUosSUFFeEM5SSxRQUFVLFNBQVU4SSxHQUNoQjdGLEVBQVFwRCxRQUFTLG1CQUFvQmlKLE9B TWpEQyxlQUFpQixhQVFqQlosa0I9CkFBb0IsU0FBVWxJLFNBQ25CakIsTUFBS3lFLFlBQWF4RCxF QUFLL0IsUUFBUUMsSUFDdENhLEtBQUs4SSx1QkFFTDlJLEtBQUs4RT0KLGFBQWV0RSxFQUFFd0os UUFBU2hLLEtBQUs4RSxhQUFjN0QsR0FDbERqQixLQUFLaUssY0FBZWhKLElBSXhCaUosc0JBQXdC LFdBPQpDcEJsSyxLQUFLeUksdUJBQXVCLEdBQzVCekksS0FBS2tILEVBQUcsd0JBQXlCb0MsT0FB UXRKLEtBQUs0RyxVQUFVdUQsbUJBVzU9CkRDLGVBQWlCLFNBQVVsTCxHQUV2QixNQUFPQSxJQU1Y bUwsV0FBYSxTQUFVckwsR0FDbkIsSUFBS2dCLEtBQUs2RSxnQkFBZ0I0Qj0KLE9BQVEsQ0FDOUIs R0FBSTZELEdBQVU5TCxFQUFJLG9DQUF1QyxJQUt6RCxPQUpBOEwsSUFBVyx1REFBeUQ5TCxFQUFJ LFVBQWEsPQpRQUNyRjhMLEdBQVc5TCxFQUFJLE1BQ2Y4TCxHQUFXLGdEQUFrRDlMLEVBQUksY0FB aUIsWUFDbEZ3QixNQUFLbUksV0FBWW1DLEc9CkFJckIsR0FBSXJHLEdBQVVqRSxLQUNWckIsRUFB V3FCLEtBQUs2RSxnQkFBZ0I1RixJQUFLLFNBQVVDLEdBQzNDLE1BQU8rRSxHQT0KQVFtRyxlQUFn QmxMLElBSXZDLE9BREErRSxHQUFRVSxVQUFXLEVBQ1pWLEVBQVFsRixXQUFZSixFQUFVSyxHQUNo Q3VMLE9BQVEsPQpXQUNMdEcsRUFBUVUsVUFBVyxJQUV0QjZGLEtBQU0sU0FBVUMsRUFBS0MsR0FD bEJ6RyxFQUFRcEQsUUFBUyxTQUNiNEosSUFBVUE9CixFQUNWQyxPQUFVQSxFQUNWSixRQUFVOUws RUFBSSx3REFHckJtTSxLQUFNLFNBQVVwSSxFQUFVK0gsRUFBU0csR0FDaEN4RyxFQT0KQVFwRCxR QUFTLHFCQUFzQjBCLEVBQVUrSCxFQUFTRyxHQUMxRHhHLEVBQVFELE9BQVEscUJBQXNCekIsR0FD TixrQkFBckIwQixHPQpBQVFMLFVBQ2ZLLEVBQVFMLFNBQVNnSCxLQUFNNUssS0FBTXVDLEVBQVUr SCxFQUFTRyxNQU9oRWpHLGdCQUFrQixXQXdCZCxNQXY9CkJBeEUsTUFBSzZLLEdBQUksUUFBUzdL LEtBQUs4SyxlQUV2QjlLLEtBQUsrSyxLQUFNLFdBQVksV0FDbkIvSyxLQUFLYSxRQUFTLD0KbUJB QW9CYixRQUd0Q0EsS0FBSzZLLEdBQUksa0JBQW1CLFdBQ3hCN0ssS0FBSzhJLHlCQUdUOUksS0FB SzZLLEdBQUksbUJBQW9CPQosU0FBVWYsR0FDbkMsR0FBSTVLLEdBQVU0SyxFQUFLaEosT0FBTzVC LE9BQzFCYyxNQUFLbUosa0JBQW1CVyxFQUFLaEosUUFFN0I9CmQsS0FBSzZFLGdCQUFrQnJFLEVB QUV3SixRQUFTaEssS0FBSzZFLGdCQUFpQjNGLEdBQ25EYyxLQUFLNkUsZ0JBQWdCNEIsUUFDdD0K QnpHLEtBQUtrSywwQkFPTmxLLE1BSVg4SyxjQUFnQixTQUFVaEIsR0FDdEI5SixLQUFLZ0wsTUFB T2xCLEVBRVosSUFBSTdGLEdBPQpBVWpFLElBRWQsSUFESWlMLFFBQVVuQixFQUFLUSxTQUFXOUws RUFBSSxxQkFDOUJzTCxFQUFLVyxJQUFLLENBQ1YsR0FBSUEsR0E9CkFNWCxFQUFLVyxJQUNYSCxF QUFVUixFQUFLUSxPQUVmVyxVQURtQixJQUFuQlIsRUFBSVMsWUFBbUMsSUFBZlQsRUFBSUMsT0FD aj0KQixLQUFPbE0sRUFBSSxvREFDbEJBLEVBQUksZ0NBQ0RpTSxFQUFJVSxhQUNBLGVBQWlCcEks S0FBS0MsVUFBV3lILEVBQUlVLGNBPQpBaUIsU0FFdEQsS0FBT2IsRUFHMUJyRyxFQUFRa0UsV0FB WThDLFFBQVMsaUJBR2pDdkosUUFFSTBKLG1CQUFrQyxpQkFDbENDLG09CkJBQWtDLGlCQUNsQ0Ms bUJBQWtDLGNBQ2xDQyw4QkFBa0MsYUFFbENDLGVBQWtDLFFBQ2xDQyx3QkFBa0Msd0JBR2xDQyw2 QkFBaz0KQyx3QkFLbENDLGdDQUFrQyxvQkFDbENDLDRCQUFrQyxnQkFHbENDLG9EQUFzRCxvQkFD dERDLG9EQUFzRCxrQkFHdERDLDBCQUFrPQpDLGNBQ2xDQywyQkFBa0MscUJBQ2xDQyx1QkFBa0Ms V0FDRCxrQkFBbEJqTSxNQUFLNkQsVUFDWjdELEtBQUs2RCxTQUFTK0csS0E9CkFNNUssT0FHNUJr TSwyQkFBa0MsZ0JBS3RDQyxlQUFpQixTQUFVaEssR0FDdkJBLEVBQUdDLGtCQUNIcEMsS0FBS2tI LEVBQUcsYz0KQUFlM0csU0FBVSxZQUNqQ1AsS0FBS2tILEVBQUcsY0FBZThCLFFBRzNCb0QsZUFB aUIsU0FBVWpLLEdBQ3ZCQSxFQUFHQyxrQkFDPQpIcEMsS0FBS2tILEVBQUcsY0FBZWhFLFlBQWEs WUFDcENsRCxLQUFLa0gsRUFBRyxjQUFlSSxRQUczQitFLFlBQWMsU0FBVWxLLEc9CkFDcEJBLEVB QUdDLGtCQUNIcEMsS0FBS2tILEVBQUcsY0FBZXRHLFlBQWEsWUFDcENaLEtBQUtrSCxFQUFHLGNB QWV2RyxVQUkzQj0Kd0gsV0FBYSxTQUFVbUMsRUFBU2dDLEdBQzVCQSxFQUFhQSxHQUFjLGVBQzNC dE0sS0FBS2tILEVBQUcsY0FBZThCLE9BQ3ZCaEosPQpLQUFLa0gsRUFBRyxrQkFDSDlHLEtBQU0s UUFBUywyQkFBNEJHLFNBQVUrTCxHQUFhaEYsT0FDbEVHLEtBQU0sa0JBQW1CcEgsS0E9CkFNaUss SUFHeENpQyxXQUFhLFdBQ1R2TSxLQUFLa0gsRUFBRyxjQUFlSSxPQUN2QnRILEtBQUtrSCxFQUFH LGtCQUFtQjhCLFFBSz0KL0J3RCxNQUFRLFdBQ0p4TSxLQUFLc0UsaUJBQ0x0RSxLQUFLdUUsaUJB Q0x2RSxLQUFLRSxVQUlUdU0sc0JBQXdCLFdBQ3BCek0sPQpLQUFLa0gsRUFBRyw0Q0FBNkNoRSxZ QUFhLFlBQ2xFbEQsS0FBS2tILEVBQUcsbURBQW9EOEIsUUFZaEUwRCxrQkFBb0IsU0FBVXY9Ckss R0FFMUJBLEVBQUdHLGdCQUVILElBQUl1RyxHQUFRN0ksS0FBSzZJLE9BQ2pCN0ksTUFBSzJNLG9C QUFxQjlELEVBQU8xRyxFQT0KQUdRLGNBQWNpSyxRQUNsRCxJQUFJQyxHQUFXN00sS0FBSzhNLG1C QUFvQjNLLEVBQUdRLGNBQWNpSyxRQUd6RDVNLE1BQUtrSCxFPQpBQUcsNkJBQThCekYsUUFDdEMs SUFBSXNMLEdBQWU3RixFQUFHLCtDQUNqQjJGLEdBQVM5RCxPQUdWOEQsRUFBU0csT0FBUUQsR0E9 CkZqQmxFLEVBQU1TLE9BQVF5RCxJQU90Qkosb0JBQXNCLFNBQVVNLEVBQVVDLEdBQ3RDLEdBQUlD LEdBQW1CLEVBQ25CQyxFQUFTSD0KLEVBQVNHLFNBQ2xCQyxFQUFZSixFQUFTSSxZQUNyQkMsRUFB WUosRUFBSUUsRUFBT0csSUFDdkJDLEVBQWNKLEVBQU9HLElBQU1OPQosRUFBU1EsY0FBa0JQLENB Q3RESSxJQUFhLEdBQUtBLEVBQVl0TixLQUFLOEQsZUFDbkNtSixFQUFTSSxVQUFXQSxFQUFZRixH QUM9CnpCSyxHQUFhLEdBQUtBLEVBQVl4TixLQUFLOEQsZ0JBQzFDbUosRUFBU0ksVUFBV0EsRUFB WUYsSUFPeENMLG1CQUFxQixTQUFVST0KLEdBRzNCLElBQUssR0FGRFEsR0FBUyxFQUNUQyxFQUFN M04sS0FBS2tILEVBQUcsOENBQStDMEcsVUFDeERDLEVBQUUsRUFBR0EsPQpFQUFFRixFQUFJbEgs T0FBUW9ILElBQUssQ0FDN0IsR0FBSUMsR0FBTTVHLEVBQUd5RyxFQUFJRSxJQUNiTixFQUFNTyxF QUFJViw9ClNBQVNHLElBQ25CUSxFQUFhQyxLQUFLQyxNQUFPSCxFQUFJTCxjQUFnQixHQUFNQyxD QUN2RCxJQUFJSCxFQUFNUSxFQUFhYixHQT0KQXdCQSxFQUFuQkssRUFBTVEsRUFDOUIsTUFBT0Qs R0FHZixNQUFPNUcsTUFJWGdILGNBQWdCLFNBQVUvTCxHQUNsQkEsRUFBR1EsPQpnQkFBaUJSLEVB QUtBLEVBQUdRLGVBRWhDUixFQUFHRyxpQkFDSEgsRUFBR1MsYUFBYXVMLFdBQWEsTUFHN0IsSUFB SXRCLEdBQVc9CjdNLEtBQUs4TSxtQkFBb0IzSyxFQUFHeUssUUFTM0MsT0FSSUMsR0FBUzlELE9B Q1QvSSxLQUFLMEUsVUFBVTBKLGFBQWN2QixHQT0KRzdCN00sS0FBSzBFLFVBQVUySixZQUFhck8s S0FBS2tILEVBQUcsNENBQTZDb0gsUUFHckZ0TyxLQUFLdU8sbUJBQ0UsR0FJWEEsPQpnQkFBa0Is V0FDZCxHQUFJdEssR0FBVWpFLEtBQ1Z3TyxJQUVKeE8sTUFBS2tILEVBQUcsNENBQTZDaEQsS0FB TSxXQUN2RCxHQUE9CkkvRSxHQUFLK0gsRUFBR2xILE1BQU9JLEtBQU0sbUJBQ3JCbEIsRUFBVXNC LEVBQUVpTyxVQUFXeEssRUFBUVksaUJBQW1CMUYsRz0KQUFJQSxHQUN0REQsR0FDQXNQLEVBQVk5 SSxLQUFNeEcsR0FFbEJ3UCxRQUFRMUQsTUFBTyxvQkFBcUI3TCxLQUc1Q2EsS0FBSzZFPQosZ0JB QWtCMkosRUFDdkJ4TyxLQUFLK0gsZUFJVDRHLGtCQUFvQixTQUFVeE0sRUFBSWpELEdBRTlCQSxF QUFRd0IsUUFBUSxHQUM9CmhCVixLQUFLMEUsVUFBWTFFLEtBQUtrSCxFQUFHLHNEQUk3QjBILGdC QUFrQixXQUNkMUgsRUFBRyw2QkFBOEJ6RixTQUNqQ3pCLD0KS0FBSzBFLFVBQVksTUFLckJtSyxZ QUFjLFdBQ1Y3TyxLQUFLb0ksbUJBQW9CLFNBQVVwSSxLQUFLOE8sYUFJNUNDLG1CQUFxQixTPQpB QVU1TSxHQUNSLEtBQWZBLEVBQUc2TSxTQUFtQmhQLEtBQUsyRSxVQUMzQjNFLEtBQUtpUCxnQkFL YkgsU0FBVyxXQUNQLE1BQU89CnRPLEdBQUUwTyxPQUFRbFAsS0FBS2tILEVBQUcsb0JBQXFCaUks UUFJbERGLGFBQWUsV0FDWCxHQUFJalEsR0FBT2dCLEtBQUs4Tz0KLFVBQ1g5UCxHQUVPZ0IsS0FB SzJFLFVBQ2IzRSxLQUFLcUssV0FBWXJMLEdBRmpCZ0IsS0FBS29JLG1CQUFvQixTQVdqQ3hCLFdB PQpFSUMsS0FBT3JHLEVBQUVGLFVBQ0wsOENBQ0EseURBQ0EsK0NBQ0ZHLEtBQUssS0FHUCtHLE9B QVNoSCxFQUFFRixVQUNQLHFDQUM9CkksbURBQW9EOUIsRUFBSSxhQUFlLE9BQ3ZFLDZCQUNJLG1E QUFvREEsRUFBSSxRQUFVLE9BQ3RFLFNBQ0osU0FDQSx3Q0FDSSw0RD0KQUNJLFVBQVdBLEVBQUks NEJBQThCLHdDQUNqRCxzQ0FDSixVQUNGaUMsS0FBSyxLQUdQcUgsT0FBU3RILEVBQUVGLFVBQ1As NkNBPQpDSSwrQ0FDSSxVQUFXOUIsRUFBSSxvQ0FBc0MsS0FDckRBLEVBQUksY0FDUixPQUNBLHdE QUNJLFVBQVdBLEVBQUksbUNBQXFDLEs9CkFDcERBLEVBQUksa0JBQ1IsT0FDSixTQUNBLDhEQUNB LFVBQ0ZpQyxLQUFLLEtBR1B3SCxPQUFTekgsRUFBRUYsVUFDUCxpQ0FDST0KLHNCQUNJLDBEQUNJ LGdCQUFpQjlCLEVBQUksd0NBQTBDLE9BQ25FLGtEQUFtREEsRUFBSSxRQUFVLFVBQ3JFLFNBQ0os U0FFQSxnPQpEQUNJLHdDQUNJLG1EQUFvREEsRUFBSSxVQUFZLFlBQ3BFLDhDQUNJLDBFQUNNQSxF QUFJLHlDQUNKLCtCQUNOLFlBQ0EseUNBQ009CixtQkFBb0JBLEVBQUksK0JBQWlDLFlBQ3pELG1C QUFvQkEsRUFBSSw2Q0FBK0MsWUFDN0UsUUFDSixTQUNKLFNBRUEsd0NBQ0kscT0KREFBc0RBLEVB QUksZUFBaUIsWUFDL0UsU0FDSixVQUNGaUMsS0FBSyxLQUdQa0gsWUFBY25ILEVBQUVGLFVBQ1os TUFBTzlCLEdBPQpDSCxvR0FDQSxzR0FDQSxpRUFDRmlDLEtBQU0sS0FBTyxPQUNmLE9BQ0ksT0FB UWpDLEdBQ0osOENBQ0EscUVBQ0ZpQyxLQUFNLEs9CkFBTyxRQUNmLE9BQVFqQyxHQUNKLG1FQUNB LHVFQUNGaUMsS0FBTSxLQUFPLFFBQ2YsT0FBUWpDLEdBQ0osK0ZBQ0Esc0dBQ0EseT0KRUFDQSxt RUFDRmlDLEtBQU0sS0FBTyxRQUNmLE9BQVFqQyxHQUNKLG9HQUNBLGtCQUNGaUMsS0FBTSxLQUFP LFFBQ2YsT0FBUWpDPQosR0FDSix3RkFDRmlDLEtBQU0sS0FBTyxRQUNuQixjQUNBLE1BQU9qQyxH QUNILDRGQUNBLGdFQUNGaUMsS0FBTSxLQUFPLFFBQ2o9CkJBLEtBQUssS0FHUG1FLGdCQUFrQnBF LEVBQUVGLFVBQ2hCOUIsRUFBSSxtRUFDSixtREFDSSxtRUFDSixrQkFDRmlDLEtBQUssSz0KQUdQ MEosZUFBaUIzSixFQUFFRixVQUNmLHdDQUNJOUIsRUFBSSxzQkFDSkEsRUFBSSxzQkFBd0IsOENB QStDQSxFQUFJLGNBQWdCPQosUUFDbkcsU0FDRmlDLEtBQUssS0FHUDJHLGVBQWlCNUcsRUFBRUYs VUFDZix3Q0FDSSwyREFDSSwrQkFDSSxrQ0FDSTlCLEVBQUk9CixrRUFBb0UsSUFDeEUsbURBQ0ks bUVBQ0osaUJBQ0osNkNBQ0lBLEVBQUksNkJBQStCLElBQ3ZDLFVBQ0EsU0FDQUEsRUFBSSxxRD0K QUF1RCxLQUMzREEsRUFBSSxvQkFDSixzREFBdURBLEVBQUksVUFBWSxRQUN2RUEsRUFBSSw2QkFB K0IsSUFDdkMsVUFDSixTQUNKPQosU0FDQSx3Q0FDSSxnREFDSSx3Q0FDSSxtREFBb0RBLEVBQUks VUFBWSxZQUV4RSxTQUNKLFNBQ0osVUFDRmlDLEtBQUssTUFLWDI9CkMsU0FBVyxXQUFZLE1BQU8s MkJBUzlCZ00sRUFBeUIsU0FBa0N6USxFQUFVMFEsRUFBU0MsR0FFOUUsR0FFSXJMLEdBRkFzTCxF QT0KQVdyRyxPQUFPc0csV0FDbEJDLEVBQVFDLE9BQU9ELE9BQVMsR0FBTW5SLEdBQVNtQixJQTJC M0MsT0F4QkE0UCxHQUFVN08sRUFBPQpFbVAsU0FBVU4sT0FDbEIxUSxTQUFjQSxFQUNka0YsU0FB YyxXQUNWNEwsRUFBTXpHLE9BQ051RyxFQUFTSyxPQUFRLGNBRXJCaE09CixTQUFjLFNBQVVLLEVB QVMxQixHQUM3QmtOLEVBQU16RyxPQUNOdUcsRUFBU00sUUFBU3ROLE1BSTFCMEIsRUFBVSxHQUFJ cUwsRz0KQUFjRCxHQUM1QkksRUFBTW5JLE1BQ0Z3SSxNQUFVVCxFQUFRUyxPQUFTdFIsRUFBSSx1 QkFDL0J1UixLQUFVOUwsRUFBUTlELElBPQpDbEJpQixNQUFVLE1BQ1ZxSSxPQUFVLGNBQ1Z1Ryxn QkFBZ0IsSUFFcEIvTCxFQUFRL0QsU0FDUitQLE9BQU9DLG1CQUFxQmpNLEU9CkFHckJzTCxHQUlQ elEsRUFBNkIsU0FBc0NILEVBQVUwUSxHQUc3RSxNQUZBQSxHQUFVQSxNQUNWQSxFQUFRUyxNQUFR dFIsRUFBST0KLCtDQUNiNFEsRUFBd0J6USxFQUFVMFEsRUFBU2hNLEdBMkJsRCxRQUNJOUQsNkJB QThCQSxFQUM5QjhELHNCQUE4QkEsRUFFOUIrPQpMLHVCQUE4QkEsRUFDOUJ0USwyQkFBOEJBLEVB QzlCTCxxQkFBOEJBIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit7InZlcnNpb24iOjMs ImZpbGUiOiJsaXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4v c3JjLz0KbXZjL2NvbGxlY3Rpb24vbGlzdC1jb2xsZWN0aW9uLWNyZWF0b3IuanMiXSwibmFtZXMi OlsiZGVmaW5lIiwiSERDQSIsIlNUQVRFPQpTIiwiQkFTRV9NVkMiLCJVSV9NT0RBTCIsIm5hdHVy YWxTb3J0IiwiX2wiLCJjcmVhdGVMaXN0Q29sbGVjdGlvbiIsImNvbnRlbnQ9CnMiLCJlbGVtZW50 cyIsInRvSlNPTiIsInByb21pc2UiLCJsaXN0Q29sbGVjdGlvbkNyZWF0b3JNb2RhbCIsImNyZWF0 aW9uRm4iLD0KIm5hbWUiLCJtYXAiLCJlbGVtZW50IiwiaWQiLCJzcmMiLCJoaXN0b3J5X2NvbnRl bnRfdHlwZSIsImNyZWF0ZUhEQ0EiLCJEYXRhPQpzZXRDb2xsZWN0aW9uRWxlbWVudFZpZXciLCJC YWNrYm9uZSIsIlZpZXciLCJleHRlbmQiLCJMb2dnYWJsZU1peGluIiwidGFnTmE9Cm1lIiwiY2xh c3NOYW1lIiwiaW5pdGlhbGl6ZSIsImF0dHJpYnV0ZXMiLCJ0aGlzIiwic2VsZWN0ZWQiLCJyZW5k ZXIiLCIkZWwiLD0KImF0dHIiLCJodG1sIiwidGVtcGxhdGUiLCJhZGRDbGFzcyIsIl8iLCJqb2lu Iiwic2VsZWN0IiwidG9nZ2xlIiwidG9nZ2xlQ2xhPQpzcyIsInRyaWdnZXIiLCJzb3VyY2UiLCJo YXNDbGFzcyIsImRpc2NhcmQiLCJ2aWV3IiwicGFyZW50V2lkdGgiLCJwYXJlbnQiLCI9CndpZHRo IiwiYW5pbWF0ZSIsIm1hcmdpbi1yaWdodCIsImRlc3Ryb3kiLCJvZmYiLCJyZW1vdmUiLCJldmVu dHMiLCJjbGljayIsIj0KY2xpY2sgLm5hbWUiLCJjbGljayAuZGlzY2FyZCIsImRyYWdzdGFydCIs ImRyYWdlbmQiLCJkcmFnb3ZlciIsImRyb3AiLCJfY2xpPQpjayIsImV2Iiwic3RvcFByb3BhZ2F0 aW9uIiwiX2NsaWNrTmFtZSIsInByZXZlbnREZWZhdWx0IiwicmVzcG9uc2UiLCJwcm9tcHQ9CiIs Il9jbGlja0Rpc2NhcmQiLCJfZHJhZ3N0YXJ0Iiwib3JpZ2luYWxFdmVudCIsImRhdGFUcmFuc2Zl ciIsImVmZmVjdEFsbG93ZT0KZCIsInNldERhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwiX2RyYWdl bmQiLCJyZW1vdmVDbGFzcyIsIl9zZW5kVG9QYXJlbnQiLCJ0PQpvU3RyaW5nIiwiTGlzdENvbGxl Y3Rpb25DcmVhdG9yIiwiZWxlbWVudFZpZXdDbGFzcyIsImNvbGxlY3Rpb25DbGFzcyIsIkhpc3Q9 Cm9yeUxpc3REYXRhc2V0Q29sbGVjdGlvbiIsIm1pbkVsZW1lbnRzIiwiZGVmYXVsdEF0dHJpYnV0 ZXMiLCJUeXBlRXJyb3IiLCJvbj0KY3JlYXRlIiwib25jYW5jZWwiLCJhdXRvc2Nyb2xsRGlzdCIs ImhpZ2hsaWdodENsciIsIm1ldHJpYyIsImNyZWF0b3IiLCJlYWNoPQoiLCJ2YWx1ZSIsImtleSIs ImluaXRpYWxFbGVtZW50cyIsIl9pbnN0YW5jZVNldFVwIiwiX2VsZW1lbnRzU2V0VXAiLCJfc2V0 VXA9CkJlaGF2aW9ycyIsInNlbGVjdGVkSWRzIiwiJGRyYWdnaW5nIiwiYmxvY2tpbmciLCJpbnZh bGlkRWxlbWVudHMiLCJ3b3JraW5nRT0KbGVtZW50cyIsImVsZW1lbnRWaWV3cyIsInNsaWNlIiwi X2Vuc3VyZUVsZW1lbnRJZHMiLCJfdmFsaWRhdGVFbGVtZW50cyIsIl9tPQphbmdsZUR1cGxpY2F0 ZU5hbWVzIiwiX3NvcnRFbGVtZW50cyIsImZvckVhY2giLCJoYXNPd25Qcm9wZXJ0eSIsInVuaXF1 ZUlkIiw9CiJmaWx0ZXIiLCJwcm9ibGVtIiwiX2lzRWxlbWVudEludmFsaWQiLCJwdXNoIiwidGV4 dCIsInN0YXRlIiwiT0siLCJjb250YWlucz0KIiwiTk9UX1JFQURZX1NUQVRFUyIsImRlbGV0ZWQi LCJwdXJnZWQiLCJTQUZFVFkiLCJjb3VudGVyIiwiZXhpc3RpbmdOYW1lcyIsPQoiY3Vyck5hbWUi LCJFcnJvciIsInNwZWVkIiwiY2FsbGJhY2siLCJsZW5ndGgiLCJfcmVuZGVySW52YWxpZCIsImVt cHR5IiwidGU9Cm1wbGF0ZXMiLCJtYWluIiwiX3JlbmRlckhlYWRlciIsIl9yZW5kZXJNaWRkbGUi LCJfcmVuZGVyRm9vdGVyIiwiX2FkZFBsdWdpbj0KQ29tcG9uZW50cyIsIiQiLCJmb2N1cyIsImlu dmFsaWRJbml0aWFsIiwicHJvYmxlbXMiLCJzaG93IiwiJGhlYWRlciIsImhlYWRlPQpyIiwiZmlu ZCIsInByZXBlbmQiLCJoZWxwQ29udGVudCIsIl9pbnZhbGlkRWxlbWVudHNBbGVydCIsIiRtaWRk bGUiLCJtaWRkbGU9CiIsIl9yZW5kZXJMaXN0IiwiJGZvb3RlciIsImZvb3RlciIsImhvdmVyaGln aGxpZ2h0IiwiX3Nob3dBbGVydCIsIl92YWxpZGF0aT0Kb25XYXJuaW5nIiwid2hhdCIsImNsZWFy IiwiVkFMSURBVElPTl9DTEFTUyIsImFkZCIsIl9kaXNhYmxlTmFtZUFuZENyZWF0ZSIsPQoiZGlz YWJsZSIsImlzVW5kZWZpbmVkIiwicHJvcCIsIiRsaXN0IiwiX3JlbmRlckNsZWFyU2VsZWN0ZWQi LCJzaXplIiwiaGlkZSI9CiwiJHRtcCIsImpRdWVyeSIsInJlbW92ZUVsZW1lbnRWaWV3IiwiZWxl bWVudFZpZXciLCJfY3JlYXRlRWxlbWVudFZpZXciLCJhcD0KcGVuZCIsImNoaWxkcmVuIiwiaW52 b2tlIiwiaGVpZ2h0IiwiY3NzIiwiaGFzIiwiX2xpc3RlblRvRWxlbWVudFZpZXciLCJsaXN0PQpl blRvIiwiZGF0YSIsImFkZEVsZW1lbnRWaWV3Iiwid2l0aG91dCIsInN0b3BMaXN0ZW5pbmciLCJf cmVuZGVyTm9FbGVtZW50c0w9CmVmdCIsIm5vRWxlbWVudHNMZWZ0IiwiX2VsZW1lbnRUb0pTT04i LCJjcmVhdGVMaXN0IiwibWVzc2FnZSIsImFsd2F5cyIsImZhaT0KbCIsInhociIsInN0YXR1cyIs ImRvbmUiLCJjYWxsIiwib24iLCJfZXJyb3JIYW5kbGVyIiwib25jZSIsImVycm9yIiwiY29udGVu PQp0IiwicmVhZHlTdGF0ZSIsInJlc3BvbnNlSlNPTiIsImNsaWNrIC5tb3JlLWhlbHAiLCJjbGlj ayAubGVzcy1oZWxwIiwiY2xpY2s9CiAubWFpbi1oZWxwIiwiY2xpY2sgLmhlYWRlciAuYWxlcnQg YnV0dG9uIiwiY2xpY2sgLnJlc2V0IiwiY2xpY2sgLmNsZWFyLXNlbD0KZWN0ZWQiLCJjbGljayAu Y29sbGVjdGlvbi1lbGVtZW50cyIsImRyYWdvdmVyIC5jb2xsZWN0aW9uLWVsZW1lbnRzIiwiZHJv cCAuPQpjb2xsZWN0aW9uLWVsZW1lbnRzIiwiY29sbGVjdGlvbi1lbGVtZW50LmRyYWdzdGFydCAu Y29sbGVjdGlvbi1lbGVtZW50cyIsImM9Cm9sbGVjdGlvbi1lbGVtZW50LmRyYWdlbmQgICAuY29s bGVjdGlvbi1lbGVtZW50cyIsImNoYW5nZSAuY29sbGVjdGlvbi1uYW1lIj0KLCJrZXlkb3duIC5j b2xsZWN0aW9uLW5hbWUiLCJjbGljayAuY2FuY2VsLWNyZWF0ZSIsImNsaWNrIC5jcmVhdGUtY29s bGVjdGlvPQpuIiwiX2NsaWNrTW9yZUhlbHAiLCJfY2xpY2tMZXNzSGVscCIsIl90b2dnbGVIZWxw IiwiYWxlcnRDbGFzcyIsIl9oaWRlQWxlcnQ9CiIsInJlc2V0IiwiY2xlYXJTZWxlY3RlZEVsZW1l bnRzIiwiX2RyYWdvdmVyRWxlbWVudHMiLCJfY2hlY2tGb3JBdXRvc2Nyb2xsIj0KLCJjbGllbnRZ IiwiJG5lYXJlc3QiLCJfZ2V0TmVhcmVzdEVsZW1lbnQiLCIkcGxhY2Vob2xkZXIiLCJiZWZvcmUi LCIkZWxlbWVuPQp0IiwieSIsIkFVVE9TQ1JPTExfU1BFRUQiLCJvZmZzZXQiLCJzY3JvbGxUb3Ai LCJ1cHBlckRpc3QiLCJ0b3AiLCJsb3dlckRpc3Q9CiIsIm91dGVySGVpZ2h0IiwiV0lHR0xFIiwi bGlzIiwidG9BcnJheSIsImkiLCIkbGkiLCJoYWxmSGVpZ2h0IiwiTWF0aCIsImZsbz0Kb3IiLCJf ZHJvcEVsZW1lbnRzIiwiZHJvcEVmZmVjdCIsImluc2VydEJlZm9yZSIsImluc2VydEFmdGVyIiwi bGFzdCIsIl9zeW5jPQpPcmRlclRvRG9tIiwibmV3RWxlbWVudHMiLCJmaW5kV2hlcmUiLCJjb25z b2xlIiwiX2VsZW1lbnREcmFnc3RhcnQiLCJfZWxlbWU9Cm50RHJhZ2VuZCIsIl9jaGFuZ2VOYW1l IiwiX2dldE5hbWUiLCJfbmFtZUNoZWNrRm9yRW50ZXIiLCJrZXlDb2RlIiwiX2NsaWNrQz0KcmVh dGUiLCJlc2NhcGUiLCJ2YWwiLCJjb2xsZWN0aW9uQ3JlYXRvck1vZGFsIiwib3B0aW9ucyIsIkNy ZWF0b3JDbGFzcyIsImRlPQpmZXJyZWQiLCJEZWZlcnJlZCIsIm1vZGFsIiwiR2FsYXh5IiwiZGVm YXVsdHMiLCJyZWplY3QiLCJyZXNvbHZlIiwidGl0bGUiLCI9CmJvZHkiLCJjbG9zaW5nX2V2ZW50 cyIsIndpbmRvdyIsIl9jb2xsZWN0aW9uQ3JlYXRvciJdLCJtYXBwaW5ncyI6IkFBQ0FBLFFBQz0K SSx5QkFDQSxxQkFDQSxlQUNBLGtCQUNBLHFCQUNBLHFCQUNBLHFCQUNELFNBQVVDLEVBQU1DLEVB QVFDLEVBQVVDLEVBQVVDLEVBPQpBYUMsR0EwL0I1RCxRQUFTQyxHQUFzQkMsR0FDM0IsR0FBSUMs R0FBV0QsRUFBU0UsU0FDcEJDLEVBQVVDLEVBQTRCSCxHQUNsQ0k9CixXQUFhLFNBQVVKLEVBQVVL LEdBUzdCLE1BUkFMLEdBQVdBLEVBQVNNLElBQUssU0FBVUMsR0FDL0IsT0FDSUMsR0FBVUQsRUFB UT0KQyxHQUNsQkgsS0FBVUUsRUFBUUYsS0FFbEJJLElBQTZDLFlBQWpDRixFQUFRRyxxQkFBb0Ms TUFBUSxVQUdqRVgsRUFBU1ksV0FBPQpZWCxFQUFVLE9BQVFLLEtBRzFELE9BQU9ILEdBNy9CWCxH QUFJVSxHQUErQkMsU0FBU0MsS0FBS0MsT0FBUXJCLEVBQVNzQixlQUE9CmdCRCxRQUU5RUUsUUFB YyxLQUNkQyxVQUFjLHFCQUVkQyxXQUFhLFNBQVVDLEdBQ25CQyxLQUFLZCxRQUFVYSxFQUFXYixZ QUMxQj0KYyxLQUFLQyxTQUFXRixFQUFXRSxXQUFZLEdBRzNDQyxPQUFTLFdBUUwsTUFQQUYsTUFB S0csSUFDQUMsS0FBTSxrQkFBbUJKLEtBPQpBS2QsUUFBUUMsSUFDdENpQixLQUFNLGFBQWEsR0FD bkJDLEtBQU1MLEtBQUtNLFVBQVdwQixRQUFTYyxLQUFLZCxXQUNyQ2MsS0E9CkFLQyxVQUNMRCxL QUFLRyxJQUFJSSxTQUFVLFlBRWhCUCxNQUlYTSxTQUFXRSxFQUFFRixVQUNULDBCQUEyQjlCLEVB QUksbUJBQT0KcUIsK0JBQ2hELHNCQUNKLE9BQ0EsNkNBQThDQSxFQUFJLHFDQUF1QyxLQUNyRkEs RUFBSSxXQUNSLGFBQ0ZpQyxLQUFLLEtBR1BDPQosT0FBUyxTQUFVQyxHQUNmWCxLQUFLRyxJQUFJ UyxZQUFhLFdBQVlELEdBQ2xDWCxLQUFLYSxRQUFTLFVBQ1ZDLE9BQVdkLEtBQ1g9CkMsU0FBV0Qs S0FBS0csSUFBSVksU0FBVSxlQUt0Q0MsUUFBVSxXQUNOLEdBQUlDLEdBQU9qQixLQUNQa0IsRUFB Y2xCLEtBQUtHLD0KSUFBSWdCLFNBQVNDLE9BQ3BDcEIsTUFBS0csSUFBSWtCLFNBQVVDLGVBQWlC SixHQUFlLE9BQVEsV0FDdkRELEVBQUtKLFFBQVMsPQpXQUNWQyxPQUFTRyxJQUViQSxFQUFLTSxh QUtiQSxRQUFVLFdBQ052QixLQUFLd0IsTUFDTHhCLEtBQUtHLElBQUlzQixVQUdiQyw9ClFBQ0lD LE1BQWtCLFNBQ2xCQyxjQUFrQixhQUNsQkMsaUJBQWtCLGdCQUVsQkMsVUFBa0IsYUFDbEJDLFFB QWtCLFdBQ2xCQyxTQT0KQWtCLGdCQUNsQkMsS0FBa0IsaUJBSXRCQyxPQUFTLFNBQVVDLEdBQ2ZB LEVBQUdDLGtCQUNIcEMsS0FBS1UsT0FBUXlCLElBSWpCPQpFLFdBQWEsU0FBVUYsR0FDbkJBLEVB QUdDLGtCQUNIRCxFQUFHRyxnQkFDSCxJQUVJQyxLQUZpQi9ELEVBQUksb0NBQXNDLE9BQzE9CkNB LEVBQUksZ0VBQWtFLEtBQU1pQyxLQUFNLElBQ3hGK0IsT0FBUWhFLEVBQUksb0NBQXVDLElBQUt3 QixLQUFLZCxRQUFRRixNQT0KQ2hGdUQsS0FDQXZDLEtBQUtkLFFBQVFGLEtBQU91RCxFQUNwQnZD LEtBQUtFLFdBTWJ1QyxjQUFnQixTQUFVTixHQUN0QkEsRUFBPQpHQyxrQkFDSHBDLEtBQUtnQixX QUlUMEIsV0FBYSxTQUFVUCxHQUNmQSxFQUFHUSxnQkFBaUJSLEVBQUtBLEVBQUdRLGVBQ2hDUiw9 CkVBQUdTLGFBQWFDLGNBQWdCLE9BQ2hDVixFQUFHUyxhQUFhRSxRQUFTLGFBQWNDLEtBQUtDLFVB QVdoRCxLQUFLZCxVQUU1RGMsSz0KQUFLRyxJQUFJSSxTQUFVLFlBQ25CUCxLQUFLRyxJQUFJZ0Is U0FBU04sUUFBUyxnQ0FBa0NiLFFBSWpFaUQsU0FBVyxXQUNQakQsPQpLQUFLRyxJQUFJK0MsWUFB YSxZQUN0QmxELEtBQUtHLElBQUlnQixTQUFTTixRQUFTLDhCQUFnQ2IsUUFJL0RtRCxjQUFnQixT QUE9ClVoQixHQUN0Qm5DLEtBQUtHLElBQUlnQixTQUFTTixRQUFTc0IsSUFJL0JpQixTQUFXLFdB Q1AsTUFBTyxvQ0FRWEMsRUFBd0I3RD0KLFNBQVNDLEtBQUtDLE9BQVFyQixFQUFTc0IsZUFBZ0JE LFFBR3ZFNEQsaUJBQW1CL0QsRUFFbkJnRSxnQkFBbUJwRixFQUFLcUYsPQo2QkFDeEIzRCxVQUFt QixnRUFHbkI0RCxZQUFtQixFQUVuQkMsbUJBR0kzRSxXQUFhLFdBQVksS0FBTSxJQUFJNEUsV0FB VywrQkE9CkU5Q0MsU0FBYSxhQUViQyxTQUFhLGFBRWJDLGVBQWtCLEdBRWxCQyxhQUFrQiw2QkFJ dEJqRSxXQUFhLFNBQVVDLEdBQ25CQyxLQT0KQUtnRSxPQUFRLG1DQUFvQ2pFLEVBQ2pELElBQUlr RSxHQUFVakUsSUFDZFEsR0FBRTBELEtBQU1sRSxLQUFLMEQsa0JBQW1CLFNBPQpBVVMsRUFBT0Ms R0FDN0NELEVBQVFwRSxFQUFZcUUsSUFBU0QsRUFDN0JGLEVBQVNHLEdBQVFELElBSXJCRixFQUFR SSxnQkFBa0I9CnRFLEVBQVdwQixhQUVyQ3FCLEtBQUtzRSxpQkFDTHRFLEtBQUt1RSxpQkFDTHZF LEtBQUt3RSxtQkFJVEYsZUFBaUIsV0FFYnRFLD0KS0FBS3lFLGVBRUx6RSxLQUFLMEUsVUFBWSxL QUVqQjFFLEtBQUsyRSxVQUFXLEdBS3BCSixlQUFpQixXQUdidkUsS0FBSzRFLG1CPQpBR0w1RSxL QUFLNkUsbUJBRUw3RSxLQUFLOEUsZ0JBR0w5RSxLQUFLNkUsZ0JBQWtCN0UsS0FBS3FFLGdCQUFn QlUsTUFBTyxHQUM9Cm5EL0UsS0FBS2dGLG9CQUNMaEYsS0FBS2lGLG9CQUNMakYsS0FBS2tGLHdC QUNMbEYsS0FBS21GLGlCQUlUSCxrQkFBb0IsV0FNaD0KQixNQUxBaEYsTUFBSzZFLGdCQUFnQk8s UUFBUyxTQUFVbEcsR0FDL0JBLEVBQVFtRyxlQUFnQixRQUN6Qm5HLEVBQVFDLEdBQUtxPQpCLEVB QUU4RSxjQUdoQnRGLEtBQUs2RSxpQkFJaEJJLGtCQUFvQixXQUNoQixHQUFJaEIsR0FBVWpFLElB Y2QsT0FaQWlFLEdBQVE9ClcsbUJBRVI1RSxLQUFLNkUsZ0JBQWtCN0UsS0FBSzZFLGdCQUFnQlUs T0FBUSxTQUFVckcsR0FDMUQsR0FBSXNHLEdBQVV2QixFQT0KQVF3QixrQkFBbUJ2RyxFQU96QyxP QU5Jc0csSUFDQXZCLEVBQVFXLGdCQUFnQmMsTUFDcEJ4RyxRQUFVQSxFQUNWeUcsS0FBVUgsPQpL QUdWQSxJQUVMeEYsS0FBSzZFLGlCQUloQlksa0JBQW9CLFNBQVV2RyxHQUMxQixNQUFxQyxZQUFq Q0EsRUFBUUcscUJBQ0RiLEU9CkFBSSxvQkFFWFUsRUFBUTBHLFFBQVV4SCxFQUFPeUgsR0FFZHJI LEVBRFBnQyxFQUFFc0YsU0FBVTFILEVBQU8ySCxpQkFBa0I3Rz0KLEVBQVEwRyxPQUNsQyw4QkFF SixnREFFWDFHLEVBQVE4RyxTQUFXOUcsRUFBUStHLE9BQ3BCekgsRUFBSSw4QkFFUixNQUlYMEcs PQpzQkFBd0IsV0FDcEIsR0FBSWdCLEdBQVMsSUFDVEMsRUFBVSxFQUNWQyxJQUNKcEcsTUFBSzZF LGdCQUFnQk8sUUFBUyxTQUFVbEc9CixHQUVwQyxJQURBLEdBQUltSCxHQUFXbkgsRUFBUUYsS0FD aEJvSCxFQUFjZixlQUFnQmdCLElBR2pDLEdBRkFBLEVBQVduSCxFQT0KQVFGLEtBQU8sS0FBT21I LEVBQVUsSUFDM0NBLEdBQVcsRUFDUEEsR0FBV0QsRUFDWCxLQUFNLElBQUlJLE9BQU8sOENBR3pC cEgsPQpHQUFRRixLQUFPcUgsRUFDZkQsRUFBZWxILEVBQVFGLE9BQVMsS0FLeENtRyxjQUFnQixh QVNoQmpGLE9BQVMsU0FBVXFHLEVBQU89CkMsR0FFdEIsTUFBSXhHLE1BQUs2RSxnQkFBZ0I0QixP QUFTekcsS0FBS3lELFlBQzVCekQsS0FBSzBHLGVBQWdCSCxFQUFPQyxJQT0KR3ZDeEcsS0FBS0cs SUFBSXdHLFFBQVF0RyxLQUFNTCxLQUFLNEcsVUFBVUMsUUFDdEM3RyxLQUFLOEcsY0FBZVAsR0FD cEJ2RyxLPQpBQUsrRyxjQUFlUixHQUNwQnZHLEtBQUtnSCxjQUFlVCxHQUNwQnZHLEtBQUtpSCx1 QkFDTGpILEtBQUtrSCxFQUFHLG9CQUFxQkM9CixRQUM3Qm5ILEtBQUthLFFBQVMsV0FBWWIsTUFD bkJBLE9BS1gwRyxlQUFpQixXQVViLE1BUkExRyxNQUFLRyxJQUFJd0csUUFBUT0KdEcsS0FBTUws S0FBSzRHLFVBQVVRLGdCQUNsQ0MsU0FBVXJILEtBQUs0RSxnQkFDZmpHLFNBQVVxQixLQUFLNkUs bUJBRVUsa0JBPQpBbEI3RSxNQUFLNkQsVUFDWjdELEtBQUtrSCxFQUFHLHNCQUF1QkksT0FFbkN0 SCxLQUFLYSxRQUFTLFdBQVliLE1BQ25CQSxNQUk9Clg4RyxjQUFnQixXQUNaLEdBQUlTLEdBQVV2 SCxLQUFLa0gsRUFBRyxXQUFZUCxRQUFRdEcsS0FBTUwsS0FBSzRHLFVBQVVZLFVBQz0KMURDLEtB QU0saUJBQWtCQyxRQUFTUixFQUFHbEgsS0FBSzRHLFVBQVVlLGVBS3hELE9BSEkzSCxNQUFLNEUs Z0JBQWdCNkIsUUFDPQpyQnpHLEtBQUs0SCx3QkFFRkwsR0FJWFIsY0FBZ0IsU0FBVVIsR0FDdEIs R0FBSXNCLEdBQVU3SCxLQUFLa0gsRUFBRyxXQUFZUCw9ClFBQVF0RyxLQUFNTCxLQUFLNEcsVUFB VWtCLFNBRS9ELE9BREE5SCxNQUFLK0gsWUFBYXhCLEdBQ1hzQixHQUlYYixjQUFnQixXQT0KQ1os R0FBSWdCLEdBQVVoSSxLQUFLa0gsRUFBRyxXQUFZUCxRQUFRdEcsS0FBTUwsS0FBSzRHLFVBQVVx QixTQUkvRCxPQUg2QixrPQpCQUFsQmpJLE1BQUs2RCxVQUNaN0QsS0FBS2tILEVBQUcsc0JBQXVC SSxPQUU1QlUsR0FJWGYscUJBQXVCLFdBQ25CakgsS0FBS2s9CkgsRUFBRyxtQkFBb0JnQixlQUFn QixzQkFBdUJsSSxLQUFLK0QsZUFJNUU2RCxzQkFBd0IsV0FDcEI1SCxLQUFLbUksV0FBWW5JLD0K S0FBSzRHLFVBQVVoQyxpQkFBa0J5QyxTQUFVckgsS0FBSzRFLGtCQUFvQixrQkFJekZ3RCxtQkFB cUIsU0FBVUMsRUFBTUMsR0FDPQpqQyxHQUFJQyxHQUFtQixvQkFDVixVQUFURixJQUNBQSxFQUFP ckksS0FBS2tILEVBQUcsb0JBQXFCc0IsSUFBS3hJLEtBQUtrSCw9CkVBQUcsNEJBQ2pEbEgsS0FB S2tILEVBQUcsb0JBQXFCQyxRQUFRekcsVUFFckM0SCxHQUNBRCxFQUFPQSxHQUFRckksS0FBS2tI LD0KRUFBRyxJQUFNcUIsR0FDN0JGLEVBQUtuRixZQUFhcUYsSUFFbEJGLEVBQUs5SCxTQUFVZ0ks SUFJdkJFLHNCQUF3QixTQUFVQyxHPQpBQzlCQSxFQUFXbEksRUFBRW1JLFlBQWFELElBQXFCLEVB QVZBLEVBQ2pDQSxJQUNBMUksS0FBS2tILEVBQUcsb0JBQXFCMEIsS0E9CkFNLFlBQVksR0FDL0M1 SSxLQUFLa0gsRUFBRyxzQkFBdUJ0RyxZQUFhLFlBQVksS0FTaEVpSSxNQUFRLFdBQ0osTUFBTzdJ LE1BQT0KS2tILEVBQUcseUJBSW5CNEIscUJBQXVCLFdBQ2Z0SSxFQUFFdUksS0FBTS9JLEtBQUt5 RSxhQUNiekUsS0FBS2tILEVBQUcsbURBPQpBb0RJLE9BRTVEdEgsS0FBS2tILEVBQUcsbURBQW9E OEIsUUFLcEVqQixZQUFjLFdBRVYsR0FBSTlELEdBQVVqRSxLQUNWaUosRUE9CkFPQyxPQUFRLFVB Q2ZMLEVBQVE1RSxFQUFRNEUsT0FFcEJySSxHQUFFMEQsS0FBTWxFLEtBQUs4RSxhQUFjLFNBQVU3 RCxHQUNqQz0KQSxFQUFLTSxVQUNMMEMsRUFBUWtGLGtCQUFtQmxJLEtBUS9CZ0QsRUFBUVksZ0JB QWdCTyxRQUFTLFNBQVVsRyxHQUN2QyxHQUFJPQprSyxHQUFjbkYsRUFBUW9GLG1CQUFvQm5LLEVB QzlDK0osR0FBS0ssT0FBUUYsRUFBWWpKLE9BRzdCOEQsRUFBUTZFLHVCQUNSRCw9CkVBQU1sQyxR QUFRMkMsT0FBUUwsRUFBS00sWUFDM0IvSSxFQUFFZ0osT0FBUXZGLEVBQVFhLGFBQWMsVUFFNUIr RCxFQUFNWSxTQT0KQVdaLEVBQU1hLElBQUssY0FDNUJiLEVBQU1hLElBQUssZUFBZ0IsbUJBRTNC YixFQUFNYSxJQUFLLGVBQWdCLFFBS25DTCxtQkFBPQpxQixTQUFVbkssR0FDM0IsR0FBSWtLLEdB QWMsR0FBSXBKLE1BQUtzRCxrQkFHdkJwRSxRQUFVQSxFQUNWZSxTQUFVTyxFQUFFbUo9CixJQUFL M0osS0FBS3lFLFlBQWF2RixFQUFRQyxLQUkvQyxPQUZBYSxNQUFLOEUsYUFBYVksS0FBTTBELEdB Q3hCcEosS0FBSzRKLD0KcUJBQXNCUixHQUNwQkEsR0FJWFEscUJBQXVCLFNBQVUzSSxHQUM3QixH QUFJZ0QsR0FBVWpFLElBQ2RpRSxHQUFRNEYsU0FBVTVJPQosR0FDZFAsT0FBUyxTQUFVb0osR0FD ZixHQUFJNUssR0FBVTRLLEVBQUtoSixPQUFPNUIsT0FDdEI0SyxHQUFLN0osU0FDTGdFLEU9CkFB UVEsWUFBYXZGLEVBQVFDLEtBQU8sUUFFN0I4RSxHQUFRUSxZQUFhdkYsRUFBUUMsSUFFeEM4RSxF QUFRcEQsUUFBUyxrQkFBbT0KQmlKLElBRXhDOUksUUFBVSxTQUFVOEksR0FDaEI3RixFQUFRcEQs UUFBUyxtQkFBb0JpSixPQU1qREMsZUFBaUIsYUFRakJaLGtCPQpBQW9CLFNBQVVsSSxTQUNuQmpC LE1BQUt5RSxZQUFheEQsRUFBSy9CLFFBQVFDLElBQ3RDYSxLQUFLOEksdUJBRUw5SSxLQUFLOEU9 CixhQUFldEUsRUFBRXdKLFFBQVNoSyxLQUFLOEUsYUFBYzdELEdBQ2xEakIsS0FBS2lLLGNBQWVo SixJQUl4QmlKLHNCQUF3QixXQT0KQ3BCbEssS0FBS3lJLHVCQUF1QixHQUM1QnpJLEtBQUtrSCxF QUFHLHdCQUF5Qm9DLE9BQVF0SixLQUFLNEcsVUFBVXVELG1CQVc1PQpEQyxlQUFpQixTQUFVbEws R0FFdkIsTUFBT0EsSUFNWG1MLFdBQWEsU0FBVXJMLEdBQ25CLElBQUtnQixLQUFLNkUsZ0JBQWdC NEI9CixPQUFRLENBQzlCLEdBQUk2RCxHQUFVOUwsRUFBSSxvQ0FBdUMsSUFLekQsT0FKQThMLElB QVcsdURBQXlEOUwsRUFBSSxVQUFhLD0KUUFDckY4TCxHQUFXOUwsRUFBSSxNQUNmOEwsR0FBVyxn REFBa0Q5TCxFQUFJLGNBQWlCLFlBQ2xGd0IsTUFBS21JLFdBQVltQyxHPQpBSXJCLEdBQUlyRyxH QUFVakUsS0FDVnJCLEVBQVdxQixLQUFLNkUsZ0JBQWdCNUYsSUFBSyxTQUFVQyxHQUMzQyxNQUFP K0UsR0E9CkFRbUcsZUFBZ0JsTCxJQUl2QyxPQURBK0UsR0FBUVUsVUFBVyxFQUNaVixFQUFRbEYs V0FBWUosRUFBVUssR0FDaEN1TCxPQUFRLD0KV0FDTHRHLEVBQVFVLFVBQVcsSUFFdEI2RixLQUFN LFNBQVVDLEVBQUtDLEdBQ2xCekcsRUFBUXBELFFBQVMsU0FDYjRKLElBQVVBPQosRUFDVkMsT0FB VUEsRUFDVkosUUFBVTlMLEVBQUksd0RBR3JCbU0sS0FBTSxTQUFVcEksRUFBVStILEVBQVNHLEdB Q2hDeEcsRUE9CkFRcEQsUUFBUyxxQkFBc0IwQixFQUFVK0gsRUFBU0csR0FDMUR4RyxFQUFRRCxP QUFRLHFCQUFzQnpCLEdBQ04sa0JBQXJCMEIsRz0KQUFRTCxVQUNmSyxFQUFRTCxTQUFTZ0gsS0FB TTVLLEtBQU11QyxFQUFVK0gsRUFBU0csTUFPaEVqRyxnQkFBa0IsV0F3QmQsTUF2PQpCQXhFLE1B QUs2SyxHQUFJLFFBQVM3SyxLQUFLOEssZUFFdkI5SyxLQUFLK0ssS0FBTSxXQUFZLFdBQ25CL0ss S0FBS2EsUUFBUyw9Cm1CQUFvQmIsUUFHdENBLEtBQUs2SyxHQUFJLGtCQUFtQixXQUN4QjdLLEtB QUs4SSx5QkFHVDlJLEtBQUs2SyxHQUFJLG1CQUFvQj0KLFNBQVVmLEdBQ25DLEdBQUk1SyxHQUFV NEssRUFBS2hKLE9BQU81QixPQUMxQmMsTUFBS21KLGtCQUFtQlcsRUFBS2hKLFFBRTdCPQpkLEtB QUs2RSxnQkFBa0JyRSxFQUFFd0osUUFBU2hLLEtBQUs2RSxnQkFBaUIzRixHQUNuRGMsS0FBSzZF LGdCQUFnQjRCLFFBQ3Q9CkJ6RyxLQUFLa0ssMEJBT05sSyxNQUlYOEssY0FBZ0IsU0FBVWhCLEdB Q3RCOUosS0FBS2dMLE1BQU9sQixFQUVaLElBQUk3RixHQT0KQVVqRSxJQUVkLElBRElpTCxRQUFV bkIsRUFBS1EsU0FBVzlMLEVBQUkscUJBQzlCc0wsRUFBS1csSUFBSyxDQUNWLEdBQUlBLEdBPQpB TVgsRUFBS1csSUFDWEgsRUFBVVIsRUFBS1EsT0FFZlcsVUFEbUIsSUFBbkJSLEVBQUlTLFlBQW1D LElBQWZULEVBQUlDLE9BQ2o9CkIsS0FBT2xNLEVBQUksb0RBQ2xCQSxFQUFJLGdDQUNEaU0sRUFB SVUsYUFDQSxlQUFpQnBJLEtBQUtDLFVBQVd5SCxFQUFJVSxjQT0KQWlCLFNBRXRELEtBQU9iLEVB RzFCckcsRUFBUWtFLFdBQVk4QyxRQUFTLGlCQUdqQ3ZKLFFBRUkwSixtQkFBa0MsaUJBQ2xDQyxt PQpCQUFrQyxpQkFDbENDLG1CQUFrQyxjQUNsQ0MsOEJBQWtDLGFBRWxDQyxlQUFrQyxRQUNsQ0Ms d0JBQWtDLHdCQUdsQ0MsNkJBQWs9CkMsd0JBS2xDQyxnQ0FBa0Msb0JBQ2xDQyw0QkFBa0MsZ0JB R2xDQyxvREFBc0Qsb0JBQ3REQyxvREFBc0Qsa0JBR3REQywwQkFBaz0KQyxjQUNsQ0MsMkJBQWtD LHFCQUNsQ0MsdUJBQWtDLFdBQ0Qsa0JBQWxCak0sTUFBSzZELFVBQ1o3RCxLQUFLNkQsU0FBUytH LEtBPQpBTTVLLE9BRzVCa00sMkJBQWtDLGdCQUt0Q0MsZUFBaUIsU0FBVWhLLEdBQ3ZCQSxFQUFH QyxrQkFDSHBDLEtBQUtrSCxFQUFHLGM9CkFBZTNHLFNBQVUsWUFDakNQLEtBQUtrSCxFQUFHLGNB QWU4QixRQUczQm9ELGVBQWlCLFNBQVVqSyxHQUN2QkEsRUFBR0Msa0JBQz0KSHBDLEtBQUtrSCxF QUFHLGNBQWVoRSxZQUFhLFlBQ3BDbEQsS0FBS2tILEVBQUcsY0FBZUksUUFHM0IrRSxZQUFjLFNB QVVsSyxHPQpBQ3BCQSxFQUFHQyxrQkFDSHBDLEtBQUtrSCxFQUFHLGNBQWV0RyxZQUFhLFlBQ3BD WixLQUFLa0gsRUFBRyxjQUFldkcsVUFJM0I9CndILFdBQWEsU0FBVW1DLEVBQVNnQyxHQUM1QkEs RUFBYUEsR0FBYyxlQUMzQnRNLEtBQUtrSCxFQUFHLGNBQWU4QixPQUN2QmhKLD0KS0FBS2tILEVB QUcsa0JBQ0g5RyxLQUFNLFFBQVMsMkJBQTRCRyxTQUFVK0wsR0FBYWhGLE9BQ2xFRyxLQUFNLGtC QUFtQnBILEtBPQpBTWlLLElBR3hDaUMsV0FBYSxXQUNUdk0sS0FBS2tILEVBQUcsY0FBZUksT0FD dkJ0SCxLQUFLa0gsRUFBRyxrQkFBbUI4QixRQUs9Ci9Cd0QsTUFBUSxXQUNKeE0sS0FBS3NFLGlC QUNMdEUsS0FBS3VFLGlCQUNMdkUsS0FBS0UsVUFJVHVNLHNCQUF3QixXQUNwQnpNLD0KS0FBS2tI LEVBQUcsNENBQTZDaEUsWUFBYSxZQUNsRWxELEtBQUtrSCxFQUFHLG1EQUFvRDhCLFFBWWhFMEQs a0JBQW9CLFNBQVV2PQpLLEdBRTFCQSxFQUFHRyxnQkFFSCxJQUFJdUcsR0FBUTdJLEtBQUs2SSxP QUNqQjdJLE1BQUsyTSxvQkFBcUI5RCxFQUFPMUcsRUE9CkFHUSxjQUFjaUssUUFDbEQsSUFBSUMs R0FBVzdNLEtBQUs4TSxtQkFBb0IzSyxFQUFHUSxjQUFjaUssUUFHekQ1TSxNQUFLa0gsRT0KQUFH LDZCQUE4QnpGLFFBQ3RDLElBQUlzTCxHQUFlN0YsRUFBRywrQ0FDakIyRixHQUFTOUQsT0FHVjhE LEVBQVNHLE9BQVFELEdBPQpGakJsRSxFQUFNUyxPQUFReUQsSUFPdEJKLG9CQUFzQixTQUFVTSxF QUFVQyxHQUN0QyxHQUFJQyxHQUFtQixFQUNuQkMsRUFBU0g9CixFQUFTRyxTQUNsQkMsRUFBWUos RUFBU0ksWUFDckJDLEVBQVlKLEVBQUlFLEVBQU9HLElBQ3ZCQyxFQUFjSixFQUFPRyxJQUFNTj0K LEVBQVNRLGNBQWtCUCxDQUN0REksSUFBYSxHQUFLQSxFQUFZdE4sS0FBSzhELGVBQ25DbUosRUFB U0ksVUFBV0EsRUFBWUYsR0FDPQp6QkssR0FBYSxHQUFLQSxFQUFZeE4sS0FBSzhELGdCQUMxQ21K LEVBQVNJLFVBQVdBLEVBQVlGLElBT3hDTCxtQkFBcUIsU0FBVUk9CixHQUczQixJQUFLLEdBRkRR LEdBQVMsRUFDVEMsRUFBTTNOLEtBQUtrSCxFQUFHLDhDQUErQzBHLFVBQ3hEQyxFQUFFLEVBQUdB LD0KRUFBRUYsRUFBSWxILE9BQVFvSCxJQUFLLENBQzdCLEdBQUlDLEdBQU01RyxFQUFHeUcsRUFB SUUsSUFDYk4sRUFBTU8sRUFBSVYsPQpTQUFTRyxJQUNuQlEsRUFBYUMsS0FBS0MsTUFBT0gsRUFB SUwsY0FBZ0IsR0FBTUMsQ0FDdkQsSUFBSUgsRUFBTVEsRUFBYWIsR0E9CkF3QkEsRUFBbkJLLEVB QU1RLEVBQzlCLE1BQU9ELEdBR2YsTUFBTzVHLE1BSVhnSCxjQUFnQixTQUFVL0wsR0FDbEJBLEVB QUdRLD0KZ0JBQWlCUixFQUFLQSxFQUFHUSxlQUVoQ1IsRUFBR0csaUJBQ0hILEVBQUdTLGFBQWF1 TCxXQUFhLE1BRzdCLElBQUl0QixHQUFXPQo3TSxLQUFLOE0sbUJBQW9CM0ssRUFBR3lLLFFBUzND LE9BUklDLEdBQVM5RCxPQUNUL0ksS0FBSzBFLFVBQVUwSixhQUFjdkIsR0E9Ckc3QjdNLEtBQUsw RSxVQUFVMkosWUFBYXJPLEtBQUtrSCxFQUFHLDRDQUE2Q29ILFFBR3JGdE8sS0FBS3VPLG1CQUNF LEdBSVhBLD0KZ0JBQWtCLFdBQ2QsR0FBSXRLLEdBQVVqRSxLQUNWd08sSUFFSnhPLE1BQUtrSCxF QUFHLDRDQUE2Q2hELEtBQU0sV0FDdkQsR0FBPQpJL0UsR0FBSytILEVBQUdsSCxNQUFPSSxLQUFN LG1CQUNyQmxCLEVBQVVzQixFQUFFaU8sVUFBV3hLLEVBQVFZLGlCQUFtQjFGLEc9CkFBSUEsR0FD dERELEdBQ0FzUCxFQUFZOUksS0FBTXhHLEdBRWxCd1AsUUFBUTFELE1BQU8sb0JBQXFCN0wsS0FH NUNhLEtBQUs2RT0KLGdCQUFrQjJKLEVBQ3ZCeE8sS0FBSytILGVBSVQ0RyxrQkFBb0IsU0FBVXhN LEVBQUlqRCxHQUU5QkEsRUFBUXdCLFFBQVEsR0FDPQpoQlYsS0FBSzBFLFVBQVkxRSxLQUFLa0gs RUFBRyxzREFJN0IwSCxnQkFBa0IsV0FDZDFILEVBQUcsNkJBQThCekYsU0FDakN6Qiw9CktBQUsw RSxVQUFZLE1BS3JCbUssWUFBYyxXQUNWN08sS0FBS29JLG1CQUFvQixTQUFVcEksS0FBSzhPLGFB STVDQyxtQkFBcUIsUz0KQUFVNU0sR0FDUixLQUFmQSxFQUFHNk0sU0FBbUJoUCxLQUFLMkUsVUFD M0IzRSxLQUFLaVAsZ0JBS2JILFNBQVcsV0FDUCxNQUFPPQp0TyxHQUFFME8sT0FBUWxQLEtBQUtr SCxFQUFHLG9CQUFxQmlJLFFBSWxERixhQUFlLFdBQ1gsR0FBSWpRLEdBQU9nQixLQUFLOE89CixV QUNYOVAsR0FFT2dCLEtBQUsyRSxVQUNiM0UsS0FBS3FLLFdBQVlyTCxHQUZqQmdCLEtBQUtvSSxt QkFBb0IsU0FXakN4QixXQT0KRUlDLEtBQU9yRyxFQUFFRixVQUNMLDhDQUNBLHlEQUNBLCtDQUNG RyxLQUFLLEtBR1ArRyxPQUFTaEgsRUFBRUYsVUFDUCxxQ0FDPQpJLG1EQUFvRDlCLEVBQUksYUFB ZSxPQUN2RSw2QkFDSSxtREFBb0RBLEVBQUksUUFBVSxPQUN0RSxTQUNKLFNBQ0Esd0NBQ0ksNEQ9 CkFDSSxVQUFXQSxFQUFJLDRCQUE4Qix3Q0FDakQsc0NBQ0osVUFDRmlDLEtBQUssS0FHUHFILE9B QVN0SCxFQUFFRixVQUNQLDZDQT0KQ0ksK0NBQ0ksVUFBVzlCLEVBQUksb0NBQXNDLEtBQ3JEQSxF QUFJLGNBQ1IsT0FDQSx3REFDSSxVQUFXQSxFQUFJLG1DQUFxQyxLPQpBQ3BEQSxFQUFJLGtCQUNS LE9BQ0osU0FDQSw4REFDQSxVQUNGaUMsS0FBSyxLQUdQd0gsT0FBU3pILEVBQUVGLFVBQ1AsaUNB Q0k9CixzQkFDSSwwREFDSSxnQkFBaUI5QixFQUFJLHdDQUEwQyxPQUNuRSxrREFBbURBLEVBQUks UUFBVSxVQUNyRSxTQUNKLFNBRUEsZz0KREFDSSx3Q0FDSSxtREFBb0RBLEVBQUksVUFBWSxZQUNw RSw4Q0FDSSwwRUFDTUEsRUFBSSx5Q0FDSiwrQkFDTixZQUNBLHlDQUNNPQosbUJBQW9CQSxFQUFJ LCtCQUFpQyxZQUN6RCxtQkFBb0JBLEVBQUksNkNBQStDLFlBQzdFLFFBQ0osU0FDSixTQUVBLHdD QUNJLHE9CkRBQXNEQSxFQUFJLGVBQWlCLFlBQy9FLFNBQ0osVUFDRmlDLEtBQUssS0FHUGtILFlB QWNuSCxFQUFFRixVQUNaLE1BQU85QixHQT0KQ0gsb0dBQ0Esc0dBQ0EsaUVBQ0ZpQyxLQUFNLEtB QU8sT0FDZixPQUNJLE9BQVFqQyxHQUNKLDhDQUNBLHFFQUNGaUMsS0FBTSxLPQpBQU8sUUFDZixP QUFRakMsR0FDSixtRUFDQSx1RUFDRmlDLEtBQU0sS0FBTyxRQUNmLE9BQVFqQyxHQUNKLCtGQUNB LHNHQUNBLHk9CkVBQ0EsbUVBQ0ZpQyxLQUFNLEtBQU8sUUFDZixPQUFRakMsR0FDSixvR0FDQSxr QkFDRmlDLEtBQU0sS0FBTyxRQUNmLE9BQVFqQz0KLEdBQ0osd0ZBQ0ZpQyxLQUFNLEtBQU8sUUFD bkIsY0FDQSxNQUFPakMsR0FDSCw0RkFDQSxnRUFDRmlDLEtBQU0sS0FBTyxRQUNqPQpCQSxLQUFL LEtBR1BtRSxnQkFBa0JwRSxFQUFFRixVQUNoQjlCLEVBQUksbUVBQ0osbURBQ0ksbUVBQ0osa0JB Q0ZpQyxLQUFLLEs9CkFHUDBKLGVBQWlCM0osRUFBRUYsVUFDZix3Q0FDSTlCLEVBQUksc0JBQ0pB LEVBQUksc0JBQXdCLDhDQUErQ0EsRUFBSSxjQUFnQj0KLFFBQ25HLFNBQ0ZpQyxLQUFLLEtBR1Ay RyxlQUFpQjVHLEVBQUVGLFVBQ2Ysd0NBQ0ksMkRBQ0ksK0JBQ0ksa0NBQ0k5QixFQUFJPQosa0VB QW9FLElBQ3hFLG1EQUNJLG1FQUNKLGlCQUNKLDZDQUNJQSxFQUFJLDZCQUErQixJQUN2QyxVQUNB LFNBQ0FBLEVBQUkscUQ9CkFBdUQsS0FDM0RBLEVBQUksb0JBQ0osc0RBQXVEQSxFQUFJLFVBQVks UUFDdkVBLEVBQUksNkJBQStCLElBQ3ZDLFVBQ0osU0FDSj0KLFNBQ0Esd0NBQ0ksZ0RBQ0ksd0NB Q0ksbURBQW9EQSxFQUFJLFVBQVksWUFFeEUsU0FDSixTQUNKLFVBQ0ZpQyxLQUFLLE1BS1gyPQpD LFNBQVcsV0FBWSxNQUFPLDJCQVM5QmdNLEVBQXlCLFNBQWtDelEsRUFBVTBRLEVBQVNDLEdBRTlF LEdBRUlyTCxHQUZBc0wsRUE9CkFXckcsT0FBT3NHLFdBQ2xCQyxFQUFRQyxPQUFPRCxPQUFTLEdB QU1uUixHQUFTbUIsSUEyQjNDLE9BeEJBNFAsR0FBVTdPLEVBQT0KRW1QLFNBQVVOLE9BQ2xCMVEs U0FBY0EsRUFDZGtGLFNBQWMsV0FDVjRMLEVBQU16RyxPQUNOdUcsRUFBU0ssT0FBUSxjQUVyQmhN PQosU0FBYyxTQUFVSyxFQUFTMUIsR0FDN0JrTixFQUFNekcsT0FDTnVHLEVBQVNNLFFBQVN0TixN QUkxQjBCLEVBQVUsR0FBSXFMLEc9CkFBY0QsR0FDNUJJLEVBQU1uSSxNQUNGd0ksTUFBVVQsRUFB UVMsT0FBU3RSLEVBQUksdUJBQy9CdVIsS0FBVTlMLEVBQVE5RCxJQT0KQ2xCaUIsTUFBVSxNQUNW cUksT0FBVSxPQUNWdUcsZ0JBQWdCLElBRXBCL0wsRUFBUS9ELFNBQ1IrUCxPQUFPQyxtQkFBcUJq TSxFPQpBR3JCc0wsR0FJUHpRLEVBQTZCLFNBQXNDSCxFQUFVMFEsR0FHN0UsTUFGQUEsR0FBVUEs TUFDVkEsRUFBUVMsTUFBUXRSLEVBQUk9CiwrQ0FDYjRRLEVBQXdCelEsRUFBVTBRLEVBQVNoTSxH QTJCbEQsUUFDSTlELDZCQUE4QkEsRUFDOUI4RCxzQkFBOEJBLEVBRTlCKz0KTCx1QkFBOEJBLEVB QzlCdFEsMkJBQThCQSxFQUM5QkwscUJBQThCQSJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2 YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBzdGF0aWMvbWFwcy9tdmMv bGlicmFyeS9saWJyYXJ5LWZvbGRlcnRvb2xiYXItdmlldy5qcy5tYXAKLS0tIGEvc3RhdGljL21h cHMvbXZjL2xpYnJhcnkvbGlicmFyeS1mb2xkZXJ0b29sYmFyLXZpZXcuanMubWFwCisrKyBiL3N0 YXRpYy9tYXBzL212Yy9saWJyYXJ5L2xpYnJhcnktZm9sZGVydG9vbGJhci12aWV3LmpzLm1hcApA QCAtMSwxICsxLDEgQEAKLXsidmVyc2lvbiI6MywiZmlsZSI6ImxpYnJhcnktZm9sZGVydG9vbGJh ci12aWV3LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zPQpyYy9tdmMvbGlicmFyeS9saWJyYXJ5 LWZvbGRlcnRvb2xiYXItdmlldy5qcyJdLCJuYW1lcyI6WyJkZWZpbmUiLCJtb2RfbWFzdGg9CmVh ZCIsIm1vZF91dGlscyIsIm1vZF90b2FzdHIiLCJtb2RfbGlicmFyeV9tb2RlbCIsIm1vZF9zZWxl Y3QiLCJGb2xkZXJUb29sYj0KYXJWaWV3IiwiQmFja2JvbmUiLCJWaWV3IiwiZXh0ZW5kIiwiZWwi LCJldmVudHMiLCJjbGljayAjdG9vbGJ0bl9jcmVhdGVfZm9sPQpkZXIiLCJjbGljayAjdG9vbGJ0 bl9idWxrX2ltcG9ydCIsImNsaWNrICNpbmNsdWRlX2RlbGV0ZWRfZGF0YXNldHNfY2hrIiwiY2w9 CmljayAjdG9vbGJ0bl9zaG93X2xpYmluZm8iLCJjbGljayAjdG9vbGJ0bl9idWxrX2RlbGV0ZSIs ImNsaWNrICNwYWdlX3NpemVfcD0Kcm9tcHQiLCJkZWZhdWx0cyIsImNhbl9hZGRfbGlicmFyeV9p dGVtIiwiY29udGFpbnNfZmlsZV9vcl9mb2xkZXIiLCJjaGFpbl9jPQphbGxfY29udHJvbCIsInRv dGFsX251bWJlciIsImZhaWxlZF9udW1iZXIiLCJkaXNhYmxlZF9qc3RyZWVfZWxlbWVudCIsIm1v ZGE9CmwiLCJqc3RyZWUiLCJoaXN0b3JpZXMiLCJzZWxlY3RfZ2Vub21lIiwic2VsZWN0X2V4dGVu c2lvbiIsImxpc3RfZXh0ZW5zaW9ucz0KIiwiYXV0byIsImlkIiwidGV4dCIsImRlc2NyaXB0aW9u IiwibGlzdF9nZW5vbWVzIiwiaW5pdGlhbGl6ZSIsIm9wdGlvbnMiLCJ0PQpoaXMiLCJfIiwiZmV0 Y2hFeHRBbmRHZW5vbWVzIiwicmVuZGVyIiwidG9vbGJhcl90ZW1wbGF0ZSIsInRlbXBsYXRlVG9v bEJhciI9CiwidGVtcGxhdGVfZGVmYXVsdHMiLCJpc19hZG1pbiIsImlzX2Fub255bSIsIm11dGlw bGVfYWRkX2RhdGFzZXRfb3B0aW9ucyIsIj0KR2FsYXh5IiwiY3VyclVzZXIiLCJpc0FkbWluIiwi aXNBbm9ueW1vdXMiLCJjb25maWciLCJ1c2VyX2xpYnJhcnlfaW1wb3J0X2RpPQpyIiwiYWxsb3df bGlicmFyeV9wYXRoX3Bhc3RlIiwibGlicmFyeV9pbXBvcnRfZGlyIiwiJGVsIiwiaHRtbCIsInJl bmRlclBhZ2k9Cm5hdG9yIiwicGFnaW5hdG9yX3RlbXBsYXRlIiwidGVtcGxhdGVQYWdpbmF0b3Ii LCJmaW5kIiwic2hvd19wYWdlIiwicGFyc2VJbj0KdCIsInBhZ2VfY291bnQiLCJ0b3RhbF9pdGVt c19jb3VudCIsIml0ZW1zX3Nob3duIiwiY29uZmlndXJlRWxlbWVudHMiLCIkIiwiPQpzaG93Iiwi aGlkZSIsInRvb2x0aXAiLCJjcmVhdGVGb2xkZXJGcm9tTW9kYWwiLCJldmVudCIsInByZXZlbnRE ZWZhdWx0Iiwic3Q9Cm9wUHJvcGFnYXRpb24iLCJzZWxmIiwidGVtcGxhdGUiLCJ0ZW1wbGF0ZU5l d0ZvbGRlckluTW9kYWwiLCJjbG9zaW5nX2V2ZW50cz0KIiwidGl0bGUiLCJib2R5IiwiYnV0dG9u cyIsIkNyZWF0ZSIsImNyZWF0ZV9uZXdfZm9sZGVyX2V2ZW50IiwiQ2xvc2UiLCJmb2xkPQplckRl dGFpbHMiLCJzZXJpYWxpemVfbmV3X2ZvbGRlciIsInZhbGlkYXRlX25ld19mb2xkZXIiLCJmb2xk ZXIiLCJGb2xkZXJBc009Cm9kZWwiLCJ1cmxfaXRlbXMiLCJoaXN0b3J5IiwiZnJhZ21lbnQiLCJz cGxpdCIsImN1cnJlbnRfZm9sZGVyX2lkIiwibGVuZ3RoIj0KLCJ1cmwiLCJ1cmxSb290Iiwic2F2 ZSIsInN1Y2Nlc3MiLCJzZXQiLCJ0eXBlIiwibGlicmFyaWVzIiwiZm9sZGVyTGlzdFZpZXciPQos ImNvbGxlY3Rpb24iLCJhZGQiLCJlcnJvciIsIm1vZGVsIiwicmVzcG9uc2UiLCJyZXNwb25zZUpT T04iLCJlcnJfbXNnIiwibmE9Cm1lIiwidmFsIiwibW9kYWxCdWxrSW1wb3J0IiwiY2hlY2tlZFZh bHVlcyIsImluZm8iLCJyZWZyZXNoVXNlckhpc3Rvcmllc0xpcz0KdCIsInRoYXQiLCJ0ZW1wbGF0 ZUJ1bGtJbXBvcnRJbk1vZGFsIiwibW9kZWxzIiwiSW1wb3J0IiwiaW1wb3J0QWxsSW50b0hpc3Rv PQpyeSIsImNhbGxiYWNrIiwiR2FsYXh5SGlzdG9yaWVzIiwiZmV0Y2giLCJkaXNhYmxlQnV0dG9u IiwiaGlzdG9yeV9pZCIsImhpc3Q9Cm9yeV9uYW1lIiwibGFzdF91c2VkX2hpc3RvcnlfaWQiLCJk YXRhc2V0X2lkcyIsImZvbGRlcl9pZHMiLCJlYWNoIiwicGFyZW50RT0KbGVtZW50IiwiY2xhc3NM aXN0IiwiY29udGFpbnMiLCJwdXNoIiwiZGF0YXNldHNfdG9faW1wb3J0IiwiaSIsImxpYnJhcnlf ZGF0PQphc2V0X2lkIiwiaGlzdG9yeUl0ZW0iLCJIaXN0b3J5SXRlbSIsImNvbnRlbnQiLCJzb3Vy Y2UiLCJsaWJyYXJ5X2ZvbGRlcl9pZCI9CiwiaW5pdENoYWluQ2FsbENvbnRyb2wiLCJhY3Rpb24i LCJqUXVlcnkiLCJnZXRKU09OIiwiZ2FsYXh5X2NvbmZpZyIsInJvb3QiLD0KImNoYWluQ2FsbElt cG9ydGluZ0ludG9IaXN0b3J5IiwidXBkYXRlUHJvZ3Jlc3MiLCJwcm9ncmVzcyIsInByb2dyZXNz U3RlcCIsPQoid2lkdGgiLCJNYXRoIiwicm91bmQiLCJ0eHRfcmVwcmVzZW50YXRpb24iLCJkb3du bG9hZCIsImZvbGRlcl9pZCIsImZvcm1hdCI9Ciwid2luZG93IiwiZGF0YSIsImxkX2lkcyIsInBy b2Nlc3NEb3dubG9hZCIsIm1ldGhvZCIsInBhcmFtIiwiaW5wdXRzIiwicGFpcj0KIiwiYXBwZW5k VG8iLCJzdWJtaXQiLCJyZW1vdmUiLCJhZGRGaWxlc0Zyb21IaXN0b3J5TW9kYWwiLCJ0ZW1wbGF0 ZV9tb2RhbCIsPQoidGVtcGxhdGVBZGRGaWxlc0Zyb21IaXN0b3J5IiwiZm9sZGVyX25hbWUiLCJm dWxsX3BhdGgiLCJBZGQiLCJhZGRBbGxEYXRhc2U9CnRzRnJvbUhpc3RvcnkiLCJjbG9zaW5nX2Nh bGxiYWNrIiwibGlicmFyeV9yb3V0ZXIiLCJiYWNrIiwiZmV0Y2hBbmREaXNwbGF5SD0KaXN0b3J5 Q29udGVudHMiLCJjaGFuZ2UiLCJ0YXJnZXQiLCJ2YWx1ZSIsImltcG9ydEZpbGVzRnJvbVBhdGhN b2RhbCIsInRlbXBsPQphdGVJbXBvcnRQYXRoTW9kYWwiLCJpbXBvcnRGcm9tUGF0aHNDbGlja2Vk IiwibmF2aWdhdGUiLCJ0cmlnZ2VyIiwicmVuZGVyU2U9CmxlY3RCb3hlcyIsImdldCIsImRhdGF0 eXBlcyIsImtleSIsImV4dGVuc2lvbiIsImRlc2NyaXB0aW9uX3VybCIsInNvcnQiLCJhIj0KLCJi IiwidW5zaGlmdCIsImdlbm9tZXMiLCJjc3MiLCJjb250YWluZXIiLCJpbXBvcnRGaWxlc0Zyb21H YWxheHlGb2xkZXJNb2RhPQpsIiwidGVtcGxhdGVCcm93c2VyTW9kYWwiLCJpbXBvcnRGcm9tSnN0 cmVlUGF0aCIsInJlbmRlckpzdHJlZSIsIkpzdHJlZSIsInI9CmVxdWlyZSIsImNvcmUiLCJwbHVn aW5zIiwidHlwZXMiLCJpY29uIiwiZmlsZSIsImNoZWNrYm94IiwidGhyZWVfc3RhdGUiLCJwcj0K ZXNlcnZlX2RpcnMiLCJpcyIsImxpbmtfZGF0YSIsImZpbGVfdHlwZSIsImRia2V5IiwicGF0aHMi LCJ2YWxpZF9wYXRocyIsInRyPQppbW1lZCIsInRyaW0iLCJjaGFpbkNhbGxJbXBvcnRpbmdGb2xk ZXJzIiwidGVtcGxhdGVBZGRpbmdEYXRhc2V0c1Byb2dyZXNzQmE9CnIiLCJ0ZW1wbGF0ZURlbGV0 aW5nRGF0YXNldHNQcm9ncmVzc0JhciIsInRlbXBsYXRlSW1wb3J0SW50b0hpc3RvcnlQcm9ncmVz cz0KQmFyIiwiY29uc29sZSIsInNlbGVjdGVkX25vZGVzIiwiZ2V0X3NlbGVjdGVkIiwic2VsZWN0 aW9uX3R5cGUiLCJ1bmRlZmluZWQiPQosImxpX2F0dHIiLCJmdWxsX3NvdXJjZSIsImNoYWluQ2Fs bEltcG9ydGluZ1VzZXJkaXJGaWxlcyIsImhpc3RvcnlfY29udGVudHM9CiIsIkhpc3RvcnlDb250 ZW50cyIsImhpc3RvcnlfY29udGVudHNfdGVtcGxhdGUiLCJ0ZW1wbGF0ZUhpc3RvcnlDb250ZW50 cyIsIj0KY29udGVudHMiLCJyZXZlcnNlIiwiY2hlY2tlZF9oZGFzIiwiaGlzdG9yeV9kYXRhc2V0 X2lkcyIsImhkYXNfdG9fYWRkIiwiaGlkPQoiLCJoaXN0b3J5X2RhdGFzZXRfaWQiLCJmb2xkZXJf aXRlbSIsIkl0ZW0iLCJmcm9tX2hkYV9pZCIsImNoYWluQ2FsbEFkZGluZ0g9CmRhcyIsImhpc3Rv cnlfaXRlbV9zZXQiLCJwb3BwZWRfaXRlbSIsInBvcCIsIm9uY2xpY2siLCJsb2NhdGlvbiIsIndh cm5pbmciLD0KInByb21pc2UiLCJ3aGVuIiwiZG9uZSIsImZhaWwiLCJwb3N0IiwiaGRhc19zZXQi LCJhZGRlZF9oZGFzIiwiRm9sZGVyIiwiY2hhPQppbkNhbGxEZWxldGluZ0l0ZW1zIiwiaXRlbXNf dG9fZGVsZXRlIiwiZGVsZXRlZF9pdGVtcyIsImRlc3Ryb3kiLCJpdGVtIiwiaW49CmNsdWRlX2Rl bGV0ZWQiLCJ1cGRhdGVkX2l0ZW0iLCJtb2RlbF9jbGFzcyIsImNoZWNrSW5jbHVkZURlbGV0ZWQi LCJmZXRjaEZvbD0KZGVyIiwiY2hlY2tlZCIsImRlbGV0ZVNlbGVjdGVkRGF0YXNldHMiLCJzdWJz dHJpbmciLCJpdGVtc190b3RhbCIsImRhdGFzZXQiPQosInNob3dMaWJJbmZvIiwibGlicmFyeV9p ZCIsImZvbGRlckNvbnRhaW5lciIsImF0dHJpYnV0ZXMiLCJtZXRhZGF0YSIsInBhcmU9Cm50X2xp YnJhcnlfaWQiLCJsaWJyYXJ5IiwibGlicmFyeUxpc3RWaWV3Iiwic2hvd0xpYkluZm9Nb2RhbCIs IkxpYnJhcnkiLCJ0ZT0KbXBsYXRlTGliSW5mb0luTW9kYWwiLCJzaG93SW1wb3J0TW9kYWwiLCJz aG93UGFnZVNpemVQcm9tcHQiLCJmb2xkZXJfcGFnZV9zPQppemUiLCJwcm9tcHQiLCJwcmVmZXJl bmNlcyIsInRtcGxfYXJyYXkiLCJqb2luIl0sIm1hcHBpbmdzIjoiQUFBQUEsUUFDSSxrQkE9CkNB LGNBQ0EsY0FDQSw0QkFDQSxvQkFFSixTQUFVQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxHQUdW LEdBQUlDLEdBQW9CQyxTQT0KQVNDLEtBQUtDLFFBQ3BDQyxHQUFJLFVBRUpDLFFBQ0VDLCtCQUF3 Qyx3QkFDeENDLDZCQUF3QyxrQkFDeENDLHNDQUF3QyxzQkFDPQp4Q0MsOEJBQXdDLGNBQ3hDQyw2 QkFBd0MseUJBQ3hDQywwQkFBd0Msc0JBSTFDQyxVQUNFQyxzQkFBNEIsRUFDNUJDLHlCQUE0Qiw9 CkVBQzVCQyxvQkFDNEJDLGFBQWtCLEVBQ2xCQyxjQUFrQixHQUU5Q0Msd0JBQTRCLFdBRzlCQyxN QUFRLEtBR1JDLE9BQVEsS0FHUj0KQyxVQUFZLEtBR1pDLGNBQWdCLEtBR2hCQyxpQkFBbUIsS0FH bkJDLG1CQUdBQyxNQUNJQyxHQUFjLE9BQ2RDLEtBQWMsY0FDZEMsPQpZQUFjLHNaQVNsQkMsZ0JB RUFDLFdBQVksU0FBU0MsR0FDbkJDLEtBQUtELFFBQVVFLEVBQUVyQixTQUFVbUIsTUFBZUMsS0FB S3A9CkIsVUFDL0NvQixLQUFLRSxxQkFDTEYsS0FBS0csVUFHUEEsT0FBUSxTQUFTSixHQUNmQyxL QUFLRCxRQUFVRSxFQUFFOUIsT0FBUT0KNkIsS0FBS0QsUUFBU0EsRUFDdkMsSUFBSUssR0FBbUJK LEtBQUtLLGtCQUN4QkMsR0FDQVosR0FBSU0sS0FBS0QsUUFBUUwsR0FDPQpqQmEsVUFBVSxFQUNW QyxXQUFXLEVBQ1hDLDZCQUE2QixFQUU3QkMsUUFBT0MsV0FDVEwsRUFBa0JDLFNBQVdHLE9BQU9D LFNBQVM9CkMsVUFDN0NOLEVBQWtCRSxVQUFZRSxPQUFPQyxTQUFTRSxlQUNDLE9BQTFDSCxPQUFP SSxPQUFPQyx5QkFBb0NMLE9BQU9JLE9BQT0KT0UsNEJBQTZCLEdBQThDLE9BQXJDTixPQUFPSSxP QUFPRyxzQkFDdkhYLEVBQWtCRyw2QkFBOEIsSUFHcERULEtBQUtrQixJQUFJPQpDLEtBQUtmLEVB QWlCRSxLQU9qQ2MsZ0JBQWlCLFNBQVVyQixHQUN2QkMsS0FBS0QsUUFBVUUsRUFBRTlCLE9BQVE2 QixLQUFLRCw9ClFBQVNBLEVBQ3ZDLElBQUlzQixHQUFxQnJCLEtBQUtzQixtQkFDOUJ0QixNQUFL a0IsSUFBSUssS0FBTSxxQkFBc0JKLEtBQU1FLD0KR0FDdkMzQixHQUFJTSxLQUFLRCxRQUFRTCxH QUNqQjhCLFVBQVdDLFNBQVV6QixLQUFLRCxRQUFReUIsV0FDbENFLFdBQVlELFNBPQpBVXpCLEtB QUtELFFBQVEyQixZQUNuQ0Msa0JBQW1CM0IsS0FBS0QsUUFBUTRCLGtCQUNoQ0MsWUFBYTVCLEtB QUtELFFBQVE2Qiw9CmdCQUlsQ0Msa0JBQW1CLFNBQVM5QixHQUMxQkMsS0FBS0QsUUFBVUUsRUFB RTlCLE9BQU82QixLQUFLRCxRQUFTQSxHQUVsQ0MsSz0KQUFLRCxRQUFRbEIsd0JBQXlCLEVBQ3hD aUQsRUFBRSxzQkFBc0JDLE9BRXhCRCxFQUFFLHNCQUFzQkUsT0FFdEJoQyxLQUFLRCxRPQpBQVFq QiwyQkFBNEIsR0FDdkM0QixPQUFPQyxTQUNKRCxPQUFPQyxTQUFTRSxlQUluQmlCLEVBQUUseUJB QXlCQyxPQUMzQkQsRUE9CkFFLGdDQUFnQ0UsU0FKbENGLEVBQUUsZ0NBQWdDQyxPQUNsQ0QsRUFB RSx5QkFBeUJDLFNBVS9CRCxFQUFFLGdDQUFnQ0UsT0FDbD0KQ0YsRUFBRSx5QkFBeUJFLFFBRTdC aEMsS0FBS2tCLElBQUlLLEtBQUssaUJBQWlCVSxXQUlqQ0Msc0JBQXVCLFNBQVVDLEdBQy9CPQpB LEVBQU1DLGlCQUNORCxFQUFNRSxpQkFHTixJQUFJQyxHQUFPdEMsS0FDUHVDLEVBQVd2QyxLQUFL d0MsMEJBQ3BCeEMsTUFBS2I9CixNQUFRdUIsT0FBT3ZCLE1BQ3BCYSxLQUFLYixNQUFNNEMsTUFD UFUsZ0JBQWtCLEVBQ2xCQyxNQUFrQixvQkFDbEJDLEtBQWtCSj0KLElBQ2xCSyxTQUNJQyxPQUFj LFdBQVlQLEVBQUtRLDJCQUMvQkMsTUFBYyxXQUFZckMsT0FBT3ZCLE1BQU02QyxZQU1qRGMsd0JB PQpBeUIsV0FDckIsR0FBSUUsR0FBZ0JoRCxLQUFLaUQsc0JBQ3pCLElBQUlqRCxLQUFLa0Qsb0JB QW9CRixHQUFlLENBQ3hDLEdBQUk9CkcsR0FBUyxHQUFJckYsR0FBa0JzRixhQUNuQ0MsV0FBWXBG LFNBQVNxRixRQUFRQyxTQUFTQyxNQUFNLEtBQzVDQyxrQkFBb0JKLD0KVUFBVUEsVUFBVUssT0FB TyxHQUMvQ1AsRUFBT1EsSUFBTVIsRUFBT1MsUUFBVUgsa0JBRTlCTixFQUFPVSxLQUFLYixHQUNW YyxRPQpBQVMsU0FBVVgsR0FDakJ6QyxPQUFPdkIsTUFBTTZDLE9BQ2JuRSxFQUFXaUcsUUFBUSxt QkFDbkJYLEVBQU9ZLEtBQUtDLEtBQVM9CixXQUNyQnRELE9BQU91RCxVQUFVQyxlQUFlQyxXQUFX QyxJQUFJakIsSUFFakRrQixNQUFPLFNBQVNDLEVBQU9DLEdBQ3JCN0QsTz0KQUFPdkIsTUFBTTZD LE9BRVhuRSxFQUFXd0csTUFEd0IsbUJBQTFCRSxHQUFTQyxhQUNERCxFQUFTQyxhQUFhQyxRQUV0 Qiw0QkFLPQp2QjVHLEdBQVd3RyxNQUFNLDRCQUVyQixRQUFPLEdBSVhwQixxQkFBdUIsV0FDbkIs T0FDSXlCLEtBQU01QyxFQUFFLHNCQUFzQjY9CkMsTUFDOUIvRSxZQUFha0MsRUFBRSw2QkFBNkI2 QyxRQUtwRHpCLG9CQUFxQixTQUFTRixHQUMxQixNQUE4QixLQUF2QkEsRUFBYz0KMEIsTUFLekJF LGdCQUFrQixXQUNkLEdBQUlDLEdBQWdCL0MsRUFBRSxpQkFBaUJQLEtBQUssV0FDaEIsS0FBekJz RCxFQUFjbkIsPQpPQUNiN0YsRUFBV2lILEtBQUssd0NBRWhCOUUsS0FBSytFLHlCQUF5QixTQUFT QyxHQUNyQyxHQUFJekMsR0FBV3lDLEVBQUtDLDI9CkJBQ3BCRCxHQUFLN0YsTUFBUXVCLE9BQU92 QixNQUNwQjZGLEVBQUs3RixNQUFNNEMsTUFDUFUsZ0JBQWtCLEVBQ2xCQyxNQUFrQj0KLHNCQUNs QkMsS0FBa0JKLEdBQVVsRCxVQUFZMkYsRUFBSzNGLFVBQVU2RixTQUN2RHRDLFNBQ0l1QyxPQUFj LFdBQVlILEVBQUtJPQosd0JBQy9CckMsTUFBYyxXQUFZckMsT0FBT3ZCLE1BQU02QyxjQU96RCtD LHlCQUEwQixTQUFTTSxHQUNqQyxHQUFJTCxHQUFPaEY9CixJQUNYQSxNQUFLWCxVQUFZLEdBQUl2 QixHQUFrQndILGdCQUN2Q3RGLEtBQUtYLFVBQVVrRyxPQUNiekIsUUFBUyxXQUNQdUIsRT0KQUFT TCxJQUVYWCxNQUFPLFNBQVNDLEVBQU9DLEdBRW5CMUcsRUFBV3dHLE1BRHdCLG1CQUExQkUsR0FB U0MsYUFDREQsRUFBU0MsPQphQUFhQyxRQUV0Qix5QkFTekJXLHFCQUF1QixXQUNyQnBGLEtBQUti LE1BQU1xRyxjQUFjLFNBQ3pCLElBQUlDLEdBQWEzRCxFQUE9CkUsb0RBQW9ENkMsTUFDbkVlLEVB QWU1RCxFQUFFLG9EQUFvRG5DLE1BRXpFSyxNQUFLRCxRQUFRNEYscUJBQXVCRixDQUNwQyxJQT0K QUlHLE1BQ0FDLElBQ0ovRCxHQUFFLGlCQUFpQlAsS0FBSyxZQUFZdUUsS0FBSyxXQUNPLEtBQXhD OUYsS0FBSytGLGNBQWNBLGNBPQpBY3JHLElBQWFNLEtBQUsrRixjQUFjQSxjQUFjQyxVQUFVQyxT QUFTLGVBQ2xHTCxFQUFZTSxLQUFLbEcsS0FBSytGLGNBQWNBLGM9CkFBY3JHLElBQ0gsS0FBeENN LEtBQUsrRixjQUFjQSxjQUFjckcsSUFBYU0sS0FBSytGLGNBQWNBLGNBQWNDLFVBQVVDLFNBQVMs ZT0KQUN6R0osRUFBV0ssS0FBS2xHLEtBQUsrRixjQUFjQSxjQUFjckcsS0FLekQsS0FBSyxHQURE eUcsTUFDS0MsRUFBSVIsRUFBWWxDPQosT0FBUyxFQUFHMEMsR0FBSyxFQUFHQSxJQUFLLENBQzlD LEdBQUlDLEdBQXFCVCxFQUFZUSxHQUNqQ0UsRUFBYyxHQUFJeEksR0E9CkFrQnlJLFdBQ3hDRCxH QUFZM0MsSUFBTTJDLEVBQVkxQyxRQUFVNkIsRUFBYSxZQUNyRGEsRUFBWUUsUUFBVUgsRUFDdEJD LEVBQT0KWUcsT0FBUyxVQUNyQk4sRUFBbUJELEtBQUtJLEdBSzVCLElBQUssR0FBSUYsR0FBSVAs RUFBV25DLE9BQVMsRUFBRzBDLEdBQUssPQpFQUFHQSxJQUFLLENBQzdDLEdBQUlNLEdBQW9CYixF QUFXTyxHQUMvQkUsRUFBYyxHQUFJeEksR0FBa0J5SSxXQUN4Q0QsR0FBWTM9CkMsSUFBTTJDLEVB QVkxQyxRQUFVNkIsRUFBYSxZQUNyRGEsRUFBWUUsUUFBVUUsRUFDdEJKLEVBQVlHLE9BQVMsaUJB Q3JCTixFQT0KQW1CRCxLQUFLSSxHQUc1QnRHLEtBQUsyRyxzQkFBd0JqRCxPQUFReUMsRUFBbUJ6 QyxPQUFRa0QsT0FBUSxhQUFjbEIsYUFBY0EsPQpJQUdwR21CLE9BQU9DLFFBQVNDLGNBQWNDLEtB QU8sNkJBQStCdkIsR0FDcEV6RixLQUFLaUgsOEJBQStCZCxFQUFvQlQsSUFNMUQ9CndCLGVBQWdC LFdBQ1psSCxLQUFLbUgsVUFBWW5ILEtBQUtvSCxhQUN0QnRGLEVBQUcsd0JBQXlCdUYsTUFBT0Ms S0FBS0MsTUFBTz0KdkgsS0FBS21ILFVBQWEsS0FDakVLLG1CQUFxQkYsS0FBS0MsTUFBT3ZILEtB QUttSCxVQUFhLGFBQ25EckYsRUFBRyxvQkFBcUJuPQpDLEtBQU02SCxxQkFRbENDLFNBQVcsU0FB VUMsRUFBV0MsR0FDOUIsR0FBSS9CLE1BQ0FDLElBQ0EvRCxHQUFHLGlCQUFrQlAsS0E9CkFNLFlB QWF1RSxLQUFNLFdBQ0csS0FBeEM5RixLQUFLK0YsY0FBY0EsY0FBY3JHLElBQWFNLEtBQUsrRixj QUFjQSxjQUFjQyxVQT0KQVVDLFNBQVMsZUFDbkdMLEVBQVlNLEtBQU1sRyxLQUFLK0YsY0FBY0Es Y0FBY3JHLElBQ0gsS0FBeENNLEtBQUsrRixjQUFjQSxjPQpBQWNyRyxJQUFhTSxLQUFLK0YsY0FB Y0EsY0FBY0MsVUFBVUMsU0FBUyxlQUMxR0osRUFBV0ssS0FBTWxHLEtBQUsrRixjQUFjQSw9CmNB QWNyRyxLQUc5RCxJQUFJaUUsSUFBUWlFLE9BQU9iLGNBQWdCQSxjQUFjQyxLQUFPLEtBQVEsbUNB QXFDVyxFQUNqR0UsR0FBUz0KQyxPQUFXbEMsRUFBYUMsV0FBZUEsRUFDcEQ3RixNQUFLK0gsZ0JB QWlCcEUsRUFBS2tFLEVBQU0sUUFVbkNFLGdCQUFpQixTQUFVPQpwRSxFQUFLa0UsRUFBTUcsR0FD cEMsR0FBS3JFLEdBQU9rRSxFQUFNLENBRWhCQSxFQUF1QixnQkFBVEEsR0FBb0JBLEVBQU8vRiw9 CkVBQUVtRyxNQUFPSixFQUVsRCxJQUFJSyxHQUFTLEVBQ2JwRyxHQUFFZ0UsS0FBTStCLEVBQUty RSxNQUFPLEtBQU8sV0FDbkIsRz0KQUFJMkUsR0FBT25JLEtBQUt3RCxNQUFPLElBQ3ZCMEUsSUFB USw4QkFBK0JDLEVBQUssR0FBSSxZQUFhQSxFQUFLLEdBQUksU0FHPQo5RXJHLEVBQUUsaUJBQWtC NkIsRUFBSyxjQUFlcUUsR0FBUSxRQUFTLEtBQUtFLEVBQU8sV0FDcEVFLFNBQVUsUUFBU0MsU0FB U0M9CixTQUM3QnpLLEVBQVdpSCxLQUFNLHNDQUVqQmpILEdBQVd3RyxNQUFPLHVCQUl0QmtFLHlC QUEwQixXQUN4QnZJLEtBQUsrRSx5Qj0KQUEwQixTQUFVekMsR0FDdkNBLEVBQUtuRCxNQUFRdUIs T0FBT3ZCLEtBQ3BCLElBQUlxSixHQUFpQmxHLEVBQUttRyw4QkFDdEJDPQosRUFBY3BHLEVBQUt2 QyxRQUFRNEksVUFBVXJHLEVBQUt2QyxRQUFRNEksVUFBVWpGLE9BQVMsR0FBRyxFQUM1RXBCLEdB QUtuRCw9Ck1BQU00QyxNQUNQVSxnQkFBa0IsRUFDbEJDLE1BQWtCLCtDQUFpRGdHLEVBQ25FL0Ys S0FBa0I2RixHQUFnQm5KLFVBQVdpRCxFQT0KQUtqRCxVQUFVNkYsU0FDNUR0QyxTQUNJZ0csSUFB YyxXQUFZdEcsRUFBS3VHLDZCQUMvQjlGLE1BQWMsV0FBWXJDLE9BQU92QixNPQpBQU02QyxTQUUz QzhHLGlCQUFrQixXQUNoQnBJLE9BQU91RCxVQUFVOEUsZUFBZUMsVUFLbEMxRyxFQUFLakQsVUFB VTZGLE9BQU89CnhCLE9BQVMsR0FDakNwQixFQUFLMkcsK0JBQStCM0csRUFBS2pELFVBQVU2RixP QUFPLEdBQUd4RixJQUM3RG9DLEVBQUcscUJBQT0Kc0JvSCxPQUFPLFNBQVMvRyxHQUN2Q0csRUFB SzJHLCtCQUErQjlHLEVBQU1nSCxPQUFPQyxVQUduRHZMLEVBQVd3RyxNQUFPLHdCPQpBU3hCZ0Ys eUJBQTBCLFdBQ3hCLEdBQUlyRSxHQUFPaEYsSUFDWEEsTUFBS2IsTUFBUXVCLE9BQU92QixLQUNw QixJQUFJcUosR0E9CkFpQnhJLEtBQUtzSix5QkFDMUJ0SixNQUFLYixNQUFNNEMsTUFDUFUsZ0JB QWtCLEVBQ2xCQyxNQUFrQiwrQkFDbEJDLEtBQWtCNj0KRixNQUNsQjVGLFNBQ0l1QyxPQUFjLFdB QWFILEVBQUt1RSx1QkFBdUJ2RSxJQUN2RGpDLE1BQWMsV0FBYXJDLE9BQU92QixNQUFNPQo2QyxT QUU1QzhHLGlCQUFrQixXQUVoQnBJLE9BQU91RCxVQUFVOEUsZUFBZVMsU0FBVSxXQUFheEUsRUFB S3RGLElBQU0rSixTQUE9ClMsT0FHakZ6SixLQUFLMEoscUJBT1B4SixtQkFBb0IsV0FDbEIsR0FB SThFLEdBQU9oRixJQUNYcEMsR0FBVStMLEtBQ05oRyxLQT0KQWNpRSxPQUFPYixjQUFnQkEsY0FB Y0MsS0FBTyxLQUFRLHFDQUNsRWxELFFBQVksU0FBVThGLEdBQ04sSUFBS0MsTUFBT0QsR0FDPQpS NUUsRUFBS3hGLGdCQUFnQjBHLE1BQ2pCeEcsR0FBa0JrSyxFQUFVQyxLQUFLQyxVQUNqQ25LLEtB QWtCaUssRUFBVUMsS0FBS0M9CixVQUNqQ2xLLFlBQWtCZ0ssRUFBVUMsS0FBS2pLLFlBQ2pDbUss Z0JBQWtCSCxFQUFVQyxLQUFLRSxpQkFHekMvRSxHQUFLeEYsZz0KQkFBZ0J3SyxLQUFLLFNBQVND LEVBQUdDLEdBQ2xDLE1BQU9ELEdBQUV2SyxHQUFLd0ssRUFBRXhLLEdBQUssRUFBSXVLLEVBQUV2 PQpLLEdBQUt3SyxFQUFFeEssR0FBSyxHQUFLLElBRWhEc0YsRUFBS3hGLGdCQUFnQjJLLFFBQVFu RixFQUFLdkYsU0FHdEQ3QixFQUE9ClUrTCxLQUNOaEcsS0FBVWlFLE9BQU9iLGNBQWdCQSxjQUFj QyxLQUFPLEtBQVEsY0FDOURsRCxRQUFTLFNBQVVzRyxHQUNQLElBQT0KTVAsTUFBT08sR0FDVHBG LEVBQUtuRixhQUFhcUcsTUFDZHhHLEdBQVUwSyxFQUFRUCxLQUFLLEdBQ3ZCbEssS0FBVXlLLEVB QVFQPQosS0FBSyxJQUcvQjdFLEdBQUtuRixhQUFhbUssS0FBSyxTQUFTQyxFQUFHQyxHQUMvQixN QUFPRCxHQUFFdkssR0FBS3dLLEVBQUU9CnhLLEdBQUssRUFBSXVLLEVBQUV2SyxHQUFLd0ssRUFB RXhLLEdBQUssR0FBSyxRQU1sRWdLLGtCQUFtQixXQUtqQixHQUFJMUUsRz0KQUFPaEYsSUFDWEEs TUFBS1YsY0FBZ0IsR0FBSXZCLEdBQVdHLE1BQ2hDbU0sSUFBSyx3QkFDTHhDLEtBQU03QyxFQUFL bkYsYUFDPQpYeUssVUFBVzVKLE9BQU92QixNQUFNK0IsSUFBSUssS0FBTSwwQkFDbEM2SCxNQUFP LE1BRVhwSixLQUFLVCxpQkFBbUIsR0FBSXg9CkIsR0FBV0csTUFDckNtTSxJQUFLLDJCQUNMeEMs S0FBTTdDLEVBQUt4RixnQkFDWDhLLFVBQVc1SixPQUFPdkIsTUFBTStCLElBQT0KSUssS0FBTSw2 QkFDbEM2SCxNQUFPLFVBUVhtQixpQ0FBa0MsU0FBVXhLLEdBQzFDLEdBQUlpRixHQUFPaEYsS0FD UHdJLEVBQWlCPQp4SSxLQUFLd0ssc0JBQzFCeEssTUFBS2IsTUFBUXVCLE9BQU92QixNQUNwQmEs S0FBS2IsTUFBTTRDLE1BQ1RVLGdCQUFrQixFQUM9CmxCQyxNQUFrQixpQ0FDbEJDLEtBQWtCNkYs TUFDbEI1RixTQUNJdUMsT0FBYyxXQUNaSCxFQUFLeUYscUJBQXNCekYsRUFBTWpGLD0KSUFFbkNn RCxNQUFjLFdBQ1pyQyxPQUFPdkIsTUFBTTZDLFNBR25COEcsaUJBQWtCLFdBRWhCcEksT0FBT3VE LFVBQVU4RSxlQUFlPQpTLFNBQVMsV0FBYXhFLEVBQUt0RixJQUFLK0osU0FBUyxPQUk3RXpKLEtB QUswSixvQkFDTDNKLEVBQVFiLHdCQUEwQixVQUNsQ2M9CixLQUFLMEssYUFBYzNLLEdBRW5CK0Is RUFBRyxxQkFBc0JvSCxPQUFRLFNBQVUvRyxHQUNiLDJCQUF0QkEsRUFBTWdILE9BQU9DLD0KT0FD ZnJKLEVBQVFiLHdCQUEwQixVQUNsQzhGLEVBQUswRixhQUFjM0ssR0FDbkIrQixFQUFFLDJCQUEy QkUsT0FDN0JGLEVBQUUsPQo4QkFBOEJFLE9BQ2hDRixFQUFFLHNCQUFzQkUsT0FDeEJGLEVBQUUs eUJBQXlCQyxRQUNLLHlCQUF0QkksRUFBTWdILE9BQU9DLFE9CkFDdkJ0SCxFQUFFLHlCQUF5QkUs T0FDM0JGLEVBQUUsMkJBQTJCQyxPQUM3QkQsRUFBRSxzQkFBc0JDLE9BQ3hCRCxFQUFFLDhCQT0K QThCQyxPQUNoQ2hDLEVBQVFiLHdCQUEwQixRQUNsQzhGLEVBQUswRixhQUFjM0ssT0FZM0IySyxh QUFjLFNBQVUzSyxHQUV0QkMsPQpLQUFLRCxRQUFVRSxFQUFFOUIsT0FBUTZCLEtBQUtELFFBQVNB LEVBQ3ZDLElBQUlvSixHQUFTcEosRUFBUTBHLFFBQVUsVUFDM0I9CnZILEVBQTBCYyxLQUFLRCxR QUFRYix1QkFDM0NjLE1BQUtaLE9BQVMsR0FBSXRCLEdBQWtCNk0sT0FDcEMzSyxLQUFLWixPQUFP dT0KRSxJQUFNM0QsS0FBS1osT0FBT3dFLFFBQ1YsV0FBYXVGLEVBQ2IsMEJBQ2NqSyxFQUNsQ2Ms S0FBS1osT0FBT21HLE9BQ1Z6QixRPQpBQVMsU0FBU1EsR0FFaEI1RyxPQUFRLFNBQVUsV0FBWSxN QUFPbUosVUFFckMrRCxTQUFVLHNCQUF3QixXQUNoQzlJLEVBQUUsbUI9CkFBbUIxQyxPQUFPLFdB QzVCMEMsRUFBRSxtQkFBbUIxQyxRQUNuQnlMLE1BQ0VoRCxLQUFRdkQsR0FFVndHLFNBQVksUUFB UyxZQT0KQ3JCQyxPQUNFNUgsUUFDRTZILEtBQVEsaUJBRVZDLE1BQ0VELEtBQVEsZ0JBR1pFLFVB Q0VDLGFBQWEsUUFLckI5RyxNQUFPLFNBPQpBU0MsRUFBT0MsR0FFbkIxRyxFQUFXd0csTUFEd0Is bUJBQTFCRSxHQUFTQyxhQUNERCxFQUFTQyxhQUFhQyxRQUV0Qix5QkFXekI9CjhFLHVCQUF3QixX QUN0QixHQUFJNkIsR0FBZ0JwTCxLQUFLYixNQUFNK0IsSUFBSUssS0FBSyxzQkFBc0I4SixHQUFH LFlBQzdEQz0KLEVBQVl0TCxLQUFLYixNQUFNK0IsSUFBSUssS0FBSyxrQkFBa0I4SixHQUFHLFlB Q3JERSxFQUFZdkwsS0FBS1QsaUJBQWlCNkosPQpRQUNsQ29DLEVBQVF4TCxLQUFLVixjQUFjOEos UUFDM0JxQyxFQUFRM0osRUFBRSx5QkFBeUI2QyxNQUNuQytHLElBQ0osSUFBS0Q9CixFQUVFLENB Q0x6TCxLQUFLYixNQUFNcUcsY0FBYyxVQUN6QmlHLEVBQVFBLEVBQU1qSSxNQUFNLEtBQ3BCLEtB QUssR0FBSTRDLD0KR0FBSXFGLEVBQU0vSCxPQUFTLEVBQUcwQyxHQUFLLEVBQUdBLElBQ3JDdUYs UUFBVUYsRUFBTXJGLEdBQUd3RixPQUNFLElBQWpCPQpELFFBQVFqSSxRQUNWZ0ksRUFBWXhGLEtB QUt5RixRQUdyQjNMLE1BQUsyRyxzQkFBd0JqRCxPQUFRZ0ksRUFBWWhJLE9BQVFrRCw9Ck9BQVEs b0JBQ2pFNUcsS0FBSzZMLDJCQUE2QkosTUFBT0MsRUFDUE4sY0FBZUEsRUFDZkUsVUFBV0EsRUFD WDdFLE9BQVEsYUFDUj0KOEUsVUFBV0EsRUFDWEMsTUFBT0EsUUFoQnpDM04sR0FBV2lILEtBQUss aURBeUJwQjZCLHFCQUFzQixTQUFVNUcsR0FDOUIsR0FBPQpJd0MsRUFDSixRQUFReEMsRUFBUTZH LFFBQ2QsSUFBSyxrQkFDSHJFLEVBQVd2QyxLQUFLOEwsb0NBQ2hCOUwsS0FBS2IsTUFBTSs9CkIs SUFBSUssS0FBTSxlQUFnQkosS0FBTW9CLEdBQVltRyxZQUFjMUksS0FBS0QsUUFBUTJJLGNBQ2xG LE1BQ0YsS0FBSyxvQkFDSD0KbkcsRUFBV3ZDLEtBQUsrTCxzQ0FDaEIvTCxLQUFLYixNQUFNK0Is SUFBSUssS0FBTSxlQUFnQkosS0FBTW9CLElBQzNDLE1BQ0YsPQpLQUFLLGFBQ0hBLEVBQVd2QyxL QUFLZ00sdUNBQ2hCaE0sS0FBS2IsTUFBTStCLElBQUlLLEtBQU0sZUFBZ0JKLEtBQU1vQixHQUE9 ClltRCxhQUFlM0YsRUFBUTJGLGVBQzlFLE1BQ0YsU0FDRXVHLFFBQVE1SCxNQUFPLDJCQU1uQnJF LEtBQUttSCxTQUFXLEVBQ2hCbj0KSCxLQUFLb0gsYUFBZSxJQUFNckgsRUFBUTJELE9BQ2xDMUQs S0FBS0QsUUFBUWhCLG1CQUFtQkMsYUFBZWUsRUFBUTJELE9BQ3ZEPQoxRCxLQUFLRCxRQUFRaEIs bUJBQW1CRSxjQUFnQixHQVdsRHdMLHFCQUFzQixTQUFXekYsRUFBTWpGLEdBQ3JDLEdBQUltTSxH QUE9CmlCcEssRUFBRyxtQkFBb0IxQyxTQUFTK00sY0FBYyxHQUMvRGYsRUFBZ0JwTCxLQUFLYixN QUFNK0IsSUFBSUssS0FBTSxzQkFBdT0KQjhKLEdBQUksWUFDaEVDLEVBQVl0TCxLQUFLYixNQUFN K0IsSUFBSUssS0FBTSxrQkFBbUI4SixHQUFJLFlBQ3hERSxFQUFZdkwsPQpLQUFLVCxpQkFBaUI2 SixRQUNsQ29DLEVBQVF4TCxLQUFLVixjQUFjOEosUUFDM0JnRCxFQUFpQkYsRUFBZSxHQUFHbEks S0FDbkM9CnlILElBQ0osSUFBS1MsRUFBZXhJLE9BQVMsRUFDM0I3RixFQUFXaUgsS0FBTSx1Q0FD WixDQUNMOUUsS0FBS2IsTUFBTXFHLGNBQT0KZSxTQUMxQixLQUFNLEdBQUlZLEdBQUk4RixFQUFl eEksT0FBUyxFQUFHMEMsR0FBSyxFQUFHQSxJQUNGaUcsU0FBeENILEVBQWU5PQpGLEdBQUdrRyxR QUFRM0QsV0FDN0I4QyxFQUFNdkYsS0FBTWdHLEVBQWU5RixHQUFHa0csUUFBUTNELFVBSTFDLElB REEzSSxLQUE9CksyRyxzQkFBd0JqRCxPQUFRK0gsRUFBTS9ILE9BQVFrRCxPQUFRLG9CQUNuQyxX QUFuQndGLEVBQTZCLENBQ2hDLEdBQUlHLEdBQT0KY3hNLEVBQVEwRyxPQUFTLFNBQ25DekcsTUFB SzZMLDJCQUE2QkosTUFBT0EsRUFDUEwsY0FBZUEsRUFDZkUsVUFBV0EsRUFDWDdFPQosT0FBUThG LEVBQ1JoQixVQUFXQSxFQUNYQyxNQUFPQSxRQUNwQyxJQUF3QixTQUFuQlksRUFBMkIsQ0FDckMs R0FBSUcsR0FBY3g9Ck0sRUFBUTBHLE9BQVMsT0FDbkN6RyxNQUFLd00sZ0NBQWtDZixNQUFRQSxF QUNSRixVQUFXQSxFQUNYQyxNQUFPQSxFQUNQL0UsTz0KQUFROEYsT0FLckR0RCwrQkFBZ0MsU0FB U3hELEdBQ3ZDLEdBQUlnSCxHQUFtQixHQUFJM08sR0FBa0I0TyxpQkFBaUJoTixHQUFHPQorRixJ QUM3RG5ELEVBQU90QyxJQUNYeU0sR0FBaUJsSCxPQUNmekIsUUFBUyxTQUFTMkksR0FDaEIsR0FB SUUsR0FBNEJySyxFQUE9CktzSyx5QkFDckN0SyxHQUFLakQsVUFBVXNLLElBQUlsRSxHQUFZMUIs S0FBSzhJLFNBQWFKLElBQ2pEbkssRUFBS25ELE1BQU0rQj0KLElBQUlLLEtBQUssNkJBQTZCSixL QUFLd0wsR0FBMkJGLGlCQUFrQkEsRUFBaUJ2SCxPQUFPNEgsY0FFN0h6SSxNQUFPLFNBQVNDPQos RUFBT0MsR0FFbkIxRyxFQUFXd0csTUFEd0IsbUJBQTFCRSxHQUFTQyxhQUNERCxFQUFTQyxhQUFh QyxRQUV0Qix5QkFTekJvRSw9CjBCQUE0QixXQUMxQixHQUFJa0UsR0FBZS9NLEtBQUtiLE1BQU0r QixJQUFJSyxLQUFNLDZCQUE4QkEsS0FBTSxZQUN4RXlMLEtBQz0KQUMsSUFDSixJQUFLRixFQUFh ckosT0FBUyxFQUN6QjdGLEVBQVdpSCxLQUFNLDRDQUNaLENBQ0w5RSxLQUFLYixNQUFNcUcsY0FB PQplLE9BQzFCdUgsRUFBYWpILEtBQUssV0FDaEIsR0FBSW9ILEdBQU1wTCxFQUFHOUIsS0FBSytG LGVBQWdCOEIsS0FBTSxLQUNqQ3E9CkYsSUFDSEYsRUFBb0I5RyxLQUFNZ0gsSUFHaEMsS0FBTSxH QUFJOUcsR0FBSTRHLEVBQW9CdEosT0FBUyxFQUFHMEMsR0FBSyxFQT0KQUdBLElBQU0sQ0FDMUQr RyxtQkFBcUJILEVBQW9CNUcsRUFDekMsSUFBSWdILEdBQWMsR0FBSXRQLEdBQWtCdVAsSUFDeENE LEdBPQpBWXpKLEtBQVFpRSxPQUFPYixjQUFnQkEsY0FBY0MsS0FBTyxLQUFRLGVBQWlCaEgsS0FB S0QsUUFBUUwsR0FBSyxZQUMzRzBOLEU9CkFBWXJKLEtBQU91SixZQUFjSCxxQkFDakNGLEVBQVkv RyxLQUFNa0gsR0FFcEJwTixLQUFLMkcsc0JBQXdCakQsT0FBUXVKLEVBQT0KWXZKLE9BQVFrRCxP QUFRLG9CQUNqRTVHLEtBQUt1TixvQkFBcUJOLEtBVTlCaEcsOEJBQStCLFNBQVV1RyxFQUFrQjlI LEdBQ3pEPQosR0FBSXBELEdBQU90QyxLQUNQeU4sRUFBY0QsRUFBaUJFLEtBQ25DLElBQTJCLG1C QUFmRCxHQVNWLE1BUnVELEtBQWxEek4sS0E9CkFLRCxRQUFRaEIsbUJBQW1CRSxjQUNuQ3BCLEVB QVdpRyxRQUFTLDZFQUE4RSxJQUFNNkosUUFBUyxXQUFhL0YsT0FBT2dHLFNBQT0KUyxPQUNwSTVO LEtBQUtELFFBQVFoQixtQkFBbUJFLGdCQUFrQmUsS0FBS0QsUUFBUWhCLG1CQUFtQkMsYUFDNUZu QixFQUFXd0csPQpNQUFPLGtFQUNSckUsS0FBS0QsUUFBUWhCLG1CQUFtQkUsY0FBZ0JlLEtBQUtE LFFBQVFoQixtQkFBbUJDLGNBQzFGbkIsRUFBV2c9ClEsUUFBUyxnR0FBaUcsSUFBTUYsUUFBUyxX QUFhL0YsT0FBT2dHLFNBQVMsT0FFbktsTixPQUFPdkIsTUFBTTZDLFFBQ04sQ0FFVD0KLElBQUk4 TCxHQUFVaE0sRUFBRWlNLEtBQU1OLEVBQVk1SixNQUFRMkMsUUFBU2lILEVBQVlqSCxRQUFTQyxP QUFRZ0gsRUFBWWhIPQosU0FFNUZxSCxHQUFRRSxLQUFNLFdBQ0oxTCxFQUFLNEUsaUJBQ0w1RSxF QUFLMkUsOEJBQStCdUcsRUFBa0I5SCxLQUV2RHVJLEs9CkFBTSxXQUNMM0wsRUFBS3ZDLFFBQVFo QixtQkFBbUJFLGVBQWlCLEVBQ2pEcUQsRUFBSzRFLGlCQUNMNUUsRUFBSzJFLDhCQUErQj0KdUcs RUFBa0I5SCxNQVNsRThHLCtCQUFnQyxTQUFVek0sR0FFeEMsR0FBSWlGLEdBQU9oRixLQUNQeU4s RUFBYzFOLEVBQVEwTCxNPQpBQU1pQyxLQUNoQyxJQUE0QixtQkFBaEJELEdBT1YsTUFOdUQsS0FB bER6TixLQUFLRCxRQUFRaEIsbUJBQW1CRSxlQUNuQ3BCLEU9CkFBV2lHLFFBQVMsbURBQ3BCcEQs T0FBT3ZCLE1BQU02QyxRQUVibkUsRUFBV3dHLE1BQU8sc0JBRWIsQ0FFVCxJQUFJeUosR0FBVT0K aE0sRUFBRWlNLEtBQU1qTSxFQUFFb00sTUFBUXRHLE9BQU9iLGNBQWdCQSxjQUFjQyxLQUFPLEtB QVEsNENBQThDaEMsRUFBS3RGPQosR0FDcEYsV0FBYUssRUFBUTBHLE9BQ3JCLFNBQVdnSCxFQUNY LGNBQWdCMU4sRUFBUXdMLFVBQ3hCLFVBQVl4TCxFQUFReUwsT0E9CkN2RXNDLEdBQVFFLEtBQU0s V0FDSmhKLEVBQUtrQyxpQkFDTGxDLEVBQUt3SCwrQkFBZ0N6TSxLQUV0Q2tPLEtBQU0sV0FDTGpK LD0KRUFBS2pGLFFBQVFoQixtQkFBbUJFLGVBQWlCLEVBQ2pEK0YsRUFBS2tDLGlCQUNMbEMsRUFB S3dILCtCQUFnQ3pNLE1BYWpEOEwsPQowQkFBMkIsU0FBVTlMLEdBRW5DLEdBQUlpRixHQUFPaEYs S0FDUHlOLEVBQWMxTixFQUFRMEwsTUFBTWlDLEtBQ2hDLElBQTBCLG09CkJBQWZELEdBUVQsTUFQ c0QsS0FBbER6TixLQUFLRCxRQUFRaEIsbUJBQW1CRSxlQUNsQ3BCLEVBQVdpRyxRQUFRLHlFQUNu QnBELD0KT0FBT3ZCLE1BQU02QyxRQUdibkUsRUFBV3dHLE1BQU0sc0JBRVosQ0FFVCxJQUFJeUos R0FBVWhNLEVBQUVpTSxLQUFNak0sRUFBPQpFb00sTUFBUXRHLE9BQU9iLGNBQWdCQSxjQUFjQyxL QUFPLEtBQVEsNENBQThDaEMsRUFBS3RGLEdBQ2pGLFdBQWFLLEVBQVEwRyw9Ck9BQ3JCLFNBQVdn SCxFQUNYLGtCQUFvQjFOLEVBQVFxTCxjQUM1QixjQUFnQnJMLEVBQVF1TCxVQUN4QixjQUFnQnZM LEVBQVF3TD0KLFVBQ3hCLFVBQVl4TCxFQUFReUwsT0FDMUVzQyxHQUFRRSxLQUFLLFdBQ0hoSixF QUFLa0MsaUJBQ0xsQyxFQUFLNkcsMEJBQTJCPQo5TCxLQUVqQ2tPLEtBQUssV0FDSmpKLEVBQUtq RixRQUFRaEIsbUJBQW1CRSxlQUFpQixFQUNqRCtGLEVBQUtrQyxpQkFDTGxDLEU9CkFBSzZHLDBC QUEyQjlMLE1BUzVDd04sb0JBQXFCLFNBQVVZLEdBQzdCLEdBQUk3TCxHQUFPdEMsSUFDWEEsTUFB S29PLFdBQWEsRz0KQUFJdFEsR0FBa0J1USxNQUN4QyxJQUFJWixHQUFjVSxFQUFTVCxLQUMzQixJ QUEyQixtQkFBZkQsR0FTVixNQVJ1RCxLQUFsRHpOPQosS0FBS0QsUUFBUWhCLG1CQUFtQkUsY0FD bkNwQixFQUFXaUcsUUFBUyxzREFDVjlELEtBQUtELFFBQVFoQixtQkFBbUJFLGdCQUE9CmtCZSxL QUFLRCxRQUFRaEIsbUJBQW1CQyxhQUM1Rm5CLEVBQVd3RyxNQUFPLGdFQUNSckUsS0FBS0QsUUFB UWhCLG1CQUFtQkUsYz0KQUFnQmUsS0FBS0QsUUFBUWhCLG1CQUFtQkMsY0FDMUZuQixFQUFXZ1Es UUFBUyx5REFFdEJuTixPQUFPdkIsTUFBTTZDLE9BQ05oPQpDLEtBQUtvTyxVQUVkLElBQUlOLEdB QVVoTSxFQUFFaU0sS0FBTU4sRUFBWTVKLE1BQVF5SixZQUFhRyxFQUFZOUQsSUFBSyxpQkE9CkV4 RW1FLEdBQVFFLEtBQU0sU0FBVTFKLEdBQ2Q1RCxPQUFPdUQsVUFBVUMsZUFBZUMsV0FBV0MsSUFB S0UsR0FDaERoQyxFQUFLND0KRSxpQkFDTDVFLEVBQUtpTCxvQkFBcUJZLEtBRTNCRixLQUFNLFdB Q0wzTCxFQUFLdkMsUUFBUWhCLG1CQUFtQkUsZUFBaUIsRUFDPQpqRHFELEVBQUs0RSxpQkFDTDVF LEVBQUtpTCxvQkFBcUJZLE1BU3RDRyx1QkFBd0IsU0FBVUMsR0FDbEMsR0FBSWpNLEdBQU90Qyw9 CklBQ1hBLE1BQUt3TyxjQUFnQixHQUFJMVEsR0FBa0J1USxNQUMzQyxJQUFJWixHQUFjYyxFQUFn QmIsS0FDbEMsSUFBNEIsbUJBQT0KaEJELEdBU1YsTUFSdUQsS0FBbER6TixLQUFLRCxRQUFRaEIs bUJBQW1CRSxjQUNuQ3BCLEVBQVdpRyxRQUFTLGdDQUNWOUQsS0FBPQpLRCxRQUFRaEIsbUJBQW1C RSxnQkFBa0JlLEtBQUtELFFBQVFoQixtQkFBbUJDLGFBQzVGbkIsRUFBV3dHLE1BQU8sbUdBQ1Jy RSw9CktBQUtELFFBQVFoQixtQkFBbUJFLGNBQWdCZSxLQUFLRCxRQUFRaEIsbUJBQW1CQyxjQUMx Rm5CLEVBQVdnUSxRQUFTLDZGQUV0Qj0Kbk4sT0FBT3ZCLE1BQU02QyxPQUNOaEMsS0FBS3dPLGFB RWQsSUFBSVYsR0FBVWhNLEVBQUVpTSxLQUFNTixFQUFZZ0IsVUFFbENYPQosR0FBUUUsS0FBTSxT QUFVVSxHQUlkLEdBSEFoTyxPQUFPdUQsVUFBVUMsZUFBZUMsV0FBV21FLE9BQVFtRixFQUFZL04s SUFDL0Q9CjRDLEVBQUs0RSxpQkFFQXhHLE9BQU91RCxVQUFVQyxlQUFlbkUsUUFBUTRPLGdCQUFp QixDQUM1RCxHQUFJQyxHQUFlLElBQ0QsWT0KQUFkRixFQUFLMUssTUFBMEMsa0JBQXJCMEssRUFB S0csWUFDakNELEVBQWUsR0FBSTlRLEdBQWtCc0YsY0FBZXNMLEdBQzdCLFNBPQpBZEEsRUFBSzFL LE1BQXdDLG1CQUFyQjBLLEVBQUtHLFlBQ3RDRCxFQUFlLEdBQUk5USxHQUFrQnVQLEtBQU1xQixJ QUUzQ3pDLFE9CkFBUTVILE1BQU0sb0NBQ2Q0SCxRQUFRNUgsTUFBTXFLLEVBQUsxSyxNQUFRMEss RUFBS0csY0FFbENuTyxPQUFPdUQsVUFBVUMsZT0KQUFlQyxXQUFXQyxJQUFLd0ssR0FFbER0TSxF QUFLZ00sdUJBQXdCQyxLQUU5Qk4sS0FBTSxXQUNMM0wsRUFBS3ZDLFFBQVFoQixtPQpCQUFtQkUs ZUFBaUIsRUFDakRxRCxFQUFLNEUsaUJBQ0w1RSxFQUFLZ00sdUJBQXdCQyxNQU92Q08sb0JBQXFC LFNBQVMzTSxHQUU9CjFCekIsT0FBT3VELFVBQVVDLGVBQWU2SyxZQUQ5QjVNLEVBQU1nSCxPQUFP NkYsU0FDOEJMLGlCQUFpQixJQUVqQkEsaUJBQWlCLD0KS0FPbEVNLHVCQUF3QixXQUN0QixHQUFJ cEssR0FBZ0IvQyxFQUFFLGlCQUFpQlAsS0FBSyxXQUM1QyxJQUE0QixJQUF6QnNELEVBPQpBY25C LE9BQ2I3RixFQUFXaUgsS0FBSywwREFDYixDQUNMLEdBQUl2QyxHQUFXdkMsS0FBSytMLHFDQUNw Qi9MLE1BQUtiLE1BQVE9CnVCLE9BQU92QixNQUNwQmEsS0FBS2IsTUFBTTRDLE1BQ1BVLGdCQUFr QixFQUNsQkMsTUFBa0IsNkJBQ2xCQyxLQUFrQkosTUFDbD0KQkssU0FDSUcsTUFBYyxXQUFZckMs T0FBT3ZCLE1BQU02QyxXQUkvQ2hDLEtBQUtELFFBQVFoQixtQkFBbUJDLGFBQWUsRUFDL0NnPQpC LEtBQUtELFFBQVFoQixtQkFBbUJFLGNBQWdCLENBRWhELElBQUkyRyxNQUNBQyxJQUNKaEIsR0FB Y2lCLEtBQUssV0FDNkIsS0E9CkF4QzlGLEtBQUsrRixjQUFjQSxjQUFjckcsS0FDeUIsS0FBdERN LEtBQUsrRixjQUFjQSxjQUFjckcsR0FBR3dQLFVBQVUsRUFBRT0KLEdBQ2xEckosRUFBV0ssS0FB S2xHLEtBQUsrRixjQUFjQSxjQUFjckcsSUFFakRrRyxFQUFZTSxLQUFLbEcsS0FBSytGLGNBQWNB PQosY0FBY3JHLE1BSzVELElBQUl5UCxHQUFjdkosRUFBWWxDLE9BQVNtQyxFQUFXbkMsTUFDbEQx RCxNQUFLb0gsYUFBZSxJQUFNK0g9CixFQUMxQm5QLEtBQUttSCxTQUFXLENBSWhCLEtBQUssR0FE RG9ILE1BQ0tuSSxFQUFJUixFQUFZbEMsT0FBUyxFQUFHMEMsR0FBSz0KLEVBQUdBLElBQUssQ0FD OUMsR0FBSWdKLEdBQVUsR0FBSXRSLEdBQWtCdVAsTUFBTTNOLEdBQUdrRyxFQUFZUSxJQUN6RG1J LEdBPQpBZ0JySSxLQUFLa0osR0FFekIsSUFBSyxHQUFJaEosR0FBSVAsRUFBV25DLE9BQVMsRUFB RzBDLEdBQUssRUFBR0EsSUFBSyxDQUM9CjdDLEdBQUlqRCxHQUFTLEdBQUlyRixHQUFrQnNGLGVB QWUxRCxHQUFHbUcsRUFBV08sSUFDaEVtSSxHQUFnQnJJLEtBQUsvQyxHQT0KR3pCbkQsS0FBS0Qs UUFBUWhCLG1CQUFtQkMsYUFBZW1RLEVBQVl6TCxPQUUzRDFELEtBQUtzTyx1QkFBdUJDLEtBS2hD YyxZQUFhPQosV0FDWCxHQUFJQyxHQUFhNU8sT0FBT3VELFVBQVVDLGVBQWVxTCxnQkFBZ0JDLFdB QVdDLFNBQVNDLGtCQUNqRkMsRUFBVSxLQUM9ClYzSyxFQUFPaEYsSUFDOEIsUUFBckNVLE9BQU91 RCxVQUFVMkwsaUJBQ25CRCxFQUFValAsT0FBT3VELFVBQVUyTCxnQkFBZ0J6TD0KLFdBQVd3RixJ QUFJMkYsR0FDMUR0UCxLQUFLNlAsaUJBQWlCRixLQUV0QkEsRUFBVSxHQUFJN1IsR0FBa0JnUyxT QUFTcFEsR0FBPQpJNFAsSUFDN0NLLEVBQVFwSyxPQUNOekIsUUFBUyxXQUNQa0IsRUFBSzZLLGlC QUFpQkYsSUFFeEJ0TCxNQUFPLFNBQVNDLEVBQU89CkMsR0FFbkIxRyxFQUFXd0csTUFEd0IsbUJB QTFCRSxHQUFTQyxhQUNERCxFQUFTQyxhQUFhQyxRQUV0QiwwQkFPM0JvTCxpQkFBaz0KQixTQUFT RixHQUN6QixHQUFJcE4sR0FBV3ZDLEtBQUsrUCx3QkFDcEIvUCxNQUFLYixNQUFRdUIsT0FBT3ZC LE1BQ3BCYSxLQUFLPQpiLE1BQU00QyxNQUNQVSxnQkFBa0IsRUFDbEJDLE1BQWtCLHNCQUNsQkMs S0FBa0JKLEdBQVVvTixRQUFRQSxJQUNwQy9NLFNBQ0k9CkcsTUFBYyxXQUFZckMsT0FBT3ZCLE1B QU02QyxZQUtqRGdPLGdCQUFpQixTQUFTalEsR0FDeEIsT0FBT0EsRUFBUTBHLFFBQ2IsST0KQUFL LFVBQ0h6RyxLQUFLdUksMEJBQ0wsTUFDRixLQUFLLFlBQ0h2SSxLQUFLdUssa0NBQW9DOUQsT0FB USxhQUNqRCxNQUNGLEtBPQpBSyxPQUNIekcsS0FBS3FKLDBCQUNMLE1BQ0YsS0FBSyxVQUNIckos S0FBS3VLLGtDQUFvQzlELE9BQVEsV0FDakQsTUFDRixTQUM9CkUvRixPQUFPdUQsVUFBVThFLGVB QWVDLE9BQ2hDbkwsRUFBV3dHLE1BQU0sNEJBUXZCNEwsbUJBQW9CLFdBQ2xCLEdBQUlDLEdBQT0K bUJDLE9BQVEsOENBQStDelAsT0FBT3VELFVBQVVtTSxZQUFZekcsSUFBSyxvQkFDckYsT0FBcEJ1 RyxHQUFnQ0EsR0FBb0J6TyxTPQpBQVV5TyxLQUNqRXhQLE9BQU91RCxVQUFVbU0sWUFBWXJNLEtB QU9tTSxpQkFBb0J6TyxTQUFVeU8sS0FDbEV4UCxPQUFPdUQsVUE9CkFVQyxlQUFlL0QsUUFBVVQs R0FBSU0sS0FBS0QsUUFBUUwsR0FBSThCLFVBQVcsTUFJaEZuQixnQkFBaUIsV0F1RWYsTUF0RUFn UT0KLGVBR0FBLFdBQVduSyxLQUFLLHlDQUVoQm1LLFdBQVduSyxLQUFLLCtCQUNoQm1LLFdBQVdu SyxLQUFLLDBDQUNoQm1LLFdBQVduPQpLLEtBQUssbURBQ2hCbUssV0FBV25LLEtBQUssb0VBRWhC bUssV0FBV25LLEtBQUsscUJBQ2hCbUssV0FBV25LLEtBQUssdUdBQ2g9CkJtSyxXQUFXbkssS0FB SyxXQUNoQm1LLFdBQVduSyxLQUFLLHNGQUNoQm1LLFdBQVduSyxLQUFLLFlBQ2hCbUssV0FBV25L LEtBQT0KSyxVQUNoQm1LLFdBQVduSyxLQUFLLHdSQUVoQm1LLFdBQVduSyxLQUFLLDJDQUNoQm1L LFdBQVduSyxLQUFLLHNFQUNoQm1LLFdBPQpBV25LLEtBQUssMElBQ2hCbUssV0FBV25LLEtBQUss c0dBQ2hCbUssV0FBV25LLEtBQUssa0JBQ2hCbUssV0FBV25LLEtBQUssK0M9CkFDaEJtSyxXQUFX bkssS0FBSyxrRkFDaEJtSyxXQUFXbkssS0FBSyw4REFDaEJtSyxXQUFXbkssS0FBSyx5RkFDaEJt SyxXQUFXbj0KSyxLQUFLLFdBQ2hCbUssV0FBV25LLEtBQUssc0RBRWhCbUssV0FBV25LLEtBQUss Z0NBQ2hCbUssV0FBV25LLEtBQUssbURBRWhCPQptSyxXQUFXbkssS0FBSyx5REFDaEJtSyxXQUFX bkssS0FBSyx1RkFDaEJtSyxXQUFXbkssS0FBSyxXQUVoQm1LLFdBQVduSyxLQUE9Ckssc0RBQ2hC bUssV0FBV25LLEtBQUssMkVBQ2hCbUssV0FBV25LLEtBQUssV0FDaEJtSyxXQUFXbkssS0FBSyxX QUNoQm1LLFdBQT0KV25LLEtBQUssY0FDaEJtSyxXQUFXbkssS0FBSyxhQUNoQm1LLFdBQVduSyxL QUFLLGtCQUNoQm1LLFdBQVduSyxLQUFLLHdRQUNoPQpCbUssV0FBV25LLEtBQUssV0FFaEJtSyxX QUFXbkssS0FBSyx3UkFDaEJtSyxXQUFXbkssS0FBSyw4R0FDaEJtSyxXQUFXbkssS0E9CkFLLDRK QUNoQm1LLFdBQVduSyxLQUFLLGtGQUNoQm1LLFdBQVduSyxLQUFLLGtCQUNoQm1LLFdBQVduSyxL QUFLLCtDQUNoQm1LLD0KV0FBV25LLEtBQUssMkVBQ2hCbUssV0FBV25LLEtBQUssMkVBQ2hCbUss V0FBV25LLEtBQUssd0VBQ2hCbUssV0FBV25LLEtBQUssPQpjQUNoQm1LLFdBQVduSyxLQUFLLGFB Q2hCbUssV0FBV25LLEtBQUssdVJBQ2hCbUssV0FBV25LLEtBQUssdVFBQ2hCbUssV0FBV249Ckss S0FBSyx1VEFDaEJtSyxXQUFXbkssS0FBSyxXQUNoQm1LLFdBQVduSyxLQUFLLFdBR2hCbUssV0FB V25LLEtBQUssb0NBQ2hCbT0KSyxXQUFXbkssS0FBSyxXQUNoQm1LLFdBQVduSyxLQUFLLFVBR1Rq RyxFQUFFc0MsU0FBUzhOLFdBQVdDLEtBQUssTUFHcENQLHVCPQpBQXdCLFdBY3RCLE1BYkFNLGVB RUFBLFdBQVduSyxLQUFLLDZCQUNoQm1LLFdBQVduSyxLQUFLLDBCQUNoQm1LLFdBQVduSyxLQUE9 CksscUNBQ2hCbUssV0FBV25LLEtBQUssaUNBQ2hCbUssV0FBV25LLEtBQUssNENBQ2hCbUssV0FB V25LLEtBQUssOEJBQ2hCbUssVz0KQUFXbkssS0FBSyx5Q0FDaEJtSyxXQUFXbkssS0FBSyxnSkFF aEJtSyxXQUFXbkssS0FBSyxVQUVUakcsRUFBRXNDLFNBQVM4TixXPQpBQVdDLEtBQUssTUFHcEM5 Tix5QkFBMEIsV0FVeEIsTUFUQTZOLGVBRUFBLFdBQVduSyxLQUFLLCtCQUNoQm1LLFdBQVduSyxL QUE9CkssVUFDaEJtSyxXQUFXbkssS0FBSywrREFDaEJtSyxXQUFXbkssS0FBSyw2RUFDaEJtSyxX QUFXbkssS0FBSyxXQUNoQm1LLFdBQT0KV25LLEtBQUssVUFFVGpHLEVBQUVzQyxTQUFTOE4sV0FB V0MsS0FBSyxNQUlwQ3JMLDBCQUE0QixXQUMxQixHQUFJb0wsS0FXSixPPQpBVEFBLEdBQVduSyxL QUFLLGlHQUNoQm1LLEVBQVduSyxLQUFLLG9CQUNoQm1LLEVBQVduSyxLQUFLLHlHQUNoQm1LLEVB QVduSyw9CktBQUssa0RBQ2hCbUssRUFBV25LLEtBQUssMkdBQ2hCbUssRUFBV25LLEtBQUssZ0JB Q2hCbUssRUFBV25LLEtBQUssYUFDaEJtSz0KLEVBQVduSyxLQUFLLFdBRVRqRyxFQUFFc0MsU0FB UzhOLEVBQVdDLEtBQUssTUFHcEN0RSxxQ0FBdUMsV0FDckMsR0FBSXFFLEtBPQpZSixPQVZBQSxH QUFXbkssS0FBSyw2QkFDaEJtSyxFQUFXbkssS0FBSywrRUFDaEJtSyxFQUFXbkssS0FBSyxVQUNo Qm1LLEVBQVc9Cm5LLEtBQUssMEJBQ2hCbUssRUFBV25LLEtBQUssb0pBQ2hCbUssRUFBV25LLEtB QUssMkRBQ2hCbUssRUFBV25LLEtBQUssYUFDaD0KQm1LLEVBQVduSyxLQUFLLFVBQ2hCbUssRUFB V25LLEtBQUssSUFFVGpHLEVBQUVzQyxTQUFTOE4sRUFBV0MsS0FBSyxNQUdwQ3hFPQosa0NBQW1D LFdBQ2pDLEdBQUl1RSxLQVlKLE9BVkFBLEdBQVduSyxLQUFLLDZCQUNoQm1LLEVBQVduSyxLQUFL LGtGQUNoQm1LLEU9CkFBV25LLEtBQUssVUFDaEJtSyxFQUFXbkssS0FBSywwQkFDaEJtSyxFQUFX bkssS0FBSyxvSkFDaEJtSyxFQUFXbkssS0FBSywyRD0KQUNoQm1LLEVBQVduSyxLQUFLLGFBQ2hC bUssRUFBV25LLEtBQUssVUFDaEJtSyxFQUFXbkssS0FBSyxJQUVUakcsRUFBRXNDLFNBPQpBUzhO LEVBQVdDLEtBQUssTUFHcEN2RSxvQ0FBcUMsV0FDbkMsR0FBSXNFLEtBV0osT0FUQUEsR0FBV25L LEtBQUssNkJBQ2hCbUs9CixFQUFXbkssS0FBSyxVQUNoQm1LLEVBQVduSyxLQUFLLDBCQUNoQm1L LEVBQVduSyxLQUFLLG9KQUNoQm1LLEVBQVduSyxLQUFLLD0KMkRBQ2hCbUssRUFBV25LLEtBQUss YUFDaEJtSyxFQUFXbkssS0FBSyxVQUNoQm1LLEVBQVduSyxLQUFLLElBRVRqRyxFQUFFc0MsPQpT QUFTOE4sRUFBV0MsS0FBSyxNQUdwQzlGLHFCQUFzQixXQUNwQixHQUFJNkYsS0FvQ0osT0FsQ0FB LEdBQVduSyxLQUFLLGlDQUM9CmhCbUssRUFBV25LLEtBQUssMkhBQ2hCbUssRUFBV25LLEtBQUss eUxBR2hCbUssRUFBV25LLEtBQUssb0NBQ2hCbUssRUFBV25LLD0KS0FBSyxnQ0FDaEJtSyxFQUFX bkssS0FBSyx1SUFDaEJtSyxFQUFXbkssS0FBSyxZQUNoQm1LLEVBQVduSyxLQUFLLGdDQUNoQm1L PQosRUFBV25LLEtBQUssdUhBQ2hCbUssRUFBV25LLEtBQUssWUFDaEJtSyxFQUFXbkssS0FBSyxV QUNoQm1LLEVBQVduSyxLQUFLLG89CkNBQ2hCbUssRUFBV25LLEtBQUssbUZBQ2hCbUssRUFBV25L LEtBQUssNkZBQ2hCbUssRUFBV25LLEtBQUssZ0NBQ2hCbUssRUFBVz0KbkssS0FBSyxhQUNoQm1L LEVBQVduSyxLQUFLLDJFQUNoQm1LLEVBQVduSyxLQUFLLHVFQUNoQm1LLEVBQVduSyxLQUFLLGlD QUNoPQpCbUssRUFBV25LLEtBQUssYUFDaEJtSyxFQUFXbkssS0FBSyxVQUNoQm1LLEVBQVduSyxL QUFLLDZCQUNoQm1LLEVBQVduSyxLQUE9CkssVUFFaEJtSyxFQUFXbkssS0FBSyxVQUNoQm1LLEVB QVduSyxLQUFLLG1GQUNoQm1LLEVBQVduSyxLQUFLLFNBQ2hCbUssRUFBVz0KbkssS0FBSyxpRkFD aEJtSyxFQUFXbkssS0FBSywrRUFDaEJtSyxFQUFXbkssS0FBSyxVQUNoQm1LLEVBQVduSyxLQUFL LFVBRVRqPQpHLEVBQUVzQyxTQUFTOE4sRUFBV0MsS0FBSyxNQUdwQ2hILHdCQUF5QixXQUN2QixH QUFJK0csS0EyQkosT0F6QkFBLEdBQVduSyw9CktBQUssaUNBQ2hCbUssRUFBV25LLEtBQUssZ0tB RWhCbUssRUFBV25LLEtBQUssdUNBQ2hCbUssRUFBV25LLEtBQUssNkRBQ2hCbT0KSyxFQUFXbkss S0FBSyw2RkFDaEJtSyxFQUFXbkssS0FBSyxnQ0FDaEJtSyxFQUFXbkssS0FBSyxhQUNoQm1LLEVB QVduSyxLQUFLPQoscURBQ2hCbUssRUFBV25LLEtBQUssdUVBQ2hCbUssRUFBV25LLEtBQUssaUNB Q2hCbUssRUFBV25LLEtBQUssYUFDaEJtSyxFQUE9ClduSyxLQUFLLFVBRWhCbUssRUFBV25LLEtB QUssOEpBRWhCbUssRUFBV25LLEtBQUssVUFDaEJtSyxFQUFXbkssS0FBSyxtRkFDaD0KQm1LLEVB QVduSyxLQUFLLFNBQ2hCbUssRUFBV25LLEtBQUssaUZBQ2hCbUssRUFBV25LLEtBQUssK0VBQ2hC bUssRUFBV25LLEtBPQpBSyxVQUVoQm1LLEVBQVduSyxLQUFLLFVBRVRqRyxFQUFFc0MsU0FBUzhO LEVBQVdDLEtBQUssTUFHcEM3SCw0QkFBNkIsV0FDM0I9CixHQUFJNEgsS0FpQkosT0FmQUEsR0FB V25LLEtBQUssOEJBQ2hCbUssRUFBV25LLEtBQUssdUNBQ2hCbUssRUFBV25LLEtBQUsscT0KQkFD aEJtSyxFQUFXbkssS0FBSywrRUFDaEJtSyxFQUFXbkssS0FBSyxrREFDaEJtSyxFQUFXbkssS0FB SztBQUNoQm1LLEVBQVduPQpLLEtBQUssZ0JBQ2hCbUssRUFBV25LLEtBQUssYUFDaEJtSyxFQUFX bkssS0FBSyxVQUNoQm1LLEVBQVduSyxLQUFLLFNBQ2hCbUs9CixFQUFXbkssS0FBSyx1Q0FFaEJt SyxFQUFXbkssS0FBSyxVQUNoQm1LLEVBQVduSyxLQUFLLFVBRVRqRyxFQUFFc0MsU0FBUzhOLD0K RUFBV0MsS0FBSyxNQUdwQzFELHdCQUF5QixXQUN2QixHQUFJeUQsS0FXSixPQVRBQSxHQUFXbkss S0FBSyxtREFDaEJtSyxFQUFXPQpuSyxLQUFLLFFBQ2hCbUssRUFBV25LLEtBQUssNERBQ2hCbUss RUFBV25LLEtBQUssMkRBQ2hCbUssRUFBV25LLEtBQUsscUlBQ2g9CkJtSyxFQUFXbkssS0FBSyxV QUNoQm1LLEVBQVduSyxLQUFLLGNBQ2hCbUssRUFBV25LLEtBQUssU0FFVGpHLEVBQUVzQyxTQUFT OD0KTixFQUFXQyxLQUFLLE1BR3BDaFAsa0JBQW1CLFdBK0JqQixNQTlCQStPLGVBRUFBLFdBQVdu SyxLQUFLLDRDQUNoQm1LLFdBQVduPQpLLEtBQUssK0NBQ2hCbUssV0FBV25LLEtBQUssNERBQ2hC bUssV0FBV25LLEtBQUssaUhBQ2hCbUssV0FBV25LLEtBQUssd0lBQ2g9CkJtSyxXQUFXbkssS0FB Syw2QkFDaEJtSyxXQUFXbkssS0FBSyxpSEFDaEJtSyxXQUFXbkssS0FBSywySEFDaEJtSyxXQUFX bkssSz0KQUFLLHNCQUNoQm1LLFdBQVduSyxLQUFLLHlCQUNoQm1LLFdBQVduSyxLQUFLLDhIQUNo Qm1LLFdBQVduSyxLQUFLLG9JQUNoQm1LPQosV0FBV25LLEtBQUssa0JBQ2hCbUssV0FBV25LLEtB QUssOEJBQ2hCbUssV0FBV25LLEtBQUssa0dBQ2hCbUssV0FBV25LLEtBQUs9CixnQkFDaEJtSyxX QUFXbkssS0FBSyxvREFDaEJtSyxXQUFXbkssS0FBSyx1SEFDaEJtSyxXQUFXbkssS0FBSyxzSUFD aEJtSyxXQT0KQVduSyxLQUFLLHlCQUNoQm1LLFdBQVduSyxLQUFLLHFJQUNoQm1LLFdBQVduSyxL QUFLLHVKQUNoQm1LLFdBQVduSyxLQUFLLGtCPQpBQ2hCbUssV0FBV25LLEtBQUssWUFDaEJtSyxX QUFXbkssS0FBSyxhQUNoQm1LLFdBQVduSyxLQUFLLG1NQUNoQm1LLFdBQVduSyw9CktBQUssY0FF VGpHLEVBQUVzQyxTQUFTOE4sV0FBV0MsS0FBSyxPQUt0QyxRQUNJdFMsa0JBQW1CQSJ9ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQoreyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicmFyeS1mb2xk ZXJ0b29sYmFyLXZpZXcuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3M9CnJjL212Yy9saWJyYXJ5 L2xpYnJhcnktZm9sZGVydG9vbGJhci12aWV3LmpzIl0sIm5hbWVzIjpbImRlZmluZSIsIm1vZF9t YXN0aD0KZWFkIiwibW9kX3V0aWxzIiwibW9kX3RvYXN0ciIsIm1vZF9saWJyYXJ5X21vZGVsIiwi bW9kX3NlbGVjdCIsIkZvbGRlclRvb2xiPQphclZpZXciLCJCYWNrYm9uZSIsIlZpZXciLCJleHRl bmQiLCJlbCIsImV2ZW50cyIsImNsaWNrICN0b29sYnRuX2NyZWF0ZV9mb2w9CmRlciIsImNsaWNr ICN0b29sYnRuX2J1bGtfaW1wb3J0IiwiY2xpY2sgI2luY2x1ZGVfZGVsZXRlZF9kYXRhc2V0c19j aGsiLCJjbD0KaWNrICN0b29sYnRuX3Nob3dfbGliaW5mbyIsImNsaWNrICN0b29sYnRuX2J1bGtf ZGVsZXRlIiwiY2xpY2sgI3BhZ2Vfc2l6ZV9wPQpyb21wdCIsImRlZmF1bHRzIiwiY2FuX2FkZF9s aWJyYXJ5X2l0ZW0iLCJjb250YWluc19maWxlX29yX2ZvbGRlciIsImNoYWluX2M9CmFsbF9jb250 cm9sIiwidG90YWxfbnVtYmVyIiwiZmFpbGVkX251bWJlciIsImRpc2FibGVkX2pzdHJlZV9lbGVt ZW50IiwibW9kYT0KbCIsImpzdHJlZSIsImhpc3RvcmllcyIsInNlbGVjdF9nZW5vbWUiLCJzZWxl Y3RfZXh0ZW5zaW9uIiwibGlzdF9leHRlbnNpb25zPQoiLCJhdXRvIiwiaWQiLCJ0ZXh0IiwiZGVz Y3JpcHRpb24iLCJsaXN0X2dlbm9tZXMiLCJpbml0aWFsaXplIiwib3B0aW9ucyIsInQ9CmhpcyIs Il8iLCJmZXRjaEV4dEFuZEdlbm9tZXMiLCJyZW5kZXIiLCJ0b29sYmFyX3RlbXBsYXRlIiwidGVt cGxhdGVUb29sQmFyIj0KLCJ0ZW1wbGF0ZV9kZWZhdWx0cyIsImlzX2FkbWluIiwiaXNfYW5vbnlt IiwibXV0aXBsZV9hZGRfZGF0YXNldF9vcHRpb25zIiwiPQpHYWxheHkiLCJjdXJyVXNlciIsImlz QWRtaW4iLCJpc0Fub255bW91cyIsImNvbmZpZyIsInVzZXJfbGlicmFyeV9pbXBvcnRfZGk9CnIi LCJhbGxvd19saWJyYXJ5X3BhdGhfcGFzdGUiLCJsaWJyYXJ5X2ltcG9ydF9kaXIiLCIkZWwiLCJo dG1sIiwicmVuZGVyUGFnaT0KbmF0b3IiLCJwYWdpbmF0b3JfdGVtcGxhdGUiLCJ0ZW1wbGF0ZVBh Z2luYXRvciIsImZpbmQiLCJzaG93X3BhZ2UiLCJwYXJzZUluPQp0IiwicGFnZV9jb3VudCIsInRv dGFsX2l0ZW1zX2NvdW50IiwiaXRlbXNfc2hvd24iLCJjb25maWd1cmVFbGVtZW50cyIsIiQiLCI9 CnNob3ciLCJoaWRlIiwidG9vbHRpcCIsImNyZWF0ZUZvbGRlckZyb21Nb2RhbCIsImV2ZW50Iiwi cHJldmVudERlZmF1bHQiLCJzdD0Kb3BQcm9wYWdhdGlvbiIsInNlbGYiLCJ0ZW1wbGF0ZSIsInRl bXBsYXRlTmV3Rm9sZGVySW5Nb2RhbCIsImNsb3NpbmdfZXZlbnRzPQoiLCJ0aXRsZSIsImJvZHki LCJidXR0b25zIiwiQ3JlYXRlIiwiY3JlYXRlX25ld19mb2xkZXJfZXZlbnQiLCJDbG9zZSIsImZv bGQ9CmVyRGV0YWlscyIsInNlcmlhbGl6ZV9uZXdfZm9sZGVyIiwidmFsaWRhdGVfbmV3X2ZvbGRl ciIsImZvbGRlciIsIkZvbGRlckFzTT0Kb2RlbCIsInVybF9pdGVtcyIsImhpc3RvcnkiLCJmcmFn bWVudCIsInNwbGl0IiwiY3VycmVudF9mb2xkZXJfaWQiLCJsZW5ndGgiPQosInVybCIsInVybFJv b3QiLCJzYXZlIiwic3VjY2VzcyIsInNldCIsInR5cGUiLCJsaWJyYXJpZXMiLCJmb2xkZXJMaXN0 VmlldyI9CiwiY29sbGVjdGlvbiIsImFkZCIsImVycm9yIiwibW9kZWwiLCJyZXNwb25zZSIsInJl c3BvbnNlSlNPTiIsImVycl9tc2ciLCJuYT0KbWUiLCJ2YWwiLCJtb2RhbEJ1bGtJbXBvcnQiLCJj aGVja2VkVmFsdWVzIiwiaW5mbyIsInJlZnJlc2hVc2VySGlzdG9yaWVzTGlzPQp0IiwidGhhdCIs InRlbXBsYXRlQnVsa0ltcG9ydEluTW9kYWwiLCJtb2RlbHMiLCJJbXBvcnQiLCJpbXBvcnRBbGxJ bnRvSGlzdG89CnJ5IiwiY2FsbGJhY2siLCJHYWxheHlIaXN0b3JpZXMiLCJmZXRjaCIsImRpc2Fi bGVCdXR0b24iLCJoaXN0b3J5X2lkIiwiaGlzdD0Kb3J5X25hbWUiLCJsYXN0X3VzZWRfaGlzdG9y eV9pZCIsImRhdGFzZXRfaWRzIiwiZm9sZGVyX2lkcyIsImVhY2giLCJwYXJlbnRFPQpsZW1lbnQi LCJjbGFzc0xpc3QiLCJjb250YWlucyIsInB1c2giLCJkYXRhc2V0c190b19pbXBvcnQiLCJpIiwi bGlicmFyeV9kYXQ9CmFzZXRfaWQiLCJoaXN0b3J5SXRlbSIsIkhpc3RvcnlJdGVtIiwiY29udGVu dCIsInNvdXJjZSIsImxpYnJhcnlfZm9sZGVyX2lkIj0KLCJpbml0Q2hhaW5DYWxsQ29udHJvbCIs ImFjdGlvbiIsImpRdWVyeSIsImdldEpTT04iLCJnYWxheHlfY29uZmlnIiwicm9vdCIsPQoiY2hh aW5DYWxsSW1wb3J0aW5nSW50b0hpc3RvcnkiLCJ1cGRhdGVQcm9ncmVzcyIsInByb2dyZXNzIiwi cHJvZ3Jlc3NTdGVwIiw9CiJ3aWR0aCIsIk1hdGgiLCJyb3VuZCIsInR4dF9yZXByZXNlbnRhdGlv biIsImRvd25sb2FkIiwiZm9sZGVyX2lkIiwiZm9ybWF0Ij0KLCJ3aW5kb3ciLCJkYXRhIiwibGRf aWRzIiwicHJvY2Vzc0Rvd25sb2FkIiwibWV0aG9kIiwicGFyYW0iLCJpbnB1dHMiLCJwYWlyPQoi LCJhcHBlbmRUbyIsInN1Ym1pdCIsInJlbW92ZSIsImFkZEZpbGVzRnJvbUhpc3RvcnlNb2RhbCIs InRlbXBsYXRlX21vZGFsIiw9CiJ0ZW1wbGF0ZUFkZEZpbGVzRnJvbUhpc3RvcnkiLCJmb2xkZXJf bmFtZSIsImZ1bGxfcGF0aCIsIkFkZCIsImFkZEFsbERhdGFzZT0KdHNGcm9tSGlzdG9yeSIsImNs b3NpbmdfY2FsbGJhY2siLCJsaWJyYXJ5X3JvdXRlciIsImJhY2siLCJmZXRjaEFuZERpc3BsYXlI PQppc3RvcnlDb250ZW50cyIsImNoYW5nZSIsInRhcmdldCIsInZhbHVlIiwiaW1wb3J0RmlsZXNG cm9tUGF0aE1vZGFsIiwidGVtcGw9CmF0ZUltcG9ydFBhdGhNb2RhbCIsImltcG9ydEZyb21QYXRo c0NsaWNrZWQiLCJuYXZpZ2F0ZSIsInRyaWdnZXIiLCJyZW5kZXJTZT0KbGVjdEJveGVzIiwiZ2V0 IiwiZGF0YXR5cGVzIiwia2V5IiwiZXh0ZW5zaW9uIiwiZGVzY3JpcHRpb25fdXJsIiwic29ydCIs ImEiPQosImIiLCJ1bnNoaWZ0IiwiZ2Vub21lcyIsImNzcyIsImNvbnRhaW5lciIsImltcG9ydEZp bGVzRnJvbUdhbGF4eUZvbGRlck1vZGE9CmwiLCJ0ZW1wbGF0ZUJyb3dzZXJNb2RhbCIsImltcG9y dEZyb21Kc3RyZWVQYXRoIiwicmVuZGVySnN0cmVlIiwiSnN0cmVlIiwicj0KZXF1aXJlIiwiY29y ZSIsInBsdWdpbnMiLCJ0eXBlcyIsImljb24iLCJmaWxlIiwiY2hlY2tib3giLCJ0aHJlZV9zdGF0 ZSIsImVyPQpyX2NvZGUiLCJ3YXJuaW5nIiwicHJlc2VydmVfZGlycyIsImlzIiwibGlua19kYXRh IiwiZmlsZV90eXBlIiwiZGJrZXkiLCJwYXQ9CmhzIiwidmFsaWRfcGF0aHMiLCJ0cmltbWVkIiwi dHJpbSIsImNoYWluQ2FsbEltcG9ydGluZ0ZvbGRlcnMiLCJ0ZW1wbGF0ZUFkZD0KaW5nRGF0YXNl dHNQcm9ncmVzc0JhciIsInRlbXBsYXRlRGVsZXRpbmdEYXRhc2V0c1Byb2dyZXNzQmFyIiwidGVt cGxhdGVJbXBvPQpydEludG9IaXN0b3J5UHJvZ3Jlc3NCYXIiLCJjb25zb2xlIiwic2VsZWN0ZWRf bm9kZXMiLCJnZXRfc2VsZWN0ZWQiLCJzZWxlY3Q9Cmlvbl90eXBlIiwidW5kZWZpbmVkIiwibGlf YXR0ciIsImZ1bGxfc291cmNlIiwiY2hhaW5DYWxsSW1wb3J0aW5nVXNlcmRpckZpbD0KZXMiLCJo aXN0b3J5X2NvbnRlbnRzIiwiSGlzdG9yeUNvbnRlbnRzIiwiaGlzdG9yeV9jb250ZW50c190ZW1w bGF0ZSIsInRlbXBsPQphdGVIaXN0b3J5Q29udGVudHMiLCJjb250ZW50cyIsInJldmVyc2UiLCJj aGVja2VkX2hkYXMiLCJoaXN0b3J5X2RhdGFzZXRfaWQ9CnMiLCJoZGFzX3RvX2FkZCIsImhpZCIs Imhpc3RvcnlfZGF0YXNldF9pZCIsImZvbGRlcl9pdGVtIiwiSXRlbSIsImZyb21faGRhXz0KaWQi LCJjaGFpbkNhbGxBZGRpbmdIZGFzIiwiaGlzdG9yeV9pdGVtX3NldCIsInBvcHBlZF9pdGVtIiwi cG9wIiwib25jbGljayIsPQoibG9jYXRpb24iLCJwcm9taXNlIiwid2hlbiIsImRvbmUiLCJmYWls IiwicG9zdCIsImhkYXNfc2V0IiwiYWRkZWRfaGRhcyIsIkY9Cm9sZGVyIiwiY2hhaW5DYWxsRGVs ZXRpbmdJdGVtcyIsIml0ZW1zX3RvX2RlbGV0ZSIsImRlbGV0ZWRfaXRlbXMiLCJkZXN0cm95Ij0K LCJpdGVtIiwiaW5jbHVkZV9kZWxldGVkIiwidXBkYXRlZF9pdGVtIiwibW9kZWxfY2xhc3MiLCJj aGVja0luY2x1ZGVEZWxldGVkPQoiLCJmZXRjaEZvbGRlciIsImNoZWNrZWQiLCJkZWxldGVTZWxl Y3RlZERhdGFzZXRzIiwic3Vic3RyaW5nIiwiaXRlbXNfdG90YWw9CiIsImRhdGFzZXQiLCJzaG93 TGliSW5mbyIsImxpYnJhcnlfaWQiLCJmb2xkZXJDb250YWluZXIiLCJhdHRyaWJ1dGVzIiwibWV0 YT0KZGF0YSIsInBhcmVudF9saWJyYXJ5X2lkIiwibGlicmFyeSIsImxpYnJhcnlMaXN0VmlldyIs InNob3dMaWJJbmZvTW9kYWwiLCJMPQppYnJhcnkiLCJ0ZW1wbGF0ZUxpYkluZm9Jbk1vZGFsIiwi c2hvd0ltcG9ydE1vZGFsIiwic2hvd1BhZ2VTaXplUHJvbXB0IiwiZm89CmxkZXJfcGFnZV9zaXpl IiwicHJvbXB0IiwicHJlZmVyZW5jZXMiLCJ0bXBsX2FycmF5Iiwiam9pbiJdLCJtYXBwaW5ncyI6 IkFBQT0KQUEsUUFDSSxrQkFDQSxjQUNBLGNBQ0EsNEJBQ0Esb0JBRUosU0FBVUMsRUFDQUMsRUFD QUMsRUFDQUMsRUFDQUMsR0FHVixHQUFJPQpDLEdBQW9CQyxTQUFTQyxLQUFLQyxRQUNwQ0MsR0FB SSxVQUVKQyxRQUNFQywrQkFBd0Msd0JBQ3hDQyw2QkFBd0Msa0JBQ3hDQyw9CnNDQUF3QyxzQkFD eENDLDhCQUF3QyxjQUN4Q0MsNkJBQXdDLHlCQUN4Q0MsMEJBQXdDLHNCQUkxQ0MsVUFDRUMsc0JB QTRCLEVBQz0KNUJDLHlCQUE0QixFQUM1QkMsb0JBQzRCQyxhQUFrQixFQUNsQkMsY0FBa0IsR0FF OUNDLHdCQUE0QixXQUc5QkMsTUFBUSxLQUdSPQpDLE9BQVEsS0FHUkMsVUFBWSxLQUdaQyxjQUFn QixLQUdoQkMsaUJBQW1CLEtBR25CQyxtQkFHQUMsTUFDSUMsR0FBYyxPQUNkQyw9CktBQWMsY0FD ZEMsWUFBYyxzWkFTbEJDLGdCQUVBQyxXQUFZLFNBQVNDLEdBQ25CQyxLQUFLRCxRQUFVRSxFQUFF ckIsU0FBVW1CLD0KTUFBZUMsS0FBS3BCLFVBQy9Db0IsS0FBS0UscUJBQ0xGLEtBQUtHLFVBR1BB LE9BQVEsU0FBU0osR0FDZkMsS0FBS0QsUUFBVUUsPQpFQUFFOUIsT0FBUTZCLEtBQUtELFFBQVNB LEVBQ3ZDLElBQUlLLEdBQW1CSixLQUFLSyxrQkFDeEJDLEdBQ0FaLEdBQUlNLEtBQUs9CkQsUUFB UUwsR0FDakJhLFVBQVUsRUFDVkMsV0FBVyxFQUNYQyw2QkFBNkIsRUFFN0JDLFFBQU9DLFdBQ1RM LEVBQWtCQyxTQUFXRz0KLE9BQU9DLFNBQVNDLFVBQzdDTixFQUFrQkUsVUFBWUUsT0FBT0MsU0FB U0UsZUFDQyxPQUExQ0gsT0FBT0ksT0FBT0MseUJBQW9DPQpMLE9BQU9JLE9BQU9FLDRCQUE2QixH QUE4QyxPQUFyQ04sT0FBT0ksT0FBT0csc0JBQ3ZIWCxFQUFrQkcsNkJBQThCLElBR3BEVCw9CktB QUtrQixJQUFJQyxLQUFLZixFQUFpQkUsS0FPakNjLGdCQUFpQixTQUFVckIsR0FDdkJDLEtBQUtE LFFBQVVFLEVBQUU5QixPQT0KQVE2QixLQUFLRCxRQUFTQSxFQUN2QyxJQUFJc0IsR0FBcUJyQixL QUFLc0IsbUJBQzlCdEIsTUFBS2tCLElBQUlLLEtBQU0scUJBPQpBc0JKLEtBQU1FLEdBQ3ZDM0Is R0FBSU0sS0FBS0QsUUFBUUwsR0FDakI4QixVQUFXQyxTQUFVekIsS0FBS0QsUUFBUXlCLFdBQ2w9 CkNFLFdBQVlELFNBQVV6QixLQUFLRCxRQUFRMkIsWUFDbkNDLGtCQUFtQjNCLEtBQUtELFFBQVE0 QixrQkFDaENDLFlBQWE1QixLQT0KQUtELFFBQVE2QixnQkFJbENDLGtCQUFtQixTQUFTOUIsR0FD MUJDLEtBQUtELFFBQVVFLEVBQUU5QixPQUFPNkIsS0FBS0QsUUFBPQpTQSxHQUVsQ0MsS0FBS0Qs UUFBUWxCLHdCQUF5QixFQUN4Q2lELEVBQUUsc0JBQXNCQyxPQUV4QkQsRUFBRSxzQkFBc0JFLE9B RXQ9CkJoQyxLQUFLRCxRQUFRakIsMkJBQTRCLEdBQ3ZDNEIsT0FBT0MsU0FDSkQsT0FBT0MsU0FB U0UsZUFJbkJpQixFQUFFLHlCQUF5Qj0KQyxPQUMzQkQsRUFBRSxnQ0FBZ0NFLFNBSmxDRixFQUFF LGdDQUFnQ0MsT0FDbENELEVBQUUseUJBQXlCQyxTQVUvQkQsRUFBRSxnPQpDQUFnQ0UsT0FDbENG LEVBQUUseUJBQXlCRSxRQUU3QmhDLEtBQUtrQixJQUFJSyxLQUFLLGlCQUFpQlUsV0FJakNDLHNC QUF1Qiw9ClNBQVVDLEdBQy9CQSxFQUFNQyxpQkFDTkQsRUFBTUUsaUJBR04sSUFBSUMsR0FBT3RD LEtBQ1B1QyxFQUFXdkMsS0FBS3dDLDBCQT0KQ3BCeEMsTUFBS2IsTUFBUXVCLE9BQU92QixNQUNw QmEsS0FBS2IsTUFBTTRDLE1BQ1BVLGdCQUFrQixFQUNsQkMsTUFBa0Isb0JBPQpDbEJDLEtBQWtC SixJQUNsQkssU0FDSUMsT0FBYyxXQUFZUCxFQUFLUSwyQkFDL0JDLE1BQWMsV0FBWXJDLE9BQU92 QixNQUFNNkM9CixZQU1qRGMsd0JBQXlCLFdBQ3JCLEdBQUlFLEdBQWdCaEQsS0FBS2lELHNCQUN6 QixJQUFJakQsS0FBS2tELG9CQUFvQkYsR0FBZT0KLENBQ3hDLEdBQUlHLEdBQVMsR0FBSXJGLEdB QWtCc0YsYUFDbkNDLFdBQVlwRixTQUFTcUYsUUFBUUMsU0FBU0MsTUFBTSxLQUM1PQpDQyxrQkFB b0JKLFVBQVVBLFVBQVVLLE9BQU8sR0FDL0NQLEVBQU9RLElBQU1SLEVBQU9TLFFBQVVILGtCQUU5 Qk4sRUFBT1UsS0E9CkFLYixHQUNWYyxRQUFTLFNBQVVYLEdBQ2pCekMsT0FBT3ZCLE1BQU02QyxP QUNibkUsRUFBV2lHLFFBQVEsbUJBQ25CWCxFQUFPWT0KLEtBQUtDLEtBQVMsV0FDckJ0RCxPQUFP dUQsVUFBVUMsZUFBZUMsV0FBV0MsSUFBSWpCLElBRWpEa0IsTUFBTyxTQUFTQyxFQUFPPQpDLEdB Q3JCN0QsT0FBT3ZCLE1BQU02QyxPQUVYbkUsRUFBV3dHLE1BRHdCLG1CQUExQkUsR0FBU0MsYUFD REQsRUFBU0MsYUFBYUM9CixRQUV0Qiw0QkFLdkI1RyxHQUFXd0csTUFBTSw0QkFFckIsUUFBTyxH QUlYcEIscUJBQXVCLFdBQ25CLE9BQ0l5QixLQUFNNUMsRT0KQUFFLHNCQUFzQjZDLE1BQzlCL0Us WUFBYWtDLEVBQUUsNkJBQTZCNkMsUUFLcER6QixvQkFBcUIsU0FBU0YsR0FDMUIsTUFBOEIsPQpL QUF2QkEsRUFBYzBCLE1BS3pCRSxnQkFBa0IsV0FDZCxHQUFJQyxHQUFnQi9DLEVBQUUsaUJBQWlC UCxLQUFLLFdBQ2hCLEtBQXo9CkJzRCxFQUFjbkIsT0FDYjdGLEVBQVdpSCxLQUFLLHdDQUVoQjlF LEtBQUsrRSx5QkFBeUIsU0FBU0MsR0FDckMsR0FBSXpDLEdBQT0KV3lDLEVBQUtDLDJCQUNwQkQs R0FBSzdGLE1BQVF1QixPQUFPdkIsTUFDcEI2RixFQUFLN0YsTUFBTTRDLE1BQ1BVLGdCQUFrQixF PQpBQ2xCQyxNQUFrQixzQkFDbEJDLEtBQWtCSixHQUFVbEQsVUFBWTJGLEVBQUszRixVQUFVNkYs U0FDdkR0QyxTQUNJdUMsT0FBYyw9CldBQVlILEVBQUtJLHdCQUMvQnJDLE1BQWMsV0FBWXJDLE9B QU92QixNQUFNNkMsY0FPekQrQyx5QkFBMEIsU0FBU00sR0FDakMsRz0KQUFJTCxHQUFPaEYsSUFD WEEsTUFBS1gsVUFBWSxHQUFJdkIsR0FBa0J3SCxnQkFDdkN0RixLQUFLWCxVQUFVa0csT0FDYnpC LFFBPQpBUyxXQUNQdUIsRUFBU0wsSUFFWFgsTUFBTyxTQUFTQyxFQUFPQyxHQUVuQjFHLEVBQVd3 RyxNQUR3QixtQkFBMUJFLEdBQVNDLGE9CkFDREQsRUFBU0MsYUFBYUMsUUFFdEIseUJBU3pCVyxx QkFBdUIsV0FDckJwRixLQUFLYixNQUFNcUcsY0FBYyxTQUN6QixJQUFJQz0KLEdBQWEzRCxFQUFF LG9EQUFvRDZDLE1BQ25FZSxFQUFlNUQsRUFBRSxvREFBb0RuQyxNQUV6RUssTUFBS0QsUUFBUTRG LHFCQUF1PQpCRixDQUNwQyxJQUFJRyxNQUNBQyxJQUNKL0QsR0FBRSxpQkFBaUJQLEtBQUssWUFB WXVFLEtBQUssV0FDTyxLQUF4QzlGLEtBQUs9CitGLGNBQWNBLGNBQWNyRyxJQUFhTSxLQUFLK0Ys Y0FBY0EsY0FBY0MsVUFBVUMsU0FBUyxlQUNsR0wsRUFBWU0sS0FBS2xHLEtBQT0KSytGLGNBQWNB LGNBQWNyRyxJQUNILEtBQXhDTSxLQUFLK0YsY0FBY0EsY0FBY3JHLElBQWFNLEtBQUsrRixjQUFj QSxjQUFjQyxVPQpBQVVDLFNBQVMsZUFDekdKLEVBQVdLLEtBQUtsRyxLQUFLK0YsY0FBY0EsY0FB Y3JHLEtBS3pELEtBQUssR0FERHlHLE1BQ0tDLEU9CkFBSVIsRUFBWWxDLE9BQVMsRUFBRzBDLEdB QUssRUFBR0EsSUFBSyxDQUM5QyxHQUFJQyxHQUFxQlQsRUFBWVEsR0FDakNFLEVBQT0KYyxHQUFJ eEksR0FBa0J5SSxXQUN4Q0QsR0FBWTNDLElBQU0yQyxFQUFZMUMsUUFBVTZCLEVBQWEsWUFDckRh LEVBQVlFLFFBQVVIPQosRUFDdEJDLEVBQVlHLE9BQVMsVUFDckJOLEVBQW1CRCxLQUFLSSxHQUs1 QixJQUFLLEdBQUlGLEdBQUlQLEVBQVduQyxPQUFTLEU9CkFBRzBDLEdBQUssRUFBR0EsSUFBSyxD QUM3QyxHQUFJTSxHQUFvQmIsRUFBV08sR0FDL0JFLEVBQWMsR0FBSXhJLEdBQWtCeUksVz0KQUN4 Q0QsR0FBWTNDLElBQU0yQyxFQUFZMUMsUUFBVTZCLEVBQWEsWUFDckRhLEVBQVlFLFFBQVVFLEVB Q3RCSixFQUFZRyxPQUFTPQosaUJBQ3JCTixFQUFtQkQsS0FBS0ksR0FHNUJ0RyxLQUFLMkcsc0JB QXdCakQsT0FBUXlDLEVBQW1CekMsT0FBUWtELE9BQVEsYUE9CkFjbEIsYUFBY0EsSUFHcEdtQixP QUFPQyxRQUFTQyxjQUFjQyxLQUFPLDZCQUErQnZCLEdBQ3BFekYsS0FBS2lILDhCQUErQmQsRT0K QUFvQlQsSUFNMUR3QixlQUFnQixXQUNabEgsS0FBS21ILFVBQVluSCxLQUFLb0gsYUFDdEJ0RixF QUFHLHdCQUF5QnVGLE1BQU9DPQosS0FBS0MsTUFBT3ZILEtBQUttSCxVQUFhLEtBQ2pFSyxtQkFB cUJGLEtBQUtDLE1BQU92SCxLQUFLbUgsVUFBYSxhQUNuRHJGLEU9CkFBRyxvQkFBcUJuQyxLQUFN NkgscUJBUWxDQyxTQUFXLFNBQVVDLEVBQVdDLEdBQzlCLEdBQUkvQixNQUNBQyxJQUNBL0QsR0FB Rz0KLGlCQUFrQlAsS0FBTSxZQUFhdUUsS0FBTSxXQUNHLEtBQXhDOUYsS0FBSytGLGNBQWNBLGNB QWNyRyxJQUFhTSxLQUFLK0YsY0FBPQpjQSxjQUFjQyxVQUFVQyxTQUFTLGVBQ25HTCxFQUFZTSxL QUFNbEcsS0FBSytGLGNBQWNBLGNBQWNyRyxJQUNILEtBQXhDTSxLQUE9CksrRixjQUFjQSxjQUFj ckcsSUFBYU0sS0FBSytGLGNBQWNBLGNBQWNDLFVBQVVDLFNBQVMsZUFDMUdKLEVBQVdLLEtBQU1s RyxLQT0KQUsrRixjQUFjQSxjQUFjckcsS0FHOUQsSUFBSWlFLElBQVFpRSxPQUFPYixjQUFnQkEs Y0FBY0MsS0FBTyxLQUFRLG1DQUFxQ1csPQpFQUNqR0UsR0FBU0MsT0FBV2xDLEVBQWFDLFdBQWVB LEVBQ3BEN0YsTUFBSytILGdCQUFpQnBFLEVBQUtrRSxFQUFNLFFBVW5DRSw9CmdCQUFpQixTQUFV cEUsRUFBS2tFLEVBQU1HLEdBQ3BDLEdBQUtyRSxHQUFPa0UsRUFBTSxDQUVoQkEsRUFBdUIsZ0JB QVRBLEdBQT0Kb0JBLEVBQU8vRixFQUFFbUcsTUFBT0osRUFFbEQsSUFBSUssR0FBUyxFQUNicEcs R0FBRWdFLEtBQU0rQixFQUFLckUsTUFBTyxLPQpBQU8sV0FDbkIsR0FBSTJFLEdBQU9uSSxLQUFL d0QsTUFBTyxJQUN2QjBFLElBQVEsOEJBQStCQyxFQUFLLEdBQUksWUFBYUEsRUE9CkFLLEdBQUks U0FHOUVyRyxFQUFFLGlCQUFrQjZCLEVBQUssY0FBZXFFLEdBQVEsUUFBUyxLQUFLRSxFQUFPLFdB Q3BFRSxTQUFVLD0KUUFBU0MsU0FBU0MsU0FDN0J6SyxFQUFXaUgsS0FBTSxzQ0FFakJqSCxHQUFX d0csTUFBTyx1QkFJdEJrRSx5QkFBMEIsV0FDeEJ2PQpJLEtBQUsrRSx5QkFBMEIsU0FBVXpDLEdB Q3ZDQSxFQUFLbkQsTUFBUXVCLE9BQU92QixLQUNwQixJQUFJcUosR0FBaUJsRyxFQUE9CkttRyw4 QkFDdEJDLEVBQWNwRyxFQUFLdkMsUUFBUTRJLFVBQVVyRyxFQUFLdkMsUUFBUTRJLFVBQVVqRixP QUFTLEdBQUcsRUFDNT0KRXBCLEdBQUtuRCxNQUFNNEMsTUFDUFUsZ0JBQWtCLEVBQ2xCQyxNQUFr QiwrQ0FBaURnRyxFQUNuRS9GLEtBQWtCNkYsR0FBZ0JuPQpKLFVBQVdpRCxFQUFLakQsVUFBVTZG LFNBQzVEdEMsU0FDSWdHLElBQWMsV0FBWXRHLEVBQUt1Ryw2QkFDL0I5RixNQUFjLFdBQVk9CnJD LE9BQU92QixNQUFNNkMsU0FFM0M4RyxpQkFBa0IsV0FDaEJwSSxPQUFPdUQsVUFBVThFLGVBQWVD LFVBS2xDMUcsRUFBS2pELD0KVUFBVTZGLE9BQU94QixPQUFTLEdBQ2pDcEIsRUFBSzJHLCtCQUEr QjNHLEVBQUtqRCxVQUFVNkYsT0FBTyxHQUFHeEYsSUFDN0RvPQpDLEVBQUcscUJBQXNCb0gsT0FB TyxTQUFTL0csR0FDdkNHLEVBQUsyRywrQkFBK0I5RyxFQUFNZ0gsT0FBT0MsVUFHbkR2TCxFQUE9 Cld3RyxNQUFPLHdCQVN4QmdGLHlCQUEwQixXQUN4QixHQUFJckUsR0FBT2hGLElBQ1hBLE1BQUti LE1BQVF1QixPQUFPdkIsS0FDcD0KQixJQUFJcUosR0FBaUJ4SSxLQUFLc0oseUJBQzFCdEosTUFB S2IsTUFBTTRDLE1BQ1BVLGdCQUFrQixFQUNsQkMsTUFBa0IsK0JBPQpDbEJDLEtBQWtCNkYsTUFD bEI1RixTQUNJdUMsT0FBYyxXQUFhSCxFQUFLdUUsdUJBQXVCdkUsSUFDdkRqQyxNQUFjLFdBQWFy Qyw9Ck9BQU92QixNQUFNNkMsU0FFNUM4RyxpQkFBa0IsV0FFaEJwSSxPQUFPdUQsVUFBVThFLGVB QWVTLFNBQVUsV0FBYXhFLEVBQUt0Rj0KLElBQU0rSixTQUFTLE9BR2pGekosS0FBSzBKLHFCQU9Q eEosbUJBQW9CLFdBQ2xCLEdBQUk4RSxHQUFPaEYsSUFDWHBDLEdBQVUrPQpMLEtBQ05oRyxLQUFj aUUsT0FBT2IsY0FBZ0JBLGNBQWNDLEtBQU8sS0FBUSxxQ0FDbEVsRCxRQUFZLFNBQVU4RixHQUNO LElBQUs9CkMsTUFBT0QsR0FDUjVFLEVBQUt4RixnQkFBZ0IwRyxNQUNqQnhHLEdBQWtCa0ssRUFB VUMsS0FBS0MsVUFDakNuSyxLQUFrQmlLLD0KRUFBVUMsS0FBS0MsVUFDakNsSyxZQUFrQmdLLEVB QVVDLEtBQUtqSyxZQUNqQ21LLGdCQUFrQkgsRUFBVUMsS0FBS0UsaUJBR3pDPQovRSxHQUFLeEYs Z0JBQWdCd0ssS0FBSyxTQUFTQyxFQUFHQyxHQUNsQyxNQUFPRCxHQUFFdkssR0FBS3dLLEVBQUV4 SyxHQUFLLEU9CkFBSXVLLEVBQUV2SyxHQUFLd0ssRUFBRXhLLEdBQUssR0FBSyxJQUVoRHNGLEVB QUt4RixnQkFBZ0IySyxRQUFRbkYsRUFBS3ZGLD0KU0FHdEQ3QixFQUFVK0wsS0FDTmhHLEtBQVVp RSxPQUFPYixjQUFnQkEsY0FBY0MsS0FBTyxLQUFRLGNBQzlEbEQsUUFBUyxTQUFVPQpzRyxHQUNQ LElBQU1QLE1BQU9PLEdBQ1RwRixFQUFLbkYsYUFBYXFHLE1BQ2R4RyxHQUFVMEssRUFBUVAsS0FB SyxHQUN2QmxLLEs9CkFBVXlLLEVBQVFQLEtBQUssSUFHL0I3RSxHQUFLbkYsYUFBYW1LLEtBQUss U0FBU0MsRUFBR0MsR0FDL0IsTUFBT0QsR0FBRXZLLD0KR0FBS3dLLEVBQUV4SyxHQUFLLEVBQUl1 SyxFQUFFdkssR0FBS3dLLEVBQUV4SyxHQUFLLEdBQUssUUFNbEVnSyxrQkFBbUIsV0FLPQpqQixH QUFJMUUsR0FBT2hGLElBQ1hBLE1BQUtWLGNBQWdCLEdBQUl2QixHQUFXRyxNQUNoQ21NLElBQUss d0JBQ0x4QyxLQUFNN0M9CixFQUFLbkYsYUFDWHlLLFVBQVc1SixPQUFPdkIsTUFBTStCLElBQUlL LEtBQU0sMEJBQ2xDNkgsTUFBTyxNQUVYcEosS0FBS1QsaT0KQkFBbUIsR0FBSXhCLEdBQVdHLE1B Q3JDbU0sSUFBSywyQkFDTHhDLEtBQU03QyxFQUFLeEYsZ0JBQ1g4SyxVQUFXNUosT0FBT3ZCPQos TUFBTStCLElBQUlLLEtBQU0sNkJBQ2xDNkgsTUFBTyxVQVFYbUIsaUNBQWtDLFNBQVV4SyxHQUMx QyxHQUFJaUYsR0FBT2hGLEs9CkFDUHdJLEVBQWlCeEksS0FBS3dLLHNCQUMxQnhLLE1BQUtiLE1B QVF1QixPQUFPdkIsTUFDcEJhLEtBQUtiLE1BQU00QyxNQUNUVT0KLGdCQUFrQixFQUNsQkMsTUFB a0IsaUNBQ2xCQyxLQUFrQjZGLE1BQ2xCNUYsU0FDSXVDLE9BQWMsV0FDWkgsRUFBS3lGLHFCQUFz PQpCekYsRUFBTWpGLElBRW5DZ0QsTUFBYyxXQUNackMsT0FBT3ZCLE1BQU02QyxTQUduQjhHLGlC QUFrQixXQUVoQnBJLE9BQU91RCw9ClVBQVU4RSxlQUFlUyxTQUFTLFdBQWF4RSxFQUFLdEYsSUFB SytKLFNBQVMsT0FJN0V6SixLQUFLMEosb0JBQ0wzSixFQUFRYix3Qj0KQUEwQixVQUNsQ2MsS0FB SzBLLGFBQWMzSyxHQUVuQitCLEVBQUcscUJBQXNCb0gsT0FBUSxTQUFVL0csR0FDYiwyQkFBdEJB LEVBPQpBTWdILE9BQU9DLE9BQ2ZySixFQUFRYix3QkFBMEIsVUFDbEM4RixFQUFLMEYsYUFBYzNL LEdBQ25CK0IsRUFBRSwyQkFBMkJFLE89CkFDN0JGLEVBQUUsOEJBQThCRSxPQUNoQ0YsRUFBRSxz QkFBc0JFLE9BQ3hCRixFQUFFLHlCQUF5QkMsUUFDSyx5QkFBdEJJLEVBQT0KTWdILE9BQU9DLFFB Q3ZCdEgsRUFBRSx5QkFBeUJFLE9BQzNCRixFQUFFLDJCQUEyQkMsT0FDN0JELEVBQUUsc0JBQXNC QyxPQUN4PQpCRCxFQUFFLDhCQUE4QkMsT0FDaENoQyxFQUFRYix3QkFBMEIsUUFDbEM4RixFQUFL MEYsYUFBYzNLLE9BWTNCMkssYUFBYyxTQUE9ClUzSyxHQUV0QkMsS0FBS0QsUUFBVUUsRUFBRTlC LE9BQVE2QixLQUFLRCxRQUFTQSxFQUN2QyxJQUFJb0osR0FBU3BKLEVBQVEwRz0KLFFBQVUsVUFD M0J2SCxFQUEwQmMsS0FBS0QsUUFBUWIsdUJBQzNDYyxNQUFLWixPQUFTLEdBQUl0QixHQUFrQjZN LE9BQ3BDM0ssPQpLQUFLWixPQUFPdUUsSUFBTTNELEtBQUtaLE9BQU93RSxRQUNWLFdBQWF1RixF QUNiLDBCQUNjakssRUFDbENjLEtBQUtaLE9BQU89Cm1HLE9BQ1Z6QixRQUFTLFNBQVNRLEdBRWhC NUcsT0FBUSxTQUFVLFdBQVksTUFBT21KLFVBRXJDK0QsU0FBVSxzQkFBd0IsV0FDaD0KQzlJLEVB QUUsbUJBQW1CMUMsT0FBTyxXQUM1QjBDLEVBQUUsbUJBQW1CMUMsUUFDbkJ5TCxNQUNFaEQsS0FB UXZELEdBRVZ3RyxTPQpBQVksUUFBUyxZQUNyQkMsT0FDRTVILFFBQ0U2SCxLQUFRLGlCQUVWQyxN QUNFRCxLQUFRLGdCQUdaRSxVQUNFQyxhQUFhLFFBS3I9CkI5RyxNQUFPLFNBQVNDLEVBQU9DLEdB Q2dCLG1CQUExQkEsR0FBU0MsYUFDcUIsU0FBbkNELEVBQVNDLGFBQWE0RyxTQUN4QnZOLD0KRUFB V3dOLFFBQVE5RyxFQUFTQyxhQUFhQyxTQUV6QzVHLEVBQVd3RyxNQUFNRSxFQUFTQyxhQUFhQyxT QUd6QzVHLEVBQVd3RyxNPQpBQU0seUJBV3pCa0YsdUJBQXdCLFdBQ3RCLEdBQUkrQixHQUFnQnRM LEtBQUtiLE1BQU0rQixJQUFJSyxLQUFLLHNCQUFzQmdLLEc9CkFBRyxZQUM3REMsRUFBWXhMLEtB QUtiLE1BQU0rQixJQUFJSyxLQUFLLGtCQUFrQmdLLEdBQUcsWUFDckRFLEVBQVl6TCxLQUFLVD0K LGlCQUFpQjZKLFFBQ2xDc0MsRUFBUTFMLEtBQUtWLGNBQWM4SixRQUMzQnVDLEVBQVE3SixFQUFF LHlCQUF5QjZDLE1BQ25DaUgsPQpJQUNKLElBQUtELEVBRUUsQ0FDTDNMLEtBQUtiLE1BQU1xRyxj QUFjLFVBQ3pCbUcsRUFBUUEsRUFBTW5JLE1BQU0sS0FDcEIsS0E9CkFLLEdBQUk0QyxHQUFJdUYs RUFBTWpJLE9BQVMsRUFBRzBDLEdBQUssRUFBR0EsSUFDckN5RixRQUFVRixFQUFNdkYsR0FBRzBG LD0KT0FDRSxJQUFqQkQsUUFBUW5JLFFBQ1ZrSSxFQUFZMUYsS0FBSzJGLFFBR3JCN0wsTUFBSzJH LHNCQUF3QmpELE9BQVFrSSxFQUFZPQpsSSxPQUFRa0QsT0FBUSxvQkFDakU1RyxLQUFLK0wsMkJB QTZCSixNQUFPQyxFQUNQTixjQUFlQSxFQUNmRSxVQUFXQSxFQUNYL0U9CixPQUFRLGFBQ1JnRixV QUFXQSxFQUNYQyxNQUFPQSxRQWhCekM3TixHQUFXaUgsS0FBSyxpREF5QnBCNkIscUJBQXNCLFNB QVU1Rz0KLEdBQzlCLEdBQUl3QyxFQUNKLFFBQVF4QyxFQUFRNkcsUUFDZCxJQUFLLGtCQUNIckUs RUFBV3ZDLEtBQUtnTSxvQ0FDaEJoTSxLPQpBQUtiLE1BQU0rQixJQUFJSyxLQUFNLGVBQWdCSixL QUFNb0IsR0FBWW1HLFlBQWMxSSxLQUFLRCxRQUFRMkksY0FDbEYsTUFDRiw9CktBQUssb0JBQ0hu RyxFQUFXdkMsS0FBS2lNLHNDQUNoQmpNLEtBQUtiLE1BQU0rQixJQUFJSyxLQUFNLGVBQWdCSixL QUFNb0IsST0KQUMzQyxNQUNGLEtBQUssYUFDSEEsRUFBV3ZDLEtBQUtrTSx1Q0FDaEJsTSxLQUFL YixNQUFNK0IsSUFBSUssS0FBTSxlQUFnQkosPQpLQUFNb0IsR0FBWW1ELGFBQWUzRixFQUFRMkYs ZUFDOUUsTUFDRixTQUNFeUcsUUFBUTlILE1BQU8sMkJBTW5CckUsS0FBS21ILFM9CkFBVyxFQUNo Qm5ILEtBQUtvSCxhQUFlLElBQU1ySCxFQUFRMkQsT0FDbEMxRCxLQUFLRCxRQUFRaEIsbUJBQW1C QyxhQUFlZSxFQT0KQVEyRCxPQUN2RDFELEtBQUtELFFBQVFoQixtQkFBbUJFLGNBQWdCLEdBV2xE d0wscUJBQXNCLFNBQVd6RixFQUFNakYsR0FDckMsPQpHQUFJcU0sR0FBaUJ0SyxFQUFHLG1CQUFv QjFDLFNBQVNpTixjQUFjLEdBQy9EZixFQUFnQnRMLEtBQUtiLE1BQU0rQixJQUFJSyw9CktBQU0s c0JBQXVCZ0ssR0FBSSxZQUNoRUMsRUFBWXhMLEtBQUtiLE1BQU0rQixJQUFJSyxLQUFNLGtCQUFt QmdLLEdBQUksWUFDeD0KREUsRUFBWXpMLEtBQUtULGlCQUFpQjZKLFFBQ2xDc0MsRUFBUTFMLEtB QUtWLGNBQWM4SixRQUMzQmtELEVBQWlCRixFQUFlLEdBPQpBR3BJLEtBQ25DMkgsSUFDSixJQUFL UyxFQUFlMUksT0FBUyxFQUMzQjdGLEVBQVdpSCxLQUFNLHVDQUNaLENBQ0w5RSxLQUFLYiw9Ck1B QU1xRyxjQUFlLFNBQzFCLEtBQU0sR0FBSVksR0FBSWdHLEVBQWUxSSxPQUFTLEVBQUcwQyxHQUFL LEVBQUdBLElBQ0ZtRyxTQT0KQXhDSCxFQUFlaEcsR0FBR29HLFFBQVE3RCxXQUM3QmdELEVBQU16 RixLQUFNa0csRUFBZWhHLEdBQUdvRyxRQUFRN0QsVUFJMUMsPQpJQURBM0ksS0FBSzJHLHNCQUF3 QmpELE9BQVFpSSxFQUFNakksT0FBUWtELE9BQVEsb0JBQ25DLFdBQW5CMEYsRUFBNkIsQ0FDaEM9 CixHQUFJRyxHQUFjMU0sRUFBUTBHLE9BQVMsU0FDbkN6RyxNQUFLK0wsMkJBQTZCSixNQUFPQSxF QUNQTCxjQUFlQSxFQUNmRSxVQT0KQVdBLEVBQ1gvRSxPQUFRZ0csRUFDUmhCLFVBQVdBLEVBQ1hD LE1BQU9BLFFBQ3BDLElBQXdCLFNBQW5CWSxFQUEyQixDQUNyQyxHPQpBQUlHLEdBQWMxTSxFQUFR MEcsT0FBUyxPQUNuQ3pHLE1BQUswTSxnQ0FBa0NmLE1BQVFBLEVBQ1JGLFVBQVdBLEVBQ1hDLE1B QU89CkEsRUFDUGpGLE9BQVFnRyxPQUtyRHhELCtCQUFnQyxTQUFTeEQsR0FDdkMsR0FBSWtILEdB QW1CLEdBQUk3TyxHQUFrQjhPLGlCQT0KQWlCbE4sR0FBRytGLElBQzdEbkQsRUFBT3RDLElBQ1gy TSxHQUFpQnBILE9BQ2Z6QixRQUFTLFNBQVM2SSxHQUNoQixHQUFJRSxHPQpBQTRCdkssRUFBS3dL LHlCQUNyQ3hLLEdBQUtqRCxVQUFVc0ssSUFBSWxFLEdBQVkxQixLQUFLZ0osU0FBYUosSUFDakRy SyxFQUE9CktuRCxNQUFNK0IsSUFBSUssS0FBSyw2QkFBNkJKLEtBQUswTCxHQUEyQkYsaUJBQWtC QSxFQUFpQnpILE9BQU84SCxjQUU3SDNJLD0KTUFBTyxTQUFTQyxFQUFPQyxHQUVuQjFHLEVBQVd3 RyxNQUR3QixtQkFBMUJFLEdBQVNDLGFBQ0RELEVBQVNDLGFBQWFDLFFBRXRCPQoseUJBU3pCb0Us MEJBQTRCLFdBQzFCLEdBQUlvRSxHQUFlak4sS0FBS2IsTUFBTStCLElBQUlLLEtBQU0sNkJBQThC QSxLQUFNLFk9CkFDeEUyTCxLQUNBQyxJQUNKLElBQUtGLEVBQWF2SixPQUFTLEVBQ3pCN0YsRUFB V2lILEtBQU0sNENBQ1osQ0FDTDlFLEtBQUtiLD0KTUFBTXFHLGNBQWUsT0FDMUJ5SCxFQUFhbkgs S0FBSyxXQUNoQixHQUFJc0gsR0FBTXRMLEVBQUc5QixLQUFLK0YsZUFBZ0I4QixLPQpBQU0sS0FD akN1RixJQUNIRixFQUFvQmhILEtBQU1rSCxJQUdoQyxLQUFNLEdBQUloSCxHQUFJOEcsRUFBb0J4 SixPQUFTLEVBQUc9CjBDLEdBQUssRUFBR0EsSUFBTSxDQUMxRGlILG1CQUFxQkgsRUFBb0I5RyxF QUN6QyxJQUFJa0gsR0FBYyxHQUFJeFAsR0FBa0J5UD0KLElBQ3hDRCxHQUFZM0osS0FBUWlFLE9B QU9iLGNBQWdCQSxjQUFjQyxLQUFPLEtBQVEsZUFBaUJoSCxLQUFLRCxRQUFRTCxHQUFLPQosWUFD M0c0TixFQUFZdkosS0FBT3lKLFlBQWNILHFCQUNqQ0YsRUFBWWpILEtBQU1vSCxHQUVwQnROLEtB QUsyRyxzQkFBd0JqRCw9Ck9BQVF5SixFQUFZekosT0FBUWtELE9BQVEsb0JBQ2pFNUcsS0FBS3lO LG9CQUFxQk4sS0FVOUJsRyw4QkFBK0IsU0FBVXlHLEVBQT0Ka0JoSSxHQUN6RCxHQUFJcEQsR0FB T3RDLEtBQ1AyTixFQUFjRCxFQUFpQkUsS0FDbkMsSUFBMkIsbUJBQWZELEdBU1YsTUFSdUQsPQpL QUFsRDNOLEtBQUtELFFBQVFoQixtQkFBbUJFLGNBQ25DcEIsRUFBV2lHLFFBQVMsNkVBQThFLElB QU0rSixRQUFTLFdBQWFqRyw9Ck9BQU9rRyxTQUFTLE9BQ3BJOU4sS0FBS0QsUUFBUWhCLG1CQUFt QkUsZ0JBQWtCZSxLQUFLRCxRQUFRaEIsbUJBQW1CQyxhQUM1Rj0KbkIsRUFBV3dHLE1BQU8sa0VB Q1JyRSxLQUFLRCxRQUFRaEIsbUJBQW1CRSxjQUFnQmUsS0FBS0QsUUFBUWhCLG1CQUFtQkMsY0FD PQoxRm5CLEVBQVd3TixRQUFTLGdHQUFpRyxJQUFNd0MsUUFBUyxXQUFhakcsT0FBT2tHLFNBQVMs T0FFbktwTixPQUFPdkIsTUFBTTY9CkMsUUFDTixDQUVULElBQUkrTCxHQUFVak0sRUFBRWtNLEtB QU1MLEVBQVk5SixNQUFRMkMsUUFBU21ILEVBQVluSCxRQUFTQyxPQT0KQVFrSCxFQUFZbEgsU0FF NUZzSCxHQUFRRSxLQUFNLFdBQ0ozTCxFQUFLNEUsaUJBQ0w1RSxFQUFLMkUsOEJBQStCeUcsRUFB a0JoPQpJLEtBRXZEd0ksS0FBTSxXQUNMNUwsRUFBS3ZDLFFBQVFoQixtQkFBbUJFLGVBQWlCLEVB Q2pEcUQsRUFBSzRFLGlCQUNMNUUsRUE9CkFLMkUsOEJBQStCeUcsRUFBa0JoSSxNQVNsRWdILCtC QUFnQyxTQUFVM00sR0FFeEMsR0FBSWlGLEdBQU9oRixLQUNQMk4sRUFBYz0KNU4sRUFBUTRMLE1B QU1pQyxLQUNoQyxJQUE0QixtQkFBaEJELEdBT1YsTUFOdUQsS0FBbEQzTixLQUFLRCxRQUFRaEIs bUJBQW1CPQpFLGVBQ25DcEIsRUFBV2lHLFFBQVMsbURBQ3BCcEQsT0FBT3ZCLE1BQU02QyxRQUVi bkUsRUFBV3dHLE1BQU8sc0JBRWIsQ0FFVCw9CklBQUkwSixHQUFVak0sRUFBRWtNLEtBQU1sTSxF QUFFcU0sTUFBUXZHLE9BQU9iLGNBQWdCQSxjQUFjQyxLQUFPLEtBQVEsNENBQT0KOENoQyxFQUFL dEYsR0FDcEYsV0FBYUssRUFBUTBHLE9BQ3JCLFNBQVdrSCxFQUNYLGNBQWdCNU4sRUFBUTBMLFVB Q3hCLFVBQVkxPQpMLEVBQVEyTCxPQUN2RXFDLEdBQVFFLEtBQU0sV0FDSmpKLEVBQUtrQyxpQkFD TGxDLEVBQUswSCwrQkFBZ0MzTSxLQUV0Q21PLEs9CkFBTSxXQUNMbEosRUFBS2pGLFFBQVFoQixt QkFBbUJFLGVBQWlCLEVBQ2pEK0YsRUFBS2tDLGlCQUNMbEMsRUFBSzBILCtCQUFnQz0KM00sTUFh akRnTSwwQkFBMkIsU0FBVWhNLEdBRW5DLEdBQUlpRixHQUFPaEYsS0FDUDJOLEVBQWM1TixFQUFR NEwsTUFBTWlDLEtBPQpDaEMsSUFBMEIsbUJBQWZELEdBUVQsTUFQc0QsS0FBbEQzTixLQUFLRCxR QUFRaEIsbUJBQW1CRSxlQUNsQ3BCLEVBQVdpRyxRQUE9ClEseUVBQ25CcEQsT0FBT3ZCLE1BQU02 QyxRQUdibkUsRUFBV3dHLE1BQU0sc0JBRVosQ0FFVCxJQUFJMEosR0FBVWpNLEVBQUVrTT0KLEtB QU1sTSxFQUFFcU0sTUFBUXZHLE9BQU9iLGNBQWdCQSxjQUFjQyxLQUFPLEtBQVEsNENBQThDaEMs RUFBS3RGLEdBQ2pGLFdBPQpBYUssRUFBUTBHLE9BQ3JCLFNBQVdrSCxFQUNYLGtCQUFvQjVOLEVB QVF1TCxjQUM1QixjQUFnQnZMLEVBQVF5TCxVQUN4QixjQUE9CmdCekwsRUFBUTBMLFVBQ3hCLFVB QVkxTCxFQUFRMkwsT0FDMUVxQyxHQUFRRSxLQUFLLFdBQ0hqSixFQUFLa0MsaUJBQ0xsQyxFQT0K QUsrRywwQkFBMkJoTSxLQUVqQ21PLEtBQUssV0FDSmxKLEVBQUtqRixRQUFRaEIsbUJBQW1CRSxl QUFpQixFQUNqRCtGLEVBQUtrPQpDLGlCQUNMbEMsRUFBSytHLDBCQUEyQmhNLE1BUzVDME4sb0JB QXFCLFNBQVVXLEdBQzdCLEdBQUk5TCxHQUFPdEMsSUFDWEEsTUE9CkFLcU8sV0FBYSxHQUFJdlEs R0FBa0J3USxNQUN4QyxJQUFJWCxHQUFjUyxFQUFTUixLQUMzQixJQUEyQixtQkFBZkQsR0FTVixN QT0KUnVELEtBQWxEM04sS0FBS0QsUUFBUWhCLG1CQUFtQkUsY0FDbkNwQixFQUFXaUcsUUFBUyxz REFDVjlELEtBQUtELFFBQVFoQixtPQpCQUFtQkUsZ0JBQWtCZSxLQUFLRCxRQUFRaEIsbUJBQW1C QyxhQUM1Rm5CLEVBQVd3RyxNQUFPLGdFQUNSckUsS0FBS0QsUUFBUWg9CkIsbUJBQW1CRSxjQUFn QmUsS0FBS0QsUUFBUWhCLG1CQUFtQkMsY0FDMUZuQixFQUFXd04sUUFBUyx5REFFdEIzSyxPQUFP dkIsTT0KQUFNNkMsT0FDTmhDLEtBQUtxTyxVQUVkLElBQUlOLEdBQVVqTSxFQUFFa00sS0FBTUws RUFBWTlKLE1BQVEySixZQUFhRyxFQUFZPQpoRSxJQUFLLGlCQUV4RW9FLEdBQVFFLEtBQU0sU0FB VTNKLEdBQ2Q1RCxPQUFPdUQsVUFBVUMsZUFBZUMsV0FBV0MsSUFBS0UsR0E9CkNoRGhDLEVBQUs0 RSxpQkFDTDVFLEVBQUttTCxvQkFBcUJXLEtBRTNCRixLQUFNLFdBQ0w1TCxFQUFLdkMsUUFBUWhC LG1CQUFtQj0KRSxlQUFpQixFQUNqRHFELEVBQUs0RSxpQkFDTDVFLEVBQUttTCxvQkFBcUJXLE1B U3RDRyx1QkFBd0IsU0FBVUMsR0FDbEMsR0FBPQpJbE0sR0FBT3RDLElBQ1hBLE1BQUt5TyxjQUFn QixHQUFJM1EsR0FBa0J3USxNQUMzQyxJQUFJWCxHQUFjYSxFQUFnQlosS0FDbEM9CixJQUE0Qixt QkFBaEJELEdBU1YsTUFSdUQsS0FBbEQzTixLQUFLRCxRQUFRaEIsbUJBQW1CRSxjQUNuQ3BCLEVB QVdpRyxRQUFTLD0KZ0NBQ1Y5RCxLQUFLRCxRQUFRaEIsbUJBQW1CRSxnQkFBa0JlLEtBQUtELFFB QVFoQixtQkFBbUJDLGFBQzVGbkIsRUFBV3dHLE1BPQpBTyxtR0FDUnJFLEtBQUtELFFBQVFoQixt QkFBbUJFLGNBQWdCZSxLQUFLRCxRQUFRaEIsbUJBQW1CQyxjQUMxRm5CLEVBQVd3Tiw9ClFBQVMs NkZBRXRCM0ssT0FBT3ZCLE1BQU02QyxPQUNOaEMsS0FBS3lPLGFBRWQsSUFBSVYsR0FBVWpNLEVB QUVrTSxLQUFNTCxFQT0KQVllLFVBRWxDWCxHQUFRRSxLQUFNLFNBQVVVLEdBSWQsR0FIQWpPLE9B QU91RCxVQUFVQyxlQUFlQyxXQUFXbUUsT0FBUXFGLEVBPQpBWWpPLElBQy9ENEMsRUFBSzRFLGlC QUVBeEcsT0FBT3VELFVBQVVDLGVBQWVuRSxRQUFRNk8sZ0JBQWlCLENBQzVELEdBQUlDLEc9CkFB ZSxJQUNELFlBQWRGLEVBQUszSyxNQUEwQyxrQkFBckIySyxFQUFLRyxZQUNqQ0QsRUFBZSxHQUFJ L1EsR0FBa0JzRixjQUFldT0KTCxHQUM3QixTQUFkQSxFQUFLM0ssTUFBd0MsbUJBQXJCMkssRUFB S0csWUFDdENELEVBQWUsR0FBSS9RLEdBQWtCeVAsS0FBTW9CPQosSUFFM0N4QyxRQUFROUgsTUFB TSxvQ0FDZDhILFFBQVE5SCxNQUFNc0ssRUFBSzNLLE1BQVEySyxFQUFLRyxjQUVsQ3BPLE9BQU89 CnVELFVBQVVDLGVBQWVDLFdBQVdDLElBQUt5SyxHQUVsRHZNLEVBQUtpTSx1QkFBd0JDLEtBRTlC TixLQUFNLFdBQ0w1TCxFQUFLdj0KQyxRQUFRaEIsbUJBQW1CRSxlQUFpQixFQUNqRHFELEVBQUs0 RSxpQkFDTDVFLEVBQUtpTSx1QkFBd0JDLE1BT3ZDTyxvQkFBcUIsPQpTQUFTNU0sR0FFMUJ6QixP QUFPdUQsVUFBVUMsZUFBZThLLFlBRDlCN00sRUFBTWdILE9BQU84RixTQUM4QkwsaUJBQWlCLElB RWo9CkJBLGlCQUFpQixLQU9sRU0sdUJBQXdCLFdBQ3RCLEdBQUlySyxHQUFnQi9DLEVBQUUsaUJB QWlCUCxLQUFLLFdBQzVDLElBQTRCLD0KSUFBekJzRCxFQUFjbkIsT0FDYjdGLEVBQVdpSCxLQUFL LDBEQUNiLENBQ0wsR0FBSXZDLEdBQVd2QyxLQUFLaU0scUNBQ3BCak0sPQpNQUFLYixNQUFRdUIs T0FBT3ZCLE1BQ3BCYSxLQUFLYixNQUFNNEMsTUFDUFUsZ0JBQWtCLEVBQ2xCQyxNQUFrQiw2QkFD bEJDLEs9CkFBa0JKLE1BQ2xCSyxTQUNJRyxNQUFjLFdBQVlyQyxPQUFPdkIsTUFBTTZDLFdBSS9D aEMsS0FBS0QsUUFBUWhCLG1CQUFtQkMsYT0KQUFlLEVBQy9DZ0IsS0FBS0QsUUFBUWhCLG1CQUFt QkUsY0FBZ0IsQ0FFaEQsSUFBSTJHLE1BQ0FDLElBQ0poQixHQUFjaUIsS0FBPQpLLFdBQzZCLEtB QXhDOUYsS0FBSytGLGNBQWNBLGNBQWNyRyxLQUN5QixLQUF0RE0sS0FBSytGLGNBQWNBLGNBQWNy RyxHQUFHeVA9CixVQUFVLEVBQUUsR0FDbER0SixFQUFXSyxLQUFLbEcsS0FBSytGLGNBQWNBLGNB QWNyRyxJQUVqRGtHLEVBQVlNLEtBQUtsRyxLQT0KQUsrRixjQUFjQSxjQUFjckcsTUFLNUQsSUFB STBQLEdBQWN4SixFQUFZbEMsT0FBU21DLEVBQVduQyxNQUNsRDFELE1BQUtvSCxhPQpBQWUsSUFB TWdJLEVBQzFCcFAsS0FBS21ILFNBQVcsQ0FJaEIsS0FBSyxHQUREcUgsTUFDS3BJLEVBQUlSLEVB QVlsQyxPQUFTLEU9CkFBRzBDLEdBQUssRUFBR0EsSUFBSyxDQUM5QyxHQUFJaUosR0FBVSxHQUFJ dlIsR0FBa0J5UCxNQUFNN04sR0FBR2tHLEVBQVlRLD0KSUFDekRvSSxHQUFnQnRJLEtBQUttSixH QUV6QixJQUFLLEdBQUlqSixHQUFJUCxFQUFXbkMsT0FBUyxFQUFHMEMsR0FBSyxFQUFHPQpBLElB QUssQ0FDN0MsR0FBSWpELEdBQVMsR0FBSXJGLEdBQWtCc0YsZUFBZTFELEdBQUdtRyxFQUFXTyxJ QUNoRW9JLEdBQWdCdEk9CixLQUFLL0MsR0FHekJuRCxLQUFLRCxRQUFRaEIsbUJBQW1CQyxhQUFl b1EsRUFBWTFMLE9BRTNEMUQsS0FBS3VPLHVCQUF1QkMsSz0KQUtoQ2MsWUFBYSxXQUNYLEdBQUlD LEdBQWE3TyxPQUFPdUQsVUFBVUMsZUFBZXNMLGdCQUFnQkMsV0FBV0MsU0FBU0Msa0JBQ2pGPQpD LEVBQVUsS0FDVjVLLEVBQU9oRixJQUM4QixRQUFyQ1UsT0FBT3VELFVBQVU0TCxpQkFDbkJELEVB QVVsUCxPQUFPdUQsVUFBVTQ9CkwsZ0JBQWdCMUwsV0FBV3dGLElBQUk0RixHQUMxRHZQLEtBQUs4 UCxpQkFBaUJGLEtBRXRCQSxFQUFVLEdBQUk5UixHQUFrQmlTLD0KU0FBU3JRLEdBQUk2UCxJQUM3 Q0ssRUFBUXJLLE9BQ056QixRQUFTLFdBQ1BrQixFQUFLOEssaUJBQWlCRixJQUV4QnZMLE1BQU8s PQpTQUFTQyxFQUFPQyxHQUVuQjFHLEVBQVd3RyxNQUR3QixtQkFBMUJFLEdBQVNDLGFBQ0RELEVB QVNDLGFBQWFDLFFBRXRCLDBCQU89CjNCcUwsaUJBQWtCLFNBQVNGLEdBQ3pCLEdBQUlyTixHQUFX dkMsS0FBS2dRLHdCQUNwQmhRLE1BQUtiLE1BQVF1QixPQUFPdkIsTT0KQUNwQmEsS0FBS2IsTUFB TTRDLE1BQ1BVLGdCQUFrQixFQUNsQkMsTUFBa0Isc0JBQ2xCQyxLQUFrQkosR0FBVXFOLFFBQVFB LElBPQpDcENoTixTQUNJRyxNQUFjLFdBQVlyQyxPQUFPdkIsTUFBTTZDLFlBS2pEaU8sZ0JBQWlC LFNBQVNsUSxHQUN4QixPQUFPQSxFQUE9ClEwRyxRQUNiLElBQUssVUFDSHpHLEtBQUt1SSwwQkFD TCxNQUNGLEtBQUssWUFDSHZJLEtBQUt1SyxrQ0FBb0M5RCxPQUFRLGFBQz0KakQsTUFDRixLQUFL LE9BQ0h6RyxLQUFLcUosMEJBQ0wsTUFDRixLQUFLLFVBQ0hySixLQUFLdUssa0NBQW9DOUQsT0FB USxXQUNqPQpELE1BQ0YsU0FDRS9GLE9BQU91RCxVQUFVOEUsZUFBZUMsT0FDaENuTCxFQUFXd0cs TUFBTSw0QkFRdkI2TCxtQkFBb0IsV0FDbEI9CixHQUFJQyxHQUFtQkMsT0FBUSw4Q0FBK0MxUCxP QUFPdUQsVUFBVW9NLFlBQVkxRyxJQUFLLG9CQUNyRixPQUFwQndHLEdBQWdDQT0KLEdBQW9CMU8s U0FBVTBPLEtBQ2pFelAsT0FBT3VELFVBQVVvTSxZQUFZdE0sS0FBT29NLGlCQUFvQjFPLFNBQVUw TyxLQUNsRXpQPQosT0FBT3VELFVBQVVDLGVBQWUvRCxRQUFVVCxHQUFJTSxLQUFLRCxRQUFRTCxH QUFJOEIsVUFBVyxNQUloRm5CLGdCQUFpQixXQXU9CkVmLE1BdEVBaVEsZUFHQUEsV0FBV3BLLEtB QUsseUNBRWhCb0ssV0FBV3BLLEtBQUssK0JBQ2hCb0ssV0FBV3BLLEtBQUssMENBQz0KaEJvSyxX QUFXcEssS0FBSyxtREFDaEJvSyxXQUFXcEssS0FBSyxvRUFFaEJvSyxXQUFXcEssS0FBSyxxQkFD aEJvSyxXQUFXcEssPQpLQUFLLHVHQUNoQm9LLFdBQVdwSyxLQUFLLFdBQ2hCb0ssV0FBV3BLLEtB QUssc0ZBQ2hCb0ssV0FBV3BLLEtBQUssWUFDaEJvSyw9CldBQVdwSyxLQUFLLFVBQ2hCb0ssV0FB V3BLLEtBQUssd1JBRWhCb0ssV0FBV3BLLEtBQUssMkNBQ2hCb0ssV0FBV3BLLEtBQUsscz0KRUFD aEJvSyxXQUFXcEssS0FBSywwSUFDaEJvSyxXQUFXcEssS0FBSyxzR0FDaEJvSyxXQUFXcEssS0FB SyxrQkFDaEJvSyxXQUFXPQpwSyxLQUFLLCtDQUNoQm9LLFdBQVdwSyxLQUFLLGtGQUNoQm9LLFdB QVdwSyxLQUFLLDhEQUNoQm9LLFdBQVdwSyxLQUFLLHlGQUM9CmhCb0ssV0FBV3BLLEtBQUssV0FD aEJvSyxXQUFXcEssS0FBSyxzREFFaEJvSyxXQUFXcEssS0FBSyxnQ0FDaEJvSyxXQUFXcEssSz0K QUFLLG1EQUVoQm9LLFdBQVdwSyxLQUFLLHlEQUNoQm9LLFdBQVdwSyxLQUFLLHVGQUNoQm9LLFdB QVdwSyxLQUFLLFdBRWhCb0ssPQpXQUFXcEssS0FBSyxzREFDaEJvSyxXQUFXcEssS0FBSywyRUFD aEJvSyxXQUFXcEssS0FBSyxXQUNoQm9LLFdBQVdwSyxLQUFLLFc9CkFDaEJvSyxXQUFXcEssS0FB SyxjQUNoQm9LLFdBQVdwSyxLQUFLLGFBQ2hCb0ssV0FBV3BLLEtBQUssa0JBQ2hCb0ssV0FBV3BL LD0KS0FBSyx3UUFDaEJvSyxXQUFXcEssS0FBSyxXQUVoQm9LLFdBQVdwSyxLQUFLLHdSQUNoQm9L LFdBQVdwSyxLQUFLLDhHQUNoQm9LPQosV0FBV3BLLEtBQUssNEpBQ2hCb0ssV0FBV3BLLEtBQUss a0ZBQ2hCb0ssV0FBV3BLLEtBQUssa0JBQ2hCb0ssV0FBV3BLLEtBQUs9CiwrQ0FDaEJvSyxXQUFX cEssS0FBSywyRUFDaEJvSyxXQUFXcEssS0FBSywyRUFDaEJvSyxXQUFXcEssS0FBSyx3RUFDaEJv SyxXQT0KQVdwSyxLQUFLLGNBQ2hCb0ssV0FBV3BLLEtBQUssYUFDaEJvSyxXQUFXcEssS0FBSyx1 UkFDaEJvSyxXQUFXcEssS0FBSyx1UUFDPQpoQm9LLFdBQVdwSyxLQUFLLHVUQUNoQm9LLFdBQVdw SyxLQUFLLFdBQ2hCb0ssV0FBV3BLLEtBQUssV0FHaEJvSyxXQUFXcEssS0E9CkFLLG9DQUNoQm9L LFdBQVdwSyxLQUFLLFdBQ2hCb0ssV0FBV3BLLEtBQUssVUFHVGpHLEVBQUVzQyxTQUFTK04sV0FB V0MsS0FBSz0KLE1BR3BDUCx1QkFBd0IsV0FjdEIsTUFiQU0sZUFFQUEsV0FBV3BLLEtBQUssNkJB Q2hCb0ssV0FBV3BLLEtBQUssMEJBQ2hCb0ssPQpXQUFXcEssS0FBSyxxQ0FDaEJvSyxXQUFXcEss S0FBSyxpQ0FDaEJvSyxXQUFXcEssS0FBSyw0Q0FDaEJvSyxXQUFXcEssS0FBSyw9CjhCQUNoQm9L LFdBQVdwSyxLQUFLLHlDQUNoQm9LLFdBQVdwSyxLQUFLLGdKQUVoQm9LLFdBQVdwSyxLQUFLLFVB RVRqRyxFQUFFcz0KQyxTQUFTK04sV0FBV0MsS0FBSyxNQUdwQy9OLHlCQUEwQixXQVV4QixNQVRB OE4sZUFFQUEsV0FBV3BLLEtBQUssK0JBQ2hCb0ssPQpXQUFXcEssS0FBSyxVQUNoQm9LLFdBQVdw SyxLQUFLLCtEQUNoQm9LLFdBQVdwSyxLQUFLLDZFQUNoQm9LLFdBQVdwSyxLQUFLLFc9CkFDaEJv SyxXQUFXcEssS0FBSyxVQUVUakcsRUFBRXNDLFNBQVMrTixXQUFXQyxLQUFLLE1BSXBDdEwsMEJB QTRCLFdBQzFCLEdBQT0KSXFMLEtBV0osT0FUQUEsR0FBV3BLLEtBQUssaUdBQ2hCb0ssRUFBV3BL LEtBQUssb0JBQ2hCb0ssRUFBV3BLLEtBQUsseUdBQ2hCPQpvSyxFQUFXcEssS0FBSyxrREFDaEJv SyxFQUFXcEssS0FBSywyR0FDaEJvSyxFQUFXcEssS0FBSyxnQkFDaEJvSyxFQUFXcEssS0E9CkFL LGFBQ2hCb0ssRUFBV3BLLEtBQUssV0FFVGpHLEVBQUVzQyxTQUFTK04sRUFBV0MsS0FBSyxNQUdw Q3JFLHFDQUF1QyxXQUNyQz0KLEdBQUlvRSxLQVlKLE9BVkFBLEdBQVdwSyxLQUFLLDZCQUNoQm9L LEVBQVdwSyxLQUFLLCtFQUNoQm9LLEVBQVdwSyxLQUFLLFVBPQpDaEJvSyxFQUFXcEssS0FBSyww QkFDaEJvSyxFQUFXcEssS0FBSyxvSkFDaEJvSyxFQUFXcEssS0FBSywyREFDaEJvSyxFQUFXcEs9 CixLQUFLLGFBQ2hCb0ssRUFBV3BLLEtBQUssVUFDaEJvSyxFQUFXcEssS0FBSyxJQUVUakcsRUFB RXNDLFNBQVMrTixFQUFXQyxLQT0KQUssTUFHcEN2RSxrQ0FBbUMsV0FDakMsR0FBSXNFLEtBWUos T0FWQUEsR0FBV3BLLEtBQUssNkJBQ2hCb0ssRUFBV3BLLEtBQUssPQprRkFDaEJvSyxFQUFXcEss S0FBSyxVQUNoQm9LLEVBQVdwSyxLQUFLLDBCQUNoQm9LLEVBQVdwSyxLQUFLLG9KQUNoQm9LLEVB QVc9CnBLLEtBQUssMkRBQ2hCb0ssRUFBV3BLLEtBQUssYUFDaEJvSyxFQUFXcEssS0FBSyxVQUNo Qm9LLEVBQVdwSyxLQUFLLElBRVRqRz0KLEVBQUVzQyxTQUFTK04sRUFBV0MsS0FBSyxNQUdwQ3RF LG9DQUFxQyxXQUNuQyxHQUFJcUUsS0FXSixPQVRBQSxHQUFXcEssS0FBPQpLLDZCQUNoQm9LLEVB QVdwSyxLQUFLLFVBQ2hCb0ssRUFBV3BLLEtBQUssMEJBQ2hCb0ssRUFBV3BLLEtBQUssb0pBQ2hC b0ssRUE9CkFXcEssS0FBSywyREFDaEJvSyxFQUFXcEssS0FBSyxhQUNoQm9LLEVBQVdwSyxLQUFL LFVBQ2hCb0ssRUFBV3BLLEtBQUssSUFFVD0KakcsRUFBRXNDLFNBQVMrTixFQUFXQyxLQUFLLE1B R3BDL0YscUJBQXNCLFdBQ3BCLEdBQUk4RixLQW9DSixPQWxDQUEsR0FBV3BLPQosS0FBSyxpQ0FD aEJvSyxFQUFXcEssS0FBSywySEFDaEJvSyxFQUFXcEssS0FBSyx5TEFHaEJvSyxFQUFXcEssS0FB SyxvQ0FDaEI9Cm9LLEVBQVdwSyxLQUFLLGdDQUNoQm9LLEVBQVdwSyxLQUFLLHVJQUNoQm9LLEVB QVdwSyxLQUFLLFlBQ2hCb0ssRUFBV3BLLEtBQT0KSyxnQ0FDaEJvSyxFQUFXcEssS0FBSyx1SEFD aEJvSyxFQUFXcEssS0FBSyxZQUNoQm9LLEVBQVdwSyxLQUFLLFVBQ2hCb0ssRUFBPQpXcEssS0FB SyxvQ0FDaEJvSyxFQUFXcEssS0FBSyxtRkFDaEJvSyxFQUFXcEssS0FBSyw2RkFDaEJvSyxFQUFX cEssS0FBSyxnQ0E9CkNoQm9LLEVBQVdwSyxLQUFLLGFBQ2hCb0ssRUFBV3BLLEtBQUssMkVBQ2hC b0ssRUFBV3BLLEtBQUssdUVBQ2hCb0ssRUFBV3BLLD0KS0FBSyxpQ0FDaEJvSyxFQUFXcEssS0FB SyxhQUNoQm9LLEVBQVdwSyxLQUFLLFVBQ2hCb0ssRUFBV3BLLEtBQUssNkJBQ2hCb0ssPQpFQUFX cEssS0FBSyxVQUVoQm9LLEVBQVdwSyxLQUFLLFVBQ2hCb0ssRUFBV3BLLEtBQUssbUZBQ2hCb0ss RUFBV3BLLEtBQUssU0E9CkNoQm9LLEVBQVdwSyxLQUFLLGlGQUNoQm9LLEVBQVdwSyxLQUFLLCtF QUNoQm9LLEVBQVdwSyxLQUFLLFVBQ2hCb0ssRUFBV3BLLD0KS0FBSyxVQUVUakcsRUFBRXNDLFNB QVMrTixFQUFXQyxLQUFLLE1BR3BDakgsd0JBQXlCLFdBQ3ZCLEdBQUlnSCxLQTJCSixPQXpCPQpB QSxHQUFXcEssS0FBSyxpQ0FDaEJvSyxFQUFXcEssS0FBSyxnS0FFaEJvSyxFQUFXcEssS0FBSyx1 Q0FDaEJvSyxFQUFXcEssS0E9CkFLLDZEQUNoQm9LLEVBQVdwSyxLQUFLLDZGQUNoQm9LLEVBQVdw SyxLQUFLLGdDQUNoQm9LLEVBQVdwSyxLQUFLLGFBQ2hCb0ssRT0KQUFXcEssS0FBSyxxREFDaEJv SyxFQUFXcEssS0FBSyx1RUFDaEJvSyxFQUFXcEssS0FBSyxpQ0FDaEJvSyxFQUFXcEssS0FBSyxh PQpBQ2hCb0ssRUFBV3BLLEtBQUssVUFFaEJvSyxFQUFXcEssS0FBSyw4SkFFaEJvSyxFQUFXcEss S0FBSyxVQUNoQm9LLEVBQVdwSyw9CktBQUssbUZBQ2hCb0ssRUFBV3BLLEtBQUssU0FDaEJvSyxF QUFXcEssS0FBSyxpRkFDaEJvSyxFQUFXcEssS0FBSywrRUFDaEJvSz0KLEVBQVdwSyxLQUFLLFVB RWhCb0ssRUFBV3BLLEtBQUssVUFFVGpHLEVBQUVzQyxTQUFTK04sRUFBV0MsS0FBSyxNQUdwQzlI LDRCPQpBQTZCLFdBQzNCLEdBQUk2SCxLQWlCSixPQWZBQSxHQUFXcEssS0FBSyw4QkFDaEJvSyxF QUFXcEssS0FBSyx1Q0FDaEJvSyxFQUE9CldwSyxLQUFLLHFCQUNoQm9LLEVBQVdwSyxLQUFLLCtF QUNoQm9LLEVBQVdwSyxLQUFLLGtEQUNoQm9LLEVBQVdwSyxLQUFLO0FBQz0KaEJvSyxFQUFXcEss S0FBSyxnQkFDaEJvSyxFQUFXcEssS0FBSyxhQUNoQm9LLEVBQVdwSyxLQUFLLFVBQ2hCb0ssRUFB V3BLLEtBPQpBSyxTQUNoQm9LLEVBQVdwSyxLQUFLLHVDQUVoQm9LLEVBQVdwSyxLQUFLLFVBQ2hC b0ssRUFBV3BLLEtBQUssVUFFVGpHLEVBQUU9CnNDLFNBQVMrTixFQUFXQyxLQUFLLE1BR3BDekQs d0JBQXlCLFdBQ3ZCLEdBQUl3RCxLQVdKLE9BVEFBLEdBQVdwSyxLQUFLLG1EQT0KQ2hCb0ssRUFB V3BLLEtBQUssUUFDaEJvSyxFQUFXcEssS0FBSyw0REFDaEJvSyxFQUFXcEssS0FBSywyREFDaEJv SyxFQUFXcEssPQpLQUFLLHFJQUNoQm9LLEVBQVdwSyxLQUFLLFVBQ2hCb0ssRUFBV3BLLEtBQUss Y0FDaEJvSyxFQUFXcEssS0FBSyxTQUVUakcsRUE9CkFFc0MsU0FBUytOLEVBQVdDLEtBQUssTUFH cENqUCxrQkFBbUIsV0ErQmpCLE1BOUJBZ1AsZUFFQUEsV0FBV3BLLEtBQUssNENBQz0KaEJvSyxX QUFXcEssS0FBSywrQ0FDaEJvSyxXQUFXcEssS0FBSyw0REFDaEJvSyxXQUFXcEssS0FBSyxpSEFD aEJvSyxXQUFXcEssPQpLQUFLLHdJQUNoQm9LLFdBQVdwSyxLQUFLLDZCQUNoQm9LLFdBQVdwSyxL QUFLLGlIQUNoQm9LLFdBQVdwSyxLQUFLLDJIQUNoQm89CkssV0FBV3BLLEtBQUssc0JBQ2hCb0ss V0FBV3BLLEtBQUsseUJBQ2hCb0ssV0FBV3BLLEtBQUssOEhBQ2hCb0ssV0FBV3BLLEtBQT0KSyxv SUFDaEJvSyxXQUFXcEssS0FBSyxrQkFDaEJvSyxXQUFXcEssS0FBSyw4QkFDaEJvSyxXQUFXcEss S0FBSyxrR0FDaEJvSyxXPQpBQVdwSyxLQUFLLGdCQUNoQm9LLFdBQVdwSyxLQUFLLG9EQUNoQm9L LFdBQVdwSyxLQUFLLHVIQUNoQm9LLFdBQVdwSyxLQUFLLHM9CklBQ2hCb0ssV0FBV3BLLEtBQUss eUJBQ2hCb0ssV0FBV3BLLEtBQUsscUlBQ2hCb0ssV0FBV3BLLEtBQUssdUpBQ2hCb0ssV0FBVz0K cEssS0FBSyxrQkFDaEJvSyxXQUFXcEssS0FBSyxZQUNoQm9LLFdBQVdwSyxLQUFLLGFBQ2hCb0ss V0FBV3BLLEtBQUssbU1BQ2hCPQpvSyxXQUFXcEssS0FBSyxjQUVUakcsRUFBRXNDLFNBQVMrTixX QUFXQyxLQUFLLE9BS3RDLFFBQ0l2UyxrQkFBbUJBIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEgLXIg MzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IHN0YXRpYy9tYXBzL3V0 aWxzL3VwbG9hZGJveC5qcy5tYXAKLS0tIGEvc3RhdGljL21hcHMvdXRpbHMvdXBsb2FkYm94Lmpz Lm1hcAorKysgYi9zdGF0aWMvbWFwcy91dGlscy91cGxvYWRib3guanMubWFwCkBAIC0xLDEgKzEs MSBAQAoteyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkYm94LmpzIiwic291cmNlcyI6WyIuLi8u Li9zcmMvdXRpbHMvdXBsb2FkYm94Lmo9CnMiXSwibmFtZXMiOlsiJCIsImpRdWVyeSIsImV2ZW50 IiwicHJvcHMiLCJwdXNoIiwidXBsb2FkcG9zdCIsImNvbmZpZyIsImNuZj0KIiwiZXh0ZW5kIiwi ZGF0YSIsInN1Y2Nlc3MiLCJlcnJvciIsInByb2dyZXNzIiwidXJsIiwibWF4ZmlsZXNpemUiLCJl cnJvcl9mPQppbGVzaXplIiwiZXJyb3JfZGVmYXVsdCIsImVycm9yX3NlcnZlciIsImVycm9yX2xv Z2luIiwiZXJyb3JfbWVzc2FnZSIsImZvcm09CiIsIkZvcm1EYXRhIiwia2V5IiwicGF5bG9hZCIs ImFwcGVuZCIsInNpemVzIiwiZmlsZXMiLCJkIiwibmFtZSIsImZpbGUiLCJzaT0KemUiLCJ4aHIi LCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJzZXRSZXF1ZXN0SGVhZGVyIiwib25yZWFkeXN0YXRl Y2hhbmdlIiwiPQpyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwicmVzcG9uc2VUZXh0Iiwi cGFyc2VKU09OIiwiZSIsInN0YXR1cyIsInRleHQ9CiIsInN0YXR1c1RleHQiLCJ1cGxvYWQiLCJh ZGRFdmVudExpc3RlbmVyIiwibGVuZ3RoQ29tcHV0YWJsZSIsIk1hdGgiLCJyb3VuZD0KIiwibG9h ZGVkIiwidG90YWwiLCJjb25zb2xlIiwiZGVidWciLCJzZW5kIiwiZm4iLCJ1cGxvYWRpbnB1dCIs Im9wdGlvbnMiLCJlPQpsIiwidGhpcyIsIm9wdHMiLCJvbmRyYWdvdmVyIiwib25kcmFnbGVhdmUi LCJvbmNoYW5nZSIsIm11bHRpcGxlIiwiJGlucHV0Iiw9CiJjaGFuZ2UiLCJ0YXJnZXQiLCJ2YWwi LCJvbiIsImRhdGFUcmFuc2ZlciIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aT0Kb24i LCJkaWFsb2ciLCJ0cmlnZ2VyIiwidXBsb2FkYm94IiwiYWRkIiwibGVuZ3RoIiwicXVldWVfcnVu bmluZyIsImN1cnJlbnRfPQppbmRleCIsInF1ZXVlX2luZGV4IiwiaSIsImluZGV4IiwiU3RyaW5n IiwicXVldWUiLCJhbm5vdW5jZSIsInF1ZXVlX2xlbmd0aCI9CiwicmVtb3ZlIiwicHJvY2VzcyIs InF1ZXVlX3N0b3AiLCJjb21wbGV0ZSIsImluaXRpYWxpemUiLCJtZXNzYWdlIiwicGVyY2VudD0K YWdlIiwic2VsZWN0IiwicmVzZXQiLCJzdGFydCIsInN0b3AiLCJjb25maWd1cmUiLCJjb21wYXRp YmxlIiwid2luZG93IiwiRmlsPQplIiwiRmlsZUxpc3QiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIs Im0iLCJhbGVydCJdLCJtYXBwaW5ncyI6IkNBR0MsU0FBVUEsR0E9CkVQQyxPQUFPQyxNQUFNQyxN QUFNQyxLQUFLLGdCQUt4QkosRUFBRUssV0FBYSxTQUFVQyxHQUVyQixHQUFJQyxHQUFNUCxFQUFF UT0KLFdBQ1JDLFFBQ0FDLFFBQWtCLGFBQ2xCQyxNQUFrQixhQUNsQkMsU0FBa0IsYUFDbEJDLElB QWtCLEtBQ2xCQyxZQUFrQixLQUNsPQpCQyxlQUFrQiw4Q0FDbEJDLGNBQWtCLDBDQUNsQkMsYUFB a0IseUJBQ2xCQyxZQUFrQixrQ0FDbkJaLEdBR0NHLEVBQU9GLEVBQUk9CkUsSUFHZixJQUFJQSxF QUFLVSxjQUVMLFdBREFaLEdBQUlJLE1BQU1GLEVBQUtVLGNBS25CLElBQUlDLEdBQU8sR0FBSUMs U0FDZj0KLEtBQUssR0FBSUMsS0FBT2IsR0FBS2MsUUFDakJILEVBQUtJLE9BQU9GLEVBQUtiLEVB QUtjLFFBQVFELEdBSWxDLElBQUlHLEdBPQpBUSxDQUNaLEtBQUssR0FBSUgsS0FBT2IsR0FBS2lC LE1BQU8sQ0FDeEIsR0FBSUMsR0FBSWxCLEVBQUtpQixNQUFNSixFQUNuQkY9CixHQUFLSSxPQUFP RyxFQUFFQyxLQUFNRCxFQUFFRSxLQUFNRixFQUFFRSxLQUFLRCxNQUNuQ0gsR0FBU0UsRUFBRUUs S0FBS0MsSz0KQUlwQixNQUFJTCxHQUFRLFFBQVVsQixFQUFJTyxnQkFDdEJQLEdBQUlJLE1BQU1K LEVBQUlRLGlCQUtsQmdCLElBQU0sR0FBSUMsPQpnQkFDVkQsSUFBSUUsS0FBSyxPQUFRMUIsRUFB SU0sS0FBSyxHQUMxQmtCLElBQUlHLGlCQUFpQixTQUFVLG9CQUMvQkgsSUFBSUc9CixpQkFBaUIs Z0JBQWlCLFlBQ3RDSCxJQUFJRyxpQkFBaUIsbUJBQW9CLGtCQUd6Q0gsSUFBSUksbUJBQXFCLFdB RXJCLEdBQUlKLD0KSUFBSUssWUFBY0wsSUFBSU0sS0FBTSxDQUU1QixHQUFJQyxHQUFXLElBQ2Ys SUFBSVAsSUFBSVEsYUFDSixJQUNJRCxFQUFXckMsPQpPQUFPdUMsVUFBVVQsSUFBSVEsY0FDbEMs TUFBT0UsR0FDTEgsRUFBV1AsSUFBSVEsYUFJdkIsR0FBSVIsSUFBSVcsT0FBUyxLQUE9Ck9YLElB QUlXLE9BQVMsSUFBSyxDQUN0QyxHQUFJQyxHQUFPWixJQUFJYSxVQUNHLE1BQWRiLElBQUlXLE9B Q0pDLEVBQU9wQyxFQT0KQUlXLFlBQ1UsR0FBZGEsSUFBSVcsT0FDWEMsRUFBT3BDLEVBQUlVLGFB Q0gwQixJQUNSQSxFQUFPcEMsRUFBSVMsZUFFZlQsRUFBPQpJSSxNQUFNZ0MsRUFBTyxLQUFPWixJ QUFJVyxPQUFTLFNBRXJDbkMsR0FBSUcsUUFBUTRCLEtBTXhCUCxJQUFJYyxPQUFPQyxpQkE9CkFp QixXQUFZLFNBQVNMLEdBQ3pDQSxFQUFFTSxrQkFDRnhDLEVBQUlLLFNBQVNvQyxLQUFLQyxNQUFr QixJQUFYUixFQUFFUyxPQT0KQWdCVCxFQUFFVSxVQUVsRCxHQUdIQyxRQUFRQyxNQUFNLHFEQUNk RCxRQUFRQyxNQUFNOUMsT0FDZHdCLEtBQUl1QixLQUFLbEMsPQpLQU1icEIsRUFBRXVELEdBQUdD LFlBQWMsU0FBU0MsR0FFeEIsR0FBSUMsR0FBS0MsS0FDTEMsRUFBTzVELEVBQUVRLFdBQ1RxRCw9 CldBQWMsYUFDZEMsWUFBYyxhQUNkQyxTQUFjLGFBQ2RDLFVBQWMsR0FDZlAsR0FHQ1EsRUFBU2pF LEVBQUUsNkNBQStDNEQsRUFBSz0KSSxVQUFZLFlBQWMsSUFBTSxLQXdCbkcsT0F2QkFOLEdBQUds QyxPQUFPeUMsR0FBUUMsT0FBTyxTQUFVekIsR0FDL0JtQixFQUFLPQpHLFNBQVN0QixFQUFFMEIs T0FBT3pDLE9BQ3ZCMUIsRUFBRTJELE1BQU1TLElBQUksTUFJaEJWLEVBQUdXLEdBQUcsT0FBUSxT QUE9ClU1QixHQUNwQm1CLEVBQUtFLFlBQVlyQixHQUNkQSxFQUFFNkIsZUFDRFYsRUFBS0csU0FB U3RCLEVBQUU2QixhQUFhNUMsT0FDNz0KQmUsRUFBRThCLG9CQUdWYixFQUFHVyxHQUFHLFdBQWEs U0FBVTVCLEdBQ3pCQSxFQUFFOEIsaUJBQ0ZYLEVBQUtDLFdBQVdwQixLPQpBRXBCaUIsRUFBR1cs R0FBRyxZQUFhLFNBQVU1QixHQUN6QkEsRUFBRStCLGtCQUNGWixFQUFLRSxZQUFZckIsTUFLakJn QyxPQUE9ClEsV0FDSlIsRUFBT1MsUUFBUSxZQVEzQjFFLEVBQUV1RCxHQUFHb0IsVUFBWSxTQUFT bEIsR0FpQ3RCLFFBQVNtQixHQUFJbEQsRz0KQUNULEdBQUlBLEdBQVNBLEVBQU1tRCxTQUFXQyxF QUFlLENBRXpDLElBQUssR0FEREMsR0FBZ0JDLEVBQ1hDLEVBQUksRUFBR0EsPQpFQUFJdkQsRUFB TW1ELE9BQVFJLElBQUssQ0FDbkMsR0FBSUMsR0FBUUMsT0FBT0gsSUFDbkJJLEdBQU1GLEdBQVN4 RCxFQUFNdUQ9CixHQUNyQnJCLEVBQUt5QixTQUFTSCxFQUFPRSxFQUFNRixJQUMzQkksSUFFSixN QUFPUCxJQUtmLFFBQVNRLEdBQU9MLEdBQ1JFLD0KRUFBTUYsV0FDQ0UsR0FBTUYsR0FDYkksS0FL UixRQUFTRSxLQUVMLEdBQW9CLEdBQWhCRixHQUFxQkcsRUFJckIsTUFIQUEsSUFBPQphLEVBQ2JY LEdBQWdCLE1BQ2hCbEIsR0FBSzhCLFVBR0xaLElBQWdCLENBSXBCLElBQUlJLEdBQVEsRUFDWixL QUFLLEdBQUk1RCw9CktBQU84RCxHQUFPLENBQ25CRixFQUFRNUQsQ0FDUixPQUlPOEQsRUFBTUYs RUFHakJLLEdBQU9MLEdBR1BsRixFQUFFSyxZQUNFUT0KLElBQVcrQyxFQUFLL0MsSUFDaEJKLEtB QVdtRCxFQUFLK0IsV0FBV1QsR0FDM0J4RSxRQUFXLFNBQVNrRixHQUFXaEMsRUFBS2xEPQosUUFB UXdFLEVBQU9VLEdBQVVKLEtBQzdEN0UsTUFBVyxTQUFTaUYsR0FBV2hDLEVBQUtqRCxNQUFNdUUs RUFBT1UsR0FBVUosS0E9CkMzRDVFLFNBQVcsU0FBU2lGLEdBQWNqQyxFQUFLaEQsU0FBU3NFLEVB QU9XLE1BUy9ELFFBQVNDLEtBQ0x0QyxFQUFZaUIsU0FJaD0KQixRQUFTc0IsR0FBTWIsR0FDWCxJ QUFLQSxJQUFTRSxHQUNWRyxFQUFPTCxHQUtmLFFBQVNjLEtBQ0FsQixJQUNEQSxHQUFnQixFPQpB Q2hCVSxLQUtSLFFBQVNTLEtBQ0xSLEdBQWEsRUFJakIsUUFBU1MsR0FBVXpDLEdBRWYsTUFEQUcs R0FBTzVELEVBQUVRLFVBQVc9Cm9ELEVBQU1ILEdBSzlCLFFBQVMwQyxLQUNMLE1BQU9DLFFBQU9D LE1BQVFELE9BQU8vRSxVQUFZK0UsT0FBT3BFLGdCQUFrQm9FLD0KT0FBT0UsU0E1SDdFLEdBQUkx QyxHQUFPNUQsRUFBRVEsV0FDVCtGLFNBQWtCLGFBQ2xCQyxVQUFrQixhQUNsQm5CLFNBQWtCLGFB PQpDbEJNLFdBQWtCLGFBQ2xCL0UsU0FBa0IsYUFDbEJGLFFBQWtCLGFBQ2xCQyxNQUFrQixTQUFT Z0IsRUFBRzhFLEdBQUtDLE1BQU09CkQsSUFDekNmLFNBQWtCLGNBQ25CakMsR0FHQzJCLEtBR0FK LEVBQWMsRUFDZE0sRUFBZSxFQUdmUixHQUFnQixFQUNoQlcsR0FBYT0KLEVBR2JqQyxFQUFjeEQs RUFBRTJELE1BQU1ILGFBQ3RCUSxVQUFjLEVBQ2RELFNBQWMsU0FBU3JDLEdBQVNrRCxFQUFJbEQs SUFDPQpwQ21DLFdBQWNKLEVBQVFJLFdBQ3RCQyxZQUFjTCxFQUFRSyxhQXFHMUIsUUFDSWdDLE9B QWtCQSxFQUNsQmxCLElBQWtCQSxFQUM9CmxCVyxPQUFrQkEsRUFDbEJTLE1BQWtCQSxFQUNsQkMs S0FBa0JBLEVBQ2xCRixNQUFrQkEsRUFDbEJHLFVBQWtCQSxFQUNsQkMsVz0KQUFrQkEsS0FHM0Js RyJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoreyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBs b2FkYm94LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXBsb2FkYm94Lmo9CnMiXSwi bmFtZXMiOlsiJCIsImpRdWVyeSIsImV2ZW50IiwicHJvcHMiLCJwdXNoIiwidXBsb2FkcG9zdCIs ImNvbmZpZyIsImNuZj0KIiwiZXh0ZW5kIiwiZGF0YSIsInN1Y2Nlc3MiLCJlcnJvciIsInByb2dy ZXNzIiwidXJsIiwibWF4ZmlsZXNpemUiLCJlcnJvcl9mPQppbGVzaXplIiwiZXJyb3JfZGVmYXVs dCIsImVycm9yX3NlcnZlciIsImVycm9yX2xvZ2luIiwiZXJyb3JfbWVzc2FnZSIsImZvcm09CiIs IkZvcm1EYXRhIiwia2V5IiwicGF5bG9hZCIsImFwcGVuZCIsInNpemVzIiwiZmlsZXMiLCJkIiwi bmFtZSIsImZpbGUiLCJzaT0KemUiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJzZXRS ZXF1ZXN0SGVhZGVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwiPQpyZWFkeVN0YXRlIiwiRE9ORSIs InJlc3BvbnNlIiwicmVzcG9uc2VUZXh0IiwicGFyc2VKU09OIiwiZSIsInN0YXR1cyIsInRleHQ9 CiIsInN0YXR1c1RleHQiLCJ1cGxvYWQiLCJhZGRFdmVudExpc3RlbmVyIiwibGVuZ3RoQ29tcHV0 YWJsZSIsIk1hdGgiLCJyb3VuZD0KIiwibG9hZGVkIiwidG90YWwiLCJjb25zb2xlIiwiZGVidWci LCJzZW5kIiwiZm4iLCJ1cGxvYWRpbnB1dCIsIm9wdGlvbnMiLCJlPQpsIiwidGhpcyIsIm9wdHMi LCJvbmRyYWdvdmVyIiwib25kcmFnbGVhdmUiLCJvbmNoYW5nZSIsIm11bHRpcGxlIiwiJGlucHV0 Iiw9CiJjaGFuZ2UiLCJ0YXJnZXQiLCJ2YWwiLCJvbiIsImRhdGFUcmFuc2ZlciIsInByZXZlbnRE ZWZhdWx0Iiwic3RvcFByb3BhZ2F0aT0Kb24iLCJkaWFsb2ciLCJ0cmlnZ2VyIiwidXBsb2FkYm94 IiwiYWRkIiwibGVuZ3RoIiwicXVldWVfcnVubmluZyIsImN1cnJlbnRfPQppbmRleCIsInF1ZXVl X2luZGV4IiwiaSIsImluZGV4IiwiU3RyaW5nIiwicXVldWUiLCJhbm5vdW5jZSIsInF1ZXVlX2xl bmd0aCI9CiwicmVtb3ZlIiwicHJvY2VzcyIsInF1ZXVlX3N0b3AiLCJjb21wbGV0ZSIsImluaXRp YWxpemUiLCJtZXNzYWdlIiwicGVyY2VudD0KYWdlIiwic2VsZWN0IiwicmVzZXQiLCJzdGFydCIs InN0b3AiLCJjb25maWd1cmUiLCJjb21wYXRpYmxlIiwid2luZG93IiwiRmlsPQplIiwiRmlsZUxp c3QiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIsIm0iLCJhbGVydCJdLCJtYXBwaW5ncyI6IkNBR0Ms U0FBVUEsR0E9CkVQQyxPQUFPQyxNQUFNQyxNQUFNQyxLQUFLLGdCQUt4QkosRUFBRUssV0FBYSxT QUFVQyxHQUVyQixHQUFJQyxHQUFNUCxFQUFFUT0KLFdBQ1JDLFFBQ0FDLFFBQWtCLGFBQ2xCQyxN QUFrQixhQUNsQkMsU0FBa0IsYUFDbEJDLElBQWtCLEtBQ2xCQyxZQUFrQixLQUNsPQpCQyxlQUFr Qiw4Q0FDbEJDLGNBQWtCLDBDQUNsQkMsYUFBa0IseUJBQ2xCQyxZQUFrQixrQ0FDbkJaLEdBR0NH LEVBQU9GLEVBQUk9CkUsSUFHZixJQUFJQSxFQUFLVSxjQUVMLFdBREFaLEdBQUlJLE1BQU1GLEVB QUtVLGNBS25CLElBQUlDLEdBQU8sR0FBSUMsU0FDZj0KLEtBQUssR0FBSUMsS0FBT2IsR0FBS2Ms UUFDakJILEVBQUtJLE9BQU9GLEVBQUtiLEVBQUtjLFFBQVFELEdBSWxDLElBQUlHLEdBPQpBUSxD QUNaLEtBQUssR0FBSUgsS0FBT2IsR0FBS2lCLE1BQU8sQ0FDeEIsR0FBSUMsR0FBSWxCLEVBQUtp QixNQUFNSixFQUNuQkY9CixHQUFLSSxPQUFPRyxFQUFFQyxLQUFNRCxFQUFFRSxLQUFNRixFQUFF RSxLQUFLRCxNQUNuQ0gsR0FBU0UsRUFBRUUsS0FBS0MsSz0KQUlwQixNQUFJTCxHQUFRLFFBQVVs QixFQUFJTyxnQkFDdEJQLEdBQUlJLE1BQU1KLEVBQUlRLGlCQUtsQmdCLElBQU0sR0FBSUMsPQpn QkFDVkQsSUFBSUUsS0FBSyxPQUFRMUIsRUFBSU0sS0FBSyxHQUMxQmtCLElBQUlHLGlCQUFpQixT QUFVLG9CQUMvQkgsSUFBSUc9CixpQkFBaUIsZ0JBQWlCLFlBQ3RDSCxJQUFJRyxpQkFBaUIsbUJB QW9CLGtCQUd6Q0gsSUFBSUksbUJBQXFCLFdBRXJCLEdBQUlKLD0KSUFBSUssWUFBY0wsSUFBSU0s S0FBTSxDQUU1QixHQUFJQyxHQUFXLElBQ2YsSUFBSVAsSUFBSVEsYUFDSixJQUNJRCxFQUFXckMs PQpPQUFPdUMsVUFBVVQsSUFBSVEsY0FDbEMsTUFBT0UsR0FDTEgsRUFBV1AsSUFBSVEsYUFJdkIs R0FBSVIsSUFBSVcsT0FBUyxLQUE9Ck9YLElBQUlXLE9BQVMsSUFBSyxDQUN0QyxHQUFJQyxHQUFP WixJQUFJYSxVQUNHLE1BQWRiLElBQUlXLE9BQ0pDLEVBQU9wQyxFQT0KQUlXLFlBQ1UsR0FBZGEs SUFBSVcsT0FDWEMsRUFBT3BDLEVBQUlVLGFBQ0gwQixJQUNSQSxFQUFPcEMsRUFBSVMsZUFFZlQs RUFBPQpJSSxNQUFNZ0MsRUFBTyxLQUFPWixJQUFJVyxPQUFTLFNBRXJDbkMsR0FBSUcsUUFBUTRC LEtBTXhCUCxJQUFJYyxPQUFPQyxpQkE9CkFpQixXQUFZLFNBQVNMLEdBQ3pDQSxFQUFFTSxrQkFD RnhDLEVBQUlLLFNBQVNvQyxLQUFLQyxNQUFrQixJQUFYUixFQUFFUyxPQT0KQWdCVCxFQUFFVSxV QUVsRCxHQUdIQyxRQUFRQyxNQUFNLHFEQUNkRCxRQUFRQyxNQUFNOUMsT0FDZHdCLEtBQUl1QixL QUFLbEMsPQpLQU1icEIsRUFBRXVELEdBQUdDLFlBQWMsU0FBU0MsR0FFeEIsR0FBSUMsR0FBS0Ms S0FDTEMsRUFBTzVELEVBQUVRLFdBQ1RxRCw9CldBQWMsYUFDZEMsWUFBYyxhQUNkQyxTQUFjLGFB Q2RDLFVBQWMsR0FDZlAsR0FHQ1EsRUFBU2pFLEVBQUUsNkNBQStDNEQsRUFBSz0KSSxVQUFZLFlB QWMsSUFBTSxLQXdCbkcsT0F2QkFOLEdBQUdsQyxPQUFPeUMsRUFBT0MsT0FBTyxTQUFVekIsR0FD OUJtQixFQUFLPQpHLFNBQVN0QixFQUFFMEIsT0FBT3pDLE9BQ3ZCMUIsRUFBRTJELE1BQU1TLElB QUksT0FJaEJWLEVBQUdXLEdBQUcsT0FBUSxTQUE9ClU1QixHQUNwQm1CLEVBQUtFLFlBQVlyQixH QUNkQSxFQUFFNkIsZUFDRFYsRUFBS0csU0FBU3RCLEVBQUU2QixhQUFhNUMsT0FDNz0KQmUsRUFB RThCLG9CQUdWYixFQUFHVyxHQUFHLFdBQWEsU0FBVTVCLEdBQ3pCQSxFQUFFOEIsaUJBQ0ZYLEVB QUtDLFdBQVdwQixLPQpBRXBCaUIsRUFBR1csR0FBRyxZQUFhLFNBQVU1QixHQUN6QkEsRUFBRStC LGtCQUNGWixFQUFLRSxZQUFZckIsTUFLakJnQyxPQUE9ClEsV0FDSlIsRUFBT1MsUUFBUSxZQVEz QjFFLEVBQUV1RCxHQUFHb0IsVUFBWSxTQUFTbEIsR0FpQ3RCLFFBQVNtQixHQUFJbEQsRz0KQUNU LEdBQUlBLEdBQVNBLEVBQU1tRCxTQUFXQyxFQUFlLENBRXpDLElBQUssR0FEREMsR0FBZ0JDLEVB Q1hDLEVBQUksRUFBR0EsPQpFQUFJdkQsRUFBTW1ELE9BQVFJLElBQUssQ0FDbkMsR0FBSUMsR0FB UUMsT0FBT0gsSUFDbkJJLEdBQU1GLEdBQVN4RCxFQUFNdUQ9CixHQUNyQnJCLEVBQUt5QixTQUFT SCxFQUFPRSxFQUFNRixJQUMzQkksSUFFSixNQUFPUCxJQUtmLFFBQVNRLEdBQU9MLEdBQ1JFLD0K RUFBTUYsV0FDQ0UsR0FBTUYsR0FDYkksS0FLUixRQUFTRSxLQUVMLEdBQW9CLEdBQWhCRixHQUFx QkcsRUFJckIsTUFIQUEsSUFBPQphLEVBQ2JYLEdBQWdCLE1BQ2hCbEIsR0FBSzhCLFVBR0xaLElB QWdCLENBSXBCLElBQUlJLEdBQVEsRUFDWixLQUFLLEdBQUk1RCw9CktBQU84RCxHQUFPLENBQ25C RixFQUFRNUQsQ0FDUixPQUlPOEQsRUFBTUYsRUFHakJLLEdBQU9MLEdBR1BsRixFQUFFSyxZQUNF UT0KLElBQVcrQyxFQUFLL0MsSUFDaEJKLEtBQVdtRCxFQUFLK0IsV0FBV1QsR0FDM0J4RSxRQUFX LFNBQVNrRixHQUFXaEMsRUFBS2xEPQosUUFBUXdFLEVBQU9VLEdBQVVKLEtBQzdEN0UsTUFBVyxT QUFTaUYsR0FBV2hDLEVBQUtqRCxNQUFNdUUsRUFBT1UsR0FBVUosS0E9CkMzRDVFLFNBQVcsU0FB U2lGLEdBQWNqQyxFQUFLaEQsU0FBU3NFLEVBQU9XLE1BUy9ELFFBQVNDLEtBQ0x0QyxFQUFZaUIs U0FJaD0KQixRQUFTc0IsR0FBTWIsR0FDWCxJQUFLQSxJQUFTRSxHQUNWRyxFQUFPTCxHQUtmLFFB QVNjLEtBQ0FsQixJQUNEQSxHQUFnQixFPQpBQ2hCVSxLQUtSLFFBQVNTLEtBQ0xSLEdBQWEsRUFJ akIsUUFBU1MsR0FBVXpDLEdBRWYsTUFEQUcsR0FBTzVELEVBQUVRLFVBQVc9Cm9ELEVBQU1ILEdB SzlCLFFBQVMwQyxLQUNMLE1BQU9DLFFBQU9DLE1BQVFELE9BQU8vRSxVQUFZK0UsT0FBT3BFLGdC QUFrQm9FLD0KT0FBT0UsU0E1SDdFLEdBQUkxQyxHQUFPNUQsRUFBRVEsV0FDVCtGLFNBQWtCLGFB Q2xCQyxVQUFrQixhQUNsQm5CLFNBQWtCLGFBPQpDbEJNLFdBQWtCLGFBQ2xCL0UsU0FBa0IsYUFD bEJGLFFBQWtCLGFBQ2xCQyxNQUFrQixTQUFTZ0IsRUFBRzhFLEdBQUtDLE1BQU09CkQsSUFDekNm LFNBQWtCLGNBQ25CakMsR0FHQzJCLEtBR0FKLEVBQWMsRUFDZE0sRUFBZSxFQUdmUixHQUFnQixF QUNoQlcsR0FBYT0KLEVBR2JqQyxFQUFjeEQsRUFBRTJELE1BQU1ILGFBQ3RCUSxVQUFjLEVBQ2RE LFNBQWMsU0FBU3JDLEdBQVNrRCxFQUFJbEQsSUFDPQpwQ21DLFdBQWNKLEVBQVFJLFdBQ3RCQyxZ QUFjTCxFQUFRSyxhQXFHMUIsUUFDSWdDLE9BQWtCQSxFQUNsQmxCLElBQWtCQSxFQUM9CmxCVyxP QUFrQkEsRUFDbEJTLE1BQWtCQSxFQUNsQkMsS0FBa0JBLEVBQ2xCRixNQUFrQkEsRUFDbEJHLFVB QWtCQSxFQUNsQkMsVz0KQUFrQkEsS0FHM0JsRyJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2 YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBzdGF0aWMvc2NyaXB0cy9t dmMvY29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcwotLS0gYS9zdGF0aWMvc2Ny aXB0cy9tdmMvY29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcworKysgYi9zdGF0 aWMvc2NyaXB0cy9tdmMvY29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcwpAQCAt MSwyICsxLDIgQEAKLWRlZmluZShbIm12Yy9oaXN0b3J5L2hkY2EtbW9kZWwiLCJtdmMvZGF0YXNl dC9zdGF0ZXMiLCJtdmMvYmFzZS1tdmMiLCJtdmMvPQp1aS91aS1tb2RhbCIsInV0aWxzL25hdHVy YWwtc29ydCIsInV0aWxzL2xvY2FsaXphdGlvbiIsInVpL2hvdmVyaGlnaGxpZ2h0Il09CixmdW5j dGlvbihhLGIsYyxkLGUsZil7ZnVuY3Rpb24gZyhhKXt2YXIgYj0zRGEudG9KU09OKCksYz0zRGso Yix7Y3JlYXRpb25Gbj0KOmZ1bmN0aW9uKGIsYyl7cmV0dXJuIGI9M0RiLm1hcChmdW5jdGlvbihh KXtyZXR1cm57aWQ6YS5pZCxuYW1lOmEubmFtZSxzcmM6PQoiZGF0YXNldCI9M0Q9M0Q9M0RhLmhp c3RvcnlfY29udGVudF90eXBlPyJoZGEiOiJoZGNhIn19KSxhLmNyZWF0ZUhEQ0EoYiwibGk9CnN0 IixjKX19KTtyZXR1cm4gY312YXIgaD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKGMuTG9nZ2FibGVN aXhpbikuZXh0ZW5kKHt0YT0KZ05hbWU6ImxpIixjbGFzc05hbWU6ImNvbGxlY3Rpb24tZWxlbWVu dCIsaW5pdGlhbGl6ZTpmdW5jdGlvbihhKXt0aGlzLmVsZW1lPQpudD0zRGEuZWxlbWVudHx8e30s dGhpcy5zZWxlY3RlZD0zRGEuc2VsZWN0ZWR8fCExfSxyZW5kZXI6ZnVuY3Rpb24oKXtyZXR1cm49 CiB0aGlzLiRlbC5hdHRyKCJkYXRhLWVsZW1lbnQtaWQiLHRoaXMuZWxlbWVudC5pZCkuYXR0cigi ZHJhZ2dhYmxlIiwhMCkuaHRtbD0KKHRoaXMudGVtcGxhdGUoe2VsZW1lbnQ6dGhpcy5lbGVtZW50 fSkpLHRoaXMuc2VsZWN0ZWQmJnRoaXMuJGVsLmFkZENsYXNzKCJzPQplbGVjdGVkIiksdGhpc30s dGVtcGxhdGU6Xy50ZW1wbGF0ZShbJzxhIGNsYXNzPTNEIm5hbWUiIHRpdGxlPTNEIicsZigiQ2xp Y2s9CiB0byByZW5hbWUiKSwnIiBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKSI+JywiPCUtIGVs ZW1lbnQubmFtZSAlPiIsIjwvYT4iLD0KJzxidXR0b24gY2xhc3M9M0QiZGlzY2FyZCBidG4gYnRu LXNtIiB0aXRsZT0zRCInLGYoIlJlbW92ZSB0aGlzIGRhdGFzZXQgZnJvPQptIHRoZSBsaXN0Iiks JyI+JyxmKCJEaXNjYXJkIiksIjwvYnV0dG9uPiJdLmpvaW4oIiIpKSxzZWxlY3Q6ZnVuY3Rpb24o YSl7dGg9CmlzLiRlbC50b2dnbGVDbGFzcygic2VsZWN0ZWQiLGEpLHRoaXMudHJpZ2dlcigic2Vs ZWN0Iix7c291cmNlOnRoaXMsc2VsZWN0ZT0KZDp0aGlzLiRlbC5oYXNDbGFzcygic2VsZWN0ZWQi KX0pfSxkaXNjYXJkOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLGI9M0R0aGlzPQouJGVsLnBhcmVu dCgpLndpZHRoKCk7dGhpcy4kZWwuYW5pbWF0ZSh7Im1hcmdpbi1yaWdodCI6Yn0sImZhc3QiLGZ1 bmN0aW9uKCk9CnthLnRyaWdnZXIoImRpc2NhcmQiLHtzb3VyY2U6YX0pLGEuZGVzdHJveSgpfSl9 LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLm9mZj0KKCksdGhpcy4kZWwucmVtb3ZlKCl9LGV2ZW50 czp7Y2xpY2s6Il9jbGljayIsImNsaWNrIC5uYW1lIjoiX2NsaWNrTmFtZSIsImNsPQppY2sgLmRp c2NhcmQiOiJfY2xpY2tEaXNjYXJkIixkcmFnc3RhcnQ6Il9kcmFnc3RhcnQiLGRyYWdlbmQ6Il9k cmFnZW5kIixkcmE9CmdvdmVyOiJfc2VuZFRvUGFyZW50Iixkcm9wOiJfc2VuZFRvUGFyZW50In0s X2NsaWNrOmZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZz0KYXRpb24oKSx0aGlzLnNlbGVjdChhKX0s X2NsaWNrTmFtZTpmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVuPQp0RGVm YXVsdCgpO3ZhciBiPTNEKFtmKCJFbnRlciBhIG5ldyBuYW1lIGZvciB0aGUgZWxlbWVudCIpLCI6 XG4oIixmKCJOb3RlIHQ9CmhhdCBjaGFuZ2luZyB0aGUgbmFtZSBoZXJlIHdpbGwgbm90IHJlbmFt ZSB0aGUgZGF0YXNldCIpLCIpIl0uam9pbigiIikscHJvbT0KcHQoZigiRW50ZXIgYSBuZXcgbmFt ZSBmb3IgdGhlIGVsZW1lbnQiKSsiOiIsdGhpcy5lbGVtZW50Lm5hbWUpKTtiJiYodGhpcy5lPQps ZW1lbnQubmFtZT0zRGIsdGhpcy5yZW5kZXIoKSl9LF9jbGlja0Rpc2NhcmQ6ZnVuY3Rpb24oYSl7 YS5zdG9wUHJvcGFnYXRpb249CigpLHRoaXMuZGlzY2FyZCgpfSxfZHJhZ3N0YXJ0OmZ1bmN0aW9u KGEpe2Eub3JpZ2luYWxFdmVudCYmKGE9M0RhLm9yaWdpbmFsRT0KdmVudCksYS5kYXRhVHJhbnNm ZXIuZWZmZWN0QWxsb3dlZD0zRCJtb3ZlIixhLmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0L3Bs PQphaW4iLEpTT04uc3RyaW5naWZ5KHRoaXMuZWxlbWVudCkpLHRoaXMuJGVsLmFkZENsYXNzKCJk cmFnZ2luZyIpLHRoaXMuJGVsLnA9CmFyZW50KCkudHJpZ2dlcigiY29sbGVjdGlvbi1lbGVtZW50 LmRyYWdzdGFydCIsW3RoaXNdKX0sX2RyYWdlbmQ6ZnVuY3Rpb24oKT0Ke3RoaXMuJGVsLnJlbW92 ZUNsYXNzKCJkcmFnZ2luZyIpLHRoaXMuJGVsLnBhcmVudCgpLnRyaWdnZXIoImNvbGxlY3Rpb24t ZWxlPQptZW50LmRyYWdlbmQiLFt0aGlzXSl9LF9zZW5kVG9QYXJlbnQ6ZnVuY3Rpb24oYSl7dGhp cy4kZWwucGFyZW50KCkudHJpZ2dlcig9CmEpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJE YXRhc2V0Q29sbGVjdGlvbkVsZW1lbnRWaWV3KCkifX0pLGk9M0RCYWNrYj0Kb25lLlZpZXcuZXh0 ZW5kKGMuTG9nZ2FibGVNaXhpbikuZXh0ZW5kKHtlbGVtZW50Vmlld0NsYXNzOmgsY29sbGVjdGlv bkNsYXNzPQo6YS5IaXN0b3J5TGlzdERhdGFzZXRDb2xsZWN0aW9uLGNsYXNzTmFtZToibGlzdC1j b2xsZWN0aW9uLWNyZWF0b3IgY29sbGVjdGk9Cm9uLWNyZWF0b3IgZmxleC1yb3ctY29udGFpbmVy IixtaW5FbGVtZW50czoxLGRlZmF1bHRBdHRyaWJ1dGVzOntjcmVhdGlvbkZuOj0KZnVuY3Rpb24o KXt0aHJvdyBuZXcgVHlwZUVycm9yKCJubyBjcmVhdGlvbiBmbiBmb3IgY3JlYXRvciIpfSxvbmNy ZWF0ZTpmdW5jPQp0aW9uKCl7fSxvbmNhbmNlbDpmdW5jdGlvbigpe30sYXV0b3Njcm9sbERpc3Q6 MjQsaGlnaGxpZ2h0Q2xyOiJyZ2JhKCA2NCwgMjU9CjUsIDI1NSwgMS4wICkifSxpbml0aWFsaXpl OmZ1bmN0aW9uKGEpe3RoaXMubWV0cmljKCJMaXN0Q29sbGVjdGlvbkNyZWF0b3IuaT0Kbml0aWFs aXplIixhKTt2YXIgYj0zRHRoaXM7Xy5lYWNoKHRoaXMuZGVmYXVsdEF0dHJpYnV0ZXMsZnVuY3Rp b24oYyxkKXtjPTNEPQphW2RdfHxjLGJbZF09M0RjfSksYi5pbml0aWFsRWxlbWVudHM9M0RhLmVs ZW1lbnRzfHxbXSx0aGlzLl9pbnN0YW5jZVNldFVwKCk9Cix0aGlzLl9lbGVtZW50c1NldFVwKCks dGhpcy5fc2V0VXBCZWhhdmlvcnMoKX0sX2luc3RhbmNlU2V0VXA6ZnVuY3Rpb24oKXt0aD0KaXMu c2VsZWN0ZWRJZHM9M0R7fSx0aGlzLiRkcmFnZ2luZz0zRG51bGwsdGhpcy5ibG9ja2luZz0zRCEx fSxfZWxlbWVudHNTZXRVPQpwOmZ1bmN0aW9uKCl7dGhpcy5pbnZhbGlkRWxlbWVudHM9M0RbXSx0 aGlzLndvcmtpbmdFbGVtZW50cz0zRFtdLHRoaXMuZWxlbWU9Cm50Vmlld3M9M0RbXSx0aGlzLndv cmtpbmdFbGVtZW50cz0zRHRoaXMuaW5pdGlhbEVsZW1lbnRzLnNsaWNlKDApLHRoaXMuX2Vucz0K dXJlRWxlbWVudElkcygpLHRoaXMuX3ZhbGlkYXRlRWxlbWVudHMoKSx0aGlzLl9tYW5nbGVEdXBs aWNhdGVOYW1lcygpLHRoaXMuPQpfc29ydEVsZW1lbnRzKCl9LF9lbnN1cmVFbGVtZW50SWRzOmZ1 bmN0aW9uKCl7cmV0dXJuIHRoaXMud29ya2luZ0VsZW1lbnRzLmY9Cm9yRWFjaChmdW5jdGlvbihh KXthLmhhc093blByb3BlcnR5KCJpZCIpfHwoYS5pZD0zRF8udW5pcXVlSWQoKSl9KSx0aGlzLndv cj0Ka2luZ0VsZW1lbnRzfSxfdmFsaWRhdGVFbGVtZW50czpmdW5jdGlvbigpe3ZhciBhPTNEdGhp cztyZXR1cm4gYS5pbnZhbGlkRWxlPQptZW50cz0zRFtdLHRoaXMud29ya2luZ0VsZW1lbnRzPTNE dGhpcy53b3JraW5nRWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uKGIpe3Y9CmFyIGM9M0RhLl9pc0Vs ZW1lbnRJbnZhbGlkKGIpO3JldHVybiBjJiZhLmludmFsaWRFbGVtZW50cy5wdXNoKHtlbGVtZW50 OmIsdD0KZXh0OmN9KSwhY30pLHRoaXMud29ya2luZ0VsZW1lbnRzfSxfaXNFbGVtZW50SW52YWxp ZDpmdW5jdGlvbihhKXtyZXR1cm4iZGF0PQphc2V0IiE9M0Q9M0RhLmhpc3RvcnlfY29udGVudF90 eXBlP2YoImlzIG5vdCBhIGRhdGFzZXQiKTphLnN0YXRlIT0zRD0zRGIuT0s9Cj9mKF8uY29udGFp bnMoYi5OT1RfUkVBRFlfU1RBVEVTLGEuc3RhdGUpPyJoYXNuJ3QgZmluaXNoZWQgcnVubmluZyB5 ZXQiOiJoYT0KcyBlcnJvcmVkLCBpcyBwYXVzZWQsIG9yIGlzIG5vdCBhY2Nlc3NpYmxlIik6YS5k ZWxldGVkfHxhLnB1cmdlZD9mKCJoYXMgYmVlPQpuIGRlbGV0ZWQgb3IgcHVyZ2VkIik6bnVsbH0s X21hbmdsZUR1cGxpY2F0ZU5hbWVzOmZ1bmN0aW9uKCl7dmFyIGE9M0Q5MDAsYj0KPTNEMSxjPTNE e307dGhpcy53b3JraW5nRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbihkKXtmb3IodmFyIGU9M0Rk Lm5hbWU7Yy5oPQphc093blByb3BlcnR5KGUpOylpZihlPTNEZC5uYW1lKyIgKCIrYisiKSIsYis9 M0QxLGI+PTNEYSl0aHJvdyBuZXcgRXJyb3IoIlM9CmFmZXR5IGhpdCBpbiB3aGlsZSBsb29wIC0g dGhhdHMgaW1wcmVzc2l2ZSIpO2QubmFtZT0zRGUsY1tkLm5hbWVdPTNEITB9KX0sXz0Kc29ydEVs ZW1lbnRzOmZ1bmN0aW9uKCl7fSxyZW5kZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy53b3Jr aW5nRWxlbWVudHMuPQpsZW5ndGg8dGhpcy5taW5FbGVtZW50cz90aGlzLl9yZW5kZXJJbnZhbGlk KGEsYik6KHRoaXMuJGVsLmVtcHR5KCkuaHRtbCh0aGk9CnMudGVtcGxhdGVzLm1haW4oKSksdGhp cy5fcmVuZGVySGVhZGVyKGEpLHRoaXMuX3JlbmRlck1pZGRsZShhKSx0aGlzLl9yZW5kZT0KckZv b3RlcihhKSx0aGlzLl9hZGRQbHVnaW5Db21wb25lbnRzKCksdGhpcy4kKCIuY29sbGVjdGlvbi1u YW1lIikuZm9jdXMoKSx0PQpoaXMudHJpZ2dlcigicmVuZGVyZWQiLHRoaXMpLHRoaXMpfSxfcmVu ZGVySW52YWxpZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiQ9CmVsLmVtcHR5KCkuaHRtbCh0aGlz LnRlbXBsYXRlcy5pbnZhbGlkSW5pdGlhbCh7cHJvYmxlbXM6dGhpcy5pbnZhbGlkRWxlbWVudD0K cyxlbGVtZW50czp0aGlzLndvcmtpbmdFbGVtZW50c30pKSwiZnVuY3Rpb24iPTNEPTNEdHlwZW9m IHRoaXMub25jYW5jZWwmJnRoPQppcy4kKCIuY2FuY2VsLWNyZWF0ZS5idG4iKS5zaG93KCksdGhp cy50cmlnZ2VyKCJyZW5kZXJlZCIsdGhpcyksdGhpc30sX3JlbmQ9CmVySGVhZGVyOmZ1bmN0aW9u KCl7dmFyIGE9M0R0aGlzLiQoIi5oZWFkZXIiKS5lbXB0eSgpLmh0bWwodGhpcy50ZW1wbGF0ZXMu aD0KZWFkZXIoKSkuZmluZCgiLmhlbHAtY29udGVudCIpLnByZXBlbmQoJCh0aGlzLnRlbXBsYXRl cy5oZWxwQ29udGVudCgpKSk7cmV0PQp1cm4gdGhpcy5pbnZhbGlkRWxlbWVudHMubGVuZ3RoJiZ0 aGlzLl9pbnZhbGlkRWxlbWVudHNBbGVydCgpLGF9LF9yZW5kZXJNaWQ9CmRsZTpmdW5jdGlvbihh KXt2YXIgYj0zRHRoaXMuJCgiLm1pZGRsZSIpLmVtcHR5KCkuaHRtbCh0aGlzLnRlbXBsYXRlcy5t aWRkbD0KZSgpKTtyZXR1cm4gdGhpcy5fcmVuZGVyTGlzdChhKSxifSxfcmVuZGVyRm9vdGVyOmZ1 bmN0aW9uKCl7dmFyIGE9M0R0aGlzLiQoPQoiLmZvb3RlciIpLmVtcHR5KCkuaHRtbCh0aGlzLnRl bXBsYXRlcy5mb290ZXIoKSk7cmV0dXJuImZ1bmN0aW9uIj0zRD0zRHR5cGU9Cm9mIHRoaXMub25j YW5jZWwmJnRoaXMuJCgiLmNhbmNlbC1jcmVhdGUuYnRuIikuc2hvdygpLGF9LF9hZGRQbHVnaW5D b21wb25lbj0KdHM6ZnVuY3Rpb24oKXt0aGlzLiQoIi5oZWxwLWNvbnRlbnQgaSIpLmhvdmVyaGln aGxpZ2h0KCIuY29sbGVjdGlvbi1jcmVhdG9yPQoiLHRoaXMuaGlnaGxpZ2h0Q2xyKX0sX2ludmFs aWRFbGVtZW50c0FsZXJ0OmZ1bmN0aW9uKCl7dGhpcy5fc2hvd0FsZXJ0KHRoaXM9Ci50ZW1wbGF0 ZXMuaW52YWxpZEVsZW1lbnRzKHtwcm9ibGVtczp0aGlzLmludmFsaWRFbGVtZW50c30pLCJhbGVy dC13YXJuaW5nIj0KKX0sX3ZhbGlkYXRpb25XYXJuaW5nOmZ1bmN0aW9uKGEsYil7dmFyIGM9M0Qi dmFsaWRhdGlvbi13YXJuaW5nIjsibmFtZSI9M0Q9Cj0zRD0zRGEmJihhPTNEdGhpcy4kKCIuY29s bGVjdGlvbi1uYW1lIikuYWRkKHRoaXMuJCgiLmNvbGxlY3Rpb24tbmFtZS1wcm9tcD0KdCIpKSx0 aGlzLiQoIi5jb2xsZWN0aW9uLW5hbWUiKS5mb2N1cygpLnNlbGVjdCgpKSxiPyhhPTNEYXx8dGhp cy4kKCIuIitjKSxhPQoucmVtb3ZlQ2xhc3MoYykpOmEuYWRkQ2xhc3MoYyl9LF9kaXNhYmxlTmFt ZUFuZENyZWF0ZTpmdW5jdGlvbihhKXthPTNEXy5pc1U9Cm5kZWZpbmVkKGEpPyEwOmEsYSYmKHRo aXMuJCgiLmNvbGxlY3Rpb24tbmFtZSIpLnByb3AoImRpc2FibGVkIiwhMCksdGhpcy4kKD0KIi5j cmVhdGUtY29sbGVjdGlvbiIpLnRvZ2dsZUNsYXNzKCJkaXNhYmxlZCIsITApKX0sJGxpc3Q6ZnVu Y3Rpb24oKXtyZXR1cm4gPQp0aGlzLiQoIi5jb2xsZWN0aW9uLWVsZW1lbnRzIil9LF9yZW5kZXJD bGVhclNlbGVjdGVkOmZ1bmN0aW9uKCl7Xy5zaXplKHRoaXM9Ci5zZWxlY3RlZElkcyk/dGhpcy4k KCIuY29sbGVjdGlvbi1lbGVtZW50cy1jb250cm9scyA+IC5jbGVhci1zZWxlY3RlZCIpLnNobz0K dygpOnRoaXMuJCgiLmNvbGxlY3Rpb24tZWxlbWVudHMtY29udHJvbHMgPiAuY2xlYXItc2VsZWN0 ZWQiKS5oaWRlKCl9LF9yZW5kPQplckxpc3Q6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMsYj0zRGpR dWVyeSgiPGRpdi8+IiksYz0zRGEuJGxpc3QoKTtfLmVhY2godGg9CmlzLmVsZW1lbnRWaWV3cyxm dW5jdGlvbihiKXtiLmRlc3Ryb3koKSxhLnJlbW92ZUVsZW1lbnRWaWV3KGIpfSksYS53b3JraW5n RT0KbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBkPTNEYS5fY3JlYXRlRWxlbWVudFZp ZXcoYyk7Yi5hcHBlbmQoZC4kZWwpPQp9KSxhLl9yZW5kZXJDbGVhclNlbGVjdGVkKCksYy5lbXB0 eSgpLmFwcGVuZChiLmNoaWxkcmVuKCkpLF8uaW52b2tlKGEuZWxlbWU9Cm50Vmlld3MsInJlbmRl ciIpLGMuaGVpZ2h0KCk+Yy5jc3MoIm1heC1oZWlnaHQiKT9jLmNzcygiYm9yZGVyLXdpZHRoIiwi MXB4ID0KMHB4IDFweCAwcHgiKTpjLmNzcygiYm9yZGVyLXdpZHRoIiwiMHB4Iil9LF9jcmVhdGVF bGVtZW50VmlldzpmdW5jdGlvbihhKXt2PQphciBiPTNEbmV3IHRoaXMuZWxlbWVudFZpZXdDbGFz cyh7ZWxlbWVudDphLHNlbGVjdGVkOl8uaGFzKHRoaXMuc2VsZWN0ZWRJZHM9CixhLmlkKX0pO3Jl dHVybiB0aGlzLmVsZW1lbnRWaWV3cy5wdXNoKGIpLHRoaXMuX2xpc3RlblRvRWxlbWVudFZpZXco YiksYn0sXz0KbGlzdGVuVG9FbGVtZW50VmlldzpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXM7Yi5s aXN0ZW5UbyhhLHtzZWxlY3Q6ZnVuY3Rpb24oPQphKXt2YXIgYz0zRGEuc291cmNlLmVsZW1lbnQ7 YS5zZWxlY3RlZD9iLnNlbGVjdGVkSWRzW2MuaWRdPTNEITA6ZGVsZXRlIGIuc2U9CmxlY3RlZElk c1tjLmlkXSxiLnRyaWdnZXIoImVsZW1lbnRzOnNlbGVjdCIsYSl9LGRpc2NhcmQ6ZnVuY3Rpb24o YSl7Yi50cmlnZz0KZXIoImVsZW1lbnRzOmRpc2NhcmQiLGEpfX0pfSxhZGRFbGVtZW50Vmlldzpm dW5jdGlvbigpe30scmVtb3ZlRWxlbWVudFZpZXc6PQpmdW5jdGlvbihhKXtkZWxldGUgdGhpcy5z ZWxlY3RlZElkc1thLmVsZW1lbnQuaWRdLHRoaXMuX3JlbmRlckNsZWFyU2VsZWN0ZWQ9CigpLHRo aXMuZWxlbWVudFZpZXdzPTNEXy53aXRob3V0KHRoaXMuZWxlbWVudFZpZXdzLGEpLHRoaXMuc3Rv cExpc3RlbmluZyhhKT0KfSxfcmVuZGVyTm9FbGVtZW50c0xlZnQ6ZnVuY3Rpb24oKXt0aGlzLl9k aXNhYmxlTmFtZUFuZENyZWF0ZSghMCksdGhpcy4kKCIuPQpjb2xsZWN0aW9uLWVsZW1lbnRzIiku YXBwZW5kKHRoaXMudGVtcGxhdGVzLm5vRWxlbWVudHNMZWZ0KCkpfSxfZWxlbWVudFRvSlM9Ck9O OmZ1bmN0aW9uKGEpe3JldHVybiBhfSxjcmVhdGVMaXN0OmZ1bmN0aW9uKGEpe2lmKCF0aGlzLndv cmtpbmdFbGVtZW50cy5sZT0Kbmd0aCl7dmFyIGI9M0RmKCJObyB2YWxpZCBlbGVtZW50cyBmb3Ig ZmluYWwgbGlzdCIpKyIuICI7cmV0dXJuIGIrPTNEJzxhIGNsPQphc3M9M0QiY2FuY2VsLWNyZWF0 ZSIgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCk7Ij4nK2YoIkNhbmNlbCIpKyI8L2E+ICIsYis9 Cj0zRGYoIm9yIiksYis9M0QnIDxhIGNsYXNzPTNEInJlc2V0IiBocmVmPTNEImphdmFzY3JpcHQ6 dm9pZCgwKTsiPicrZigic3Rhcj0KdCBvdmVyIikrIjwvYT4uIix2b2lkIHRoaXMuX3Nob3dBbGVy dChiKX12YXIgYz0zRHRoaXMsZD0zRHRoaXMud29ya2luZ0VsZW1lPQpudHMubWFwKGZ1bmN0aW9u KGEpe3JldHVybiBjLl9lbGVtZW50VG9KU09OKGEpfSk7cmV0dXJuIGMuYmxvY2tpbmc9M0QhMCxj LmM9CnJlYXRpb25GbihkLGEpLmFsd2F5cyhmdW5jdGlvbigpe2MuYmxvY2tpbmc9M0QhMX0pLmZh aWwoZnVuY3Rpb24oYSxiKXtjLnRyaT0KZ2dlcigiZXJyb3IiLHt4aHI6YSxzdGF0dXM6YixtZXNz YWdlOmYoIkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGNyZWF0aW5nIHRoPQppcyBjb2xsZWN0aW9u Iil9KX0pLmRvbmUoZnVuY3Rpb24oYSxiLGQpe2MudHJpZ2dlcigiY29sbGVjdGlvbjpjcmVhdGVk IixhLGI9CixkKSxjLm1ldHJpYygiY29sbGVjdGlvbjpjcmVhdGVkIixhKSwiZnVuY3Rpb24iPTNE PTNEdHlwZW9mIGMub25jcmVhdGUmJmMubz0KbmNyZWF0ZS5jYWxsKHRoaXMsYSxiLGQpfSl9LF9z ZXRVcEJlaGF2aW9yczpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9uKCJlcnJvPQpyIix0aGlzLl9l cnJvckhhbmRsZXIpLHRoaXMub25jZSgicmVuZGVyZWQiLGZ1bmN0aW9uKCl7dGhpcy50cmlnZ2Vy KCJyZW5kZXI9CmVkOmluaXRpYWwiLHRoaXMpfSksdGhpcy5vbigiZWxlbWVudHM6c2VsZWN0Iixm dW5jdGlvbigpe3RoaXMuX3JlbmRlckNsZWFyUz0KZWxlY3RlZCgpfSksdGhpcy5vbigiZWxlbWVu dHM6ZGlzY2FyZCIsZnVuY3Rpb24oYSl7dmFyIGI9M0RhLnNvdXJjZS5lbGVtZW50PQo7dGhpcy5y ZW1vdmVFbGVtZW50VmlldyhhLnNvdXJjZSksdGhpcy53b3JraW5nRWxlbWVudHM9M0RfLndpdGhv dXQodGhpcy53b3I9CmtpbmdFbGVtZW50cyxiKSx0aGlzLndvcmtpbmdFbGVtZW50cy5sZW5ndGh8 fHRoaXMuX3JlbmRlck5vRWxlbWVudHNMZWZ0KCl9KT0KLHRoaXN9LF9lcnJvckhhbmRsZXI6ZnVu Y3Rpb24oYSl7dGhpcy5lcnJvcihhKTt2YXIgYj0zRHRoaXM7aWYoY29udGVudD0zRGEuPQptZXNz YWdlfHxmKCJBbiBlcnJvciBvY2N1cnJlZCIpLGEueGhyKXt2YXIgYz0zRGEueGhyLGQ9M0RhLm1l c3NhZ2U7Y29udGVudCs9Cj0zRDA9M0Q9M0Q9M0RjLnJlYWR5U3RhdGUmJjA9M0Q9M0Q9M0RjLnN0 YXR1cz8iOiAiK2YoIkdhbGF4eSBjb3VsZCBub3QgYmUgcj0KZWFjaGVkIGFuZCBtYXkgYmUgdXBk YXRpbmcuIikrZigiIFRyeSBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLiIpOmMucmVzcG9uc2VKPQpT T04/Ijo8YnIgLz48cHJlPiIrSlNPTi5zdHJpbmdpZnkoYy5yZXNwb25zZUpTT04pKyI8L3ByZT4i OiI6ICIrZH1iLl9zaG93QWw9CmVydChjb250ZW50LCJhbGVydC1kYW5nZXIiKX0sZXZlbnRzOnsi Y2xpY2sgLm1vcmUtaGVscCI6Il9jbGlja01vcmVIZWxwIiwiYz0KbGljayAubGVzcy1oZWxwIjoi X2NsaWNrTGVzc0hlbHAiLCJjbGljayAubWFpbi1oZWxwIjoiX3RvZ2dsZUhlbHAiLCJjbGljayAu PQpoZWFkZXIgLmFsZXJ0IGJ1dHRvbiI6Il9oaWRlQWxlcnQiLCJjbGljayAucmVzZXQiOiJyZXNl dCIsImNsaWNrIC5jbGVhci1zZWw9CmVjdGVkIjoiY2xlYXJTZWxlY3RlZEVsZW1lbnRzIiwiY2xp Y2sgLmNvbGxlY3Rpb24tZWxlbWVudHMiOiJjbGVhclNlbGVjdGVkRT0KbGVtZW50cyIsImRyYWdv dmVyIC5jb2xsZWN0aW9uLWVsZW1lbnRzIjoiX2RyYWdvdmVyRWxlbWVudHMiLCJkcm9wIC5jb2xs ZWN0PQppb24tZWxlbWVudHMiOiJfZHJvcEVsZW1lbnRzIiwiY29sbGVjdGlvbi1lbGVtZW50LmRy YWdzdGFydCAuY29sbGVjdGlvbi1lbGU9Cm1lbnRzIjoiX2VsZW1lbnREcmFnc3RhcnQiLCJjb2xs ZWN0aW9uLWVsZW1lbnQuZHJhZ2VuZCAgIC5jb2xsZWN0aW9uLWVsZW1lbj0KdHMiOiJfZWxlbWVu dERyYWdlbmQiLCJjaGFuZ2UgLmNvbGxlY3Rpb24tbmFtZSI6Il9jaGFuZ2VOYW1lIiwia2V5ZG93 biAuY29sPQpsZWN0aW9uLW5hbWUiOiJfbmFtZUNoZWNrRm9yRW50ZXIiLCJjbGljayAuY2FuY2Vs LWNyZWF0ZSI6ZnVuY3Rpb24oKXsiZnVuY3Q9CmlvbiI9M0Q9M0R0eXBlb2YgdGhpcy5vbmNhbmNl bCYmdGhpcy5vbmNhbmNlbC5jYWxsKHRoaXMpfSwiY2xpY2sgLmNyZWF0ZS1jbz0KbGxlY3Rpb24i OiJfY2xpY2tDcmVhdGUifSxfY2xpY2tNb3JlSGVscDpmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdh dGlvbigpLHRoPQppcy4kKCIubWFpbi1oZWxwIikuYWRkQ2xhc3MoImV4cGFuZGVkIiksdGhpcy4k KCIubW9yZS1oZWxwIikuaGlkZSgpfSxfY2xpY2s9Ckxlc3NIZWxwOmZ1bmN0aW9uKGEpe2Euc3Rv cFByb3BhZ2F0aW9uKCksdGhpcy4kKCIubWFpbi1oZWxwIikucmVtb3ZlQ2xhc3MoIj0KZXhwYW5k ZWQiKSx0aGlzLiQoIi5tb3JlLWhlbHAiKS5zaG93KCl9LF90b2dnbGVIZWxwOmZ1bmN0aW9uKGEp e2Euc3RvcFByb3BhPQpnYXRpb24oKSx0aGlzLiQoIi5tYWluLWhlbHAiKS50b2dnbGVDbGFzcygi ZXhwYW5kZWQiKSx0aGlzLiQoIi5tb3JlLWhlbHAiKS49CnRvZ2dsZSgpfSxfc2hvd0FsZXJ0OmZ1 bmN0aW9uKGEsYil7Yj0zRGJ8fCJhbGVydC1kYW5nZXIiLHRoaXMuJCgiLm1haW4taGVscD0KIiku aGlkZSgpLHRoaXMuJCgiLmhlYWRlciAuYWxlcnQiKS5hdHRyKCJjbGFzcyIsImFsZXJ0IGFsZXJ0 LWRpc21pc3NhYmxlIikuPQphZGRDbGFzcyhiKS5zaG93KCkuZmluZCgiLmFsZXJ0LW1lc3NhZ2Ui KS5odG1sKGEpfSxfaGlkZUFsZXJ0OmZ1bmN0aW9uKCl7dGg9CmlzLiQoIi5tYWluLWhlbHAiKS5z aG93KCksdGhpcy4kKCIuaGVhZGVyIC5hbGVydCIpLmhpZGUoKX0scmVzZXQ6ZnVuY3Rpb24oKT0K e3RoaXMuX2luc3RhbmNlU2V0VXAoKSx0aGlzLl9lbGVtZW50c1NldFVwKCksdGhpcy5yZW5kZXIo KX0sY2xlYXJTZWxlY3RlZEVsPQplbWVudHM6ZnVuY3Rpb24oKXt0aGlzLiQoIi5jb2xsZWN0aW9u LWVsZW1lbnRzIC5jb2xsZWN0aW9uLWVsZW1lbnQiKS5yZW1vdmU9CkNsYXNzKCJzZWxlY3RlZCIp LHRoaXMuJCgiLmNvbGxlY3Rpb24tZWxlbWVudHMtY29udHJvbHMgPiAuY2xlYXItc2VsZWN0ZWQi KT0KLmhpZGUoKX0sX2RyYWdvdmVyRWxlbWVudHM6ZnVuY3Rpb24oYSl7YS5wcmV2ZW50RGVmYXVs dCgpO3ZhciBiPTNEdGhpcy4kbGlzPQp0KCk7dGhpcy5fY2hlY2tGb3JBdXRvc2Nyb2xsKGIsYS5v cmlnaW5hbEV2ZW50LmNsaWVudFkpO3ZhciBjPTNEdGhpcy5fZ2V0TmU9CmFyZXN0RWxlbWVudChh Lm9yaWdpbmFsRXZlbnQuY2xpZW50WSk7dGhpcy4kKCIuZWxlbWVudC1kcm9wLXBsYWNlaG9sZGVy Iikucj0KZW1vdmUoKTt2YXIgZD0zRCQoJzxkaXYgY2xhc3M9M0QiZWxlbWVudC1kcm9wLXBsYWNl aG9sZGVyIj48L2Rpdj4nKTtjLnNpemUoPQopP2MuYmVmb3JlKGQpOmIuYXBwZW5kKGQpfSxfY2hl Y2tGb3JBdXRvc2Nyb2xsOmZ1bmN0aW9uKGEsYil7dmFyIGM9M0QyLGQ9M0Q9CmEub2Zmc2V0KCks ZT0zRGEuc2Nyb2xsVG9wKCksZj0zRGItZC50b3AsZz0zRGQudG9wK2Eub3V0ZXJIZWlnaHQoKS1i O2Y+PTNEMD0KJiZmPHRoaXMuYXV0b3Njcm9sbERpc3Q/YS5zY3JvbGxUb3AoZS1jKTpnPj0zRDAm Jmc8dGhpcy5hdXRvc2Nyb2xsRGlzdCYmYS5zPQpjcm9sbFRvcChlK2MpfSxfZ2V0TmVhcmVzdEVs ZW1lbnQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTNENCxjPTNEdGhpcy4kKCIuY289CmxsZWN0aW9u LWVsZW1lbnRzIGxpLmNvbGxlY3Rpb24tZWxlbWVudCIpLnRvQXJyYXkoKSxkPTNEMDtkPGMubGVu Z3RoO2QrKyl7dj0KYXIgZT0zRCQoY1tkXSksZj0zRGUub2Zmc2V0KCkudG9wLGc9M0RNYXRoLmZs b29yKGUub3V0ZXJIZWlnaHQoKS8yKStiO2lmKGYrPQpnPmEmJmE+Zi1nKXJldHVybiBlfXJldHVy biAkKCl9LF9kcm9wRWxlbWVudHM6ZnVuY3Rpb24oYSl7YS5vcmlnaW5hbEV2ZW50JiY9CihhPTNE YS5vcmlnaW5hbEV2ZW50KSxhLnByZXZlbnREZWZhdWx0KCksYS5kYXRhVHJhbnNmZXIuZHJvcEVm ZmVjdD0zRCJtb3ZlIj0KO3ZhciBiPTNEdGhpcy5fZ2V0TmVhcmVzdEVsZW1lbnQoYS5jbGllbnRZ KTtyZXR1cm4gYi5zaXplKCk/dGhpcy4kZHJhZ2dpbmcuPQppbnNlcnRCZWZvcmUoYik6dGhpcy4k ZHJhZ2dpbmcuaW5zZXJ0QWZ0ZXIodGhpcy4kKCIuY29sbGVjdGlvbi1lbGVtZW50cyAuY289Cmxs ZWN0aW9uLWVsZW1lbnQiKS5sYXN0KCkpLHRoaXMuX3N5bmNPcmRlclRvRG9tKCksITF9LF9zeW5j T3JkZXJUb0RvbTpmdW5jdD0KaW9uKCl7dmFyIGE9M0R0aGlzLGI9M0RbXTt0aGlzLiQoIi5jb2xs ZWN0aW9uLWVsZW1lbnRzIC5jb2xsZWN0aW9uLWVsZW1lbnQiPQopLmVhY2goZnVuY3Rpb24oKXt2 YXIgYz0zRCQodGhpcykuYXR0cigiZGF0YS1lbGVtZW50LWlkIiksZD0zRF8uZmluZFdoZXJlKGE9 Ci53b3JraW5nRWxlbWVudHMse2lkOmN9KTtkP2IucHVzaChkKTpjb25zb2xlLmVycm9yKCJtaXNz aW5nIGVsZW1lbnQ6ICIsYyl9KT0KLHRoaXMud29ya2luZ0VsZW1lbnRzPTNEYix0aGlzLl9yZW5k ZXJMaXN0KCl9LF9lbGVtZW50RHJhZ3N0YXJ0OmZ1bmN0aW9uKGEsPQpiKXtiLnNlbGVjdCghMCks dGhpcy4kZHJhZ2dpbmc9M0R0aGlzLiQoIi5jb2xsZWN0aW9uLWVsZW1lbnRzIC5jb2xsZWN0aW9u LWU9CmxlbWVudC5zZWxlY3RlZCIpfSxfZWxlbWVudERyYWdlbmQ6ZnVuY3Rpb24oKXskKCIuZWxl bWVudC1kcm9wLXBsYWNlaG9sZGVyIj0KKS5yZW1vdmUoKSx0aGlzLiRkcmFnZ2luZz0zRG51bGx9 LF9jaGFuZ2VOYW1lOmZ1bmN0aW9uKCl7dGhpcy5fdmFsaWRhdGlvbldhPQpybmluZygibmFtZSIs ISF0aGlzLl9nZXROYW1lKCkpfSxfbmFtZUNoZWNrRm9yRW50ZXI6ZnVuY3Rpb24oYSl7MTMhPTNE PTNEYS49CmtleUNvZGV8fHRoaXMuYmxvY2tpbmd8fHRoaXMuX2NsaWNrQ3JlYXRlKCl9LF9nZXRO YW1lOmZ1bmN0aW9uKCl7cmV0dXJuIF8uZT0Kc2NhcGUodGhpcy4kKCIuY29sbGVjdGlvbi1uYW1l IikudmFsKCkpfSxfY2xpY2tDcmVhdGU6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoPQppcy5fZ2V0TmFt ZSgpO2E/dGhpcy5ibG9ja2luZ3x8dGhpcy5jcmVhdGVMaXN0KGEpOnRoaXMuX3ZhbGlkYXRpb25X YXJuaW5nKCI9Cm5hbWUiKX0sdGVtcGxhdGVzOnttYWluOl8udGVtcGxhdGUoWyc8ZGl2IGNsYXNz PTNEImhlYWRlciBmbGV4LXJvdyBuby1mbGV4Ij0KPjwvZGl2PicsJzxkaXYgY2xhc3M9M0QibWlk ZGxlIGZsZXgtcm93IGZsZXgtcm93LWNvbnRhaW5lciI+PC9kaXY+JywnPGRpdiBjPQpsYXNzPTNE ImZvb3RlciBmbGV4LXJvdyBuby1mbGV4Ij48L2Rpdj4nXS5qb2luKCIiKSksaGVhZGVyOl8udGVt cGxhdGUoWyc8ZGk9CnYgY2xhc3M9M0QibWFpbi1oZWxwIHdlbGwgY2xlYXIiPicsJzxhIGNsYXNz PTNEIm1vcmUtaGVscCIgaHJlZj0zRCJqYXZhc2NyaT0KcHQ6dm9pZCgwKTsiPicsZigiTW9yZSBo ZWxwIiksIjwvYT4iLCc8ZGl2IGNsYXNzPTNEImhlbHAtY29udGVudCI+JywnPGEgY2xhPQpzcz0z RCJsZXNzLWhlbHAiIGhyZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApOyI+JyxmKCJMZXNzIiksIjwv YT4iLCI8L2Rpdj4iLCI9CjwvZGl2PiIsJzxkaXYgY2xhc3M9M0QiYWxlcnQgYWxlcnQtZGlzbWlz c2FibGUiPicsJzxidXR0b24gdHlwZT0zRCJidXR0b24iID0KY2xhc3M9M0QiY2xvc2UiIGRhdGEt ZGlzbWlzcz0zRCJhbGVydCIgJywndGl0bGU9M0QiJyxmKCJDbG9zZSBhbmQgc2hvdyBtb3JlPQog aGVscCIpLCciIGFyaWEtaGlkZGVuPTNEInRydWUiPiZ0aW1lczs8L2J1dHRvbj4nLCc8c3BhbiBj bGFzcz0zRCJhbGVydC1tZXM9CnNhZ2UiPjwvc3Bhbj4nLCI8L2Rpdj4iXS5qb2luKCIiKSksbWlk ZGxlOl8udGVtcGxhdGUoWyc8ZGl2IGNsYXNzPTNEImNvbGxlYz0KdGlvbi1lbGVtZW50cy1jb250 cm9scyI+JywnPGEgY2xhc3M9M0QicmVzZXQiIGhyZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApOyIg PQonLCd0aXRsZT0zRCInLGYoIlVuZG8gYWxsIHJlb3JkZXJpbmcgYW5kIGRpc2NhcmRzIiksJyI+ JyxmKCJTdGFydCBvdmVyIiksIjw9Ci9hPiIsJzxhIGNsYXNzPTNEImNsZWFyLXNlbGVjdGVkIiBo cmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKTsiICcsJ3RpdGxlPTNEIj0KJyxmKCJEZS1zZWxlY3Qg YWxsIHNlbGVjdGVkIGRhdGFzZXRzIiksJyI+JyxmKCJDbGVhciBzZWxlY3RlZCIpLCI8L2E+Iiwi PC9kPQppdj4iLCc8ZGl2IGNsYXNzPTNEImNvbGxlY3Rpb24tZWxlbWVudHMgc2Nyb2xsLWNvbnRh aW5lciBmbGV4LXJvdyI+JywiPC9kaXY9Cj4iXS5qb2luKCIiKSksZm9vdGVyOl8udGVtcGxhdGUo Wyc8ZGl2IGNsYXNzPTNEImF0dHJpYnV0ZXMgY2xlYXIiPicsJzxkaXYgYz0KbGFzcz0zRCJjbGVh ciI+JywnPGlucHV0IGNsYXNzPTNEImNvbGxlY3Rpb24tbmFtZSBmb3JtLWNvbnRyb2wgcHVsbC1y aWdodCIgPQonLCdwbGFjZWhvbGRlcj0zRCInLGYoIkVudGVyIGEgbmFtZSBmb3IgeW91ciBuZXcg Y29sbGVjdGlvbiIpLCciIC8+JywnPGRpdiA9CmNsYXNzPTNEImNvbGxlY3Rpb24tbmFtZS1wcm9t cHQgcHVsbC1yaWdodCI+JyxmKCJOYW1lIiksIjo8L2Rpdj4iLCI8L2Rpdj4iLD0KIjwvZGl2PiIs JzxkaXYgY2xhc3M9M0QiYWN0aW9ucyBjbGVhciB2ZXJ0aWNhbGx5LXNwYWNlZCI+JywnPGRpdiBj bGFzcz0zRCJvPQp0aGVyLW9wdGlvbnMgcHVsbC1sZWZ0Ij4nLCc8YnV0dG9uIGNsYXNzPTNEImNh bmNlbC1jcmVhdGUgYnRuIiB0YWJpbmRleD0zRCI9Ci0xIj4nLGYoIkNhbmNlbCIpLCI8L2J1dHRv bj4iLCc8ZGl2IGNsYXNzPTNEImNyZWF0ZS1vdGhlciBidG4tZ3JvdXAgZHJvcHVwIj0KPicsJzxi dXR0b24gY2xhc3M9M0QiYnRuIGJ0bi1kZWZhdWx0IGRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dn bGU9M0QiZHJvcGRvPQp3biI+JyxmKCJDcmVhdGUgYSBkaWZmZXJlbnQga2luZCBvZiBjb2xsZWN0 aW9uIiksJyA8c3BhbiBjbGFzcz0zRCJjYXJldCI+PC89CnNwYW4+JywiPC9idXR0b24+IiwnPHVs IGNsYXNzPTNEImRyb3Bkb3duLW1lbnUiIHJvbGU9M0QibWVudSI+JywnPGxpPjxhIGhyZT0KZj0z RCIjIj4nLGYoIkNyZWF0ZSBhIDxpPnNpbmdsZTwvaT4gcGFpciIpLCI8L2E+PC9saT4iLCc8bGk+ PGEgaHJlZj0zRCIjIj4nPQosZigiQ3JlYXRlIGEgbGlzdCBvZiA8aT51bnBhaXJlZDwvaT4gZGF0 YXNldHMiKSwiPC9hPjwvbGk+IiwiPC91bD4iLCI8L2Rpdj49CiIsIjwvZGl2PiIsJzxkaXYgY2xh c3M9M0QibWFpbi1vcHRpb25zIHB1bGwtcmlnaHQiPicsJzxidXR0b24gY2xhc3M9M0QiY3JlYT0K dGUtY29sbGVjdGlvbiBidG4gYnRuLXByaW1hcnkiPicsZigiQ3JlYXRlIGxpc3QiKSwiPC9idXR0 b24+IiwiPC9kaXY+IiwiPC9kPQppdj4iXS5qb2luKCIiKSksaGVscENvbnRlbnQ6Xy50ZW1wbGF0 ZShbIjxwPiIsZihbIkNvbGxlY3Rpb25zIG9mIGRhdGFzZXRzIGE9CnJlIHBlcm1hbmVudCwgb3Jk ZXJlZCBsaXN0cyBvZiBkYXRhc2V0cyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdG9vbHMgYW5kICIs Ij0Kd29ya2Zsb3dzIGluIG9yZGVyIHRvIGhhdmUgYW5hbHlzZXMgZG9uZSBvbiBlYWNoIG1lbWJl ciBvZiB0aGUgZW50aXJlIGdyb3VwPQouIFRoaXMgaW50ZXJmYWNlIGFsbG93cyAiLCJ5b3UgdG8g Y3JlYXRlIGEgY29sbGVjdGlvbiBhbmQgcmUtb3JkZXIgdGhlIGZpbmE9CmwgY29sbGVjdGlvbi4i XS5qb2luKCIiKSksIjwvcD4iLCI8dWw+IiwiPGxpPiIsZihbIlJlbmFtZSBlbGVtZW50cyBpbiB0 aGUgbD0KaXN0IGJ5IGNsaWNraW5nIG9uICIsJzxpIGRhdGEtdGFyZ2V0PTNEIi5jb2xsZWN0aW9u LWVsZW1lbnQgLm5hbWUiPnRoZSBleGlzPQp0aW5nIG5hbWU8L2k+LiddLmpvaW4oIiIpKSwiPC9s aT4iLCI8bGk+IixmKFsiRGlzY2FyZCBlbGVtZW50cyBmcm9tIHRoZSBmaW49CmFsIGNyZWF0ZWQg bGlzdCBieSBjbGlja2luZyBvbiB0aGUgIiwnPGkgZGF0YS10YXJnZXQ9M0QiLmNvbGxlY3Rpb24t ZWxlbWVudD0KIC5kaXNjYXJkIj4iRGlzY2FyZCI8L2k+IGJ1dHRvbi4nXS5qb2luKCIiKSksIjwv bGk+IiwiPGxpPiIsZihbIlJlb3JkZXIgdGhlPQogbGlzdCBieSBjbGlja2luZyBhbmQgZHJhZ2dp bmcgZWxlbWVudHMuIFNlbGVjdCBtdWx0aXBsZSBlbGVtZW50cyBieSBjbGlja2k9Cm5nIG9uICIs JzxpIGRhdGEtdGFyZ2V0PTNEIi5jb2xsZWN0aW9uLWVsZW1lbnQiPnRoZW08L2k+IGFuZCB5b3Ug Y2FuIHRoZW4gbT0Kb3ZlIHRob3NlIHNlbGVjdGVkIGJ5IGRyYWdnaW5nIHRoZSAnLCJlbnRpcmUg Z3JvdXAuIERlc2VsZWN0IHRoZW0gYnkgY2xpY2tpPQpuZyB0aGVtIGFnYWluIG9yIGJ5IGNsaWNr aW5nIHRoZSAiLCd0aGUgPGkgZGF0YS10YXJnZXQ9M0QiLmNsZWFyLXNlbGVjdGVkIj49CiJDbGVh ciBzZWxlY3RlZCI8L2k+IGxpbmsuJ10uam9pbigiIikpLCI8L2xpPiIsIjxsaT4iLGYoWydDbGlj ayB0aGUgPGkgZGF0YT0KLXRhcmdldD0zRCIucmVzZXQiPiJTdGFydCBvdmVyIjwvaT4gbGluayB0 byBiZWdpbiBhZ2FpbiBhcyBpZiB5b3UgaGFkIGp1c3QgPQpvcGVuZWQgJywidGhlIGludGVyZmFj ZS4iXS5qb2luKCIiKSksIjwvbGk+IiwiPGxpPiIsZihbJ0NsaWNrIHRoZSA8aSBkYXRhLXQ9CmFy Z2V0PTNEIi5jYW5jZWwtY3JlYXRlIj4iQ2FuY2VsIjwvaT4gYnV0dG9uIHRvIGV4aXQgdGhlIGlu dGVyZmFjZS4nXS5qb2luKD0KIiIpKSwiPC9saT4iLCI8L3VsPjxiciAvPiIsIjxwPiIsZihbJ09u Y2UgeW91ciBjb2xsZWN0aW9uIGlzIGNvbXBsZXRlLCBlbnRlPQpyIGEgPGkgZGF0YS10YXJnZXQ9 M0QiLmNvbGxlY3Rpb24tbmFtZSI+bmFtZTwvaT4gYW5kICcsJ2NsaWNrIDxpIGRhdGEtdGFyZ2U9 CnQ9M0QiLmNyZWF0ZS1jb2xsZWN0aW9uIj4iQ3JlYXRlIGxpc3QiPC9pPi4nXS5qb2luKCIiKSks IjwvcD4iXS5qb2luKCIiKSksaT0KbnZhbGlkRWxlbWVudHM6Xy50ZW1wbGF0ZShbZigiVGhlIGZv bGxvd2luZyBzZWxlY3Rpb25zIGNvdWxkIG5vdCBiZSBpbmNsdWRlPQpkIGR1ZSB0byBwcm9ibGVt czoiKSwiPHVsPjwlIF8uZWFjaCggcHJvYmxlbXMsIGZ1bmN0aW9uKCBwcm9ibGVtICl7ICU+Iiwi PGw9Cmk+PGI+PCUtIHByb2JsZW0uZWxlbWVudC5uYW1lICU+PC9iPjogPCUtIHByb2JsZW0udGV4 dCAlPjwvbGk+IiwiPCUgfSk7ICU+PD0KL3VsPiJdLmpvaW4oIiIpKSxub0VsZW1lbnRzTGVmdDpf LnRlbXBsYXRlKFsnPGxpIGNsYXNzPTNEIm5vLWVsZW1lbnRzLWxlZnQtPQptZXNzYWdlIj4nLGYo Ik5vIGVsZW1lbnRzIGxlZnQhICIpLGYoIldvdWxkIHlvdSBsaWtlIHRvICIpLCc8YSBjbGFzcz0z RCJyZXM9CmV0IiBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKSI+JyxmKCJzdGFydCBvdmVyIiks IjwvYT4/IiwiPC9saT4iXS5qb2luKCIiKT0KKSxpbnZhbGlkSW5pdGlhbDpfLnRlbXBsYXRlKFsn PGRpdiBjbGFzcz0zRCJoZWFkZXIgZmxleC1yb3cgbm8tZmxleCI+JywnPGRpPQp2IGNsYXNzPTNE ImFsZXJ0IGFsZXJ0LXdhcm5pbmciIHN0eWxlPTNEImRpc3BsYXk6IGJsb2NrIj4nLCc8c3BhbiBj bGFzcz0zRCI9CmFsZXJ0LW1lc3NhZ2UiPicsIjwlIGlmKCBfLnNpemUoIHByb2JsZW1zICkgKXsg JT4iLGYoIlRoZSBmb2xsb3dpbmcgc2VsZWN0aT0Kb25zIGNvdWxkIG5vdCBiZSBpbmNsdWRlZCBk dWUgdG8gcHJvYmxlbXMiKSwiOiIsIjx1bD48JSBfLmVhY2goIHByb2JsZW1zLCBmPQp1bmN0aW9u KCBwcm9ibGVtICl7ICU+IiwiPGxpPjxiPjwlLSBwcm9ibGVtLmVsZW1lbnQubmFtZSAlPjwvYj46 IDwlLSBwcm9ibGU9Cm0udGV4dCAlPjwvbGk+IiwiPCUgfSk7ICU+PC91bD4iLCI8JSB9IGVsc2Ug aWYoIF8uc2l6ZSggZWxlbWVudHMgKSA8IDEgKXsgJT0KPiIsZigiTm8gZGF0YXNldHMgd2VyZSBz ZWxlY3RlZCIpLCIuIiwiPCUgfSAlPiIsIjxiciAvPiIsZigiQXQgbGVhc3Qgb25lIGVsPQplbWVu dCBpcyBuZWVkZWQgZm9yIHRoZSBjb2xsZWN0aW9uIiksIi4gIixmKCJZb3UgbWF5IG5lZWQgdG8g IiksJzxhIGNsYXNzPQo9M0QiY2FuY2VsLWNyZWF0ZSIgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQo MCkiPicsZigiY2FuY2VsIiksIjwvYT4gIixmKCJhbmQ9CiByZXNlbGVjdCBuZXcgZWxlbWVudHMi KSwiLiIsIjwvc3Bhbj4iLCI8L2Rpdj4iLCI8L2Rpdj4iLCc8ZGl2IGNsYXNzPTNEImZvbz0KdGVy IGZsZXgtcm93IG5vLWZsZXgiPicsJzxkaXYgY2xhc3M9M0QiYWN0aW9ucyBjbGVhciB2ZXJ0aWNh bGx5LXNwYWNlZCI+JywnPQo8ZGl2IGNsYXNzPTNEIm90aGVyLW9wdGlvbnMgcHVsbC1sZWZ0Ij4n LCc8YnV0dG9uIGNsYXNzPTNEImNhbmNlbC1jcmVhdGUgYnQ9Cm4iIHRhYmluZGV4PTNEIi0xIj4n LGYoIkNhbmNlbCIpLCI8L2J1dHRvbj4iLCI8L2Rpdj4iLCI8L2Rpdj4iLCI8L2Rpdj4iXS5qbz0K aW4oIiIpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iTGlzdENvbGxlY3Rpb25DcmVhdG9y In19KSxqPTNEZnVuY3Rpb24oPQphLGIsYyl7dmFyIGUsZz0zRGpRdWVyeS5EZWZlcnJlZCgpLGg9 M0RHYWxheHkubW9kYWx8fG5ldyBkLlZpZXc7cmV0dXJuIGI9M0Q9Cl8uZGVmYXVsdHMoYnx8e30s e2VsZW1lbnRzOmEsb25jYW5jZWw6ZnVuY3Rpb24oKXtoLmhpZGUoKSxnLnJlamVjdCgiY2FuY2Vs bD0KZWQiKX0sb25jcmVhdGU6ZnVuY3Rpb24oYSxiKXtoLmhpZGUoKSxnLnJlc29sdmUoYil9fSks ZT0zRG5ldyBjKGIpLGguc2hvdyh7PQp0aXRsZTpiLnRpdGxlfHxmKCJDcmVhdGUgYSBjb2xsZWN0 aW9uIiksYm9keTplLiRlbCx3aWR0aDoiODAlIixoZWlnaHQ6Im1pbi09CmNvbnRlbnQiLGNsb3Np bmdfZXZlbnRzOiEwfSksZS5yZW5kZXIoKSx3aW5kb3cuX2NvbGxlY3Rpb25DcmVhdG9yPTNEZSxn fSxrPQo9M0RmdW5jdGlvbihhLGIpe3JldHVybiBiPTNEYnx8e30sYi50aXRsZT0zRGYoIkNyZWF0 ZSBhIGNvbGxlY3Rpb24gZnJvbSBhIGw9CmlzdCBvZiBkYXRhc2V0cyIpLGooYSxiLGkpfTtyZXR1 cm57RGF0YXNldENvbGxlY3Rpb25FbGVtZW50VmlldzpoLExpc3RDb2xsZT0KY3Rpb25DcmVhdG9y OmksY29sbGVjdGlvbkNyZWF0b3JNb2RhbDpqLGxpc3RDb2xsZWN0aW9uQ3JlYXRvck1vZGFsOmss Y3JlYXRlPQpMaXN0Q29sbGVjdGlvbjpnfX0pOworZGVmaW5lKFsibXZjL2hpc3RvcnkvaGRjYS1t b2RlbCIsIm12Yy9kYXRhc2V0L3N0YXRlcyIsIm12Yy9iYXNlLW12YyIsIm12Yy89CnVpL3VpLW1v ZGFsIiwidXRpbHMvbmF0dXJhbC1zb3J0IiwidXRpbHMvbG9jYWxpemF0aW9uIiwidWkvaG92ZXJo aWdobGlnaHQiXT0KLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKGEpe3ZhciBiPTNE YS50b0pTT04oKSxjPTNEayhiLHtjcmVhdGlvbkZuPQo6ZnVuY3Rpb24oYixjKXtyZXR1cm4gYj0z RGIubWFwKGZ1bmN0aW9uKGEpe3JldHVybntpZDphLmlkLG5hbWU6YS5uYW1lLHNyYzo9CiJkYXRh c2V0Ij0zRD0zRD0zRGEuaGlzdG9yeV9jb250ZW50X3R5cGU/ImhkYSI6ImhkY2EifX0pLGEuY3Jl YXRlSERDQShiLCJsaT0Kc3QiLGMpfX0pO3JldHVybiBjfXZhciBoPTNEQmFja2JvbmUuVmlldy5l eHRlbmQoYy5Mb2dnYWJsZU1peGluKS5leHRlbmQoe3RhPQpnTmFtZToibGkiLGNsYXNzTmFtZToi Y29sbGVjdGlvbi1lbGVtZW50Iixpbml0aWFsaXplOmZ1bmN0aW9uKGEpe3RoaXMuZWxlbWU9Cm50 PTNEYS5lbGVtZW50fHx7fSx0aGlzLnNlbGVjdGVkPTNEYS5zZWxlY3RlZHx8ITF9LHJlbmRlcjpm dW5jdGlvbigpe3JldHVybj0KIHRoaXMuJGVsLmF0dHIoImRhdGEtZWxlbWVudC1pZCIsdGhpcy5l bGVtZW50LmlkKS5hdHRyKCJkcmFnZ2FibGUiLCEwKS5odG1sPQoodGhpcy50ZW1wbGF0ZSh7ZWxl bWVudDp0aGlzLmVsZW1lbnR9KSksdGhpcy5zZWxlY3RlZCYmdGhpcy4kZWwuYWRkQ2xhc3MoInM9 CmVsZWN0ZWQiKSx0aGlzfSx0ZW1wbGF0ZTpfLnRlbXBsYXRlKFsnPGEgY2xhc3M9M0QibmFtZSIg dGl0bGU9M0QiJyxmKCJDbGljaz0KIHRvIHJlbmFtZSIpLCciIGhyZWY9M0QiamF2YXNjcmlwdDp2 b2lkKDApIj4nLCI8JS0gZWxlbWVudC5uYW1lICU+IiwiPC9hPiIsPQonPGJ1dHRvbiBjbGFzcz0z RCJkaXNjYXJkIGJ0biBidG4tc20iIHRpdGxlPTNEIicsZigiUmVtb3ZlIHRoaXMgZGF0YXNldCBm cm89Cm0gdGhlIGxpc3QiKSwnIj4nLGYoIkRpc2NhcmQiKSwiPC9idXR0b24+Il0uam9pbigiIikp LHNlbGVjdDpmdW5jdGlvbihhKXt0aD0KaXMuJGVsLnRvZ2dsZUNsYXNzKCJzZWxlY3RlZCIsYSks dGhpcy50cmlnZ2VyKCJzZWxlY3QiLHtzb3VyY2U6dGhpcyxzZWxlY3RlPQpkOnRoaXMuJGVsLmhh c0NsYXNzKCJzZWxlY3RlZCIpfSl9LGRpc2NhcmQ6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMsYj0z RHRoaXM9Ci4kZWwucGFyZW50KCkud2lkdGgoKTt0aGlzLiRlbC5hbmltYXRlKHsibWFyZ2luLXJp Z2h0IjpifSwiZmFzdCIsZnVuY3Rpb24oKT0Ke2EudHJpZ2dlcigiZGlzY2FyZCIse3NvdXJjZTph fSksYS5kZXN0cm95KCl9KX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMub2ZmPQooKSx0aGlzLiRl bC5yZW1vdmUoKX0sZXZlbnRzOntjbGljazoiX2NsaWNrIiwiY2xpY2sgLm5hbWUiOiJfY2xpY2tO YW1lIiwiY2w9CmljayAuZGlzY2FyZCI6Il9jbGlja0Rpc2NhcmQiLGRyYWdzdGFydDoiX2RyYWdz dGFydCIsZHJhZ2VuZDoiX2RyYWdlbmQiLGRyYT0KZ292ZXI6Il9zZW5kVG9QYXJlbnQiLGRyb3A6 Il9zZW5kVG9QYXJlbnQifSxfY2xpY2s6ZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnPQphdGlvbigp LHRoaXMuc2VsZWN0KGEpfSxfY2xpY2tOYW1lOmZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9u KCksYS5wcmV2ZW49CnREZWZhdWx0KCk7dmFyIGI9M0QoW2YoIkVudGVyIGEgbmV3IG5hbWUgZm9y IHRoZSBlbGVtZW50IiksIjpcbigiLGYoIk5vdGUgdD0KaGF0IGNoYW5naW5nIHRoZSBuYW1lIGhl cmUgd2lsbCBub3QgcmVuYW1lIHRoZSBkYXRhc2V0IiksIikiXS5qb2luKCIiKSxwcm9tPQpwdChm KCJFbnRlciBhIG5ldyBuYW1lIGZvciB0aGUgZWxlbWVudCIpKyI6Iix0aGlzLmVsZW1lbnQubmFt ZSkpO2ImJih0aGlzLmU9CmxlbWVudC5uYW1lPTNEYix0aGlzLnJlbmRlcigpKX0sX2NsaWNrRGlz Y2FyZDpmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbj0KKCksdGhpcy5kaXNjYXJkKCl9LF9k cmFnc3RhcnQ6ZnVuY3Rpb24oYSl7YS5vcmlnaW5hbEV2ZW50JiYoYT0zRGEub3JpZ2luYWxFPQp2 ZW50KSxhLmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkPTNEIm1vdmUiLGEuZGF0YVRyYW5zZmVy LnNldERhdGEoInRleHQvcGw9CmFpbiIsSlNPTi5zdHJpbmdpZnkodGhpcy5lbGVtZW50KSksdGhp cy4kZWwuYWRkQ2xhc3MoImRyYWdnaW5nIiksdGhpcy4kZWwucD0KYXJlbnQoKS50cmlnZ2VyKCJj b2xsZWN0aW9uLWVsZW1lbnQuZHJhZ3N0YXJ0IixbdGhpc10pfSxfZHJhZ2VuZDpmdW5jdGlvbigp PQp7dGhpcy4kZWwucmVtb3ZlQ2xhc3MoImRyYWdnaW5nIiksdGhpcy4kZWwucGFyZW50KCkudHJp Z2dlcigiY29sbGVjdGlvbi1lbGU9Cm1lbnQuZHJhZ2VuZCIsW3RoaXNdKX0sX3NlbmRUb1BhcmVu dDpmdW5jdGlvbihhKXt0aGlzLiRlbC5wYXJlbnQoKS50cmlnZ2VyKD0KYSl9LHRvU3RyaW5nOmZ1 bmN0aW9uKCl7cmV0dXJuIkRhdGFzZXRDb2xsZWN0aW9uRWxlbWVudFZpZXcoKSJ9fSksaT0zREJh Y2tiPQpvbmUuVmlldy5leHRlbmQoYy5Mb2dnYWJsZU1peGluKS5leHRlbmQoe2VsZW1lbnRWaWV3 Q2xhc3M6aCxjb2xsZWN0aW9uQ2xhc3M9CjphLkhpc3RvcnlMaXN0RGF0YXNldENvbGxlY3Rpb24s Y2xhc3NOYW1lOiJsaXN0LWNvbGxlY3Rpb24tY3JlYXRvciBjb2xsZWN0aT0Kb24tY3JlYXRvciBm bGV4LXJvdy1jb250YWluZXIiLG1pbkVsZW1lbnRzOjEsZGVmYXVsdEF0dHJpYnV0ZXM6e2NyZWF0 aW9uRm46PQpmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIm5vIGNyZWF0aW9uIGZuIGZv ciBjcmVhdG9yIil9LG9uY3JlYXRlOmZ1bmM9CnRpb24oKXt9LG9uY2FuY2VsOmZ1bmN0aW9uKCl7 fSxhdXRvc2Nyb2xsRGlzdDoyNCxoaWdobGlnaHRDbHI6InJnYmEoIDY0LCAyNT0KNSwgMjU1LCAx LjAgKSJ9LGluaXRpYWxpemU6ZnVuY3Rpb24oYSl7dGhpcy5tZXRyaWMoIkxpc3RDb2xsZWN0aW9u Q3JlYXRvci5pPQpuaXRpYWxpemUiLGEpO3ZhciBiPTNEdGhpcztfLmVhY2godGhpcy5kZWZhdWx0 QXR0cmlidXRlcyxmdW5jdGlvbihjLGQpe2M9M0Q9CmFbZF18fGMsYltkXT0zRGN9KSxiLmluaXRp YWxFbGVtZW50cz0zRGEuZWxlbWVudHN8fFtdLHRoaXMuX2luc3RhbmNlU2V0VXAoKT0KLHRoaXMu X2VsZW1lbnRzU2V0VXAoKSx0aGlzLl9zZXRVcEJlaGF2aW9ycygpfSxfaW5zdGFuY2VTZXRVcDpm dW5jdGlvbigpe3RoPQppcy5zZWxlY3RlZElkcz0zRHt9LHRoaXMuJGRyYWdnaW5nPTNEbnVsbCx0 aGlzLmJsb2NraW5nPTNEITF9LF9lbGVtZW50c1NldFU9CnA6ZnVuY3Rpb24oKXt0aGlzLmludmFs aWRFbGVtZW50cz0zRFtdLHRoaXMud29ya2luZ0VsZW1lbnRzPTNEW10sdGhpcy5lbGVtZT0KbnRW aWV3cz0zRFtdLHRoaXMud29ya2luZ0VsZW1lbnRzPTNEdGhpcy5pbml0aWFsRWxlbWVudHMuc2xp Y2UoMCksdGhpcy5fZW5zPQp1cmVFbGVtZW50SWRzKCksdGhpcy5fdmFsaWRhdGVFbGVtZW50cygp LHRoaXMuX21hbmdsZUR1cGxpY2F0ZU5hbWVzKCksdGhpcy49Cl9zb3J0RWxlbWVudHMoKX0sX2Vu c3VyZUVsZW1lbnRJZHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53b3JraW5nRWxlbWVudHMuZj0K b3JFYWNoKGZ1bmN0aW9uKGEpe2EuaGFzT3duUHJvcGVydHkoImlkIil8fChhLmlkPTNEXy51bmlx dWVJZCgpKX0pLHRoaXMud29yPQpraW5nRWxlbWVudHN9LF92YWxpZGF0ZUVsZW1lbnRzOmZ1bmN0 aW9uKCl7dmFyIGE9M0R0aGlzO3JldHVybiBhLmludmFsaWRFbGU9Cm1lbnRzPTNEW10sdGhpcy53 b3JraW5nRWxlbWVudHM9M0R0aGlzLndvcmtpbmdFbGVtZW50cy5maWx0ZXIoZnVuY3Rpb24oYil7 dj0KYXIgYz0zRGEuX2lzRWxlbWVudEludmFsaWQoYik7cmV0dXJuIGMmJmEuaW52YWxpZEVsZW1l bnRzLnB1c2goe2VsZW1lbnQ6Yix0PQpleHQ6Y30pLCFjfSksdGhpcy53b3JraW5nRWxlbWVudHN9 LF9pc0VsZW1lbnRJbnZhbGlkOmZ1bmN0aW9uKGEpe3JldHVybiJkYXQ9CmFzZXQiIT0zRD0zRGEu aGlzdG9yeV9jb250ZW50X3R5cGU/ZigiaXMgbm90IGEgZGF0YXNldCIpOmEuc3RhdGUhPTNEPTNE Yi5PSz0KP2YoXy5jb250YWlucyhiLk5PVF9SRUFEWV9TVEFURVMsYS5zdGF0ZSk/Imhhc24ndCBm aW5pc2hlZCBydW5uaW5nIHlldCI6ImhhPQpzIGVycm9yZWQsIGlzIHBhdXNlZCwgb3IgaXMgbm90 IGFjY2Vzc2libGUiKTphLmRlbGV0ZWR8fGEucHVyZ2VkP2YoImhhcyBiZWU9Cm4gZGVsZXRlZCBv ciBwdXJnZWQiKTpudWxsfSxfbWFuZ2xlRHVwbGljYXRlTmFtZXM6ZnVuY3Rpb24oKXt2YXIgYT0z RDkwMCxiPQo9M0QxLGM9M0R7fTt0aGlzLndvcmtpbmdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9u KGQpe2Zvcih2YXIgZT0zRGQubmFtZTtjLmg9CmFzT3duUHJvcGVydHkoZSk7KWlmKGU9M0RkLm5h bWUrIiAoIitiKyIpIixiKz0zRDEsYj49M0RhKXRocm93IG5ldyBFcnJvcigiUz0KYWZldHkgaGl0 IGluIHdoaWxlIGxvb3AgLSB0aGF0cyBpbXByZXNzaXZlIik7ZC5uYW1lPTNEZSxjW2QubmFtZV09 M0QhMH0pfSxfPQpzb3J0RWxlbWVudHM6ZnVuY3Rpb24oKXt9LHJlbmRlcjpmdW5jdGlvbihhLGIp e3JldHVybiB0aGlzLndvcmtpbmdFbGVtZW50cy49Cmxlbmd0aDx0aGlzLm1pbkVsZW1lbnRzP3Ro aXMuX3JlbmRlckludmFsaWQoYSxiKToodGhpcy4kZWwuZW1wdHkoKS5odG1sKHRoaT0Kcy50ZW1w bGF0ZXMubWFpbigpKSx0aGlzLl9yZW5kZXJIZWFkZXIoYSksdGhpcy5fcmVuZGVyTWlkZGxlKGEp LHRoaXMuX3JlbmRlPQpyRm9vdGVyKGEpLHRoaXMuX2FkZFBsdWdpbkNvbXBvbmVudHMoKSx0aGlz LiQoIi5jb2xsZWN0aW9uLW5hbWUiKS5mb2N1cygpLHQ9Cmhpcy50cmlnZ2VyKCJyZW5kZXJlZCIs dGhpcyksdGhpcyl9LF9yZW5kZXJJbnZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJD0KZWwu ZW1wdHkoKS5odG1sKHRoaXMudGVtcGxhdGVzLmludmFsaWRJbml0aWFsKHtwcm9ibGVtczp0aGlz LmludmFsaWRFbGVtZW50PQpzLGVsZW1lbnRzOnRoaXMud29ya2luZ0VsZW1lbnRzfSkpLCJmdW5j dGlvbiI9M0Q9M0R0eXBlb2YgdGhpcy5vbmNhbmNlbCYmdGg9CmlzLiQoIi5jYW5jZWwtY3JlYXRl LmJ0biIpLnNob3coKSx0aGlzLnRyaWdnZXIoInJlbmRlcmVkIix0aGlzKSx0aGlzfSxfcmVuZD0K ZXJIZWFkZXI6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMuJCgiLmhlYWRlciIpLmVtcHR5KCkuaHRt bCh0aGlzLnRlbXBsYXRlcy5oPQplYWRlcigpKS5maW5kKCIuaGVscC1jb250ZW50IikucHJlcGVu ZCgkKHRoaXMudGVtcGxhdGVzLmhlbHBDb250ZW50KCkpKTtyZXQ9CnVybiB0aGlzLmludmFsaWRF bGVtZW50cy5sZW5ndGgmJnRoaXMuX2ludmFsaWRFbGVtZW50c0FsZXJ0KCksYX0sX3JlbmRlck1p ZD0KZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpcy4kKCIubWlkZGxlIikuZW1wdHkoKS5odG1s KHRoaXMudGVtcGxhdGVzLm1pZGRsPQplKCkpO3JldHVybiB0aGlzLl9yZW5kZXJMaXN0KGEpLGJ9 LF9yZW5kZXJGb290ZXI6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMuJCg9CiIuZm9vdGVyIikuZW1w dHkoKS5odG1sKHRoaXMudGVtcGxhdGVzLmZvb3RlcigpKTtyZXR1cm4iZnVuY3Rpb24iPTNEPTNE dHlwZT0Kb2YgdGhpcy5vbmNhbmNlbCYmdGhpcy4kKCIuY2FuY2VsLWNyZWF0ZS5idG4iKS5zaG93 KCksYX0sX2FkZFBsdWdpbkNvbXBvbmVuPQp0czpmdW5jdGlvbigpe3RoaXMuJCgiLmhlbHAtY29u dGVudCBpIikuaG92ZXJoaWdobGlnaHQoIi5jb2xsZWN0aW9uLWNyZWF0b3I9CiIsdGhpcy5oaWdo bGlnaHRDbHIpfSxfaW52YWxpZEVsZW1lbnRzQWxlcnQ6ZnVuY3Rpb24oKXt0aGlzLl9zaG93QWxl cnQodGhpcz0KLnRlbXBsYXRlcy5pbnZhbGlkRWxlbWVudHMoe3Byb2JsZW1zOnRoaXMuaW52YWxp ZEVsZW1lbnRzfSksImFsZXJ0LXdhcm5pbmciPQopfSxfdmFsaWRhdGlvbldhcm5pbmc6ZnVuY3Rp b24oYSxiKXt2YXIgYz0zRCJ2YWxpZGF0aW9uLXdhcm5pbmciOyJuYW1lIj0zRD0KPTNEPTNEYSYm KGE9M0R0aGlzLiQoIi5jb2xsZWN0aW9uLW5hbWUiKS5hZGQodGhpcy4kKCIuY29sbGVjdGlvbi1u YW1lLXByb21wPQp0IikpLHRoaXMuJCgiLmNvbGxlY3Rpb24tbmFtZSIpLmZvY3VzKCkuc2VsZWN0 KCkpLGI/KGE9M0RhfHx0aGlzLiQoIi4iK2MpLGE9Ci5yZW1vdmVDbGFzcyhjKSk6YS5hZGRDbGFz cyhjKX0sX2Rpc2FibGVOYW1lQW5kQ3JlYXRlOmZ1bmN0aW9uKGEpe2E9M0RfLmlzVT0KbmRlZmlu ZWQoYSk/ITA6YSxhJiYodGhpcy4kKCIuY29sbGVjdGlvbi1uYW1lIikucHJvcCgiZGlzYWJsZWQi LCEwKSx0aGlzLiQoPQoiLmNyZWF0ZS1jb2xsZWN0aW9uIikudG9nZ2xlQ2xhc3MoImRpc2FibGVk IiwhMCkpfSwkbGlzdDpmdW5jdGlvbigpe3JldHVybiA9CnRoaXMuJCgiLmNvbGxlY3Rpb24tZWxl bWVudHMiKX0sX3JlbmRlckNsZWFyU2VsZWN0ZWQ6ZnVuY3Rpb24oKXtfLnNpemUodGhpcz0KLnNl bGVjdGVkSWRzKT90aGlzLiQoIi5jb2xsZWN0aW9uLWVsZW1lbnRzLWNvbnRyb2xzID4gLmNsZWFy LXNlbGVjdGVkIikuc2hvPQp3KCk6dGhpcy4kKCIuY29sbGVjdGlvbi1lbGVtZW50cy1jb250cm9s cyA+IC5jbGVhci1zZWxlY3RlZCIpLmhpZGUoKX0sX3JlbmQ9CmVyTGlzdDpmdW5jdGlvbigpe3Zh ciBhPTNEdGhpcyxiPTNEalF1ZXJ5KCI8ZGl2Lz4iKSxjPTNEYS4kbGlzdCgpO18uZWFjaCh0aD0K aXMuZWxlbWVudFZpZXdzLGZ1bmN0aW9uKGIpe2IuZGVzdHJveSgpLGEucmVtb3ZlRWxlbWVudFZp ZXcoYil9KSxhLndvcmtpbmdFPQpsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9M0Rh Ll9jcmVhdGVFbGVtZW50VmlldyhjKTtiLmFwcGVuZChkLiRlbCk9Cn0pLGEuX3JlbmRlckNsZWFy U2VsZWN0ZWQoKSxjLmVtcHR5KCkuYXBwZW5kKGIuY2hpbGRyZW4oKSksXy5pbnZva2UoYS5lbGVt ZT0KbnRWaWV3cywicmVuZGVyIiksYy5oZWlnaHQoKT5jLmNzcygibWF4LWhlaWdodCIpP2MuY3Nz KCJib3JkZXItd2lkdGgiLCIxcHggPQowcHggMXB4IDBweCIpOmMuY3NzKCJib3JkZXItd2lkdGgi LCIwcHgiKX0sX2NyZWF0ZUVsZW1lbnRWaWV3OmZ1bmN0aW9uKGEpe3Y9CmFyIGI9M0RuZXcgdGhp cy5lbGVtZW50Vmlld0NsYXNzKHtlbGVtZW50OmEsc2VsZWN0ZWQ6Xy5oYXModGhpcy5zZWxlY3Rl ZElkcz0KLGEuaWQpfSk7cmV0dXJuIHRoaXMuZWxlbWVudFZpZXdzLnB1c2goYiksdGhpcy5fbGlz dGVuVG9FbGVtZW50VmlldyhiKSxifSxfPQpsaXN0ZW5Ub0VsZW1lbnRWaWV3OmZ1bmN0aW9uKGEp e3ZhciBiPTNEdGhpcztiLmxpc3RlblRvKGEse3NlbGVjdDpmdW5jdGlvbig9CmEpe3ZhciBjPTNE YS5zb3VyY2UuZWxlbWVudDthLnNlbGVjdGVkP2Iuc2VsZWN0ZWRJZHNbYy5pZF09M0QhMDpkZWxl dGUgYi5zZT0KbGVjdGVkSWRzW2MuaWRdLGIudHJpZ2dlcigiZWxlbWVudHM6c2VsZWN0IixhKX0s ZGlzY2FyZDpmdW5jdGlvbihhKXtiLnRyaWdnPQplcigiZWxlbWVudHM6ZGlzY2FyZCIsYSl9fSl9 LGFkZEVsZW1lbnRWaWV3OmZ1bmN0aW9uKCl7fSxyZW1vdmVFbGVtZW50Vmlldzo9CmZ1bmN0aW9u KGEpe2RlbGV0ZSB0aGlzLnNlbGVjdGVkSWRzW2EuZWxlbWVudC5pZF0sdGhpcy5fcmVuZGVyQ2xl YXJTZWxlY3RlZD0KKCksdGhpcy5lbGVtZW50Vmlld3M9M0RfLndpdGhvdXQodGhpcy5lbGVtZW50 Vmlld3MsYSksdGhpcy5zdG9wTGlzdGVuaW5nKGEpPQp9LF9yZW5kZXJOb0VsZW1lbnRzTGVmdDpm dW5jdGlvbigpe3RoaXMuX2Rpc2FibGVOYW1lQW5kQ3JlYXRlKCEwKSx0aGlzLiQoIi49CmNvbGxl Y3Rpb24tZWxlbWVudHMiKS5hcHBlbmQodGhpcy50ZW1wbGF0ZXMubm9FbGVtZW50c0xlZnQoKSl9 LF9lbGVtZW50VG9KUz0KT046ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LGNyZWF0ZUxpc3Q6ZnVuY3Rp b24oYSl7aWYoIXRoaXMud29ya2luZ0VsZW1lbnRzLmxlPQpuZ3RoKXt2YXIgYj0zRGYoIk5vIHZh bGlkIGVsZW1lbnRzIGZvciBmaW5hbCBsaXN0IikrIi4gIjtyZXR1cm4gYis9M0QnPGEgY2w9CmFz cz0zRCJjYW5jZWwtY3JlYXRlIiBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKTsiPicrZigiQ2Fu Y2VsIikrIjwvYT4gIixiKz0KPTNEZigib3IiKSxiKz0zRCcgPGEgY2xhc3M9M0QicmVzZXQiIGhy ZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApOyI+JytmKCJzdGFyPQp0IG92ZXIiKSsiPC9hPi4iLHZv aWQgdGhpcy5fc2hvd0FsZXJ0KGIpfXZhciBjPTNEdGhpcyxkPTNEdGhpcy53b3JraW5nRWxlbWU9 Cm50cy5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGMuX2VsZW1lbnRUb0pTT04oYSl9KTtyZXR1cm4g Yy5ibG9ja2luZz0zRCEwLGMuYz0KcmVhdGlvbkZuKGQsYSkuYWx3YXlzKGZ1bmN0aW9uKCl7Yy5i bG9ja2luZz0zRCExfSkuZmFpbChmdW5jdGlvbihhLGIpe2MudHJpPQpnZ2VyKCJlcnJvciIse3ho cjphLHN0YXR1czpiLG1lc3NhZ2U6ZigiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgY3JlYXRpbmcg dGg9CmlzIGNvbGxlY3Rpb24iKX0pfSkuZG9uZShmdW5jdGlvbihhLGIsZCl7Yy50cmlnZ2VyKCJj b2xsZWN0aW9uOmNyZWF0ZWQiLGEsYj0KLGQpLGMubWV0cmljKCJjb2xsZWN0aW9uOmNyZWF0ZWQi LGEpLCJmdW5jdGlvbiI9M0Q9M0R0eXBlb2YgYy5vbmNyZWF0ZSYmYy5vPQpuY3JlYXRlLmNhbGwo dGhpcyxhLGIsZCl9KX0sX3NldFVwQmVoYXZpb3JzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub24o ImVycm89CnIiLHRoaXMuX2Vycm9ySGFuZGxlciksdGhpcy5vbmNlKCJyZW5kZXJlZCIsZnVuY3Rp b24oKXt0aGlzLnRyaWdnZXIoInJlbmRlcj0KZWQ6aW5pdGlhbCIsdGhpcyl9KSx0aGlzLm9uKCJl bGVtZW50czpzZWxlY3QiLGZ1bmN0aW9uKCl7dGhpcy5fcmVuZGVyQ2xlYXJTPQplbGVjdGVkKCl9 KSx0aGlzLm9uKCJlbGVtZW50czpkaXNjYXJkIixmdW5jdGlvbihhKXt2YXIgYj0zRGEuc291cmNl LmVsZW1lbnQ9Cjt0aGlzLnJlbW92ZUVsZW1lbnRWaWV3KGEuc291cmNlKSx0aGlzLndvcmtpbmdF bGVtZW50cz0zRF8ud2l0aG91dCh0aGlzLndvcj0Ka2luZ0VsZW1lbnRzLGIpLHRoaXMud29ya2lu Z0VsZW1lbnRzLmxlbmd0aHx8dGhpcy5fcmVuZGVyTm9FbGVtZW50c0xlZnQoKX0pPQosdGhpc30s X2Vycm9ySGFuZGxlcjpmdW5jdGlvbihhKXt0aGlzLmVycm9yKGEpO3ZhciBiPTNEdGhpcztpZihj b250ZW50PTNEYS49Cm1lc3NhZ2V8fGYoIkFuIGVycm9yIG9jY3VycmVkIiksYS54aHIpe3ZhciBj PTNEYS54aHIsZD0zRGEubWVzc2FnZTtjb250ZW50Kz0KPTNEMD0zRD0zRD0zRGMucmVhZHlTdGF0 ZSYmMD0zRD0zRD0zRGMuc3RhdHVzPyI6ICIrZigiR2FsYXh5IGNvdWxkIG5vdCBiZSByPQplYWNo ZWQgYW5kIG1heSBiZSB1cGRhdGluZy4iKStmKCIgVHJ5IGFnYWluIGluIGEgZmV3IG1pbnV0ZXMu Iik6Yy5yZXNwb25zZUo9ClNPTj8iOjxiciAvPjxwcmU+IitKU09OLnN0cmluZ2lmeShjLnJlc3Bv bnNlSlNPTikrIjwvcHJlPiI6IjogIitkfWIuX3Nob3dBbD0KZXJ0KGNvbnRlbnQsImFsZXJ0LWRh bmdlciIpfSxldmVudHM6eyJjbGljayAubW9yZS1oZWxwIjoiX2NsaWNrTW9yZUhlbHAiLCJjPQps aWNrIC5sZXNzLWhlbHAiOiJfY2xpY2tMZXNzSGVscCIsImNsaWNrIC5tYWluLWhlbHAiOiJfdG9n Z2xlSGVscCIsImNsaWNrIC49CmhlYWRlciAuYWxlcnQgYnV0dG9uIjoiX2hpZGVBbGVydCIsImNs aWNrIC5yZXNldCI6InJlc2V0IiwiY2xpY2sgLmNsZWFyLXNlbD0KZWN0ZWQiOiJjbGVhclNlbGVj dGVkRWxlbWVudHMiLCJjbGljayAuY29sbGVjdGlvbi1lbGVtZW50cyI6ImNsZWFyU2VsZWN0ZWRF PQpsZW1lbnRzIiwiZHJhZ292ZXIgLmNvbGxlY3Rpb24tZWxlbWVudHMiOiJfZHJhZ292ZXJFbGVt ZW50cyIsImRyb3AgLmNvbGxlY3Q9Cmlvbi1lbGVtZW50cyI6Il9kcm9wRWxlbWVudHMiLCJjb2xs ZWN0aW9uLWVsZW1lbnQuZHJhZ3N0YXJ0IC5jb2xsZWN0aW9uLWVsZT0KbWVudHMiOiJfZWxlbWVu dERyYWdzdGFydCIsImNvbGxlY3Rpb24tZWxlbWVudC5kcmFnZW5kICAgLmNvbGxlY3Rpb24tZWxl bWVuPQp0cyI6Il9lbGVtZW50RHJhZ2VuZCIsImNoYW5nZSAuY29sbGVjdGlvbi1uYW1lIjoiX2No YW5nZU5hbWUiLCJrZXlkb3duIC5jb2w9CmxlY3Rpb24tbmFtZSI6Il9uYW1lQ2hlY2tGb3JFbnRl ciIsImNsaWNrIC5jYW5jZWwtY3JlYXRlIjpmdW5jdGlvbigpeyJmdW5jdD0KaW9uIj0zRD0zRHR5 cGVvZiB0aGlzLm9uY2FuY2VsJiZ0aGlzLm9uY2FuY2VsLmNhbGwodGhpcyl9LCJjbGljayAuY3Jl YXRlLWNvPQpsbGVjdGlvbiI6Il9jbGlja0NyZWF0ZSJ9LF9jbGlja01vcmVIZWxwOmZ1bmN0aW9u KGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksdGg9CmlzLiQoIi5tYWluLWhlbHAiKS5hZGRDbGFzcygi ZXhwYW5kZWQiKSx0aGlzLiQoIi5tb3JlLWhlbHAiKS5oaWRlKCl9LF9jbGljaz0KTGVzc0hlbHA6 ZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLiQoIi5tYWluLWhlbHAiKS5yZW1v dmVDbGFzcygiPQpleHBhbmRlZCIpLHRoaXMuJCgiLm1vcmUtaGVscCIpLnNob3coKX0sX3RvZ2ds ZUhlbHA6ZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGE9CmdhdGlvbigpLHRoaXMuJCgiLm1haW4taGVs cCIpLnRvZ2dsZUNsYXNzKCJleHBhbmRlZCIpLHRoaXMuJCgiLm1vcmUtaGVscCIpLj0KdG9nZ2xl KCl9LF9zaG93QWxlcnQ6ZnVuY3Rpb24oYSxiKXtiPTNEYnx8ImFsZXJ0LWRhbmdlciIsdGhpcy4k KCIubWFpbi1oZWxwPQoiKS5oaWRlKCksdGhpcy4kKCIuaGVhZGVyIC5hbGVydCIpLmF0dHIoImNs YXNzIiwiYWxlcnQgYWxlcnQtZGlzbWlzc2FibGUiKS49CmFkZENsYXNzKGIpLnNob3coKS5maW5k KCIuYWxlcnQtbWVzc2FnZSIpLmh0bWwoYSl9LF9oaWRlQWxlcnQ6ZnVuY3Rpb24oKXt0aD0KaXMu JCgiLm1haW4taGVscCIpLnNob3coKSx0aGlzLiQoIi5oZWFkZXIgLmFsZXJ0IikuaGlkZSgpfSxy ZXNldDpmdW5jdGlvbigpPQp7dGhpcy5faW5zdGFuY2VTZXRVcCgpLHRoaXMuX2VsZW1lbnRzU2V0 VXAoKSx0aGlzLnJlbmRlcigpfSxjbGVhclNlbGVjdGVkRWw9CmVtZW50czpmdW5jdGlvbigpe3Ro aXMuJCgiLmNvbGxlY3Rpb24tZWxlbWVudHMgLmNvbGxlY3Rpb24tZWxlbWVudCIpLnJlbW92ZT0K Q2xhc3MoInNlbGVjdGVkIiksdGhpcy4kKCIuY29sbGVjdGlvbi1lbGVtZW50cy1jb250cm9scyA+ IC5jbGVhci1zZWxlY3RlZCIpPQouaGlkZSgpfSxfZHJhZ292ZXJFbGVtZW50czpmdW5jdGlvbihh KXthLnByZXZlbnREZWZhdWx0KCk7dmFyIGI9M0R0aGlzLiRsaXM9CnQoKTt0aGlzLl9jaGVja0Zv ckF1dG9zY3JvbGwoYixhLm9yaWdpbmFsRXZlbnQuY2xpZW50WSk7dmFyIGM9M0R0aGlzLl9nZXRO ZT0KYXJlc3RFbGVtZW50KGEub3JpZ2luYWxFdmVudC5jbGllbnRZKTt0aGlzLiQoIi5lbGVtZW50 LWRyb3AtcGxhY2Vob2xkZXIiKS5yPQplbW92ZSgpO3ZhciBkPTNEJCgnPGRpdiBjbGFzcz0zRCJl bGVtZW50LWRyb3AtcGxhY2Vob2xkZXIiPjwvZGl2PicpO2Muc2l6ZSg9Cik/Yy5iZWZvcmUoZCk6 Yi5hcHBlbmQoZCl9LF9jaGVja0ZvckF1dG9zY3JvbGw6ZnVuY3Rpb24oYSxiKXt2YXIgYz0zRDIs ZD0zRD0KYS5vZmZzZXQoKSxlPTNEYS5zY3JvbGxUb3AoKSxmPTNEYi1kLnRvcCxnPTNEZC50b3Ar YS5vdXRlckhlaWdodCgpLWI7Zj49M0QwPQomJmY8dGhpcy5hdXRvc2Nyb2xsRGlzdD9hLnNjcm9s bFRvcChlLWMpOmc+PTNEMCYmZzx0aGlzLmF1dG9zY3JvbGxEaXN0JiZhLnM9CmNyb2xsVG9wKGUr Yyl9LF9nZXROZWFyZXN0RWxlbWVudDpmdW5jdGlvbihhKXtmb3IodmFyIGI9M0Q0LGM9M0R0aGlz LiQoIi5jbz0KbGxlY3Rpb24tZWxlbWVudHMgbGkuY29sbGVjdGlvbi1lbGVtZW50IikudG9BcnJh eSgpLGQ9M0QwO2Q8Yy5sZW5ndGg7ZCsrKXt2PQphciBlPTNEJChjW2RdKSxmPTNEZS5vZmZzZXQo KS50b3AsZz0zRE1hdGguZmxvb3IoZS5vdXRlckhlaWdodCgpLzIpK2I7aWYoZis9Cmc+YSYmYT5m LWcpcmV0dXJuIGV9cmV0dXJuICQoKX0sX2Ryb3BFbGVtZW50czpmdW5jdGlvbihhKXthLm9yaWdp bmFsRXZlbnQmJj0KKGE9M0RhLm9yaWdpbmFsRXZlbnQpLGEucHJldmVudERlZmF1bHQoKSxhLmRh dGFUcmFuc2Zlci5kcm9wRWZmZWN0PTNEIm1vdmUiPQo7dmFyIGI9M0R0aGlzLl9nZXROZWFyZXN0 RWxlbWVudChhLmNsaWVudFkpO3JldHVybiBiLnNpemUoKT90aGlzLiRkcmFnZ2luZy49Cmluc2Vy dEJlZm9yZShiKTp0aGlzLiRkcmFnZ2luZy5pbnNlcnRBZnRlcih0aGlzLiQoIi5jb2xsZWN0aW9u LWVsZW1lbnRzIC5jbz0KbGxlY3Rpb24tZWxlbWVudCIpLmxhc3QoKSksdGhpcy5fc3luY09yZGVy VG9Eb20oKSwhMX0sX3N5bmNPcmRlclRvRG9tOmZ1bmN0PQppb24oKXt2YXIgYT0zRHRoaXMsYj0z RFtdO3RoaXMuJCgiLmNvbGxlY3Rpb24tZWxlbWVudHMgLmNvbGxlY3Rpb24tZWxlbWVudCI9Ciku ZWFjaChmdW5jdGlvbigpe3ZhciBjPTNEJCh0aGlzKS5hdHRyKCJkYXRhLWVsZW1lbnQtaWQiKSxk PTNEXy5maW5kV2hlcmUoYT0KLndvcmtpbmdFbGVtZW50cyx7aWQ6Y30pO2Q/Yi5wdXNoKGQpOmNv bnNvbGUuZXJyb3IoIm1pc3NpbmcgZWxlbWVudDogIixjKX0pPQosdGhpcy53b3JraW5nRWxlbWVu dHM9M0RiLHRoaXMuX3JlbmRlckxpc3QoKX0sX2VsZW1lbnREcmFnc3RhcnQ6ZnVuY3Rpb24oYSw9 CmIpe2Iuc2VsZWN0KCEwKSx0aGlzLiRkcmFnZ2luZz0zRHRoaXMuJCgiLmNvbGxlY3Rpb24tZWxl bWVudHMgLmNvbGxlY3Rpb24tZT0KbGVtZW50LnNlbGVjdGVkIil9LF9lbGVtZW50RHJhZ2VuZDpm dW5jdGlvbigpeyQoIi5lbGVtZW50LWRyb3AtcGxhY2Vob2xkZXIiPQopLnJlbW92ZSgpLHRoaXMu JGRyYWdnaW5nPTNEbnVsbH0sX2NoYW5nZU5hbWU6ZnVuY3Rpb24oKXt0aGlzLl92YWxpZGF0aW9u V2E9CnJuaW5nKCJuYW1lIiwhIXRoaXMuX2dldE5hbWUoKSl9LF9uYW1lQ2hlY2tGb3JFbnRlcjpm dW5jdGlvbihhKXsxMyE9M0Q9M0RhLj0Ka2V5Q29kZXx8dGhpcy5ibG9ja2luZ3x8dGhpcy5fY2xp Y2tDcmVhdGUoKX0sX2dldE5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gXy5lPQpzY2FwZSh0aGlzLiQo Ii5jb2xsZWN0aW9uLW5hbWUiKS52YWwoKSl9LF9jbGlja0NyZWF0ZTpmdW5jdGlvbigpe3ZhciBh PTNEdGg9CmlzLl9nZXROYW1lKCk7YT90aGlzLmJsb2NraW5nfHx0aGlzLmNyZWF0ZUxpc3QoYSk6 dGhpcy5fdmFsaWRhdGlvbldhcm5pbmcoIj0KbmFtZSIpfSx0ZW1wbGF0ZXM6e21haW46Xy50ZW1w bGF0ZShbJzxkaXYgY2xhc3M9M0QiaGVhZGVyIGZsZXgtcm93IG5vLWZsZXgiPQo+PC9kaXY+Jywn PGRpdiBjbGFzcz0zRCJtaWRkbGUgZmxleC1yb3cgZmxleC1yb3ctY29udGFpbmVyIj48L2Rpdj4n LCc8ZGl2IGM9Cmxhc3M9M0QiZm9vdGVyIGZsZXgtcm93IG5vLWZsZXgiPjwvZGl2PiddLmpvaW4o IiIpKSxoZWFkZXI6Xy50ZW1wbGF0ZShbJzxkaT0KdiBjbGFzcz0zRCJtYWluLWhlbHAgd2VsbCBj bGVhciI+JywnPGEgY2xhc3M9M0QibW9yZS1oZWxwIiBocmVmPTNEImphdmFzY3JpPQpwdDp2b2lk KDApOyI+JyxmKCJNb3JlIGhlbHAiKSwiPC9hPiIsJzxkaXYgY2xhc3M9M0QiaGVscC1jb250ZW50 Ij4nLCc8YSBjbGE9CnNzPTNEImxlc3MtaGVscCIgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCk7 Ij4nLGYoIkxlc3MiKSwiPC9hPiIsIjwvZGl2PiIsIj0KPC9kaXY+IiwnPGRpdiBjbGFzcz0zRCJh bGVydCBhbGVydC1kaXNtaXNzYWJsZSI+JywnPGJ1dHRvbiB0eXBlPTNEImJ1dHRvbiIgPQpjbGFz cz0zRCJjbG9zZSIgZGF0YS1kaXNtaXNzPTNEImFsZXJ0IiAnLCd0aXRsZT0zRCInLGYoIkNsb3Nl IGFuZCBzaG93IG1vcmU9CiBoZWxwIiksJyIgYXJpYS1oaWRkZW49M0QidHJ1ZSI+JnRpbWVzOzwv YnV0dG9uPicsJzxzcGFuIGNsYXNzPTNEImFsZXJ0LW1lcz0Kc2FnZSI+PC9zcGFuPicsIjwvZGl2 PiJdLmpvaW4oIiIpKSxtaWRkbGU6Xy50ZW1wbGF0ZShbJzxkaXYgY2xhc3M9M0QiY29sbGVjPQp0 aW9uLWVsZW1lbnRzLWNvbnRyb2xzIj4nLCc8YSBjbGFzcz0zRCJyZXNldCIgaHJlZj0zRCJqYXZh c2NyaXB0OnZvaWQoMCk7IiA9CicsJ3RpdGxlPTNEIicsZigiVW5kbyBhbGwgcmVvcmRlcmluZyBh bmQgZGlzY2FyZHMiKSwnIj4nLGYoIlN0YXJ0IG92ZXIiKSwiPD0KL2E+IiwnPGEgY2xhc3M9M0Qi Y2xlYXItc2VsZWN0ZWQiIGhyZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApOyIgJywndGl0bGU9M0Qi PQonLGYoIkRlLXNlbGVjdCBhbGwgc2VsZWN0ZWQgZGF0YXNldHMiKSwnIj4nLGYoIkNsZWFyIHNl bGVjdGVkIiksIjwvYT4iLCI8L2Q9Cml2PiIsJzxkaXYgY2xhc3M9M0QiY29sbGVjdGlvbi1lbGVt ZW50cyBzY3JvbGwtY29udGFpbmVyIGZsZXgtcm93Ij4nLCI8L2Rpdj0KPiJdLmpvaW4oIiIpKSxm b290ZXI6Xy50ZW1wbGF0ZShbJzxkaXYgY2xhc3M9M0QiYXR0cmlidXRlcyBjbGVhciI+JywnPGRp diBjPQpsYXNzPTNEImNsZWFyIj4nLCc8aW5wdXQgY2xhc3M9M0QiY29sbGVjdGlvbi1uYW1lIGZv cm0tY29udHJvbCBwdWxsLXJpZ2h0IiA9CicsJ3BsYWNlaG9sZGVyPTNEIicsZigiRW50ZXIgYSBu YW1lIGZvciB5b3VyIG5ldyBjb2xsZWN0aW9uIiksJyIgLz4nLCc8ZGl2ID0KY2xhc3M9M0QiY29s bGVjdGlvbi1uYW1lLXByb21wdCBwdWxsLXJpZ2h0Ij4nLGYoIk5hbWUiKSwiOjwvZGl2PiIsIjwv ZGl2PiIsPQoiPC9kaXY+IiwnPGRpdiBjbGFzcz0zRCJhY3Rpb25zIGNsZWFyIHZlcnRpY2FsbHkt c3BhY2VkIj4nLCc8ZGl2IGNsYXNzPTNEIm89CnRoZXItb3B0aW9ucyBwdWxsLWxlZnQiPicsJzxi dXR0b24gY2xhc3M9M0QiY2FuY2VsLWNyZWF0ZSBidG4iIHRhYmluZGV4PTNEIj0KLTEiPicsZigi Q2FuY2VsIiksIjwvYnV0dG9uPiIsJzxkaXYgY2xhc3M9M0QiY3JlYXRlLW90aGVyIGJ0bi1ncm91 cCBkcm9wdXAiPQo+JywnPGJ1dHRvbiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgZHJvcGRvd24t dG9nZ2xlIiBkYXRhLXRvZ2dsZT0zRCJkcm9wZG89CnduIj4nLGYoIkNyZWF0ZSBhIGRpZmZlcmVu dCBraW5kIG9mIGNvbGxlY3Rpb24iKSwnIDxzcGFuIGNsYXNzPTNEImNhcmV0Ij48Lz0Kc3Bhbj4n LCI8L2J1dHRvbj4iLCc8dWwgY2xhc3M9M0QiZHJvcGRvd24tbWVudSIgcm9sZT0zRCJtZW51Ij4n LCc8bGk+PGEgaHJlPQpmPTNEIiMiPicsZigiQ3JlYXRlIGEgPGk+c2luZ2xlPC9pPiBwYWlyIiks IjwvYT48L2xpPiIsJzxsaT48YSBocmVmPTNEIiMiPic9CixmKCJDcmVhdGUgYSBsaXN0IG9mIDxp PnVucGFpcmVkPC9pPiBkYXRhc2V0cyIpLCI8L2E+PC9saT4iLCI8L3VsPiIsIjwvZGl2Pj0KIiwi PC9kaXY+IiwnPGRpdiBjbGFzcz0zRCJtYWluLW9wdGlvbnMgcHVsbC1yaWdodCI+JywnPGJ1dHRv biBjbGFzcz0zRCJjcmVhPQp0ZS1jb2xsZWN0aW9uIGJ0biBidG4tcHJpbWFyeSI+JyxmKCJDcmVh dGUgbGlzdCIpLCI8L2J1dHRvbj4iLCI8L2Rpdj4iLCI8L2Q9Cml2PiJdLmpvaW4oIiIpKSxoZWxw Q29udGVudDpfLnRlbXBsYXRlKFsiPHA+IixmKFsiQ29sbGVjdGlvbnMgb2YgZGF0YXNldHMgYT0K cmUgcGVybWFuZW50LCBvcmRlcmVkIGxpc3RzIG9mIGRhdGFzZXRzIHRoYXQgY2FuIGJlIHBhc3Nl ZCB0byB0b29scyBhbmQgIiwiPQp3b3JrZmxvd3MgaW4gb3JkZXIgdG8gaGF2ZSBhbmFseXNlcyBk b25lIG9uIGVhY2ggbWVtYmVyIG9mIHRoZSBlbnRpcmUgZ3JvdXA9Ci4gVGhpcyBpbnRlcmZhY2Ug YWxsb3dzICIsInlvdSB0byBjcmVhdGUgYSBjb2xsZWN0aW9uIGFuZCByZS1vcmRlciB0aGUgZmlu YT0KbCBjb2xsZWN0aW9uLiJdLmpvaW4oIiIpKSwiPC9wPiIsIjx1bD4iLCI8bGk+IixmKFsiUmVu YW1lIGVsZW1lbnRzIGluIHRoZSBsPQppc3QgYnkgY2xpY2tpbmcgb24gIiwnPGkgZGF0YS10YXJn ZXQ9M0QiLmNvbGxlY3Rpb24tZWxlbWVudCAubmFtZSI+dGhlIGV4aXM9CnRpbmcgbmFtZTwvaT4u J10uam9pbigiIikpLCI8L2xpPiIsIjxsaT4iLGYoWyJEaXNjYXJkIGVsZW1lbnRzIGZyb20gdGhl IGZpbj0KYWwgY3JlYXRlZCBsaXN0IGJ5IGNsaWNraW5nIG9uIHRoZSAiLCc8aSBkYXRhLXRhcmdl dD0zRCIuY29sbGVjdGlvbi1lbGVtZW50PQogLmRpc2NhcmQiPiJEaXNjYXJkIjwvaT4gYnV0dG9u LiddLmpvaW4oIiIpKSwiPC9saT4iLCI8bGk+IixmKFsiUmVvcmRlciB0aGU9CiBsaXN0IGJ5IGNs aWNraW5nIGFuZCBkcmFnZ2luZyBlbGVtZW50cy4gU2VsZWN0IG11bHRpcGxlIGVsZW1lbnRzIGJ5 IGNsaWNraT0Kbmcgb24gIiwnPGkgZGF0YS10YXJnZXQ9M0QiLmNvbGxlY3Rpb24tZWxlbWVudCI+ dGhlbTwvaT4gYW5kIHlvdSBjYW4gdGhlbiBtPQpvdmUgdGhvc2Ugc2VsZWN0ZWQgYnkgZHJhZ2dp bmcgdGhlICcsImVudGlyZSBncm91cC4gRGVzZWxlY3QgdGhlbSBieSBjbGlja2k9Cm5nIHRoZW0g YWdhaW4gb3IgYnkgY2xpY2tpbmcgdGhlICIsJ3RoZSA8aSBkYXRhLXRhcmdldD0zRCIuY2xlYXIt c2VsZWN0ZWQiPj0KIkNsZWFyIHNlbGVjdGVkIjwvaT4gbGluay4nXS5qb2luKCIiKSksIjwvbGk+ IiwiPGxpPiIsZihbJ0NsaWNrIHRoZSA8aSBkYXRhPQotdGFyZ2V0PTNEIi5yZXNldCI+IlN0YXJ0 IG92ZXIiPC9pPiBsaW5rIHRvIGJlZ2luIGFnYWluIGFzIGlmIHlvdSBoYWQganVzdCA9Cm9wZW5l ZCAnLCJ0aGUgaW50ZXJmYWNlLiJdLmpvaW4oIiIpKSwiPC9saT4iLCI8bGk+IixmKFsnQ2xpY2sg dGhlIDxpIGRhdGEtdD0KYXJnZXQ9M0QiLmNhbmNlbC1jcmVhdGUiPiJDYW5jZWwiPC9pPiBidXR0 b24gdG8gZXhpdCB0aGUgaW50ZXJmYWNlLiddLmpvaW4oPQoiIikpLCI8L2xpPiIsIjwvdWw+PGJy IC8+IiwiPHA+IixmKFsnT25jZSB5b3VyIGNvbGxlY3Rpb24gaXMgY29tcGxldGUsIGVudGU9CnIg YSA8aSBkYXRhLXRhcmdldD0zRCIuY29sbGVjdGlvbi1uYW1lIj5uYW1lPC9pPiBhbmQgJywnY2xp Y2sgPGkgZGF0YS10YXJnZT0KdD0zRCIuY3JlYXRlLWNvbGxlY3Rpb24iPiJDcmVhdGUgbGlzdCI8 L2k+LiddLmpvaW4oIiIpKSwiPC9wPiJdLmpvaW4oIiIpKSxpPQpudmFsaWRFbGVtZW50czpfLnRl bXBsYXRlKFtmKCJUaGUgZm9sbG93aW5nIHNlbGVjdGlvbnMgY291bGQgbm90IGJlIGluY2x1ZGU9 CmQgZHVlIHRvIHByb2JsZW1zOiIpLCI8dWw+PCUgXy5lYWNoKCBwcm9ibGVtcywgZnVuY3Rpb24o IHByb2JsZW0gKXsgJT4iLCI8bD0KaT48Yj48JS0gcHJvYmxlbS5lbGVtZW50Lm5hbWUgJT48L2I+ OiA8JS0gcHJvYmxlbS50ZXh0ICU+PC9saT4iLCI8JSB9KTsgJT48PQovdWw+Il0uam9pbigiIikp LG5vRWxlbWVudHNMZWZ0Ol8udGVtcGxhdGUoWyc8bGkgY2xhc3M9M0Qibm8tZWxlbWVudHMtbGVm dC09Cm1lc3NhZ2UiPicsZigiTm8gZWxlbWVudHMgbGVmdCEgIiksZigiV291bGQgeW91IGxpa2Ug dG8gIiksJzxhIGNsYXNzPTNEInJlcz0KZXQiIGhyZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApIj4n LGYoInN0YXJ0IG92ZXIiKSwiPC9hPj8iLCI8L2xpPiJdLmpvaW4oIiIpPQopLGludmFsaWRJbml0 aWFsOl8udGVtcGxhdGUoWyc8ZGl2IGNsYXNzPTNEImhlYWRlciBmbGV4LXJvdyBuby1mbGV4Ij4n LCc8ZGk9CnYgY2xhc3M9M0QiYWxlcnQgYWxlcnQtd2FybmluZyIgc3R5bGU9M0QiZGlzcGxheTog YmxvY2siPicsJzxzcGFuIGNsYXNzPTNEIj0KYWxlcnQtbWVzc2FnZSI+JywiPCUgaWYoIF8uc2l6 ZSggcHJvYmxlbXMgKSApeyAlPiIsZigiVGhlIGZvbGxvd2luZyBzZWxlY3RpPQpvbnMgY291bGQg bm90IGJlIGluY2x1ZGVkIGR1ZSB0byBwcm9ibGVtcyIpLCI6IiwiPHVsPjwlIF8uZWFjaCggcHJv YmxlbXMsIGY9CnVuY3Rpb24oIHByb2JsZW0gKXsgJT4iLCI8bGk+PGI+PCUtIHByb2JsZW0uZWxl bWVudC5uYW1lICU+PC9iPjogPCUtIHByb2JsZT0KbS50ZXh0ICU+PC9saT4iLCI8JSB9KTsgJT48 L3VsPiIsIjwlIH0gZWxzZSBpZiggXy5zaXplKCBlbGVtZW50cyApIDwgMSApeyAlPQo+IixmKCJO byBkYXRhc2V0cyB3ZXJlIHNlbGVjdGVkIiksIi4iLCI8JSB9ICU+IiwiPGJyIC8+IixmKCJBdCBs ZWFzdCBvbmUgZWw9CmVtZW50IGlzIG5lZWRlZCBmb3IgdGhlIGNvbGxlY3Rpb24iKSwiLiAiLGYo IllvdSBtYXkgbmVlZCB0byAiKSwnPGEgY2xhc3M9Cj0zRCJjYW5jZWwtY3JlYXRlIiBocmVmPTNE ImphdmFzY3JpcHQ6dm9pZCgwKSI+JyxmKCJjYW5jZWwiKSwiPC9hPiAiLGYoImFuZD0KIHJlc2Vs ZWN0IG5ldyBlbGVtZW50cyIpLCIuIiwiPC9zcGFuPiIsIjwvZGl2PiIsIjwvZGl2PiIsJzxkaXYg Y2xhc3M9M0QiZm9vPQp0ZXIgZmxleC1yb3cgbm8tZmxleCI+JywnPGRpdiBjbGFzcz0zRCJhY3Rp b25zIGNsZWFyIHZlcnRpY2FsbHktc3BhY2VkIj4nLCc9CjxkaXYgY2xhc3M9M0Qib3RoZXItb3B0 aW9ucyBwdWxsLWxlZnQiPicsJzxidXR0b24gY2xhc3M9M0QiY2FuY2VsLWNyZWF0ZSBidD0KbiIg dGFiaW5kZXg9M0QiLTEiPicsZigiQ2FuY2VsIiksIjwvYnV0dG9uPiIsIjwvZGl2PiIsIjwvZGl2 PiIsIjwvZGl2PiJdLmpvPQppbigiIikpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJMaXN0 Q29sbGVjdGlvbkNyZWF0b3IifX0pLGo9M0RmdW5jdGlvbig9CmEsYixjKXt2YXIgZSxnPTNEalF1 ZXJ5LkRlZmVycmVkKCksaD0zREdhbGF4eS5tb2RhbHx8bmV3IGQuVmlldztyZXR1cm4gYj0zRD0K Xy5kZWZhdWx0cyhifHx7fSx7ZWxlbWVudHM6YSxvbmNhbmNlbDpmdW5jdGlvbigpe2guaGlkZSgp LGcucmVqZWN0KCJjYW5jZWxsPQplZCIpfSxvbmNyZWF0ZTpmdW5jdGlvbihhLGIpe2guaGlkZSgp LGcucmVzb2x2ZShiKX19KSxlPTNEbmV3IGMoYiksaC5zaG93KHs9CnRpdGxlOmIudGl0bGV8fGYo IkNyZWF0ZSBhIGNvbGxlY3Rpb24iKSxib2R5OmUuJGVsLHdpZHRoOiI4MCUiLGhlaWdodDoiMTAw JT0KIixjbG9zaW5nX2V2ZW50czohMH0pLGUucmVuZGVyKCksd2luZG93Ll9jb2xsZWN0aW9uQ3Jl YXRvcj0zRGUsZ30saz0zRGZ1bmN0PQppb24oYSxiKXtyZXR1cm4gYj0zRGJ8fHt9LGIudGl0bGU9 M0RmKCJDcmVhdGUgYSBjb2xsZWN0aW9uIGZyb20gYSBsaXN0IG9mIGQ9CmF0YXNldHMiKSxqKGEs YixpKX07cmV0dXJue0RhdGFzZXRDb2xsZWN0aW9uRWxlbWVudFZpZXc6aCxMaXN0Q29sbGVjdGlv bkNyZT0KYXRvcjppLGNvbGxlY3Rpb25DcmVhdG9yTW9kYWw6aixsaXN0Q29sbGVjdGlvbkNyZWF0 b3JNb2RhbDprLGNyZWF0ZUxpc3RDb2xsPQplY3Rpb246Z319KTsKIC8vIyBzb3VyY2VNYXBwaW5n VVJMPTNELi4vLi4vLi4vbWFwcy9tdmMvY29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRv PQpyLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgZDYyZjNlNTBi NTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0 Zj0KNGJkZDRiMWUxOWE5N2FhNTUgc3RhdGljL3NjcmlwdHMvbXZjL2xpYnJhcnkvbGlicmFyeS1m b2xkZXJ0b29sYmFyLXZpZXcuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvbXZjL2xpYnJhcnkvbGli cmFyeS1mb2xkZXJ0b29sYmFyLXZpZXcuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL2xpYnJh cnkvbGlicmFyeS1mb2xkZXJ0b29sYmFyLXZpZXcuanMKQEAgLTEsMyArMSwzIEBACi1kZWZpbmUo WyJnYWxheHkubWFzdGhlYWQiLCJ1dGlscy91dGlscyIsImxpYnMvdG9hc3RyIiwibXZjL2xpYnJh cnkvbGlicmFyeT0KLW1vZGVsIiwibXZjL3VpL3VpLXNlbGVjdCJdLGZ1bmN0aW9uKGEsYixjLGQs ZSl7dmFyIGY9M0RCYWNrYm9uZS5WaWV3LmV4dGVuPQpkKHtlbDoiI2NlbnRlciIsZXZlbnRzOnsi Y2xpY2sgI3Rvb2xidG5fY3JlYXRlX2ZvbGRlciI6ImNyZWF0ZUZvbGRlckZyb21Nb2Q9CmFsIiwi Y2xpY2sgI3Rvb2xidG5fYnVsa19pbXBvcnQiOiJtb2RhbEJ1bGtJbXBvcnQiLCJjbGljayAjaW5j bHVkZV9kZWxldGVkXz0KZGF0YXNldHNfY2hrIjoiY2hlY2tJbmNsdWRlRGVsZXRlZCIsImNsaWNr ICN0b29sYnRuX3Nob3dfbGliaW5mbyI6InNob3dMaWJJPQpuZm8iLCJjbGljayAjdG9vbGJ0bl9i dWxrX2RlbGV0ZSI6ImRlbGV0ZVNlbGVjdGVkRGF0YXNldHMiLCJjbGljayAjcGFnZV9zaXo9CmVf cHJvbXB0Ijoic2hvd1BhZ2VTaXplUHJvbXB0In0sZGVmYXVsdHM6e2Nhbl9hZGRfbGlicmFyeV9p dGVtOiExLGNvbnRhaW5zXz0KZmlsZV9vcl9mb2xkZXI6ITEsY2hhaW5fY2FsbF9jb250cm9sOnt0 b3RhbF9udW1iZXI6MCxmYWlsZWRfbnVtYmVyOjB9LGRpc2FiPQpsZWRfanN0cmVlX2VsZW1lbnQ6 ImZvbGRlcnMifSxtb2RhbDpudWxsLGpzdHJlZTpudWxsLGhpc3RvcmllczpudWxsLHNlbGVjdF89 Cmdlbm9tZTpudWxsLHNlbGVjdF9leHRlbnNpb246bnVsbCxsaXN0X2V4dGVuc2lvbnM6W10sYXV0 bzp7aWQ6ImF1dG8iLHRleHQ6Ij0KQXV0by1kZXRlY3QiLGRlc2NyaXB0aW9uOiJUaGlzIHN5c3Rl bSB3aWxsIHRyeSB0byBkZXRlY3QgdGhlIGZpbGUgdHlwZSBhdXRvPQptYXRpY2FsbHkuIElmIHlv dXIgZmlsZSBpcyBub3QgZGV0ZWN0ZWQgcHJvcGVybHkgYXMgb25lIG9mIHRoZSBrbm93biBmb3Jt YXQ9CnMsIGl0IG1vc3QgbGlrZWx5IG1lYW5zIHRoYXQgaXQgaGFzIHNvbWUgZm9ybWF0IHByb2Js ZW1zIChlLmcuLCBkaWZmZXJlbnQgbj0KdW1iZXIgb2YgY29sdW1ucyBvbiBkaWZmZXJlbnQgcm93 cykuIFlvdSBjYW4gc3RpbGwgY29lcmNlIHRoZSBzeXN0ZW0gdG8gc2V0PQogeW91ciBkYXRhIHRv IHRoZSBmb3JtYXQgeW91IHRoaW5rIGl0IHNob3VsZCBiZS4gWW91IGNhbiBhbHNvIHVwbG9hZCBj b21wcmU9CnNzZWQgZmlsZXMsIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseSBiZSBkZWNvbXByZXNz ZWQuIn0sbGlzdF9nZW5vbWVzOltdLGluaT0KdGlhbGl6ZTpmdW5jdGlvbihhKXt0aGlzLm9wdGlv bnM9M0RfLmRlZmF1bHRzKGF8fHt9LHRoaXMuZGVmYXVsdHMpLHRoaXMuZmV0PQpjaEV4dEFuZEdl bm9tZXMoKSx0aGlzLnJlbmRlcigpfSxyZW5kZXI6ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zPTNE Xy5leHRlbmQ9Cih0aGlzLm9wdGlvbnMsYSk7dmFyIGI9M0R0aGlzLnRlbXBsYXRlVG9vbEJhcigp LGM9M0R7aWQ6dGhpcy5vcHRpb25zLmlkLGlzXz0KYWRtaW46ITEsaXNfYW5vbnltOiEwLG11dGlw bGVfYWRkX2RhdGFzZXRfb3B0aW9uczohMX07R2FsYXh5LmN1cnJVc2VyJiYoYy5pPQpzX2FkbWlu PTNER2FsYXh5LmN1cnJVc2VyLmlzQWRtaW4oKSxjLmlzX2Fub255bT0zREdhbGF4eS5jdXJyVXNl ci5pc0Fub255bW89CnVzKCksKG51bGwhPTNEPTNER2FsYXh5LmNvbmZpZy51c2VyX2xpYnJhcnlf aW1wb3J0X2Rpcnx8R2FsYXh5LmNvbmZpZy5hbGxvdz0KX2xpYnJhcnlfcGF0aF9wYXN0ZSE9M0Q9 M0QhMXx8bnVsbCE9M0Q9M0RHYWxheHkuY29uZmlnLmxpYnJhcnlfaW1wb3J0X2RpcikmPQomKGMu bXV0aXBsZV9hZGRfZGF0YXNldF9vcHRpb25zPTNEITApKSx0aGlzLiRlbC5odG1sKGIoYykpfSxy ZW5kZXJQYWdpbmF0b3I9CjpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9M0RfLmV4dGVuZCh0aGlz Lm9wdGlvbnMsYSk7dmFyIGI9M0R0aGlzLnRlbXBsYXRlUD0KYWdpbmF0b3IoKTt0aGlzLiRlbC5m aW5kKCIjZm9sZGVyX3BhZ2luYXRvciIpLmh0bWwoYih7aWQ6dGhpcy5vcHRpb25zLmlkLHNoPQpv d19wYWdlOnBhcnNlSW50KHRoaXMub3B0aW9ucy5zaG93X3BhZ2UpLHBhZ2VfY291bnQ6cGFyc2VJ bnQodGhpcy5vcHRpb25zLnA9CmFnZV9jb3VudCksdG90YWxfaXRlbXNfY291bnQ6dGhpcy5vcHRp b25zLnRvdGFsX2l0ZW1zX2NvdW50LGl0ZW1zX3Nob3duOnRoaT0Kcy5vcHRpb25zLml0ZW1zX3No b3dufSkpfSxjb25maWd1cmVFbGVtZW50czpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9M0RfLmV4 PQp0ZW5kKHRoaXMub3B0aW9ucyxhKSx0aGlzLm9wdGlvbnMuY2FuX2FkZF9saWJyYXJ5X2l0ZW09 M0Q9M0Q9M0QhMD8kKCIuYWRkLWw9CmlicmFyeS1pdGVtcyIpLnNob3coKTokKCIuYWRkLWxpYnJh cnktaXRlbXMiKS5oaWRlKCksdGhpcy5vcHRpb25zLmNvbnRhaW5zXz0KZmlsZV9vcl9mb2xkZXI9 M0Q9M0Q9M0QhMCYmR2FsYXh5LmN1cnJVc2VyP0dhbGF4eS5jdXJyVXNlci5pc0Fub255bW91cygp PygkPQooIi5kYXRhc2V0LW1hbmlwdWxhdGlvbiIpLnNob3coKSwkKCIubG9nZ2VkLWRhdGFzZXQt bWFuaXB1bGF0aW9uIikuaGlkZSgpKTo9CigkKCIubG9nZ2VkLWRhdGFzZXQtbWFuaXB1bGF0aW9u Iikuc2hvdygpLCQoIi5kYXRhc2V0LW1hbmlwdWxhdGlvbiIpLnNob3coKT0KKTooJCgiLmxvZ2dl ZC1kYXRhc2V0LW1hbmlwdWxhdGlvbiIpLmhpZGUoKSwkKCIuZGF0YXNldC1tYW5pcHVsYXRpb24i KS5oaWRlPQooKSksdGhpcy4kZWwuZmluZCgiW2RhdGEtdG9nZ2xlXSIpLnRvb2x0aXAoKX0sY3Jl YXRlRm9sZGVyRnJvbU1vZGFsOmZ1bmN0aW89Cm4oYSl7YS5wcmV2ZW50RGVmYXVsdCgpLGEuc3Rv cFByb3BhZ2F0aW9uKCk7dmFyIGI9M0R0aGlzLGM9M0R0aGlzLnRlbXBsYXRlTj0KZXdGb2xkZXJJ bk1vZGFsKCk7dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3Np bmdfZXZlbnRzPQo6ITAsdGl0bGU6IkNyZWF0ZSBOZXcgRm9sZGVyIixib2R5OmMoKSxidXR0b25z OntDcmVhdGU6ZnVuY3Rpb24oKXtiLmNyZWF0ZV89Cm5ld19mb2xkZXJfZXZlbnQoKX0sQ2xvc2U6 ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlkZSgpfX19KX0sY3JlYXRlX25ld19mbz0KbGRlcl9l dmVudDpmdW5jdGlvbigpe3ZhciBhPTNEdGhpcy5zZXJpYWxpemVfbmV3X2ZvbGRlcigpO2lmKHRo aXMudmFsaWRhdGVfPQpuZXdfZm9sZGVyKGEpKXt2YXIgYj0zRG5ldyBkLkZvbGRlckFzTW9kZWw7 dXJsX2l0ZW1zPTNEQmFja2JvbmUuaGlzdG9yeS5mcmE9CmdtZW50LnNwbGl0KCIvIiksY3VycmVu dF9mb2xkZXJfaWQ9M0R1cmxfaXRlbXNbdXJsX2l0ZW1zLmxlbmd0aC0xXSxiLnVybD0zRD0KYi51 cmxSb290K2N1cnJlbnRfZm9sZGVyX2lkLGIuc2F2ZShhLHtzdWNjZXNzOmZ1bmN0aW9uKGEpe0dh bGF4eS5tb2RhbC5oaWRlPQooKSxjLnN1Y2Nlc3MoIkZvbGRlciBjcmVhdGVkLiIpLGEuc2V0KHt0 eXBlOiJmb2xkZXIifSksR2FsYXh5LmxpYnJhcmllcy5mb2w9CmRlckxpc3RWaWV3LmNvbGxlY3Rp b24uYWRkKGEpfSxlcnJvcjpmdW5jdGlvbihhLGIpe0dhbGF4eS5tb2RhbC5oaWRlKCksYy5lcj0K cm9yKCJ1bmRlZmluZWQiIT0zRHR5cGVvZiBiLnJlc3BvbnNlSlNPTj9iLnJlc3BvbnNlSlNPTi5l cnJfbXNnOiJBbiBlcnJvciBvPQpjdXJyZWQuIil9fSl9ZWxzZSBjLmVycm9yKCJGb2xkZXIncyBu YW1lIGlzIG1pc3NpbmcuIik7cmV0dXJuITF9LHNlcmlhbGl6ZV89Cm5ld19mb2xkZXI6ZnVuY3Rp b24oKXtyZXR1cm57bmFtZTokKCJpbnB1dFtuYW1lPTNEJ05hbWUnXSIpLnZhbCgpLGRlc2NyaXB0 aT0Kb246JCgiaW5wdXRbbmFtZT0zRCdEZXNjcmlwdGlvbiddIikudmFsKCl9fSx2YWxpZGF0ZV9u ZXdfZm9sZGVyOmZ1bmN0aW9uKGEpPQp7cmV0dXJuIiIhPTNEPTNEYS5uYW1lfSxtb2RhbEJ1bGtJ bXBvcnQ6ZnVuY3Rpb24oKXt2YXIgYT0zRCQoIiNmb2xkZXJfdGFibGU9CiIpLmZpbmQoIjpjaGVj a2VkIik7MD0zRD0zRD0zRGEubGVuZ3RoP2MuaW5mbygiWW91IG11c3Qgc2VsZWN0IHNvbWUgZGF0 YXNldD0KcyBmaXJzdC4iKTp0aGlzLnJlZnJlc2hVc2VySGlzdG9yaWVzTGlzdChmdW5jdGlvbihh KXt2YXIgYj0zRGEudGVtcGxhdGVCdWxrPQpJbXBvcnRJbk1vZGFsKCk7YS5tb2RhbD0zREdhbGF4 eS5tb2RhbCxhLm1vZGFsLnNob3coe2Nsb3NpbmdfZXZlbnRzOiEwLHRpdGw9CmU6IkltcG9ydCBp bnRvIEhpc3RvcnkiLGJvZHk6Yih7aGlzdG9yaWVzOmEuaGlzdG9yaWVzLm1vZGVsc30pLGJ1dHRv bnM6e0ltcD0Kb3J0OmZ1bmN0aW9uKCl7YS5pbXBvcnRBbGxJbnRvSGlzdG9yeSgpfSxDbG9zZTpm dW5jdGlvbigpe0dhbGF4eS5tb2RhbC5oaWRlPQooKX19fSl9KX0scmVmcmVzaFVzZXJIaXN0b3Jp ZXNMaXN0OmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpczt0aGlzLmhpc3Rvcmllcz0KPTNEbmV3IGQu R2FsYXh5SGlzdG9yaWVzLHRoaXMuaGlzdG9yaWVzLmZldGNoKHtzdWNjZXNzOmZ1bmN0aW9uKCl7 YShiKX0sZXJyPQpvcjpmdW5jdGlvbihhLGIpe2MuZXJyb3IoInVuZGVmaW5lZCIhPTNEdHlwZW9m IGIucmVzcG9uc2VKU09OP2IucmVzcG9uc2VKU089Ck4uZXJyX21zZzoiQW4gZXJyb3Igb2N1cnJl ZC4iKX19KX0saW1wb3J0QWxsSW50b0hpc3Rvcnk6ZnVuY3Rpb24oKXt0aGlzLm1vZD0KYWwuZGlz YWJsZUJ1dHRvbigiSW1wb3J0Iik7dmFyIGE9M0QkKCJzZWxlY3RbbmFtZT0zRGRhdGFzZXRfaW1w b3J0X2J1bGtdIG9wPQp0aW9uOnNlbGVjdGVkIikudmFsKCksYj0zRCQoInNlbGVjdFtuYW1lPTNE ZGF0YXNldF9pbXBvcnRfYnVsa10gb3B0aW9uOnNlbGU9CmN0ZWQiKS50ZXh0KCk7dGhpcy5vcHRp b25zLmxhc3RfdXNlZF9oaXN0b3J5X2lkPTNEYTt2YXIgYz0zRFtdLGU9M0RbXTskKCIjZj0Kb2xk ZXJfdGFibGUiKS5maW5kKCI6Y2hlY2tlZCIpLmVhY2goZnVuY3Rpb24oKXsiIiE9M0Q9M0R0aGlz LnBhcmVudEVsZW1lbnQuPQpwYXJlbnRFbGVtZW50LmlkJiZ0aGlzLnBhcmVudEVsZW1lbnQucGFy ZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImRhdGE9CnNldF9yb3ciKT9jLnB1c2godGhp cy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuaWQpOiIiIT0zRD0zRHRoaXMucGFyZW50RT0K bGVtZW50LnBhcmVudEVsZW1lbnQuaWQmJnRoaXMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50 LmNsYXNzTGlzdC5jb250YWluPQpzKCJmb2xkZXJfcm93IikmJmUucHVzaCh0aGlzLnBhcmVudEVs ZW1lbnQucGFyZW50RWxlbWVudC5pZCl9KTtmb3IodmFyIGY9M0Q9CltdLGc9M0RjLmxlbmd0aC0x O2c+PTNEMDtnLS0pe3ZhciBoPTNEY1tnXSxpPTNEbmV3IGQuSGlzdG9yeUl0ZW07aS51cmw9M0Rp Lj0KdXJsUm9vdCthKyIvY29udGVudHMiLGkuY29udGVudD0zRGgsaS5zb3VyY2U9M0QibGlicmFy eSIsZi5wdXNoKGkpfWZvcih2YXIgPQpnPTNEZS5sZW5ndGgtMTtnPj0zRDA7Zy0tKXt2YXIgaj0z RGVbZ10saT0zRG5ldyBkLkhpc3RvcnlJdGVtO2kudXJsPTNEaS51cmw9ClJvb3QrYSsiL2NvbnRl bnRzIixpLmNvbnRlbnQ9M0RqLGkuc291cmNlPTNEImxpYnJhcnlfZm9sZGVyIixmLnB1c2goaSl9 dGhpcz0KLmluaXRDaGFpbkNhbGxDb250cm9sKHtsZW5ndGg6Zi5sZW5ndGgsYWN0aW9uOiJ0b19o aXN0b3J5IixoaXN0b3J5X25hbWU6Yn0pPQosalF1ZXJ5LmdldEpTT04oZ2FsYXh5X2NvbmZpZy5y b290KyJoaXN0b3J5L3NldF9hc19jdXJyZW50P2lkPTNEIithKSx0aGlzLmM9CmhhaW5DYWxsSW1w b3J0aW5nSW50b0hpc3RvcnkoZixiKX0sdXBkYXRlUHJvZ3Jlc3M6ZnVuY3Rpb24oKXt0aGlzLnBy b2dyZXNzKz0KPTNEdGhpcy5wcm9ncmVzc1N0ZXAsJCgiLnByb2dyZXNzLWJhci1pbXBvcnQiKS53 aWR0aChNYXRoLnJvdW5kKHRoaXMucHJvZ3JlPQpzcykrIiUiKSx0eHRfcmVwcmVzZW50YXRpb249 M0RNYXRoLnJvdW5kKHRoaXMucHJvZ3Jlc3MpKyIlIENvbXBsZXRlIiwkKCIuY289Cm1wbGV0aW9u X3NwYW4iKS50ZXh0KHR4dF9yZXByZXNlbnRhdGlvbil9LGRvd25sb2FkOmZ1bmN0aW9uKGEsYil7 dmFyIGM9M0RbXT0KLGQ9M0RbXTskKCIjZm9sZGVyX3RhYmxlIikuZmluZCgiOmNoZWNrZWQiKS5l YWNoKGZ1bmN0aW9uKCl7IiIhPTNEPTNEdGhpcy5wPQphcmVudEVsZW1lbnQucGFyZW50RWxlbWVu dC5pZCYmdGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmM9Cm9udGFp bnMoImRhdGFzZXRfcm93Iik/Yy5wdXNoKHRoaXMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50 LmlkKToiIiE9M0Q9Cj0zRHRoaXMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmlkJiZ0aGlz LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5jbD0KYXNzTGlzdC5jb250YWlucygiZm9sZGVy X3JvdyIpJiZkLnB1c2godGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuaWQpPQp9KTt2 YXIgZT0zRCh3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBp L2xpYnJhcmllcy9kYXQ9CmFzZXRzL2Rvd25sb2FkLyIrYixmPTNEe2xkX2lkczpjLGZvbGRlcl9p ZHM6ZH07dGhpcy5wcm9jZXNzRG93bmxvYWQoZSxmLCJnZT0KdCIpfSxwcm9jZXNzRG93bmxvYWQ6 ZnVuY3Rpb24oYSxiLGQpe2lmKGEmJmIpe2I9M0Qic3RyaW5nIj0zRD0zRHR5cGVvZiBiP2I6PQok LnBhcmFtKGIpO3ZhciBlPTNEIiI7JC5lYWNoKGIuc3BsaXQoIiYiKSxmdW5jdGlvbigpe3ZhciBh PTNEdGhpcy5zcGxpdCgiPQo9M0QiKTtlKz0zRCc8aW5wdXQgdHlwZT0zRCJoaWRkZW4iIG5hbWU9 M0QiJythWzBdKyciIHZhbHVlPTNEIicrYVsxXSsnIiAvPic9Cn0pLCQoJzxmb3JtIGFjdGlvbj0z RCInK2ErJyIgbWV0aG9kPTNEIicrKGR8fCJwb3N0IikrJyI+JytlKyI8L2Zvcm0+IikuYXBwZT0K bmRUbygiYm9keSIpLnN1Ym1pdCgpLnJlbW92ZSgpLGMuaW5mbygiWW91ciBkb3dubG9hZCB3aWxs IGJlZ2luIHNvb24uIil9ZWxzPQplIGMuZXJyb3IoIkFuIGVycm9yIG9jY3VycmVkLiIpfSxhZGRG aWxlc0Zyb21IaXN0b3J5TW9kYWw6ZnVuY3Rpb24oKXt0aGlzLnI9CmVmcmVzaFVzZXJIaXN0b3Jp ZXNMaXN0KGZ1bmN0aW9uKGEpe2EubW9kYWw9M0RHYWxheHkubW9kYWw7dmFyIGI9M0RhLnRlbXBs YT0KdGVBZGRGaWxlc0Zyb21IaXN0b3J5KCksZD0zRGEub3B0aW9ucy5mdWxsX3BhdGhbYS5vcHRp b25zLmZ1bGxfcGF0aC5sZW5ndGgtPQoxXVsxXTthLm1vZGFsLnNob3coe2Nsb3NpbmdfZXZlbnRz OiEwLHRpdGxlOiJBZGRpbmcgZGF0YXNldHMgZnJvbSB5b3VyIGhpc3Q9Cm9yeSB0byBmb2xkZXIg IitkLGJvZHk6Yih7aGlzdG9yaWVzOmEuaGlzdG9yaWVzLm1vZGVsc30pLGJ1dHRvbnM6e0FkZDpm dW5jdD0KaW9uKCl7YS5hZGRBbGxEYXRhc2V0c0Zyb21IaXN0b3J5KCl9LENsb3NlOmZ1bmN0aW9u KCl7R2FsYXh5Lm1vZGFsLmhpZGUoKX19PQosY2xvc2luZ19jYWxsYmFjazpmdW5jdGlvbigpe0dh bGF4eS5saWJyYXJpZXMubGlicmFyeV9yb3V0ZXIuYmFjaygpfX0pLGEuaGk9CnN0b3JpZXMubW9k ZWxzLmxlbmd0aD4wPyhhLmZldGNoQW5kRGlzcGxheUhpc3RvcnlDb250ZW50cyhhLmhpc3Rvcmll cy5tb2RlbD0Kc1swXS5pZCksJCgiI2RhdGFzZXRfYWRkX2J1bGsiKS5jaGFuZ2UoZnVuY3Rpb24o Yil7YS5mZXRjaEFuZERpc3BsYXlIaXN0b3J5PQpDb250ZW50cyhiLnRhcmdldC52YWx1ZSl9KSk6 Yy5lcnJvcigiQW4gZXJyb3Igb2N1cnJlZC4iKX0pfSxpbXBvcnRGaWxlc0Zyb209ClBhdGhNb2Rh bDpmdW5jdGlvbigpe3ZhciBhPTNEdGhpczt0aGlzLm1vZGFsPTNER2FsYXh5Lm1vZGFsO3ZhciBi PTNEdGhpcy50ZT0KbXBsYXRlSW1wb3J0UGF0aE1vZGFsKCk7dGhpcy5tb2RhbC5zaG93KHtjbG9z aW5nX2V2ZW50czohMCx0aXRsZToiUGxlYXNlIGVuPQp0ZXIgcGF0aHMgdG8gaW1wb3J0Iixib2R5 OmIoe30pLGJ1dHRvbnM6e0ltcG9ydDpmdW5jdGlvbigpe2EuaW1wb3J0RnJvbVBhdGg9CnNDbGlj a2VkKGEpfSxDbG9zZTpmdW5jdGlvbigpe0dhbGF4eS5tb2RhbC5oaWRlKCl9fSxjbG9zaW5nX2Nh bGxiYWNrOmZ1bmN0aT0Kb24oKXtHYWxheHkubGlicmFyaWVzLmxpYnJhcnlfcm91dGVyLm5hdmln YXRlKCJmb2xkZXJzLyIrYS5pZCx7dHJpZ2dlcjohMH0pPQp9fSksdGhpcy5yZW5kZXJTZWxlY3RC b3hlcygpfSxmZXRjaEV4dEFuZEdlbm9tZXM6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXM7Yi49Cmdl dCh7dXJsOih3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBp L2RhdGF0eXBlcz9leHRlbj0Kc2lvbl9vbmx5PTNERmFsc2UiLHN1Y2Nlc3M6ZnVuY3Rpb24oYil7 Zm9yKGtleSBpbiBiKWEubGlzdF9leHRlbnNpb25zLnB1c2goPQp7aWQ6YltrZXldLmV4dGVuc2lv bix0ZXh0OmJba2V5XS5leHRlbnNpb24sZGVzY3JpcHRpb246YltrZXldLmRlc2NyaXB0aW9uLGQ9 CmVzY3JpcHRpb25fdXJsOmJba2V5XS5kZXNjcmlwdGlvbl91cmx9KTthLmxpc3RfZXh0ZW5zaW9u cy5zb3J0KGZ1bmN0aW9uKGEsYj0KKXtyZXR1cm4gYS5pZD5iLmlkPzE6YS5pZDxiLmlkPy0xOjB9 KSxhLmxpc3RfZXh0ZW5zaW9ucy51bnNoaWZ0KGEuYXV0byl9fSksPQpiLmdldCh7dXJsOih3aW5k b3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2dlbm9tZXMiLHN1 Y2M9CmVzczpmdW5jdGlvbihiKXtmb3Ioa2V5IGluIGIpYS5saXN0X2dlbm9tZXMucHVzaCh7aWQ6 YltrZXldWzFdLHRleHQ6YltrZXldWz0KMF19KTthLmxpc3RfZ2Vub21lcy5zb3J0KGZ1bmN0aW9u KGEsYil7cmV0dXJuIGEuaWQ+Yi5pZD8xOmEuaWQ8Yi5pZD8tMTowfSl9PQp9KX0scmVuZGVyU2Vs ZWN0Qm94ZXM6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXM7dGhpcy5zZWxlY3RfZ2Vub21lPTNEbmV3 IGUuVmk9CmV3KHtjc3M6ImxpYnJhcnktZ2Vub21lLXNlbGVjdCIsZGF0YTphLmxpc3RfZ2Vub21l cyxjb250YWluZXI6R2FsYXh5Lm1vZGFsLj0KJGVsLmZpbmQoIiNsaWJyYXJ5X2dlbm9tZV9zZWxl Y3QiKSx2YWx1ZToiPyJ9KSx0aGlzLnNlbGVjdF9leHRlbnNpb249M0RuZXcgPQplLlZpZXcoe2Nz czoibGlicmFyeS1leHRlbnNpb24tc2VsZWN0IixkYXRhOmEubGlzdF9leHRlbnNpb25zLGNvbnRh aW5lcjpHYWw9CmF4eS5tb2RhbC4kZWwuZmluZCgiI2xpYnJhcnlfZXh0ZW5zaW9uX3NlbGVjdCIp LHZhbHVlOiJhdXRvIn0pfSxpbXBvcnRGaWxlcz0KRnJvbUdhbGF4eUZvbGRlck1vZGFsOmZ1bmN0 aW9uKGEpe3ZhciBiPTNEdGhpcyxjPTNEdGhpcy50ZW1wbGF0ZUJyb3dzZXJNb2RhPQpsKCk7dGhp cy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3NpbmdfZXZlbnRzOiEw LHRpdGxlOiJQbGU9CmFzZSBzZWxlY3QgZm9sZGVycyBvciBmaWxlcyIsYm9keTpjKHt9KSxidXR0 b25zOntJbXBvcnQ6ZnVuY3Rpb24oKXtiLmltcG9ydD0KRnJvbUpzdHJlZVBhdGgoYixhKX0sQ2xv c2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlkZSgpfX0sY2xvc2luZ19jYWxsYmFjPQprOmZ1 bmN0aW9uKCl7R2FsYXh5LmxpYnJhcmllcy5saWJyYXJ5X3JvdXRlci5uYXZpZ2F0ZSgiZm9sZGVy cy8iK2IuaWQse3RyaWc9CmdlcjohMH0pfX0pLHRoaXMucmVuZGVyU2VsZWN0Qm94ZXMoKSxhLmRp c2FibGVkX2pzdHJlZV9lbGVtZW50PTNEImZvbGRlcnMiLD0KdGhpcy5yZW5kZXJKc3RyZWUoYSks JCgiaW5wdXRbdHlwZT0zRHJhZGlvXSIpLmNoYW5nZShmdW5jdGlvbihjKXsianN0cmVlLWRpPQpz YWJsZS1mb2xkZXJzIj0zRD0zRD0zRGMudGFyZ2V0LnZhbHVlPyhhLmRpc2FibGVkX2pzdHJlZV9l bGVtZW50PTNEImZvbGRlcnM9CiIsYi5yZW5kZXJKc3RyZWUoYSksJCgiLmpzdHJlZS1mb2xkZXJz LW1lc3NhZ2UiKS5oaWRlKCksJCgiLmpzdHJlZS1wcmVzZXJ2ZT0KLXN0cnVjdHVyZSIpLmhpZGUo KSwkKCIuanN0cmVlLWxpbmstZmlsZXMiKS5oaWRlKCksJCgiLmpzdHJlZS1maWxlcy1tZXNzYWdl PQoiKS5zaG93KCkpOiJqc3RyZWUtZGlzYWJsZS1maWxlcyI9M0Q9M0Q9M0RjLnRhcmdldC52YWx1 ZSYmKCQoIi5qc3RyZWUtZmlsZXM9Ci1tZXNzYWdlIikuaGlkZSgpLCQoIi5qc3RyZWUtZm9sZGVy cy1tZXNzYWdlIikuc2hvdygpLCQoIi5qc3RyZWUtbGluay1maWxlcz0KIikuc2hvdygpLCQoIi5q c3RyZWUtcHJlc2VydmUtc3RydWN0dXJlIikuc2hvdygpLGEuZGlzYWJsZWRfanN0cmVlX2VsZW1l bnQ9Cj0zRCJmaWxlcyIsYi5yZW5kZXJKc3RyZWUoYSkpfSl9LHJlbmRlckpzdHJlZTpmdW5jdGlv bihhKXt0aGlzLm9wdGlvbnM9M0RfLj0KZXh0ZW5kKHRoaXMub3B0aW9ucyxhKTt2YXIgYj0zRGEu c291cmNlfHwidXNlcmRpciIsZT0zRHRoaXMub3B0aW9ucy5kaXNhYmxlPQpkX2pzdHJlZV9lbGVt ZW50O3RoaXMuanN0cmVlPTNEbmV3IGQuSnN0cmVlLHRoaXMuanN0cmVlLnVybD0zRHRoaXMuanN0 cmVlLnU9CnJsUm9vdCsiP3RhcmdldD0zRCIrYisiJmZvcm1hdD0zRGpzdHJlZSZkaXNhYmxlPTNE IitlLHRoaXMuanN0cmVlLmZldGNoKHtzdT0KY2Nlc3M6ZnVuY3Rpb24oYSl7ZGVmaW5lKCJqcXVl cnkiLGZ1bmN0aW9uKCl7cmV0dXJuIGpRdWVyeX0pLHJlcXVpcmUoWyJsaWJzPQovanF1ZXJ5L2pz dHJlZSJdLGZ1bmN0aW9uKCl7JCgiI2pzdHJlZV9icm93c2VyIikuanN0cmVlKCJkZXN0cm95Iiks JCgiI2pzdHI9CmVlX2Jyb3dzZXIiKS5qc3RyZWUoe2NvcmU6e2RhdGE6YX0scGx1Z2luczpbInR5 cGVzIiwiY2hlY2tib3giXSx0eXBlczp7Zm9sZD0KZXI6e2ljb246ImpzdHJlZS1mb2xkZXIifSxm aWxlOntpY29uOiJqc3RyZWUtZmlsZSJ9fSxjaGVja2JveDp7dGhyZWVfc3RhdGU6PQohMX19KX0p fSxlcnJvcjpmdW5jdGlvbihhLGIpe2MuZXJyb3IoInVuZGVmaW5lZCIhPTNEdHlwZW9mIGIucmVz cG9uc2VKU09OP2I9Ci5yZXNwb25zZUpTT04uZXJyX21zZzoiQW4gZXJyb3Igb2N1cnJlZC4iKX19 KX0saW1wb3J0RnJvbVBhdGhzQ2xpY2tlZDpmdW5jdD0KaW9uKCl7dmFyIGE9M0R0aGlzLm1vZGFs LiRlbC5maW5kKCIucHJlc2VydmUtY2hlY2tib3giKS5pcygiOmNoZWNrZWQiKSxiPTNEPQp0aGlz Lm1vZGFsLiRlbC5maW5kKCIubGluay1jaGVja2JveCIpLmlzKCI6Y2hlY2tlZCIpLGQ9M0R0aGlz LnNlbGVjdF9leHRlbnM9Cmlvbi52YWx1ZSgpLGU9M0R0aGlzLnNlbGVjdF9nZW5vbWUudmFsdWUo KSxmPTNEJCgidGV4dGFyZWEjaW1wb3J0X3BhdGhzIikudj0KYWwoKSxnPTNEW107aWYoZil7dGhp cy5tb2RhbC5kaXNhYmxlQnV0dG9uKCJJbXBvcnQiKSxmPTNEZi5zcGxpdCgiXG4iKTtmb3IoPQp2 YXIgaD0zRGYubGVuZ3RoLTE7aD49M0QwO2gtLSl0cmltbWVkPTNEZltoXS50cmltKCksMCE9M0Q9 M0R0cmltbWVkLmxlbmd0aCY9CiZnLnB1c2godHJpbW1lZCk7dGhpcy5pbml0Q2hhaW5DYWxsQ29u dHJvbCh7bGVuZ3RoOmcubGVuZ3RoLGFjdGlvbjoiYWRkaW5nXz0KZGF0YXNldHMifSksdGhpcy5j aGFpbkNhbGxJbXBvcnRpbmdGb2xkZXJzKHtwYXRoczpnLHByZXNlcnZlX2RpcnM6YSxsaW5rX2Rh PQp0YTpiLHNvdXJjZToiYWRtaW5fcGF0aCIsZmlsZV90eXBlOmQsZGJrZXk6ZX0pfWVsc2UgYy5p bmZvKCJQbGVhc2UgZW50ZXIgYSA9CnBhdGggcmVsYXRpdmUgdG8gR2FsYXh5IHJvb3QuIil9LGlu aXRDaGFpbkNhbGxDb250cm9sOmZ1bmN0aW9uKGEpe3ZhciBiO3N3aT0KdGNoKGEuYWN0aW9uKXtj YXNlImFkZGluZ19kYXRhc2V0cyI6Yj0zRHRoaXMudGVtcGxhdGVBZGRpbmdEYXRhc2V0c1Byb2dy ZXNzPQpCYXIoKSx0aGlzLm1vZGFsLiRlbC5maW5kKCIubW9kYWwtYm9keSIpLmh0bWwoYih7Zm9s ZGVyX25hbWU6dGhpcy5vcHRpb25zLmY9Cm9sZGVyX25hbWV9KSk7YnJlYWs7Y2FzZSJkZWxldGlu Z19kYXRhc2V0cyI6Yj0zRHRoaXMudGVtcGxhdGVEZWxldGluZ0RhdGFzZT0KdHNQcm9ncmVzc0Jh cigpLHRoaXMubW9kYWwuJGVsLmZpbmQoIi5tb2RhbC1ib2R5IikuaHRtbChiKCkpO2JyZWFrO2Nh c2UidG9fPQpoaXN0b3J5IjpiPTNEdGhpcy50ZW1wbGF0ZUltcG9ydEludG9IaXN0b3J5UHJvZ3Jl c3NCYXIoKSx0aGlzLm1vZGFsLiRlbC5maW49CmQoIi5tb2RhbC1ib2R5IikuaHRtbChiKHtoaXN0 b3J5X25hbWU6YS5oaXN0b3J5X25hbWV9KSk7YnJlYWs7ZGVmYXVsdDpjb25zbz0KbGUuZXJyb3Io Ildyb25nIGFjdGlvbiBzcGVjaWZpZWQuIil9dGhpcy5wcm9ncmVzcz0zRDAsdGhpcy5wcm9ncmVz c1N0ZXA9M0QxPQowMC9hLmxlbmd0aCx0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRv dGFsX251bWJlcj0zRGEubGVuZ3RoLHRoaXMub3A9CnRpb25zLmNoYWluX2NhbGxfY29udHJvbC5m YWlsZWRfbnVtYmVyPTNEMH0saW1wb3J0RnJvbUpzdHJlZVBhdGg6ZnVuY3Rpb24oYT0KLGIpe3Zh ciBkPTNEJCgiI2pzdHJlZV9icm93c2VyIikuanN0cmVlKCkuZ2V0X3NlbGVjdGVkKCEwKSxlPTNE dGhpcy5tb2RhbC4kPQplbC5maW5kKCIucHJlc2VydmUtY2hlY2tib3giKS5pcygiOmNoZWNrZWQi KSxmPTNEdGhpcy5tb2RhbC4kZWwuZmluZCgiLmxpbms9Ci1jaGVja2JveCIpLmlzKCI6Y2hlY2tl ZCIpLGc9M0R0aGlzLnNlbGVjdF9leHRlbnNpb24udmFsdWUoKSxoPTNEdGhpcy5zZWxlYz0KdF9n ZW5vbWUudmFsdWUoKSxpPTNEZFswXS50eXBlLGo9M0RbXTtpZihkLmxlbmd0aDwxKWMuaW5mbygi UGxlYXNlIHNlbGVjdCBzPQpvbWUgaXRlbXMgZmlyc3QuIik7ZWxzZXt0aGlzLm1vZGFsLmRpc2Fi bGVCdXR0b24oIkltcG9ydCIpO2Zvcih2YXIgaz0zRGQubGU9Cm5ndGgtMTtrPj0zRDA7ay0tKXZv aWQgMCE9M0Q9M0RkW2tdLmxpX2F0dHIuZnVsbF9wYXRoJiZqLnB1c2goZFtrXS5saV9hdHRyLj0K ZnVsbF9wYXRoKTtpZih0aGlzLmluaXRDaGFpbkNhbGxDb250cm9sKHtsZW5ndGg6ai5sZW5ndGgs YWN0aW9uOiJhZGRpbmdfZGF0PQphc2V0cyJ9KSwiZm9sZGVyIj0zRD0zRD0zRGkpe3ZhciBsPTNE Yi5zb3VyY2UrIl9mb2xkZXIiO3RoaXMuY2hhaW5DYWxsSW1wb3I9CnRpbmdGb2xkZXJzKHtwYXRo czpqLHByZXNlcnZlX2RpcnM6ZSxsaW5rX2RhdGE6Zixzb3VyY2U6bCxmaWxlX3R5cGU6ZyxkYmtl eT0KOmh9KX1lbHNlIGlmKCJmaWxlIj0zRD0zRD0zRGkpe3ZhciBsPTNEYi5zb3VyY2UrIl9maWxl Ijt0aGlzLmNoYWluQ2FsbEltcG9yPQp0aW5nVXNlcmRpckZpbGVzKHtwYXRoczpqLGZpbGVfdHlw ZTpnLGRia2V5Omgsc291cmNlOmx9KX19fSxmZXRjaEFuZERpc3BsYXk9Ckhpc3RvcnlDb250ZW50 czpmdW5jdGlvbihhKXt2YXIgYj0zRG5ldyBkLkhpc3RvcnlDb250ZW50cyh7aWQ6YX0pLGU9M0R0 aGlzOz0KYi5mZXRjaCh7c3VjY2VzczpmdW5jdGlvbihiKXt2YXIgYz0zRGUudGVtcGxhdGVIaXN0 b3J5Q29udGVudHMoKTtlLmhpc3RvcmllPQpzLmdldChhKS5zZXQoe2NvbnRlbnRzOmJ9KSxlLm1v ZGFsLiRlbC5maW5kKCIjc2VsZWN0ZWRfaGlzdG9yeV9jb250ZW50IikuaHQ9Cm1sKGMoe2hpc3Rv cnlfY29udGVudHM6Yi5tb2RlbHMucmV2ZXJzZSgpfSkpfSxlcnJvcjpmdW5jdGlvbihhLGIpe2Mu ZXJyb3IoIj0KdW5kZWZpbmVkIiE9M0R0eXBlb2YgYi5yZXNwb25zZUpTT04/Yi5yZXNwb25zZUpT T04uZXJyX21zZzoiQW4gZXJyb3Igb2N1cnJlPQpkLiIpfX0pfSxhZGRBbGxEYXRhc2V0c0Zyb21I aXN0b3J5OmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLm1vZGFsLiRlbC5maW5kKCI9CiNzZWxlY3Rl ZF9oaXN0b3J5X2NvbnRlbnQiKS5maW5kKCI6Y2hlY2tlZCIpLGI9M0RbXSxlPTNEW107aWYoYS5s ZW5ndGg8MSljLj0KaW5mbygiWW91IG11c3Qgc2VsZWN0IHNvbWUgZGF0YXNldHMgZmlyc3QuIik7 ZWxzZXt0aGlzLm1vZGFsLmRpc2FibGVCdXR0b24oPQoiQWRkIiksYS5lYWNoKGZ1bmN0aW9uKCl7 dmFyIGE9M0QkKHRoaXMucGFyZW50RWxlbWVudCkuZGF0YSgiaWQiKTthJiZiLnB1c2g9CihhKX0p O2Zvcih2YXIgZj0zRGIubGVuZ3RoLTE7Zj49M0QwO2YtLSl7aGlzdG9yeV9kYXRhc2V0X2lkPTNE YltmXTt2YXIgZz0zRD0KbmV3IGQuSXRlbTtnLnVybD0zRCh3aW5kb3cuZ2FsYXh5X2NvbmZpZz9n YWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2ZvbGRlPQpycy8iK3RoaXMub3B0aW9ucy5pZCsi L2NvbnRlbnRzIixnLnNldCh7ZnJvbV9oZGFfaWQ6aGlzdG9yeV9kYXRhc2V0X2lkfSksZS49CnB1 c2goZyl9dGhpcy5pbml0Q2hhaW5DYWxsQ29udHJvbCh7bGVuZ3RoOmUubGVuZ3RoLGFjdGlvbjoi YWRkaW5nX2RhdGFzZXRzIj0KfSksdGhpcy5jaGFpbkNhbGxBZGRpbmdIZGFzKGUpfX0sY2hhaW5D YWxsSW1wb3J0aW5nSW50b0hpc3Rvcnk6ZnVuY3Rpb24oYSxiPQope3ZhciBkPTNEdGhpcyxlPTNE YS5wb3AoKTtpZigidW5kZWZpbmVkIj0zRD0zRHR5cGVvZiBlKXJldHVybiAwPTNEPTNEPTNEdGg9 CmlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI/Yy5zdWNjZXNzKCJT ZWxlY3RlZCBkYXRhc2V0cyBpbT0KcG9ydGVkIGludG8gaGlzdG9yeS4gQ2xpY2sgdGhpcyB0byBz dGFydCBhbmFseXNpbmcgaXQuIiwiIix7b25jbGljazpmdW5jdGlvPQpuKCl7d2luZG93LmxvY2F0 aW9uPTNEIi8ifX0pOnRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJl cj0KPTNEPTNEPTNEdGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC50b3RhbF9udW1iZXI/ Yy5lcnJvcigiVGhlcmUgd2FzIGFuPQogZXJyb3IgYW5kIG5vIGRhdGFzZXRzIHdlcmUgaW1wb3J0 ZWQgaW50byBoaXN0b3J5LiIpOnRoaXMub3B0aW9ucy5jaGFpbl9jYWw9CmxfY29udHJvbC5mYWls ZWRfbnVtYmVyPHRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wudG90YWxfbnVtYmVyJiZj Lndhcj0KbmluZygiU29tZSBvZiB0aGUgZGF0YXNldHMgY291bGQgbm90IGJlIGltcG9ydGVkIGlu dG8gaGlzdG9yeS4gQ2xpY2sgdGhpcyB0PQpvIHNlZSB3aGF0IHdhcyBpbXBvcnRlZC4iLCIiLHtv bmNsaWNrOmZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uPTNEIi8ifX0pLEc9CmFsYXh5Lm1vZGFs LmhpZGUoKSwhMDt2YXIgZj0zRCQud2hlbihlLnNhdmUoe2NvbnRlbnQ6ZS5jb250ZW50LHNvdXJj ZTplLnNvdT0KcmNlfSkpO2YuZG9uZShmdW5jdGlvbigpe2QudXBkYXRlUHJvZ3Jlc3MoKSxkLmNo YWluQ2FsbEltcG9ydGluZ0ludG9IaXN0b3J5PQooYSxiKX0pLmZhaWwoZnVuY3Rpb24oKXtkLm9w dGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXIrPTNEMSxkLnU9CnBkYXRlUHJv Z3Jlc3MoKSxkLmNoYWluQ2FsbEltcG9ydGluZ0ludG9IaXN0b3J5KGEsYil9KX0sY2hhaW5DYWxs SW1wb3J0aW5nVT0Kc2VyZGlyRmlsZXM6ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlzLGQ9M0RhLnBh dGhzLnBvcCgpO2lmKCJ1bmRlZmluZWQiPTNEPTNEPQp0eXBlb2YgZClyZXR1cm4gMD0zRD0zRD0z RHRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcj8oYy49CnN1Y2Nl c3MoIlNlbGVjdGVkIGZpbGVzIGltcG9ydGVkIGludG8gdGhlIGN1cnJlbnQgZm9sZGVyIiksR2Fs YXh5Lm1vZGFsLmhpZD0KZSgpKTpjLmVycm9yKCJBbiBlcnJvciBvY2N1cmVkLiIpLCEwO3ZhciBl PTNEJC53aGVuKCQucG9zdCgod2luZG93LmdhbGF4eV9jPQpvbmZpZz9nYWxheHlfY29uZmlnLnJv b3Q6Ii8iKSsiYXBpL2xpYnJhcmllcy9kYXRhc2V0cz9lbmNvZGVkX2ZvbGRlcl9pZD0zRCI9Citi LmlkKyImc291cmNlPTNEIithLnNvdXJjZSsiJnBhdGg9M0QiK2QrIiZmaWxlX3R5cGU9M0QiK2Eu ZmlsZV90eXBlKyImZGJrZT0KeT0zRCIrYS5kYmtleSkpO2UuZG9uZShmdW5jdGlvbigpe2IudXBk YXRlUHJvZ3Jlc3MoKSxiLmNoYWluQ2FsbEltcG9ydGluZ1VzPQplcmRpckZpbGVzKGEpfSkuZmFp bChmdW5jdGlvbigpe2Iub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcis9 Cj0zRDEsYi51cGRhdGVQcm9ncmVzcygpLGIuY2hhaW5DYWxsSW1wb3J0aW5nVXNlcmRpckZpbGVz KGEpfSl9LGNoYWluQ2FsbEltcD0Kb3J0aW5nRm9sZGVyczpmdW5jdGlvbihhKXt2YXIgYj0zRHRo aXMsZD0zRGEucGF0aHMucG9wKCk7aWYoInVuZGVmaW5lZCI9M0Q9Cj0zRHR5cGVvZiBkKXJldHVy biAwPTNEPTNEPTNEdGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC5mYWlsZWRfbnVtYmVy Pz0KKGMuc3VjY2VzcygiU2VsZWN0ZWQgZm9sZGVycyBhbmQgdGhlaXIgY29udGVudHMgaW1wb3J0 ZWQgaW50byB0aGUgY3VycmVudCBmPQpvbGRlci4iKSxHYWxheHkubW9kYWwuaGlkZSgpKTpjLmVy cm9yKCJBbiBlcnJvciBvY2N1cmVkLiIpLCEwO3ZhciBlPTNEJC53aGU9Cm4oJC5wb3N0KCh3aW5k b3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2xpYnJhcmllcy9k YXRhcz0KZXRzP2VuY29kZWRfZm9sZGVyX2lkPTNEIitiLmlkKyImc291cmNlPTNEIithLnNvdXJj ZSsiJnBhdGg9M0QiK2QrIiZwcmVzZXJ2PQplX2RpcnM9M0QiK2EucHJlc2VydmVfZGlycysiJmxp bmtfZGF0YT0zRCIrYS5saW5rX2RhdGErIiZmaWxlX3R5cGU9M0QiK2EuZmk9CmxlX3R5cGUrIiZk YmtleT0zRCIrYS5kYmtleSkpO2UuZG9uZShmdW5jdGlvbigpe2IudXBkYXRlUHJvZ3Jlc3MoKSxi LmNoYWluQz0KYWxsSW1wb3J0aW5nRm9sZGVycyhhKX0pLmZhaWwoZnVuY3Rpb24oKXtiLm9wdGlv bnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlPQpkX251bWJlcis9M0QxLGIudXBkYXRlUHJvZ3Jl c3MoKSxiLmNoYWluQ2FsbEltcG9ydGluZ0ZvbGRlcnMoYSl9KX0sY2hhaW5DYWw9CmxBZGRpbmdI ZGFzOmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpczt0aGlzLmFkZGVkX2hkYXM9M0RuZXcgZC5Gb2xk ZXI7dmFyIGU9Cj0zRGEucG9wKCk7aWYoInVuZGVmaW5lZCI9M0Q9M0R0eXBlb2YgZSlyZXR1cm4g MD0zRD0zRD0zRHRoaXMub3B0aW9ucy5jaGFpbj0KX2NhbGxfY29udHJvbC5mYWlsZWRfbnVtYmVy P2Muc3VjY2VzcygiU2VsZWN0ZWQgZGF0YXNldHMgZnJvbSBoaXN0b3J5IGFkZGVkPQogdG8gdGhl IGZvbGRlciIpOnRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcj0z RD0zRD0zRHRoaXM9Ci5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC50b3RhbF9udW1iZXI/Yy5l cnJvcigiVGhlcmUgd2FzIGFuIGVycm9yIGFuZCBubz0KIGRhdGFzZXRzIHdlcmUgYWRkZWQgdG8g dGhlIGZvbGRlci4iKTp0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlPQpkX251 bWJlcjx0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlciYmYy53YXJu aW5nKCJTb21lIG9mIHQ9CmhlIGRhdGFzZXRzIGNvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUgZm9s ZGVyIiksR2FsYXh5Lm1vZGFsLmhpZGUoKSx0aGlzLmFkZD0KZWRfaGRhczt2YXIgZj0zRCQud2hl bihlLnNhdmUoe2Zyb21faGRhX2lkOmUuZ2V0KCJmcm9tX2hkYV9pZCIpfSkpO2YuZG9uZShmPQp1 bmN0aW9uKGMpe0dhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzdFZpZXcuY29sbGVjdGlvbi5hZGQo YyksYi51cGRhdGVQcm9ncmU9CnNzKCksYi5jaGFpbkNhbGxBZGRpbmdIZGFzKGEpfSkuZmFpbChm dW5jdGlvbigpe2Iub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRybz0KbC5mYWlsZWRfbnVtYmVyKz0z RDEsYi51cGRhdGVQcm9ncmVzcygpLGIuY2hhaW5DYWxsQWRkaW5nSGRhcyhhKX0pfSxjaGFpbkNh PQpsbERlbGV0aW5nSXRlbXM6ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlzO3RoaXMuZGVsZXRlZF9p dGVtcz0zRG5ldyBkLkZvbGRlcjs9CnZhciBlPTNEYS5wb3AoKTtpZigidW5kZWZpbmVkIj0zRD0z RHR5cGVvZiBlKXJldHVybiAwPTNEPTNEPTNEdGhpcy5vcHRpb25zLj0KY2hhaW5fY2FsbF9jb250 cm9sLmZhaWxlZF9udW1iZXI/Yy5zdWNjZXNzKCJTZWxlY3RlZCBpdGVtcyB3ZXJlIGRlbGV0ZWQu Iik6PQp0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI9M0Q9M0Q9 M0R0aGlzLm9wdGlvbnMuY2hhaW5fY2E9CmxsX2NvbnRyb2wudG90YWxfbnVtYmVyP2MuZXJyb3Io IlRoZXJlIHdhcyBhbiBlcnJvciBhbmQgbm8gaXRlbXMgd2VyZSBkZWxldD0KZWQuIFBsZWFzZSBt YWtlIHN1cmUgeW91IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucy4iKTp0aGlzLm9wdGlvbnMu Y2hhaW5fPQpjYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcjx0aGlzLm9wdGlvbnMuY2hhaW5fY2Fs bF9jb250cm9sLnRvdGFsX251bWJlciYmYy49Cndhcm5pbmcoIlNvbWUgb2YgdGhlIGl0ZW1zIGNv dWxkIG5vdCBiZSBkZWxldGVkLiBQbGVhc2UgbWFrZSBzdXJlIHlvdSBoYXZlID0Kc3VmZmljaWVu dCBwZXJtaXNzaW9ucy4iKSxHYWxheHkubW9kYWwuaGlkZSgpLHRoaXMuZGVsZXRlZF9pdGVtczt2 YXIgZj0zRCQuPQp3aGVuKGUuZGVzdHJveSgpKTtmLmRvbmUoZnVuY3Rpb24oYyl7aWYoR2FsYXh5 LmxpYnJhcmllcy5mb2xkZXJMaXN0Vmlldy5jb2w9CmxlY3Rpb24ucmVtb3ZlKGUuaWQpLGIudXBk YXRlUHJvZ3Jlc3MoKSxHYWxheHkubGlicmFyaWVzLmZvbGRlckxpc3RWaWV3Lm9wdD0KaW9ucy5p bmNsdWRlX2RlbGV0ZWQpe3ZhciBmPTNEbnVsbDsiZm9sZGVyIj0zRD0zRD0zRGMudHlwZXx8Ikxp YnJhcnlGb2xkZXIiPQo9M0Q9M0Q9M0RjLm1vZGVsX2NsYXNzP2Y9M0RuZXcgZC5Gb2xkZXJBc01v ZGVsKGMpOiJmaWxlIj0zRD0zRD0zRGMudHlwZXx8Ikw9CmlicmFyeURhdGFzZXQiPTNEPTNEPTNE Yy5tb2RlbF9jbGFzcz9mPTNEbmV3IGQuSXRlbShjKTooY29uc29sZS5lcnJvcigiVW5rbj0Kb3du IGxpYnJhcnkgaXRlbSB0eXBlIGZvdW5kLiIpLGNvbnNvbGUuZXJyb3IoYy50eXBlfHxjLm1vZGVs X2NsYXNzKSksR2FsYXh5PQoubGlicmFyaWVzLmZvbGRlckxpc3RWaWV3LmNvbGxlY3Rpb24uYWRk KGYpfWIuY2hhaW5DYWxsRGVsZXRpbmdJdGVtcyhhKX0pLmY9CmFpbChmdW5jdGlvbigpe2Iub3B0 aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcis9M0QxLGIudXBkYXRlUHJvZz0K cmVzcygpLGIuY2hhaW5DYWxsRGVsZXRpbmdJdGVtcyhhKX0pfSxjaGVja0luY2x1ZGVEZWxldGVk OmZ1bmN0aW9uKGEpe0dhbGF4PQp5LmxpYnJhcmllcy5mb2xkZXJMaXN0Vmlldy5mZXRjaEZvbGRl cihhLnRhcmdldC5jaGVja2VkP3tpbmNsdWRlX2RlbGV0ZWQ6ITA9Cn06e2luY2x1ZGVfZGVsZXRl ZDohMX0pfSxkZWxldGVTZWxlY3RlZERhdGFzZXRzOmZ1bmN0aW9uKCl7dmFyIGE9M0QkKCIjZm9s ZD0KZXJfdGFibGUiKS5maW5kKCI6Y2hlY2tlZCIpO2lmKDA9M0Q9M0Q9M0RhLmxlbmd0aCljLmlu Zm8oIllvdSBtdXN0IHNlbGVjdCBhPQp0IGxlYXN0IG9uZSBkYXRhc2V0IGZvciBkZWxldGlvbi4i KTtlbHNle3ZhciBiPTNEdGhpcy50ZW1wbGF0ZURlbGV0aW5nRGF0YXM9CmV0c1Byb2dyZXNzQmFy KCk7dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3NpbmdfZXZl bnRzOj0KITAsdGl0bGU6IkRlbGV0aW5nIHNlbGVjdGVkIGRhdGFzZXRzIixib2R5OmIoe30pLGJ1 dHRvbnM6e0Nsb3NlOmZ1bmN0aW9uKCl7PQpHYWxheHkubW9kYWwuaGlkZSgpfX19KSx0aGlzLm9w dGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlcj0zRDAsdGg9CmlzLm9wdGlvbnMu Y2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI9M0QwO3ZhciBlPTNEW10sZj0zRFtdO2Eu ZWFjaChmdT0KbmN0aW9uKCl7IiIhPTNEPTNEdGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1l bnQuaWQmJigiRiI9M0Q9M0R0aGlzLnBhcmVuPQp0RWxlbWVudC5wYXJlbnRFbGVtZW50LmlkLnN1 YnN0cmluZygwLDEpP2YucHVzaCh0aGlzLnBhcmVudEVsZW1lbnQucGFyZW50RWw9CmVtZW50Lmlk KTplLnB1c2godGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuaWQpKX0pO3ZhciBnPTNE ZS5sZW5ndGgrZj0KLmxlbmd0aDt0aGlzLnByb2dyZXNzU3RlcD0zRDEwMC9nLHRoaXMucHJvZ3Jl c3M9M0QwO2Zvcih2YXIgaD0zRFtdLGk9M0RlLmxlPQpuZ3RoLTE7aT49M0QwO2ktLSl7dmFyIGo9 M0RuZXcgZC5JdGVtKHtpZDplW2ldfSk7aC5wdXNoKGopfWZvcih2YXIgaT0zRGYubGU9Cm5ndGgt MTtpPj0zRDA7aS0tKXt2YXIgaz0zRG5ldyBkLkZvbGRlckFzTW9kZWwoe2lkOmZbaV19KTtoLnB1 c2goayl9dGhpcy5vcD0KdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlcj0zRGcu bGVuZ3RoLHRoaXMuY2hhaW5DYWxsRGVsZXRpbmdJdGVtPQpzKGgpfX0sc2hvd0xpYkluZm86ZnVu Y3Rpb24oKXt2YXIgYT0zREdhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzdFZpZXcuZm9sZGU9CnJD b250YWluZXIuYXR0cmlidXRlcy5tZXRhZGF0YS5wYXJlbnRfbGlicmFyeV9pZCxiPTNEbnVsbCxl PTNEdGhpcztudWxsIT0zRD0KPTNER2FsYXh5LmxpYnJhcmllcy5saWJyYXJ5TGlzdFZpZXc/KGI9 M0RHYWxheHkubGlicmFyaWVzLmxpYnJhcnlMaXN0Vmlldy5jPQpvbGxlY3Rpb24uZ2V0KGEpLHRo aXMuc2hvd0xpYkluZm9Nb2RhbChiKSk6KGI9M0RuZXcgZC5MaWJyYXJ5KHtpZDphfSksYi5mZXQ9 CmNoKHtzdWNjZXNzOmZ1bmN0aW9uKCl7ZS5zaG93TGliSW5mb01vZGFsKGIpfSxlcnJvcjpmdW5j dGlvbihhLGIpe2MuZXJyb3IoIj0KdW5kZWZpbmVkIiE9M0R0eXBlb2YgYi5yZXNwb25zZUpTT04/ Yi5yZXNwb25zZUpTT04uZXJyX21zZzoiQW4gZXJyb3Igb2N1cnJlPQpkLiIpfX0pKX0sc2hvd0xp YkluZm9Nb2RhbDpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMudGVtcGxhdGVMaWJJbmZvSW5Nb2Rh bCg9Cik7dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3Npbmdf ZXZlbnRzOiEwLHRpdGxlOiJMaWJyYT0KcnkgSW5mb3JtYXRpb24iLGJvZHk6Yih7bGlicmFyeTph fSksYnV0dG9uczp7Q2xvc2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuPQpoaWRlKCl9fX0pfSxz aG93SW1wb3J0TW9kYWw6ZnVuY3Rpb24oYSl7c3dpdGNoKGEuc291cmNlKXtjYXNlImhpc3Rvcnki OnRoaXM9Ci5hZGRGaWxlc0Zyb21IaXN0b3J5TW9kYWwoKTticmVhaztjYXNlImltcG9ydGRpciI6 dGhpcy5pbXBvcnRGaWxlc0Zyb21HYWxheD0KeUZvbGRlck1vZGFsKHtzb3VyY2U6ImltcG9ydGRp ciJ9KTticmVhaztjYXNlInBhdGgiOnRoaXMuaW1wb3J0RmlsZXNGcm9tUGF0PQpoTW9kYWwoKTti cmVhaztjYXNlInVzZXJkaXIiOnRoaXMuaW1wb3J0RmlsZXNGcm9tR2FsYXh5Rm9sZGVyTW9kYWwo e3NvdXJjZTo9CiJ1c2VyZGlyIn0pO2JyZWFrO2RlZmF1bHQ6R2FsYXh5LmxpYnJhcmllcy5saWJy YXJ5X3JvdXRlci5iYWNrKCksYy5lcnJvcigiST0KbnZhbGlkIGltcG9ydCBzb3VyY2UuIil9fSxz aG93UGFnZVNpemVQcm9tcHQ6ZnVuY3Rpb24oKXt2YXIgYT0zRHByb21wdCgiSG93PQogbWFueSBp dGVtcyBwZXIgcGFnZSBkbyB5b3Ugd2FudCB0byBzZWU/IixHYWxheHkubGlicmFyaWVzLnByZWZl cmVuY2VzLmdldCg9CiJmb2xkZXJfcGFnZV9zaXplIikpO251bGwhPTNEYSYmYT0zRD0zRHBhcnNl SW50KGEpJiYoR2FsYXh5LmxpYnJhcmllcy5wcmVmZT0KcmVuY2VzLnNldCh7Zm9sZGVyX3BhZ2Vf c2l6ZTpwYXJzZUludChhKX0pLEdhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzdFZpZXcuPQpyZW5k ZXIoe2lkOnRoaXMub3B0aW9ucy5pZCxzaG93X3BhZ2U6MX0pKX0sdGVtcGxhdGVUb29sQmFyOmZ1 bmN0aW9uKCl7cmV0dXI9Cm4gdG1wbF9hcnJheT0zRFtdLHRtcGxfYXJyYXkucHVzaCgnPGRpdiBj bGFzcz0zRCJsaWJyYXJ5X3N0eWxlX2NvbnRhaW5lciI+Jz0KKSx0bXBsX2FycmF5LnB1c2goJyA8 ZGl2IGlkPTNEImxpYnJhcnlfdG9vbGJhciI+JyksdG1wbF9hcnJheS5wdXNoKCc8Zm9ybSBjPQps YXNzPTNEImZvcm0taW5saW5lIiByb2xlPTNEImZvcm0iPicpLHRtcGxfYXJyYXkucHVzaCgiICAg PHNwYW4+PHN0cm9uZz5EQVQ9CkEgTElCUkFSSUVTPC9zdHJvbmc+PC9zcGFuPiIpLHRtcGxfYXJy YXkucHVzaCgnICAgICAgICAgIDxzcGFuIGlkPTNEImZvbGRlcj0KX3BhZ2luYXRvciIgY2xhc3M9 M0QibGlicmFyeS1wYWdpbmF0b3IiPicpLHRtcGxfYXJyYXkucHVzaCgiICAgICAgICAgIDwvc3Bh PQpuPiIpLHRtcGxfYXJyYXkucHVzaCgnPGRpdiBjbGFzcz0zRCJjaGVja2JveCB0b29sYmFyLWl0 ZW0gbG9nZ2VkLWRhdGFzZXQtbWE9Cm5pcHVsYXRpb24iIHN0eWxlPTNEImhlaWdodDogMjBweDsg ZGlzcGxheTpub25lOyI+JyksdG1wbF9hcnJheS5wdXNoKCI8bGFiZT0KbD4iKSx0bXBsX2FycmF5 LnB1c2goJzxpbnB1dCBpZD0zRCJpbmNsdWRlX2RlbGV0ZWRfZGF0YXNldHNfY2hrIiB0eXBlPTNE ImNoPQplY2tib3giPiBpbmNsdWRlIGRlbGV0ZWQgPC9pbnB1dD4nKSx0bXBsX2FycmF5LnB1c2go IjwvbGFiZWw+IiksdG1wbF9hcnJheS49CnB1c2goIjwvZGl2PiIpLHRtcGxfYXJyYXkucHVzaCgn ICAgPGJ1dHRvbiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7IiBkYXRhLXRvZz0KZ2xlPTNEInRvb2x0 aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiQ3JlYXRlIE5ldyBGb2xkZXIiIGlk PTNEInRvPQpvbGJ0bl9jcmVhdGVfZm9sZGVyIiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgcHJp bWFyeS1idXR0b24gYWRkLWxpYnJhcnktaXQ9CmVtcyIgdHlwZT0zRCJidXR0b24iPjxzcGFuIGNs YXNzPTNEImZhIGZhLXBsdXMiPjwvc3Bhbj48c3BhbiBjbGFzcz0zRCJmYSBmYT0KLWZvbGRlciI+ PC9zcGFuPjwvYnV0dG9uPicpLHRtcGxfYXJyYXkucHVzaCgiPCUgaWYobXV0aXBsZV9hZGRfZGF0 YXNldF9vcHRpPQpvbnMpIHsgJT4iKSx0bXBsX2FycmF5LnB1c2goJyAgIDxkaXYgY2xhc3M9M0Qi YnRuLWdyb3VwIGFkZC1saWJyYXJ5LWl0ZW1zIiA9CnN0eWxlPTNEImRpc3BsYXk6bm9uZTsiPicp LHRtcGxfYXJyYXkucHVzaCgnICAgICA8YnV0dG9uIHRpdGxlPTNEIkFkZCBEYXRhcz0KZXRzIHRv IEN1cnJlbnQgRm9sZGVyIiBpZD0zRCIiIHR5cGU9M0QiYnV0dG9uIiBjbGFzcz0zRCJwcmltYXJ5 LWJ1dHRvbiBkcm9wPQpkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9M0QiZHJvcGRvd24iPicpLHRt cGxfYXJyYXkucHVzaCgnICAgICA8c3BhbiBjbGFzcz0KPTNEImZhIGZhLXBsdXMiPjwvc3Bhbj48 c3BhbiBjbGFzcz0zRCJmYSBmYS1maWxlIj48L3NwYW4+PHNwYW4gY2xhc3M9M0QiY2FyPQpldCI+ PC9zcGFuPicpLHRtcGxfYXJyYXkucHVzaCgiICAgICA8L2J1dHRvbj4iKSx0bXBsX2FycmF5LnB1 c2goJyAgICAgPHVsIGM9Cmxhc3M9M0QiZHJvcGRvd24tbWVudSIgcm9sZT0zRCJtZW51Ij4nKSx0 bXBsX2FycmF5LnB1c2goJyAgICAgICAgPGxpPjxhIGhyZT0KZj0zRCIjZm9sZGVycy88JT0zRCBp ZCAlPi9pbXBvcnQvaGlzdG9yeSI+IGZyb20gSGlzdG9yeTwvYT48L2xpPicpLHRtcGxfYXJyPQph eS5wdXNoKCI8JSBpZihHYWxheHkuY29uZmlnLnVzZXJfbGlicmFyeV9pbXBvcnRfZGlyICE9M0Q9 M0QgbnVsbCkgeyAlPiIpLHQ9Cm1wbF9hcnJheS5wdXNoKCcgICAgICAgIDxsaT48YSBocmVmPTNE IiNmb2xkZXJzLzwlPTNEIGlkICU+L2ltcG9ydC91c2VyZGlyIj0KPiBmcm9tIFVzZXIgRGlyZWN0 b3J5PC9hPjwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCI8JSB9ICU+IiksdG1wbF9hcnJheS5wdXNo PQooIjwlIGlmKEdhbGF4eS5jb25maWcuYWxsb3dfbGlicmFyeV9wYXRoX3Bhc3RlKSB7ICU+Iiks dG1wbF9hcnJheS5wdXNoKCcgICA9CjxsaSBjbGFzcz0zRCJkaXZpZGVyIj48L2xpPicpLHRtcGxf YXJyYXkucHVzaCgnICAgPGxpIGNsYXNzPTNEImRyb3Bkb3duLWhlYT0KZGVyIj5BZG1pbnMgb25s eTwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCI8JSBpZihHYWxheHkuY29uZmlnLmxpYnJhcnlfaW1w b3J0PQpfZGlyICE9M0Q9M0QgbnVsbCkgeyAlPiIpLHRtcGxfYXJyYXkucHVzaCgnICAgPGxpPjxh IGhyZWY9M0QiI2ZvbGRlcnMvPCU9M0Q9CiBpZCAlPi9pbXBvcnQvaW1wb3J0ZGlyIj5mcm9tIElt cG9ydCBEaXJlY3Rvcnk8L2E+PC9saT4nKSx0bXBsX2FycmF5LnB1c2goIj0KPCUgfSAlPiIpLHRt cGxfYXJyYXkucHVzaCgiPCUgaWYoR2FsYXh5LmNvbmZpZy5hbGxvd19saWJyYXJ5X3BhdGhfcGFz dGUpIHsgPQolPiIpLHRtcGxfYXJyYXkucHVzaCgnICAgICAgICA8bGk+PGEgaHJlZj0zRCIjZm9s ZGVycy88JT0zRCBpZCAlPi9pbXBvcnQvcGE9CnRoIj5mcm9tIFBhdGg8L2E+PC9saT4nKSx0bXBs X2FycmF5LnB1c2goIjwlIH0gJT4iKSx0bXBsX2FycmF5LnB1c2goIjwlIH0gJT0KPiIpLHRtcGxf YXJyYXkucHVzaCgiICAgICA8L3VsPiIpLHRtcGxfYXJyYXkucHVzaCgiICAgPC9kaXY+IiksdG1w bF9hcnJheS5wPQp1c2goIjwlIH0gZWxzZSB7ICU+IiksdG1wbF9hcnJheS5wdXNoKCcgPGEgIGRh dGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0Q9CiJBZGQgRGF0YXNldHMgdG8gQ3VycmVudCBG b2xkZXIiIHN0eWxlPTNEImRpc3BsYXk6bm9uZTsiIGNsYXNzPTNEImJ0biBidG4tZD0KZWZhdWx0 IGFkZC1saWJyYXJ5LWl0ZW1zIiBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L2ltcG9ydC9o aXN0b3J5IiByb2xlPQo9M0QiYnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1wbHVzIj48L3Nw YW4+PHNwYW4gY2xhc3M9M0QiZmEgZmEtZmlsZSI+PC89CnNwYW4+PC9zcGFuPjwvYT4nKSx0bXBs X2FycmF5LnB1c2goIjwlIH0gJT4iKSx0bXBsX2FycmF5LnB1c2goJyAgPGJ1dHRvbiBkYT0KdGEt dG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiSW1wb3J0 IHNlbGVjdGVkIGRhdGFzPQpldHMgaW50byBoaXN0b3J5IiBpZD0zRCJ0b29sYnRuX2J1bGtfaW1w b3J0IiBjbGFzcz0zRCJwcmltYXJ5LWJ1dHRvbiBkYXRhc2U9CnQtbWFuaXB1bGF0aW9uIiBzdHls ZT0zRCJtYXJnaW4tbGVmdDogMC41ZW07IGRpc3BsYXk6bm9uZTsiIHR5cGU9M0QiYnV0dG9uIj0K PjxzcGFuIGNsYXNzPTNEImZhIGZhLWJvb2siPjwvc3Bhbj4gdG8gSGlzdG9yeTwvYnV0dG9uPicp LHRtcGxfYXJyYXkucHVzaCgnPQogICA8ZGl2IGlkPTNEInRvb2xidG5fZGwiIGNsYXNzPTNEImJ0 bi1ncm91cCBkYXRhc2V0LW1hbmlwdWxhdGlvbiIgc3R5bGU9M0Q9CiJtYXJnaW4tbGVmdDogMC41 ZW07IGRpc3BsYXk6bm9uZTsgIj4nKSx0bXBsX2FycmF5LnB1c2goJyAgICAgPGJ1dHRvbiB0aXRs ZT0KPTNEIkRvd25sb2FkIHNlbGVjdGVkIGRhdGFzZXRzIGFzIGFyY2hpdmUiIGlkPTNEImRyb3Bf dG9nZ2xlIiB0eXBlPTNEImJ1dHRvPQpuIiBjbGFzcz0zRCJwcmltYXJ5LWJ1dHRvbiBkcm9wZG93 bi10b2dnbGUiIGRhdGEtdG9nZ2xlPTNEImRyb3Bkb3duIj4nKSx0bXA9CmxfYXJyYXkucHVzaCgn ICAgICA8c3BhbiBjbGFzcz0zRCJmYSBmYS1kb3dubG9hZCI+PC9zcGFuPiBEb3dubG9hZCA8c3Bh biBjbD0KYXNzPTNEImNhcmV0Ij48L3NwYW4+JyksdG1wbF9hcnJheS5wdXNoKCIgICAgIDwvYnV0 dG9uPiIpLHRtcGxfYXJyYXkucHVzaCgnPQogICAgIDx1bCBjbGFzcz0zRCJkcm9wZG93bi1tZW51 IiByb2xlPTNEIm1lbnUiPicpLHRtcGxfYXJyYXkucHVzaCgnICAgICAgICA9CjxsaT48YSBocmVm PTNEIiMvZm9sZGVycy88JT0zRCBpZCAlPi9kb3dubG9hZC90Z3oiPi50YXIuZ3o8L2E+PC9saT4n KSx0bXBsXz0KYXJyYXkucHVzaCgnICAgICAgICA8bGk+PGEgaHJlZj0zRCIjL2ZvbGRlcnMvPCU9 M0QgaWQgJT4vZG93bmxvYWQvdGJ6Ij4udGFyPQouYno8L2E+PC9saT4nKSx0bXBsX2FycmF5LnB1 c2goJyAgICAgICAgPGxpPjxhIGhyZWY9M0QiIy9mb2xkZXJzLzwlPTNEIGlkICU9Cj4vZG93bmxv YWQvemlwIj4uemlwPC9hPjwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCIgICAgIDwvdWw+IiksdG1w bF9hcnJheS5wdT0Kc2goIiAgIDwvZGl2PiIpLHRtcGxfYXJyYXkucHVzaCgnICAgPGJ1dHRvbiBk YXRhLXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRhLXBsPQphY2VtZW50PTNEInRvcCIgdGl0bGU9M0Qi TWFyayBzZWxlY3RlZCBkYXRhc2V0cyBkZWxldGVkIiBpZD0zRCJ0b29sYnRuX2J1bGs9Cl9kZWxl dGUiIGNsYXNzPTNEInByaW1hcnktYnV0dG9uIGxvZ2dlZC1kYXRhc2V0LW1hbmlwdWxhdGlvbiIg c3R5bGU9M0QibWFyZz0KaW4tbGVmdDogMC41ZW07IGRpc3BsYXk6bm9uZTsgIiB0eXBlPTNEImJ1 dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtdGltZXMiPQo+PC9zcGFuPiBEZWxldGU8L2J1dHRv bj4nKSx0bXBsX2FycmF5LnB1c2goJyAgIDxidXR0b24gZGF0YS1pZD0zRCI8JS0gaWQgJT49CiIg ZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0zRCJT aG93IGxpYnJhcnkgaW5mbz0Kcm1hdGlvbiIgaWQ9M0QidG9vbGJ0bl9zaG93X2xpYmluZm8iIGNs YXNzPTNEInByaW1hcnktYnV0dG9uIiBzdHlsZT0zRCJtYXJnPQppbi1sZWZ0OiAwLjVlbTsiIHR5 cGU9M0QiYnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1pbmZvLWNpcmNsZSI+PC9zcGFuPiA9 CkxpYnJhcnkgSW5mbzwvYnV0dG9uPicpLHRtcGxfYXJyYXkucHVzaCgnICAgPHNwYW4gY2xhc3M9 M0QiaGVscC1idXR0b24iIGRhdD0KYS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9 M0QidG9wIiB0aXRsZT0zRCJWaXNpdCBMaWJyYXJpZXMgV2lraSI+PQo8YSBocmVmPTNEImh0dHBz Oi8vd2lraS5nYWxheHlwcm9qZWN0Lm9yZy9EYXRhTGlicmFyaWVzL3NjcmVlbi9Gb2xkZXJDb250 ZW49CnRzIiB0YXJnZXQ9M0QiX2JsYW5rIj48YnV0dG9uIGNsYXNzPTNEInByaW1hcnktYnV0dG9u IiB0eXBlPTNEImJ1dHRvbiI+PHNwYT0KbiBjbGFzcz0zRCJmYSBmYS1xdWVzdGlvbi1jaXJjbGUi Pjwvc3Bhbj4gSGVscDwvYnV0dG9uPjwvYT48L3NwYW4+JyksdG1wbF9hPQpycmF5LnB1c2goIiA8 L2Rpdj4iKSx0bXBsX2FycmF5LnB1c2goIjwvZm9ybT4iKSx0bXBsX2FycmF5LnB1c2goJyA8ZGl2 IGlkPQo9M0QiZm9sZGVyX2l0ZW1zX2VsZW1lbnQiPicpLHRtcGxfYXJyYXkucHVzaCgiIDwvZGl2 PiIpLHRtcGxfYXJyYXkucHVzaCgiPC89CmRpdj4iKSxfLnRlbXBsYXRlKHRtcGxfYXJyYXkuam9p bigiIikpfSx0ZW1wbGF0ZUxpYkluZm9Jbk1vZGFsOmZ1bmN0aW9uKCl7cj0KZXR1cm4gdG1wbF9h cnJheT0zRFtdLHRtcGxfYXJyYXkucHVzaCgnPGRpdiBpZD0zRCJsaWZfaW5mb19tb2RhbCI+Jyks dG1wbF9hPQpycmF5LnB1c2goIjxoMj5MaWJyYXJ5IG5hbWU6PC9oMj4iKSx0bXBsX2FycmF5LnB1 c2goJzxwPjwlLSBsaWJyYXJ5LmdldCgibmE9Cm1lIikgJT48L3A+JyksdG1wbF9hcnJheS5wdXNo KCI8aDM+TGlicmFyeSBkZXNjcmlwdGlvbjo8L2gzPiIpLHRtcGxfYXJyYXkucD0KdXNoKCc8cD48 JS0gbGlicmFyeS5nZXQoImRlc2NyaXB0aW9uIikgJT48L3A+JyksdG1wbF9hcnJheS5wdXNoKCI8 aDM+TGlicmFyPQp5IHN5bm9wc2lzOjwvaDM+IiksdG1wbF9hcnJheS5wdXNoKCc8cD48JS0gbGli cmFyeS5nZXQoInN5bm9wc2lzIikgJT48L3A+Jyk9Cix0bXBsX2FycmF5LnB1c2goJzxwIGRhdGEt dG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9Cj0zRCI8JS0g bGlicmFyeS5nZXQoImNyZWF0ZV90aW1lIikgJT4iPmNyZWF0ZWQgPCUtIGxpYnJhcnkuZ2V0KCJj cmVhdGVfdGltZT0KX3ByZXR0eSIpICU+PC9wPicpLHRtcGxfYXJyYXkucHVzaCgiPC9kaXY+Iiks Xy50ZW1wbGF0ZSh0bXBsX2FycmF5LmpvaW4oIiIpPQopfSx0ZW1wbGF0ZU5ld0ZvbGRlckluTW9k YWw6ZnVuY3Rpb24oKXtyZXR1cm4gdG1wbF9hcnJheT0zRFtdLHRtcGxfYXJyYXkucHU9CnNoKCc8 ZGl2IGlkPTNEIm5ld19mb2xkZXJfbW9kYWwiPicpLHRtcGxfYXJyYXkucHVzaCgiPGZvcm0+Iiks dG1wbF9hcnJheS5wdT0Kc2goJzxpbnB1dCB0eXBlPTNEInRleHQiIG5hbWU9M0QiTmFtZSIgdmFs dWU9M0QiIiBwbGFjZWhvbGRlcj0zRCJOYW1lIj4nKSx0PQptcGxfYXJyYXkucHVzaCgnPGlucHV0 IHR5cGU9M0QidGV4dCIgbmFtZT0zRCJEZXNjcmlwdGlvbiIgdmFsdWU9M0QiIiBwbGFjZWg9Cm9s ZGVyPTNEIkRlc2NyaXB0aW9uIj4nKSx0bXBsX2FycmF5LnB1c2goIjwvZm9ybT4iKSx0bXBsX2Fy cmF5LnB1c2goIjwvZGl2Pj0KIiksXy50ZW1wbGF0ZSh0bXBsX2FycmF5LmpvaW4oIiIpKX0sdGVt cGxhdGVCdWxrSW1wb3J0SW5Nb2RhbDpmdW5jdGlvbigpe3ZhPQpyIGE9M0RbXTtyZXR1cm4gYS5w dXNoKCc8c3BhbiBpZD0zRCJoaXN0b3J5X21vZGFsX2NvbWJvX2J1bGsiIHN0eWxlPTNEIndpZHQ9 Cmg6OTAlOyBtYXJnaW4tbGVmdDogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTsgIj4nKSxhLnB1c2go IlNlbGVjdCBoaXN0b3J5OiAiKT0KLGEucHVzaCgnPHNlbGVjdCBpZD0zRCJkYXRhc2V0X2ltcG9y dF9idWxrIiBuYW1lPTNEImRhdGFzZXRfaW1wb3J0X2J1bGsiIHN0PQp5bGU9M0Qid2lkdGg6NTAl OyBtYXJnaW4tYm90dG9tOiAxZW07ICI+ICcpLGEucHVzaCgiICAgPCUgXy5lYWNoKGhpc3Rvcmll cyw9CiBmdW5jdGlvbihoaXN0b3J5KSB7ICU+IiksYS5wdXNoKCcgICAgICAgPG9wdGlvbiB2YWx1 ZT0zRCI8JT0zRCBfLmVzY2FwZShoaT0Kc3RvcnkuZ2V0KCJpZCIpKSAlPiI+PCU9M0QgXy5lc2Nh cGUoaGlzdG9yeS5nZXQoIm5hbWUiKSkgJT48L29wdGlvbj4nKSxhLnB1PQpzaCgiICAgPCUgfSk7 ICU+IiksYS5wdXNoKCI8L3NlbGVjdD4iKSxhLnB1c2goIjwvc3Bhbj4iKSxfLnRlbXBsYXRlKGEu am9pbig9CiIiKSl9LHRlbXBsYXRlSW1wb3J0SW50b0hpc3RvcnlQcm9ncmVzc0JhcjpmdW5jdGlv bigpe3ZhciBhPTNEW107cmV0dXJuIGEucD0KdXNoKCc8ZGl2IGNsYXNzPTNEImltcG9ydF90ZXh0 Ij4nKSxhLnB1c2goIkltcG9ydGluZyBzZWxlY3RlZCBkYXRhc2V0cyB0byBoPQppc3RvcnkgPGI+ PCU9M0QgXy5lc2NhcGUoaGlzdG9yeV9uYW1lKSAlPjwvYj4iKSxhLnB1c2goIjwvZGl2PiIpLGEu cHVzaCgnPGQ9Cml2IGNsYXNzPTNEInByb2dyZXNzIj4nKSxhLnB1c2goJyAgIDxkaXYgY2xhc3M9 M0QicHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhcj0KLWltcG9ydCIgcm9sZT0zRCJwcm9ncmVzc2Jh ciIgYXJpYS12YWx1ZW5vdz0zRCIwIiBhcmlhLXZhbHVlbWluPTNEIjAiIGFyaWEtPQp2YWx1ZW1h eD0zRCIxMDAiIHN0eWxlPTNEIndpZHRoOiAwMCU7Ij4nKSxhLnB1c2goJyAgICAgICA8c3BhbiBj bGFzcz0zRCJjb209CnBsZXRpb25fc3BhbiI+MCUgQ29tcGxldGU8L3NwYW4+JyksYS5wdXNoKCIg ICA8L2Rpdj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucD0KdXNoKCIiKSxfLnRlbXBsYXRlKGEuam9p bigiIikpfSx0ZW1wbGF0ZUFkZGluZ0RhdGFzZXRzUHJvZ3Jlc3NCYXI6ZnVuY3Rpb24oPQope3Zh ciBhPTNEW107cmV0dXJuIGEucHVzaCgnPGRpdiBjbGFzcz0zRCJpbXBvcnRfdGV4dCI+JyksYS5w dXNoKCJBZGRpbmcgc2U9CmxlY3RlZCBkYXRhc2V0cyB0byBsaWJyYXJ5IGZvbGRlciA8Yj48JT0z RCBfLmVzY2FwZShmb2xkZXJfbmFtZSkgJT48L2I+IiksYT0KLnB1c2goIjwvZGl2PiIpLGEucHVz aCgnPGRpdiBjbGFzcz0zRCJwcm9ncmVzcyI+JyksYS5wdXNoKCcgICA8ZGl2IGNsYXNzPTNEPQoi cHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1pbXBvcnQiIHJvbGU9M0QicHJvZ3Jlc3NiYXIiIGFy aWEtdmFsdWVub3c9M0QiMCI9CiBhcmlhLXZhbHVlbWluPTNEIjAiIGFyaWEtdmFsdWVtYXg9M0Qi MTAwIiBzdHlsZT0zRCJ3aWR0aDogMDAlOyI+JyksYS5wdXNoKD0KJyAgICAgICA8c3BhbiBjbGFz cz0zRCJjb21wbGV0aW9uX3NwYW4iPjAlIENvbXBsZXRlPC9zcGFuPicpLGEucHVzaCgiICAgPC9k PQppdj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucHVzaCgiIiksXy50ZW1wbGF0ZShhLmpvaW4oIiIp KX0sdGVtcGxhdGVEZWxldGluZ0Q9CmF0YXNldHNQcm9ncmVzc0JhcjpmdW5jdGlvbigpe3ZhciBh PTNEW107cmV0dXJuIGEucHVzaCgnPGRpdiBjbGFzcz0zRCJpbXBvcj0KdF90ZXh0Ij4nKSxhLnB1 c2goIjwvZGl2PiIpLGEucHVzaCgnPGRpdiBjbGFzcz0zRCJwcm9ncmVzcyI+JyksYS5wdXNoKCcg ICA8PQpkaXYgY2xhc3M9M0QicHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1pbXBvcnQiIHJvbGU9 M0QicHJvZ3Jlc3NiYXIiIGFyaWEtdmE9Cmx1ZW5vdz0zRCIwIiBhcmlhLXZhbHVlbWluPTNEIjAi IGFyaWEtdmFsdWVtYXg9M0QiMTAwIiBzdHlsZT0zRCJ3aWR0aDogMDAlOz0KIj4nKSxhLnB1c2go JyAgICAgICA8c3BhbiBjbGFzcz0zRCJjb21wbGV0aW9uX3NwYW4iPjAlIENvbXBsZXRlPC9zcGFu PicpLGEuPQpwdXNoKCIgICA8L2Rpdj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucHVzaCgiIiksXy50 ZW1wbGF0ZShhLmpvaW4oIiIpKX0sdGVtcGw9CmF0ZUJyb3dzZXJNb2RhbDpmdW5jdGlvbigpe3Zh ciBhPTNEW107cmV0dXJuIGEucHVzaCgnPGRpdiBpZD0zRCJmaWxlX2Jyb3dzZT0Kcl9tb2RhbCI+ JyksYS5wdXNoKCc8ZGl2IGNsYXNzPTNEImFsZXJ0IGFsZXJ0LWluZm8ganN0cmVlLWZpbGVzLW1l c3NhZ2UiPkFsPQpsIGZpbGVzIHlvdSBzZWxlY3Qgd2lsbCBiZSBpbXBvcnRlZCBpbnRvIHRoZSBj dXJyZW50IGZvbGRlci48L2Rpdj4nKSxhLnB1c2g9CignPGRpdiBjbGFzcz0zRCJhbGVydCBhbGVy dC1pbmZvIGpzdHJlZS1mb2xkZXJzLW1lc3NhZ2UiIHN0eWxlPTNEImRpc3BsYXk6bj0Kb25lOyI+ QWxsIGZpbGVzIHdpdGhpbiB0aGUgc2VsZWN0ZWQgZm9sZGVycyBhbmQgdGhlaXIgc3ViZm9sZGVy cyB3aWxsIGJlIGltPQpwb3J0ZWQgaW50byB0aGUgY3VycmVudCBmb2xkZXIuPC9kaXY+JyksYS5w dXNoKCc8ZGl2IHN0eWxlPTNEIm1hcmdpbi1ib3R0b209CjoxZW07Ij4nKSxhLnB1c2goJzxsYWJl bCBjbGFzcz0zRCJyYWRpby1pbmxpbmUiPicpLGEucHVzaCgnICA8aW5wdXQgdGl0bGU9Cj0zRCJT d2l0Y2ggdG8gc2VsZWN0aW5nIGZpbGVzIiB0eXBlPTNEInJhZGlvIiBuYW1lPTNEImpzdHJlZS1y YWRpbyIgdmFsdWU9Cj0zRCJqc3RyZWUtZGlzYWJsZS1mb2xkZXJzIiBjaGVja2VkPTNEImNoZWNr ZWQiPiBGaWxlcycpLGEucHVzaCgiPC9sYWJlbD4iKT0KLGEucHVzaCgnPGxhYmVsIGNsYXNzPTNE InJhZGlvLWlubGluZSI+JyksYS5wdXNoKCcgIDxpbnB1dCB0aXRsZT0zRCJTd2l0Y2ggPQp0byBz ZWxlY3RpbmcgZm9sZGVycyIgdHlwZT0zRCJyYWRpbyIgbmFtZT0zRCJqc3RyZWUtcmFkaW8iIHZh bHVlPTNEImpzdHJlZS09CmRpc2FibGUtZmlsZXMiPiBGb2xkZXJzJyksYS5wdXNoKCI8L2xhYmVs PiIpLGEucHVzaCgiPC9kaXY+IiksYS5wdXNoKCc8ZGl2ID0Kc3R5bGU9M0QibWFyZ2luLWJvdHRv bToxZW07Ij4nKSxhLnB1c2goJzxsYWJlbCBjbGFzcz0zRCJjaGVja2JveC1pbmxpbmUganN0PQpy ZWUtcHJlc2VydmUtc3RydWN0dXJlIiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7Ij4nKSxhLnB1c2go JyAgIDxpbnB1dCBjbGFzcz0KPTNEInByZXNlcnZlLWNoZWNrYm94IiB0eXBlPTNEImNoZWNrYm94 IiB2YWx1ZT0zRCJwcmVzZXJ2ZV9kaXJlY3Rvcnlfc3RydWN0PQp1cmUiPicpLGEucHVzaCgiUHJl c2VydmUgZGlyZWN0b3J5IHN0cnVjdHVyZSIpLGEucHVzaCgiIDwvbGFiZWw+IiksYS5wdXNoKCc9 CjxsYWJlbCBjbGFzcz0zRCJjaGVja2JveC1pbmxpbmUganN0cmVlLWxpbmstZmlsZXMiIHN0eWxl PTNEImRpc3BsYXk6bm9uZTsiPj0KJyksYS5wdXNoKCcgICA8aW5wdXQgY2xhc3M9M0QibGluay1j aGVja2JveCIgdHlwZT0zRCJjaGVja2JveCIgdmFsdWU9M0QibGluPQprX2ZpbGVzIj4nKSxhLnB1 c2goIkxpbmsgZmlsZXMgaW5zdGVhZCBvZiBjb3B5aW5nIiksYS5wdXNoKCIgPC9sYWJlbD4iKSxh LnA9CnVzaCgiPC9kaXY+IiksYS5wdXNoKCc8ZGl2IGlkPTNEImpzdHJlZV9icm93c2VyIj4nKSxh LnB1c2goIjwvZGl2PiIpLGEucHVzaD0KKCI8aHIgLz4iKSxhLnB1c2goIjxwPllvdSBjYW4gc2V0 IGV4dGVuc2lvbiB0eXBlIGFuZCBnZW5vbWUgZm9yIGFsbCBpbXBvcnRlPQpkIGRhdGFzZXRzIGF0 IG9uY2U6PC9wPiIpLGEucHVzaCgiPGRpdj4iKSxhLnB1c2goJ1R5cGU6IDxzcGFuIGlkPTNEImxp YnJhcnk9Cl9leHRlbnNpb25fc2VsZWN0IiBjbGFzcz0zRCJsaWJyYXJ5LWV4dGVuc2lvbi1zZWxl Y3QiIC8+JyksYS5wdXNoKCcgIEdlbm9tZT0KOiA8c3BhbiBpZD0zRCJsaWJyYXJ5X2dlbm9tZV9z ZWxlY3QiIGNsYXNzPTNEImxpYnJhcnktZ2Vub21lLXNlbGVjdCIgLz4nKSxhPQoucHVzaCgiPC9k aXY+IiksYS5wdXNoKCI8L2Rpdj4iKSxfLnRlbXBsYXRlKGEuam9pbigiIikpfSx0ZW1wbGF0ZUlt cG9ydFBhdGg9Ck1vZGFsOmZ1bmN0aW9uKCl7dmFyIGE9M0RbXTtyZXR1cm4gYS5wdXNoKCc8ZGl2 IGlkPTNEImZpbGVfYnJvd3Nlcl9tb2RhbCI+Jz0KKSxhLnB1c2goJzxkaXYgY2xhc3M9M0QiYWxl cnQgYWxlcnQtaW5mbyBqc3RyZWUtZm9sZGVycy1tZXNzYWdlIj5BbGwgZmlsZXMgPQp3aXRoaW4g dGhlIGdpdmVuIGZvbGRlcnMgYW5kIHRoZWlyIHN1YmZvbGRlcnMgd2lsbCBiZSBpbXBvcnRlZCBp bnRvIHRoZSBjdXI9CnJlbnQgZm9sZGVyLjwvZGl2PicpLGEucHVzaCgnPGRpdiBzdHlsZT0zRCJt YXJnaW4tYm90dG9tOiAwLjVlbTsiPicpLGEucHVzaD0KKCc8bGFiZWwgY2xhc3M9M0QiY2hlY2ti b3gtaW5saW5lIGpzdHJlZS1wcmVzZXJ2ZS1zdHJ1Y3R1cmUiPicpLGEucHVzaCgnICAgPQo8aW5w dXQgY2xhc3M9M0QicHJlc2VydmUtY2hlY2tib3giIHR5cGU9M0QiY2hlY2tib3giIHZhbHVlPTNE InByZXNlcnZlX2RpcmU9CmN0b3J5X3N0cnVjdHVyZSI+JyksYS5wdXNoKCJQcmVzZXJ2ZSBkaXJl Y3Rvcnkgc3RydWN0dXJlIiksYS5wdXNoKCIgPC9sYWJlbD0KPiIpLGEucHVzaCgnPGxhYmVsIGNs YXNzPTNEImNoZWNrYm94LWlubGluZSBqc3RyZWUtbGluay1maWxlcyI+JyksYS5wdXNoKCcgPQog IDxpbnB1dCBjbGFzcz0zRCJsaW5rLWNoZWNrYm94IiB0eXBlPTNEImNoZWNrYm94IiB2YWx1ZT0z RCJsaW5rX2ZpbGVzIj4nKSw9CmEucHVzaCgiTGluayBmaWxlcyBpbnN0ZWFkIG9mIGNvcHlpbmci KSxhLnB1c2goIiA8L2xhYmVsPiIpLGEucHVzaCgiPC9kaXY+Ij0KKSxhLnB1c2goJzx0ZXh0YXJl YSBpZD0zRCJpbXBvcnRfcGF0aHMiIGNsYXNzPTNEImZvcm0tY29udHJvbCIgcm93cz0zRCI1IiBw PQpsYWNlaG9sZGVyPTNEIkFic29sdXRlIHBhdGhzIChvciBwYXRocyByZWxhdGl2ZSB0byBHYWxh eHkgcm9vdCkgc2VwYXJhdGVkIGI9CnkgbmV3bGluZSI+PC90ZXh0YXJlYT4nKSxhLnB1c2goIjxo ciAvPiIpLGEucHVzaCgiPHA+WW91IGNhbiBzZXQgZXh0ZW5zaW9uID0KdHlwZSBhbmQgZ2Vub21l IGZvciBhbGwgaW1wb3J0ZWQgZGF0YXNldHMgYXQgb25jZTo8L3A+IiksYS5wdXNoKCI8ZGl2PiIp LGEuPQpwdXNoKCdUeXBlOiA8c3BhbiBpZD0zRCJsaWJyYXJ5X2V4dGVuc2lvbl9zZWxlY3QiIGNs YXNzPTNEImxpYnJhcnktZXh0ZW5zaW89Cm4tc2VsZWN0IiAvPicpLGEucHVzaCgnICBHZW5vbWU6 IDxzcGFuIGlkPTNEImxpYnJhcnlfZ2Vub21lX3NlbGVjdCIgY2xhc3M9Cj0zRCJsaWJyYXJ5LWdl bm9tZS1zZWxlY3QiIC8+JyksYS5wdXNoKCI8L2Rpdj4iKSxhLnB1c2goIjwvZGl2PiIpLF8udGVt cGxhdD0KZShhLmpvaW4oIiIpKX0sdGVtcGxhdGVBZGRGaWxlc0Zyb21IaXN0b3J5OmZ1bmN0aW9u KCl7dmFyIGE9M0RbXTtyZXR1cm4gYS5wPQp1c2goJzxkaXYgaWQ9M0QiYWRkX2ZpbGVzX21vZGFs Ij4nKSxhLnB1c2goJzxkaXYgaWQ9M0QiaGlzdG9yeV9tb2RhbF9jb21ib189CmJ1bGsiPicpLGEu cHVzaCgiU2VsZWN0IGhpc3Rvcnk6ICAiKSxhLnB1c2goJzxzZWxlY3QgaWQ9M0QiZGF0YXNldF9h ZGRfYnVsaz0KIiBuYW1lPTNEImRhdGFzZXRfYWRkX2J1bGsiIHN0eWxlPTNEIndpZHRoOjY2JTsg Ij4gJyksYS5wdXNoKCIgICA8JSBfLmVhY2goPQpoaXN0b3JpZXMsIGZ1bmN0aW9uKGhpc3Rvcnkp IHsgJT4iKSxhLnB1c2goJyAgICAgICA8b3B0aW9uIHZhbHVlPTNEIjwlPTNEIF89Ci5lc2NhcGUo aGlzdG9yeS5nZXQoImlkIikpICU+Ij48JT0zRCBfLmVzY2FwZShoaXN0b3J5LmdldCgibmFtZSIp KSAlPjwvb3B0aT0Kb24+JyksCitkZWZpbmUoWyJnYWxheHkubWFzdGhlYWQiLCJ1dGlscy91dGls cyIsImxpYnMvdG9hc3RyIiwibXZjL2xpYnJhcnkvbGlicmFyeT0KLW1vZGVsIiwibXZjL3VpL3Vp LXNlbGVjdCJdLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9M0RCYWNrYm9uZS5WaWV3LmV4dGVu PQpkKHtlbDoiI2NlbnRlciIsZXZlbnRzOnsiY2xpY2sgI3Rvb2xidG5fY3JlYXRlX2ZvbGRlciI6 ImNyZWF0ZUZvbGRlckZyb21Nb2Q9CmFsIiwiY2xpY2sgI3Rvb2xidG5fYnVsa19pbXBvcnQiOiJt b2RhbEJ1bGtJbXBvcnQiLCJjbGljayAjaW5jbHVkZV9kZWxldGVkXz0KZGF0YXNldHNfY2hrIjoi Y2hlY2tJbmNsdWRlRGVsZXRlZCIsImNsaWNrICN0b29sYnRuX3Nob3dfbGliaW5mbyI6InNob3dM aWJJPQpuZm8iLCJjbGljayAjdG9vbGJ0bl9idWxrX2RlbGV0ZSI6ImRlbGV0ZVNlbGVjdGVkRGF0 YXNldHMiLCJjbGljayAjcGFnZV9zaXo9CmVfcHJvbXB0Ijoic2hvd1BhZ2VTaXplUHJvbXB0In0s ZGVmYXVsdHM6e2Nhbl9hZGRfbGlicmFyeV9pdGVtOiExLGNvbnRhaW5zXz0KZmlsZV9vcl9mb2xk ZXI6ITEsY2hhaW5fY2FsbF9jb250cm9sOnt0b3RhbF9udW1iZXI6MCxmYWlsZWRfbnVtYmVyOjB9 LGRpc2FiPQpsZWRfanN0cmVlX2VsZW1lbnQ6ImZvbGRlcnMifSxtb2RhbDpudWxsLGpzdHJlZTpu dWxsLGhpc3RvcmllczpudWxsLHNlbGVjdF89Cmdlbm9tZTpudWxsLHNlbGVjdF9leHRlbnNpb246 bnVsbCxsaXN0X2V4dGVuc2lvbnM6W10sYXV0bzp7aWQ6ImF1dG8iLHRleHQ6Ij0KQXV0by1kZXRl Y3QiLGRlc2NyaXB0aW9uOiJUaGlzIHN5c3RlbSB3aWxsIHRyeSB0byBkZXRlY3QgdGhlIGZpbGUg dHlwZSBhdXRvPQptYXRpY2FsbHkuIElmIHlvdXIgZmlsZSBpcyBub3QgZGV0ZWN0ZWQgcHJvcGVy bHkgYXMgb25lIG9mIHRoZSBrbm93biBmb3JtYXQ9CnMsIGl0IG1vc3QgbGlrZWx5IG1lYW5zIHRo YXQgaXQgaGFzIHNvbWUgZm9ybWF0IHByb2JsZW1zIChlLmcuLCBkaWZmZXJlbnQgbj0KdW1iZXIg b2YgY29sdW1ucyBvbiBkaWZmZXJlbnQgcm93cykuIFlvdSBjYW4gc3RpbGwgY29lcmNlIHRoZSBz eXN0ZW0gdG8gc2V0PQogeW91ciBkYXRhIHRvIHRoZSBmb3JtYXQgeW91IHRoaW5rIGl0IHNob3Vs ZCBiZS4gWW91IGNhbiBhbHNvIHVwbG9hZCBjb21wcmU9CnNzZWQgZmlsZXMsIHdoaWNoIHdpbGwg YXV0b21hdGljYWxseSBiZSBkZWNvbXByZXNzZWQuIn0sbGlzdF9nZW5vbWVzOltdLGluaT0KdGlh bGl6ZTpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9M0RfLmRlZmF1bHRzKGF8fHt9LHRoaXMuZGVm YXVsdHMpLHRoaXMuZmV0PQpjaEV4dEFuZEdlbm9tZXMoKSx0aGlzLnJlbmRlcigpfSxyZW5kZXI6 ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zPTNEXy5leHRlbmQ9Cih0aGlzLm9wdGlvbnMsYSk7dmFy IGI9M0R0aGlzLnRlbXBsYXRlVG9vbEJhcigpLGM9M0R7aWQ6dGhpcy5vcHRpb25zLmlkLGlzXz0K YWRtaW46ITEsaXNfYW5vbnltOiEwLG11dGlwbGVfYWRkX2RhdGFzZXRfb3B0aW9uczohMX07R2Fs YXh5LmN1cnJVc2VyJiYoYy5pPQpzX2FkbWluPTNER2FsYXh5LmN1cnJVc2VyLmlzQWRtaW4oKSxj LmlzX2Fub255bT0zREdhbGF4eS5jdXJyVXNlci5pc0Fub255bW89CnVzKCksKG51bGwhPTNEPTNE R2FsYXh5LmNvbmZpZy51c2VyX2xpYnJhcnlfaW1wb3J0X2Rpcnx8R2FsYXh5LmNvbmZpZy5hbGxv dz0KX2xpYnJhcnlfcGF0aF9wYXN0ZSE9M0Q9M0QhMXx8bnVsbCE9M0Q9M0RHYWxheHkuY29uZmln LmxpYnJhcnlfaW1wb3J0X2RpcikmPQomKGMubXV0aXBsZV9hZGRfZGF0YXNldF9vcHRpb25zPTNE ITApKSx0aGlzLiRlbC5odG1sKGIoYykpfSxyZW5kZXJQYWdpbmF0b3I9CjpmdW5jdGlvbihhKXt0 aGlzLm9wdGlvbnM9M0RfLmV4dGVuZCh0aGlzLm9wdGlvbnMsYSk7dmFyIGI9M0R0aGlzLnRlbXBs YXRlUD0KYWdpbmF0b3IoKTt0aGlzLiRlbC5maW5kKCIjZm9sZGVyX3BhZ2luYXRvciIpLmh0bWwo Yih7aWQ6dGhpcy5vcHRpb25zLmlkLHNoPQpvd19wYWdlOnBhcnNlSW50KHRoaXMub3B0aW9ucy5z aG93X3BhZ2UpLHBhZ2VfY291bnQ6cGFyc2VJbnQodGhpcy5vcHRpb25zLnA9CmFnZV9jb3VudCks dG90YWxfaXRlbXNfY291bnQ6dGhpcy5vcHRpb25zLnRvdGFsX2l0ZW1zX2NvdW50LGl0ZW1zX3No b3duOnRoaT0Kcy5vcHRpb25zLml0ZW1zX3Nob3dufSkpfSxjb25maWd1cmVFbGVtZW50czpmdW5j dGlvbihhKXt0aGlzLm9wdGlvbnM9M0RfLmV4PQp0ZW5kKHRoaXMub3B0aW9ucyxhKSx0aGlzLm9w dGlvbnMuY2FuX2FkZF9saWJyYXJ5X2l0ZW09M0Q9M0Q9M0QhMD8kKCIuYWRkLWw9CmlicmFyeS1p dGVtcyIpLnNob3coKTokKCIuYWRkLWxpYnJhcnktaXRlbXMiKS5oaWRlKCksdGhpcy5vcHRpb25z LmNvbnRhaW5zXz0KZmlsZV9vcl9mb2xkZXI9M0Q9M0Q9M0QhMCYmR2FsYXh5LmN1cnJVc2VyP0dh bGF4eS5jdXJyVXNlci5pc0Fub255bW91cygpPygkPQooIi5kYXRhc2V0LW1hbmlwdWxhdGlvbiIp LnNob3coKSwkKCIubG9nZ2VkLWRhdGFzZXQtbWFuaXB1bGF0aW9uIikuaGlkZSgpKTo9CigkKCIu bG9nZ2VkLWRhdGFzZXQtbWFuaXB1bGF0aW9uIikuc2hvdygpLCQoIi5kYXRhc2V0LW1hbmlwdWxh dGlvbiIpLnNob3coKT0KKTooJCgiLmxvZ2dlZC1kYXRhc2V0LW1hbmlwdWxhdGlvbiIpLmhpZGUo KSwkKCIuZGF0YXNldC1tYW5pcHVsYXRpb24iKS5oaWRlPQooKSksdGhpcy4kZWwuZmluZCgiW2Rh dGEtdG9nZ2xlXSIpLnRvb2x0aXAoKX0sY3JlYXRlRm9sZGVyRnJvbU1vZGFsOmZ1bmN0aW89Cm4o YSl7YS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGI9M0R0aGlzLGM9 M0R0aGlzLnRlbXBsYXRlTj0KZXdGb2xkZXJJbk1vZGFsKCk7dGhpcy5tb2RhbD0zREdhbGF4eS5t b2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3NpbmdfZXZlbnRzPQo6ITAsdGl0bGU6IkNyZWF0ZSBO ZXcgRm9sZGVyIixib2R5OmMoKSxidXR0b25zOntDcmVhdGU6ZnVuY3Rpb24oKXtiLmNyZWF0ZV89 Cm5ld19mb2xkZXJfZXZlbnQoKX0sQ2xvc2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlkZSgp fX19KX0sY3JlYXRlX25ld19mbz0KbGRlcl9ldmVudDpmdW5jdGlvbigpe3ZhciBhPTNEdGhpcy5z ZXJpYWxpemVfbmV3X2ZvbGRlcigpO2lmKHRoaXMudmFsaWRhdGVfPQpuZXdfZm9sZGVyKGEpKXt2 YXIgYj0zRG5ldyBkLkZvbGRlckFzTW9kZWw7dXJsX2l0ZW1zPTNEQmFja2JvbmUuaGlzdG9yeS5m cmE9CmdtZW50LnNwbGl0KCIvIiksY3VycmVudF9mb2xkZXJfaWQ9M0R1cmxfaXRlbXNbdXJsX2l0 ZW1zLmxlbmd0aC0xXSxiLnVybD0zRD0KYi51cmxSb290K2N1cnJlbnRfZm9sZGVyX2lkLGIuc2F2 ZShhLHtzdWNjZXNzOmZ1bmN0aW9uKGEpe0dhbGF4eS5tb2RhbC5oaWRlPQooKSxjLnN1Y2Nlc3Mo IkZvbGRlciBjcmVhdGVkLiIpLGEuc2V0KHt0eXBlOiJmb2xkZXIifSksR2FsYXh5LmxpYnJhcmll cy5mb2w9CmRlckxpc3RWaWV3LmNvbGxlY3Rpb24uYWRkKGEpfSxlcnJvcjpmdW5jdGlvbihhLGIp e0dhbGF4eS5tb2RhbC5oaWRlKCksYy5lcj0Kcm9yKCJ1bmRlZmluZWQiIT0zRHR5cGVvZiBiLnJl c3BvbnNlSlNPTj9iLnJlc3BvbnNlSlNPTi5lcnJfbXNnOiJBbiBlcnJvciBvPQpjdXJyZWQuIil9 fSl9ZWxzZSBjLmVycm9yKCJGb2xkZXIncyBuYW1lIGlzIG1pc3NpbmcuIik7cmV0dXJuITF9LHNl cmlhbGl6ZV89Cm5ld19mb2xkZXI6ZnVuY3Rpb24oKXtyZXR1cm57bmFtZTokKCJpbnB1dFtuYW1l PTNEJ05hbWUnXSIpLnZhbCgpLGRlc2NyaXB0aT0Kb246JCgiaW5wdXRbbmFtZT0zRCdEZXNjcmlw dGlvbiddIikudmFsKCl9fSx2YWxpZGF0ZV9uZXdfZm9sZGVyOmZ1bmN0aW9uKGEpPQp7cmV0dXJu IiIhPTNEPTNEYS5uYW1lfSxtb2RhbEJ1bGtJbXBvcnQ6ZnVuY3Rpb24oKXt2YXIgYT0zRCQoIiNm b2xkZXJfdGFibGU9CiIpLmZpbmQoIjpjaGVja2VkIik7MD0zRD0zRD0zRGEubGVuZ3RoP2MuaW5m bygiWW91IG11c3Qgc2VsZWN0IHNvbWUgZGF0YXNldD0KcyBmaXJzdC4iKTp0aGlzLnJlZnJlc2hV c2VySGlzdG9yaWVzTGlzdChmdW5jdGlvbihhKXt2YXIgYj0zRGEudGVtcGxhdGVCdWxrPQpJbXBv cnRJbk1vZGFsKCk7YS5tb2RhbD0zREdhbGF4eS5tb2RhbCxhLm1vZGFsLnNob3coe2Nsb3Npbmdf ZXZlbnRzOiEwLHRpdGw9CmU6IkltcG9ydCBpbnRvIEhpc3RvcnkiLGJvZHk6Yih7aGlzdG9yaWVz OmEuaGlzdG9yaWVzLm1vZGVsc30pLGJ1dHRvbnM6e0ltcD0Kb3J0OmZ1bmN0aW9uKCl7YS5pbXBv cnRBbGxJbnRvSGlzdG9yeSgpfSxDbG9zZTpmdW5jdGlvbigpe0dhbGF4eS5tb2RhbC5oaWRlPQoo KX19fSl9KX0scmVmcmVzaFVzZXJIaXN0b3JpZXNMaXN0OmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhp czt0aGlzLmhpc3Rvcmllcz0KPTNEbmV3IGQuR2FsYXh5SGlzdG9yaWVzLHRoaXMuaGlzdG9yaWVz LmZldGNoKHtzdWNjZXNzOmZ1bmN0aW9uKCl7YShiKX0sZXJyPQpvcjpmdW5jdGlvbihhLGIpe2Mu ZXJyb3IoInVuZGVmaW5lZCIhPTNEdHlwZW9mIGIucmVzcG9uc2VKU09OP2IucmVzcG9uc2VKU089 Ck4uZXJyX21zZzoiQW4gZXJyb3Igb2N1cnJlZC4iKX19KX0saW1wb3J0QWxsSW50b0hpc3Rvcnk6 ZnVuY3Rpb24oKXt0aGlzLm1vZD0KYWwuZGlzYWJsZUJ1dHRvbigiSW1wb3J0Iik7dmFyIGE9M0Qk KCJzZWxlY3RbbmFtZT0zRGRhdGFzZXRfaW1wb3J0X2J1bGtdIG9wPQp0aW9uOnNlbGVjdGVkIiku dmFsKCksYj0zRCQoInNlbGVjdFtuYW1lPTNEZGF0YXNldF9pbXBvcnRfYnVsa10gb3B0aW9uOnNl bGU9CmN0ZWQiKS50ZXh0KCk7dGhpcy5vcHRpb25zLmxhc3RfdXNlZF9oaXN0b3J5X2lkPTNEYTt2 YXIgYz0zRFtdLGU9M0RbXTskKCIjZj0Kb2xkZXJfdGFibGUiKS5maW5kKCI6Y2hlY2tlZCIpLmVh Y2goZnVuY3Rpb24oKXsiIiE9M0Q9M0R0aGlzLnBhcmVudEVsZW1lbnQuPQpwYXJlbnRFbGVtZW50 LmlkJiZ0aGlzLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMo ImRhdGE9CnNldF9yb3ciKT9jLnB1c2godGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQu aWQpOiIiIT0zRD0zRHRoaXMucGFyZW50RT0KbGVtZW50LnBhcmVudEVsZW1lbnQuaWQmJnRoaXMu cGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWluPQpzKCJmb2xkZXJf cm93IikmJmUucHVzaCh0aGlzLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5pZCl9KTtmb3Io dmFyIGY9M0Q9CltdLGc9M0RjLmxlbmd0aC0xO2c+PTNEMDtnLS0pe3ZhciBoPTNEY1tnXSxpPTNE bmV3IGQuSGlzdG9yeUl0ZW07aS51cmw9M0RpLj0KdXJsUm9vdCthKyIvY29udGVudHMiLGkuY29u dGVudD0zRGgsaS5zb3VyY2U9M0QibGlicmFyeSIsZi5wdXNoKGkpfWZvcih2YXIgPQpnPTNEZS5s ZW5ndGgtMTtnPj0zRDA7Zy0tKXt2YXIgaj0zRGVbZ10saT0zRG5ldyBkLkhpc3RvcnlJdGVtO2ku dXJsPTNEaS51cmw9ClJvb3QrYSsiL2NvbnRlbnRzIixpLmNvbnRlbnQ9M0RqLGkuc291cmNlPTNE ImxpYnJhcnlfZm9sZGVyIixmLnB1c2goaSl9dGhpcz0KLmluaXRDaGFpbkNhbGxDb250cm9sKHts ZW5ndGg6Zi5sZW5ndGgsYWN0aW9uOiJ0b19oaXN0b3J5IixoaXN0b3J5X25hbWU6Yn0pPQosalF1 ZXJ5LmdldEpTT04oZ2FsYXh5X2NvbmZpZy5yb290KyJoaXN0b3J5L3NldF9hc19jdXJyZW50P2lk PTNEIithKSx0aGlzLmM9CmhhaW5DYWxsSW1wb3J0aW5nSW50b0hpc3RvcnkoZixiKX0sdXBkYXRl UHJvZ3Jlc3M6ZnVuY3Rpb24oKXt0aGlzLnByb2dyZXNzKz0KPTNEdGhpcy5wcm9ncmVzc1N0ZXAs JCgiLnByb2dyZXNzLWJhci1pbXBvcnQiKS53aWR0aChNYXRoLnJvdW5kKHRoaXMucHJvZ3JlPQpz cykrIiUiKSx0eHRfcmVwcmVzZW50YXRpb249M0RNYXRoLnJvdW5kKHRoaXMucHJvZ3Jlc3MpKyIl IENvbXBsZXRlIiwkKCIuY289Cm1wbGV0aW9uX3NwYW4iKS50ZXh0KHR4dF9yZXByZXNlbnRhdGlv bil9LGRvd25sb2FkOmZ1bmN0aW9uKGEsYil7dmFyIGM9M0RbXT0KLGQ9M0RbXTskKCIjZm9sZGVy X3RhYmxlIikuZmluZCgiOmNoZWNrZWQiKS5lYWNoKGZ1bmN0aW9uKCl7IiIhPTNEPTNEdGhpcy5w PQphcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5pZCYmdGhpcy5wYXJlbnRFbGVtZW50LnBhcmVu dEVsZW1lbnQuY2xhc3NMaXN0LmM9Cm9udGFpbnMoImRhdGFzZXRfcm93Iik/Yy5wdXNoKHRoaXMu cGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmlkKToiIiE9M0Q9Cj0zRHRoaXMucGFyZW50RWxl bWVudC5wYXJlbnRFbGVtZW50LmlkJiZ0aGlzLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5j bD0KYXNzTGlzdC5jb250YWlucygiZm9sZGVyX3JvdyIpJiZkLnB1c2godGhpcy5wYXJlbnRFbGVt ZW50LnBhcmVudEVsZW1lbnQuaWQpPQp9KTt2YXIgZT0zRCh3aW5kb3cuZ2FsYXh5X2NvbmZpZz9n YWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2xpYnJhcmllcy9kYXQ9CmFzZXRzL2Rvd25sb2Fk LyIrYixmPTNEe2xkX2lkczpjLGZvbGRlcl9pZHM6ZH07dGhpcy5wcm9jZXNzRG93bmxvYWQoZSxm LCJnZT0KdCIpfSxwcm9jZXNzRG93bmxvYWQ6ZnVuY3Rpb24oYSxiLGQpe2lmKGEmJmIpe2I9M0Qi c3RyaW5nIj0zRD0zRHR5cGVvZiBiP2I6PQokLnBhcmFtKGIpO3ZhciBlPTNEIiI7JC5lYWNoKGIu c3BsaXQoIiYiKSxmdW5jdGlvbigpe3ZhciBhPTNEdGhpcy5zcGxpdCgiPQo9M0QiKTtlKz0zRCc8 aW5wdXQgdHlwZT0zRCJoaWRkZW4iIG5hbWU9M0QiJythWzBdKyciIHZhbHVlPTNEIicrYVsxXSsn IiAvPic9Cn0pLCQoJzxmb3JtIGFjdGlvbj0zRCInK2ErJyIgbWV0aG9kPTNEIicrKGR8fCJwb3N0 IikrJyI+JytlKyI8L2Zvcm0+IikuYXBwZT0KbmRUbygiYm9keSIpLnN1Ym1pdCgpLnJlbW92ZSgp LGMuaW5mbygiWW91ciBkb3dubG9hZCB3aWxsIGJlZ2luIHNvb24uIil9ZWxzPQplIGMuZXJyb3Io IkFuIGVycm9yIG9jY3VycmVkLiIpfSxhZGRGaWxlc0Zyb21IaXN0b3J5TW9kYWw6ZnVuY3Rpb24o KXt0aGlzLnI9CmVmcmVzaFVzZXJIaXN0b3JpZXNMaXN0KGZ1bmN0aW9uKGEpe2EubW9kYWw9M0RH YWxheHkubW9kYWw7dmFyIGI9M0RhLnRlbXBsYT0KdGVBZGRGaWxlc0Zyb21IaXN0b3J5KCksZD0z RGEub3B0aW9ucy5mdWxsX3BhdGhbYS5vcHRpb25zLmZ1bGxfcGF0aC5sZW5ndGgtPQoxXVsxXTth Lm1vZGFsLnNob3coe2Nsb3NpbmdfZXZlbnRzOiEwLHRpdGxlOiJBZGRpbmcgZGF0YXNldHMgZnJv bSB5b3VyIGhpc3Q9Cm9yeSB0byBmb2xkZXIgIitkLGJvZHk6Yih7aGlzdG9yaWVzOmEuaGlzdG9y aWVzLm1vZGVsc30pLGJ1dHRvbnM6e0FkZDpmdW5jdD0KaW9uKCl7YS5hZGRBbGxEYXRhc2V0c0Zy b21IaXN0b3J5KCl9LENsb3NlOmZ1bmN0aW9uKCl7R2FsYXh5Lm1vZGFsLmhpZGUoKX19PQosY2xv c2luZ19jYWxsYmFjazpmdW5jdGlvbigpe0dhbGF4eS5saWJyYXJpZXMubGlicmFyeV9yb3V0ZXIu YmFjaygpfX0pLGEuaGk9CnN0b3JpZXMubW9kZWxzLmxlbmd0aD4wPyhhLmZldGNoQW5kRGlzcGxh eUhpc3RvcnlDb250ZW50cyhhLmhpc3Rvcmllcy5tb2RlbD0Kc1swXS5pZCksJCgiI2RhdGFzZXRf YWRkX2J1bGsiKS5jaGFuZ2UoZnVuY3Rpb24oYil7YS5mZXRjaEFuZERpc3BsYXlIaXN0b3J5PQpD b250ZW50cyhiLnRhcmdldC52YWx1ZSl9KSk6Yy5lcnJvcigiQW4gZXJyb3Igb2N1cnJlZC4iKX0p fSxpbXBvcnRGaWxlc0Zyb209ClBhdGhNb2RhbDpmdW5jdGlvbigpe3ZhciBhPTNEdGhpczt0aGlz Lm1vZGFsPTNER2FsYXh5Lm1vZGFsO3ZhciBiPTNEdGhpcy50ZT0KbXBsYXRlSW1wb3J0UGF0aE1v ZGFsKCk7dGhpcy5tb2RhbC5zaG93KHtjbG9zaW5nX2V2ZW50czohMCx0aXRsZToiUGxlYXNlIGVu PQp0ZXIgcGF0aHMgdG8gaW1wb3J0Iixib2R5OmIoe30pLGJ1dHRvbnM6e0ltcG9ydDpmdW5jdGlv bigpe2EuaW1wb3J0RnJvbVBhdGg9CnNDbGlja2VkKGEpfSxDbG9zZTpmdW5jdGlvbigpe0dhbGF4 eS5tb2RhbC5oaWRlKCl9fSxjbG9zaW5nX2NhbGxiYWNrOmZ1bmN0aT0Kb24oKXtHYWxheHkubGli cmFyaWVzLmxpYnJhcnlfcm91dGVyLm5hdmlnYXRlKCJmb2xkZXJzLyIrYS5pZCx7dHJpZ2dlcjoh MH0pPQp9fSksdGhpcy5yZW5kZXJTZWxlY3RCb3hlcygpfSxmZXRjaEV4dEFuZEdlbm9tZXM6ZnVu Y3Rpb24oKXt2YXIgYT0zRHRoaXM7Yi49CmdldCh7dXJsOih3aW5kb3cuZ2FsYXh5X2NvbmZpZz9n YWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2RhdGF0eXBlcz9leHRlbj0Kc2lvbl9vbmx5PTNE RmFsc2UiLHN1Y2Nlc3M6ZnVuY3Rpb24oYil7Zm9yKGtleSBpbiBiKWEubGlzdF9leHRlbnNpb25z LnB1c2goPQp7aWQ6YltrZXldLmV4dGVuc2lvbix0ZXh0OmJba2V5XS5leHRlbnNpb24sZGVzY3Jp cHRpb246YltrZXldLmRlc2NyaXB0aW9uLGQ9CmVzY3JpcHRpb25fdXJsOmJba2V5XS5kZXNjcmlw dGlvbl91cmx9KTthLmxpc3RfZXh0ZW5zaW9ucy5zb3J0KGZ1bmN0aW9uKGEsYj0KKXtyZXR1cm4g YS5pZD5iLmlkPzE6YS5pZDxiLmlkPy0xOjB9KSxhLmxpc3RfZXh0ZW5zaW9ucy51bnNoaWZ0KGEu YXV0byl9fSksPQpiLmdldCh7dXJsOih3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmln LnJvb3Q6Ii8iKSsiYXBpL2dlbm9tZXMiLHN1Y2M9CmVzczpmdW5jdGlvbihiKXtmb3Ioa2V5IGlu IGIpYS5saXN0X2dlbm9tZXMucHVzaCh7aWQ6YltrZXldWzFdLHRleHQ6YltrZXldWz0KMF19KTth Lmxpc3RfZ2Vub21lcy5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuaWQ+Yi5pZD8xOmEuaWQ8 Yi5pZD8tMTowfSl9PQp9KX0scmVuZGVyU2VsZWN0Qm94ZXM6ZnVuY3Rpb24oKXt2YXIgYT0zRHRo aXM7dGhpcy5zZWxlY3RfZ2Vub21lPTNEbmV3IGUuVmk9CmV3KHtjc3M6ImxpYnJhcnktZ2Vub21l LXNlbGVjdCIsZGF0YTphLmxpc3RfZ2Vub21lcyxjb250YWluZXI6R2FsYXh5Lm1vZGFsLj0KJGVs LmZpbmQoIiNsaWJyYXJ5X2dlbm9tZV9zZWxlY3QiKSx2YWx1ZToiPyJ9KSx0aGlzLnNlbGVjdF9l eHRlbnNpb249M0RuZXcgPQplLlZpZXcoe2NzczoibGlicmFyeS1leHRlbnNpb24tc2VsZWN0Iixk YXRhOmEubGlzdF9leHRlbnNpb25zLGNvbnRhaW5lcjpHYWw9CmF4eS5tb2RhbC4kZWwuZmluZCgi I2xpYnJhcnlfZXh0ZW5zaW9uX3NlbGVjdCIpLHZhbHVlOiJhdXRvIn0pfSxpbXBvcnRGaWxlcz0K RnJvbUdhbGF4eUZvbGRlck1vZGFsOmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpcyxjPTNEdGhpcy50 ZW1wbGF0ZUJyb3dzZXJNb2RhPQpsKCk7dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1v ZGFsLnNob3coe2Nsb3NpbmdfZXZlbnRzOiEwLHRpdGxlOiJQbGU9CmFzZSBzZWxlY3QgZm9sZGVy cyBvciBmaWxlcyIsYm9keTpjKHt9KSxidXR0b25zOntJbXBvcnQ6ZnVuY3Rpb24oKXtiLmltcG9y dD0KRnJvbUpzdHJlZVBhdGgoYixhKX0sQ2xvc2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlk ZSgpfX0sY2xvc2luZ19jYWxsYmFjPQprOmZ1bmN0aW9uKCl7R2FsYXh5LmxpYnJhcmllcy5saWJy YXJ5X3JvdXRlci5uYXZpZ2F0ZSgiZm9sZGVycy8iK2IuaWQse3RyaWc9CmdlcjohMH0pfX0pLHRo aXMucmVuZGVyU2VsZWN0Qm94ZXMoKSxhLmRpc2FibGVkX2pzdHJlZV9lbGVtZW50PTNEImZvbGRl cnMiLD0KdGhpcy5yZW5kZXJKc3RyZWUoYSksJCgiaW5wdXRbdHlwZT0zRHJhZGlvXSIpLmNoYW5n ZShmdW5jdGlvbihjKXsianN0cmVlLWRpPQpzYWJsZS1mb2xkZXJzIj0zRD0zRD0zRGMudGFyZ2V0 LnZhbHVlPyhhLmRpc2FibGVkX2pzdHJlZV9lbGVtZW50PTNEImZvbGRlcnM9CiIsYi5yZW5kZXJK c3RyZWUoYSksJCgiLmpzdHJlZS1mb2xkZXJzLW1lc3NhZ2UiKS5oaWRlKCksJCgiLmpzdHJlZS1w cmVzZXJ2ZT0KLXN0cnVjdHVyZSIpLmhpZGUoKSwkKCIuanN0cmVlLWxpbmstZmlsZXMiKS5oaWRl KCksJCgiLmpzdHJlZS1maWxlcy1tZXNzYWdlPQoiKS5zaG93KCkpOiJqc3RyZWUtZGlzYWJsZS1m aWxlcyI9M0Q9M0Q9M0RjLnRhcmdldC52YWx1ZSYmKCQoIi5qc3RyZWUtZmlsZXM9Ci1tZXNzYWdl IikuaGlkZSgpLCQoIi5qc3RyZWUtZm9sZGVycy1tZXNzYWdlIikuc2hvdygpLCQoIi5qc3RyZWUt bGluay1maWxlcz0KIikuc2hvdygpLCQoIi5qc3RyZWUtcHJlc2VydmUtc3RydWN0dXJlIikuc2hv dygpLGEuZGlzYWJsZWRfanN0cmVlX2VsZW1lbnQ9Cj0zRCJmaWxlcyIsYi5yZW5kZXJKc3RyZWUo YSkpfSl9LHJlbmRlckpzdHJlZTpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9M0RfLj0KZXh0ZW5k KHRoaXMub3B0aW9ucyxhKTt2YXIgYj0zRGEuc291cmNlfHwidXNlcmRpciIsZT0zRHRoaXMub3B0 aW9ucy5kaXNhYmxlPQpkX2pzdHJlZV9lbGVtZW50O3RoaXMuanN0cmVlPTNEbmV3IGQuSnN0cmVl LHRoaXMuanN0cmVlLnVybD0zRHRoaXMuanN0cmVlLnU9CnJsUm9vdCsiP3RhcmdldD0zRCIrYisi JmZvcm1hdD0zRGpzdHJlZSZkaXNhYmxlPTNEIitlLHRoaXMuanN0cmVlLmZldGNoKHtzdT0KY2Nl c3M6ZnVuY3Rpb24oYSl7ZGVmaW5lKCJqcXVlcnkiLGZ1bmN0aW9uKCl7cmV0dXJuIGpRdWVyeX0p LHJlcXVpcmUoWyJsaWJzPQovanF1ZXJ5L2pzdHJlZSJdLGZ1bmN0aW9uKCl7JCgiI2pzdHJlZV9i cm93c2VyIikuanN0cmVlKCJkZXN0cm95IiksJCgiI2pzdHI9CmVlX2Jyb3dzZXIiKS5qc3RyZWUo e2NvcmU6e2RhdGE6YX0scGx1Z2luczpbInR5cGVzIiwiY2hlY2tib3giXSx0eXBlczp7Zm9sZD0K ZXI6e2ljb246ImpzdHJlZS1mb2xkZXIifSxmaWxlOntpY29uOiJqc3RyZWUtZmlsZSJ9fSxjaGVj a2JveDp7dGhyZWVfc3RhdGU6PQohMX19KX0pfSxlcnJvcjpmdW5jdGlvbihhLGIpeyJ1bmRlZmlu ZWQiIT0zRHR5cGVvZiBiLnJlc3BvbnNlSlNPTj80MDQwMDE9M0Q9Cj0zRD0zRGIucmVzcG9uc2VK U09OLmVycl9jb2RlP2Mud2FybmluZyhiLnJlc3BvbnNlSlNPTi5lcnJfbXNnKTpjLmVycm9yKGIu cj0KZXNwb25zZUpTT04uZXJyX21zZyk6Yy5lcnJvcigiQW4gZXJyb3Igb2N1cnJlZC4iKX19KX0s aW1wb3J0RnJvbVBhdGhzQ2xpY2tlPQpkOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLm1vZGFsLiRl bC5maW5kKCIucHJlc2VydmUtY2hlY2tib3giKS5pcygiOmNoZWNrZWQ9CiIpLGI9M0R0aGlzLm1v ZGFsLiRlbC5maW5kKCIubGluay1jaGVja2JveCIpLmlzKCI6Y2hlY2tlZCIpLGQ9M0R0aGlzLnNl bGVjdD0KX2V4dGVuc2lvbi52YWx1ZSgpLGU9M0R0aGlzLnNlbGVjdF9nZW5vbWUudmFsdWUoKSxm PTNEJCgidGV4dGFyZWEjaW1wb3J0X3BhPQp0aHMiKS52YWwoKSxnPTNEW107aWYoZil7dGhpcy5t b2RhbC5kaXNhYmxlQnV0dG9uKCJJbXBvcnQiKSxmPTNEZi5zcGxpdCgiXG49CiIpO2Zvcih2YXIg aD0zRGYubGVuZ3RoLTE7aD49M0QwO2gtLSl0cmltbWVkPTNEZltoXS50cmltKCksMCE9M0Q9M0R0 cmltbWVkLj0KbGVuZ3RoJiZnLnB1c2godHJpbW1lZCk7dGhpcy5pbml0Q2hhaW5DYWxsQ29udHJv bCh7bGVuZ3RoOmcubGVuZ3RoLGFjdGlvbjoiPQphZGRpbmdfZGF0YXNldHMifSksdGhpcy5jaGFp bkNhbGxJbXBvcnRpbmdGb2xkZXJzKHtwYXRoczpnLHByZXNlcnZlX2RpcnM6YSw9CmxpbmtfZGF0 YTpiLHNvdXJjZToiYWRtaW5fcGF0aCIsZmlsZV90eXBlOmQsZGJrZXk6ZX0pfWVsc2UgYy5pbmZv KCJQbGVhc2UgZT0KbnRlciBhIHBhdGggcmVsYXRpdmUgdG8gR2FsYXh5IHJvb3QuIil9LGluaXRD aGFpbkNhbGxDb250cm9sOmZ1bmN0aW9uKGEpe3ZhPQpyIGI7c3dpdGNoKGEuYWN0aW9uKXtjYXNl ImFkZGluZ19kYXRhc2V0cyI6Yj0zRHRoaXMudGVtcGxhdGVBZGRpbmdEYXRhc2V0c1A9CnJvZ3Jl c3NCYXIoKSx0aGlzLm1vZGFsLiRlbC5maW5kKCIubW9kYWwtYm9keSIpLmh0bWwoYih7Zm9sZGVy X25hbWU6dGhpcy5vcD0KdGlvbnMuZm9sZGVyX25hbWV9KSk7YnJlYWs7Y2FzZSJkZWxldGluZ19k YXRhc2V0cyI6Yj0zRHRoaXMudGVtcGxhdGVEZWxldGluPQpnRGF0YXNldHNQcm9ncmVzc0Jhcigp LHRoaXMubW9kYWwuJGVsLmZpbmQoIi5tb2RhbC1ib2R5IikuaHRtbChiKCkpO2JyZWFrO2M9CmFz ZSJ0b19oaXN0b3J5IjpiPTNEdGhpcy50ZW1wbGF0ZUltcG9ydEludG9IaXN0b3J5UHJvZ3Jlc3NC YXIoKSx0aGlzLm1vZGFsLj0KJGVsLmZpbmQoIi5tb2RhbC1ib2R5IikuaHRtbChiKHtoaXN0b3J5 X25hbWU6YS5oaXN0b3J5X25hbWV9KSk7YnJlYWs7ZGVmYXVsPQp0OmNvbnNvbGUuZXJyb3IoIldy b25nIGFjdGlvbiBzcGVjaWZpZWQuIil9dGhpcy5wcm9ncmVzcz0zRDAsdGhpcy5wcm9ncmVzc1M9 CnRlcD0zRDEwMC9hLmxlbmd0aCx0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFs X251bWJlcj0zRGEubGVuZ3RoLD0KdGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC5mYWls ZWRfbnVtYmVyPTNEMH0saW1wb3J0RnJvbUpzdHJlZVBhdGg6ZnVuPQpjdGlvbihhLGIpe3ZhciBk PTNEJCgiI2pzdHJlZV9icm93c2VyIikuanN0cmVlKCkuZ2V0X3NlbGVjdGVkKCEwKSxlPTNEdGhp cy49Cm1vZGFsLiRlbC5maW5kKCIucHJlc2VydmUtY2hlY2tib3giKS5pcygiOmNoZWNrZWQiKSxm PTNEdGhpcy5tb2RhbC4kZWwuZmluZD0KKCIubGluay1jaGVja2JveCIpLmlzKCI6Y2hlY2tlZCIp LGc9M0R0aGlzLnNlbGVjdF9leHRlbnNpb24udmFsdWUoKSxoPTNEdGhpPQpzLnNlbGVjdF9nZW5v bWUudmFsdWUoKSxpPTNEZFswXS50eXBlLGo9M0RbXTtpZihkLmxlbmd0aDwxKWMuaW5mbygiUGxl YXNlIHM9CmVsZWN0IHNvbWUgaXRlbXMgZmlyc3QuIik7ZWxzZXt0aGlzLm1vZGFsLmRpc2FibGVC dXR0b24oIkltcG9ydCIpO2Zvcih2YXIgaz0KPTNEZC5sZW5ndGgtMTtrPj0zRDA7ay0tKXZvaWQg MCE9M0Q9M0RkW2tdLmxpX2F0dHIuZnVsbF9wYXRoJiZqLnB1c2goZFtrXS5sPQppX2F0dHIuZnVs bF9wYXRoKTtpZih0aGlzLmluaXRDaGFpbkNhbGxDb250cm9sKHtsZW5ndGg6ai5sZW5ndGgsYWN0 aW9uOiJhZGQ9CmluZ19kYXRhc2V0cyJ9KSwiZm9sZGVyIj0zRD0zRD0zRGkpe3ZhciBsPTNEYi5z b3VyY2UrIl9mb2xkZXIiO3RoaXMuY2hhaW5DYT0KbGxJbXBvcnRpbmdGb2xkZXJzKHtwYXRoczpq LHByZXNlcnZlX2RpcnM6ZSxsaW5rX2RhdGE6Zixzb3VyY2U6bCxmaWxlX3R5cGU6PQpnLGRia2V5 Omh9KX1lbHNlIGlmKCJmaWxlIj0zRD0zRD0zRGkpe3ZhciBsPTNEYi5zb3VyY2UrIl9maWxlIjt0 aGlzLmNoYWluQ2E9CmxsSW1wb3J0aW5nVXNlcmRpckZpbGVzKHtwYXRoczpqLGZpbGVfdHlwZTpn LGRia2V5Omgsc291cmNlOmx9KX19fSxmZXRjaEFuZD0KRGlzcGxheUhpc3RvcnlDb250ZW50czpm dW5jdGlvbihhKXt2YXIgYj0zRG5ldyBkLkhpc3RvcnlDb250ZW50cyh7aWQ6YX0pLGU9Cj0zRHRo aXM7Yi5mZXRjaCh7c3VjY2VzczpmdW5jdGlvbihiKXt2YXIgYz0zRGUudGVtcGxhdGVIaXN0b3J5 Q29udGVudHMoKTtlLj0KaGlzdG9yaWVzLmdldChhKS5zZXQoe2NvbnRlbnRzOmJ9KSxlLm1vZGFs LiRlbC5maW5kKCIjc2VsZWN0ZWRfaGlzdG9yeV9jb250PQplbnQiKS5odG1sKGMoe2hpc3Rvcnlf Y29udGVudHM6Yi5tb2RlbHMucmV2ZXJzZSgpfSkpfSxlcnJvcjpmdW5jdGlvbihhLGIpe2M9Ci5l cnJvcigidW5kZWZpbmVkIiE9M0R0eXBlb2YgYi5yZXNwb25zZUpTT04/Yi5yZXNwb25zZUpTT04u ZXJyX21zZzoiQW4gZXJybz0KciBvY3VycmVkLiIpfX0pfSxhZGRBbGxEYXRhc2V0c0Zyb21IaXN0 b3J5OmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLm1vZGFsLiRlPQpsLmZpbmQoIiNzZWxlY3RlZF9o aXN0b3J5X2NvbnRlbnQiKS5maW5kKCI6Y2hlY2tlZCIpLGI9M0RbXSxlPTNEW107aWYoYS5sZW49 Cmd0aDwxKWMuaW5mbygiWW91IG11c3Qgc2VsZWN0IHNvbWUgZGF0YXNldHMgZmlyc3QuIik7ZWxz ZXt0aGlzLm1vZGFsLmRpc2FibD0KZUJ1dHRvbigiQWRkIiksYS5lYWNoKGZ1bmN0aW9uKCl7dmFy IGE9M0QkKHRoaXMucGFyZW50RWxlbWVudCkuZGF0YSgiaWQiKTthPQomJmIucHVzaChhKX0pO2Zv cih2YXIgZj0zRGIubGVuZ3RoLTE7Zj49M0QwO2YtLSl7aGlzdG9yeV9kYXRhc2V0X2lkPTNEYltm XTs9CnZhciBnPTNEbmV3IGQuSXRlbTtnLnVybD0zRCh3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxh eHlfY29uZmlnLnJvb3Q6Ii8iKSsiYT0KcGkvZm9sZGVycy8iK3RoaXMub3B0aW9ucy5pZCsiL2Nv bnRlbnRzIixnLnNldCh7ZnJvbV9oZGFfaWQ6aGlzdG9yeV9kYXRhc2V0PQpfaWR9KSxlLnB1c2go Zyl9dGhpcy5pbml0Q2hhaW5DYWxsQ29udHJvbCh7bGVuZ3RoOmUubGVuZ3RoLGFjdGlvbjoiYWRk aW5nX2Q9CmF0YXNldHMifSksdGhpcy5jaGFpbkNhbGxBZGRpbmdIZGFzKGUpfX0sY2hhaW5DYWxs SW1wb3J0aW5nSW50b0hpc3Rvcnk6ZnVuYz0KdGlvbihhLGIpe3ZhciBkPTNEdGhpcyxlPTNEYS5w b3AoKTtpZigidW5kZWZpbmVkIj0zRD0zRHR5cGVvZiBlKXJldHVybiAwPTNEPQo9M0Q9M0R0aGlz Lm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI/Yy5zdWNjZXNzKCJTZWxl Y3RlZCBkYXQ9CmFzZXRzIGltcG9ydGVkIGludG8gaGlzdG9yeS4gQ2xpY2sgdGhpcyB0byBzdGFy dCBhbmFseXNpbmcgaXQuIiwiIix7b25jbGljaz0KOmZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9u PTNEIi8ifX0pOnRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkPQpfbnVtYmVy PTNEPTNEPTNEdGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC50b3RhbF9udW1iZXI/Yy5l cnJvcigiVGhlcmU9CiB3YXMgYW4gZXJyb3IgYW5kIG5vIGRhdGFzZXRzIHdlcmUgaW1wb3J0ZWQg aW50byBoaXN0b3J5LiIpOnRoaXMub3B0aW9ucy5jaD0KYWluX2NhbGxfY29udHJvbC5mYWlsZWRf bnVtYmVyPHRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wudG90YWxfbnVtYmVyPQomJmMu d2FybmluZygiU29tZSBvZiB0aGUgZGF0YXNldHMgY291bGQgbm90IGJlIGltcG9ydGVkIGludG8g aGlzdG9yeS4gQ2xpY2s9CiB0aGlzIHRvIHNlZSB3aGF0IHdhcyBpbXBvcnRlZC4iLCIiLHtvbmNs aWNrOmZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uPTNEIj0KLyJ9fSksR2FsYXh5Lm1vZGFsLmhp ZGUoKSwhMDt2YXIgZj0zRCQud2hlbihlLnNhdmUoe2NvbnRlbnQ6ZS5jb250ZW50LHNvdXJjPQpl OmUuc291cmNlfSkpO2YuZG9uZShmdW5jdGlvbigpe2QudXBkYXRlUHJvZ3Jlc3MoKSxkLmNoYWlu Q2FsbEltcG9ydGluZ0ludG89Ckhpc3RvcnkoYSxiKX0pLmZhaWwoZnVuY3Rpb24oKXtkLm9wdGlv bnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXIrPQo9M0QxLGQudXBkYXRlUHJvZ3Jl c3MoKSxkLmNoYWluQ2FsbEltcG9ydGluZ0ludG9IaXN0b3J5KGEsYil9KX0sY2hhaW5DYWxsSW09 CnBvcnRpbmdVc2VyZGlyRmlsZXM6ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlzLGQ9M0RhLnBhdGhz LnBvcCgpO2lmKCJ1bmRlZmluZT0KZCI9M0Q9M0R0eXBlb2YgZClyZXR1cm4gMD0zRD0zRD0zRHRo aXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251PQptYmVyPyhjLnN1Y2Nlc3Mo IlNlbGVjdGVkIGZpbGVzIGltcG9ydGVkIGludG8gdGhlIGN1cnJlbnQgZm9sZGVyIiksR2FsYXh5 Lm09Cm9kYWwuaGlkZSgpKTpjLmVycm9yKCJBbiBlcnJvciBvY2N1cmVkLiIpLCEwO3ZhciBlPTNE JC53aGVuKCQucG9zdCgod2luZG93Lj0KZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6 Ii8iKSsiYXBpL2xpYnJhcmllcy9kYXRhc2V0cz9lbmNvZGVkX2ZvbGRlPQpyX2lkPTNEIitiLmlk KyImc291cmNlPTNEIithLnNvdXJjZSsiJnBhdGg9M0QiK2QrIiZmaWxlX3R5cGU9M0QiK2EuZmls ZV90eXA9CmUrIiZkYmtleT0zRCIrYS5kYmtleSkpO2UuZG9uZShmdW5jdGlvbigpe2IudXBkYXRl UHJvZ3Jlc3MoKSxiLmNoYWluQ2FsbEltcD0Kb3J0aW5nVXNlcmRpckZpbGVzKGEpfSkuZmFpbChm dW5jdGlvbigpe2Iub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkPQpfbnVtYmVyKz0z RDEsYi51cGRhdGVQcm9ncmVzcygpLGIuY2hhaW5DYWxsSW1wb3J0aW5nVXNlcmRpckZpbGVzKGEp fSl9LGNoYWk9Cm5DYWxsSW1wb3J0aW5nRm9sZGVyczpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMs ZD0zRGEucGF0aHMucG9wKCk7aWYoInVuZGVmaT0KbmVkIj0zRD0zRHR5cGVvZiBkKXJldHVybiAw PTNEPTNEPTNEdGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC5mYWlsZWRfPQpudW1iZXI/ KGMuc3VjY2VzcygiU2VsZWN0ZWQgZm9sZGVycyBhbmQgdGhlaXIgY29udGVudHMgaW1wb3J0ZWQg aW50byB0aGUgY3U9CnJyZW50IGZvbGRlci4iKSxHYWxheHkubW9kYWwuaGlkZSgpKTpjLmVycm9y KCJBbiBlcnJvciBvY2N1cmVkLiIpLCEwO3ZhciBlPQo9M0QkLndoZW4oJC5wb3N0KCh3aW5kb3cu Z2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2xpYnJhcmk9CmVzL2Rh dGFzZXRzP2VuY29kZWRfZm9sZGVyX2lkPTNEIitiLmlkKyImc291cmNlPTNEIithLnNvdXJjZSsi JnBhdGg9M0QiK2QrIj0KJnByZXNlcnZlX2RpcnM9M0QiK2EucHJlc2VydmVfZGlycysiJmxpbmtf ZGF0YT0zRCIrYS5saW5rX2RhdGErIiZmaWxlX3R5cGU9Cj0zRCIrYS5maWxlX3R5cGUrIiZkYmtl eT0zRCIrYS5kYmtleSkpO2UuZG9uZShmdW5jdGlvbigpe2IudXBkYXRlUHJvZ3Jlc3MoKT0KLGIu Y2hhaW5DYWxsSW1wb3J0aW5nRm9sZGVycyhhKX0pLmZhaWwoZnVuY3Rpb24oKXtiLm9wdGlvbnMu Y2hhaW5fY2FsbF9jb250PQpyb2wuZmFpbGVkX251bWJlcis9M0QxLGIudXBkYXRlUHJvZ3Jlc3Mo KSxiLmNoYWluQ2FsbEltcG9ydGluZ0ZvbGRlcnMoYSl9KX09CixjaGFpbkNhbGxBZGRpbmdIZGFz OmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpczt0aGlzLmFkZGVkX2hkYXM9M0RuZXcgZC5Gb2xkZT0K cjt2YXIgZT0zRGEucG9wKCk7aWYoInVuZGVmaW5lZCI9M0Q9M0R0eXBlb2YgZSlyZXR1cm4gMD0z RD0zRD0zRHRoaXMub3B0aW9uPQpzLmNoYWluX2NhbGxfY29udHJvbC5mYWlsZWRfbnVtYmVyP2Mu c3VjY2VzcygiU2VsZWN0ZWQgZGF0YXNldHMgZnJvbSBoaXN0b3I9CnkgYWRkZWQgdG8gdGhlIGZv bGRlciIpOnRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcj0zRD0z RD0KPTNEdGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC50b3RhbF9udW1iZXI/Yy5lcnJv cigiVGhlcmUgd2FzIGFuIGVycm9yPQogYW5kIG5vIGRhdGFzZXRzIHdlcmUgYWRkZWQgdG8gdGhl IGZvbGRlci4iKTp0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm89CmwuZmFpbGVkX251bWJl cjx0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlciYmYy53YXJuaW5n KCJTbz0KbWUgb2YgdGhlIGRhdGFzZXRzIGNvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUgZm9sZGVy IiksR2FsYXh5Lm1vZGFsLmhpZGUoKSx0PQpoaXMuYWRkZWRfaGRhczt2YXIgZj0zRCQud2hlbihl LnNhdmUoe2Zyb21faGRhX2lkOmUuZ2V0KCJmcm9tX2hkYV9pZCIpfSkpO2Y9Ci5kb25lKGZ1bmN0 aW9uKGMpe0dhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzdFZpZXcuY29sbGVjdGlvbi5hZGQoYyks Yi51cGRhdD0KZVByb2dyZXNzKCksYi5jaGFpbkNhbGxBZGRpbmdIZGFzKGEpfSkuZmFpbChmdW5j dGlvbigpe2Iub3B0aW9ucy5jaGFpbl9jYWxsPQpfY29udHJvbC5mYWlsZWRfbnVtYmVyKz0zRDEs Yi51cGRhdGVQcm9ncmVzcygpLGIuY2hhaW5DYWxsQWRkaW5nSGRhcyhhKX0pfSw9CmNoYWluQ2Fs bERlbGV0aW5nSXRlbXM6ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlzO3RoaXMuZGVsZXRlZF9pdGVt cz0zRG5ldyBkLj0KRm9sZGVyO3ZhciBlPTNEYS5wb3AoKTtpZigidW5kZWZpbmVkIj0zRD0zRHR5 cGVvZiBlKXJldHVybiAwPTNEPTNEPTNEdGhpcy5vPQpwdGlvbnMuY2hhaW5fY2FsbF9jb250cm9s LmZhaWxlZF9udW1iZXI/Yy5zdWNjZXNzKCJTZWxlY3RlZCBpdGVtcyB3ZXJlIGRlbGU9CnRlZC4i KTp0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI9M0Q9M0Q9M0R0 aGlzLm9wdGlvbnMuYz0KaGFpbl9jYWxsX2NvbnRyb2wudG90YWxfbnVtYmVyP2MuZXJyb3IoIlRo ZXJlIHdhcyBhbiBlcnJvciBhbmQgbm8gaXRlbXMgd2VyPQplIGRlbGV0ZWQuIFBsZWFzZSBtYWtl IHN1cmUgeW91IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucy4iKTp0aGlzLm9wdGlvbnM9Ci5j aGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcjx0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9j b250cm9sLnRvdGFsX251bT0KYmVyJiZjLndhcm5pbmcoIlNvbWUgb2YgdGhlIGl0ZW1zIGNvdWxk IG5vdCBiZSBkZWxldGVkLiBQbGVhc2UgbWFrZSBzdXJlIHlvPQp1IGhhdmUgc3VmZmljaWVudCBw ZXJtaXNzaW9ucy4iKSxHYWxheHkubW9kYWwuaGlkZSgpLHRoaXMuZGVsZXRlZF9pdGVtczt2YXI9 CiBmPTNEJC53aGVuKGUuZGVzdHJveSgpKTtmLmRvbmUoZnVuY3Rpb24oYyl7aWYoR2FsYXh5Lmxp YnJhcmllcy5mb2xkZXJMaXN0Vj0KaWV3LmNvbGxlY3Rpb24ucmVtb3ZlKGUuaWQpLGIudXBkYXRl UHJvZ3Jlc3MoKSxHYWxheHkubGlicmFyaWVzLmZvbGRlckxpc3RWPQppZXcub3B0aW9ucy5pbmNs dWRlX2RlbGV0ZWQpe3ZhciBmPTNEbnVsbDsiZm9sZGVyIj0zRD0zRD0zRGMudHlwZXx8IkxpYnJh cnk9CkZvbGRlciI9M0Q9M0Q9M0RjLm1vZGVsX2NsYXNzP2Y9M0RuZXcgZC5Gb2xkZXJBc01vZGVs KGMpOiJmaWxlIj0zRD0zRD0zRGMudD0KeXBlfHwiTGlicmFyeURhdGFzZXQiPTNEPTNEPTNEYy5t b2RlbF9jbGFzcz9mPTNEbmV3IGQuSXRlbShjKTooY29uc29sZS5lcnJvPQpyKCJVbmtub3duIGxp YnJhcnkgaXRlbSB0eXBlIGZvdW5kLiIpLGNvbnNvbGUuZXJyb3IoYy50eXBlfHxjLm1vZGVsX2Ns YXNzKSk9CixHYWxheHkubGlicmFyaWVzLmZvbGRlckxpc3RWaWV3LmNvbGxlY3Rpb24uYWRkKGYp fWIuY2hhaW5DYWxsRGVsZXRpbmdJdGVtcz0KKGEpfSkuZmFpbChmdW5jdGlvbigpe2Iub3B0aW9u cy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcis9M0QxLGIudXBkPQphdGVQcm9ncmVz cygpLGIuY2hhaW5DYWxsRGVsZXRpbmdJdGVtcyhhKX0pfSxjaGVja0luY2x1ZGVEZWxldGVkOmZ1 bmN0aW9uKGE9Cil7R2FsYXh5LmxpYnJhcmllcy5mb2xkZXJMaXN0Vmlldy5mZXRjaEZvbGRlcihh LnRhcmdldC5jaGVja2VkP3tpbmNsdWRlX2RlbD0KZXRlZDohMH06e2luY2x1ZGVfZGVsZXRlZDoh MX0pfSxkZWxldGVTZWxlY3RlZERhdGFzZXRzOmZ1bmN0aW9uKCl7dmFyIGE9M0QkPQooIiNmb2xk ZXJfdGFibGUiKS5maW5kKCI6Y2hlY2tlZCIpO2lmKDA9M0Q9M0Q9M0RhLmxlbmd0aCljLmluZm8o IllvdSBtdXN0IHM9CmVsZWN0IGF0IGxlYXN0IG9uZSBkYXRhc2V0IGZvciBkZWxldGlvbi4iKTtl bHNle3ZhciBiPTNEdGhpcy50ZW1wbGF0ZURlbGV0aT0KbmdEYXRhc2V0c1Byb2dyZXNzQmFyKCk7 dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3NpbmdfPQpldmVu dHM6ITAsdGl0bGU6IkRlbGV0aW5nIHNlbGVjdGVkIGRhdGFzZXRzIixib2R5OmIoe30pLGJ1dHRv bnM6e0Nsb3NlOmZ1bmM9CnRpb24oKXtHYWxheHkubW9kYWwuaGlkZSgpfX19KSx0aGlzLm9wdGlv bnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlcj0KPTNEMCx0aGlzLm9wdGlvbnMuY2hh aW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI9M0QwO3ZhciBlPTNEW10sZj0zRFtdO2EuPQpl YWNoKGZ1bmN0aW9uKCl7IiIhPTNEPTNEdGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQu aWQmJigiRiI9M0Q9M0R0aGk9CnMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmlkLnN1YnN0 cmluZygwLDEpP2YucHVzaCh0aGlzLnBhcmVudEVsZW1lbnQucD0KYXJlbnRFbGVtZW50LmlkKTpl LnB1c2godGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuaWQpKX0pO3ZhciBnPTNEZS5s PQplbmd0aCtmLmxlbmd0aDt0aGlzLnByb2dyZXNzU3RlcD0zRDEwMC9nLHRoaXMucHJvZ3Jlc3M9 M0QwO2Zvcih2YXIgaD0zRFtdLGk9Cj0zRGUubGVuZ3RoLTE7aT49M0QwO2ktLSl7dmFyIGo9M0Ru ZXcgZC5JdGVtKHtpZDplW2ldfSk7aC5wdXNoKGopfWZvcih2YXIgaT0KPTNEZi5sZW5ndGgtMTtp Pj0zRDA7aS0tKXt2YXIgaz0zRG5ldyBkLkZvbGRlckFzTW9kZWwoe2lkOmZbaV19KTtoLnB1c2go ayl9PQp0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlcj0zRGcubGVu Z3RoLHRoaXMuY2hhaW5DYWxsRGVsZXQ9CmluZ0l0ZW1zKGgpfX0sc2hvd0xpYkluZm86ZnVuY3Rp b24oKXt2YXIgYT0zREdhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzdFZpZT0Kdy5mb2xkZXJDb250 YWluZXIuYXR0cmlidXRlcy5tZXRhZGF0YS5wYXJlbnRfbGlicmFyeV9pZCxiPTNEbnVsbCxlPTNE dGhpcztuPQp1bGwhPTNEPTNER2FsYXh5LmxpYnJhcmllcy5saWJyYXJ5TGlzdFZpZXc/KGI9M0RH YWxheHkubGlicmFyaWVzLmxpYnJhcnlMaXM9CnRWaWV3LmNvbGxlY3Rpb24uZ2V0KGEpLHRoaXMu c2hvd0xpYkluZm9Nb2RhbChiKSk6KGI9M0RuZXcgZC5MaWJyYXJ5KHtpZDphfT0KKSxiLmZldGNo KHtzdWNjZXNzOmZ1bmN0aW9uKCl7ZS5zaG93TGliSW5mb01vZGFsKGIpfSxlcnJvcjpmdW5jdGlv bihhLGIpe2MuPQplcnJvcigidW5kZWZpbmVkIiE9M0R0eXBlb2YgYi5yZXNwb25zZUpTT04/Yi5y ZXNwb25zZUpTT04uZXJyX21zZzoiQW4gZXJyb3I9CiBvY3VycmVkLiIpfX0pKX0sc2hvd0xpYklu Zm9Nb2RhbDpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMudGVtcGxhdGVMaWJJbmZvST0Kbk1vZGFs KCk7dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3NpbmdfZXZl bnRzOiEwLHRpdGxlPQo6IkxpYnJhcnkgSW5mb3JtYXRpb24iLGJvZHk6Yih7bGlicmFyeTphfSks YnV0dG9uczp7Q2xvc2U6ZnVuY3Rpb24oKXtHYWxheHk9Ci5tb2RhbC5oaWRlKCl9fX0pfSxzaG93 SW1wb3J0TW9kYWw6ZnVuY3Rpb24oYSl7c3dpdGNoKGEuc291cmNlKXtjYXNlImhpc3Rvcj0KeSI6 dGhpcy5hZGRGaWxlc0Zyb21IaXN0b3J5TW9kYWwoKTticmVhaztjYXNlImltcG9ydGRpciI6dGhp cy5pbXBvcnRGaWxlc0ZyPQpvbUdhbGF4eUZvbGRlck1vZGFsKHtzb3VyY2U6ImltcG9ydGRpciJ9 KTticmVhaztjYXNlInBhdGgiOnRoaXMuaW1wb3J0RmlsZXM9CkZyb21QYXRoTW9kYWwoKTticmVh aztjYXNlInVzZXJkaXIiOnRoaXMuaW1wb3J0RmlsZXNGcm9tR2FsYXh5Rm9sZGVyTW9kYWwoez0K c291cmNlOiJ1c2VyZGlyIn0pO2JyZWFrO2RlZmF1bHQ6R2FsYXh5LmxpYnJhcmllcy5saWJyYXJ5 X3JvdXRlci5iYWNrKCksYy5lPQpycm9yKCJJbnZhbGlkIGltcG9ydCBzb3VyY2UuIil9fSxzaG93 UGFnZVNpemVQcm9tcHQ6ZnVuY3Rpb24oKXt2YXIgYT0zRHByb209CnB0KCJIb3cgbWFueSBpdGVt cyBwZXIgcGFnZSBkbyB5b3Ugd2FudCB0byBzZWU/IixHYWxheHkubGlicmFyaWVzLnByZWZlcmVu Yz0KZXMuZ2V0KCJmb2xkZXJfcGFnZV9zaXplIikpO251bGwhPTNEYSYmYT0zRD0zRHBhcnNlSW50 KGEpJiYoR2FsYXh5LmxpYnJhcmllPQpzLnByZWZlcmVuY2VzLnNldCh7Zm9sZGVyX3BhZ2Vfc2l6 ZTpwYXJzZUludChhKX0pLEdhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGk9CnN0Vmlldy5yZW5kZXIo e2lkOnRoaXMub3B0aW9ucy5pZCxzaG93X3BhZ2U6MX0pKX0sdGVtcGxhdGVUb29sQmFyOmZ1bmN0 aW9uKD0KKXtyZXR1cm4gdG1wbF9hcnJheT0zRFtdLHRtcGxfYXJyYXkucHVzaCgnPGRpdiBjbGFz cz0zRCJsaWJyYXJ5X3N0eWxlX2NvbnRhPQppbmVyIj4nKSx0bXBsX2FycmF5LnB1c2goJyA8ZGl2 IGlkPTNEImxpYnJhcnlfdG9vbGJhciI+JyksdG1wbF9hcnJheS5wdXNoKCc9Cjxmb3JtIGNsYXNz PTNEImZvcm0taW5saW5lIiByb2xlPTNEImZvcm0iPicpLHRtcGxfYXJyYXkucHVzaCgiICAgPHNw YW4+PHN0cj0Kb25nPkRBVEEgTElCUkFSSUVTPC9zdHJvbmc+PC9zcGFuPiIpLHRtcGxfYXJyYXku cHVzaCgnICAgICAgICAgIDxzcGFuIGlkPTNEPQoiZm9sZGVyX3BhZ2luYXRvciIgY2xhc3M9M0Qi bGlicmFyeS1wYWdpbmF0b3IiPicpLHRtcGxfYXJyYXkucHVzaCgiICAgICAgICA9CiAgPC9zcGFu PiIpLHRtcGxfYXJyYXkucHVzaCgnPGRpdiBjbGFzcz0zRCJjaGVja2JveCB0b29sYmFyLWl0ZW0g bG9nZ2VkLWRhdD0KYXNldC1tYW5pcHVsYXRpb24iIHN0eWxlPTNEImhlaWdodDogMjBweDsgZGlz cGxheTpub25lOyI+JyksdG1wbF9hcnJheS5wdXNoPQooIjxsYWJlbD4iKSx0bXBsX2FycmF5LnB1 c2goJzxpbnB1dCBpZD0zRCJpbmNsdWRlX2RlbGV0ZWRfZGF0YXNldHNfY2hrIiB0eXA9CmU9M0Qi Y2hlY2tib3giPiBpbmNsdWRlIGRlbGV0ZWQgPC9pbnB1dD4nKSx0bXBsX2FycmF5LnB1c2goIjwv bGFiZWw+IiksdG1wbD0KX2FycmF5LnB1c2goIjwvZGl2PiIpLHRtcGxfYXJyYXkucHVzaCgnICAg PGJ1dHRvbiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7IiBkPQphdGEtdG9nZ2xlPTNEInRvb2x0aXAi IGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiQ3JlYXRlIE5ldyBGb2xkZXIiIGk9CmQ9 M0QidG9vbGJ0bl9jcmVhdGVfZm9sZGVyIiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgcHJpbWFy eS1idXR0b24gYWRkLWxpYj0KcmFyeS1pdGVtcyIgdHlwZT0zRCJidXR0b24iPjxzcGFuIGNsYXNz PTNEImZhIGZhLXBsdXMiPjwvc3Bhbj48c3BhbiBjbGFzcz0KPTNEImZhIGZhLWZvbGRlciI+PC9z cGFuPjwvYnV0dG9uPicpLHRtcGxfYXJyYXkucHVzaCgiPCUgaWYobXV0aXBsZV9hZGRfZGF0PQph c2V0X29wdGlvbnMpIHsgJT4iKSx0bXBsX2FycmF5LnB1c2goJyAgIDxkaXYgY2xhc3M9M0QiYnRu LWdyb3VwIGFkZC1saWJyYXI9CnktaXRlbXMiIHN0eWxlPTNEImRpc3BsYXk6bm9uZTsiPicpLHRt cGxfYXJyYXkucHVzaCgnICAgICA8YnV0dG9uIHRpdGxlPTNEIj0KQWRkIERhdGFzZXRzIHRvIEN1 cnJlbnQgRm9sZGVyIiBpZD0zRCIiIHR5cGU9M0QiYnV0dG9uIiBjbGFzcz0zRCJwcmltYXJ5LWJ1 PQp0dG9uIGRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9M0QiZHJvcGRvd24iPicpLHRtcGxf YXJyYXkucHVzaCgnICAgICA8c3A9CmFuIGNsYXNzPTNEImZhIGZhLXBsdXMiPjwvc3Bhbj48c3Bh biBjbGFzcz0zRCJmYSBmYS1maWxlIj48L3NwYW4+PHNwYW4gY2xhcz0Kcz0zRCJjYXJldCI+PC9z cGFuPicpLHRtcGxfYXJyYXkucHVzaCgiICAgICA8L2J1dHRvbj4iKSx0bXBsX2FycmF5LnB1c2go JyAgPQogICA8dWwgY2xhc3M9M0QiZHJvcGRvd24tbWVudSIgcm9sZT0zRCJtZW51Ij4nKSx0bXBs X2FycmF5LnB1c2goJyAgICAgICAgPGw9Cmk+PGEgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAl Pi9pbXBvcnQvaGlzdG9yeSI+IGZyb20gSGlzdG9yeTwvYT48L2xpPicpLD0KdG1wbF9hcnJheS5w dXNoKCI8JSBpZihHYWxheHkuY29uZmlnLnVzZXJfbGlicmFyeV9pbXBvcnRfZGlyICE9M0Q9M0Qg bnVsbCkgPQp7ICU+IiksdG1wbF9hcnJheS5wdXNoKCcgICAgICAgIDxsaT48YSBocmVmPTNEIiNm b2xkZXJzLzwlPTNEIGlkICU+L2ltcG9ydC89CnVzZXJkaXIiPiBmcm9tIFVzZXIgRGlyZWN0b3J5 PC9hPjwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCI8JSB9ICU+IiksdG1wbF9hcj0KcmF5LnB1c2go IjwlIGlmKEdhbGF4eS5jb25maWcuYWxsb3dfbGlicmFyeV9wYXRoX3Bhc3RlKSB7ICU+IiksdG1w bF9hcnJheS5wPQp1c2goJyAgIDxsaSBjbGFzcz0zRCJkaXZpZGVyIj48L2xpPicpLHRtcGxfYXJy YXkucHVzaCgnICAgPGxpIGNsYXNzPTNEImRyb3A9CmRvd24taGVhZGVyIj5BZG1pbnMgb25seTwv bGk+JyksdG1wbF9hcnJheS5wdXNoKCI8JSBpZihHYWxheHkuY29uZmlnLmxpYnJhcj0KeV9pbXBv cnRfZGlyICE9M0Q9M0QgbnVsbCkgeyAlPiIpLHRtcGxfYXJyYXkucHVzaCgnICAgPGxpPjxhIGhy ZWY9M0QiI2ZvbGRlPQpycy88JT0zRCBpZCAlPi9pbXBvcnQvaW1wb3J0ZGlyIj5mcm9tIEltcG9y dCBEaXJlY3Rvcnk8L2E+PC9saT4nKSx0bXBsX2FycmE9CnkucHVzaCgiPCUgfSAlPiIpLHRtcGxf YXJyYXkucHVzaCgiPCUgaWYoR2FsYXh5LmNvbmZpZy5hbGxvd19saWJyYXJ5X3BhdGhfcD0KYXN0 ZSkgeyAlPiIpLHRtcGxfYXJyYXkucHVzaCgnICAgICAgICA8bGk+PGEgaHJlZj0zRCIjZm9sZGVy cy88JT0zRCBpZCAlPi9pPQptcG9ydC9wYXRoIj5mcm9tIFBhdGg8L2E+PC9saT4nKSx0bXBsX2Fy cmF5LnB1c2goIjwlIH0gJT4iKSx0bXBsX2FycmF5LnB1c2g9CigiPCUgfSAlPiIpLHRtcGxfYXJy YXkucHVzaCgiICAgICA8L3VsPiIpLHRtcGxfYXJyYXkucHVzaCgiICAgPC9kaXY+IiksdG1wbD0K X2FycmF5LnB1c2goIjwlIH0gZWxzZSB7ICU+IiksdG1wbF9hcnJheS5wdXNoKCcgPGEgIGRhdGEt cGxhY2VtZW50PTNEInRvcCIgPQp0aXRsZT0zRCJBZGQgRGF0YXNldHMgdG8gQ3VycmVudCBGb2xk ZXIiIHN0eWxlPTNEImRpc3BsYXk6bm9uZTsiIGNsYXNzPTNEImI9CnRuIGJ0bi1kZWZhdWx0IGFk ZC1saWJyYXJ5LWl0ZW1zIiBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L2ltcG9ydC9oaXN0 bz0KcnkiIHJvbGU9M0QiYnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1wbHVzIj48L3NwYW4+ PHNwYW4gY2xhc3M9M0QiZmEgZmEtPQpmaWxlIj48L3NwYW4+PC9zcGFuPjwvYT4nKSx0bXBsX2Fy cmF5LnB1c2goIjwlIH0gJT4iKSx0bXBsX2FycmF5LnB1c2goJyAgPGI9CnV0dG9uIGRhdGEtdG9n Z2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiSW1wb3J0IHNl bGVjdD0KZWQgZGF0YXNldHMgaW50byBoaXN0b3J5IiBpZD0zRCJ0b29sYnRuX2J1bGtfaW1wb3J0 IiBjbGFzcz0zRCJwcmltYXJ5LWJ1dHRvPQpuIGRhdGFzZXQtbWFuaXB1bGF0aW9uIiBzdHlsZT0z RCJtYXJnaW4tbGVmdDogMC41ZW07IGRpc3BsYXk6bm9uZTsiIHR5cGU9M0Q9CiJidXR0b24iPjxz cGFuIGNsYXNzPTNEImZhIGZhLWJvb2siPjwvc3Bhbj4gdG8gSGlzdG9yeTwvYnV0dG9uPicpLHRt cGxfYXJyYT0KeS5wdXNoKCcgICA8ZGl2IGlkPTNEInRvb2xidG5fZGwiIGNsYXNzPTNEImJ0bi1n cm91cCBkYXRhc2V0LW1hbmlwdWxhdGlvbiIgPQpzdHlsZT0zRCJtYXJnaW4tbGVmdDogMC41ZW07 IGRpc3BsYXk6bm9uZTsgIj4nKSx0bXBsX2FycmF5LnB1c2goJyAgICAgPGJ1dHQ9Cm9uIHRpdGxl PTNEIkRvd25sb2FkIHNlbGVjdGVkIGRhdGFzZXRzIGFzIGFyY2hpdmUiIGlkPTNEImRyb3BfdG9n Z2xlIiB0eXBlPQo9M0QiYnV0dG9uIiBjbGFzcz0zRCJwcmltYXJ5LWJ1dHRvbiBkcm9wZG93bi10 b2dnbGUiIGRhdGEtdG9nZ2xlPTNEImRyb3Bkb3c9Cm4iPicpLHRtcGxfYXJyYXkucHVzaCgnICAg ICA8c3BhbiBjbGFzcz0zRCJmYSBmYS1kb3dubG9hZCI+PC9zcGFuPiBEb3dubG9hZD0KIDxzcGFu IGNsYXNzPTNEImNhcmV0Ij48L3NwYW4+JyksdG1wbF9hcnJheS5wdXNoKCIgICAgIDwvYnV0dG9u PiIpLHRtcGxfYXJyPQpheS5wdXNoKCcgICAgIDx1bCBjbGFzcz0zRCJkcm9wZG93bi1tZW51IiBy b2xlPTNEIm1lbnUiPicpLHRtcGxfYXJyYXkucHVzaCg9CicgICAgICAgIDxsaT48YSBocmVmPTNE IiMvZm9sZGVycy88JT0zRCBpZCAlPi9kb3dubG9hZC90Z3oiPi50YXIuZ3o8L2E+PC9saT0KPicp LHRtcGxfYXJyYXkucHVzaCgnICAgICAgICA8bGk+PGEgaHJlZj0zRCIjL2ZvbGRlcnMvPCU9M0Qg aWQgJT4vZG93bmxvYWQvPQp0YnoiPi50YXIuYno8L2E+PC9saT4nKSx0bXBsX2FycmF5LnB1c2go JyAgICAgICAgPGxpPjxhIGhyZWY9M0QiIy9mb2xkZXJzLzw9CiU9M0QgaWQgJT4vZG93bmxvYWQv emlwIj4uemlwPC9hPjwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCIgICAgIDwvdWw+IiksdG1wbD0K X2FycmF5LnB1c2goIiAgIDwvZGl2PiIpLHRtcGxfYXJyYXkucHVzaCgnICAgPGJ1dHRvbiBkYXRh LXRvZ2dsZT0zRCJ0b29sdGlwPQoiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiTWFy ayBzZWxlY3RlZCBkYXRhc2V0cyBkZWxldGVkIiBpZD0zRCJ0b289CmxidG5fYnVsa19kZWxldGUi IGNsYXNzPTNEInByaW1hcnktYnV0dG9uIGxvZ2dlZC1kYXRhc2V0LW1hbmlwdWxhdGlvbiIgc3R5 bD0KZT0zRCJtYXJnaW4tbGVmdDogMC41ZW07IGRpc3BsYXk6bm9uZTsgIiB0eXBlPTNEImJ1dHRv biI+PHNwYW4gY2xhc3M9M0QiZmEgPQpmYS10aW1lcyI+PC9zcGFuPiBEZWxldGU8L2J1dHRvbj4n KSx0bXBsX2FycmF5LnB1c2goJyAgIDxidXR0b24gZGF0YS1pZD0zRCI9CjwlLSBpZCAlPiIgZGF0 YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0zRCJTaG93 IGxpYj0KcmFyeSBpbmZvcm1hdGlvbiIgaWQ9M0QidG9vbGJ0bl9zaG93X2xpYmluZm8iIGNsYXNz PTNEInByaW1hcnktYnV0dG9uIiBzdHlsPQplPTNEIm1hcmdpbi1sZWZ0OiAwLjVlbTsiIHR5cGU9 M0QiYnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1pbmZvLWNpcmNsZSI9Cj48L3NwYW4+IExp YnJhcnkgSW5mbzwvYnV0dG9uPicpLHRtcGxfYXJyYXkucHVzaCgnICAgPHNwYW4gY2xhc3M9M0Qi aGVscC1idT0KdHRvbiIgZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0Qi dG9wIiB0aXRsZT0zRCJWaXNpdCBMaWJyYXJpPQplcyBXaWtpIj48YSBocmVmPTNEImh0dHBzOi8v d2lraS5nYWxheHlwcm9qZWN0Lm9yZy9EYXRhTGlicmFyaWVzL3NjcmVlbi9Gb2w9CmRlckNvbnRl bnRzIiB0YXJnZXQ9M0QiX2JsYW5rIj48YnV0dG9uIGNsYXNzPTNEInByaW1hcnktYnV0dG9uIiB0 eXBlPTNEImJ1dD0KdG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1xdWVzdGlvbi1jaXJjbGUiPjwv c3Bhbj4gSGVscDwvYnV0dG9uPjwvYT48L3NwYW4+PQonKSx0bXBsX2FycmF5LnB1c2goIiA8L2Rp dj4iKSx0bXBsX2FycmF5LnB1c2goIjwvZm9ybT4iKSx0bXBsX2FycmF5LnB1c2goJyA9CjxkaXYg aWQ9M0QiZm9sZGVyX2l0ZW1zX2VsZW1lbnQiPicpLHRtcGxfYXJyYXkucHVzaCgiIDwvZGl2PiIp LHRtcGxfYXJyYXkucD0KdXNoKCI8L2Rpdj4iKSxfLnRlbXBsYXRlKHRtcGxfYXJyYXkuam9pbigi IikpfSx0ZW1wbGF0ZUxpYkluZm9Jbk1vZGFsOmZ1bmN0PQppb24oKXtyZXR1cm4gdG1wbF9hcnJh eT0zRFtdLHRtcGxfYXJyYXkucHVzaCgnPGRpdiBpZD0zRCJsaWZfaW5mb19tb2RhbCI+Jyk9Cix0 bXBsX2FycmF5LnB1c2goIjxoMj5MaWJyYXJ5IG5hbWU6PC9oMj4iKSx0bXBsX2FycmF5LnB1c2go JzxwPjwlLSBsaWJyYXJ5Lj0KZ2V0KCJuYW1lIikgJT48L3A+JyksdG1wbF9hcnJheS5wdXNoKCI8 aDM+TGlicmFyeSBkZXNjcmlwdGlvbjo8L2gzPiIpLHRtcGxfPQphcnJheS5wdXNoKCc8cD48JS0g bGlicmFyeS5nZXQoImRlc2NyaXB0aW9uIikgJT48L3A+JyksdG1wbF9hcnJheS5wdXNoKCI8aDM9 Cj5MaWJyYXJ5IHN5bm9wc2lzOjwvaDM+IiksdG1wbF9hcnJheS5wdXNoKCc8cD48JS0gbGlicmFy eS5nZXQoInN5bm9wc2lzIikgJT0KPjwvcD4nKSx0bXBsX2FycmF5LnB1c2goJzxwIGRhdGEtdG9n Z2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgPQp0aXRsZT0zRCI8JS0gbGli cmFyeS5nZXQoImNyZWF0ZV90aW1lIikgJT4iPmNyZWF0ZWQgPCUtIGxpYnJhcnkuZ2V0KCJjcmVh dGU9Cl90aW1lX3ByZXR0eSIpICU+PC9wPicpLHRtcGxfYXJyYXkucHVzaCgiPC9kaXY+IiksXy50 ZW1wbGF0ZSh0bXBsX2FycmF5LmpvaT0KbigiIikpfSx0ZW1wbGF0ZU5ld0ZvbGRlckluTW9kYWw6 ZnVuY3Rpb24oKXtyZXR1cm4gdG1wbF9hcnJheT0zRFtdLHRtcGxfYXJyPQpheS5wdXNoKCc8ZGl2 IGlkPTNEIm5ld19mb2xkZXJfbW9kYWwiPicpLHRtcGxfYXJyYXkucHVzaCgiPGZvcm0+IiksdG1w bF9hcnI9CmF5LnB1c2goJzxpbnB1dCB0eXBlPTNEInRleHQiIG5hbWU9M0QiTmFtZSIgdmFsdWU9 M0QiIiBwbGFjZWhvbGRlcj0zRCJOYW1lIj0KPicpLHRtcGxfYXJyYXkucHVzaCgnPGlucHV0IHR5 cGU9M0QidGV4dCIgbmFtZT0zRCJEZXNjcmlwdGlvbiIgdmFsdWU9M0QiIiBwPQpsYWNlaG9sZGVy PTNEIkRlc2NyaXB0aW9uIj4nKSx0bXBsX2FycmF5LnB1c2goIjwvZm9ybT4iKSx0bXBsX2FycmF5 LnB1c2goIjw9Ci9kaXY+IiksXy50ZW1wbGF0ZSh0bXBsX2FycmF5LmpvaW4oIiIpKX0sdGVtcGxh dGVCdWxrSW1wb3J0SW5Nb2RhbDpmdW5jdGlvbj0KKCl7dmFyIGE9M0RbXTtyZXR1cm4gYS5wdXNo KCc8c3BhbiBpZD0zRCJoaXN0b3J5X21vZGFsX2NvbWJvX2J1bGsiIHN0eWxlPTNEPQoid2lkdGg6 OTAlOyBtYXJnaW4tbGVmdDogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTsgIj4nKSxhLnB1c2goIlNl bGVjdCBoaXN0b3I9Cnk6ICIpLGEucHVzaCgnPHNlbGVjdCBpZD0zRCJkYXRhc2V0X2ltcG9ydF9i dWxrIiBuYW1lPTNEImRhdGFzZXRfaW1wb3J0X2J1bD0KayIgc3R5bGU9M0Qid2lkdGg6NTAlOyBt YXJnaW4tYm90dG9tOiAxZW07ICI+ICcpLGEucHVzaCgiICAgPCUgXy5lYWNoKGhpc3RvPQpyaWVz LCBmdW5jdGlvbihoaXN0b3J5KSB7ICU+IiksYS5wdXNoKCcgICAgICAgPG9wdGlvbiB2YWx1ZT0z RCI8JT0zRCBfLmVzY2E9CnBlKGhpc3RvcnkuZ2V0KCJpZCIpKSAlPiI+PCU9M0QgXy5lc2NhcGUo aGlzdG9yeS5nZXQoIm5hbWUiKSkgJT48L29wdGlvbj4nKT0KLGEucHVzaCgiICAgPCUgfSk7ICU+ IiksYS5wdXNoKCI8L3NlbGVjdD4iKSxhLnB1c2goIjwvc3Bhbj4iKSxfLnRlbXBsYXRlKGEuPQpq b2luKCIiKSl9LHRlbXBsYXRlSW1wb3J0SW50b0hpc3RvcnlQcm9ncmVzc0JhcjpmdW5jdGlvbigp e3ZhciBhPTNEW107cmV0dXI9Cm4gYS5wdXNoKCc8ZGl2IGNsYXNzPTNEImltcG9ydF90ZXh0Ij4n KSxhLnB1c2goIkltcG9ydGluZyBzZWxlY3RlZCBkYXRhc2V0cz0KIHRvIGhpc3RvcnkgPGI+PCU9 M0QgXy5lc2NhcGUoaGlzdG9yeV9uYW1lKSAlPjwvYj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucHVz PQpoKCc8ZGl2IGNsYXNzPTNEInByb2dyZXNzIj4nKSxhLnB1c2goJyAgIDxkaXYgY2xhc3M9M0Qi cHJvZ3Jlc3MtYmFyIHByb2dyZXM9CnMtYmFyLWltcG9ydCIgcm9sZT0zRCJwcm9ncmVzc2JhciIg YXJpYS12YWx1ZW5vdz0zRCIwIiBhcmlhLXZhbHVlbWluPTNEIjAiID0KYXJpYS12YWx1ZW1heD0z RCIxMDAiIHN0eWxlPTNEIndpZHRoOiAwMCU7Ij4nKSxhLnB1c2goJyAgICAgICA8c3BhbiBjbGFz cz0KPTNEImNvbXBsZXRpb25fc3BhbiI+MCUgQ29tcGxldGU8L3NwYW4+JyksYS5wdXNoKCIgICA8 L2Rpdj4iKSxhLnB1c2goIjwvZGl2PQo+IiksYS5wdXNoKCIiKSxfLnRlbXBsYXRlKGEuam9pbigi IikpfSx0ZW1wbGF0ZUFkZGluZ0RhdGFzZXRzUHJvZ3Jlc3NCYXI6ZnU9Cm5jdGlvbigpe3ZhciBh PTNEW107cmV0dXJuIGEucHVzaCgnPGRpdiBjbGFzcz0zRCJpbXBvcnRfdGV4dCI+JyksYS5wdXNo KCJBZD0KZGluZyBzZWxlY3RlZCBkYXRhc2V0cyB0byBsaWJyYXJ5IGZvbGRlciA8Yj48JT0zRCBf LmVzY2FwZShmb2xkZXJfbmFtZSkgJT48PQovYj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucHVzaCgn PGRpdiBjbGFzcz0zRCJwcm9ncmVzcyI+JyksYS5wdXNoKCcgICA8ZGl2IGM9Cmxhc3M9M0QicHJv Z3Jlc3MtYmFyIHByb2dyZXNzLWJhci1pbXBvcnQiIHJvbGU9M0QicHJvZ3Jlc3NiYXIiIGFyaWEt dmFsdWVubz0Kdz0zRCIwIiBhcmlhLXZhbHVlbWluPTNEIjAiIGFyaWEtdmFsdWVtYXg9M0QiMTAw IiBzdHlsZT0zRCJ3aWR0aDogMDAlOyI+JyksPQphLnB1c2goJyAgICAgICA8c3BhbiBjbGFzcz0z RCJjb21wbGV0aW9uX3NwYW4iPjAlIENvbXBsZXRlPC9zcGFuPicpLGEucHVzaCg9CiIgICA8L2Rp dj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucHVzaCgiIiksXy50ZW1wbGF0ZShhLmpvaW4oIiIpKX0s dGVtcGxhdGVEZT0KbGV0aW5nRGF0YXNldHNQcm9ncmVzc0JhcjpmdW5jdGlvbigpe3ZhciBhPTNE W107cmV0dXJuIGEucHVzaCgnPGRpdiBjbGFzcz0KPTNEImltcG9ydF90ZXh0Ij4nKSxhLnB1c2go IjwvZGl2PiIpLGEucHVzaCgnPGRpdiBjbGFzcz0zRCJwcm9ncmVzcyI+JyksYS5wPQp1c2goJyAg IDxkaXYgY2xhc3M9M0QicHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1pbXBvcnQiIHJvbGU9M0Qi cHJvZ3Jlc3NiYXI9CiIgYXJpYS12YWx1ZW5vdz0zRCIwIiBhcmlhLXZhbHVlbWluPTNEIjAiIGFy aWEtdmFsdWVtYXg9M0QiMTAwIiBzdHlsZT0zRCJ3aT0KZHRoOiAwMCU7Ij4nKSxhLnB1c2goJyAg ICAgICA8c3BhbiBjbGFzcz0zRCJjb21wbGV0aW9uX3NwYW4iPjAlIENvbXBsZXRlPC9zPQpwYW4+ JyksYS5wdXNoKCIgICA8L2Rpdj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucHVzaCgiIiksXy50ZW1w bGF0ZShhLmpvaW4oIiI9CikpfSx0ZW1wbGF0ZUJyb3dzZXJNb2RhbDpmdW5jdGlvbigpe3ZhciBh PTNEW107cmV0dXJuIGEucHVzaCgnPGRpdiBpZD0zRCJmaT0KbGVfYnJvd3Nlcl9tb2RhbCI+Jyks YS5wdXNoKCc8ZGl2IGNsYXNzPTNEImFsZXJ0IGFsZXJ0LWluZm8ganN0cmVlLWZpbGVzLW1lPQpz c2FnZSI+QWxsIGZpbGVzIHlvdSBzZWxlY3Qgd2lsbCBiZSBpbXBvcnRlZCBpbnRvIHRoZSBjdXJy ZW50IGZvbGRlci48L2Rpdj49CicpLGEucHVzaCgnPGRpdiBjbGFzcz0zRCJhbGVydCBhbGVydC1p bmZvIGpzdHJlZS1mb2xkZXJzLW1lc3NhZ2UiIHN0eWxlPTNEIj0KZGlzcGxheTpub25lOyI+QWxs IGZpbGVzIHdpdGhpbiB0aGUgc2VsZWN0ZWQgZm9sZGVycyBhbmQgdGhlaXIgc3ViZm9sZGVycyB3 PQppbGwgYmUgaW1wb3J0ZWQgaW50byB0aGUgY3VycmVudCBmb2xkZXIuPC9kaXY+JyksYS5wdXNo KCc8ZGl2IHN0eWxlPTNEIm1hcmc9CmluLWJvdHRvbToxZW07Ij4nKSxhLnB1c2goJzxsYWJlbCBj bGFzcz0zRCJyYWRpby1pbmxpbmUiPicpLGEucHVzaCgnICA8aW5wdT0KdCB0aXRsZT0zRCJTd2l0 Y2ggdG8gc2VsZWN0aW5nIGZpbGVzIiB0eXBlPTNEInJhZGlvIiBuYW1lPTNEImpzdHJlZS1yYWRp byIgPQp2YWx1ZT0zRCJqc3RyZWUtZGlzYWJsZS1mb2xkZXJzIiBjaGVja2VkPTNEImNoZWNrZWQi PiBGaWxlcycpLGEucHVzaCgiPC9sYWI9CmVsPiIpLGEucHVzaCgnPGxhYmVsIGNsYXNzPTNEInJh ZGlvLWlubGluZSI+JyksYS5wdXNoKCcgIDxpbnB1dCB0aXRsZT0zRCJTdz0KaXRjaCB0byBzZWxl Y3RpbmcgZm9sZGVycyIgdHlwZT0zRCJyYWRpbyIgbmFtZT0zRCJqc3RyZWUtcmFkaW8iIHZhbHVl PTNEImpzPQp0cmVlLWRpc2FibGUtZmlsZXMiPiBGb2xkZXJzJyksYS5wdXNoKCI8L2xhYmVsPiIp LGEucHVzaCgiPC9kaXY+IiksYS5wdXNoKCc9CjxkaXYgc3R5bGU9M0QibWFyZ2luLWJvdHRvbTox ZW07Ij4nKSxhLnB1c2goJzxsYWJlbCBjbGFzcz0zRCJjaGVja2JveC1pbmxpbj0KZSBqc3RyZWUt cHJlc2VydmUtc3RydWN0dXJlIiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7Ij4nKSxhLnB1c2goJyAg IDxpbnB1dCBjPQpsYXNzPTNEInByZXNlcnZlLWNoZWNrYm94IiB0eXBlPTNEImNoZWNrYm94IiB2 YWx1ZT0zRCJwcmVzZXJ2ZV9kaXJlY3Rvcnlfc3Q9CnJ1Y3R1cmUiPicpLGEucHVzaCgiUHJlc2Vy dmUgZGlyZWN0b3J5IHN0cnVjdHVyZSIpLGEucHVzaCgiIDwvbGFiZWw+IiksYS5wdT0Kc2goJzxs YWJlbCBjbGFzcz0zRCJjaGVja2JveC1pbmxpbmUganN0cmVlLWxpbmstZmlsZXMiIHN0eWxlPTNE ImRpc3BsYXk6bm9uPQplOyI+JyksYS5wdXNoKCcgICA8aW5wdXQgY2xhc3M9M0QibGluay1jaGVj a2JveCIgdHlwZT0zRCJjaGVja2JveCIgdmFsdWU9M0Q9CiJsaW5rX2ZpbGVzIj4nKSxhLnB1c2go IkxpbmsgZmlsZXMgaW5zdGVhZCBvZiBjb3B5aW5nIiksYS5wdXNoKCIgPC9sYWJlbD4iKT0KLGEu cHVzaCgiPC9kaXY+IiksYS5wdXNoKCc8ZGl2IGlkPTNEImpzdHJlZV9icm93c2VyIj4nKSxhLnB1 c2goIjwvZGl2PiIpLGEuPQpwdXNoKCI8aHIgLz4iKSxhLnB1c2goIjxwPllvdSBjYW4gc2V0IGV4 dGVuc2lvbiB0eXBlIGFuZCBnZW5vbWUgZm9yIGFsbCBpbXA9Cm9ydGVkIGRhdGFzZXRzIGF0IG9u Y2U6PC9wPiIpLGEucHVzaCgiPGRpdj4iKSxhLnB1c2goJ1R5cGU6IDxzcGFuIGlkPTNEImxpYj0K cmFyeV9leHRlbnNpb25fc2VsZWN0IiBjbGFzcz0zRCJsaWJyYXJ5LWV4dGVuc2lvbi1zZWxlY3Qi IC8+JyksYS5wdXNoKCcgIEdlPQpub21lOiA8c3BhbiBpZD0zRCJsaWJyYXJ5X2dlbm9tZV9zZWxl Y3QiIGNsYXNzPTNEImxpYnJhcnktZ2Vub21lLXNlbGVjdCIgLz49CicpLGEucHVzaCgiPC9kaXY+ IiksYS5wdXNoKCI8L2Rpdj4iKSxfLnRlbXBsYXRlKGEuam9pbigiIikpfSx0ZW1wbGF0ZUltcG9y dD0KUGF0aE1vZGFsOmZ1bmN0aW9uKCl7dmFyIGE9M0RbXTtyZXR1cm4gYS5wdXNoKCc8ZGl2IGlk PTNEImZpbGVfYnJvd3Nlcl9tb2RhPQpsIj4nKSxhLnB1c2goJzxkaXYgY2xhc3M9M0QiYWxlcnQg YWxlcnQtaW5mbyBqc3RyZWUtZm9sZGVycy1tZXNzYWdlIj5BbGwgZmk9CmxlcyB3aXRoaW4gdGhl IGdpdmVuIGZvbGRlcnMgYW5kIHRoZWlyIHN1YmZvbGRlcnMgd2lsbCBiZSBpbXBvcnRlZCBpbnRv IHRoZT0KIGN1cnJlbnQgZm9sZGVyLjwvZGl2PicpLGEucHVzaCgnPGRpdiBzdHlsZT0zRCJtYXJn aW4tYm90dG9tOiAwLjVlbTsiPicpLGEuPQpwdXNoKCc8bGFiZWwgY2xhc3M9M0QiY2hlY2tib3gt aW5saW5lIGpzdHJlZS1wcmVzZXJ2ZS1zdHJ1Y3R1cmUiPicpLGEucHVzaCg9CicgICA8aW5wdXQg Y2xhc3M9M0QicHJlc2VydmUtY2hlY2tib3giIHR5cGU9M0QiY2hlY2tib3giIHZhbHVlPTNEInBy ZXNlcnZlXz0KZGlyZWN0b3J5X3N0cnVjdHVyZSI+JyksYS5wdXNoKCJQcmVzZXJ2ZSBkaXJlY3Rv cnkgc3RydWN0dXJlIiksYS5wdXNoKCIgPC9sPQphYmVsPiIpLGEucHVzaCgnPGxhYmVsIGNsYXNz PTNEImNoZWNrYm94LWlubGluZSBqc3RyZWUtbGluay1maWxlcyI+JyksYS5wdXM9CmgoJyAgIDxp bnB1dCBjbGFzcz0zRCJsaW5rLWNoZWNrYm94IiB0eXBlPTNEImNoZWNrYm94IiB2YWx1ZT0zRCJs aW5rX2ZpbGVzIj0KPicpLGEucHVzaCgiTGluayBmaWxlcyBpbnN0ZWFkIG9mIGNvcHlpbmciKSxh LnB1c2goIiA8L2xhYmVsPiIpLGEucHVzaCgiPC9kPQppdj4iKSxhLnB1c2goJzx0ZXh0YXJlYSBp ZD0zRCJpbXBvcnRfcGF0aHMiIGNsYXNzPTNEImZvcm0tY29udHJvbCIgcm93cz0zRCI9CjUiIHBs YWNlaG9sZGVyPTNEIkFic29sdXRlIHBhdGhzIChvciBwYXRocyByZWxhdGl2ZSB0byBHYWxheHkg cm9vdCkgc2VwYXJhdD0KZWQgYnkgbmV3bGluZSI+PC90ZXh0YXJlYT4nKSxhLnB1c2goIjxociAv PiIpLGEucHVzaCgiPHA+WW91IGNhbiBzZXQgZXh0ZW5zPQppb24gdHlwZSBhbmQgZ2Vub21lIGZv ciBhbGwgaW1wb3J0ZWQgZGF0YXNldHMgYXQgb25jZTo8L3A+IiksYS5wdXNoKCI8ZGl2PiI9Ciks YS5wdXNoKCdUeXBlOiA8c3BhbiBpZD0zRCJsaWJyYXJ5X2V4dGVuc2lvbl9zZWxlY3QiIGNsYXNz PTNEImxpYnJhcnktZXh0ZT0KbnNpb24tc2VsZWN0IiAvPicpLGEucHVzaCgnICBHZW5vbWU6IDxz cGFuIGlkPTNEImxpYnJhcnlfZ2Vub21lX3NlbGVjdCIgY2xhPQpzcz0zRCJsaWJyYXJ5LWdlbm9t ZS1zZWxlY3QiIC8+JyksYS5wdXNoKCI8L2Rpdj4iKSxhLnB1c2goIjwvZGl2PiIpLF8udGVtcGw9 CmF0ZShhLmpvaW4oIiIpKX0sdGVtcGxhdGVBZGRGaWxlc0Zyb21IaXN0b3J5OmZ1bmN0aW9uKCl7 dmFyIGE9M0RbXTtyZXR1cm4gYT0KLnB1c2goJzxkaXYgaWQ9M0QiYWRkX2ZpbGVzX21vZGFsIj4n KSxhLnB1c2goJzxkaXYgaWQ9M0QiaGlzdG9yeV9tb2RhbF9jb21iPQpvX2J1bGsiPicpLGEucHVz aCgiU2VsZWN0IGhpc3Rvcnk6ICAiKSxhLnB1c2goJzxzZWxlY3QgaWQ9M0QiZGF0YXNldF9hZGRf YnU9CmxrIiBuYW1lPTNEImRhdGFzZXRfYWRkX2J1bGsiIHN0eWxlPTNEIndpZHRoOjY2JTsgIj4g JyksYS5wdXNoKCIgICA8JSBfLmVhYz0KaChoaXN0b3JpZXMsIGZ1bmN0aW9uKGhpc3RvcnkpIHsg JT4iKSxhLnB1c2goJyAgICAgICA8b3B0aW9uIHZhbHVlPTNEIjwlPTNEPQogXy5lc2NhcGUoaGlz dG9yeS5nZXQoImlkIikpICU+Ij48JT0zRCBfLmVzY2FwZShoaXN0b3J5LmdldCgibmFtZSIpKSAl Pjwvb3A9CnRpb24+JyksCiBhLnB1c2goIiAgIDwlIH0pOyAlPiIpLGEucHVzaCgiPC9zZWxlY3Q+ IiksYS5wdXNoKCI8L2Rpdj4iKSxhLnB1c2goIjxici8+Ij0KKSxhLnB1c2goJzxkaXYgaWQ9M0Qi c2VsZWN0ZWRfaGlzdG9yeV9jb250ZW50Ij4nKSxhLnB1c2goIjwvZGl2PiIpLGEucHVzaCgiPQo8 L2Rpdj4iKSxfLnRlbXBsYXRlKGEuam9pbigiIikpfSx0ZW1wbGF0ZUhpc3RvcnlDb250ZW50czpm dW5jdGlvbigpe3ZhciBhPQo9M0RbXTtyZXR1cm4gYS5wdXNoKCI8c3Ryb25nPkNob29zZSB0aGUg ZGF0YXNldHMgdG8gaW1wb3J0Ojwvc3Ryb25nPiIpLGEucHU9CnNoKCI8dWw+IiksYS5wdXNoKCIg PCUgXy5lYWNoKGhpc3RvcnlfY29udGVudHMsIGZ1bmN0aW9uKGhpc3RvcnlfaXRlbSkgeyAlPj0K IiksYS5wdXNoKCcgPGxpIGRhdGEtaWQ9M0QiPCU9M0QgXy5lc2NhcGUoaGlzdG9yeV9pdGVtLmdl dCgiaWQiKSkgJT4iPicpLGEuPQpwdXNoKCcgICA8aW5wdXQgc3R5bGU9M0QibWFyZ2luOiAwOyIg dHlwZT0zRCJjaGVja2JveCI+PCU9M0QgXy5lc2NhcGUoaGlzdG89CnJ5X2l0ZW0uZ2V0KCJoaWQi KSkgJT46IDwlPTNEIF8uZXNjYXBlKGhpc3RvcnlfaXRlbS5nZXQoIm5hbWUiKSkgJT4nKSxhLnB1 cz0KaCgiIDwvbGk+IiksYS5wdXNoKCIgPCUgfSk7ICU+IiksYS5wdXNoKCI8L3VsPiIpLF8udGVt cGxhdGUoYS5qb2luKCIiKSl9LHRlPQptcGxhdGVQYWdpbmF0b3I6ZnVuY3Rpb24oKXtyZXR1cm4g dG1wbF9hcnJheT0zRFtdLHRtcGxfYXJyYXkucHVzaCgnICAgPHVsIGM9Cmxhc3M9M0QicGFnaW5h dGlvbiBwYWdpbmF0aW9uLXNtIj4nKSx0bXBsX2FycmF5LnB1c2goIiAgICAgICA8JSBpZiAoICgg c2hvdz0KX3BhZ2UgLSAxICkgPiAwICkgeyAlPiIpLHRtcGxfYXJyYXkucHVzaCgiICAgICAgICAg ICA8JSBpZiAoICggc2hvd19wYWdlIC0gPQoxICkgPiBwYWdlX2NvdW50ICkgeyAlPiIpLHRtcGxf YXJyYXkucHVzaCgnICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9M0QiI2Y9Cm9sZGVycy88JT0z RCBpZCAlPi9wYWdlLzEiPjxzcGFuIGNsYXNzPTNEImZhIGZhLWFuZ2xlLWRvdWJsZS1sZWZ0Ij48 L3NwYW4+PD0KL2E+PC9saT4nKSx0bXBsX2FycmF5LnB1c2goJyAgICAgICAgICAgICAgIDxsaSBj bGFzcz0zRCJkaXNhYmxlZCI+PGEgaHJlZj0KPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2Uv PCUgcHJpbnQoIHNob3dfcGFnZSApICU+Ij48JSBwcmludCggc2hvd19wYWdlPQogLSAxICkgJT48 L2E+PC9saT4nKSx0bXBsX2FycmF5LnB1c2goIiAgICAgICAgICAgPCUgfSBlbHNlIHsgJT4iKSx0 bXBsX2FycmE9CnkucHVzaCgnICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9M0QiI2ZvbGRlcnMv PCU9M0QgaWQgJT4vcGFnZS8xIj48c3BhbiBjbD0KYXNzPTNEImZhIGZhLWFuZ2xlLWRvdWJsZS1s ZWZ0Ij48L3NwYW4+PC9hPjwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCcgICAgICAgPQogICAgICAg IDxsaT48YSBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2UvPCUgcHJpbnQoIHNob3df cGFnZSAtIDEgKSA9CiU+Ij48JSBwcmludCggc2hvd19wYWdlIC0gMSApICU+PC9hPjwvbGk+Jyks dG1wbF9hcnJheS5wdXNoKCIgICAgICAgICAgIDwlID0KfSAlPiIpLHRtcGxfYXJyYXkucHVzaCgi ICAgICAgIDwlIH0gZWxzZSB7ICU+IiksdG1wbF9hcnJheS5wdXNoKCcgICAgICAgICAgPQogPGxp IGNsYXNzPTNEImRpc2FibGVkIj48YSBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2Uv MSI+PHNwYW4gY2xhc3M9Cj0zRCJmYSBmYS1hbmdsZS1kb3VibGUtbGVmdCI+PC9zcGFuPjwvYT48 L2xpPicpLHRtcGxfYXJyYXkucHVzaCgnICAgICAgICAgID0KIDxsaSBjbGFzcz0zRCJkaXNhYmxl ZCI+PGEgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPi9wYWdlLzwlIHByaW50KCBzaG93PQpf cGFnZSApICU+Ij48JSBwcmludCggc2hvd19wYWdlIC0gMSApICU+PC9hPjwvbGk+JyksdG1wbF9h cnJheS5wdXNoKCIgICAgICA9CiA8JSB9ICU+IiksdG1wbF9hcnJheS5wdXNoKCcgICAgICAgPGxp IGNsYXNzPTNEImFjdGl2ZSI+JyksdG1wbF9hcnJheS5wdXNoKD0KJyAgICAgICA8YSBocmVmPTNE IiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2UvPCUgcHJpbnQoIHNob3dfcGFnZSApICU+Ij48JSBw PQpyaW50KCBzaG93X3BhZ2UgKSAlPjwvYT4nKSx0bXBsX2FycmF5LnB1c2goIiAgICAgICA8L2xp PiIpLHRtcGxfYXJyYXkucHVzaCg9CiIgICAgICAgPCUgaWYgKCAoIHNob3dfcGFnZSApIDwgcGFn ZV9jb3VudCApIHsgJT4iKSx0bXBsX2FycmF5LnB1c2goJyAgICAgID0KICAgICA8bGk+PGEgaHJl Zj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPi9wYWdlLzwlIHByaW50KCBzaG93X3BhZ2UgKyAxICkg JT4iPQo+PCUgcHJpbnQoIHNob3dfcGFnZSArIDEgKSAlPjwvYT48L2xpPicpLHRtcGxfYXJyYXku cHVzaCgnICAgICAgICAgICA8bGk+PGE9CiBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L3Bh Z2UvPCUgcHJpbnQoIHBhZ2VfY291bnQgKSAlPiI+PHNwYW4gY2xhc3M9Cj0zRCJmYSBmYS1hbmds ZS1kb3VibGUtcmlnaHQiPjwvc3Bhbj48L2E+PC9saT4nKSx0bXBsX2FycmF5LnB1c2goIiAgICAg ICA8JT0KIH0gZWxzZSB7ICU+IiksdG1wbF9hcnJheS5wdXNoKCcgICAgICAgICAgIDxsaSBjbGFz cz0zRCJkaXNhYmxlZCI+PGEgaHJlZj0KPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2UvPCUg cHJpbnQoIHNob3dfcGFnZSAgKSAlPiI+PCUgcHJpbnQoIHNob3dfcGFnPQplICsgMSApICU+PC9h PjwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCcgICAgICAgICAgIDxsaSBjbGFzcz0zRCJkaXNhYmxl ZCI+PGE9CiBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2UvPCUgcHJpbnQoIHBhZ2Vf Y291bnQgKSAlPiI+PHNwYW4gY2xhc3M9Cj0zRCJmYSBmYS1hbmdsZS1kb3VibGUtcmlnaHQiPjwv c3Bhbj48L2E+PC9saT4nKSx0bXBsX2FycmF5LnB1c2goIiAgICAgICA8JT0KIH0gJT4iKSx0bXBs X2FycmF5LnB1c2goIiAgIDwvdWw+IiksdG1wbF9hcnJheS5wdXNoKCIgICA8c3Bhbj4iKSx0bXBs X2FycmF5PQoucHVzaCgnICAgICAgIHNob3dpbmcgPGEgZGF0YS10b2dnbGU9M0QidG9vbHRpcCIg ZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXQ9CmxlPTNEIkNsaWNrIHRvIGNoYW5nZSB0aGUgbnVt YmVyIG9mIGl0ZW1zIG9uIHBhZ2UiIGlkPTNEInBhZ2Vfc2l6ZV9wcm9tcHQiPj0KPCUtIGl0ZW1z X3Nob3duICU+PC9hPiBvZiA8JS0gdG90YWxfaXRlbXNfY291bnQgJT4gaXRlbXMnKSx0bXBsX2Fy cmF5LnB1c2goPQoiICAgPC9zcGFuPiIpLF8udGVtcGxhdGUodG1wbF9hcnJheS5qb2luKCIiKSl9 fSk7cmV0dXJue0ZvbGRlclRvb2xiYXJWaWV3OmY9Cn19KTsKIC8vIyBzb3VyY2VNYXBwaW5nVVJM PTNELi4vLi4vLi4vbWFwcy9tdmMvbGlicmFyeS9saWJyYXJ5LWZvbGRlcnRvb2xiYXItdmllPQp3 LmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgZDYyZjNlNTBiNTY3 YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0K NGJkZDRiMWUxOWE5N2FhNTUgc3RhdGljL3NjcmlwdHMvdXRpbHMvdXBsb2FkYm94LmpzCi0tLSBh L3N0YXRpYy9zY3JpcHRzL3V0aWxzL3VwbG9hZGJveC5qcworKysgYi9zdGF0aWMvc2NyaXB0cy91 dGlscy91cGxvYWRib3guanMKQEAgLTEsMiArMSwyIEBACi0hZnVuY3Rpb24oYSl7alF1ZXJ5LmV2 ZW50LnByb3BzLnB1c2goImRhdGFUcmFuc2ZlciIpLGEudXBsb2FkcG9zdD0zRGZ1bmN0aT0Kb24o Yil7dmFyIGM9M0RhLmV4dGVuZCh7fSx7ZGF0YTp7fSxzdWNjZXNzOmZ1bmN0aW9uKCl7fSxlcnJv cjpmdW5jdGlvbigpe30sPQpwcm9ncmVzczpmdW5jdGlvbigpe30sdXJsOm51bGwsbWF4ZmlsZXNp emU6MjA0OCxlcnJvcl9maWxlc2l6ZToiRmlsZSBleGNlZWQ9CnMgMkdCLiBQbGVhc2UgdXNlIGFu IEZUUCBjbGllbnQuIixlcnJvcl9kZWZhdWx0OiJQbGVhc2UgbWFrZSBzdXJlIHRoZSBmaWxlID0K aXMgYXZhaWxhYmxlLiIsZXJyb3Jfc2VydmVyOiJVcGxvYWQgcmVxdWVzdCBmYWlsZWQuIixlcnJv cl9sb2dpbjoiVXBsb2FkcyByPQplcXVpcmUgeW91IHRvIGxvZyBpbi4ifSxiKSxkPTNEYy5kYXRh O2lmKGQuZXJyb3JfbWVzc2FnZSlyZXR1cm4gdm9pZCBjLmVycm89CnIoZC5lcnJvcl9tZXNzYWdl KTt2YXIgZT0zRG5ldyBGb3JtRGF0YTtmb3IodmFyIGYgaW4gZC5wYXlsb2FkKWUuYXBwZW5kKGYs ZD0KLnBheWxvYWRbZl0pO3ZhciBnPTNEMDtmb3IodmFyIGYgaW4gZC5maWxlcyl7dmFyIGg9M0Rk LmZpbGVzW2ZdO2UuYXBwZW5kKGguPQpuYW1lLGguZmlsZSxoLmZpbGUubmFtZSksZys9M0RoLmZp bGUuc2l6ZX1yZXR1cm4gZz4xMDQ4NTc2KmMubWF4ZmlsZXNpemU/dm89CmlkIGMuZXJyb3IoYy5l cnJvcl9maWxlc2l6ZSk6KHhocj0zRG5ldyBYTUxIdHRwUmVxdWVzdCx4aHIub3BlbigiUE9TVCIs Yy51cj0KbCwhMCkseGhyLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsImFwcGxpY2F0aW9uL2pz b24iKSx4aHIuc2V0UmVxdWVzdEhlYWRlPQpyKCJDYWNoZS1Db250cm9sIiwibm8tY2FjaGUiKSx4 aHIuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEg9CnR0cFJlcXVlc3Qi KSx4aHIub25yZWFkeXN0YXRlY2hhbmdlPTNEZnVuY3Rpb24oKXtpZih4aHIucmVhZHlTdGF0ZT0z RD0zRHhocj0KLkRPTkUpe3ZhciBhPTNEbnVsbDtpZih4aHIucmVzcG9uc2VUZXh0KXRyeXthPTNE alF1ZXJ5LnBhcnNlSlNPTih4aHIucmVzcG9uPQpzZVRleHQpfWNhdGNoKGIpe2E9M0R4aHIucmVz cG9uc2VUZXh0fWlmKHhoci5zdGF0dXM8MjAwfHx4aHIuc3RhdHVzPjI5OSl7dmE9CnIgZD0zRHho ci5zdGF0dXNUZXh0OzQwMz0zRD0zRHhoci5zdGF0dXM/ZD0zRGMuZXJyb3JfbG9naW46MD0zRD0z RHhoci5zdGF0dT0Kcz9kPTNEYy5lcnJvcl9zZXJ2ZXI6ZHx8KGQ9M0RjLmVycm9yX2RlZmF1bHQp LGMuZXJyb3IoZCsiICgiK3hoci5zdGF0dXMrIikiPQopfWVsc2UgYy5zdWNjZXNzKGEpfX0seGhy LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZnVuY3Rpb24oYSl7YS49Cmxlbmd0 aENvbXB1dGFibGUmJmMucHJvZ3Jlc3MoTWF0aC5yb3VuZCgxMDAqYS5sb2FkZWQvYS50b3RhbCkp fSwhMSksY29uc29sZT0KLmRlYnVnKCJ1cGxvYWRib3g6OnVwbG9hZHBvc3QoKSAtIFBvc3Rpbmcg Zm9sbG93aW5nIGRhdGE6IiksY29uc29sZS5kZWJ1ZyhjPQopLHZvaWQgeGhyLnNlbmQoZSkpfSxh LmZuLnVwbG9hZGlucHV0PTNEZnVuY3Rpb24oYil7dmFyIGM9M0R0aGlzLGQ9M0RhLmV4dGU9Cm5k KHt9LHtvbmRyYWdvdmVyOmZ1bmN0aW9uKCl7fSxvbmRyYWdsZWF2ZTpmdW5jdGlvbigpe30sb25j aGFuZ2U6ZnVuY3Rpb24oKT0Ke30sbXVsdGlwbGU6ITF9LGIpLGU9M0RhKCc8aW5wdXQgdHlwZT0z RCJmaWxlIiBzdHlsZT0zRCJkaXNwbGF5OiBub25lIiAnKyhkPQoubXVsdGlwbGUmJiJtdWx0aXBs ZSJ8fCIiKSsiLz4iKTtyZXR1cm4gYy5hcHBlbmQoZSkuY2hhbmdlKGZ1bmN0aW9uKGIpe2Qub249 CmNoYW5nZShiLnRhcmdldC5maWxlcyksYSh0aGlzKS52YWwoIiIpfSksYy5vbigiZHJvcCIsZnVu Y3Rpb24oYSl7ZC5vbmRyYWdsZT0KYXZlKGEpLGEuZGF0YVRyYW5zZmVyJiYoZC5vbmNoYW5nZShh LmRhdGFUcmFuc2Zlci5maWxlcyksYS5wcmV2ZW50RGVmYXVsdCgpPQopfSksYy5vbigiZHJhZ292 ZXIiLGZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKSxkLm9uZHJhZ292ZXIoYSl9KSxjLm9u KCI9CmRyYWdsZWF2ZSIsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSxkLm9uZHJhZ2xl YXZlKGEpfSkse2RpYWxvZzpmdW5jdD0KaW9uKCl7ZS50cmlnZ2VyKCJjbGljayIpfX19LGEuZm4u dXBsb2FkYm94PTNEZnVuY3Rpb24oYil7ZnVuY3Rpb24gYyhhKXtpZihhPQomJmEubGVuZ3RoJiYh cCl7Zm9yKHZhciBiPTNEbixjPTNEMDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9M0RTdHJpbmcobisr KTttW2Q9Cl09M0RhW2NdLGwuYW5ub3VuY2UoZCxtW2RdKSxvKyt9cmV0dXJuIGJ9fWZ1bmN0aW9u IGQoYSl7bVthXSYmKGRlbGV0ZSBtW2FdLD0Kby0tKX1mdW5jdGlvbiBlKCl7aWYoMD0zRD0zRG98 fHEpcmV0dXJuIHE9M0QhMSxwPTNEITEsdm9pZCBsLmNvbXBsZXRlKCk7cD0KPTNEITA7dmFyIGI9 M0QtMTtmb3IodmFyIGMgaW4gbSl7Yj0zRGM7YnJlYWt9bVtiXTtkKGIpLGEudXBsb2FkcG9zdCh7 dXJsOmwuPQp1cmwsZGF0YTpsLmluaXRpYWxpemUoYiksc3VjY2VzczpmdW5jdGlvbihhKXtsLnN1 Y2Nlc3MoYixhKSxlKCl9LGVycm9yOmZ1bmM9CnRpb24oYSl7bC5lcnJvcihiLGEpLGUoKX0scHJv Z3Jlc3M6ZnVuY3Rpb24oYSl7bC5wcm9ncmVzcyhiLGEpfX0pfWZ1bmN0aW9uID0KZigpe3IuZGlh bG9nKCl9ZnVuY3Rpb24gZyhhKXtmb3IoYSBpbiBtKWQoYSl9ZnVuY3Rpb24gaCgpe3B8fChwPTNE ITAsZSgpKX1mPQp1bmN0aW9uIGkoKXtxPTNEITB9ZnVuY3Rpb24gaihiKXtyZXR1cm4gbD0zRGEu ZXh0ZW5kKHt9LGwsYil9ZnVuY3Rpb24gaygpe3I9CmV0dXJuIHdpbmRvdy5GaWxlJiZ3aW5kb3cu Rm9ybURhdGEmJndpbmRvdy5YTUxIdHRwUmVxdWVzdCYmd2luZG93LkZpbGVMaXN0fT0KdmFyIGw9 M0RhLmV4dGVuZCh7fSx7ZHJhZ292ZXI6ZnVuY3Rpb24oKXt9LGRyYWdsZWF2ZTpmdW5jdGlvbigp e30sYW5ub3VuY2U6PQpmdW5jdGlvbigpe30saW5pdGlhbGl6ZTpmdW5jdGlvbigpe30scHJvZ3Jl c3M6ZnVuY3Rpb24oKXt9LHN1Y2Nlc3M6ZnVuY3Rpb249Cigpe30sZXJyb3I6ZnVuY3Rpb24oYSxi KXthbGVydChiKX0sY29tcGxldGU6ZnVuY3Rpb24oKXt9fSxiKSxtPTNEe30sbj0zRDAsbz0KPTNE MCxwPTNEITEscT0zRCExLHI9M0RhKHRoaXMpLnVwbG9hZGlucHV0KHttdWx0aXBsZTohMCxvbmNo YW5nZTpmdW5jdGlvbihhPQope2MoYSl9LG9uZHJhZ292ZXI6Yi5vbmRyYWdvdmVyLG9uZHJhZ2xl YXZlOmIub25kcmFnbGVhdmV9KTtyZXR1cm57c2VsZWN0OmY9CixhZGQ6YyxyZW1vdmU6ZCxzdGFy dDpoLHN0b3A6aSxyZXNldDpnLGNvbmZpZ3VyZTpqLGNvbXBhdGlibGU6a319fShqUXVlcnkpOwor IWZ1bmN0aW9uKGEpe2pRdWVyeS5ldmVudC5wcm9wcy5wdXNoKCJkYXRhVHJhbnNmZXIiKSxhLnVw bG9hZHBvc3Q9M0RmdW5jdGk9Cm9uKGIpe3ZhciBjPTNEYS5leHRlbmQoe30se2RhdGE6e30sc3Vj Y2VzczpmdW5jdGlvbigpe30sZXJyb3I6ZnVuY3Rpb24oKXt9LD0KcHJvZ3Jlc3M6ZnVuY3Rpb24o KXt9LHVybDpudWxsLG1heGZpbGVzaXplOjIwNDgsZXJyb3JfZmlsZXNpemU6IkZpbGUgZXhjZWVk PQpzIDJHQi4gUGxlYXNlIHVzZSBhbiBGVFAgY2xpZW50LiIsZXJyb3JfZGVmYXVsdDoiUGxlYXNl IG1ha2Ugc3VyZSB0aGUgZmlsZSA9CmlzIGF2YWlsYWJsZS4iLGVycm9yX3NlcnZlcjoiVXBsb2Fk IHJlcXVlc3QgZmFpbGVkLiIsZXJyb3JfbG9naW46IlVwbG9hZHMgcj0KZXF1aXJlIHlvdSB0byBs b2cgaW4uIn0sYiksZD0zRGMuZGF0YTtpZihkLmVycm9yX21lc3NhZ2UpcmV0dXJuIHZvaWQgYy5l cnJvPQpyKGQuZXJyb3JfbWVzc2FnZSk7dmFyIGU9M0RuZXcgRm9ybURhdGE7Zm9yKHZhciBmIGlu IGQucGF5bG9hZCllLmFwcGVuZChmLGQ9Ci5wYXlsb2FkW2ZdKTt2YXIgZz0zRDA7Zm9yKHZhciBm IGluIGQuZmlsZXMpe3ZhciBoPTNEZC5maWxlc1tmXTtlLmFwcGVuZChoLj0KbmFtZSxoLmZpbGUs aC5maWxlLm5hbWUpLGcrPTNEaC5maWxlLnNpemV9cmV0dXJuIGc+MTA0ODU3NipjLm1heGZpbGVz aXplP3ZvPQppZCBjLmVycm9yKGMuZXJyb3JfZmlsZXNpemUpOih4aHI9M0RuZXcgWE1MSHR0cFJl cXVlc3QseGhyLm9wZW4oIlBPU1QiLGMudXI9CmwsITApLHhoci5zZXRSZXF1ZXN0SGVhZGVyKCJB Y2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uIikseGhyLnNldFJlcXVlc3RIZWFkZT0KcigiQ2FjaGUt Q29udHJvbCIsIm5vLWNhY2hlIikseGhyLnNldFJlcXVlc3RIZWFkZXIoIlgtUmVxdWVzdGVkLVdp dGgiLCJYTUxIPQp0dHBSZXF1ZXN0IikseGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT0zRGZ1bmN0aW9u KCl7aWYoeGhyLnJlYWR5U3RhdGU9M0Q9M0R4aHI9Ci5ET05FKXt2YXIgYT0zRG51bGw7aWYoeGhy LnJlc3BvbnNlVGV4dCl0cnl7YT0zRGpRdWVyeS5wYXJzZUpTT04oeGhyLnJlc3Bvbj0Kc2VUZXh0 KX1jYXRjaChiKXthPTNEeGhyLnJlc3BvbnNlVGV4dH1pZih4aHIuc3RhdHVzPDIwMHx8eGhyLnN0 YXR1cz4yOTkpe3ZhPQpyIGQ9M0R4aHIuc3RhdHVzVGV4dDs0MDM9M0Q9M0R4aHIuc3RhdHVzP2Q9 M0RjLmVycm9yX2xvZ2luOjA9M0Q9M0R4aHIuc3RhdHU9CnM/ZD0zRGMuZXJyb3Jfc2VydmVyOmR8 fChkPTNEYy5lcnJvcl9kZWZhdWx0KSxjLmVycm9yKGQrIiAoIit4aHIuc3RhdHVzKyIpIj0KKX1l bHNlIGMuc3VjY2VzcyhhKX19LHhoci51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3Mi LGZ1bmN0aW9uKGEpe2EuPQpsZW5ndGhDb21wdXRhYmxlJiZjLnByb2dyZXNzKE1hdGgucm91bmQo MTAwKmEubG9hZGVkL2EudG90YWwpKX0sITEpLGNvbnNvbGU9Ci5kZWJ1ZygidXBsb2FkYm94Ojp1 cGxvYWRwb3N0KCkgLSBQb3N0aW5nIGZvbGxvd2luZyBkYXRhOiIpLGNvbnNvbGUuZGVidWcoYz0K KSx2b2lkIHhoci5zZW5kKGUpKX0sYS5mbi51cGxvYWRpbnB1dD0zRGZ1bmN0aW9uKGIpe3ZhciBj PTNEdGhpcyxkPTNEYS5leHRlPQpuZCh7fSx7b25kcmFnb3ZlcjpmdW5jdGlvbigpe30sb25kcmFn bGVhdmU6ZnVuY3Rpb24oKXt9LG9uY2hhbmdlOmZ1bmN0aW9uKCk9Cnt9LG11bHRpcGxlOiExfSxi KSxlPTNEYSgnPGlucHV0IHR5cGU9M0QiZmlsZSIgc3R5bGU9M0QiZGlzcGxheTogbm9uZSIgJyso ZD0KLm11bHRpcGxlJiYibXVsdGlwbGUifHwiIikrIi8+Iik7cmV0dXJuIGMuYXBwZW5kKGUuY2hh bmdlKGZ1bmN0aW9uKGIpe2Qub25jPQpoYW5nZShiLnRhcmdldC5maWxlcyksYSh0aGlzKS52YWwo IiIpfSkpLGMub24oImRyb3AiLGZ1bmN0aW9uKGEpe2Qub25kcmFnbGU9CmF2ZShhKSxhLmRhdGFU cmFuc2ZlciYmKGQub25jaGFuZ2UoYS5kYXRhVHJhbnNmZXIuZmlsZXMpLGEucHJldmVudERlZmF1 bHQoKT0KKX0pLGMub24oImRyYWdvdmVyIixmdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCks ZC5vbmRyYWdvdmVyKGEpfSksYy5vbigiPQpkcmFnbGVhdmUiLGZ1bmN0aW9uKGEpe2Euc3RvcFBy b3BhZ2F0aW9uKCksZC5vbmRyYWdsZWF2ZShhKX0pLHtkaWFsb2c6ZnVuY3Q9Cmlvbigpe2UudHJp Z2dlcigiY2xpY2siKX19fSxhLmZuLnVwbG9hZGJveD0zRGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGMo YSl7aWYoYT0KJiZhLmxlbmd0aCYmIXApe2Zvcih2YXIgYj0zRG4sYz0zRDA7YzxhLmxlbmd0aDtj Kyspe3ZhciBkPTNEU3RyaW5nKG4rKyk7bVtkPQpdPTNEYVtjXSxsLmFubm91bmNlKGQsbVtkXSks bysrfXJldHVybiBifX1mdW5jdGlvbiBkKGEpe21bYV0mJihkZWxldGUgbVthXSw9Cm8tLSl9ZnVu Y3Rpb24gZSgpe2lmKDA9M0Q9M0RvfHxxKXJldHVybiBxPTNEITEscD0zRCExLHZvaWQgbC5jb21w bGV0ZSgpO3A9Cj0zRCEwO3ZhciBiPTNELTE7Zm9yKHZhciBjIGluIG0pe2I9M0RjO2JyZWFrfW1b Yl07ZChiKSxhLnVwbG9hZHBvc3Qoe3VybDpsLj0KdXJsLGRhdGE6bC5pbml0aWFsaXplKGIpLHN1 Y2Nlc3M6ZnVuY3Rpb24oYSl7bC5zdWNjZXNzKGIsYSksZSgpfSxlcnJvcjpmdW5jPQp0aW9uKGEp e2wuZXJyb3IoYixhKSxlKCl9LHByb2dyZXNzOmZ1bmN0aW9uKGEpe2wucHJvZ3Jlc3MoYixhKX19 KX1mdW5jdGlvbiA9CmYoKXtyLmRpYWxvZygpfWZ1bmN0aW9uIGcoYSl7Zm9yKGEgaW4gbSlkKGEp fWZ1bmN0aW9uIGgoKXtwfHwocD0zRCEwLGUoKSl9Zj0KdW5jdGlvbiBpKCl7cT0zRCEwfWZ1bmN0 aW9uIGooYil7cmV0dXJuIGw9M0RhLmV4dGVuZCh7fSxsLGIpfWZ1bmN0aW9uIGsoKXtyPQpldHVy biB3aW5kb3cuRmlsZSYmd2luZG93LkZvcm1EYXRhJiZ3aW5kb3cuWE1MSHR0cFJlcXVlc3QmJndp bmRvdy5GaWxlTGlzdH09CnZhciBsPTNEYS5leHRlbmQoe30se2RyYWdvdmVyOmZ1bmN0aW9uKCl7 fSxkcmFnbGVhdmU6ZnVuY3Rpb24oKXt9LGFubm91bmNlOj0KZnVuY3Rpb24oKXt9LGluaXRpYWxp emU6ZnVuY3Rpb24oKXt9LHByb2dyZXNzOmZ1bmN0aW9uKCl7fSxzdWNjZXNzOmZ1bmN0aW9uPQoo KXt9LGVycm9yOmZ1bmN0aW9uKGEsYil7YWxlcnQoYil9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7fX0s YiksbT0zRHt9LG49M0QwLG89Cj0zRDAscD0zRCExLHE9M0QhMSxyPTNEYSh0aGlzKS51cGxvYWRp bnB1dCh7bXVsdGlwbGU6ITAsb25jaGFuZ2U6ZnVuY3Rpb24oYT0KKXtjKGEpfSxvbmRyYWdvdmVy OmIub25kcmFnb3ZlcixvbmRyYWdsZWF2ZTpiLm9uZHJhZ2xlYXZlfSk7cmV0dXJue3NlbGVjdDpm PQosYWRkOmMscmVtb3ZlOmQsc3RhcnQ6aCxzdG9wOmkscmVzZXQ6Zyxjb25maWd1cmU6aixjb21w YXRpYmxlOmt9fX0oalF1ZXJ5KTsKIC8vIyBzb3VyY2VNYXBwaW5nVVJMPTNELi4vLi4vbWFwcy91 dGlscy91cGxvYWRib3guanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKVGhpcyBk aWZmIGlzIHNvIGJpZyB0aGF0IHdlIG5lZWRlZCB0byB0cnVuY2F0ZSB0aGUgcmVtYWluZGVyLgoK UmVwb3NpdG9yeSBVUkw6IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRy YWwvCgotLQoKVGhpcyBpcyBhIGNvbW1pdCBub3RpZmljYXRpb24gZnJvbSBiaXRidWNrZXQub3Jn LiBZb3UgYXJlIHJlY2VpdmluZwp0aGlzIGJlY2F1c2UgeW91IGhhdmUgdGhlIHNlcnZpY2UgZW5h YmxlZCwgYWRkcmVzc2luZyB0aGUgcmVjaXBpZW50IG9mCnRoaXMgZW1haWwuCg=