ZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvc3FsY29tcGxldGUudmltIGIvcnVudGltZS9hdXRvbG9hZC9zcWxjb21wbGV0ZS52aW0KaW5kZXggZjgzMDk2NS4uOTMyNmMxNSAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC9zcWxjb21wbGV0ZS52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC9zcWxjb21wbGV0ZS52aW0KQEAgLTEsOCArMSw4IEBACiAiIFZpbSBPTU5JIGNvbXBsZXRpb24gc2NyaXB0IGZvciBTUUwKICIgTGFuZ3VhZ2U6ICAgIFNRTAogIiBNYWludGFpbmVyOiAgRGF2aWQgRmlzaGJ1cm4gPGRmaXNoYnVybiBkb3QgdmltIGF0IGdtYWlsIGRvdCBjb20+Ci0iIFZlcnNpb246ICAgICAxNC4wCi0iIExhc3QgQ2hhbmdlOiAyMDEyIERlYyAwNAorIiBWZXJzaW9uOiAgICAgMTUuMAorIiBMYXN0IENoYW5nZTogMjAxMyBNYXkgMTMKICIgSG9tZXBhZ2U6ICAgIGh0dHA6Ly93d3cudmltLm9yZy9zY3JpcHRzL3NjcmlwdC5waHA/c2NyaXB0X2lkPTE1NzIKICIgVXNhZ2U6ICAgICAgIEZvciBkZXRhaWxlZCBoZWxwCiAiICAgICAgICAgICAgICAiOmhlbHAgc3FsLnR4dCIKQEAgLTExLDYgKzExLDE4IEBACiAKICIgSGlzdG9yeQogIgorIiBUT0RPCisiICAgICAtIEpvbmFzIEVuYmVyZyAtIGlmIG5vIHRhYmxlIGlzIGZvdW5kIHdoZW4gdXNpbmcgY29sdW1uIGNvbXBsZXRpb24KKyIgICAgICAgbG9vayBiYWNrd2FyZHMgdG8gYSBGUk9NIGNsYXVzZSBhbmQgZmluZCB0aGUgZmlyc3QgdGFibGUKKyIgICAgICAgYW5kIGNvbXBsZXRlIGl0LgorIgorIiBWZXJzaW9uIDE1LjAgKE1heSAyMDEzKQorIiAgICAgLSBORjogQ2hhbmdlZCB0aGUgU1FMIHByZWNhY2hlZCBzeW50YXggaXRlbXMsIG9tbmlfc3FsX3ByZWNhY2hlX3N5bnRheF9ncm91cHMsCisiICAgICAgICAgICB0byB1c2UgcmVndWxhciBleHByZXNzaW9ucyB0byBwaWNrIHVwIGV4dGVuZGVkIHN5bnRheCBncm91cCBuYW1lcy4KKyIgICAgICAgICAgIFRoaXMgcmVxdWlyZXMgYW4gdXBkYXRlZCBTeW50YXhDb21wbGV0ZSBwbHVnaW4gdmVyc2lvbiAxMy4wLgorIiAgICAgICAgICAgSWYgdGhlIHJlcXVpcmVkIHZlcnNpb25zIGhhdmUgbm90IGJlZW4gaW5zdGFsbGVkLCBwcmV2aW91cworIiAgICAgICAgICAgYmVoYXZpb3VyIHdpbGwgbm90IGJlIGltcGFjdGVkLgorIgogIiBWZXJzaW9uIDE0LjAgKERlYyAyMDEyKQogIiAgICAgLSBCRjogQWRkZWQgY2hlY2sgZm9yIGNwbwogIgpAQCAtOTEsNyArMTAzLDcgQEAKIGlmIGV4aXN0cygnZzpsb2FkZWRfc3FsX2NvbXBsZXRpb24nKQogICAgIGZpbmlzaAogZW5kaWYKLWxldCBnOmxvYWRlZF9zcWxfY29tcGxldGlvbiA9IDEzMAorbGV0IGc6bG9hZGVkX3NxbF9jb21wbGV0aW9uID0gMTUwCiBsZXQgczprZWVwY3BvPSAmY3BvCiBzZXQgY3BvJnZpbQogCkBAIC0xMTAsMTIgKzEyMiwxNCBAQAogIiBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIHN5bnRheGNvbXBsZXRlIHBsdWdpbgogbGV0IHM6c2F2ZV9pbmMgICAgICAgICAgICAgID0gIiIKIGxldCBzOnNhdmVfZXhjICAgICAgICAgICAgICA9ICIiCi1pZiBleGlzdHMoJ2c6b21uaV9zeW50YXhfZ3JvdXBfaW5jbHVkZV9zcWwnKQotICAgIGxldCBzOnNhdmVfaW5jID0gZzpvbW5pX3N5bnRheF9ncm91cF9pbmNsdWRlX3NxbAoraWYgIWV4aXN0cygnZzpvbW5pX3N5bnRheF9ncm91cF9pbmNsdWRlX3NxbCcpCisgICAgbGV0IGc6b21uaV9zeW50YXhfZ3JvdXBfaW5jbHVkZV9zcWwgPSAnJwogZW5kaWYKLWlmIGV4aXN0cygnZzpvbW5pX3N5bnRheF9ncm91cF9leGNsdWRlX3NxbCcpCi0gICAgbGV0IHM6c2F2ZV9leGMgPSBnOm9tbmlfc3ludGF4X2dyb3VwX2V4Y2x1ZGVfc3FsCitpZiAhZXhpc3RzKCdnOm9tbmlfc3ludGF4X2dyb3VwX2V4Y2x1ZGVfc3FsJykKKyAgICBsZXQgZzpvbW5pX3N5bnRheF9ncm91cF9leGNsdWRlX3NxbCA9ICcnCiBlbmRpZgorbGV0IHM6c2F2ZV9pbmMgPSBnOm9tbmlfc3ludGF4X2dyb3VwX2luY2x1ZGVfc3FsCitsZXQgczpzYXZlX2V4YyA9IGc6b21uaV9zeW50YXhfZ3JvdXBfZXhjbHVkZV9zcWwKIAogIiBVc2VkIHdpdGggdGhlIGNvbHVtbiBsaXN0CiBsZXQgczpzYXZlX3ByZXZfdGFibGUgICAgICAgPSAiIgpAQCAtMTI3LDEyICsxNDEsMTIgQEAKICIgRGVmYXVsdCBzeW50YXggaXRlbXMgdG8gcHJlY2FjaGUKIGlmICFleGlzdHMoJ2c6b21uaV9zcWxfcHJlY2FjaGVfc3ludGF4X2dyb3VwcycpCiAgICAgbGV0IGc6b21uaV9zcWxfcHJlY2FjaGVfc3ludGF4X2dyb3VwcyA9IFsKLSAgICAgICAgICAgICAgICBcICdzeW50YXgnLAotICAgICAgICAgICAgICAgIFwgJ3NxbEtleXdvcmQnLAotICAgICAgICAgICAgICAgIFwgJ3NxbEZ1bmN0aW9uJywKLSAgICAgICAgICAgICAgICBcICdzcWxPcHRpb24nLAotICAgICAgICAgICAgICAgIFwgJ3NxbFR5cGUnLAotICAgICAgICAgICAgICAgIFwgJ3NxbFN0YXRlbWVudCcKKyAgICAgICAgICAgICAgICBcICdzeW50YXhcdyonLAorICAgICAgICAgICAgICAgIFwgJ3NxbEtleXdvcmRcdyonLAorICAgICAgICAgICAgICAgIFwgJ3NxbEZ1bmN0aW9uXHcqJywKKyAgICAgICAgICAgICAgICBcICdzcWxPcHRpb25cdyonLAorICAgICAgICAgICAgICAgIFwgJ3NxbFR5cGVcdyonLAorICAgICAgICAgICAgICAgIFwgJ3NxbFN0YXRlbWVudFx3KicKICAgICAgICAgICAgICAgICBcIF0KIGVuZGlmCiAiIFNldCBpZ25vcmVjYXNlIHRvIHRoZSBmdHBsdWdpbiBzdGFuZGFyZApAQCAtNjIxLDE5ICs2MzUsMjMgQEAKICAgICAgICAgIiBSZXR1cm4gcHJldmlvdXNseSBjYWNoZWQgdmFsdWUKICAgICAgICAgbGV0IGNvbXBsX2xpc3QgPSBzOnN5bl92YWx1ZVtsaXN0X2lkeF0KICAgICBlbHNlCisgICAgICAgIGxldCBzOnNhdmVfaW5jID0gZzpvbW5pX3N5bnRheF9ncm91cF9pbmNsdWRlX3NxbAorICAgICAgICBsZXQgczpzYXZlX2V4YyA9IGc6b21uaV9zeW50YXhfZ3JvdXBfZXhjbHVkZV9zcWwKKyAgICAgICAgbGV0IGc6b21uaV9zeW50YXhfZ3JvdXBfaW5jbHVkZV9zcWwgPSAnJworICAgICAgICBsZXQgZzpvbW5pX3N5bnRheF9ncm91cF9leGNsdWRlX3NxbCA9ICcnCisKICAgICAgICAgIiBSZXF1ZXN0IHRoZSBzeW50YXggbGlzdCBpdGVtcyBmcm9tIHRoZQogICAgICAgICAiIHN5bnRheCBjb21wbGV0aW9uIHBsdWdpbgogICAgICAgICBpZiBzeW5fZ3JvdXAgPT0gJ3N5bnRheCcKICAgICAgICAgICAgICIgSGFuZGxlIHRoaXMgc3BlY2lhbCBjYXNlLiAgVGhpcyBhbGxvd3MgdGhlIHVzZXIKICAgICAgICAgICAgICIgdG8gaW5kaWNhdGUgdGhleSB3YW50IGFsbCB0aGUgc3ludGF4IGl0ZW1zIGF2YWlsYWJsZSwKICAgICAgICAgICAgICIgc28gZG8gbm90IHNwZWNpZnkgYSBzcGVjaWZpYyBpbmNsdWRlIGxpc3QuCi0gICAgICAgICAgICBsZXQgZzpvbW5pX3N5bnRheF9ncm91cF9pbmNsdWRlX3NxbCA9ICcnCisgICAgICAgICAgICBsZXQgc3luX3ZhbHVlICAgICAgICAgICAgICAgICAgICAgICA9IHN5bnRheGNvbXBsZXRlI09tbmlTeW50YXhMaXN0KCkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgIiBUaGUgdXNlciBoYXMgc3BlY2lmaWVkIGEgc3BlY2lmaWMgc3ludGF4IGdyb3VwCiAgICAgICAgICAgICBsZXQgZzpvbW5pX3N5bnRheF9ncm91cF9pbmNsdWRlX3NxbCA9IHN5bl9ncm91cAorICAgICAgICAgICAgbGV0IHN5bl92YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPSBzeW50YXhjb21wbGV0ZSNPbW5pU3ludGF4TGlzdChzeW5fZ3JvdXApCiAgICAgICAgIGVuZGlmCi0gICAgICAgIGxldCBnOm9tbmlfc3ludGF4X2dyb3VwX2V4Y2x1ZGVfc3FsID0gJycKLSAgICAgICAgbGV0IHN5bl92YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPSBzeW50YXhjb21wbGV0ZSNPbW5pU3ludGF4TGlzdCgpCiAgICAgICAgIGxldCBnOm9tbmlfc3ludGF4X2dyb3VwX2luY2x1ZGVfc3FsID0gczpzYXZlX2luYwogICAgICAgICBsZXQgZzpvbW5pX3N5bnRheF9ncm91cF9leGNsdWRlX3NxbCA9IHM6c2F2ZV9leGMKICAgICAgICAgIiBDYWNoZSB0aGVzZSB2YWx1ZXMgZm9yIGxhdGVyIHVzZQpkaWZmIC0tZ2l0IGEvcnVudGltZS9hdXRvbG9hZC9zeW50YXhjb21wbGV0ZS52aW0gYi9ydW50aW1lL2F1dG9sb2FkL3N5bnRheGNvbXBsZXRlLnZpbQppbmRleCBlM2VhMGUyLi5hMThjM2MzIDEwMDY0NAotLS0gYS9ydW50aW1lL2F1dG9sb2FkL3N5bnRheGNvbXBsZXRlLnZpbQorKysgYi9ydW50aW1lL2F1dG9sb2FkL3N5bnRheGNvbXBsZXRlLnZpbQpAQCAtMSwxOCArMSwzNCBAQAogIiBWaW0gY29tcGxldGlvbiBzY3JpcHQKICIgTGFuZ3VhZ2U6ICAgIEFsbCBsYW5ndWFnZXMsIHVzZXMgZXhpc3Rpbmcgc3ludGF4IGhpZ2hsaWdodGluZyBydWxlcwogIiBNYWludGFpbmVyOiAgRGF2aWQgRmlzaGJ1cm4gPGRmaXNoYnVybiBkb3QgdmltIGF0IGdtYWlsIGRvdCBjb20+Ci0iIFZlcnNpb246ICAgICAxMS4wCi0iIExhc3QgQ2hhbmdlOiAyMDEyIERlYyAwNAorIiBWZXJzaW9uOiAgICAgMTMuMAorIiBMYXN0IENoYW5nZTogMjAxMyBNYXkgMTQKICIgVXNhZ2U6ICAgICAgIEZvciBkZXRhaWxlZCBoZWxwLCAiOmhlbHAgZnQtc3ludGF4LW9tbmkiCiAKICIgSGlzdG9yeQogIgorIiBWZXJzaW9uIDEzLjAKKyIgICAtIEV4dGVuZGVkIHRoZSBvcHRpb24gb21uaV9zeW50YXhfZ3JvdXBfaW5jbHVkZV97ZmlsZXR5cGV9CisiICAgICB0byBhY2NlcHQgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiByZWdleCdzIHJhdGhlciB0aGFuCisiICAgICBzdHJpbmcuICBGb3IgZXhhbXBsZSwgZm9yIHRoZSBqYXZhc2NyaXB0IGZpbGV0eXBlIHlvdSBjb3VsZAorIiAgICAgdXNlOgorIiAgICAgICAgbGV0IGc6b21uaV9zeW50YXhfZ3JvdXBfaW5jbHVkZV9qYXZhc2NyaXB0ID0gJ2phdmFzY3JpcHRcd1wrLGpxdWVyeVx3XCsnCisiICAgLSBTb21lIHN5bnRheCBmaWxlcyAocGVybC52aW0pIHVzZSB0aGUgbWF0Y2ggLy8gc3ludGF4IGFzIGEgbWVjaGFuaXNtCisiICAgICB0byBpZGVudGlmeSBrZXl3b3Jkcy4gIFRoaXMgdXBkYXRlIGF0dGVtcHRzIHRvIHBhcnNlIHRoZQorIiAgICAgbWF0Y2ggc3ludGF4IGFuZCBwdWxsIG91dCBzeW50YXggaXRlbXMgd2hpY2ggYXJlIGF0IGxlYXN0CisiICAgICAzIHdvcmRzIG9yIG1vcmUuCisiCisiIFZlcnNpb24gMTIuMAorIiAgIC0gSXQgaXMgcG9zc2libGUgdG8gaGF2ZSAnLScgYXMgcGFydCBvZiBpc2tleXdvcmQsIHdoZW4KKyIgICAgIGNoZWNraW5nIGZvciBjaGFyYWN0ZXIgcmFuZ2VzLCB0aWdodGVuIHVwIHRoZSByZWdleC4KKyIgICAgIEU2ODg6IE1vcmUgdGFyZ2V0cyB0aGFuIExpc3QgaXRlbXMuCisiCiAiIFZlcnNpb24gMTEuMAotIiAgICAgQ29ycmVjdGVkIHdoaWNoIGNoYXJhY3RlcnMgcmVxdWlyZWQgZXNjYXBpbmcgZHVyaW5nCisiICAgLSBDb3JyZWN0ZWQgd2hpY2ggY2hhcmFjdGVycyByZXF1aXJlZCBlc2NhcGluZyBkdXJpbmcKICIgICAgIHN1YnN0aXR1dGlvbiBjYWxscy4KICIKICIgVmVyc2lvbiAxMC4wCi0iICAgICBDeWNsZSB0aHJvdWdoIGFsbCB0aGUgY2hhcmFjdGVyIHJhbmdlcyBzcGVjaWZpZWQgaW4gdGhlCisiICAgLSBDeWNsZSB0aHJvdWdoIGFsbCB0aGUgY2hhcmFjdGVyIHJhbmdlcyBzcGVjaWZpZWQgaW4gdGhlCiAiICAgICBpc2tleXdvcmQgb3B0aW9uIGFuZCBidWlsZCBhIGxpc3Qgb2YgdmFsaWQgd29yZCBzZXBhcmF0b3JzLgogIiAgICAgUHJpb3IgdG8gdGhpcyBjaGFuZ2UsIG9ubHkgYWN0dWFsIGNoYXJhY3RlcnMgd2VyZSB1c2VkLAogIiAgICAgd2hlcmUgZm9yIGV4YW1wbGUgQVNDSUkgIjQ1IiA9PSAiLSIuICBJZiAiNDUiIHdlcmUgdXNlZApAQCAtMjAsMzAgKzM2LDMwIEBACiAiICAgICBUaGlzIGludHJvZHVjZXMgYSBuZXcgb3B0aW9uLCBzaW5jZSB0aGUgY2hhcmFjdGVyIHJhbmdlcwogIiAgICAgc3BlY2lmaWVkIGNvdWxkIGJlIG11bHRpYnl0ZToKICIgICAgICAgICBsZXQgZzpvbW5pX3N5bnRheF91c2Vfc2luZ2xlX2J5dGUgPSAxCi0iICAgICBUaGlzIGJ5IGRlZmF1bHQgd2lsbCBvbmx5IGFsbG93IHNpbmdsZSBieXRlIEFTQ0lJCisiICAgLSBUaGlzIGJ5IGRlZmF1bHQgd2lsbCBvbmx5IGFsbG93IHNpbmdsZSBieXRlIEFTQ0lJCiAiICAgICBjaGFyYWN0ZXJzIHRvIGJlIGFkZGVkIGFuZCBhbiBhZGRpdGlvbmFsIGNoZWNrIHRvIGVuc3VyZQogIiAgICAgdGhlIGNoYXJhdGVyIGlzIHByaW50YWJsZSAoc2VlIGRvY3VtZW50YXRpb24gZm9yIGlzcHJpbnQpLgogIgogIiBWZXJzaW9uIDkuMAotIiAgICAgQWRkIHRoZSBjaGVjayBmb3IgY3BvLgorIiAgIC0gQWRkIHRoZSBjaGVjayBmb3IgY3BvLgogIgogIiBWZXJzaW9uIDguMAotIiAgICAgVXBkYXRlZCBTeW50YXhDU3ludGF4R3JvdXBJdGVtcygpCisiICAgLSBVcGRhdGVkIFN5bnRheENTeW50YXhHcm91cEl0ZW1zKCkKICIgICAgICAgICAtIFNvbWUgYWRkaXRpb25hbCBzeW50YXggaXRlbXMgd2VyZSBhbHNvIGFsbG93ZWQKICIgICAgICAgICAgIG9uIG5leHRncm91cD0gbGluZXMgd2hpY2ggd2VyZSBpZ25vcmVkIGJ5IGRlZmF1bHQuCiAiICAgICAgICAgICBOb3cgdGhlc2UgbGluZXMgYXJlIHByb2Nlc3NlZCBpbmRlcGVuZGVudGx5LgogIgogIiBWZXJzaW9uIDcuMAotIiAgICAgVXBkYXRlZCBzeW50YXhjb21wbGV0ZSNPbW5pU3ludGF4TGlzdCgpCisiICAgLSBVcGRhdGVkIHN5bnRheGNvbXBsZXRlI09tbmlTeW50YXhMaXN0KCkKICIgICAgICAgICAtIExvb2tpbmcgdXAgdGhlIHN5bnRheCBncm91cHMgZGVmaW5lZCBmcm9tIGEgc3ludGF4IGZpbGUKICIgICAgICAgICAgIGxvb2tlZCBmb3Igb25seSAxIGZvcm1hdCBvZiB7ZmlsZXR5cGV9R3JvdXBOYW1lLCBidXQgc29tZQogIiAgICAgICAgICAgc3ludGF4IHdyaXRlcnMgdXNlIHRoaXMgZm9ybWF0IGFzIHdlbGw6CiAiICAgICAgICAgICAgICAge2I6Y3VycmVudF9zeW50YXh9R3JvdXBOYW1lCi0iICAgICAgICAgICBPbW5pU3ludGF4TGlzdCgpIHdpbGwgbm93IGNoZWNrIGZvciBib3RoIGlmIHRoZSBmaXJzdAorIiAgIC0gICAgICAgT21uaVN5bnRheExpc3QoKSB3aWxsIG5vdyBjaGVjayBmb3IgYm90aCBpZiB0aGUgZmlyc3QKICIgICAgICAgICAgIG1ldGhvZCBkb2VzIG5vdCBmaW5kIGEgbWF0Y2guCiAiCiAiIFZlcnNpb24gNi4wCi0iICAgICBBZGRlZCBzeW50YXhjb21wbGV0ZSNPbW5pU3ludGF4TGlzdCgpCisiICAgLSBBZGRlZCBzeW50YXhjb21wbGV0ZSNPbW5pU3ludGF4TGlzdCgpCiAiICAgICAgICAgLSBBbGxvd3Mgb3RoZXIgcGx1Z2lucyB0byB1c2UgdGhpcyBmb3IgdGhlaXIgb3duCiAiICAgICAgICAgICBwdXJwb3Nlcy4KICIgICAgICAgICAtIEl0IHdpbGwgcmV0dXJuIGEgTGlzdCBvZiBhbGwgc3ludGF4IGl0ZW1zIGZvciB0aGUKQEAgLTUyLDcgKzY4LDcgQEAKICIgICAgICAgICAgIHNxbGNvbXBsZXRlIHBsdWdpbiB0byBwb3B1bGF0ZSBhIENob29zZSBib3guCiAiCiAiIFZlcnNpb24gNS4wCi0iICAgICBVcGRhdGVkIFN5bnRheENTeW50YXhHcm91cEl0ZW1zKCkKKyIgICAtIFVwZGF0ZWQgU3ludGF4Q1N5bnRheEdyb3VwSXRlbXMoKQogIiAgICAgICAgIC0gV2hlbiBwcm9jZXNzaW5nIGEgbGlzdCBvZiBzeW50YXggZ3JvdXBzLCB0aGUgZmluYWwgZ3JvdXAKICIgICAgICAgICAgIHdhcyBtaXNzZWQgaW4gZnVuY3Rpb24gU3ludGF4Q1N5bnRheEdyb3VwSXRlbXMuCiAiCkBAIC03MCw3ICs4Niw3IEBACiBpZiBleGlzdHMoJ2c6bG9hZGVkX3N5bnRheF9jb21wbGV0aW9uJykKICAgICBmaW5pc2gKIGVuZGlmCi1sZXQgZzpsb2FkZWRfc3ludGF4X2NvbXBsZXRpb24gPSAxMTAKK2xldCBnOmxvYWRlZF9zeW50YXhfY29tcGxldGlvbiA9IDEzMAogCiAiIFR1cm4gb24gc3VwcG9ydCBmb3IgbGluZSBjb250aW51YXRpb25zIHdoZW4gY3JlYXRpbmcgdGhlIHNjcmlwdAogbGV0IHM6Y3BvX3NhdmUgPSAmY3BvCkBAIC0xMTMsNyArMTI5LDggQEAKIAogIiBUaGlzIHNjcmlwdCB3aWxsIGJ1aWxkIGEgY29tcGxldGlvbiBsaXN0IGJhc2VkIG9uIHRoZSBzeW50YXgKICIgZWxlbWVudHMgZGVmaW5lZCBieSB0aGUgZmlsZXMgaW4gJFZJTVJVTlRJTUUvc3ludGF4LgotbGV0IHM6c3luX3JlbW92ZV93b3JkcyA9ICdtYXRjaCxtYXRjaGdyb3VwPSxjb250YWlucywnLgorIiBsZXQgczpzeW5fcmVtb3ZlX3dvcmRzID0gJ21hdGNoLG1hdGNoZ3JvdXA9LGNvbnRhaW5zLCcuCitsZXQgczpzeW5fcmVtb3ZlX3dvcmRzID0gJ21hdGNoZ3JvdXA9LGNvbnRhaW5zLCcuCiAgICAgICAgICAgICBcICdsaW5rcyB0byxzdGFydD0sZW5kPScKICAgICAgICAgICAgICIgXCAnbGlua3MgdG8sc3RhcnQ9LGVuZD0sbmV4dGdyb3VwPScKIApAQCAtMjc1LDkgKzI5MiwxOSBAQAogICAgICIgICAgIHNxbFR5cGUKICAgICAiICAgICBzcWxPcGVyYXRvcnMKICAgICAiICAgICBzcWxLZXl3b3JkIC4uLgotICAgIHJlZGlyIEBsCi0gICAgc2lsZW50ISBleGVjICdzeW50YXggbGlzdCAnLmpvaW4obGlzdF9wYXJtcykKLSAgICByZWRpciBFTkQKKyAgICBpZiAhZW1wdHkobGlzdF9wYXJtcykgJiYgZW1wdHkoc3Vic3RpdHV0ZShqb2luKGxpc3RfcGFybXMpLCAnW2EtekEtWiBdJywgJycsICdnJykpCisgICAgICAgICIgSWYgbGlzdF9wYXJtcyBvbmx5IGluY2x1ZGVzIHdvcmQgY2hhcmFjdGVycywgdXNlIGl0IHRvIGxpbWl0CisgICAgICAgICIgdGhlIHN5bnRheCBlbGVtZW50cy4KKyAgICAgICAgIiBJZiB1c2luZyByZWdleCBzeW50YXggbGlzdCB3aWxsIGZhaWwgdG8gZmluZCB0aG9zZSBpdGVtcywgc28KKyAgICAgICAgIiBzaW1wbHkgZ3JhYiB0aGUgd2hvIHN5bnRheCBsaXN0LgorICAgICAgICByZWRpciBAbAorICAgICAgICBzaWxlbnQhIGV4ZWMgJ3N5bnRheCBsaXN0ICcuam9pbihsaXN0X3Bhcm1zKQorICAgICAgICByZWRpciBFTkQKKyAgICBlbHNlCisgICAgICAgIHJlZGlyIEBsCisgICAgICAgIHNpbGVudCEgZXhlYyAnc3ludGF4IGxpc3QnCisgICAgICAgIHJlZGlyIEVORAorICAgIGVuZGlmCiAKICAgICBsZXQgc3ludGF4X2Z1bGwgPSAiXG4iLkBsCiAgICAgbGV0IEBsID0gc2F2ZUwKQEAgLTMxMSw4MiArMzM4LDE2NyBAQAogICAgICAgICBlbmRpZgogICAgIGVuZGlmCiAKLSAgICAiIFNvbWV0aW1lcyBmaWxldHlwZXMgY2FuIGJlIGNvbXBvc2l0ZSBuYW1lcywgbGlrZSBjLmRveHlnZW4KLSAgICAiIExvb3AgdGhyb3VnaCBlYWNoIGluZGl2aWR1YWwgcGFydCBsb29raW5nIGZvciB0aGUgc3ludGF4Ci0gICAgIiBpdGVtcyBzcGVjaWZpYyB0byBlYWNoIGluZGl2aWR1YWwgZmlsZXR5cGUuCisgICAgaWYgZW1wdHkobGlzdF9wYXJtcykKKyAgICAgICAgbGV0IGxpc3RfcGFybXMgPSBbJmZpbGV0eXBlLidcd1wrJ10KKyAgICBlbmRpZgorCiAgICAgbGV0IHN5bl9saXN0ID0gJycKLSAgICBsZXQgZnRpbmRleCAgPSAwCi0gICAgbGV0IGZ0aW5kZXggID0gbWF0Y2goJmZpbGV0eXBlLCAnXHdcKycsIGZ0aW5kZXgpCisgICAgbGV0IGluZGV4ICAgID0gMAorICAgIGZvciBncm91cF9yZWdleCBpbiBsaXN0X3Bhcm1zCisgICAgICAgICIgU29tZXRpbWVzIGZpbGV0eXBlcyBjYW4gYmUgY29tcG9zaXRlIG5hbWVzLCBsaWtlIGMuZG94eWdlbgorICAgICAgICAiIExvb3AgdGhyb3VnaCBlYWNoIGluZGl2aWR1YWwgcGFydCBsb29raW5nIGZvciB0aGUgc3ludGF4CisgICAgICAgICIgaXRlbXMgc3BlY2lmaWMgdG8gZWFjaCBpbmRpdmlkdWFsIGZpbGV0eXBlLgorICAgICAgICAiIGxldCBmdGluZGV4ICA9IDAKKyAgICAgICAgIiBsZXQgZnRpbmRleCAgPSBtYXRjaChzeW50YXhfZnVsbCwgZ3JvdXBfcmVnZXgsIGZ0aW5kZXgpCiAKLSAgICB3aGlsZSBmdGluZGV4ID4gLTEKLSAgICAgICAgbGV0IGZ0X3BhcnRfbmFtZSA9IG1hdGNoc3RyKCAmZmlsZXR5cGUsICdcd1wrJywgZnRpbmRleCApCisgICAgICAgICIgd2hpbGUgZnRpbmRleCA+IC0xCisgICAgICAgICAgICAiIGxldCBmdF9wYXJ0X25hbWUgPSBtYXRjaHN0ciggc3ludGF4X2Z1bGwsICdcd1wrJywgZnRpbmRleCApCiAKLSAgICAgICAgIiBTeW50YXggcnVsZXMgY2FuIGNvbnRhaW4gaXRlbXMgZm9yIG1vcmUgdGhhbiBqdXN0IHRoZSBjdXJyZW50Ci0gICAgICAgICIgZmlsZXR5cGUuICBUaGV5IGNhbiBjb250YWluIGFkZGl0aW9uYWwgaXRlbXMgYWRkZWQgYnkgdGhlIHVzZXIKLSAgICAgICAgIiB2aWEgYXV0b2NtZHMgb3IgdGhlaXIgdmltcmMuCi0gICAgICAgICIgU29tZSBzeW50YXggZmlsZXMgY2FuIGJlIGNvbWJpbmVkIChodG1sLCBwaHAsIGpzcCkuCi0gICAgICAgICIgV2Ugd2FudCBvbmx5IGl0ZW1zIHRoYXQgYmVnaW4gd2l0aCB0aGUgZmlsZXR5cGUgd2UgYXJlIGludGVyZXN0ZWQgaW4uCi0gICAgICAgIGxldCBuZXh0X2dyb3VwX3JlZ2V4ID0gJ1xuJyAuCi0gICAgICAgICAgICAgICAgICAgIFwgJ1x6cycuZnRfcGFydF9uYW1lLidcd1wrXHplJy4KLSAgICAgICAgICAgICAgICAgICAgXCAnXHNcK3h4eFxzXCsnCi0gICAgICAgIGxldCBpbmRleCAgICA9IDAKLSAgICAgICAgbGV0IGluZGV4ICAgID0gbWF0Y2goc3ludGF4X2Z1bGwsIG5leHRfZ3JvdXBfcmVnZXgsIGluZGV4KQotCi0gICAgICAgIGlmIGluZGV4ID09IC0xICYmIGV4aXN0cygnYjpjdXJyZW50X3N5bnRheCcpICYmIGZ0X3BhcnRfbmFtZSAhPSBiOmN1cnJlbnRfc3ludGF4Ci0gICAgICAgICAgICAiIFRoZXJlIGFwcGVhcnMgdG8gYmUgdHdvIHN0YW5kYXJkcyB3aGVuIHdyaXRpbmcgc3ludGF4IGZpbGVzLgotICAgICAgICAgICAgIiBFaXRoZXIgaXRlbXMgYmVnaW4gYXM6Ci0gICAgICAgICAgICAiICAgICBzeW4ga2V5d29yZCB7ZmlsZXR5cGV9S2V5d29yZCAgICAgICAgIHZhbHVlcyAuLi4KLSAgICAgICAgICAgICIgICAgIGxldCBiOmN1cnJlbnRfc3ludGF4ID0gInNxbCIKLSAgICAgICAgICAgICIgICAgIGxldCBiOmN1cnJlbnRfc3ludGF4ID0gInNxbGFueXdoZXJlIgotICAgICAgICAgICAgIiBPcgotICAgICAgICAgICAgIiAgICAgc3luIGtleXdvcmQge3N5bnRheF9maWxlbmFtZX1LZXl3b3JkICB2YWx1ZXMgLi4uCi0gICAgICAgICAgICAiICAgICBsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJteXNxbCIKLSAgICAgICAgICAgICIgU28sIHdlIHdpbGwgbWFrZSB0aGUgZm9ybWF0IG9mIGZpbmRpbmcgdGhlIHN5bnRheCBncm91cCBuYW1lcwotICAgICAgICAgICAgIiBhIGJpdCBtb3JlIGZsZXhpYmxlIGFuZCBsb29rIGZvciBib3RoIGlmIHRoZSBmaXJzdCBmYWlscyB0bwotICAgICAgICAgICAgIiBmaW5kIGEgbWF0Y2guCisgICAgICAgICAgICAiIFN5bnRheCBydWxlcyBjYW4gY29udGFpbiBpdGVtcyBmb3IgbW9yZSB0aGFuIGp1c3QgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICIgZmlsZXR5cGUuICBUaGV5IGNhbiBjb250YWluIGFkZGl0aW9uYWwgaXRlbXMgYWRkZWQgYnkgdGhlIHVzZXIKKyAgICAgICAgICAgICIgdmlhIGF1dG9jbWRzIG9yIHRoZWlyIHZpbXJjLgorICAgICAgICAgICAgIiBTb21lIHN5bnRheCBmaWxlcyBjYW4gYmUgY29tYmluZWQgKGh0bWwsIHBocCwganNwKS4KKyAgICAgICAgICAgICIgV2Ugd2FudCBvbmx5IGl0ZW1zIHRoYXQgYmVnaW4gd2l0aCB0aGUgZmlsZXR5cGUgd2UgYXJlIGludGVyZXN0ZWQgaW4uCiAgICAgICAgICAgICBsZXQgbmV4dF9ncm91cF9yZWdleCA9ICdcbicgLgotICAgICAgICAgICAgICAgICAgICAgICAgXCAnXHpzJy5iOmN1cnJlbnRfc3ludGF4Lidcd1wrXHplJy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFwgJ1x6cycuZ3JvdXBfcmVnZXguJ1x6ZScuCiAgICAgICAgICAgICAgICAgICAgICAgICBcICdcc1wreHh4XHNcKycKLSAgICAgICAgICAgIGxldCBpbmRleCAgICA9IDAKICAgICAgICAgICAgIGxldCBpbmRleCAgICA9IG1hdGNoKHN5bnRheF9mdWxsLCBuZXh0X2dyb3VwX3JlZ2V4LCBpbmRleCkKLSAgICAgICAgZW5kaWYKIAotICAgICAgICB3aGlsZSBpbmRleCA+IC0xCi0gICAgICAgICAgICBsZXQgZ3JvdXBfbmFtZSA9IG1hdGNoc3RyKCBzeW50YXhfZnVsbCwgJ1x3XCsnLCBpbmRleCApCi0KLSAgICAgICAgICAgIGxldCBnZXRfc3luX2xpc3QgPSAxCi0gICAgICAgICAgICBmb3IgZXhjbHVkZV9ncm91cF9uYW1lIGluIGxpc3RfZXhjbHVkZV9ncm91cHMKLSAgICAgICAgICAgICAgICBpZiAnXDwnLmV4Y2x1ZGVfZ3JvdXBfbmFtZS4nXD4nID1+ICdcPCcuZ3JvdXBfbmFtZS4nXD4nCi0gICAgICAgICAgICAgICAgICAgIGxldCBnZXRfc3luX2xpc3QgPSAwCi0gICAgICAgICAgICAgICAgZW5kaWYKLSAgICAgICAgICAgIGVuZGZvcgotCi0gICAgICAgICAgICAiIFRoaXMgY29kZSBpcyBubyBsb25nZXIgbmVlZGVkIGluIHZlcnNpb24gNi4wIHNpbmNlIHdlIGhhdmUKLSAgICAgICAgICAgICIgYXVnbWVudGVkIHRoZSBzeW50YXggbGlzdCBjb21tYW5kIHRvIG9ubHkgcmV0cmlldmUgdGhlIHN5bnRheAotICAgICAgICAgICAgIiBncm91cHMgd2UgYXJlIGludGVyZXN0ZWQgaW4uCi0gICAgICAgICAgICAiCi0gICAgICAgICAgICAiIGlmIGdldF9zeW5fbGlzdCA9PSAxCi0gICAgICAgICAgICAiICAgICBpZiBzeW50YXhfZ3JvdXBfaW5jbHVkZV97ZmlsZXR5cGV9ICE9ICcnCi0gICAgICAgICAgICAiICAgICAgICAgaWYgJ1w8Jy5zeW50YXhfZ3JvdXBfaW5jbHVkZV97ZmlsZXR5cGV9LidcPicgIX4gJ1w8Jy5ncm91cF9uYW1lLidcPicKLSAgICAgICAgICAgICIgICAgICAgICAgICAgbGV0IGdldF9zeW5fbGlzdCA9IDAKLSAgICAgICAgICAgICIgICAgICAgICBlbmRpZgotICAgICAgICAgICAgIiAgICAgZW5kaWYKLSAgICAgICAgICAgICIgZW5kaWYKLQotICAgICAgICAgICAgaWYgZ2V0X3N5bl9saXN0ID09IDEKLSAgICAgICAgICAgICAgICAiIFBhc3MgaW4gdGhlIGZ1bGwgc3ludGF4IGxpc3RpbmcsIHBsdXMgdGhlIGdyb3VwIG5hbWUgd2UKLSAgICAgICAgICAgICAgICAiIGFyZSBpbnRlcmVzdGVkIGluLgotICAgICAgICAgICAgICAgIGxldCBleHRyYV9zeW5fbGlzdCA9IHM6U3ludGF4Q1N5bnRheEdyb3VwSXRlbXMoZ3JvdXBfbmFtZSwgc3ludGF4X2Z1bGwpCi0gICAgICAgICAgICAgICAgbGV0IHN5bl9saXN0ID0gc3luX2xpc3QgLiBleHRyYV9zeW5fbGlzdCAuICJcbiIKKyAgICAgICAgICAgICIgRm9yIHRoZSBtYXRjaGVkIGdyb3VwIG5hbWUsIHN0cmlwIG9mZiBhbnkgb2YgdGhlIHJlZ2V4IHNwZWNpYWwKKyAgICAgICAgICAgICIgY2hhcmFjdGVycyBhbmQgc2VlIGlmIHdlIGdldCBhIG1hdGNoIHdpdGggdGhlIGN1cnJlbnQgc3ludGF4CisgICAgICAgICAgICBpZiBpbmRleCA9PSAtMSAmJiBleGlzdHMoJ2I6Y3VycmVudF9zeW50YXgnKSAmJiBzdWJzdGl0dXRlKGdyb3VwX3JlZ2V4LCAnW15hLXpBLVogXVwrLionLCAnJywgJ2cnKSAhfiAnXicuYjpjdXJyZW50X3N5bnRheAorICAgICAgICAgICAgICAgICIgVGhlcmUgYXBwZWFycyB0byBiZSB0d28gc3RhbmRhcmRzIHdoZW4gd3JpdGluZyBzeW50YXggZmlsZXMuCisgICAgICAgICAgICAgICAgIiBFaXRoZXIgaXRlbXMgYmVnaW4gYXM6CisgICAgICAgICAgICAgICAgIiAgICAgc3luIGtleXdvcmQge2ZpbGV0eXBlfUtleXdvcmQgICAgICAgICB2YWx1ZXMgLi4uCisgICAgICAgICAgICAgICAgIiAgICAgbGV0IGI6Y3VycmVudF9zeW50YXggPSAic3FsIgorICAgICAgICAgICAgICAgICIgICAgIGxldCBiOmN1cnJlbnRfc3ludGF4ID0gInNxbGFueXdoZXJlIgorICAgICAgICAgICAgICAgICIgT3IKKyAgICAgICAgICAgICAgICAiICAgICBzeW4ga2V5d29yZCB7c3ludGF4X2ZpbGVuYW1lfUtleXdvcmQgIHZhbHVlcyAuLi4KKyAgICAgICAgICAgICAgICAiICAgICBsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJteXNxbCIKKyAgICAgICAgICAgICAgICAiIFNvLCB3ZSB3aWxsIG1ha2UgdGhlIGZvcm1hdCBvZiBmaW5kaW5nIHRoZSBzeW50YXggZ3JvdXAgbmFtZXMKKyAgICAgICAgICAgICAgICAiIGEgYml0IG1vcmUgZmxleGlibGUgYW5kIGxvb2sgZm9yIGJvdGggaWYgdGhlIGZpcnN0IGZhaWxzIHRvCisgICAgICAgICAgICAgICAgIiBmaW5kIGEgbWF0Y2guCisgICAgICAgICAgICAgICAgbGV0IG5leHRfZ3JvdXBfcmVnZXggPSAnXG4nIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcICdcenMnLmI6Y3VycmVudF9zeW50YXguJ1x3XCtcemUnLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgJ1xzXCt4eHhcc1wrJworICAgICAgICAgICAgICAgIGxldCBpbmRleCAgICA9IDAKKyAgICAgICAgICAgICAgICBsZXQgaW5kZXggICAgPSBtYXRjaChzeW50YXhfZnVsbCwgbmV4dF9ncm91cF9yZWdleCwgaW5kZXgpCiAgICAgICAgICAgICBlbmRpZgogCi0gICAgICAgICAgICBsZXQgaW5kZXggPSBpbmRleCArIHN0cmxlbihncm91cF9uYW1lKQotICAgICAgICAgICAgbGV0IGluZGV4ID0gbWF0Y2goc3ludGF4X2Z1bGwsIG5leHRfZ3JvdXBfcmVnZXgsIGluZGV4KQotICAgICAgICBlbmR3aGlsZQorICAgICAgICAgICAgd2hpbGUgaW5kZXggPiAtMQorICAgICAgICAgICAgICAgIGxldCBncm91cF9uYW1lID0gbWF0Y2hzdHIoIHN5bnRheF9mdWxsLCAnXHdcKycsIGluZGV4ICkKIAotICAgICAgICBsZXQgZnRpbmRleCAgPSBmdGluZGV4ICsgbGVuKGZ0X3BhcnRfbmFtZSkKLSAgICAgICAgbGV0IGZ0aW5kZXggID0gbWF0Y2goICZmaWxldHlwZSwgJ1x3XCsnLCBmdGluZGV4ICkKLSAgICBlbmR3aGlsZQorICAgICAgICAgICAgICAgIGxldCBnZXRfc3luX2xpc3QgPSAxCisgICAgICAgICAgICAgICAgZm9yIGV4Y2x1ZGVfZ3JvdXBfbmFtZSBpbiBsaXN0X2V4Y2x1ZGVfZ3JvdXBzCisgICAgICAgICAgICAgICAgICAgIGlmICdcPCcuZXhjbHVkZV9ncm91cF9uYW1lLidcPicgPX4gJ1w8Jy5ncm91cF9uYW1lLidcPicKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBnZXRfc3luX2xpc3QgPSAwCisgICAgICAgICAgICAgICAgICAgIGVuZGlmCisgICAgICAgICAgICAgICAgZW5kZm9yCisKKyAgICAgICAgICAgICAgICAiIFRoaXMgY29kZSBpcyBubyBsb25nZXIgbmVlZGVkIGluIHZlcnNpb24gNi4wIHNpbmNlIHdlIGhhdmUKKyAgICAgICAgICAgICAgICAiIGF1Z21lbnRlZCB0aGUgc3ludGF4IGxpc3QgY29tbWFuZCB0byBvbmx5IHJldHJpZXZlIHRoZSBzeW50YXgKKyAgICAgICAgICAgICAgICAiIGdyb3VwcyB3ZSBhcmUgaW50ZXJlc3RlZCBpbi4KKyAgICAgICAgICAgICAgICAiCisgICAgICAgICAgICAgICAgIiBpZiBnZXRfc3luX2xpc3QgPT0gMQorICAgICAgICAgICAgICAgICIgICAgIGlmIHN5bnRheF9ncm91cF9pbmNsdWRlX3tmaWxldHlwZX0gIT0gJycKKyAgICAgICAgICAgICAgICAiICAgICAgICAgaWYgJ1w8Jy5zeW50YXhfZ3JvdXBfaW5jbHVkZV97ZmlsZXR5cGV9LidcPicgIX4gJ1w8Jy5ncm91cF9uYW1lLidcPicKKyAgICAgICAgICAgICAgICAiICAgICAgICAgICAgIGxldCBnZXRfc3luX2xpc3QgPSAwCisgICAgICAgICAgICAgICAgIiAgICAgICAgIGVuZGlmCisgICAgICAgICAgICAgICAgIiAgICAgZW5kaWYKKyAgICAgICAgICAgICAgICAiIGVuZGlmCisKKyAgICAgICAgICAgICAgICBpZiBnZXRfc3luX2xpc3QgPT0gMQorICAgICAgICAgICAgICAgICAgICAiIFBhc3MgaW4gdGhlIGZ1bGwgc3ludGF4IGxpc3RpbmcsIHBsdXMgdGhlIGdyb3VwIG5hbWUgd2UKKyAgICAgICAgICAgICAgICAgICAgIiBhcmUgaW50ZXJlc3RlZCBpbi4KKyAgICAgICAgICAgICAgICAgICAgbGV0IGV4dHJhX3N5bl9saXN0ID0gczpTeW50YXhDU3ludGF4R3JvdXBJdGVtcyhncm91cF9uYW1lLCBzeW50YXhfZnVsbCkKKyAgICAgICAgICAgICAgICAgICAgbGV0IHN5bl9saXN0ID0gc3luX2xpc3QgLiBleHRyYV9zeW5fbGlzdCAuICJcbiIKKyAgICAgICAgICAgICAgICBlbmRpZgorCisgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gaW5kZXggKyBzdHJsZW4oZ3JvdXBfbmFtZSkKKyAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSBtYXRjaChzeW50YXhfZnVsbCwgbmV4dF9ncm91cF9yZWdleCwgaW5kZXgpCisgICAgICAgICAgICBlbmR3aGlsZQorCisgICAgICAgICAgICAiIGxldCBmdGluZGV4ICA9IGZ0aW5kZXggKyBsZW4oZnRfcGFydF9uYW1lKQorICAgICAgICAgICAgIiBsZXQgZnRpbmRleCAgPSBtYXRjaCggc3ludGF4X2Z1bGwsIGdyb3VwX3JlZ2V4LCBmdGluZGV4ICkKKyAgICAgICAgIiBlbmR3aGlsZQorICAgIGVuZGZvcgorCisiICAgIiBTb21ldGltZXMgZmlsZXR5cGVzIGNhbiBiZSBjb21wb3NpdGUgbmFtZXMsIGxpa2UgYy5kb3h5Z2VuCisiICAgIiBMb29wIHRocm91Z2ggZWFjaCBpbmRpdmlkdWFsIHBhcnQgbG9va2luZyBmb3IgdGhlIHN5bnRheAorIiAgICIgaXRlbXMgc3BlY2lmaWMgdG8gZWFjaCBpbmRpdmlkdWFsIGZpbGV0eXBlLgorIiAgIGxldCBzeW5fbGlzdCA9ICcnCisiICAgbGV0IGZ0aW5kZXggID0gMAorIiAgIGxldCBmdGluZGV4ICA9IG1hdGNoKCZmaWxldHlwZSwgJ1x3XCsnLCBmdGluZGV4KQorCisiICAgd2hpbGUgZnRpbmRleCA+IC0xCisiICAgICAgIGxldCBmdF9wYXJ0X25hbWUgPSBtYXRjaHN0ciggJmZpbGV0eXBlLCAnXHdcKycsIGZ0aW5kZXggKQorCisiICAgICAgICIgU3ludGF4IHJ1bGVzIGNhbiBjb250YWluIGl0ZW1zIGZvciBtb3JlIHRoYW4ganVzdCB0aGUgY3VycmVudAorIiAgICAgICAiIGZpbGV0eXBlLiAgVGhleSBjYW4gY29udGFpbiBhZGRpdGlvbmFsIGl0ZW1zIGFkZGVkIGJ5IHRoZSB1c2VyCisiICAgICAgICIgdmlhIGF1dG9jbWRzIG9yIHRoZWlyIHZpbXJjLgorIiAgICAgICAiIFNvbWUgc3ludGF4IGZpbGVzIGNhbiBiZSBjb21iaW5lZCAoaHRtbCwgcGhwLCBqc3ApLgorIiAgICAgICAiIFdlIHdhbnQgb25seSBpdGVtcyB0aGF0IGJlZ2luIHdpdGggdGhlIGZpbGV0eXBlIHdlIGFyZSBpbnRlcmVzdGVkIGluLgorIiAgICAgICBsZXQgbmV4dF9ncm91cF9yZWdleCA9ICdcbicgLgorIiAgICAgICAgICAgICAgICAgICBcICdcenMnLmZ0X3BhcnRfbmFtZS4nXHdcK1x6ZScuCisiICAgICAgICAgICAgICAgICAgIFwgJ1xzXCt4eHhcc1wrJworIiAgICAgICBsZXQgaW5kZXggICAgPSAwCisiICAgICAgIGxldCBpbmRleCAgICA9IG1hdGNoKHN5bnRheF9mdWxsLCBuZXh0X2dyb3VwX3JlZ2V4LCBpbmRleCkKKworIiAgICAgICBpZiBpbmRleCA9PSAtMSAmJiBleGlzdHMoJ2I6Y3VycmVudF9zeW50YXgnKSAmJiBmdF9wYXJ0X25hbWUgIT0gYjpjdXJyZW50X3N5bnRheAorIiAgICAgICAgICAgIiBUaGVyZSBhcHBlYXJzIHRvIGJlIHR3byBzdGFuZGFyZHMgd2hlbiB3cml0aW5nIHN5bnRheCBmaWxlcy4KKyIgICAgICAgICAgICIgRWl0aGVyIGl0ZW1zIGJlZ2luIGFzOgorIiAgICAgICAgICAgIiAgICAgc3luIGtleXdvcmQge2ZpbGV0eXBlfUtleXdvcmQgICAgICAgICB2YWx1ZXMgLi4uCisiICAgICAgICAgICAiICAgICBsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJzcWwiCisiICAgICAgICAgICAiICAgICBsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJzcWxhbnl3aGVyZSIKKyIgICAgICAgICAgICIgT3IKKyIgICAgICAgICAgICIgICAgIHN5biBrZXl3b3JkIHtzeW50YXhfZmlsZW5hbWV9S2V5d29yZCAgdmFsdWVzIC4uLgorIiAgICAgICAgICAgIiAgICAgbGV0IGI6Y3VycmVudF9zeW50YXggPSAibXlzcWwiCisiICAgICAgICAgICAiIFNvLCB3ZSB3aWxsIG1ha2UgdGhlIGZvcm1hdCBvZiBmaW5kaW5nIHRoZSBzeW50YXggZ3JvdXAgbmFtZXMKKyIgICAgICAgICAgICIgYSBiaXQgbW9yZSBmbGV4aWJsZSBhbmQgbG9vayBmb3IgYm90aCBpZiB0aGUgZmlyc3QgZmFpbHMgdG8KKyIgICAgICAgICAgICIgZmluZCBhIG1hdGNoLgorIiAgICAgICAgICAgbGV0IG5leHRfZ3JvdXBfcmVnZXggPSAnXG4nIC4KKyIgICAgICAgICAgICAgICAgICAgICAgIFwgJ1x6cycuYjpjdXJyZW50X3N5bnRheC4nXHdcK1x6ZScuCisiICAgICAgICAgICAgICAgICAgICAgICBcICdcc1wreHh4XHNcKycKKyIgICAgICAgICAgIGxldCBpbmRleCAgICA9IDAKKyIgICAgICAgICAgIGxldCBpbmRleCAgICA9IG1hdGNoKHN5bnRheF9mdWxsLCBuZXh0X2dyb3VwX3JlZ2V4LCBpbmRleCkKKyIgICAgICAgZW5kaWYKKworIiAgICAgICB3aGlsZSBpbmRleCA+IC0xCisiICAgICAgICAgICBsZXQgZ3JvdXBfbmFtZSA9IG1hdGNoc3RyKCBzeW50YXhfZnVsbCwgJ1x3XCsnLCBpbmRleCApCisKKyIgICAgICAgICAgIGxldCBnZXRfc3luX2xpc3QgPSAxCisiICAgICAgICAgICBmb3IgZXhjbHVkZV9ncm91cF9uYW1lIGluIGxpc3RfZXhjbHVkZV9ncm91cHMKKyIgICAgICAgICAgICAgICBpZiAnXDwnLmV4Y2x1ZGVfZ3JvdXBfbmFtZS4nXD4nID1+ICdcPCcuZ3JvdXBfbmFtZS4nXD4nCisiICAgICAgICAgICAgICAgICAgIGxldCBnZXRfc3luX2xpc3QgPSAwCisiICAgICAgICAgICAgICAgZW5kaWYKKyIgICAgICAgICAgIGVuZGZvcgorCisiICAgICAgICAgICAiIFRoaXMgY29kZSBpcyBubyBsb25nZXIgbmVlZGVkIGluIHZlcnNpb24gNi4wIHNpbmNlIHdlIGhhdmUKKyIgICAgICAgICAgICIgYXVnbWVudGVkIHRoZSBzeW50YXggbGlzdCBjb21tYW5kIHRvIG9ubHkgcmV0cmlldmUgdGhlIHN5bnRheAorIiAgICAgICAgICAgIiBncm91cHMgd2UgYXJlIGludGVyZXN0ZWQgaW4uCisiICAgICAgICAgICAiCisiICAgICAgICAgICAiIGlmIGdldF9zeW5fbGlzdCA9PSAxCisiICAgICAgICAgICAiICAgICBpZiBzeW50YXhfZ3JvdXBfaW5jbHVkZV97ZmlsZXR5cGV9ICE9ICcnCisiICAgICAgICAgICAiICAgICAgICAgaWYgJ1w8Jy5zeW50YXhfZ3JvdXBfaW5jbHVkZV97ZmlsZXR5cGV9LidcPicgIX4gJ1w8Jy5ncm91cF9uYW1lLidcPicKKyIgICAgICAgICAgICIgICAgICAgICAgICAgbGV0IGdldF9zeW5fbGlzdCA9IDAKKyIgICAgICAgICAgICIgICAgICAgICBlbmRpZgorIiAgICAgICAgICAgIiAgICAgZW5kaWYKKyIgICAgICAgICAgICIgZW5kaWYKKworIiAgICAgICAgICAgaWYgZ2V0X3N5bl9saXN0ID09IDEKKyIgICAgICAgICAgICAgICAiIFBhc3MgaW4gdGhlIGZ1bGwgc3ludGF4IGxpc3RpbmcsIHBsdXMgdGhlIGdyb3VwIG5hbWUgd2UKKyIgICAgICAgICAgICAgICAiIGFyZSBpbnRlcmVzdGVkIGluLgorIiAgICAgICAgICAgICAgIGxldCBleHRyYV9zeW5fbGlzdCA9IHM6U3ludGF4Q1N5bnRheEdyb3VwSXRlbXMoZ3JvdXBfbmFtZSwgc3ludGF4X2Z1bGwpCisiICAgICAgICAgICAgICAgbGV0IHN5bl9saXN0ID0gc3luX2xpc3QgLiBleHRyYV9zeW5fbGlzdCAuICJcbiIKKyIgICAgICAgICAgIGVuZGlmCisKKyIgICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4ICsgc3RybGVuKGdyb3VwX25hbWUpCisiICAgICAgICAgICBsZXQgaW5kZXggPSBtYXRjaChzeW50YXhfZnVsbCwgbmV4dF9ncm91cF9yZWdleCwgaW5kZXgpCisiICAgICAgIGVuZHdoaWxlCisKKyIgICAgICAgbGV0IGZ0aW5kZXggID0gZnRpbmRleCArIGxlbihmdF9wYXJ0X25hbWUpCisiICAgICAgIGxldCBmdGluZGV4ICA9IG1hdGNoKCAmZmlsZXR5cGUsICdcd1wrJywgZnRpbmRleCApCisiICAgZW5kd2hpbGUKIAogICAgICIgQ29udmVydCB0aGUgc3RyaW5nIHRvIGEgTGlzdCBhbmQgc29ydCBpdC4KICAgICBsZXQgY29tcGxfbGlzdCA9IHNvcnQoc3BsaXQoc3luX2xpc3QpKQpAQCAtNDU0LDEwICs1NjYsNjUgQEAKICAgICAgICAgICAgICAgICAgICAgXCAgICAsICJcbiIsICdnJwogICAgICAgICAgICAgICAgICAgICBcICApCiAKKyAgICAgICAgIiBBdHRlbXB0IHRvIGRlYWwgd2l0aCBsaW5lcyB1c2luZyB0aGUgbWF0Y2ggc3ludGF4CisgICAgICAgICIgamF2YVNjcmlwdERvY1RhZ3MgeHh4IG1hdGNoIC9AXChwYXJhbVx8YXJndW1lbnRcfHJlcXVpcmVzXHxmaWxlXClcPi8KKyAgICAgICAgIiBUaG91Z2ggaXQgY2FuIHVzZSBhbnkgdHlwZXMgb2YgcmVnZXgsIHNvIHRoaXMgcGx1Z2luIHdpbGwgYXR0ZW1wdAorICAgICAgICAiIHRvIHJlc3RyaWN0IGl0CisgICAgICAgICIgMS4gIE9ubHkgdXNlIFwoIG9yIFwlKCBjb25zdHJ1Y3RzIHJlbW92ZSBhbGwgZWxzZQorICAgICAgICAiIDIgICBSZW1vdmUgYW5kIFtdcworICAgICAgICAiIDMuICBBY2NvdW50IGZvciBtYXRjaCAvL2NvbnN0cnVjdHMKKyAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgXCUoXCUobXNcfG1lXHxoc1x8aGVcfHJzXHxyZVx8bGNcKVxTXCtcKVw/CisgICAgICAgICIgNC4gIEhvcGUgZm9yIHRoZSBiZXN0CisgICAgICAgICIKKyAgICAgICAgIgorICAgICAgICBsZXQgc3luX2xpc3Rfb2xkID0gc3luX2xpc3QKKyAgICAgICAgd2hpbGUgc3luX2xpc3QgPX4gJ1w8bWF0Y2hcPlxzXCtcLycKKyAgICAgICAgICAgIGlmIHN5bl9saXN0ID1+ICdwZXJsRWxzZUlmRXJyb3InCisgICAgICAgICAgICAgICAgbGV0IHN5bl9saXN0ID0gc3luX2xpc3QKKyAgICAgICAgICAgIGVuZGlmCisgICAgICAgICAgICAiIENoZWNrIGlmIHRoZSBtYXRjaCBoYXMgd29yZHMgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzIGxvbmcKKyAgICAgICAgICAgIGlmIHN5bl9saXN0ID1+ICdcPG1hdGNoIFwvXHpzLlx7LX1cPFx3XHszLH1cPi5cey19XHplXFxcQDwhXC9cJShcJShtc1x8bWVcfGhzXHxoZVx8cnNcfHJlXHxsY1wpXFNcK1wpXD9cc1wrJworICAgICAgICAgICAgICAgICIgUmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgLyBhbmQgYmVmb3JlIHRoZSBmaXJzdCBcKAorICAgICAgICAgICAgICAgIGxldCBzeW5fbGlzdCA9IHN1YnN0aXR1dGUoIHN5bl9saXN0LCAnXDxtYXRjaCBcL1x6cy5cey19XHplXFwlXD8oLlx7LX1cXFxAPCFcL1wlKFwlKG1zXHxtZVx8aHNcfGhlXHxyc1x8cmVcfGxjXClcU1wrXClcP1xzXCsnLCAnJywgJ2cnICkKKyAgICAgICAgICAgICAgICAiIFJlbW92ZSBldmVyeXRoaW5nIGFmdGVyIFwpIGFuZCB1cCB0byB0aGUgZW5kaW5nIC8KKyAgICAgICAgICAgICAgICBsZXQgc3luX2xpc3QgPSBzdWJzdGl0dXRlKCBzeW5fbGlzdCwgJ1w8bWF0Y2ggXC8uXHstfVxcKVx6cy5cey19XHplXC9cJShcJShtc1x8bWVcfGhzXHxoZVx8cnNcfHJlXHxsY1wpXFNcK1wpXD9cc1wrJywgJycsICdnJyApCisKKyAgICAgICAgICAgICAgICAiIFJlbW92ZSBhbnkgY2hhcmFjdGVyIGNsYXNzZXMKKyAgICAgICAgICAgICAgICAiIGxldCBzeW5fbGlzdCA9IHN1YnN0aXR1dGUoIHN5bl9saXN0LCAnXDxtYXRjaCAvXHpzLlx7LX1cW1teXV0qXF0uXHstfVx6ZVwvICcsICcnLCAnZycgKQorICAgICAgICAgICAgICAgIGxldCBzeW5fbGlzdCA9IHN1YnN0aXR1dGUoIHN5bl9saXN0LCAnXCUoXDxtYXRjaCBcL1teL11cey19XClcQDw9XFtbXl1dKlxdXHplLlx7LX1cXFxAPCFcL1wlKFwlKG1zXHxtZVx8aHNcfGhlXHxyc1x8cmVcfGxjXClcU1wrXClcPycsICcnLCAnZycgKQorICAgICAgICAgICAgICAgICIgUmVtb3ZlIGFueSB3b3JkcyA8IDMgY2hhcmFjdGVycworICAgICAgICAgICAgICAgIGxldCBzeW5fbGlzdCA9IHN1YnN0aXR1dGUoIHN5bl9saXN0LCAnXCUoXDxtYXRjaCBcL1teL11cey19XClcQDw9XDxcd1x7MSwyfVw+XHplLlx7LX1cXFxAPCFcL1wlKFwlKG1zXHxtZVx8aHNcfGhlXHxyc1x8cmVcfGxjXClcU1wrXClcP1xzXCsnLCAnJywgJ2cnICkKKyAgICAgICAgICAgICAgICAiIFJlbW92ZSBhbGwgbm9uLXdvcmQgY2hhcmFjdGVycworICAgICAgICAgICAgICAgICIgbGV0IHN5bl9saXN0ID0gc3Vic3RpdHV0ZSggc3luX2xpc3QsICdcPG1hdGNoIC9cenMuXHstfVw8XFdcK1w+Llx7LX1cemVcLyAnLCAiIiwgJ2cnICkKKyAgICAgICAgICAgICAgICAiIGxldCBzeW5fbGlzdCA9IHN1YnN0aXR1dGUoIHN5bl9saXN0LCAnXCUoXDxtYXRjaCBcL1teL11cey19XClcQDw9XFdcK1x6ZS5cey19XC8gJywgJyAnLCAnZycgKQorICAgICAgICAgICAgICAgICIgRG8gdGhpcyBieSB1c2luZyB0aGUgb3V0ZXIgc3Vic3RpdHVlKCkgY2FsbCB0byBnYXRoZXIgYWxsCisgICAgICAgICAgICAgICAgIiB0ZXh0IGJldHdlZW4gdGhlIG1hdGNoIC8uLi4vIHRhZ3MuCisgICAgICAgICAgICAgICAgIiBUaGUgaW5uZXIgc3Vic3RpdHV0ZSgpIGNhbGwgb3BlcmF0ZXMgb24gdGhlIHRleHQgc2VsZWN0ZWQKKyAgICAgICAgICAgICAgICAiIGFuZCByZXBsYWNlcyBhbGwgbm9uLXdvcmQgY2hhcmFjdGVycy4KKyAgICAgICAgICAgICAgICBsZXQgc3luX2xpc3QgPSBzdWJzdGl0dXRlKCBzeW5fbGlzdCwgJ1w8bWF0Y2ggXC9cenNcKC5cey19XClcemVcXFxAPCFcL1wlKFwlKG1zXHxtZVx8aHNcfGhlXHxyc1x8cmVcfGxjXClcU1wrXClcP1xzXCsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAsICdcPXN1YnN0aXR1dGUoc3VibWF0Y2goMSksICJcXFdcXCsiLCAiICIsICJnIiknCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAsICdnJyApCisgICAgICAgICAgICAgICAgIiBSZW1vdmUgdGhlIG1hdGNoIC8gLyBzeW50YXgKKyAgICAgICAgICAgICAgICBsZXQgc3luX2xpc3QgPSBzdWJzdGl0dXRlKCBzeW5fbGlzdCwgJ1w8bWF0Y2ggXC9cKC5cey19XClcL1wlKFwlKG1zXHxtZVx8aHNcfGhlXHxyc1x8cmVcfGxjXClcU1wrXClcP1xzXCsnLCAnXDEnLCAnZycgKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICIgTm8gd29yZHMgbG9uZyBlbm91Z2gsIHJlbW92ZSB0aGUgbWF0Y2gKKyAgICAgICAgICAgICAgICAiIFJlbW92ZSB0aGUgbWF0Y2ggc3ludGF4CisgICAgICAgICAgICAgICAgIiBsZXQgc3luX2xpc3QgPSBzdWJzdGl0dXRlKCBzeW5fbGlzdCwgJ1w8bWF0Y2ggXC9bXlwvXSpcL1wlKFwlKG1zXHxtZVx8aHNcfGhlXHxyc1x8cmVcfGxjXClcU1wrXClcP1xzXCsnLCAnJywgJ2cnICkKKyAgICAgICAgICAgICAgICBsZXQgc3luX2xpc3QgPSBzdWJzdGl0dXRlKCBzeW5fbGlzdCwgJ1w8bWF0Y2ggXC9cJSguXHstfVwpXD9cL1wlKFwlKG1zXHxtZVx8aHNcfGhlXHxyc1x8cmVcfGxjXClcU1wrXClcP1xzXCsnLCAnJywgJ2cnICkKKyAgICAgICAgICAgIGVuZGlmCisgICAgICAgICAgICBpZiBzeW5fbGlzdCA9fiAnXDxtYXRjaFw+XHNcK1wvJworICAgICAgICAgICAgICAgICIgUHJvYmxlbSByZW1vdmluZyB0aGUgbWF0Y2ggLyAvIHRhZ3MKKyAgICAgICAgICAgICAgICBsZXQgc3luX2xpc3QgPSAnJworICAgICAgICAgICAgZW5kaWYKKyAgICAgICAgZW5kd2hpbGUKKworCiAgICAgICAgICIgTm93IHN0cmlwIG9mZiB0aGUgbmV3bGluZSArIGJsYW5rIHNwYWNlICsgY29udGFpbmVkLgogICAgICAgICAiIEFsc28gaW5jbHVkZSBsaW5lcyB3aXRoIG5leHRncm91cD1Ac29tZU5hbWUgc2tpcF9rZXlfd29yZHMgc3ludGF4X2VsZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgIiBcICAgIHN5bl9saXN0LCAnXCUoXlx8XG5cKVxAPD1ccypcPFwoY29udGFpbmVkXHxuZXh0Z3JvdXA9XCknCisgICAgICAgICAgICAgICAgICAgICIgXCAgICBzeW5fbGlzdCwgJ1wlKF5cfFxuXClcQDw9XHMqXDxcKGNvbnRhaW5lZFx8bmV4dGdyb3VwPVtAYS16QS1aLF0qXCknCiAgICAgICAgIGxldCBzeW5fbGlzdCA9IHN1YnN0aXR1dGUoCi0gICAgICAgICAgICAgICAgICAgIFwgICAgc3luX2xpc3QsICdcJSheXHxcblwpXEA8PVxzKlw8XChjb250YWluZWRcfG5leHRncm91cD1cKScKKyAgICAgICAgICAgICAgICAgICAgXCAgICBzeW5fbGlzdCwgJ1w8XChjb250YWluZWRcfG5leHRncm91cD1bQGEtekEtWixdKlwpJwogICAgICAgICAgICAgICAgICAgICBcICAgICwgIiIsICdnJwogICAgICAgICAgICAgICAgICAgICBcICkKIApAQCAtNDk3LDcgKzY2NCw3IEBACiAgICAgICAgICAgICAgICAgIiBJZiBzbywgYWRkIGl0IHRvIHRoZSBsaXN0LgogICAgICAgICAgICAgICAgIGxldCBhY2NlcHRlZF9jaGFycyA9ICcnCiAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gc3BsaXQoJmlza2V5d29yZCwgJywnKQotICAgICAgICAgICAgICAgICAgICBpZiBpdGVtID1+ICctJworICAgICAgICAgICAgICAgICAgICBpZiBpdGVtID1+ICdcZC1cZCcKICAgICAgICAgICAgICAgICAgICAgICAgICIgVGhpcyBpcyBhIGNoYXJhY3RlciByYW5nZSAoaWUgNDctNTgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIiBjeWNsZSB0aHJvdWdoIGVhY2ggY2hhcmFjdGVyIHdpdGhpbiB0aGUgcmFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBbYjpzdGFydCwgYjplbmRdID0gc3BsaXQoaXRlbSwgJy0nKQpkaWZmIC0tZ2l0IGEvcnVudGltZS9jb21waWxlci9tc2J1aWxkLnZpbSBiL3J1bnRpbWUvY29tcGlsZXIvbXNidWlsZC52aW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1MmNhMAotLS0gL2Rldi9udWxsCisrKyBiL3J1bnRpbWUvY29tcGlsZXIvbXNidWlsZC52aW0KQEAgLTAsMCArMSwyMSBAQAorIiBWaW0gY29tcGlsZXIgZmlsZQorIiBDb21waWxlcjoJTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gQyMKKyIgTWFpbnRhaW5lcjoJQ2hpZWwgdGVuIEJyaW5rZSAoY3RqZTkyQGdtYWlsLmNvbSkKKyIgTGFzdCBDaGFuZ2U6CTIwMTMgTWF5IDEzCisKK2lmIGV4aXN0cygiY3VycmVudF9jb21waWxlciIpCisgIGZpbmlzaAorZW5kaWYKK2xldCBjdXJyZW50X2NvbXBpbGVyID0gIm1zYnVpbGQiCitsZXQgczprZWVwY3BvPSAmY3BvCitzZXQgY3BvJnZpbQorCitpZiBleGlzdHMoIjpDb21waWxlclNldCIpICE9IDIJCSIgb2xkZXIgVmltIGFsd2F5cyB1c2VkIDpzZXRsb2NhbAorICBjb21tYW5kIC1uYXJncz0qIENvbXBpbGVyU2V0IHNldGxvY2FsIDxhcmdzPgorZW5kaWYKKworQ29tcGlsZXJTZXQgZXJyb3Jmb3JtYXQ9XCAlIyVmKCVsXFxcLCVjKTpcICVtCitDb21waWxlclNldCBtYWtlcHJnPW1zYnVpbGRcIC9ub2xvZ29cIC92OnFcIC9wcm9wZXJ0eTpHZW5lcmF0ZUZ1bGxQYXRocz10cnVlCisKK2xldCAmY3BvID0gczprZWVwY3BvCit1bmxldCBzOmtlZXBjcG8KZGlmZiAtLWdpdCBhL3J1bnRpbWUvY29tcGlsZXIveGJ1aWxkLnZpbSBiL3J1bnRpbWUvY29tcGlsZXIveGJ1aWxkLnZpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTA4YTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9jb21waWxlci94YnVpbGQudmltCkBAIC0wLDAgKzEsMjIgQEAKKyIgVmltIGNvbXBpbGVyIGZpbGUKKyIgQ29tcGlsZXI6CU1vbm8gQyMKKyIgTWFpbnRhaW5lcjoJQ2hpZWwgdGVuIEJyaW5rZSAoY3RqZTkyQGdtYWlsLmNvbSkKKyIgTGFzdCBDaGFuZ2U6CTIwMTMgTWF5IDEzCisKK2lmIGV4aXN0cygiY3VycmVudF9jb21waWxlciIpCisgIGZpbmlzaAorZW5kaWYKKworbGV0IGN1cnJlbnRfY29tcGlsZXIgPSAieGJ1aWxkIgorbGV0IHM6a2VlcGNwbz0gJmNwbworc2V0IGNwbyZ2aW0KKworaWYgZXhpc3RzKCI6Q29tcGlsZXJTZXQiKSAhPSAyCQkiIG9sZGVyIFZpbSBhbHdheXMgdXNlZCA6c2V0bG9jYWwKKyAgY29tbWFuZCAtbmFyZ3M9KiBDb21waWxlclNldCBzZXRsb2NhbCA8YXJncz4KK2VuZGlmCisKK0NvbXBpbGVyU2V0IGVycm9yZm9ybWF0PVwgJSMlZiglbFxcXCwlYyk6XCAlbQorQ29tcGlsZXJTZXQgbWFrZXByZz14YnVpbGRcIC9ub2xvZ29cIC92OnFcIC9wcm9wZXJ0eTpHZW5lcmF0ZUZ1bGxQYXRocz10cnVlCisKK2xldCAmY3BvID0gczprZWVwY3BvCit1bmxldCBzOmtlZXBjcG8KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggMGI3NDcwOC4uMjExNGZmNCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTEsNCArMSw0IEBACi0qZXZhbC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjMuICBMYXN0IGNoYW5nZTogMjAxMyBNYXkgMDYKKypldmFsLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMy4gIExhc3QgY2hhbmdlOiAyMDEzIE1heSAxNwogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMTcxLDcgKzExNzEsNyBAQAogQSB2YXJpYWJsZSBuYW1lIHRoYXQgaXMgcHJlY2VkZWQgd2l0aCAidzoiIGlzIGxvY2FsIHRvIHRoZSBjdXJyZW50IHdpbmRvdy4gIEl0CiBpcyBkZWxldGVkIHdoZW4gdGhlIHdpbmRvdyBpcyBjbG9zZWQuCiAKLQkJCQkJCSp0YWJwYWdlLXZhcmlhYmxlKiAqdDp2YXIqCisJCQkJCQkqdGFicGFnZS12YXJpYWJsZSogKnQ6dmFyKiAqdDoqCiBBIHZhcmlhYmxlIG5hbWUgdGhhdCBpcyBwcmVjZWRlZCB3aXRoICJ0OiIgaXMgbG9jYWwgdG8gdGhlIGN1cnJlbnQgdGFiIHBhZ2UsCiBJdCBpcyBkZWxldGVkIHdoZW4gdGhlIHRhYiBwYWdlIGlzIGNsb3NlZC4ge25vdCBhdmFpbGFibGUgd2hlbiBjb21waWxlZAogd2l0aG91dCB0aGUgfCt3aW5kb3dzfCBmZWF0dXJlfQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZnRfc3FsLnR4dCBiL3J1bnRpbWUvZG9jL2Z0X3NxbC50eHQKaW5kZXggYjRlYTVmZC4uOWFhNzExYiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZnRfc3FsLnR4dAorKysgYi9ydW50aW1lL2RvYy9mdF9zcWwudHh0CkBAIC0xLDQgKzEsNCBAQAotKmZ0X3NxbC50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjMuICBMYXN0IGNoYW5nZTogMjAxMyBBcHIgMDUKKypmdF9zcWwudHh0KglGb3IgVmltIHZlcnNpb24gNy4zLiAgTGFzdCBjaGFuZ2U6IDIwMTMgTWF5IDE1CiAKIGJ5IERhdmlkIEZpc2hidXJuCiAKQEAgLTM0OSw2ICszNDksNyBAQAogVGhlIHN0YXRpYyBtYXBzICh3aGljaCBhcmUgYmFzZWQgb24gdGhlIHN5bnRheCBoaWdobGlnaHQgZ3JvdXBzKSBmb2xsb3cgdGhpcwogZm9ybWF0OiA+CiAgICAgaW1hcCA8YnVmZmVyPiA8Qy1DPmsgPEMtXD48Qy1PPjpjYWxsIHNxbGNvbXBsZXRlI01hcCgnc3FsS2V5d29yZCcpPENSPjxDLVg+PEMtTz4KKyAgICBpbWFwIDxidWZmZXI+IDxDLUM+ayA8Qy1cPjxDLU8+OmNhbGwgc3FsY29tcGxldGUjTWFwKCdzcWxLZXl3b3JkXHcqJyk8Q1I+PEMtWD48Qy1PPgogCiBUaGlzIGNvbW1hbmQgYnJlYWtzIGRvd24gYXM6ID4KICAgICBpbWFwCQkgICAtIENyZWF0ZSBhbiBpbnNlcnQgbWFwCkBAIC0zNjksNiArMzcwLDkgQEAKIAkJCSAgICAgY29tbWFuZCB3aGlsZSBlZGl0aW5nIGEgU1FMIGZpbGUuCiAgICAgJ3NxbEtleXdvcmQnCSAgIC0gRGlzcGxheSB0aGUgaXRlbXMgZm9yIHRoZSBzcWxLZXl3b3JkIGhpZ2hsaWdodAogCQkJICAgICBncm91cAorICAgICdzcWxLZXl3b3JkXHcqJwkgICAtIEEgc2Vjb25kIG9wdGlvbiBhdmFpbGFibGUgd2l0aCBWaW0gNy40IHdoaWNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXMgYSByZWd1bGFyIGV4cHJlc3Npb24gdG8gZGV0ZXJtaW5lIHdoaWNoCisJCQkgICAgIHN5bnRheCBncm91cHMgdG8gdXNlCiAgICAgKTxDUj4JCSAgIC0gRXhlY3V0ZSB0aGUgOmxldCBjb21tYW5kCiAgICAgPEMtWD48Qy1PPgkJICAgLSBUcmlnZ2VyIHRoZSBzdGFuZGFyZCBvbW5pIGNvbXBsZXRpb24ga2V5IHN0cm9rZS4KIAkJCSAgICAgUGFzc2luZyBpbiAnc3FsS2V5d29yZCcgaW5zdHJ1Y3RzIHRoZSBTUUwKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2lmX3B5dGgudHh0IGIvcnVudGltZS9kb2MvaWZfcHl0aC50eHQKaW5kZXggYTJjOTQ5ZS4uYTk0MTgzZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaWZfcHl0aC50eHQKKysrIGIvcnVudGltZS9kb2MvaWZfcHl0aC50eHQKQEAgLTEsNCArMSw0IEBACi0qaWZfcHl0aC50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMy4gIExhc3QgY2hhbmdlOiAyMDEzIE1heSAwNgorKmlmX3B5dGgudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjMuICBMYXN0IGNoYW5nZTogMjAxMyBNYXkgMTcKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgUGF1bCBNb29yZQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaW5kZXgudHh0IGIvcnVudGltZS9kb2MvaW5kZXgudHh0CmluZGV4IDU0NTY2MTEuLjZiOGQ0NDUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2luZGV4LnR4dAorKysgYi9ydW50aW1lL2RvYy9pbmRleC50eHQKQEAgLTEsNCArMSw0IEBACi0qaW5kZXgudHh0KiAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMy4gIExhc3QgY2hhbmdlOiAyMDEzIE1heSAwNgorKmluZGV4LnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjMuICBMYXN0IGNoYW5nZTogMjAxMyBNYXkgMTcKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTE0MDMsOCArMTQwMywxMCBAQAogfDpwd2R8CQk6cHdbZF0JCXByaW50IGN1cnJlbnQgZGlyZWN0b3J5CiB8OnB5M3wJCTpweTMJCWV4ZWN1dGUgUHl0aG9uIDMgY29tbWFuZAogfDpweXRob24zfAk6cHl0aG9uMwlzYW1lIGFzIDpweTMKK3w6cHkzZG98CTpweTNkW29dCWV4ZWN1dGUgUHl0aG9uIDMgY29tbWFuZCBmb3IgZWFjaCBsaW5lCiB8OnB5M2ZpbGV8CTpweTNmW2lsZV0JZXhlY3V0ZSBQeXRob24gMyBzY3JpcHQgZmlsZQogfDpweXRob258CTpweVt0aG9uXQlleGVjdXRlIFB5dGhvbiBjb21tYW5kCit8OnB5ZG98CQk6cHlkW29dCQlleGVjdXRlIFB5dGhvbiBjb21tYW5kIGZvciBlYWNoIGxpbmUKIHw6cHlmaWxlfAk6cHlmW2lsZV0JZXhlY3V0ZSBQeXRob24gc2NyaXB0IGZpbGUKIHw6cXVpdHwJCTpxW3VpdF0JCXF1aXQgY3VycmVudCB3aW5kb3cgKHdoZW4gb25lIHdpbmRvdyBxdWl0IFZpbSkKIHw6cXVpdGFsbHwJOnF1aXRhW2xsXQlxdWl0IFZpbQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcGlfcGFyZW4udHh0IGIvcnVudGltZS9kb2MvcGlfcGFyZW4udHh0CmluZGV4IGRmYTJlNzEuLjcxNzI3YWEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3BpX3BhcmVuLnR4dAorKysgYi9ydW50aW1lL2RvYy9waV9wYXJlbi50eHQKQEAgLTEsNCArMSw0IEBACi0qcGlfcGFyZW4udHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMy4gIExhc3QgY2hhbmdlOiAyMDA4IEp1biAxNgorKnBpX3BhcmVuLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjMuICBMYXN0IGNoYW5nZTogMjAxMyBNYXkgMDgKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTQ2LDcgKzQ2LDEwIEBACiAgIGNsb3NlZCBmb2xkcy4KIC0gJ3N5bm1heGNvbCcgdGltZXMgMiBieXRlcyBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGN1cnNvciB0byBhdm9pZCBhIGRlbGF5CiAgIGluIGEgbG9uZyBsaW5lIHdpdGggc3ludGF4IGhpZ2hsaWdodGluZy4KLQorLSBBIHRpbWVvdXQgb2YgMzAwIG1zZWMgKDYwIG1zZWMgaW4gSW5zZXJ0IG1vZGUpLiBUaGlzIGNhbiBiZSBjaGFuZ2VkIHdpdGggdGhlCisgIGc6bWF0Y2hwYXJlbl90aW1lb3V0IGFuZCBnOm1hdGNocGFyZW5faW5zZXJ0X3RpbWVvdXQgdmFyaWFibGVzIGFuZCB0aGVpcgorICBidWZmZXItbG9jYWwgZXF1aXZhbGVudHMgYjptYXRjaHBhcmVuX3RpbWVvdXQgYW5kCisgIGI6bWF0Y2hwYXJlbl9pbnNlcnRfdGltZW91dC4KIAogSWYgeW91IHdvdWxkIGxpa2UgdGhlIHwlfCBjb21tYW5kIHRvIHdvcmsgYmV0dGVyLCB0aGUgbWF0Y2hpdCBwbHVnaW4gY2FuIGJlCiB1c2VkLCBzZWUgfG1hdGNoaXQtaW5zdGFsbHwuICBUaGlzIHBsdWdpbiBhbHNvIGhlbHBzIHRvIHNraXAgbWF0Y2hlcyBpbgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvc3ludGF4LnR4dCBiL3J1bnRpbWUvZG9jL3N5bnRheC50eHQKaW5kZXggODQyMTQxZi4uMzljNzgzOSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2Mvc3ludGF4LnR4dAorKysgYi9ydW50aW1lL2RvYy9zeW50YXgudHh0CkBAIC0xMjM5LDE3ICsxMjM5LDE3IEBACiAKIEVSTEFORwkJCQkJCSplcmxhbmcudmltKiAqZnQtZXJsYW5nLXN5bnRheCoKIAotVGhlIGVybGFuZyBoaWdobGlnaHRpbmcgc3VwcG9ydHMgRXJsYW5nIChFUmljc3NvbiBMQU5HdWFnZSkuCi1FcmxhbmcgaXMgY2FzZSBzZW5zaXRpdmUgYW5kIGRlZmF1bHQgZXh0ZW5zaW9uIGlzICIuZXJsIi4KK0VybGFuZyBpcyBhIGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgZGV2ZWxvcGVkIGJ5IEVyaWNzc29uLiAgRmlsZXMgd2l0aAordGhlIGZvbGxvd2luZyBleHRlbnRpb25zIGFyZSByZWNvZ25pemVkIGFzIEVybGFuZyBmaWxlczogZXJsLCBocmwsIHlhd3MuCiAKLUlmIHlvdSB3YW50IHRvIGRpc2FibGUga2V5d29yZHMgaGlnaGxpZ2h0aW5nLCBwdXQgaW4geW91ciAudmltcmM6ID4KLQk6bGV0IGVybGFuZ19rZXl3b3JkcyA9IDEKLUlmIHlvdSB3YW50IHRvIGRpc2FibGUgYnVpbHQtaW4tZnVuY3Rpb25zIGhpZ2hsaWdodGluZywgcHV0IGluIHlvdXIKLS52aW1yYyBmaWxlOiA+Ci0JOmxldCBlcmxhbmdfZnVuY3Rpb25zID0gMQotSWYgeW91IHdhbnQgdG8gZGlzYWJsZSBzcGVjaWFsIGNoYXJhY3RlcnMgaGlnaGxpZ2h0aW5nLCBwdXQgaW4KLXlvdXIgLnZpbXJjOiA+Ci0JOmxldCBlcmxhbmdfY2hhcmFjdGVycyA9IDEKK1RoZSBCSUZzIChidWlsdC1pbiBmdW5jdGlvbnMpIGFyZSBoaWdobGlnaHRlZCBieSBkZWZhdWx0LiBUbyBkaXNhYmxlIHRoaXMsCitwdXQgdGhlIGZvbGxvd2luZyBsaW5lIGluIHlvdXIgdmltcmM6ID4KKworICAgICAgOmxldCBnOmVybGFuZ19oaWdobGlnaHRfYmlmcyA9IDAKKworVG8gZW5hYmxlIGhpZ2hsaWdodGluZyBzb21lIHNwZWNpYWwgYXRvbXMsIHB1dCB0aGlzIGluIHlvdXIgdmltcmM6ID4KKworICAgICAgOmxldCBnOmVybGFuZ19oaWdobGlnaHRfc3BlY2lhbF9hdG9tcyA9IDEKIAogCiBGTEVYV0lLSQkJCQkqZmxleHdpa2kudmltKiAqZnQtZmxleHdpa2ktc3ludGF4KgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGFncyBiL3J1bnRpbWUvZG9jL3RhZ3MKaW5kZXggMjc3NWU4OC4uOWFmMTk2YSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGFncworKysgYi9ydW50aW1lL2RvYy90YWdzCkBAIC0yNTkwLDcgKzI1OTAsOSBAQAogOnB3ZAllZGl0aW5nLnR4dAkvKjpwd2QqCiA6cHkJaWZfcHl0aC50eHQJLyo6cHkqCiA6cHkzCWlmX3B5dGgudHh0CS8qOnB5MyoKKzpweTNkbwlpZl9weXRoLnR4dAkvKjpweTNkbyoKIDpweTNmaWxlCWlmX3B5dGgudHh0CS8qOnB5M2ZpbGUqCis6cHlkbwlpZl9weXRoLnR4dAkvKjpweWRvKgogOnB5ZglpZl9weXRoLnR4dAkvKjpweWYqCiA6cHlmaWxlCWlmX3B5dGgudHh0CS8qOnB5ZmlsZSoKIDpweXRob24JaWZfcHl0aC50eHQJLyo6cHl0aG9uKgpAQCAtNDI1OCw2ICs0MjYwLDcgQEAKIEU4NjAJZXZhbC50eHQJLypFODYwKgogRTg2MQlldmFsLnR4dAkvKkU4NjEqCiBFODYyCWV2YWwudHh0CS8qRTg2MioKK0U4NjMJaWZfcHl0aC50eHQJLypFODYzKgogRTg3CXdpbmRvd3MudHh0CS8qRTg3KgogRTg4CXdpbmRvd3MudHh0CS8qRTg4KgogRTg5CW1lc3NhZ2UudHh0CS8qRTg5KgpAQCAtNzMzNiw2ICs3MzM5LDggQEAKIHB5dGhvbi1vdXRwdXQJaWZfcHl0aC50eHQJLypweXRob24tb3V0cHV0KgogcHl0aG9uLXB5ZXZhbAlpZl9weXRoLnR4dAkvKnB5dGhvbi1weWV2YWwqCiBweXRob24tcmFuZ2UJaWZfcHl0aC50eHQJLypweXRob24tcmFuZ2UqCitweXRob24tdGFicGFnZQlpZl9weXRoLnR4dAkvKnB5dGhvbi10YWJwYWdlKgorcHl0aG9uLXRhYnBhZ2VzCWlmX3B5dGgudHh0CS8qcHl0aG9uLXRhYnBhZ2VzKgogcHl0aG9uLXZhcnMJaWZfcHl0aC50eHQJLypweXRob24tdmFycyoKIHB5dGhvbi12aW0JaWZfcHl0aC50eHQJLypweXRob24tdmltKgogcHl0aG9uLXZ2YXJzCWlmX3B5dGgudHh0CS8qcHl0aG9uLXZ2YXJzKgpAQCAtNzg1MSw2ICs3ODU2LDcgQEAKIHN5c3RlbS12aW1yYwlzdGFydGluZy50eHQJLypzeXN0ZW0tdmltcmMqCiBzfgljaGFuZ2UudHh0CS8qc34qCiB0CW1vdGlvbi50eHQJLyp0KgordDoJZXZhbC50eHQJLyp0OioKIHQ6dmFyCWV2YWwudHh0CS8qdDp2YXIqCiB0XyMyCXRlcm0udHh0CS8qdF8jMioKIHRfIzQJdGVybS50eHQJLyp0XyM0KgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGVybS50eHQgYi9ydW50aW1lL2RvYy90ZXJtLnR4dAppbmRleCBkZTAzMTNjLi5lZmViMGZmIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90ZXJtLnR4dAorKysgYi9ydW50aW1lL2RvYy90ZXJtLnR4dApAQCAtMzI4LDcgKzMyOCw3IEBACiAJdF9rOAk8Rjg+CQlmdW5jdGlvbiBrZXkgOAkJKjxGOD4qCSp0X2s4KiAqJ3RfazgnKgogCXRfazkJPEY5PgkJZnVuY3Rpb24ga2V5IDkJCSo8Rjk+KgkqdF9rOSogKid0X2s5JyoKIAl0X2s7CTxGMTA+CQlmdW5jdGlvbiBrZXkgMTAJCSo8RjEwPioJKnRfazsqICondF9rOycqCi0JdF9GMQk8RjExPgkJZnVuY3Rpb24ga2V5IDExCQkqPEYxMT4qICp0X0YxKiAqJ3RfRjEnKgorCXRfRjEJPEYxMT4JCWZ1bmN0aW9uIGtleSAxMQkJKjxGMTE+KgkqdF9GMSogKid0X0YxJyoKIAl0X0YyCTxGMTI+CQlmdW5jdGlvbiBrZXkgMTIJCSo8RjEyPioJKnRfRjIqICondF9GMicqCiAJdF9GMwk8RjEzPgkJZnVuY3Rpb24ga2V5IDEzCQkqPEYxMz4qCSp0X0YzKiAqJ3RfRjMnKgogCXRfRjQJPEYxND4JCWZ1bmN0aW9uIGtleSAxNAkJKjxGMTQ+KgkqdF9GNCogKid0X0Y0JyoKQEAgLTM1OCw5ICszNTgsOSBAQAogCXRfa0kJPEluc2VydD4JaW5zZXJ0IGtleQkJCSp0X2tJKiAqJ3Rfa0knKgogCXRfa0QJPERlbD4JCWRlbGV0ZSBrZXkJCQkqdF9rRCogKid0X2tEJyoKIAl0X2tiCTxCUz4JCWJhY2tzcGFjZSBrZXkJCQkqdF9rYiogKid0X2tiJyoKLQl0X2tCCTxTLVRhYj4JCWJhY2stdGFiIChzaGlmdC10YWIpICAqPFMtVGFiPiogKnRfa0IqICondF9rQicqCisJdF9rQgk8Uy1UYWI+CQliYWNrLXRhYiAoc2hpZnQtdGFiKSAgKjxTLVRhYj4qCSp0X2tCKiAqJ3Rfa0InKgogCXRfa2gJPEhvbWU+CQlob21lIGtleQkJCSp0X2toKiAqJ3Rfa2gnKgotCXRfIzIJPFMtSG9tZT4Jc2hpZnRlZCBob21lIGtleSAgICAgKjxTLUhvbWU+KiAqdF8jMiogKid0XyMyJyoKKwl0XyMyCTxTLUhvbWU+CXNoaWZ0ZWQgaG9tZSBrZXkgICAgICo8Uy1Ib21lPioJKnRfIzIqICondF8jMicqCiAJCTx4SG9tZT4JCWFsdGVybmF0ZSBob21lIGtleQkJKjx4SG9tZT4qCiAJdF9ANwk8RW5kPgkJZW5kIGtleQkJCQkqdF9ANyogKid0X0A3JyoKIAl0Xyo3CTxTLUVuZD4JCXNoaWZ0ZWQgZW5kIGtleQkqPFMtRW5kPiogKnRfc3RhcjcqICondF9zdGFyNycqCkBAIC0zNzMsOCArMzczLDggQEAKIAl0X0s1CTxrUGFnZURvd24+CWtleXBhZCBwYWdlLWRvd24ga2V5CQkqdF9LNSogKid0X0s1JyoKIAl0X0s2CTxrUGx1cz4JCWtleXBhZCBwbHVzIGtleQkgICAgICAqPGtQbHVzPioJKnRfSzYqICondF9LNicqCiAJdF9LNwk8a01pbnVzPglrZXlwYWQgbWludXMga2V5ICAgICAqPGtNaW51cz4qCSp0X0s3KiAqJ3RfSzcnKgotCXRfSzgJPGtEaXZpZGU+CWtleXBhZCBkaXZpZGUJICAgICo8a0RpdmlkZT4qICp0X0s4KiAqJ3RfSzgnKgotCXRfSzkJPGtNdWx0aXBseT4Ja2V5cGFkIG11bHRpcGx5ICAgKjxrTXVsdGlwbHk+KiAqdF9LOSogKid0X0s5JyoKKwl0X0s4CTxrRGl2aWRlPglrZXlwYWQgZGl2aWRlCSAgICAqPGtEaXZpZGU+KgkqdF9LOCogKid0X0s4JyoKKwl0X0s5CTxrTXVsdGlwbHk+CWtleXBhZCBtdWx0aXBseSAgICo8a011bHRpcGx5PioJKnRfSzkqICondF9LOScqCiAJdF9LQQk8a0VudGVyPglrZXlwYWQgZW50ZXIga2V5ICAgICAqPGtFbnRlcj4qCSp0X0tBKiAqJ3RfS0EnKgogCXRfS0IJPGtQb2ludD4Ja2V5cGFkIGRlY2ltYWwgcG9pbnQgKjxrUG9pbnQ+KgkqdF9LQiogKid0X0tCJyoKIAl0X0tDCTxrMD4JCWtleXBhZCAwCQkgKjxrMD4qCSp0X0tDKiAqJ3RfS0MnKgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdG9kby50eHQgYi9ydW50aW1lL2RvYy90b2RvLnR4dAppbmRleCAyY2ZlNjNjLi44YjQxN2RlIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90b2RvLnR4dAorKysgYi9ydW50aW1lL2RvYy90b2RvLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp0b2RvLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4zLiAgTGFzdCBjaGFuZ2U6IDIwMTMgTWF5IDA2CisqdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMy4gIExhc3QgY2hhbmdlOiAyMDEzIE1heSAxNwogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0zNCw2ICszNCwxMzQgQEAKIAkJCQkJCQkqa25vd24tYnVncyoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEtub3duIGJ1Z3MgYW5kIGN1cnJlbnQgd29yayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCistLS0gUHl0aG9uIGludGVyZmFjZQorCitQeXRob24gU3lzdGVtRXhpdCBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgcHJvcGVybHkuICBQYXRjaCB0byBjYXRjaCB0aGUKK2V4Y2VwdGlvbiBhbmQgZ2l2ZSBhbiBlcnJvci4gKFlhc3VoaXJvIE1hdHN1bW90bykKK0RvZXMgbm90IHdvcmssIHRlc3RzIGZhaWwuCisKK1BhdGNoIHRvIHByaW50IHRoZSByZXN1bHQgb2YgYSA6cHl0aG9uIGNvbW1hbmQuIChNYXhpbSBQaGlsaXBwb3YKKzxwaGlsaXBwb3ZtaUBnbWFpbC5jb20+LCAyMDEyIEF1ZyAxNikgIFVwZGF0ZSBBdWcgMTcuCitQYXRjaCBubyBsb25nZXIgYXBwbGllcy4KKworIjpweXRob24gb3MuY2hkaXIoJy90bXAnKSIgbWFrZXMgc2hvcnQgYnVmZmVyIG5hbWVzIGludmFsaWQuIChYYXZpZXIgZGUgR2F5ZSkKK0NoZWNrIGRpcmVjdG9yeSBhbmQgY2FsbCBzaG9ydGVuX2ZuYW1lcygpPyAgQmV0dGVyOiBtYWtlIG9zLmNoZGlyKCkKK2ludm9rZSB0aGUgaW50ZXJhbCA6Y2QgaW1wbGVtZW50YXRpb24sIHRoYXQgdGFrZXMgY2FyZSBvZiBhbGwgc2lkZQorZWZmZWN0cy4KKworTWFjOiBPUy9YIDEwLjQgd2l0aCBQeXRob24gMi41IGluc3RhbGxlZDogY29uZmlndXJlIGZpbmRzIGFuIGV4dHJhIGFyZ3VtZW50Cit0aGF0IGJyZWFrcyB0aGUgYnVpbGQuIChCcmlhbiBWaWN0b3IsIDIwMDggU2VwIDEpCisKK1BhdGNoIHRvIGFjY2VzcyBzY3JlZW4gdW5kZXIgUHl0aG9uLiAoTWFya28gTWFobmksIDIwMTAgSnVsIDE4KQorCitQeXRob246ICI6cHkgcmF3X2lucHV0KCdwcm9tcHQnKSIgZG9lc24ndCB3b3JrLiAoTWFudSBIYWNrKQorCitXaW4zMjogVGhlIFB5dGhvbiBpbnRlcmZhY2Ugb25seSB3b3JrcyB3aXRoIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiwgc2VsZWN0ZWQgYXQKK2NvbXBpbGUgdGltZS4gIENhbiB0aGlzIGJlIG1hZGUgdG8gd29yayB3aXRoIHZlcnNpb24gMi4xIGFuZCAyLjIgZHluYW1pY2FsbHk/CisKK1B5dGhvbjogQmUgYWJsZSB0byBkZWZpbmUgYSBQeXRob24gZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIGRpcmVjdGx5IGZyb20KK1ZpbSBzY3JpcHQuICBSZXF1aXJlcyBjb252ZXJ0aW5nIHRoZSBhcmd1bWVudHMgYW5kIHJldHVybiB2YWx1ZS4KKworLS0tIHJ1bnRpbWUgZmlsZXMKKworU3ludGF4IGZpbGUgZm9yIHByb3RvY29sIGJ1ZmZlcnMuIChGZW5nIFhpYW8sIDIwMTMgTWF5IDkpCitIYXMgYW4gdWdseSBjb3B5cmlnaHQgbm90aWNlLiAgTm8gY29uZmxpY3Qgd2l0aCBWaW0gbGljZW5zZT8KKworUGF0Y2ggZm9yIEphdmFTY3JpcHQgc3ludGF4LiAoS2V2aW4gTG9ja2UsIDIwMTMgTWF5IDkpCitDbGF1ZGlvIGRpZG4ndCByZXNwb25kIHlldC4KKworLS0tIEZhc3QgcmVnZXhwIGVuZ2luZQorCitJbmNsdWRpbmcgTkZBIHJlZ2V4cCBjb2RlLiAgTGF0ZXN0IHZlcnNpb24gcHJvYmFibHkgaXM6CitodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3ZpbS1zb2MyMDA4LXJlZ2V4cC9zb3VyY2UvYnJvd3NlL3RydW5rL3ZpbTcyLXJlL3NyYy9yZWdleHBfbmZhLmMKK1BhdGNoIHVwZGF0ZWQgYnkgS2VuIFRha2F0YS4gKE1heSAxMykKKworVG8gYmUgYWJsZSB0byBydW4gdGVzdHM6CistIHNldCBkZWZhdWx0cmU9b2xkIC8gbmZhIC8gYXV0bworLSBJbiBwYXR0ZXJuIHVzZSAiXCUjPSB0byBzZXQgdGhlIGVuZ2luZTogMCA9IGF1dG9tYXRpYywgMSA9IG9sZCAyID0gbmZhCisKK0dldCBleGFtcGxlIGZpbGVzIGZvciBtYW55IGxhbmd1YWdlcy4gQ29tcGFyZSBzeW50YXggaGlnaGxpZ2h0aW5nIHdpdGggb2xkIGFuZAorbmV3IHJlZ2V4cCwgZmluZCByZWdleHAgY29uc3RydWN0cyB3aGVyZSBORkEgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkuCitJZGVhIGZvciBjb21wYXJpbmcgb3V0cHV0OiB1c2UgZm9ybWF0LnZpbSAoWnlYLCAyMDEzIE1heSAxMikKK01ha2VTeW5DaGsgZnJvbSBDaGFybGVzIENhbXBiZWxsLiAoTWF5IDE0KQorCitQZXJmb3JtYW5jZSB0ZXN0czoKKy0gfi92aW0vdGVzdC92ZXJ5c2xvdy5qcyAoZmlsZSBmcm9tIERhbmllbCBGZXRjaGluc29uKQorLSB+L3ZpbS90ZXN0L3Nsb3dzZWFyY2gKKy0gfi92aW0vdGVzdC9yZ2IudmltCistIH4vdmltL3RleHQvRmVpcUNmZy54bWwgKGZpbGUgZnJvbSBOZXRqdW5lKQorLSB+L3ZpbS90ZXh0L2VkbC5zdmcgIChhbHNvIFhNTCkKKy0gc2VhcmNoIGZvciAgYS4qZSpleG4gIGluIHRoZSB2aW0gZXhlY3V0YWJsZS4gIEdvIHRvIGxhc3QgbGluZSB0byB1c2UKKyAgJ2hsc2VhcmNoJy4KKworLS0tIGJ1ZyBmaXhlcworCitQYXRjaCB0byBhdm9pZCB3cm9uZyBlcnJvciBtZXNzYWdlIGZvciAxLjBbMF0uIChZYXN1aGlybyBNYXRzdW1vdG8sIDIwMTMgTWF5CisxKQorCitQYXRjaCBmb3IgaWZfbHVhLiAoTHVpcyBDYXJ2YWxobywgMjAxMiBBdWcgMjYsIHVwZGF0ZSBBdWcgMjksIGFub3RoZXIgQXVnIDMwLAordGhlbiBTZXAgMSwgcmVtaW5kZXIgT2N0IDE0KQorCitQYXRjaCB0byBjaGVjayBpZiAnZm9sZGV4cHInIHNldHMgZGlkX2Vtc2cuIChDaHJpc3RpYW4gQnJhYmFuZHQsIDIwMTMgTWFyIDIwKQorCitQYXRjaCBmb3IgJ2JhY2t1cGNvcHknIGRlZmF1bHQgYmVoYXZpb3IgZm9yIHN5bWxpbmtzIG9uIFdpbmRvd3MuIChEYXZpZCBQb3BlLAorMjAxMiBNYXIgMjEsIHVwZGF0ZSBNYXIgMzEpCitXaXRoIGZpeCBmb3IgbWVtb3J5IGxlYWs6IEtlbiBUYWthdGEsIDIwMTIgQXVnIDI0CitBbm90aGVyIHVwZGF0ZSBTZXAgMjQuCitBbHNvIHBhdGNoIGZyb20gSm9lcmcgQm9ybmVtYW5uLCAyMDEzIEFwciAzMC4KKworVW5kbyBwcm9ibGVtOiBsaW5lIG5vdCByZW1vdmVkIGFzIGV4cGVjdGVkIHdoZW4gdXNpbmcgc2V0bGluZSgpIGZyb20gSW5zZXJ0Cittb2RlLiAoSXNyYWVsIENoYXVjYSwgMjAxMCBNYXkgMTMsIG1vcmUgaW4gc2Vjb25kIG1zZykKK0JyZWFrIHVuZG8gd2hlbiBDVFJMLVIgPSBjaGFuZ2VzIHRoZSB0ZXh0PyAgT3Igc2F2ZSBtb3JlIGxpbmVzPworUGF0Y2ggYnkgQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDEyIE5vdiAxNi4KKworRG8gYWxsb3cgcmVhbCB0YWdzIGFib3ZlIHRoZSAhX1RBRyBlbnRyaWVzLiBVbmRvIG9sZGVyIHBhdGNoLiBJc3N1ZSA5MC4KKworTWF0Y2hlcyBtaWdodCBiZSBoaWdobGlnaHRlZCBjb3JyZWN0bHkuIEluZWZmaWNpZW50IHBhdGNoIGJ5IENocmlzdGlhbgorQnJhYmFuZHQsIDIwMTMgRmViIDI2LgorCitQYXRjaCB0byB1c2UgYm9sZC9pdGFsaWMgZm9udHMgd2hlbiAnZ3VpZm9udGV3aWRlJyBpcyBzZXQuIChLZW4gVGFrYXRhLCAyMDEzCitNYXIgMzEpCisKK1Byb2JsZW0gd2l0aCB3aW5maXhoZWlnaHQgYW5kIHJlc2l6aW5nLiAoWXVraWhpcm8gTmFrYWRhaXJhLCAyMDExIFNlcCAxNykKK1BhdGNoIFNlcCAxOC4KKworUGF0Y2ggZm9yIElNRSBwcm9ibGVtcy4gUmVtb3ZlIGhhY2tpbmcgY29kZSBmb3Igb2xkIElNLiAoWXVraWhpcm8gTmFrYWRhaXJhLAorMjAxMiBKdWwgMjApCisKK1BhdGNoIHRvIGZpeCBmaW5kaW5nIHRvb2xiYXIgYml0bWFwcy4gIElzc3VlIDEyOS4KKworQ29tYmluaW5nIGNoYXJhY3RlcnMgYXJlIG5vdCB1c2VkIHdoZW4gZXhlY3V0aW5nIGEgcmVnaXN0ZXIgd2l0aCA6QHcuCisoV2lsbGlhbSBGdWdoLCAyMDEzIEFwciA1LCBtb3JlIGluZm8gZnJvbSBCZW4gRnJpdHopCitQYXRjaCBieSBDaHJpc3RpYW4gQnJhYmFuZHQsIDIwMTMgQXByIDYuICBTZWNvbmQgb25lLgorCitNUy1XaW5kb3dzIEFDTCBzdXBwb3J0IGRvZXNuJ3Qgd29yayB3ZWxsLiAgUGF0Y2ggZnJvbSBLZW4gVGFrYXRhLCAyMDEyIEF1ZyAyOS4KK1VwZGF0ZSBBdWcgMzEuCitBbm90aGVyIHBhdGNoIGZvciBNaW5nVywgMjAxMiBEZWMgMjkuCisKK0J1ZyBpbiBjb21wbGV0aW9uIG1lbnUuIChPbGl2aWVyIFRldWxpZXJlLCAyMDEzIEZlYiAxNSkKK1BhdGNoIGJ5IENocmlzdGlhbiBCcmFiYW5kdCwgRmViIDE2LgorCisnY3Vyc29ybGluZScgaXMgZHJhd24gaW5jb3JyZWN0bHkgaW4gZGlmZiBtb2RlLiBQYXRjaCBieSBDaHJpc3RpYW4gQnJhYmFuZHQsCisyMDEyIEFwciAyLgorCistLS0gc2xpZ2h0bHkgaW5jb21wYXRpYmxlIGNoYW5nZXMKKworUGF0Y2ggdG8gbG9hZCB+Ly52aW0vdmltcmMgd2hlbiB+Ly52aW1yYyBpc24ndCBmb3VuZC4gKExlY2ggTG9yZW5zLCAyMDEzIEFwcgorMTMpCisKK0l0J3MgcHJvYmFibHkgYSBnb29kIGlkZWEgdG8gbWFrZSBhIG5lZ2F0aXZlIHZhbHVlIGZvciAnc3RzJyB1c2UgdGhlIHZhbHVlIG9mCisnc3cnLiAgUGF0Y2ggYnkgU284cmVzLCBPY3QgMyAyMDEyCisKK1doZW4gYSBidWZmZXItbG9jYWwgbWFwcGluZyBpcyB1c2VkLCBidXQgYSBnbG9iYWwgbWFwcGluZyBzdGFydHMgd2l0aCB0aGUgc2FtZQorY2hhcmFjdGVycywgVmltIGN1cnJlbnRseSB3YWl0cyBmb3IgdGhlIG5leHQgdHlwZWQgY2hhcmFjdGVyIHRvIGZpbmQgb3V0IGlmCit0aGUgZ2xvYmFsIG1hcHBpbmcgbWF0Y2hlcy4gIEl0IGlzIHByb2JhYmx5IGJldHRlciB0byBsZXQgdGhlIGxvY2FsIG1hcHBpbmcKK3dpbiBhbmQgbm90IHdhaXQuIChkaXNjdXNzaW9uIHdpdGggQW5keSBXb2t1bGEsIDIwMTMgSmFuIDMwKQorUGF0Y2ggYnkgTWljaGFlbCBIZW5yeSwgMjAxMyBKYW4gMzAsIHVwZGF0ZSBGZWIgMTUuCisKKworLS0tLSBGaXhlcyB0byBiZSBpbmNsdWRlZCBiZWZvcmUgNy40IGFib3ZlLCBsZXNzIGltcG9ydGFudCBzdHVmZiBiZWxvdyAtLS0tCisKIFNldmVyYWwgc3ludGF4IGZpbGUgbWF0Y2ggIl5ccyoiIHdoaWNoIG1heSBnZXQgdW5kZXJsaW5lZCBpZiB0aGF0J3MgaW4gdGhlCiBoaWdobGlnaHQgZ3JvdXAuICBBZGQgYSAiXHpzIiBhZnRlciBpdD8KIApAQCAtNDgsOCArMTc2LDYgQEAKIAogSmF2YXNjcmlwdCBmaWxlIHdoZXJlIGluZGVudCBnZXRzIHN0dWNrIG9uOiBHYWxheHlNYXN0ZXIsIDIwMTIgTWF5IDMuCiAKLU5lZGVybGFuZHNlIHZlcnRhbGluZyB0dXRvci4gKFJvYiBCaXNob2ZmLCAyMDEzIEFwciAyNCkKLQogVGhlIENvbXBsZXRlRG9uZSBhdXRvY29tbWFuZCBuZWVkcyBzb21lIGluZm8gcGFzc2VkIHRvIGl0OgogLSBUaGUgd29yZCB0aGF0IHdhcyBzZWxlY3RlZCAoZW1wdHkgaWYgYWJhbmRvbmVkIGNvbXBsZXRlKQogLSBUeXBlIG9mIGNvbXBsZXRpb246IHRhZywgb21uaWZ1bmMsIHVzZXIgZnVuYy4KQEAgLTY1LDkgKzE5MSw2IEBACiBjb21wbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIGRpcmVjdG9yeS4gIE5vIGVzY2FwaW5nIGZvciB0aGUgIiEiPyAoSmFuCiBTdG9ja2VyLCAyMDEyIEphbiA1KQogCi1QYXRjaCB0byBsb2FkIH4vLnZpbS92aW1yYyB3aGVuIH4vLnZpbXJjIGlzbid0IGZvdW5kLiAoTGVjaCBMb3JlbnMsIDIwMTMgQXByCi0xMykKLQogUHJvYmxlbSBjYXVzZWQgYnkgcGF0Y2ggNy4zLjYzODogd2luZG93LT5vcGVuIGRvZXMgbm90IHVwZGF0ZSB3aW5kb3cKIGNvcnJlY3RseS4gSXNzdWUgOTEuCiAKQEAgLTc2LDkwICsxOTksNDEgQEAKIAogUGF0Y2ggdG8gdmlldyBjb3ZlcmFnZSBvZiB0aGUgdGVzdHMuIChOYXpyaSBSYW1saXksIDIwMTMgRmViIDE1KQogCi1QYXRjaCB0byBtYWtlIHZpbS5iaW5kZXZhbCgpIGluIFB5dGhvbiB3b3JrLiAoWXVraWhpcm8gTmFrYWRhaXJhLCAyMDEzIE1hciAyNSkKLQotUGF0Y2ggdG8gYXZvaWQgd3JvbmcgZXJyb3IgbWVzc2FnZSBmb3IgMS4wWzBdLiAoWWFzdWhpcm8gTWF0c3Vtb3RvLCAyMDEzIE1heQotMSkKLQogUGF0Y2ggdG8gaW52ZXJ0IGNoYXJhY3RlcnMgZGlmZmVyZW50bHkgaW4gR1RLLiAoWXVraWhpcm8gTmFrYWRhaXJhLCAyMDEzIE1heQogNSkKIAotUGF0Y2ggZm9yICdiYWNrdXBjb3B5JyBkZWZhdWx0IGJlaGF2aW9yIGZvciBzeW1saW5rcyBvbiBXaW5kb3dzLiAoRGF2aWQgUG9wZSwKLTIwMTIgTWFyIDIxLCB1cGRhdGUgTWFyIDMxKQotV2l0aCBmaXggZm9yIG1lbW9yeSBsZWFrOiBLZW4gVGFrYXRhLCAyMDEyIEF1ZyAyNAotQW5vdGhlciB1cGRhdGUgU2VwIDI0LgotQWxzbyBwYXRjaCBmcm9tIEpvZXJnIEJvcm5lbWFubiwgMjAxMyBBcHIgMzAuCi0KLURvIGFsbG93IHJlYWwgdGFncyBhYm92ZSB0aGUgIV9UQUcgZW50cmllcy4gVW5kbyBvbGRlciBwYXRjaC4gSXNzdWUgOTAuCi0KIFBhdGNoIHRvIGFkZCB0aGUgYnVmZmVybGlzdCgpIGZ1bmN0aW9uLiAoWWVnYXBwYW4gTGFrc2htYW5hbiwgMjAxMyBNYXkgNSkKIAorUGF0Y2ggdG8gYWxsb3cgc2V0dGluZyB3OnF1aWNrZml4X3RpdGxlIHZpYSBzZXRxZmxpc3QoKSBhbmQgc2V0bG9jbGlzdCgpCitmdW5jdGlvbnMuIChDaHJpc3RpYW4gQnJhYmFuZHQsIDIwMTMgTWF5IDgsIHVwZGF0ZSBNYXkgMTEpCisKIFBhdGNoIHRvIHN1cHBvcnQgJ3UnIGluIGludGVyYWN0aXZlIHN1YnN0aXR1dGUuIChDaHJpc3RpYW4gQnJhYmFuZHQsIDIwMTIgU2VwCiAyOCkgIFdpdGggdGVzdHM6IE9jdCA5LgogCitQYXRjaCB0byBhZGQgZ2V0bG9jc3RhY2soKSAvIHNldGxvY3N0YWNrKCkuIChDaHJpc3RpYW4gQnJhYmFuZHQsIDIwMTMgTWF5IDE0KQorU2Vjb25kIG9uZS4KKwogUGF0Y2ggdG8gbWFrZSBmb2xkIHVwZGF0ZXMgbXVjaCBmYXN0ZXIuIChDaHJpc3RpYW4gQnJhYmFuZHQsIDIwMTIgRGVjKQogCiBQYXRjaCBmb3IgSU1FIGhhbmRsaW5nLCBhZGRzICdpbWFjdGl2YXRlZnVuYycgYW5kICdpbXN0YXR1c2Z1bmMnIG9wdGlvbi4KIChZdWtpaGlybyBOYWthZGFpcmEsIDIwMTIgQXVnIDE2KQogUGF0Y2ggdG8gaW1wcm92ZSBJTUUgaGFuZGxpbmcuIChZYXN1aGlybyBNYXRzdW1vdG8sIDIwMTIgSnVsIDE4KQogCi1VbmRvIHByb2JsZW06IGxpbmUgbm90IHJlbW92ZWQgYXMgZXhwZWN0ZWQgd2hlbiB1c2luZyBzZXRsaW5lKCkgZnJvbSBJbnNlcnQKLW1vZGUuIChJc3JhZWwgQ2hhdWNhLCAyMDEwIE1heSAxMywgbW9yZSBpbiBzZWNvbmQgbXNnKQotQnJlYWsgdW5kbyB3aGVuIENUUkwtUiA9IGNoYW5nZXMgdGhlIHRleHQ/ICBPciBzYXZlIG1vcmUgbGluZXM/Ci1QYXRjaCBieSBDaHJpc3RpYW4gQnJhYmFuZHQsIDIwMTIgTm92IDE2LgotCiBJc3N1ZSA1NDogZG9jdW1lbnQgYmVoYXZpb3Igb2YgLWNvbXBsZXRlLCBhbHNvIGV4cGFuZHMgYXJnLgogCi1QeXRob24gcGF0Y2ggNzogbW92ZSBtb3JlIHRvIGlmX3B5X2JvdHkuIChaeVggMjAxMyBBcHIgMjYpCi1QeXRob24gcGF0Y2ggODogYWRkIHZpbS53aW5kb3cubnVtYmVyLiAoWnlYIDIwMTMgQXByIDI2KQotUHl0aG9uIHBhdGNoIDk6IHJlbW92ZSB1c2VsZXNzIGNhbGxzLi4gKFp5WCAyMDEzIEFwciAyNikKLVB5dGhvbiBwYXRjaCAxMDogd2luZG93IHBvc2l0aW9uLiAoWnlYIDIwMTMgQXByIDI2KQotUHl0aG9uIHBhdGNoIDExOiByZW9yZGVyIGNvZGUgaW4gaWZfcHlfYm90aCAoWnlYIDIwMTMgQXByIDI4KQotUHl0aG9uIHBhdGNoIDEyOiBmaXggU0VHVnMgKFp5WCAyMDEzIEFwciAyOCkKLVB5dGhvbiBwYXRjaCAxMzogbmVnYXRpdmUgaW5kaWNlcyB3ZXJlIGZhaWxpbmcgKFp5WCAyMDEzIEFwciAyOCkKLVB5dGhvbiBwYXRjaCAxNDogdGVzdHMgZm9yIHByZXZpb3VzIGZpeGVzIChaeVggMjAxMyBBcHIgMjgpCi1QeXRob24gcGF0Y2ggMTU6IG1ha2UgYnVmbGlzdCBhIGJ1Zm1hcCAoWnlYIDIwMTMgQXByIDI4KSAgaW5jb21wYXRpYmxlPwotUHl0aG9uIHBhdGNoIDE2OiBmaXggbmFtZSBvZiBGdW5jdGlvblR5cGUgKFp5WCAyMDEzIEFwciAyOCkKLVB5dGhvbiBwYXRjaCAxNzogYWRkIGl0ZXJhdG9ycyAoWnlYIDIwMTMgQXByIDI4KQotUHl0aG9uIHBhdGNoIDE4OiBQeXRob24gMi4yIHN1cHBvcnQgKFp5WCAyMDEzIEFwciAyOCkKLVB5dGhvbiBwYXRjaCAxOTogZHJvcCBzdXBwb3J0IGZvciBvbGQgUHl0aG9ucyAoWnlYIDIwMTMgQXByIDI4KQotUHl0aG9uIHBhdGNoIDIwOiB0ZXN0cyBmb3IgdmltLmJ1ZmZlcnMgKFp5WCAyMDEzIEFwciAyOCwgc2Vjb25kIG9uZSkKLVB5dGhvbiBwYXRjaCAyMGE6IHRlc3RzIGZvciB2aW0uYnVmZmVybGlzdCAoWnlYIDIwMTMgTWF5IDEpCi1QeXRob24gcGF0Y2ggMjE6IGFkZCB2aW0udGFicGFnZXMgYW5kIHZpbS5jdXJyZW50LnRhYnBhZ2UgKFp5WCAyMDEzIE1heSAxKQotUHl0aG9uIHBhdGNoIDIyOiBtYWtlIEtleUVycm9ycyB1c2UgUHlFcnJfU2V0T2JqZWN0IChaeVggMjAxMyBNYXkgMSkKLVB5dGhvbiBwYXRjaCAyMzogdHJhbnNmb3JtIGFuZCBjbGVhbiBweXRob24gZXhjZXB0aW9ucyAoWnlYIDIwMTMgTWF5IDEpCi1QeXRob24gcGF0Y2ggMjQ6IGFkZCBhYmlsaXR5IHRvIGFzc2lnbiB0byBtb3JlIHZpbS5jdXJyZW50IGF0dHJpYnV0ZXMgKFp5WAotCQkyMDEzIE1heSAxKQotUHl0aG9uIHBhdGNoIDI1OiBtYWtlIHZpbS5lcnJvciBFeGNlcHRpb24gc3ViY2xhc3MgKFp5WCAyMDEzIE1heSAxKQotUHl0aG9uIHBhdGNoIDI2OiBjaGVjayB3aGV0aGVyIFB5T2JqZWN0X0lzVHJ1ZSBmYWlsZWQgKFp5WCAyMDEzIE1heSAxKQotUHl0aG9uIHBhdGNoIDI3OiBhZGQgdGVzdHMgZm9yIHZhcmlvdXMgcHl0aG9uIGludGVyZmFjZXMgKFp5WCAyMDEzIE1heSAxKQotCi1NYXRjaGVzIG1pZ2h0IGJlIGhpZ2hsaWdodGVkIGNvcnJlY3RseS4gSW5lZmZpY2llbnQgcGF0Y2ggYnkgQ2hyaXN0aWFuCi1CcmFiYW5kdCwgMjAxMyBGZWIgMjYuCi0KIC0gICBBZGQgcmVnZXggZm9yICdwYXJhZ3JhcGhzJyBhbmQgJ3NlY3Rpb25zJzogJ3BhcmFyZScgYW5kICdzZWN0cmUnLiAgQ29tYmluZQogICAgIHRoZSB0d28gaW50byBhIHJlZ2V4IGZvciBzZWFyY2hpbmcuIChOZWQgS29ueikKIFBhdGNoIGJ5IENocmlzdGlhbiBCcmFiYW5kdCwgMjAxMyBBcHIgMjAsIHVuZmluaXNoZWQuCiAKLVBhdGNoIHRvIHVzZSBib2xkL2l0YWxpYyBmb250cyB3aGVuICdndWlmb250ZXdpZGUnIGlzIHNldC4gKEtlbiBUYWthdGEsIDIwMTMKLU1hciAzMSkKLQotUGF0Y2ggdG8gZml4IGZpbmRpbmcgdG9vbGJhciBiaXRtYXBzLiAgSXNzdWUgMTI5LgotCi1QYXRjaCB0byBoYW5kbGUgUHl0aG9uIFN5c3RlbUV4aXQuIChZYXN1aGlybyBNYXRzdW1vdG8sIDIwMTMgQXByIDE1KQorQnVnOiBmaW5kZmlsZSgiYW55IiwgImh0dHA6Ly87IikgcmV0dXJucyBodHRwOi8vYW55LiAoQW5kcmV3IFBpbWxvdHQsIDIwMTMgTWF5Cis3KSAgTm90IHN1cmUgaWYgdGhhdCBjYW4gYmUgZml4ZWQsIGJ1dCB3aGVuIHVzaW5nICJmaWxlOi8vIiBpdCBzaG91bGQgYmUKK3Bvc3NpYmxlIHRvIGNoZWNrIGlmIHRoZSBmaWxlIGV4aXN0cy4KIAogdjpyZWdpc3RlciBpcyBub3QgZGlyZWN0bHkgcmVzZXQgdG8gIiBhZnRlciBhIGRlbGV0ZSBjb21tYW5kIHRoYXQgc3BlY2lmaWVzIGEKIHJlZ2lzdGVyLiAgSXQgaXMgcmVzZXQgYWZ0ZXIgdGhlIG5leHQgY29tbWFuZC4gKFN0ZXZlIFZlcm1ldWxlbiwgMjAxMyBNYXIgMTYpCiAKICdmZicgaXMgd3JvbmcgZm9yIG9uZS1saW5lIGZpbGUgd2l0aG91dCBFT0wuIChJc3N1ZSA3NykKIAotUGF0Y2ggZm9yIGlmX2x1YS4gKEx1aXMgQ2FydmFsaG8sIDIwMTIgQXVnIDI2LCB1cGRhdGUgQXVnIDI5LCBhbm90aGVyIEF1ZyAzMCwKLXRoZW4gU2VwIDEsIHJlbWluZGVyIE9jdCAxNCkKLQotUGF0Y2ggdG8gY2hlY2sgaWYgJ2ZvbGRleHByJyBzZXRzIGRpZF9lbXNnLiAoQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDEzIE1hciAyMCkKLQotTm8gY29tcGxldGlvbiBmb3IgOnhtYXAgYW5kIDpzbWFwLiAoWXVraWhpcm8gTmFrYWRhaXJhLCAyMDEzIE1heSA1KQotCiBQYXRjaCB0byBzZXQgYW50aWFsaWFzaW5nIHN0eWxlIG9uIFdpbmRvd3MuIChPbmRyZWogQmFsYXosIDIwMTMgTWFyIDE0KQogTmVlZHMgYSBkaWZmZXJlbnQgY2hlY2sgZm9yIENMRUFSVFlQRV9RVUFMSVRZLgogCkBAIC0xNzIsMjEgKzI0Niw4IEBACiBNUy1XaW5kb3dzOiBDcmFzaCBvcGVuaW5nIHZlcnkgbG9uZyBmaWxlIG5hbWUgc3RhcnRpbmcgd2l0aCAiXFwiLgogKENocmlzdGlhbiBCcm9jaywgMjAxMiBKdW4gMjkpCiAKLUl0J3MgcHJvYmFibHkgYSBnb29kIGlkZWEgdG8gbWFrZSBhIG5lZ2F0aXZlIHZhbHVlIGZvciAnc3RzJyB1c2UgdGhlIHZhbHVlIG9mCi0nc3cnLiAgUGF0Y2ggYnkgU284cmVzLCBPY3QgMyAyMDEyCi0KLVRlc3QgNzkgZmFpbHMgb24gV2luZG93cyBvbmx5LiAoTWljaGFlbCBTb3lrYSwgMjAxMyBBcHIgMTEpLgotV2hhdCBtYWtlcyB0aGUgdGVzdCBzY3JpcHQgbWFwcGluZyBjb250aW51ZSBhZnRlciBhbiBlcnJvcj8KLQogcGF0Y2ggdG8gYWRkICJjb21iaW5lIiBmbGFnIHRvICBzeW50YXggY29tbWFuZHMuIChzbzhyZXMsIDIwMTIgRGVjIDYpCiAKLUNvbWJpbmluZyBjaGFyYWN0ZXJzIGFyZSBub3QgdXNlZCB3aGVuIGV4ZWN1dGluZyBhIHJlZ2lzdGVyIHdpdGggOkB3LgotKFdpbGxpYW0gRnVnaCwgMjAxMyBBcHIgNSwgbW9yZSBpbmZvIGZyb20gQmVuIEZyaXR6KQotUGF0Y2ggYnkgQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDEzIEFwciA2LiAgU2Vjb25kIG9uZS4KLQotQnVnIGluIGNvbXBsZXRpb24gbWVudS4gKE9saXZpZXIgVGV1bGllcmUsIDIwMTMgRmViIDE1KQotUGF0Y2ggYnkgQ2hyaXN0aWFuIEJyYWJhbmR0LCBGZWIgMTYuCi0KIFN5bnRheCB1cGRhdGUgcHJvYmxlbSBpbiBvbmUgYnVmZmVyIG9wZW5lZCBpbiB0d28gd2luZG93cywgYm90dG9tIHdpbmRvdyBpcwogbm90IGNvcnJlY3RseSB1cGRhdGVkLiAoUGF1bCBIYXJyaXMsIDIwMTIgRmViIDI3KQogCkBAIC0yMDEsNyArMjYyLDcgQEAKIFBhdGNoIHRvIGFkZCBmdW5jdGlvbnMgZm9yIHNpZ25zLiAoQ2hyaXN0aWFuIEJyYWJhbmR0LCAyMDEzIEphbiAyNykKIAogUGF0Y2ggdG8gdXNlIGRpcmVjdFggdG8gZHJhdyB0ZXh0IG9uIFdpbmRvd3MuICBBZGRzIHRoZSAncmVuZGVyb3B0aW9ucycKLW9wdGlvbi4gIChUYXJvIE11cmFva2EsIDIwMTMgSmFuIDI1LCB1cGRhdGUgMjAxMyBBcHIgMykKK29wdGlvbi4gIChUYXJvIE11cmFva2EsIDIwMTMgSmFuIDI1LCB1cGRhdGUgMjAxMyBBcHIgMywgTWF5IDE0KQogCiBQcm9ibGVtIHdpdGggcmVmcmVzaDphbHdheXMgaW4gY29tcGxldGlvbi4gKFR5bGVyIFdhZGUsIDIwMTMgTWFyIDE3KQogCkBAIC0yMjcsMTAgKzI4OCw2IEBACiBDcmFzaCBpbiBhdXRvY21kIHRoYXQgdW5sb2FkcyBidWZmZXJzIGluIGEgQnVmVW5sb2FkIGV2ZW50LiAoQW5kcmV3IFBpbWxvdHQsCiAyMDEyIEF1ZyAxMSkgIERpc2FsbG93IDpuZXcgd2hlbiBCdWZVbmxvYWQgaXMgYmVpbmcgaGFuZGxlZD8KIAotTVMtV2luZG93cyBBQ0wgc3VwcG9ydCBkb2Vzbid0IHdvcmsgd2VsbC4gIFBhdGNoIGZyb20gS2VuIFRha2F0YSwgMjAxMiBBdWcgMjkuCi1VcGRhdGUgQXVnIDMxLgotQW5vdGhlciBwYXRjaCBmb3IgTWluZ1csIDIwMTIgRGVjIDI5LgotCiBNUy1XaW5kb3dzIHJlc2l6aW5nIHByb2JsZW1zOgogLSBXaW5kb3dzIHdpbmRvdyBvbiBzY3JlZW4gcG9zaXRpb25pbmc6IFBhdGNoIGJ5IFl1a2loaXJvIE5ha2FkYWlyYSwgMjAxMiBKdW4KICAgMjAuICBVc2VzIGdldFdpbmRvd1JlY3QoKSBpbnN0ZWFkIG9mIEdldFdpbmRvd1BsYWNlbWVudCgpCkBAIC0yNDAsNyArMjk3LDcgQEAKIAogJ2ltaW5zZXJ0JyBnbG9iYWwgdmFsdWUgc2V0IHdoZW4gdXNpbmcgIjpzZXRsb2NhbCBpbWluc2VydCI/IChXdSwgMjAxMiBKdW4gMjMpCiAKLVBhdGNoIHRvIGFwcGVuZCByZWdlc3AgdG8gdGFnIGNvbW1hbmRzIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gc2VsZWN0IG9uZSBvdXQKK1BhdGNoIHRvIGFwcGVuZCByZWdleHAgdG8gdGFnIGNvbW1hbmRzIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gc2VsZWN0IG9uZSBvdXQKIG9mIG1hbnkgbWF0Y2hlcy4gKENvZHkgQ3V0bGVyLCAyMDEzIE1hciAyOCkKIAogSGVscCBmb3IgJ2I6dW5kb19pbmRlbnQnLiAoVGhpbG8gU2l4LCAyMDEyIE1heSAyOCkKQEAgLTI4MSwxOCArMzM4LDkgQEAKIAogUGF0Y2ggZm9yIGlucHV0IG1ldGhvZCBzdGF0dXMuIChIaXJvaGl0byBIaWdhc2hpLCAyMDEyIEFwciAxOCkKIAotUGF0Y2ggdG8gcHJpbnQgdGhlIHJlc3VsdCBvZiBhIDpweXRob24gY29tbWFuZC4gKE1heGltIFBoaWxpcHBvdgotPHBoaWxpcHBvdm1pQGdtYWlsLmNvbT4sIDIwMTIgQXVnIDE2KSAgVXBkYXRlIEF1ZyAxNy4KLQogUGF0Y2ggdG8gdXNlIC5wbmcgaWNvbnMgZm9yIHRoZSB0b29sYmFyIG9uIE1TLVdpbmRvd3MuIChNYXJ0aW4gR2llc2VraW5nLCAyMDEzCiBBcHIgMTgpCiAKLVByb2JsZW0gd2l0aCB3aW5maXhoZWlnaHQgYW5kIHJlc2l6aW5nLiAoWXVraWhpcm8gTmFrYWRhaXJhLCAyMDExIFNlcCAxNykKLVBhdGNoIFNlcCAxOC4KLQotUGF0Y2ggZm9yIElNRSBwcm9ibGVtcy4gUmVtb3ZlIGhhY2tpbmcgY29kZSBmb3Igb2xkIElNLiAoWXVraWhpcm8gTmFrYWRhaXJhLAotMjAxMiBKdWwgMjApCi0KIFBhdGNoIGZvciBoYXMoJ3VubmFtZWRwbHVzJykgZG9jcy4gKFRvbnkgTWVjaGVseW5jaywgMjAxMSBTZXAgMjcpCiBBbmQgb25lIGZvciBndWlfeDExLnR4dC4KIApAQCAtMzI1LDE2ICszNzMsMTEgQEAKIFBhdGNoIHRvIGltcHJvdmUgR1VJIGZpbmQvcmVwbGFjZSBkaWFsb2cuIChDaHJpc3RpYW4gQnJhYmFuZHQsIDIwMTIgTWF5IDI2KQogVXBkYXRlIEp1biAyLgogCi1QYXRjaCB0byBhZGQgIjpweTNkbyIuIChMaWx5ZGp3ZywgMjAxMiBBcHIgNykKLQogYF0gbW92ZXMgdG8gY2hhcmFjdGVyIGFmdGVyIGluc2VydCwgaW5zdGVhZCBvZiB0aGUgbGFzdCBpbnNlcnRlZCBjaGFyYWN0ZXIuCiAoWXVraWhpcm8gTmFrYWRhaXJhLCAyMDExIERlYyA5KQogCiBQbHVnaW4gZm9yIE1vZGVsZWFzeS4gKE1hc3NpbWlsaWFubyBUcmlwb2xpLCAyMDExIE5vdiAyOSkKIAotVXBkYXRlZCBzeW50YXggZmlsZSBmb3Igc3NoX2NvbmZpZywgbWFpbnRhaW5lciBkb2Vzbid0IHJlc3BvbmQuCi0oTGVvbmFyZCBFaHJlbmZyaWVkLCAyMDExIFNlcCAyNikKLQogQnVmV2luTGVhdmUgdHJpZ2dlcnMgdG9vIGxhdGUgd2hlbiBxdWl0dGluZyBsYXN0IHdpbmRvdyBpbiBhIHRhYiBwYWdlLiAoTGVjaAogTG9yZW5zLCAyMDEyIEZlYiAyMSkKIApAQCAtMzY0LDE1ICs0MDcsOSBAQAogb25seSBvbmUgb2YgdGhlIHR3byBlbmRzIGdldHMgdGhlIGNjaGFyIGRpc3BsYXllZC4gKEJyZXR0IFN0YWhsbWFuLCAyMDEwIEF1ZwogMjEsIEJlbiBGcml0eiwgMjAxMCBTZXAgMTQpCiAKLSdjdXJzb3JsaW5lJyBpcyBkcmF3biBpbmNvcnJlY3RseSBpbiBkaWZmIG1vZGUuIFBhdGNoIGJ5IENocmlzdGlhbiBCcmFiYW5kdCwKLTIwMTIgQXByIDIuCi0KICdjdXJzb3JsaW5lJyB3b3JrcyBvbiBhIHRleHQgbGluZSBvbmx5LiAgQWRkICdjdXJzb3JzY3JlZW5saW5lJyBmb3IKIGhpZ2hsaWdodGluZyB0aGUgc2NyZWVuIGxpbmUuIChDaHJpc3RpYW4gQnJhYmFuZHQsIDIwMTIgTWFyIDMxKQogCi1XaW4zMjogRG9lcyBidWlsZGluZyBhIDY0IGJpdCB2ZXJzaW9uIHdpdGggVkM5IGdpdmUgd2FybmluZ3MgZm9yIGludAotY29udmVyc2lvbnM/IChNaWtlIFdpbGxpYW1zKQotCiBXaW4zMjogUGF0Y2ggdG8gdXNlIHRhc2sgZGlhbG9ncyB3aGVuIGF2YWlsYWJsZS4gKFNlcmdpdSBEb3RlbmNvLCAyMDExIFNlcCAxNykKIE5ldyBmZWF0dXJlLCByZXF1aXJlcyB0ZXN0aW5nLiAgTWFkZSBzb21lIHJlbWFya3MuCiAKQEAgLTQ1MiwxMiArNDg5LDYgQEAKIAogTWFrZSAnZm9ybWF0cHJnJyBnbG9iYWwtbG9jYWwuIChTdW5nIFBhZSkKIAotV2hlbiBhIGJ1ZmZlci1sb2NhbCBtYXBwaW5nIGlzIHVzZWQsIGJ1dCBhIGdsb2JhbCBtYXBwaW5nIHN0YXJ0cyB3aXRoIHRoZSBzYW1lCi1jaGFyYWN0ZXJzLCBWaW0gY3VycmVudGx5IHdhaXRzIGZvciB0aGUgbmV4dCB0eXBlZCBjaGFyYWN0ZXIgdG8gZmluZCBvdXQgaWYKLXRoZSBnbG9iYWwgbWFwcGluZyBtYXRjaGVzLiAgSXQgaXMgcHJvYmFibHkgYmV0dGVyIHRvIGxldCB0aGUgbG9jYWwgbWFwcGluZwotd2luIGFuZCBub3Qgd2FpdC4gKGRpc2N1c3Npb24gd2l0aCBBbmR5IFdva3VsYSwgMjAxMyBKYW4gMzApCi1QYXRjaCBieSBNaWNoYWVsIEhlbnJ5LCAyMDEzIEphbiAzMCwgdXBkYXRlIEZlYiAxNS4KLQogV2hlbiBkb2luZyAicmVkaXIgPT4gczpmb28iIGluIGEgc2NyaXB0IGFuZCB0aGVuICJyZWRpciBFTkQiIHNvbWV3aGVyZSBlbHNlCiAoZS5nLiBpbiBhIGZ1bmN0aW9uKSBpdCBjYW4ndCBmaW5kIHM6Zm9vLgogCkBAIC01ODQsOSArNjE1LDYgQEAKIFNpbmNlIHBhdGNoIDcuMi40NiBZYW5rcmluZyBwbHVnaW4gaGFzIGJlY29tZSB2ZXJ5IHNsb3csIGV2ZW50dWFsbHkgbWFrZSBWaW0KIGNyYXNoPyAoUmFpd2lsLCAyMDEwIE5vdiAxNykKIAotUHl0aG9uOiBBZGRpbmcgbGluZSB0byBidWZmZXIgb3RoZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgZG9lc24ndCB3b3JrCi1jb3JyZWN0bHkuIChSb3pidWpuaWssIDIwMTAgRGVjIDE5KQotCiBQYXRjaCB0byBhZGQgJ3N5c3RlbWVuY29kaW5nJywgY29udmVydCBiZXR3ZWVuICdlbmNvZGluZycgYW5kIHRoaXMgZm9yIGZpbGUKIG5hbWVzLCBzaGVsbCBjb21tYW5kcyBhbmQgdGhlIGxpa2UuICAoS2lrdWNoYW4sIDIwMTAgT2N0IDE0KQogQXNzdW1lIHRoZSBzeXN0ZW0gY29udmVydHMgYmV0d2VlbiB0aGUgYWN0dWFsIGVuY29kaW5nIG9mIHRoZSBmaWxlc3lzdGVtIHRvCkBAIC05NDYsOSArOTc0LDYgQEAKIFVzZSBhIGRpZmZlcmVudCBvcHRpb24gb3IgbGV0IGl0IGRlcGVuZCBvbiB3aGV0aGVyICdzaGVsbCcgbG9va3MgbGlrZSBhCiB1bml4LWxpa2Ugc2hlbGw/CiAKLUFsbG93IHBhdGNoZXMgdG8gYWRkIHNvbWV0aGluZyB0byB2ZXJzaW9uLmMsIGxpa2Ugd2l0aCBhbiBvZmZpY2lhbCBwYXRjaCwgc28KLXRoYXQgOnZlcnNpb24gb3V0cHV0IHNob3dzIHdoaWNoIHBhdGNoZXMgaGF2ZSBiZWVuIGFwcGxpZWQuCi0KIEJ1ZzogaW4gRXggbW9kZSAoYWZ0ZXIgIlEiKSBiYWNrc2xhc2ggYmVmb3JlIGxpbmUgYnJlYWssIHdoZW4geWFua2VkIGludG8gYQogcmVnaXN0ZXIgYW5kIGV4ZWN1dGVkLCByZXN1bHRzIGluIDxOdWw+OiBpbnN0ZWFkIG9mIGxpbmUgYnJlYWsuCiAoS29ucmFkIFNjaHdhcnosIDIwMTAgQXByIDE2KQpAQCAtMTE2MywxOCArMTE4OCw2IEBACiAKIEFkZCAiOm5vZm9sZCIuICBSYW5nZSB3aWxsIGFwcGx5IHdpdGhvdXQgZXhwYW5kaW5nIHRvIGNsb3NlZCBmb2xkLgogCi1JbmNsdWRpbmcgTkZBIHJlZ2V4cCBjb2RlOgotVXNlICJcJSM9IHRvIHNldCB0aGUgZW5naW5lOiAwID0gYXV0b21hdGljLCAxID0gYmFja3RyYWNraW5nLCAyID0gbmV3LgotVXNlZnVsIGluIHRlc3RzLgotUGVyZm9ybWFuY2UgdGVzdHM6Ci0tIH4vdmltL3Rlc3QvdmVyeXNsb3cuanMgKGZpbGUgZnJvbSBEYW5pZWwgRmV0Y2hpbnNvbikKLS0gfi92aW0vdGVzdC9zbG93c2VhcmNoCi0tIH4vdmltL3Rlc3QvcmdiLnZpbQotLSB+L3ZpbS90ZXh0L0ZlaXFDZmcueG1sIChmaWxlIGZyb20gTmV0anVuZSkKLS0gfi92aW0vdGV4dC9lZGwuc3ZnICAoYWxzbyBYTUwpCi0tIHNlYXJjaCBmb3IgIGEuKmUqZXhuICBpbiB0aGUgdmltIGV4ZWN1dGFibGUuICBHbyB0byBsYXN0IGxpbmUgdG8gdXNlCi0gICdobHNlYXJjaCcuCi0KIFVzaW5nIEFhcCB0byBidWlsZCBWaW06IGFkZCByZW1hcmtzIGFib3V0IGhvdyB0byBzZXQgcGVyc29uYWwgcHJlZmVyZW5jZXMuCiBFeGFtcGxlIG9uIGh0dHA6Ly93d3cuY2FsbWFyLndzL3RtcC9hYXAuaHRtbAogCkBAIC0xNDA3LDkgKzE0MjAsNiBAQAogCiAiOmhlbHBncmVwIiBzaG91bGQgdXNlIHRoZSBkaXJlY3RvcnkgZnJvbSAnaGVscGZpbGUnLgogCi1QYXRjaCB0byBkeW5hbWljYWxseSBsb2FkIFB5dGhvbiBvbiBTb2xhcmlzLiAoRGFuZWsgRHV2YWxsLCAyMDA5IEZlYiAxNikKLU5lZWRzIG1vcmUgd29yay4KLQogVGhlIG5lZWRfZmlsZWluZm8gZmxhZyBpcyBtZXNzeS4gIEluc3RlYWQgbWFrZSB0aGUgbWVzc2FnZSByaWdodCBhd2F5IGFuZCBwdXQKIGl0IGluIGtlZXBfbXNnPwogCkBAIC0xNDUxLDkgKzE0NjEsNiBAQAogMjAwOCBOb3YgMTApICBjYWxsIG5ldGJlYW5zX2ZpbGVfY2xvc2VkKCkgYXQgdGhlIGVuZCBvZiBidWZfZnJlZWFsbCgpLCBvciBpbgogYWxsIHBsYWNlcyB3aGVyZSBidWZfZnJlZWFsbCgpIGlzIGNhbGxlZD8KIAotIjpweXRob24gb3MuY2hkaXIoJy90bXAnKSIgbWFrZXMgc2hvcnQgYnVmZmVyIG5hbWVzIGludmFsaWQuIChYYXZpZXIgZGUgR2F5ZSkKLUNoZWNrIGRpcmVjdG9yeSBhbmQgY2FsbCBzaG9ydGVuX2ZuYW1lcygpPwotCiBhdWNtZF9wcmVwYnVmKCkgc2hvdWxkIGFsc28gdXNlIGEgd2luZG93IGluIGFub3RoZXIgdGFiIHBhZ2UuCiAKIFdoZW4gdW5sb2FkaW5nIGEgYnVmZmVyIGluIGEgQnVmSGlkZGVuIGF1dG9jb21tYW5kIHRoZSBoaWRkZW4gZmxhZyBpcyByZXNldD8KQEAgLTE0ODksOSArMTQ5Niw2IEBACiAKIE1hYzogVXNpbmcgZ3ZpbTogbmV0cncgd2luZG93IGRpc2FwcGVhcnMuIChOaWNrIExvLCAyMDA2IEp1biAyMSkKIAotTWFjOiBPUy9YIDEwLjQgd2l0aCBQeXRob24gMi41IGluc3RhbGxlZDogY29uZmlndXJlIGZpbmRzIGFuIGV4dHJhIGFyZ3VtZW50Ci10aGF0IGJyZWFrcyB0aGUgYnVpbGQuIChCcmlhbiBWaWN0b3IsIDIwMDggU2VwIDEpCi0KIEFkZCBhbiBvcHRpb24gdG8gc3BlY2lmeSB0aGUgY2hhcmFjdGVyIHRvIHVzZSB3aGVuIGEgZG91YmxlLXdpZHRoIGNoYXJhY3RlciBpcwogbW92ZWQgdG8gdGhlIG5leHQgbGluZS4gIERlZmF1bHQgJz4nLCBzZXQgdG8gYSBzcGFjZSB0byBibGFuayBpdCBvdXQuICBDaGVjawogdGhhdCBjaGFyIGlzIHNpbmdsZSB3aWR0aCB3aGVuIGl0J3Mgc2V0IChjb21wYXJlIHdpdGggJ2xpc3RjaGFycycpLgpAQCAtMTc3OCw3ICsxNzgyLDYgQEAKICAgICBtb3JlIGZyaWVuZGx5IGZvciB0aGUgVmltIGRpc3RyaWJ1dGlvbi4KICAgICBOZXcgdmVyc2lvbiByZWNlaXZlZCAyMDA4IEphbiA2LgogICAgIE5vIG1haW50ZW5hbmNlIGluIHR3byB5ZWFycy4uLgotLSAgIFBhdGNoIHRvIGFjY2VzcyBzY3JlZW4gdW5kZXIgUHl0aG9uLiAoTWFya28gTWFobmksIDIwMTAgSnVsIDE4KQogLSAgIFBhdGNoIHRvIG9wZW4gZHJvcHBlZCBmaWxlcyBpbiBuZXcgdGFicy4gKE1pY2hhZWwgVHJpbSwgMjAxMCBBdWcgMykKIAogQXdhaXRpbmcgdXBkYXRlZCBwYXRjaGVzOgpAQCAtMjM1Nyw3ICsyMzYwLDYgQEAKIDggICBXaGVuIGRvaW5nIEluc2VydCBtb2RlIGNvbXBsZXRpb24gYSBtYXBwaW5nIGNhbm5vdCByZWN1cnNpdmVseSBjYWxsCiAgICAgZWRpdCgpLCBiZWNhdXNlIHRoZSBjb21wbGV0aW9uIGluZm9ybWF0aW9uIGlzIGdsb2JhbC4gIFB1dCBldmVyeXRoaW5nIGluCiAgICAgYW4gYWxsb2NhdGVkIHN0cnVjdHVyZT8KLTYgICBQeXRob246ICI6cHkgcmF3X2lucHV0KCdwcm9tcHQnKSIgZG9lc24ndCB3b3JrLiAoTWFudSBIYWNrKQogOCAgIENvbW1hbmQgbGluZSBjb21wbGV0aW9uOiBidWZmZXJzICJmb28udHh0IiBhbmQgIi4uL2IvZm9vLnR4dCIsIGNvbXBsZXRpbmcKICAgICAiOmJ1ZiBmb288VGFiPiIgZG9lc24ndCBmaW5kIHRoZSBzZWNvbmQgb25lLiAoR2VvcmdlIFYuIFJlaWxseSkKIDcgICBtYl9vZmYyY2VsbHMoKSBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IG9uIHRoZSB0YWlsIGJ5dGUgb2YgYSBkb3VibGUtYnl0ZQpAQCAtMzY1NCw5ICszNjU2LDYgQEAKIFdpbjMyIEdVSToKIDggICBNYWtlIGRlYnVnIG1vZGUgd29yayB3aGlsZSBzdGFydGluZyB1cCAodmltIC1EKS4gIE9wZW4gY29uc29sZSB3aW5kb3cgZm9yCiAgICAgdGhlIG1lc3NhZ2UgYW5kIGlucHV0PwotNyAgIFRoZSBQeXRob24gaW50ZXJmYWNlIG9ubHkgd29ya3Mgd2l0aCBvbmUgdmVyc2lvbiBvZiBQeXRob24sIHNlbGVjdGVkIGF0Ci0gICAgY29tcGlsZSB0aW1lLiAgQ2FuIHRoaXMgYmUgbWFkZSB0byB3b3JrIHdpdGggdmVyc2lvbiAyLjEgYW5kIDIuMgotICAgIGR5bmFtaWNhbGx5PwogNyAgIEd2aW1FeHQ6IHdoZW4gdGhlcmUgYXJlIHNldmVyYWwgZXhpc3RpbmcgVmltcywgbW92ZSB0aGUgbGlzdCB0byBhIHN1Ym1lbnUuCiAgICAgKE1pa2UgTWNDb2xsaXN0ZXIpCiA4ICAgV2hlbiB1c2luZyAiRWRpdCB3aXRoIFZpbSIgZm9yIG9uZSBmaWxlIGl0IGNoYW5nZXMgZGlyZWN0b3J5LCB3aGVuIHNldmVyYWwKQEAgLTQ4NzEsOCArNDg3MCw2IEBACiAKIAogVmFyaW91cyBpbXByb3ZlbWVudHM6Ci05ICAgUHl0aG9uOiBiZSBhYmxlIHRvIGRlZmluZSBhIFB5dGhvbiBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgZGlyZWN0bHkKLSAgICBmcm9tIFZpbSBzY3JpcHQuICBSZXF1aXJlcyBjb252ZXJ0aW5nIHRoZSBhcmd1bWVudHMgYW5kIHJldHVybiB2YWx1ZS4KIDcgICBBZGQgcGx1Z2lucyBmb3IgZm9ybWF0dGluZz8gIFNob3VsZCBiZSBhYmxlIHRvIG1ha2UgYSBjaG9pY2UgZGVwZW5kaW5nIG9uCiAgICAgdGhlIGxhbmd1YWdlIG9mIGEgZmlsZSAoRW5nbGlzaC9Lb3JlYW4vSmFwYW5lc2UvZXRjLikuCiAgICAgU2V0dGluZyB0aGUgJ2xhbmdmb3JtYXQnIG9wdGlvbiB0byAiY2hpbmVzZSIgd291bGQgbG9hZCB0aGUKQEAgLTQ4OTcsNyArNDg5NCw2IEBACiA3ICAgQWxsb3cgYSB3aW5kb3cgbm90IHRvIGhhdmUgYSBzdGF0dXNsaW5lLiAgTWFrZXMgaXQgcG9zc2libGUgdG8gdXNlIGEKICAgICB3aW5kb3cgYXMgYSBidWZmZXItdGFiIHNlbGVjdGlvbi4KIDggICBBbGxvdyBub24tYWN0aXZlIHdpbmRvd3MgdG8gaGF2ZSBhIGRpZmZlcmVudCBzdGF0dXNsaW5lLiAoWWFrb3YgTGVybmVyKQotNiAgIFB5dGhvbiBpbnRlcmZhY2U6IGFkZCB2aW0ubWVzc2FnZSgpIGZ1bmN0aW9uLiAoTWljaGFsIFZpdGVjZWssIDIwMDIgTm92IDUpCiA3ICAgU3VwcG9ydCB1c2luZyAiOnZlcnQiIHdpdGggVXNlciBjb21tYW5kcy4gIEFkZCBleHBhbmRhYmxlIGl0ZW1zIDx2ZXJ0Pi4KICAgICBEbyB0aGUgc2FtZSBmb3IgIjpicm93c2UiIGFuZCAiOmNvbmZpcm0iPwogICAgIEZvciAiOnNpbGVudCIgYW5kICI6ZGVidWciIGFwcGx5IHRvIHRoZSB3aG9sZSB1c2VyIGNvbW1hbmQuCmRpZmYgLS1naXQgYS9ydW50aW1lL2ZpbGV0eXBlLnZpbSBiL3J1bnRpbWUvZmlsZXR5cGUudmltCmluZGV4IDA2NWYxZGQuLjdhZDllZDEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZmlsZXR5cGUudmltCisrKyBiL3J1bnRpbWUvZmlsZXR5cGUudmltCkBAIC0xLDcgKzEsNyBAQAogIiBWaW0gc3VwcG9ydCBmaWxlIHRvIGRldGVjdCBmaWxlIHR5cGVzCiAiCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOgkyMDEzIEFwciAwOAorIiBMYXN0IENoYW5nZToJMjAxMyBNYXkgMTUKIAogIiBMaXN0ZW4gdmVyeSBjYXJlZnVsbHksIEkgd2lsbCBzYXkgdGhpcyBvbmx5IG9uY2UKIGlmIGV4aXN0cygiZGlkX2xvYWRfZmlsZXR5cGVzIikKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZnRwbHVnaW4vc3FsLnZpbSBiL3J1bnRpbWUvZnRwbHVnaW4vc3FsLnZpbQppbmRleCAzOTAyOGYzLi5jMmJjODU3IDEwMDY0NAotLS0gYS9ydW50aW1lL2Z0cGx1Z2luL3NxbC52aW0KKysrIGIvcnVudGltZS9mdHBsdWdpbi9zcWwudmltCkBAIC0xLDggKzEsOCBAQAogIiBTUUwgZmlsZXR5cGUgcGx1Z2luIGZpbGUKICIgTGFuZ3VhZ2U6ICAgIFNRTCAoQ29tbW9uIGZvciBPcmFjbGUsIE1pY3Jvc29mdCBTUUwgU2VydmVyLCBTeWJhc2UpCi0iIFZlcnNpb246ICAgICAxMC4wCisiIFZlcnNpb246ICAgICAxMS4wCiAiIE1haW50YWluZXI6ICBEYXZpZCBGaXNoYnVybiA8ZGZpc2hidXJuIGRvdCB2aW0gYXQgZ21haWwgZG90IGNvbT4KLSIgTGFzdCBDaGFuZ2U6IDIwMTIgRGVjIDA0CisiIExhc3QgQ2hhbmdlOiAyMDEzIE1heSAxMwogIiBEb3dubG9hZDogICAgaHR0cDovL3ZpbS5zb3VyY2Vmb3JnZS5uZXQvc2NyaXB0LnBocD9zY3JpcHRfaWQ9NDU0CiAKICIgRm9yIG1vcmUgZGV0YWlscyBwbGVhc2UgdXNlOgpAQCAtMzYsNiArMzYsMTAgQEAKICIKICIgSGlzdG9yeQogIgorIiBWZXJzaW9uIDExLjAgKE1heSAyMDEzKQorIgorIiBORjogVXBkYXRlZCB0byB1c2UgU3ludGF4Q29tcGxldGUncyBuZXcgcmVnZXggc3VwcG9ydCBmb3Igc3ludGF4IGdyb3Vwcy4KKyIKICIgVmVyc2lvbiAxMC4wIChEZWMgMjAxMikKICIKICIgTkY6IENoYW5nZWQgYWxsIG1hcHMgdG8gdXNlIG5vcmVtYXAgaW5zdGVhZCBvZiBtdXN0IG1hcApAQCAtMTg5LDcgKzE5Myw3IEBACiAKICAgICAgICAgIiBSZW1vdmUgYW55IGNhY2hlZCBTUUwgc2luY2UgYSBuZXcgc3l0YXggd2lsbCBoYXZlIGRpZmZlcmVudAogICAgICAgICAiIGl0ZW1zIGFuZCBncm91cHMKLSAgICAgICAgaWYgIWV4aXN0cygnZzpsb2FkZWRfc3FsX2NvbXBsZXRpb24nKSB8fCAxMDAgPT0gZzpsb2FkZWRfc3FsX2NvbXBsZXRpb24KKyAgICAgICAgaWYgIWV4aXN0cygnZzpsb2FkZWRfc3FsX2NvbXBsZXRpb24nKSB8fCBnOmxvYWRlZF9zcWxfY29tcGxldGlvbiA+PSAxMDAKICAgICAgICAgICAgIGNhbGwgc3FsY29tcGxldGUjUmVzZXRDYWNoZVN5bnRheCgpCiAgICAgICAgIGVuZGlmCiAKQEAgLTQ1OCw2ICs0NjIsOCBAQAogICAgICIgT01OSSBmdW5jdGlvbiBwcmlvciB0byBzZXR0aW5nIHVwIHRoZSBTUUwgT01OSSBmdW5jdGlvbgogICAgIGxldCBiOnNxbF9jb21wbF9zYXZlZnVuYyA9ICZvbW5pZnVuYwogCisgICAgIiBTb3VyY2UgaXQgdG8gZGV0ZXJtaW5lIGl0J3MgdmVyc2lvbgorICAgIHJ1bnRpbWUgYXV0b2xvYWQvc3FsY29tcGxldGUudmltCiAgICAgIiBUaGlzIGlzIHVzZWQgYnkgdGhlIHNxbGNvbXBsZXRlLnZpbSBwbHVnaW4KICAgICAiIFNvdXJjZSBpdCBmb3IgaXQncyBnbG9iYWwgZnVuY3Rpb25zCiAgICAgcnVudGltZSBhdXRvbG9hZC9zeW50YXhjb21wbGV0ZS52aW0KQEAgLTQ2NiwxNCArNDcyLDIwIEBACiAgICAgIiBQcmV2ZW50IHRoZSBpbnRlbGxpc2Vuc2UgcGx1Z2luIGZyb20gbG9hZGluZwogICAgIGxldCBiOnNxbF92aXMgPSAxCiAgICAgaWYgIWV4aXN0cygnZzpvbW5pX3NxbF9ub19kZWZhdWx0X21hcHMnKQorICAgICAgICBsZXQgcmVnZXhfZXh0cmEgPSAnJworICAgICAgICBpZiBleGlzdHMoJ2c6bG9hZGVkX3N5bnRheF9jb21wbGV0aW9uJykgJiYgZXhpc3RzKCdnOmxvYWRlZF9zcWxfY29tcGxldGlvbicpCisgICAgICAgICAgICBpZiBnOmxvYWRlZF9zeW50YXhfY29tcGxldGlvbiA+IDEyMCAmJiBnOmxvYWRlZF9zcWxfY29tcGxldGlvbiA+IDE0MAorICAgICAgICAgICAgICAgIGxldCByZWdleF9leHRyYSA9ICdcXHcqJworICAgICAgICAgICAgZW5kaWYKKyAgICAgICAgZW5kaWYKICAgICAgICAgIiBTdGF0aWMgbWFwcyB3aGljaCB1c2UgcG9wdWxhdGUgdGhlIGNvbXBsZXRpb24gbGlzdAogICAgICAgICAiIHVzaW5nIFZpbSdzIHN5bnRheCBoaWdobGlnaHRpbmcgcnVsZXMKICAgICAgICAgZXhlYyAnaW5vcmVtYXAgPGJ1ZmZlcj4gJy5nOmZ0cGx1Z2luX3NxbF9vbW5pX2tleS4nYSA8Qy1cPjxDLU8+OmNhbGwgc3FsY29tcGxldGUjTWFwKCJzeW50YXgiKTxDUj48Qy1YPjxDLU8+JwotICAgICAgICBleGVjICdpbm9yZW1hcCA8YnVmZmVyPiAnLmc6ZnRwbHVnaW5fc3FsX29tbmlfa2V5LidrIDxDLVw+PEMtTz46Y2FsbCBzcWxjb21wbGV0ZSNNYXAoInNxbEtleXdvcmQiKTxDUj48Qy1YPjxDLU8+JwotICAgICAgICBleGVjICdpbm9yZW1hcCA8YnVmZmVyPiAnLmc6ZnRwbHVnaW5fc3FsX29tbmlfa2V5LidmIDxDLVw+PEMtTz46Y2FsbCBzcWxjb21wbGV0ZSNNYXAoInNxbEZ1bmN0aW9uIik8Q1I+PEMtWD48Qy1PPicKLSAgICAgICAgZXhlYyAnaW5vcmVtYXAgPGJ1ZmZlcj4gJy5nOmZ0cGx1Z2luX3NxbF9vbW5pX2tleS4nbyA8Qy1cPjxDLU8+OmNhbGwgc3FsY29tcGxldGUjTWFwKCJzcWxPcHRpb24iKTxDUj48Qy1YPjxDLU8+JwotICAgICAgICBleGVjICdpbm9yZW1hcCA8YnVmZmVyPiAnLmc6ZnRwbHVnaW5fc3FsX29tbmlfa2V5LidUIDxDLVw+PEMtTz46Y2FsbCBzcWxjb21wbGV0ZSNNYXAoInNxbFR5cGUiKTxDUj48Qy1YPjxDLU8+JwotICAgICAgICBleGVjICdpbm9yZW1hcCA8YnVmZmVyPiAnLmc6ZnRwbHVnaW5fc3FsX29tbmlfa2V5LidzIDxDLVw+PEMtTz46Y2FsbCBzcWxjb21wbGV0ZSNNYXAoInNxbFN0YXRlbWVudCIpPENSPjxDLVg+PEMtTz4nCisgICAgICAgIGV4ZWMgJ2lub3JlbWFwIDxidWZmZXI+ICcuZzpmdHBsdWdpbl9zcWxfb21uaV9rZXkuJ2sgPEMtXD48Qy1PPjpjYWxsIHNxbGNvbXBsZXRlI01hcCgic3FsS2V5d29yZCcucmVnZXhfZXh0cmEuJyIpPENSPjxDLVg+PEMtTz4nCisgICAgICAgIGV4ZWMgJ2lub3JlbWFwIDxidWZmZXI+ICcuZzpmdHBsdWdpbl9zcWxfb21uaV9rZXkuJ2YgPEMtXD48Qy1PPjpjYWxsIHNxbGNvbXBsZXRlI01hcCgic3FsRnVuY3Rpb24nLnJlZ2V4X2V4dHJhLiciKTxDUj48Qy1YPjxDLU8+JworICAgICAgICBleGVjICdpbm9yZW1hcCA8YnVmZmVyPiAnLmc6ZnRwbHVnaW5fc3FsX29tbmlfa2V5LidvIDxDLVw+PEMtTz46Y2FsbCBzcWxjb21wbGV0ZSNNYXAoInNxbE9wdGlvbicucmVnZXhfZXh0cmEuJyIpPENSPjxDLVg+PEMtTz4nCisgICAgICAgIGV4ZWMgJ2lub3JlbWFwIDxidWZmZXI+ICcuZzpmdHBsdWdpbl9zcWxfb21uaV9rZXkuJ1QgPEMtXD48Qy1PPjpjYWxsIHNxbGNvbXBsZXRlI01hcCgic3FsVHlwZScucmVnZXhfZXh0cmEuJyIpPENSPjxDLVg+PEMtTz4nCisgICAgICAgIGV4ZWMgJ2lub3JlbWFwIDxidWZmZXI+ICcuZzpmdHBsdWdpbl9zcWxfb21uaV9rZXkuJ3MgPEMtXD48Qy1PPjpjYWxsIHNxbGNvbXBsZXRlI01hcCgic3FsU3RhdGVtZW50Jy5yZWdleF9leHRyYS4nIik8Q1I+PEMtWD48Qy1PPicKICAgICAgICAgIiBEeW5hbWljIG1hcHMgd2hpY2ggdXNlIHBvcHVsYXRlIHRoZSBjb21wbGV0aW9uIGxpc3QKICAgICAgICAgIiB1c2luZyB0aGUgZGJleHQudmltIHBsdWdpbgogICAgICAgICBleGVjICdpbm9yZW1hcCA8YnVmZmVyPiAnLmc6ZnRwbHVnaW5fc3FsX29tbmlfa2V5Lid0IDxDLVw+PEMtTz46Y2FsbCBzcWxjb21wbGV0ZSNNYXAoInRhYmxlIik8Q1I+PEMtWD48Qy1PPicKQEAgLTUxMCw0ICs1MjIsMyBAQAogdW5sZXQgczpzYXZlX2NwbwogCiAiIHZpbTpzdz00OgotCmRpZmYgLS1naXQgYS9ydW50aW1lL2luZGVudC9lcmxhbmcudmltIGIvcnVudGltZS9pbmRlbnQvZXJsYW5nLnZpbQppbmRleCA5MzBmNWQxLi40MTZjNDBlIDEwMDY0NAotLS0gYS9ydW50aW1lL2luZGVudC9lcmxhbmcudmltCisrKyBiL3J1bnRpbWUvaW5kZW50L2VybGFuZy52aW0KQEAgLTEsMjEzICsxLDEzNzUgQEAKICIgVmltIGluZGVudCBmaWxlCi0iIExhbmd1YWdlOiAgICAgRXJsYW5nCisiIExhbmd1YWdlOiAgICAgRXJsYW5nIChodHRwOi8vd3d3LmVybGFuZy5vcmcpCiAiIEF1dGhvcjogICAgICAgQ3NhYmEgSG9jaCA8Y3NhYmEuaG9jaEBnbWFpbC5jb20+CiAiIENvbnRyaWJ1dG9yczogRWR3aW4gRmluZSA8ZWZpbmUxNDVfbm9zcGFtMDEgYXQgdXNhIGRvdCBuZXQ+CiAiICAgICAgICAgICAgICAgUGF3ZWwgJ2tUVCcgU2FsYXRhIDxyb2NrcGxheWVyLnBsQGdtYWlsLmNvbT4KICIgICAgICAgICAgICAgICBSaWNhcmRvIENhdGFsaW5hcyBKaW3DqW5leiA8amltZW5lenJpY2tAZ21haWwuY29tPgorIiBMYXN0IFVwZGF0ZTogIDIwMTMtTWFyLTA1CiAiIExpY2Vuc2U6ICAgICAgVmltIGxpY2Vuc2UKLSIgVmVyc2lvbjogICAgICAyMDExLzA5LzA2CisiIFVSTDogICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2hjczQyL3ZpbS1lcmxhbmcKKworIiBOb3RlIEFib3V0IFVzYWdlOgorIiAgIFRoaXMgaW5kZW50YXRpb24gc2NyaXB0IHdvcmtzIGJlc3Qgd2l0aCB0aGUgRXJsYW5nIHN5bnRheCBmaWxlIGNyZWF0ZWQgYnkKKyIgICBLcmXEhWltaXIgTWFyxL5pxIcgKEtyZXNpbWlyIE1hcnppYykgYW5kIG1haW50YWluZWQgYnkgQ3NhYmEgSG9jaC4KKworIiBOb3RlcyBBYm91dCBJbXBsZW1lbnRhdGlvbjoKKyIKKyIgLSBMVEkgPSBMaW5lIHRvIGluZGVudC4KKyIgLSBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IGxpbmUgaXMgMSwgYnV0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY29sdW1uIGlzIDAuCisKKworIiBJbml0aWFsaXphdGlvbiB7e3sxCisiID09PT09PT09PT09PT09CiAKICIgT25seSBsb2FkIHRoaXMgaW5kZW50IGZpbGUgd2hlbiBubyBvdGhlciB3YXMgbG9hZGVkCi1pZiBleGlzdHMoImI6ZGlkX2luZGVudCIpCi0gICAgZmluaXNoCisiIFZpbSA3IG9yIGxhdGVyIGlzIG5lZWRlZAoraWYgZXhpc3RzKCJiOmRpZF9pbmRlbnQiKSB8fCB2ZXJzaW9uIDwgNzAwCisgIGZpbmlzaAogZWxzZQotICAgIGxldCBiOmRpZF9pbmRlbnQgPSAxCisgIGxldCBiOmRpZF9pbmRlbnQgPSAxCiBlbmRpZgogCiBzZXRsb2NhbCBpbmRlbnRleHByPUVybGFuZ0luZGVudCgpCi1zZXRsb2NhbCBpbmRlbnRrZXlzKz09YWZ0ZXIsPWVuZCw9Y2F0Y2gsPSksPV0sPX0KK3NldGxvY2FsIGluZGVudGtleXMrPTA9ZW5kLDA9b2YsMD1jYXRjaCwwPWFmdGVyLDA9d2hlbiwwPSksMD1dLDA9fSwwPT4+CiAKICIgT25seSBkZWZpbmUgdGhlIGZ1bmN0aW9ucyBvbmNlCiBpZiBleGlzdHMoIipFcmxhbmdJbmRlbnQiKQotICAgIGZpbmlzaAorICBmaW5pc2gKIGVuZGlmCiAKLSIgVGhlIGZ1bmN0aW9uIGdvZXMgdGhyb3VnaCB0aGUgd2hvbGUgbGluZSwgYW5hbHlzZXMgaXQgYW5kIHJldHVybnMgdGhlCi0iIGluZGVudGF0aW9uIGxldmVsLgotIgotIiBsaW5lOiB0aGUgbGluZSB0byBiZSBleGFtaW5lZAotIiByZXR1cm46IHRoZSBpbmRlbnRhdGlvbiBsZXZlbCBvZiB0aGUgZXhhbWluZWQgbGluZQotZnVuY3Rpb24gczpFcmxhbmdJbmRlbnRBZnRlckxpbmUobGluZSkKLSAgICBsZXQgbGluZWxlbiA9IHN0cmxlbihhOmxpbmUpICIgdGhlIGxlbmd0aCBvZiB0aGUgbGluZQotICAgIGxldCBpICAgICAgID0gMCAiIHRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaW4gdGhlIGxpbmUKLSAgICBsZXQgaW5kID0gMCAiIGhvdyBtdWNoIHNob3VsZCBiZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBpbmRlbnRhdGlvbiBvZgotICAgICAgICAgICAgICAgICIgdGhlIGN1cnJlbnQgbGluZSBhbmQgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBuZXh0IGxpbmU/Ci0gICAgICAgICAgICAgICAgIiBlLmcuICsxOiB0aGUgaW5kZW50YXRpb24gb2YgdGhlIG5leHQgbGluZSBzaG91bGQgYmUgZXF1YWwgdG8KLSAgICAgICAgICAgICAgICAiIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBsaW5lIHBsdXMgb25lIHNoaWZ0d2lkdGgKLSAgICBsZXQgbGFzdF9mdW4gICAgICA9IDAgIiB0aGUgbGFzdCB0b2tlbiB3YXMgYSAnZnVuJwotICAgIGxldCBsYXN0X3JlY2VpdmUgID0gMCAiIHRoZSBsYXN0IHRva2VuIHdhcyBhICdyZWNlaXZlJzsgbmVlZGVkIGZvciAnYWZ0ZXInCi0gICAgbGV0IGxhc3RfaGFzaF9zeW0gPSAwICIgdGhlIGxhc3QgdG9rZW4gd2FzIGEgJyMnCitsZXQgczpjcG9fc2F2ZSA9ICZjcG8KK3NldCBjcG8mdmltCiAKLSAgICAiIElnbm9yZSBjb21tZW50cwotICAgIGlmIGE6bGluZSA9fiMgJ15ccyolJwotICAgICAgICByZXR1cm4gMAotICAgIGVuZGlmCisiIExvZ2dpbmcgbGlicmFyeSB7e3sxCisiID09PT09PT09PT09PT09PQogCi0gICAgIiBQYXJ0aWFsIGZ1bmN0aW9uIGhlYWQgd2hlcmUgdGhlIGd1YXJkIGlzIG1pc3NpbmcKLSAgICBpZiBhOmxpbmUgPX4jICJcXCheXFxsW1s6YWxudW06XV9dKlxcKVxcfFxcKF4nW14nXVxcKydcXCkoIiAmJiBhOmxpbmUgIX4jICctPicKLSAgICAgICAgcmV0dXJuIDIKLSAgICBlbmRpZgotCi0gICAgIiBUaGUgbWlzc2luZyBndWFyZCBmcm9tIHRoZSBzcGxpdCBmdW5jdGlvbiBoZWFkCi0gICAgaWYgYTpsaW5lID1+IyAnXlxzKndoZW5cc1wrLiotPicKLSAgICAgICAgcmV0dXJuIC0xCi0gICAgZW5kaWYKLQotICAgIHdoaWxlIDA8PWkgJiYgaTxsaW5lbGVuCi0gICAgICAgICIgbTogdGhlIG5leHQgdmFsdWUgb2YgdGhlIGkKLSAgICAgICAgaWYgYTpsaW5lW2ldID09ICciJwotICAgICAgICAgICAgbGV0IG0gPSBtYXRjaGVuZChhOmxpbmUsJyJcJShbXiJcXF1cfFxcLlwpKiInLGkpCi0gICAgICAgICAgICBsZXQgbGFzdF9yZWNlaXZlID0gMAotICAgICAgICBlbHNlaWYgYTpsaW5lW2ldID09ICInIgotICAgICAgICAgICAgbGV0IG0gPSBtYXRjaGVuZChhOmxpbmUsIidbXiddKiciLGkpCi0gICAgICAgICAgICBsZXQgbGFzdF9yZWNlaXZlID0gMAotICAgICAgICBlbHNlaWYgYTpsaW5lW2ldID1+IyAiW2Etel0iCi0gICAgICAgICAgICBsZXQgbSA9IG1hdGNoZW5kKGE6bGluZSwiLltbOmFsbnVtOl1fXSoiLGkpCi0gICAgICAgICAgICBpZiBsYXN0X2Z1bgotICAgICAgICAgICAgICAgIGxldCBpbmQgPSBpbmQgLSAxCi0gICAgICAgICAgICAgICAgbGV0IGxhc3RfZnVuID0gMAotICAgICAgICAgICAgICAgIGxldCBsYXN0X3JlY2VpdmUgPSAwCi0gICAgICAgICAgICBlbHNlaWYgYTpsaW5lWyhpKToobS0xKV0gPX4jICdeXCUoY2FzZVx8aWZcfHRyeVwpJCcKLSAgICAgICAgICAgICAgICBsZXQgaW5kID0gaW5kICsgMQotICAgICAgICAgICAgZWxzZWlmIGE6bGluZVsoaSk6KG0tMSldID1+IyAnXnJlY2VpdmUkJwotICAgICAgICAgICAgICAgIGxldCBpbmQgPSBpbmQgKyAxCi0gICAgICAgICAgICAgICAgbGV0IGxhc3RfcmVjZWl2ZSA9IDEKLSAgICAgICAgICAgIGVsc2VpZiBhOmxpbmVbKGkpOihtLTEpXSA9fiMgJ15iZWdpbiQnCi0gICAgICAgICAgICAgICAgbGV0IGluZCA9IGluZCArIDIKLSAgICAgICAgICAgICAgICBsZXQgbGFzdF9yZWNlaXZlID0gMAotICAgICAgICAgICAgZWxzZWlmIGE6bGluZVsoaSk6KG0tMSldID1+IyAnXmVuZCQnCi0gICAgICAgICAgICAgICAgbGV0IGluZCA9IGluZCAtIDIKLSAgICAgICAgICAgICAgICBsZXQgbGFzdF9yZWNlaXZlID0gMAotICAgICAgICAgICAgZWxzZWlmIGE6bGluZVsoaSk6KG0tMSldID1+IyAnXmFmdGVyJCcKLSAgICAgICAgICAgICAgICBpZiBsYXN0X3JlY2VpdmUgPT0gMAotICAgICAgICAgICAgICAgICAgICBsZXQgaW5kID0gaW5kIC0gMQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbGV0IGluZCA9IGluZCArIDAKLSAgICAgICAgICAgICAgICBlbmRpZgotICAgICAgICAgICAgICAgIGxldCBsYXN0X3JlY2VpdmUgPSAwCi0gICAgICAgICAgICBlbHNlaWYgYTpsaW5lWyhpKToobS0xKV0gPX4jICdeZnVuJCcKLSAgICAgICAgICAgICAgICBsZXQgaW5kID0gaW5kICsgMQotICAgICAgICAgICAgICAgIGxldCBsYXN0X2Z1biA9IDEKLSAgICAgICAgICAgICAgICBsZXQgbGFzdF9yZWNlaXZlID0gMAotICAgICAgICAgICAgZW5kaWYKLSAgICAgICAgZWxzZWlmIGE6bGluZVtpXSA9fiMgIltBLVpfXSIKLSAgICAgICAgICAgIGxldCBtID0gbWF0Y2hlbmQoYTpsaW5lLCIuW1s6YWxudW06XV9dKiIsaSkKLSAgICAgICAgICAgIGxldCBsYXN0X3JlY2VpdmUgPSAwCi0gICAgICAgIGVsc2VpZiBhOmxpbmVbaV0gPT0gJyQnCi0gICAgICAgICAgICBsZXQgbSA9IGkrMgotICAgICAgICAgICAgbGV0IGxhc3RfcmVjZWl2ZSA9IDAKLSAgICAgICAgZWxzZWlmIGE6bGluZVtpXSA9PSAiLiIgJiYgKGkrMT49bGluZWxlbiB8fCBhOmxpbmVbaSsxXSF+ICJbMC05XSIpCi0gICAgICAgICAgICBsZXQgbSA9IGkrMQotICAgICAgICAgICAgaWYgbGFzdF9oYXNoX3N5bQotICAgICAgICAgICAgICAgIGxldCBsYXN0X2hhc2hfc3ltID0gMAotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGxldCBpbmQgPSBpbmQgLSAxCi0gICAgICAgICAgICBlbmRpZgotICAgICAgICAgICAgbGV0IGxhc3RfcmVjZWl2ZSA9IDAKLSAgICAgICAgZWxzZWlmIGE6bGluZVtpXSA9PSAnLScgJiYgKGkrMTxsaW5lbGVuICYmIGE6bGluZVtpKzFdPT0nPicpCi0gICAgICAgICAgICBsZXQgbSA9IGkrMgotICAgICAgICAgICAgbGV0IGluZCA9IGluZCArIDEKLSAgICAgICAgICAgIGxldCBsYXN0X3JlY2VpdmUgPSAwCi0gICAgICAgIGVsc2VpZiBhOmxpbmVbaV0gPT0gJzsnICYmIGE6bGluZVsoaSk6KGxpbmVsZW4pXSAhfiMgJy4qLT4uKicKLSAgICAgICAgICAgIGxldCBtID0gaSsxCi0gICAgICAgICAgICBsZXQgaW5kID0gaW5kIC0gMQotICAgICAgICAgICAgbGV0IGxhc3RfcmVjZWl2ZSA9IDAKLSAgICAgICAgZWxzZWlmIGE6bGluZVtpXSA9PSAnIycKLSAgICAgICAgICAgIGxldCBtID0gaSsxCi0gICAgICAgICAgICBsZXQgbGFzdF9oYXNoX3N5bSA9IDEKLSAgICAgICAgZWxzZWlmIGE6bGluZVtpXSA9fiMgJ1soe1tdJwotICAgICAgICAgICAgbGV0IG0gPSBpKzEKLSAgICAgICAgICAgIGxldCBpbmQgPSBpbmQgKyAxCi0gICAgICAgICAgICBsZXQgbGFzdF9mdW4gPSAwCi0gICAgICAgICAgICBsZXQgbGFzdF9yZWNlaXZlID0gMAotICAgICAgICAgICAgbGV0IGxhc3RfaGFzaF9zeW0gPSAwCi0gICAgICAgIGVsc2VpZiBhOmxpbmVbaV0gPX4jICdbKX1cXV0nCi0gICAgICAgICAgICBsZXQgbSA9IGkrMQotICAgICAgICAgICAgbGV0IGluZCA9IGluZCAtIDEKLSAgICAgICAgICAgIGxldCBsYXN0X3JlY2VpdmUgPSAwCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxldCBtID0gaSsxCi0gICAgICAgIGVuZGlmCi0KLSAgICAgICAgbGV0IGkgPSBtCi0gICAgZW5kd2hpbGUKLQotICAgIHJldHVybiBpbmQKKyIgUHVycG9zZToKKyIgICBMb2dzIHRoZSBnaXZlbiBzdHJpbmcgdXNpbmcgdGhlIEVybGFuZ0luZGVudExvZyBmdW5jdGlvbiBpZiBpdCBleGlzdHMuCisiIFBhcmFtZXRlcnM6CisiICAgczogc3RyaW5nCitmdW5jdGlvbiEgczpMb2cocykKKyAgaWYgZXhpc3RzKCIqRXJsYW5nSW5kZW50TG9nIikKKyAgICBjYWxsIEVybGFuZ0luZGVudExvZyhhOnMpCisgIGVuZGlmCiBlbmRmdW5jdGlvbgogCi1mdW5jdGlvbiBzOkZpbmRQcmV2Tm9uQmxhbmtOb25Db21tZW50KGxudW0pCi0gICAgbGV0IGxudW0gPSBwcmV2bm9uYmxhbmsoYTpsbnVtKQotICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQotICAgICIgQ29udGludWUgdG8gc2VhcmNoIGFib3ZlIGlmIHRoZSBjdXJyZW50IGxpbmUgYmVnaW5zIHdpdGggYSAnJScKLSAgICB3aGlsZSBsaW5lID1+IyAnXlxzKiUuKiQnCi0gICAgICAgIGxldCBsbnVtID0gcHJldm5vbmJsYW5rKGxudW0gLSAxKQotICAgICAgICBpZiAwID09IGxudW0KLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGVuZGlmCi0gICAgICAgIGxldCBsaW5lID0gZ2V0bGluZShsbnVtKQotICAgIGVuZHdoaWxlCi0gICAgcmV0dXJuIGxudW0KLWVuZGZ1bmN0aW9uCisiIExpbmUgdG9rZW5pemVyIGxpYnJhcnkge3t7MQorIiA9PT09PT09PT09PT09PT09PT09PT09CiAKLSIgVGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGluZGVudGF0aW9uIGxldmVsIG9mIHRoZSBsaW5lIGFkanVzdGVkIHRvIGEgbXV0aXBsZQotIiBvZiAnc2hpZnR3aWR0aCcgb3B0aW9uLgotIgotIiBsbnVtOiBsaW5lIG51bWJlcgotIiByZXR1cm46IHRoZSBpbmRlbnRhdGlvbiBsZXZlbCBvZiB0aGUgbGluZQotZnVuY3Rpb24gczpHZXRMaW5lSW5kZW50KGxudW0pCi0gICAgcmV0dXJuIChpbmRlbnQoYTpsbnVtKSAvICZzdykgKiAmc3cKLWVuZGZ1bmN0aW9uCisiIEluZHRva2VucyBhcmUgImluZGVudGF0aW9uIHRva2VucyIuCiAKLWZ1bmN0aW9uIEVybGFuZ0luZGVudCgpCi0gICAgIiBGaW5kIGEgbm9uLWJsYW5rIGxpbmUgYWJvdmUgdGhlIGN1cnJlbnQgbGluZQotICAgIGxldCBsbnVtID0gcHJldm5vbmJsYW5rKHY6bG51bSAtIDEpCisiIFB1cnBvc2U6CisiICAgQ2FsY3VsYXRlIHRoZSBuZXcgdmlydHVhbCBjb2x1bW4gYWZ0ZXIgdGhlIGdpdmVuIHNlZ21lbnQgb2YgYSBsaW5lLgorIiBQYXJhbWV0ZXJzOgorIiAgIGxpbmU6IHN0cmluZworIiAgIGZpcnN0X2luZGV4OiBpbnRlZ2VyIC0tIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzZWdtZW50CisiICAgbGFzdF9pbmRleDogaW50ZWdlciAtLSB0aGUgaW5kZXggb2YgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIHRoZSBzZWdtZW50CisiICAgdmNvbDogaW50ZWdlciAtLSB0aGUgdmlydHVhbCBjb2x1bW4gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgdG9rZW4KKyIgICB0YWJzdG9wOiBpbnRlZ2VyIC0tIHRoZSB2YWx1ZSBvZiB0aGUgJ3RhYnN0b3AnIG9wdGlvbiB0byBiZSB1c2VkCisiIFJldHVybnM6CisiICAgdmNvbDogaW50ZWdlcgorIiBFeGFtcGxlOgorIiAgICIgaW5kZXg6ICAgIDAgMTIgMzQ1NjcKKyIgICAiIHZjb2w6ICAgICAwIDQ1IDg5CisiICAgczpDYWxjVkNvbCgiXHQnXHR4JywgYiIsIDEsIDQsIDQpICAtPiAxMAorZnVuY3Rpb24hIHM6Q2FsY1ZDb2wobGluZSwgZmlyc3RfaW5kZXgsIGxhc3RfaW5kZXgsIHZjb2wsIHRhYnN0b3ApCiAKLSAgICAiIEhpdCB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIHVzZSB6ZXJvIGluZGVudAotICAgIGlmIGxudW0gPT0gMAotICAgICAgICByZXR1cm4gMAotICAgIGVuZGlmCisgICIgV2UgY29weSB0aGUgcmVsZXZlbnQgc2VnbWVudCBvZiB0aGUgbGluZSwgb3RoZXJ3aXNlIGlmIHRoZSBsaW5lIHdlcmUKKyAgIiBlLmcuIGAiXHQiLCB0ZXJtYCB0aGVuIHRoZSBlbHNlIGJyYW5jaCBiZWxvdyB3b3VsZCBjb25zdW1lIHRoZSBgIiwgdGVybWAKKyAgIiBwYXJ0IGF0IG9uY2UuCisgIGxldCBsaW5lID0gYTpsaW5lW2E6Zmlyc3RfaW5kZXggOiBhOmxhc3RfaW5kZXhdCiAKLSAgICBsZXQgcHJldmxpbmUgPSBnZXRsaW5lKGxudW0pCi0gICAgbGV0IGN1cnJsaW5lID0gZ2V0bGluZSh2OmxudW0pCisgIGxldCBpID0gMAorICBsZXQgbGFzdF9pbmRleCA9IGE6bGFzdF9pbmRleCAtIGE6Zmlyc3RfaW5kZXgKKyAgbGV0IHZjb2wgPSBhOnZjb2wKIAotICAgIGxldCBpbmRfYWZ0ZXIgPSBzOkVybGFuZ0luZGVudEFmdGVyTGluZShwcmV2bGluZSkKLSAgICBpZiBpbmRfYWZ0ZXIgIT0gMAotICAgICAgICBsZXQgaW5kID0gczpHZXRMaW5lSW5kZW50KGxudW0pICsgaW5kX2FmdGVyICogJnN3CisgIHdoaWxlIDAgPD0gaSAmJiBpIDw9IGxhc3RfaW5kZXgKKworICAgIGlmIGxpbmVbaV0gPT0gIlx0IgorICAgICAgIiBFeGFtcGxlICh3aGVuIHRhYnN0b3AgPT0gNCk6CisgICAgICAiCisgICAgICAiIHZjb2wgKyB0YWIgLT4gbmV4dF92Y29sCisgICAgICAiIDAgKyB0YWIgLT4gNAorICAgICAgIiAxICsgdGFiIC0+IDQKKyAgICAgICIgMiArIHRhYiAtPiA0CisgICAgICAiIDMgKyB0YWIgLT4gNAorICAgICAgIiA0ICsgdGFiIC0+IDgKKyAgICAgICIKKyAgICAgICIgbmV4dF9pIC0gaSA9PSB0aGUgbnVtYmVyIG9mIHRhYnMKKyAgICAgIGxldCBuZXh0X2kgPSBtYXRjaGVuZChsaW5lLCAnXHQqJywgaSArIDEpCisgICAgICBsZXQgdmNvbCA9ICh2Y29sIC8gYTp0YWJzdG9wICsgKG5leHRfaSAtIGkpKSAqIGE6dGFic3RvcAorICAgICAgY2FsbCBzOkxvZygnbmV3IHZjb2wgYWZ0ZXIgdGFiOiAnLiB2Y29sKQogICAgIGVsc2UKLSAgICAgICAgbGV0IGluZCA9IGluZGVudChsbnVtKSArIGluZF9hZnRlciAqICZzdworICAgICAgbGV0IG5leHRfaSA9IG1hdGNoZW5kKGxpbmUsICdbXlx0XSonLCBpICsgMSkKKyAgICAgIGxldCB2Y29sICs9IG5leHRfaSAtIGkKKyAgICAgIGNhbGwgczpMb2coJ25ldyB2Y29sIGFmdGVyIG90aGVyOiAnLiB2Y29sKQogICAgIGVuZGlmCisgICAgbGV0IGkgPSBuZXh0X2kKKyAgZW5kd2hpbGUKIAotICAgICIgU3BlY2lhbCBjYXNlczoKLSAgICBpZiBwcmV2bGluZSA9fiMgJ15ccypcJShhZnRlclx8ZW5kXClcPicKLSAgICAgICAgbGV0IGluZCA9IGluZCArIDIqJnN3Ci0gICAgZW5kaWYKLSAgICBpZiBjdXJybGluZSA9fiMgJ15ccyplbmRcPicKLSAgICAgICAgbGV0IGluZCA9IGluZCAtIDIqJnN3Ci0gICAgZW5kaWYKLSAgICBpZiBjdXJybGluZSA9fiMgJ15ccyphZnRlclw+JwotICAgICAgICBsZXQgcGxudW0gPSBzOkZpbmRQcmV2Tm9uQmxhbmtOb25Db21tZW50KHY6bG51bS0xKQotICAgICAgICBpZiBnZXRsaW5lKHBsbnVtKSA9fiMgJ15bXiVdKlw8cmVjZWl2ZVw+XHMqXCUoJS4qXClcPSQnCi0gICAgICAgICAgICAiIElmIHRoZSAncmVjZWl2ZScgaXMgbm90IGluIHRoZSBzYW1lIGxpbmUgYXMgdGhlICdhZnRlcicKLSAgICAgICAgICAgIGxldCBpbmQgPSBpbmQgLSAxKiZzdwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsZXQgaW5kID0gaW5kIC0gMiomc3cKLSAgICAgICAgZW5kaWYKLSAgICBlbmRpZgotICAgIGlmIHByZXZsaW5lID1+IyAnXlxzKlspfVxdXScKLSAgICAgICAgbGV0IGluZCA9IGluZCArIDEqJnN3Ci0gICAgZW5kaWYKLSAgICBpZiBjdXJybGluZSA9fiMgJ15ccypbKX1cXV0nCi0gICAgICAgIGxldCBpbmQgPSBpbmQgLSAxKiZzdwotICAgIGVuZGlmCi0gICAgaWYgcHJldmxpbmUgPX4jICdeXHMqXCUoY2F0Y2hcKVxzKlwlKCVcfCRcKScKLSAgICAgICAgbGV0IGluZCA9IGluZCArIDEqJnN3Ci0gICAgZW5kaWYKLSAgICBpZiBjdXJybGluZSA9fiMgJ15ccypcJShjYXRjaFwpXHMqXCUoJVx8JFwpJwotICAgICAgICBsZXQgaW5kID0gaW5kIC0gMSomc3cKLSAgICBlbmRpZgotCi0gICAgaWYgaW5kPDAKLSAgICAgICAgbGV0IGluZCA9IDAKLSAgICBlbmRpZgotICAgIHJldHVybiBpbmQKKyAgcmV0dXJuIHZjb2wKIGVuZGZ1bmN0aW9uCisKKyIgUHVycG9zZToKKyIgICBHbyB0aHJvdWdoIHRoZSB3aG9sZSBsaW5lIGFuZCByZXR1cm4gdGhlIHRva2VucyBpbiB0aGUgbGluZS4KKyIgUGFyYW1ldGVyczoKKyIgICBsaW5lOiBzdHJpbmcgLS0gdGhlIGxpbmUgdG8gYmUgZXhhbWluZWQKKyIgICBzdHJpbmdfY29udGludWF0aW9uOiBib29sCisiICAgYXRvbV9jb250aW51YXRpb246IGJvb2wKKyIgUmV0dXJuczoKKyIgICBpbmR0b2tlbnMgPSBbaW5kdG9rZW5dCisiICAgaW5kdG9rZW4gPSBbdG9rZW4sIHZjb2wsIGNvbF0KKyIgICB0b2tlbiA9IHN0cmluZyAoZXhhbXBsZXM6ICdiZWdpbicsICc8dmFyaWFibGU+JywgJ30nKQorIiAgIHZjb2wgPSBpbnRlZ2VyICh0aGUgdmlydHVhbCBjb2x1bW4gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgdG9rZW4pCisiICAgY29sID0gaW50ZWdlcgorZnVuY3Rpb24hIHM6R2V0VG9rZW5zRnJvbUxpbmUobGluZSwgc3RyaW5nX2NvbnRpbnVhdGlvbiwgYXRvbV9jb250aW51YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0YWJzdG9wKQorCisgIGxldCBsaW5lbGVuID0gc3RybGVuKGE6bGluZSkgIiBUaGUgbGVuZ3RoIG9mIHRoZSBsaW5lCisgIGxldCBpID0gMCAiIFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBjaGFyYWN0ZXIgaW4gdGhlIGxpbmUKKyAgbGV0IHZjb2wgPSAwICIgVGhlIHZpcnR1YWwgY29sdW1uIG9mIHRoZSBjdXJyZW50IGNoYXJhY3RlcgorICBsZXQgaW5kdG9rZW5zID0gW10KKworICBpZiBhOnN0cmluZ19jb250aW51YXRpb24KKyAgICBsZXQgaSA9IG1hdGNoZW5kKGE6bGluZSwgJ15cJShbXiJcXF1cfFxcLlwpKiInLCAwKQorICAgIGlmIGkgPT0gLTEKKyAgICAgIGNhbGwgczpMb2coJyAgICBXaG9sZSBsaW5lIGlzIHN0cmluZyBjb250aW51YXRpb24gLT4gaWdub3JlJykKKyAgICAgIHJldHVybiBbXQorICAgIGVsc2UKKyAgICAgIGxldCB2Y29sID0gczpDYWxjVkNvbChhOmxpbmUsIDAsIGkgLSAxLCAwLCBhOnRhYnN0b3ApCisgICAgICBjYWxsIGFkZChpbmR0b2tlbnMsIFsnPHN0cmluZ19lbmQ+JywgdmNvbCwgaV0pCisgICAgZW5kaWYKKyAgZWxzZWlmIGE6YXRvbV9jb250aW51YXRpb24KKyAgICBsZXQgaSA9IG1hdGNoZW5kKGE6bGluZSwgIl5cXCUoW14nXFxcXF1cXHxcXFxcLlxcKSonIiwgMCkKKyAgICBpZiBpID09IC0xCisgICAgICBjYWxsIHM6TG9nKCcgICAgV2hvbGUgbGluZSBpcyBxdW90ZWQgYXRvbSBjb250aW51YXRpb24gLT4gaWdub3JlJykKKyAgICAgIHJldHVybiBbXQorICAgIGVsc2UKKyAgICAgIGxldCB2Y29sID0gczpDYWxjVkNvbChhOmxpbmUsIDAsIGkgLSAxLCAwLCBhOnRhYnN0b3ApCisgICAgICBjYWxsIGFkZChpbmR0b2tlbnMsIFsnPHF1b3RlZF9hdG9tX2VuZD4nLCB2Y29sLCBpXSkKKyAgICBlbmRpZgorICBlbmRpZgorCisgIHdoaWxlIDAgPD0gaSAmJiBpIDwgbGluZWxlbgorCisgICAgbGV0IG5leHRfdmNvbCA9ICcnCisKKyAgICAiIFNwYWNlcworICAgIGlmIGE6bGluZVtpXSA9PSAnICcKKyAgICAgIGxldCBuZXh0X2kgPSBtYXRjaGVuZChhOmxpbmUsICcgKicsIGkgKyAxKQorCisgICAgIiBUYWJzCisgICAgZWxzZWlmIGE6bGluZVtpXSA9PSAiXHQiCisgICAgICBsZXQgbmV4dF9pID0gbWF0Y2hlbmQoYTpsaW5lLCAnXHQqJywgaSArIDEpCisKKyAgICAgICIgU2VlIGV4YW1wbGUgaW4gczpDYWxjVkNvbAorICAgICAgbGV0IG5leHRfdmNvbCA9ICh2Y29sIC8gYTp0YWJzdG9wICsgKG5leHRfaSAtIGkpKSAqIGE6dGFic3RvcAorCisgICAgIiBDb21tZW50CisgICAgZWxzZWlmIGE6bGluZVtpXSA9PSAnJScKKyAgICAgIGxldCBuZXh0X2kgPSBsaW5lbGVuCisKKyAgICAiIFN0cmluZyB0b2tlbjogIi4uLiIKKyAgICBlbHNlaWYgYTpsaW5lW2ldID09ICciJworICAgICAgbGV0IG5leHRfaSA9IG1hdGNoZW5kKGE6bGluZSwgJ1wlKFteIlxcXVx8XFwuXCkqIicsIGkgKyAxKQorICAgICAgaWYgbmV4dF9pID09IC0xCisgICAgICAgIGNhbGwgYWRkKGluZHRva2VucywgWyc8c3RyaW5nX3N0YXJ0PicsIHZjb2wsIGldKQorICAgICAgZWxzZQorICAgICAgICBsZXQgbmV4dF92Y29sID0gczpDYWxjVkNvbChhOmxpbmUsIGksIG5leHRfaSAtIDEsIHZjb2wsIGE6dGFic3RvcCkKKyAgICAgICAgY2FsbCBhZGQoaW5kdG9rZW5zLCBbJzxzdHJpbmc+JywgdmNvbCwgaV0pCisgICAgICBlbmRpZgorCisgICAgIiBRdW90ZWQgYXRvbSB0b2tlbjogJy4uLicKKyAgICBlbHNlaWYgYTpsaW5lW2ldID09ICInIgorICAgICAgbGV0IG5leHRfaSA9IG1hdGNoZW5kKGE6bGluZSwgIlxcJShbXidcXFxcXVxcfFxcXFwuXFwpKiciLCBpICsgMSkKKyAgICAgIGlmIG5leHRfaSA9PSAtMQorICAgICAgICBjYWxsIGFkZChpbmR0b2tlbnMsIFsnPHF1b3RlZF9hdG9tX3N0YXJ0PicsIHZjb2wsIGldKQorICAgICAgZWxzZQorICAgICAgICBsZXQgbmV4dF92Y29sID0gczpDYWxjVkNvbChhOmxpbmUsIGksIG5leHRfaSAtIDEsIHZjb2wsIGE6dGFic3RvcCkKKyAgICAgICAgY2FsbCBhZGQoaW5kdG9rZW5zLCBbJzxxdW90ZWRfYXRvbT4nLCB2Y29sLCBpXSkKKyAgICAgIGVuZGlmCisKKyAgICAiIEtleXdvcmQgb3IgYXRvbSBvciB2YXJpYWJsZSB0b2tlbiBvciBudW1iZXIKKyAgICBlbHNlaWYgYTpsaW5lW2ldID1+IyAnW2EtekEtWl9AMC05XScKKyAgICAgIGxldCBuZXh0X2kgPSBtYXRjaGVuZChhOmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBcJ1tbOmFsbnVtOl1fQDpdKlwlKFxzKiNccypbWzphbG51bTpdX0A6XSpcKVw9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFxpICsgMSkKKyAgICAgIGNhbGwgYWRkKGluZHRva2VucywgW2E6bGluZVsoaSk6KG5leHRfaSAtIDEpXSwgdmNvbCwgaV0pCisKKyAgICAiIENoYXJhY3RlciB0b2tlbjogJDxjaGFyPiAoYXMgaW46ICRhKQorICAgIGVsc2VpZiBhOmxpbmVbaV0gPT0gJyQnCisgICAgICBjYWxsIGFkZChpbmR0b2tlbnMsIFsnJC4nLCB2Y29sLCBpXSkKKyAgICAgIGxldCBuZXh0X2kgPSBpICsgMgorCisgICAgIiBEb3QgdG9rZW46IC4KKyAgICBlbHNlaWYgYTpsaW5lW2ldID09ICcuJworCisgICAgICBsZXQgbmV4dF9pID0gaSArIDEKKworICAgICAgaWYgaSArIDEgPT0gbGluZWxlbiB8fCBhOmxpbmVbaSArIDFdID1+IyAnW1s6Ymxhbms6XSVdJworICAgICAgICAiIEVuZCBvZiBjbGF1c2UgdG9rZW46IC4gKGFzIGluOiBmKCkgLT4gb2suKQorICAgICAgICBjYWxsIGFkZChpbmR0b2tlbnMsIFsnPGVuZF9vZl9jbGF1c2U+JywgdmNvbCwgaV0pCisKKyAgICAgIGVsc2UKKyAgICAgICAgIiBQb3NzaWJpbGl0aWVzOgorICAgICAgICAiIC0gRG90IHRva2VuIGluIGZsb2F0OiAuIChhcyBpbjogMy4xNCkKKyAgICAgICAgIiAtIERvdCB0b2tlbiBpbiByZWNvcmQ6IC4gKGFzIGluOiAjbXlyZWMubXlmaWVsZCkKKyAgICAgICAgY2FsbCBhZGQoaW5kdG9rZW5zLCBbJy4nLCB2Y29sLCBpXSkKKyAgICAgIGVuZGlmCisKKyAgICAiIEVxdWFsIHNpZ24KKyAgICBlbHNlaWYgYTpsaW5lW2ldID09ICc9JworICAgICAgIiBUaGlzIGlzIGhhbmRsZWQgc2VwYXJhdGVseSBzbyB0aGF0ICI9PDwiIHdpbGwgYmUgcGFyc2VkIGFzCisgICAgICAiIFsnPScsICc8PCddIGluc3RlYWQgb2YgWyc9PCcsICc8J10uIEFsdGhvdWdoIEVybGFuZyBwYXJzZXMgaXQKKyAgICAgICIgY3VycmVudGx5IGluIHRoZSBsYXR0ZXIgd2F5LCB0aGF0IG1heSBiZSBmaXhlZCBzb21lIGRheS4KKyAgICAgIGNhbGwgYWRkKGluZHRva2VucywgW2E6bGluZVtpXSwgdmNvbCwgaV0pCisgICAgICBsZXQgbmV4dF9pID0gaSArIDEKKworICAgICIgVGhyZWUtY2hhcmFjdGVyIHRva2VucworICAgIGVsc2VpZiBpICsgMSA8IGxpbmVsZW4gJiYKKyAgICAgICAgIFwgaW5kZXgoWyc9Oj0nLCAnPS89J10sIGE6bGluZVtpIDogaSArIDFdKSAhPSAtMQorICAgICAgY2FsbCBhZGQoaW5kdG9rZW5zLCBbYTpsaW5lW2kgOiBpICsgMV0sIHZjb2wsIGldKQorICAgICAgbGV0IG5leHRfaSA9IGkgKyAyCisKKyAgICAiIFR3by1jaGFyYWN0ZXIgdG9rZW5zCisgICAgZWxzZWlmIGkgKyAxIDwgbGluZWxlbiAmJgorICAgICAgICAgXCBpbmRleChbJy0+JywgJzw8JywgJz4+JywgJ3x8JywgJz09JywgJy89JywgJz08JywgJz49JywgJysrJywgJy0tJywKKyAgICAgICAgIFwgICAgICAgICc6OiddLAorICAgICAgICAgXCAgICAgICBhOmxpbmVbaSA6IGkgKyAxXSkgIT0gLTEKKyAgICAgIGNhbGwgYWRkKGluZHRva2VucywgW2E6bGluZVtpIDogaSArIDFdLCB2Y29sLCBpXSkKKyAgICAgIGxldCBuZXh0X2kgPSBpICsgMgorCisgICAgIiBPdGhlciBjaGFyYWN0ZXI6ICwgOyA8ID4gKCApIFsgXSB7IH0gIyArIC0gKiAvIDogPyA9ICEgfAorICAgIGVsc2UKKyAgICAgIGNhbGwgYWRkKGluZHRva2VucywgW2E6bGluZVtpXSwgdmNvbCwgaV0pCisgICAgICBsZXQgbmV4dF9pID0gaSArIDEKKworICAgIGVuZGlmCisKKyAgICBpZiBuZXh0X3Zjb2wgPT0gJycKKyAgICAgIGxldCB2Y29sICs9IG5leHRfaSAtIGkKKyAgICBlbHNlCisgICAgICBsZXQgdmNvbCA9IG5leHRfdmNvbAorICAgIGVuZGlmCisKKyAgICBsZXQgaSA9IG5leHRfaQorCisgIGVuZHdoaWxlCisKKyAgcmV0dXJuIGluZHRva2VucworCitlbmRmdW5jdGlvbgorCisiIFRPRE86IGRvYywgaGFuZGxlICJub3QgZm91bmQiIGNhc2UKK2Z1bmN0aW9uISBzOkdldEluZHRva2VuQXRDb2woaW5kdG9rZW5zLCBjb2wpCisgIGxldCBpID0gMAorICB3aGlsZSBpIDwgbGVuKGE6aW5kdG9rZW5zKQorICAgIGlmIGE6aW5kdG9rZW5zW2ldWzJdID09IGE6Y29sCisgICAgICByZXR1cm4gWzEsIGldCisgICAgZWxzZWlmIGE6aW5kdG9rZW5zW2ldWzJdID4gYTpjb2wKKyAgICAgIHJldHVybiBbMCwgczpJbmRlbnRFcnJvcignTm8gdG9rZW4gYXQgY29sICcgLiBhOmNvbCAuICcsICcgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCdpbmR0b2tlbnMgPSAnIC4gc3RyaW5nKGE6aW5kdG9rZW5zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwnJywgJycpXQorICAgIGVuZGlmCisgICAgbGV0IGkgKz0gMQorICBlbmR3aGlsZQorICByZXR1cm4gWzAsIHM6SW5kZW50RXJyb3IoJ05vIHRva2VuIGF0IGNvbCAnIC4gYTpjb2wgLiAnLCAnIC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwnaW5kdG9rZW5zID0gJyAuIHN0cmluZyhhOmluZHRva2VucyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBcJycsICcnKV0KK2VuZGZ1bmN0aW9uCisKKyIgU3RhY2sgbGlicmFyeSB7e3sxCisiID09PT09PT09PT09PT0KKworIiBQdXJwb3NlOgorIiAgIFB1c2ggYSB0b2tlbiBvbnRvIHRoZSBwYXJzZXIncyBzdGFjay4KKyIgUGFyYW1ldGVyczoKKyIgICBzdGFjazogW3Rva2VuXQorIiAgIHRva2VuOiBzdHJpbmcKK2Z1bmN0aW9uISBzOlB1c2goc3RhY2ssIHRva2VuKQorICBjYWxsIHM6TG9nKCcgICAgU3RhY2sgUHVzaDogIicgLiBhOnRva2VuIC4gJyIgaW50byAnIC4gc3RyaW5nKGE6c3RhY2spKQorICBjYWxsIGluc2VydChhOnN0YWNrLCBhOnRva2VuKQorZW5kZnVuY3Rpb24KKworIiBQdXJwb3NlOgorIiAgIFBvcCBhIHRva2VuIGZyb20gdGhlIHBhcnNlcidzIHN0YWNrLgorIiBQYXJhbWV0ZXJzOgorIiAgIHN0YWNrOiBbdG9rZW5dCisiICAgdG9rZW46IHN0cmluZworIiBSZXR1cm5zOgorIiAgIHRva2VuOiBzdHJpbmcgLS0gdGhlIHJlbW92ZWQgZWxlbWVudAorZnVuY3Rpb24hIHM6UG9wKHN0YWNrKQorICBsZXQgaGVhZCA9IHJlbW92ZShhOnN0YWNrLCAwKQorICBjYWxsIHM6TG9nKCcgICAgU3RhY2sgUG9wOiAiJyAuIGhlYWQgLiAnIiBmcm9tICcgLiBzdHJpbmcoYTpzdGFjaykpCisgIHJldHVybiBoZWFkCitlbmRmdW5jdGlvbgorCisiIExpYnJhcnkgZm9yIGFjY2Vzc2luZyBhbmQgc3RvcmluZyB0b2tlbml6ZWQgbGluZXMge3t7MQorIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyIgVGhlIEVybGFuZyB0b2tlbiBjYWNoZTogYW4gYGxudW0gLT4gaW5kdG9rZW5zYCBkaWN0aW9uYXJ5IHRoYXQgc3RvcmVzIHRoZQorIiB0b2tlbml6ZWQgbGluZXMuCitsZXQgczphbGxfdG9rZW5zID0ge30KK2xldCBzOmZpbGVfbmFtZSA9ICcnCitsZXQgczpsYXN0X2NoYW5nZWR0aWNrID0gLTEKKworIiBQdXJwb3NlOgorIiAgIENsZWFyIHRoZSBFcmxhbmcgdG9rZW4gY2FjaGUgaWYgd2UgaGF2ZSBhIGRpZmZlcmVudCBmaWxlIG9yIHRoZSBmaWxlIGhhcworIiAgIGJlZW4gY2hhbmdlZCBzaW5jZSB0aGUgbGFzdCBpbmRlbnRhdGlvbi4KK2Z1bmN0aW9uISBzOkNsZWFyVG9rZW5DYWNoZUlmTmVlZGVkKCkKKyAgbGV0IGZpbGVfbmFtZSA9IGV4cGFuZCgnJTpwJykKKyAgaWYgZmlsZV9uYW1lICE9IHM6ZmlsZV9uYW1lIHx8CisgICBcIGI6Y2hhbmdlZHRpY2sgIT0gczpsYXN0X2NoYW5nZWR0aWNrCisgICAgbGV0IHM6ZmlsZV9uYW1lID0gZmlsZV9uYW1lCisgICAgbGV0IHM6bGFzdF9jaGFuZ2VkdGljayA9IGI6Y2hhbmdlZHRpY2sKKyAgICBsZXQgczphbGxfdG9rZW5zID0ge30KKyAgZW5kaWYKK2VuZGZ1bmN0aW9uCisKKyIgUHVycG9zZToKKyIgICBSZXR1cm4gdGhlIHRva2VucyBvZiBsaW5lIGBsbnVtYCwgaWYgdGhhdCBsaW5lIGlzIG5vdCBlbXB0eS4gSWYgaXQgaXMKKyIgICBlbXB0eSwgZmluZCB0aGUgZmlyc3Qgbm9uLWVtcHR5IGxpbmUgaW4gdGhlIGdpdmVuIGBkaXJlY3Rpb25gIGFuZCByZXR1cm4KKyIgICB0aGUgdG9rZW5zIG9mIHRoYXQgbGluZS4KKyIgUGFyYW1ldGVyczoKKyIgICBsbnVtOiBpbnRlZ2VyCisiICAgZGlyZWN0aW9uOiAndXAnIHwgJ2Rvd24nCisiIFJldHVybnM6CisiICAgcmVzdWx0OiBbXSAtLSB0aGUgcmVzdWx0IGlzIGFuIGVtcHR5IGxpc3QgaWYgd2UgaGl0IHRoZSBiZWdpbm5pbmcgb3IgZW5kCisiICAgICAgICAgICAgICAgICAgb2YgdGhlIGZpbGUKKyIgICAgICAgICAgIHwgW2xudW0sIGluZHRva2Vuc10KKyIgICBsbnVtOiBpbnRlZ2VyIC0tIHRoZSBpbmRleCBvZiB0aGUgbm9uLWVtcHR5IGxpbmUgdGhhdCB3YXMgZm91bmQgYW5kCisiICAgICAgICAgICAgICAgICAgICB0b2tlbml6ZWQKKyIgICBpbmR0b2tlbnM6IFtpbmR0b2tlbl0gLS0gdGhlIHRva2VucyBvZiBsaW5lIGBsbnVtYAorZnVuY3Rpb24hIHM6VG9rZW5pemVMaW5lKGxudW0sIGRpcmVjdGlvbikKKworICBjYWxsIHM6TG9nKCdUb2tlbml6aW5nIHN0YXJ0cyBmcm9tIGxpbmUgJyAuIGE6bG51bSkKKyAgaWYgYTpkaXJlY3Rpb24gPT0gJ3VwJworICAgIGxldCBsbnVtID0gcHJldm5vbmJsYW5rKGE6bG51bSkKKyAgZWxzZSAiIGE6ZGlyZWN0aW9uID09ICdkb3duJworICAgIGxldCBsbnVtID0gbmV4dG5vbmJsYW5rKGE6bG51bSkKKyAgZW5kaWYKKworICAiIFdlIGhpdCB0aGUgYmVnaW5uaW5nIG9yIGVuZCBvZiB0aGUgZmlsZQorICBpZiBsbnVtID09IDAKKyAgICBsZXQgaW5kdG9rZW5zID0gW10KKyAgICBjYWxsIHM6TG9nKCcgIFdlIGhpdCB0aGUgYmVnaW5uaW5nIG9yIGVuZCBvZiB0aGUgZmlsZS4nKQorCisgICAgIiBUaGUgbGluZSBoYXMgYWxyZWFkeSBiZWVuIHBhcnNlZAorICBlbHNlaWYgaGFzX2tleShzOmFsbF90b2tlbnMsIGxudW0pCisgICAgbGV0IGluZHRva2VucyA9IHM6YWxsX3Rva2Vuc1tsbnVtXQorICAgIGNhbGwgczpMb2coJ0NhY2hlZCBsaW5lICcgLiBsbnVtIC4gJzogJyAuIGdldGxpbmUobG51bSkpCisgICAgY2FsbCBzOkxvZygiICBUb2tlbnMgaW4gdGhlIGxpbmU6XG4gICAgLSAiIC4gam9pbihpbmR0b2tlbnMsICJcbiAgICAtICIpKQorCisgICAgIiBUaGUgbGluZSBzaG91bGQgYmUgcGFyc2VkIG5vdworICBlbHNlCisKKyAgICAiIFBhcnNlIHRoZSBsaW5lCisgICAgbGV0IGxpbmUgPSBnZXRsaW5lKGxudW0pCisgICAgbGV0IHN0cmluZ19jb250aW51YXRpb24gPSBzOklzTGluZVN0cmluZ0NvbnRpbnVhdGlvbihsbnVtKQorICAgIGxldCBhdG9tX2NvbnRpbnVhdGlvbiA9IHM6SXNMaW5lQXRvbUNvbnRpbnVhdGlvbihsbnVtKQorICAgIGxldCBpbmR0b2tlbnMgPSBzOkdldFRva2Vuc0Zyb21MaW5lKGxpbmUsIHN0cmluZ19jb250aW51YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcYXRvbV9jb250aW51YXRpb24sICZ0YWJzdG9wKQorICAgIGxldCBzOmFsbF90b2tlbnNbbG51bV0gPSBpbmR0b2tlbnMKKyAgICBjYWxsIHM6TG9nKCdUb2tlbml6aW5nIGxpbmUgJyAuIGxudW0gLiAnOiAnIC4gbGluZSkKKyAgICBjYWxsIHM6TG9nKCIgIFRva2VucyBpbiB0aGUgbGluZTpcbiAgICAtICIgLiBqb2luKGluZHRva2VucywgIlxuICAgIC0gIikpCisKKyAgZW5kaWYKKworICByZXR1cm4gW2xudW0sIGluZHRva2Vuc10KK2VuZGZ1bmN0aW9uCisKKyIgUHVycG9zZToKKyIgICBBcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgUHJldkluZFRva2VuIGFuZCBOZXh0SW5kVG9rZW4sIHRoZSBGaW5kSW5kVG9rZW4KKyIgICBmdW5jdGlvbiBmaW5kcyB0aGUgZmlyc3QgbGluZSB3aXRoIGF0IGxlYXN0IG9uZSB0b2tlbiBpbiB0aGUgZ2l2ZW4KKyIgICBkaXJlY3Rpb24uCisiIFBhcmFtZXRlcnM6CisiICAgbG51bTogaW50ZWdlcgorIiAgIGRpcmVjdGlvbjogJ3VwJyB8ICdkb3duJworIiBSZXR1cm5zOgorIiAgIHJlc3VsdDogW10gLS0gdGhlIHJlc3VsdCBpcyBhbiBlbXB0eSBsaXN0IGlmIHdlIGhpdCB0aGUgYmVnaW5uaW5nIG9yIGVuZAorIiAgICAgICAgICAgICAgICAgIG9mIHRoZSBmaWxlCisiICAgICAgICAgICB8IGluZHRva2VuCitmdW5jdGlvbiEgczpGaW5kSW5kVG9rZW4obG51bSwgZGlyKQorICBsZXQgbG51bSA9IGE6bG51bQorICB3aGlsZSAxCisgICAgbGV0IGxudW0gKz0gKGE6ZGlyID09ICd1cCcgPyAtMSA6IDEpCisgICAgbGV0IFtsbnVtLCBpbmR0b2tlbnNdID0gczpUb2tlbml6ZUxpbmUobG51bSwgYTpkaXIpCisgICAgaWYgbG51bSA9PSAwCisgICAgICAiIFdlIGhpdCB0aGUgYmVnaW5uaW5nIG9yIGVuZCBvZiB0aGUgZmlsZQorICAgICAgcmV0dXJuIFtdCisgICAgZWxzZWlmICFlbXB0eShpbmR0b2tlbnMpCisgICAgICByZXR1cm4gaW5kdG9rZW5zW2E6ZGlyID09ICd1cCcgPyAtMSA6IDBdCisgICAgZW5kaWYKKyAgZW5kd2hpbGUKK2VuZGZ1bmN0aW9uCisKKyIgUHVycG9zZToKKyIgICBGaW5kIHRoZSB0b2tlbiB0aGF0IGRpcmVjdGx5IHByZWNlZGVzIHRoZSBnaXZlbiB0b2tlbi4KKyIgUGFyYW1ldGVyczoKKyIgICBsbnVtOiBpbnRlZ2VyIC0tIHRoZSBsaW5lIG9mIHRoZSBnaXZlbiB0b2tlbgorIiAgIGk6IHRoZSBpbmRleCBvZiB0aGUgZ2l2ZW4gdG9rZW4gd2l0aGluIGxpbmUgYGxudW1gCisiIFJldHVybnM6CisiICAgcmVzdWx0ID0gW10gLS0gdGhlIHJlc3VsdCBpcyBhbiBlbXB0eSBsaXN0IGlmIHRoZSBnaXZlbiB0b2tlbiBpcyB0aGUgZmlyc3QKKyIgICAgICAgICAgICAgICAgICB0b2tlbiBvZiB0aGUgZmlsZQorIiAgICAgICAgICB8IGluZHRva2VuCitmdW5jdGlvbiEgczpQcmV2SW5kVG9rZW4obG51bSwgaSkKKyAgY2FsbCBzOkxvZygnICAgIFByZXZJbmRUb2tlbiBjYWxsZWQ6IGxudW09JyAuIGE6bG51bSAuICcsIGkgPScgLiBhOmkpCisKKyAgIiBJZiB0aGUgY3VycmVudCBsaW5lIGhhcyBhIHByZXZpb3VzIHRva2VuLCByZXR1cm4gdGhhdAorICBpZiBhOmkgPiAwCisgICAgcmV0dXJuIHM6YWxsX3Rva2Vuc1thOmxudW1dW2E6aSAtIDFdCisgIGVsc2UKKyAgICByZXR1cm4gczpGaW5kSW5kVG9rZW4oYTpsbnVtLCAndXAnKQorICBlbmRpZgorZW5kZnVuY3Rpb24KKworIiBQdXJwb3NlOgorIiAgIEZpbmQgdGhlIHRva2VuIHRoYXQgZGlyZWN0bHkgc3VjY2VlZHMgdGhlIGdpdmVuIHRva2VuLgorIiBQYXJhbWV0ZXJzOgorIiAgIGxudW06IGludGVnZXIgLS0gdGhlIGxpbmUgb2YgdGhlIGdpdmVuIHRva2VuCisiICAgaTogdGhlIGluZGV4IG9mIHRoZSBnaXZlbiB0b2tlbiB3aXRoaW4gbGluZSBgbG51bWAKKyIgUmV0dXJuczoKKyIgICByZXN1bHQgPSBbXSAtLSB0aGUgcmVzdWx0IGlzIGFuIGVtcHR5IGxpc3QgaWYgdGhlIGdpdmVuIHRva2VuIGlzIHRoZSBsYXN0CisiICAgICAgICAgICAgICAgICAgdG9rZW4gb2YgdGhlIGZpbGUKKyIgICAgICAgICAgfCBpbmR0b2tlbgorZnVuY3Rpb24hIHM6TmV4dEluZFRva2VuKGxudW0sIGkpCisgIGNhbGwgczpMb2coJyAgICBOZXh0SW5kVG9rZW4gY2FsbGVkOiBsbnVtPScgLiBhOmxudW0gLiAnLCBpID0nIC4gYTppKQorCisgICIgSWYgdGhlIGN1cnJlbnQgbGluZSBoYXMgYSBuZXh0IHRva2VuLCByZXR1cm4gdGhhdAorICBpZiBsZW4oczphbGxfdG9rZW5zW2E6bG51bV0pID4gYTppICsgMQorICAgIHJldHVybiBzOmFsbF90b2tlbnNbYTpsbnVtXVthOmkgKyAxXQorICBlbHNlCisgICAgcmV0dXJuIHM6RmluZEluZFRva2VuKGE6bG51bSwgJ2Rvd24nKQorICBlbmRpZgorZW5kZnVuY3Rpb24KKworIiBFcmxhbmdDYWxjSW5kZW50IGhlbHBlciBmdW5jdGlvbnMge3t7MQorIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIiBQdXJwb3NlOgorIiAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHBhcnNlciBlbmNvdW50ZXJzIGEgc3ludGF4IGVycm9yLgorIgorIiAgIElmIHdlIGVuY291bnRlciBhIHN5bnRheCBlcnJvciwgd2UgcmV0dXJuCisiICAgZzplcmxhbmdfdW5leHBlY3RlZF90b2tlbl9pbmRlbnQsIHdoaWNoIGlzIC0xIGJ5IGRlZmF1bHQuIFRoaXMgbWVhbnMgdGhhdAorIiAgIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgTFRJIHdpbGwgbm90IGJlIGNoYW5nZWQuCisiIFBhcmFtZXRlcjoKKyIgICBtc2c6IHN0cmluZworIiAgIHRva2VuOiBzdHJpbmcKKyIgICBzdGFjazogW3Rva2VuXQorIiBSZXR1cm5zOgorIiAgIGluZGVudDogaW50ZWdlcgorZnVuY3Rpb24hIHM6SW5kZW50RXJyb3IobXNnLCB0b2tlbiwgc3RhY2spCisgIGNhbGwgczpMb2coJ0luZGVudCBlcnJvcjogJyAuIGE6bXNnIC4gJyAtPiByZXR1cm4nKQorICBjYWxsIHM6TG9nKCcgIFRva2VuID0gJyAuIGE6dG9rZW4gLiAnLCAnIC4KKyAgICAgICAgICAgIFwnICBzdGFjayA9ICcgLiBzdHJpbmcoYTpzdGFjaykpCisgIHJldHVybiBnOmVybGFuZ191bmV4cGVjdGVkX3Rva2VuX2luZGVudAorZW5kZnVuY3Rpb24KKworIiBQdXJwb3NlOgorIiAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHBhcnNlciBlbmNvdW50ZXJzIGFuIHVuZXhwZWN0ZWQgdG9rZW4sCisiICAgYW5kIHRoZSBwYXJzZXIgd2lsbCByZXR1cm4gdGhlIG51bWJlciBnaXZlbiBiYWNrIGJ5IFVuZXhwZWN0ZWRUb2tlbi4KKyIKKyIgICBJZiB3ZSBlbmNvdW50ZXIgYW4gdW5leHBlY3RlZCB0b2tlbiwgd2UgcmV0dXJuCisiICAgZzplcmxhbmdfdW5leHBlY3RlZF90b2tlbl9pbmRlbnQsIHdoaWNoIGlzIC0xIGJ5IGRlZmF1bHQuIFRoaXMgbWVhbnMgdGhhdAorIiAgIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgTFRJIHdpbGwgbm90IGJlIGNoYW5nZWQuCisiIFBhcmFtZXRlcjoKKyIgICB0b2tlbjogc3RyaW5nCisiICAgc3RhY2s6IFt0b2tlbl0KKyIgUmV0dXJuczoKKyIgICBpbmRlbnQ6IGludGVnZXIKK2Z1bmN0aW9uISBzOlVuZXhwZWN0ZWRUb2tlbih0b2tlbiwgc3RhY2spCisgIGNhbGwgczpMb2coJyAgICBVbmV4cGVjdGVkIHRva2VuICcgLiBhOnRva2VuIC4gJywgc3RhY2sgPSAnIC4KKyAgICAgICAgICAgIFxzdHJpbmcoYTpzdGFjaykgLiAnIC0+IHJldHVybicpCisgIHJldHVybiBnOmVybGFuZ191bmV4cGVjdGVkX3Rva2VuX2luZGVudAorZW5kZnVuY3Rpb24KKworaWYgIWV4aXN0cygnZzplcmxhbmdfdW5leHBlY3RlZF90b2tlbl9pbmRlbnQnKQorICBsZXQgZzplcmxhbmdfdW5leHBlY3RlZF90b2tlbl9pbmRlbnQgPSAtMQorZW5kaWYKKworIiBQdXJwb3NlOgorIiAgIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBsaW5lIHN0YXJ0cyB3aXRoIGEgc3RyaW5nIGNvbnRpbnVhdGlvbi4KKyIgUGFyYW1ldGVyOgorIiAgIGxudW06IGludGVnZXIKKyIgUmV0dXJuczoKKyIgICByZXN1bHQ6IGJvb2wKKyIgRXhhbXBsZToKKyIgICBmKCkgLT4gICAgICAgICAgICUgSXNMaW5lU3RyaW5nQ29udGludWF0aW9uID0gZmFsc2UKKyIgICAgICAgIlRoaXMgaXMgYSAgICUgSXNMaW5lU3RyaW5nQ29udGludWF0aW9uID0gZmFsc2UKKyIgICAgICAgbXVsdGlsaW5lICAgICUgSXNMaW5lU3RyaW5nQ29udGludWF0aW9uID0gdHJ1ZQorIiAgICAgICBzdHJpbmciLiAgICAgJSBJc0xpbmVTdHJpbmdDb250aW51YXRpb24gPSB0cnVlCitmdW5jdGlvbiEgczpJc0xpbmVTdHJpbmdDb250aW51YXRpb24obG51bSkKKyAgaWYgaGFzKCdzeW50YXhfaXRlbXMnKQorICAgIHJldHVybiBzeW5JRGF0dHIoc3luSUQoYTpsbnVtLCAxLCAwKSwgJ25hbWUnKSA9fiMgJ15lcmxhbmdTdHJpbmcnCisgIGVsc2UKKyAgICByZXR1cm4gMAorICBlbmRpZgorZW5kZnVuY3Rpb24KKworIiBQdXJwb3NlOgorIiAgIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBsaW5lIHN0YXJ0cyB3aXRoIGFuIGF0b20gY29udGludWF0aW9uLgorIiBQYXJhbWV0ZXI6CisiICAgbG51bTogaW50ZWdlcgorIiBSZXR1cm5zOgorIiAgIHJlc3VsdDogYm9vbAorIiBFeGFtcGxlOgorIiAgICdmdW5jdGlvbiB3aXRoICAgJSBJc0xpbmVBdG9tQ29udGludWF0aW9uID0gdHJ1ZSwgYnV0IHNob3VsZCBiZSBmYWxzZQorIiAgIHdlaXJkIG5hbWUnKCkgLT4gJSBJc0xpbmVBdG9tQ29udGludWF0aW9uID0gdHJ1ZQorIiAgICAgICBvay4gICAgICAgICAgJSBJc0xpbmVBdG9tQ29udGludWF0aW9uID0gZmFsc2UKK2Z1bmN0aW9uISBzOklzTGluZUF0b21Db250aW51YXRpb24obG51bSkKKyAgaWYgaGFzKCdzeW50YXhfaXRlbXMnKQorICAgIHJldHVybiBzeW5JRGF0dHIoc3luSUQoYTpsbnVtLCAxLCAwKSwgJ25hbWUnKSA9fiMgJ15lcmxhbmdRdW90ZWRBdG9tJworICBlbHNlCisgICAgcmV0dXJuIDAKKyAgZW5kaWYKK2VuZGZ1bmN0aW9uCisKKyIgUHVycG9zZToKKyIgICBSZXR1cm4gd2hldGhlciB0aGUgJ2NhdGNoJyB0b2tlbiAod2hpY2ggc2hvdWxkIGJlIHRoZSBgaWB0aCB0b2tlbiBpbiBsaW5lCisiICAgYGxudW1gKSBpcyBzdGFuZGFsb25lIG9yIHBhcnQgb2YgYSB0cnktY2F0Y2ggYmxvY2ssIGJhc2VkIG9uIHRoZSBwcmVjZWRpbmcKKyIgICB0b2tlbi4KKyIgUGFyYW1ldGVyczoKKyIgICBsbnVtOiBpbnRlZ2VyCisiICAgaTogaW50ZWdlcgorIiBSZXR1cm46CisiICAgaXNfc3RhbmRhbG9uZTogYm9vbAorZnVuY3Rpb24hIHM6SXNDYXRjaFN0YW5kYWxvbmUobG51bSwgaSkKKyAgY2FsbCBzOkxvZygnICAgIElzQ2F0Y2hTdGFuZGFsb25lIGNhbGxlZDogbG51bT0nIC4gYTpsbnVtIC4gJywgaT0nIC4gYTppKQorICBsZXQgcHJldl9pbmR0b2tlbiA9IHM6UHJldkluZFRva2VuKGE6bG51bSwgYTppKQorCisgICIgSWYgd2UgaGl0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUsIGl0IGlzIG5vdCBhIGNhdGNoIGluIGEgdHJ5IGJsb2NrCisgIGlmIHByZXZfaW5kdG9rZW4gPT0gW10KKyAgICByZXR1cm4gMQorICBlbmRpZgorCisgIGxldCBwcmV2X3Rva2VuID0gcHJldl9pbmR0b2tlblswXQorCisgIGlmIHByZXZfdG9rZW4gPX4jICdbQS1aX0AwLTldJworICAgIGxldCBpc19zdGFuZGFsb25lID0gMAorICBlbHNlaWYgcHJldl90b2tlbiA9fiMgJ1thLXpdJworICAgIGlmIGluZGV4KFsnYWZ0ZXInLCAnYW5kJywgJ2FuZGFsc28nLCAnYmFuZCcsICdiZWdpbicsICdibm90JywgJ2JvcicsICdic2wnLAorICAgICAgICAgICAgXCAnYnNyJywgJ2J4b3InLCAnY2FzZScsICdjYXRjaCcsICdkaXYnLCAnbm90JywgJ29yJywgJ29yZWxzZScsCisgICAgICAgICAgICBcICdyZW0nLCAndHJ5JywgJ3hvciddLCBwcmV2X3Rva2VuKSAhPSAtMQorICAgICAgIiBJZiBjYXRjaCBpcyBhZnRlciB0aGVzZSBrZXl3b3JkcywgaXQgaXMgc3RhbmRhbG9uZQorICAgICAgbGV0IGlzX3N0YW5kYWxvbmUgPSAxCisgICAgZWxzZQorICAgICAgIiBJZiBjYXRjaCBpcyBhZnRlciBhbm90aGVyIGtleXdvcmQgKGUuZy4gJ2VuZCcpIG9yIGFuIGF0b20sIGl0IGlzCisgICAgICAiIHBhcnQgb2YgdHJ5LWNhdGNoLgorICAgICAgIgorICAgICAgIiBLZXl3b3JkczoKKyAgICAgICIgLSBtYXkgcHJlY2VkZSAnY2F0Y2gnOiBlbmQKKyAgICAgICIgLSBtYXkgbm90IHByZWNlZGUgJ2NhdGNoJzogZnVuIGlmIG9mIHJlY2VpdmUgd2hlbgorICAgICAgIiAtIHVudXNlZDogY29uZCBsZXQgcXVlcnkKKyAgICAgIGxldCBpc19zdGFuZGFsb25lID0gMAorICAgIGVuZGlmCisgIGVsc2VpZiBpbmRleChbJyknLCAnXScsICd9JywgJzxzdHJpbmc+JywgJzxzdHJpbmdfZW5kPicsICc8cXVvdGVkX2F0b20+JywKKyAgICAgICAgICAgICAgXCAnPHF1b3RlZF9hdG9tX2VuZD4nLCAnJC4nXSwgcHJldl90b2tlbikgIT0gLTEKKyAgICBsZXQgaXNfc3RhbmRhbG9uZSA9IDAKKyAgZWxzZQorICAgICIgVGhpcyAnZWxzZScgYnJhbmNoIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgdG9rZW5zOgorICAgICIgICAtPiA9PSAvPSA9PCA8ID49ID4gPTo9ID0vPSArIC0gKiAvICsrIC0tIDo6IDwgPiA7ICggWyB7ID8gPSAhIC4gfAorICAgIGxldCBpc19zdGFuZGFsb25lID0gMQorICBlbmRpZgorCisgIGNhbGwgczpMb2coJyAgICJjYXRjaCIgcHJlY2VkZWQgYnkgIicgLiBwcmV2X3Rva2VuICAuICciIC0+IGNhdGNoICcgLgorICAgICAgICAgICAgXChpc19zdGFuZGFsb25lID8gJ2lzIHN0YW5kYWxvbmUnIDogJ2JlbG9uZ3MgdG8gdHJ5LWNhdGNoJykpCisgIHJldHVybiBpc19zdGFuZGFsb25lCisKK2VuZGZ1bmN0aW9uCisKKyIgUHVycG9zZToKKyIgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgYmVnaW4tdHlwZSBlbGVtZW50ICgnYmVnaW4nLCAnY2FzZScsCisiICAgJ1snLCAnPDwnLCBldGMuKSBpcyBmb3VuZC4gSXQgYXNrcyB0aGUgY2FsbGVyIHRvIHJldHVybiBpZiB0aGUgc3RhY2sKKyIgUGFyYW1ldGVyczoKKyIgICBzdGFjazogW3Rva2VuXQorIiAgIHRva2VuOiBzdHJpbmcKKyIgICBjdXJyX3Zjb2w6IGludGVnZXIKKyIgICBzdG9yZWRfdmNvbDogaW50ZWdlcgorIiAgIHN3OiBpbnRlZ2VyIC0tIG51bWJlciBvZiBzcGFjZXMgdG8gYmUgdXNlZCBhZnRlciB0aGUgYmVnaW4gZWxlbWVudCBhcworIiAgICAgICAgICAgICAgICAgIGluZGVudGF0aW9uCisiIFJldHVybnM6CisiICAgcmVzdWx0OiBbc2hvdWxkX3JldHVybiwgaW5kZW50XQorIiAgIHNob3VsZF9yZXR1cm46IGJvb2wgLS0gaWYgdHJ1ZSwgdGhlIGNhbGxlciBzaG91bGQgcmV0dXJuIGBpbmRlbnRgIHRvIFZpbQorIiAgIGluZGVudCAtLSBpbnRlZ2VyCitmdW5jdGlvbiEgczpCZWdpbkVsZW1lbnRGb3VuZElmRW1wdHkoc3RhY2ssIHRva2VuLCBjdXJyX3Zjb2wsIHN0b3JlZF92Y29sLCBzdykKKyAgaWYgZW1wdHkoYTpzdGFjaykKKyAgICBpZiBhOnN0b3JlZF92Y29sID09IC0xCisgICAgICBjYWxsIHM6TG9nKCcgICAgIicgLiBhOnRva2VuIC4gJyIgZGlyZWN0bHkgcHJlY2VlZHMgTFRJIC0+IHJldHVybicpCisgICAgICByZXR1cm4gWzEsIGE6Y3Vycl92Y29sICsgYTpzd10KKyAgICBlbHNlCisgICAgICBjYWxsIHM6TG9nKCcgICAgIicgLiBhOnRva2VuIC4KKyAgICAgICAgICAgICAgICBcJyIgdG9rZW4gKHdob3NlIGV4cHJlc3Npb24gaW5jbHVkZXMgTFRJKSBmb3VuZCAtPiByZXR1cm4nKQorICAgICAgcmV0dXJuIFsxLCBhOnN0b3JlZF92Y29sXQorICAgIGVuZGlmCisgIGVsc2UKKyAgICByZXR1cm4gWzAsIDBdCisgIGVuZGlmCitlbmRmdW5jdGlvbgorCisiIFB1cnBvc2U6CisiICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIGJlZ2luLXR5cGUgZWxlbWVudCAoJ2JlZ2luJywgJ2Nhc2UnLCAnWycsCisiICAgJzw8JywgZXRjLikgaXMgZm91bmQsIGFuZCBpbiBzb21lIGNhc2VzIHdoZW4gJ2FmdGVyJyBhbmQgJ3doZW4nIGlzIGZvdW5kLgorIiAgIEl0IGFza3MgdGhlIGNhbGxlciB0byByZXR1cm4gaWYgdGhlIHN0YWNrIGlzIGFscmVhZHkgZW1wdHkuCisiIFBhcmFtZXRlcnM6CisiICAgc3RhY2s6IFt0b2tlbl0KKyIgICB0b2tlbjogc3RyaW5nCisiICAgY3Vycl92Y29sOiBpbnRlZ2VyCisiICAgc3RvcmVkX3Zjb2w6IGludGVnZXIKKyIgICBlbmRfdG9rZW46IGVuZCB0b2tlbiB0aGF0IGJlbG9uZ3MgdG8gdGhlIGJlZ2luIGVsZW1lbnQgZm91bmQgKGUuZy4gaWYgdGhlCisiICAgICAgICAgICAgICBiZWdpbiBlbGVtZW50IGlzICdiZWdpbicsIHRoZSBlbmQgdG9rZW4gaXMgJ2VuZCcpCisiICAgc3c6IGludGVnZXIgLS0gbnVtYmVyIG9mIHNwYWNlcyB0byBiZSB1c2VkIGFmdGVyIHRoZSBiZWdpbiBlbGVtZW50IGFzCisiICAgICAgICAgICAgICAgICAgaW5kZW50YXRpb24KKyIgUmV0dXJuczoKKyIgICByZXN1bHQ6IFtzaG91bGRfcmV0dXJuLCBpbmRlbnRdCisiICAgc2hvdWxkX3JldHVybjogYm9vbCAtLSBpZiB0cnVlLCB0aGUgY2FsbGVyIHNob3VsZCByZXR1cm4gYGluZGVudGAgdG8gVmltCisiICAgaW5kZW50IC0tIGludGVnZXIKK2Z1bmN0aW9uISBzOkJlZ2luRWxlbWVudEZvdW5kKHN0YWNrLCB0b2tlbiwgY3Vycl92Y29sLCBzdG9yZWRfdmNvbCwgZW5kX3Rva2VuLCBzdykKKworICAiIFJldHVybiAncmV0dXJuJyBpZiB0aGUgc3RhY2sgaXMgZW1wdHkKKyAgbGV0IFtyZXQsIHJlc10gPSBzOkJlZ2luRWxlbWVudEZvdW5kSWZFbXB0eShhOnN0YWNrLCBhOnRva2VuLCBhOmN1cnJfdmNvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxhOnN0b3JlZF92Y29sLCBhOnN3KQorICBpZiByZXQgfCByZXR1cm4gW3JldCwgcmVzXSB8IGVuZGlmCisKKyAgaWYgYTpzdGFja1swXSA9PSBhOmVuZF90b2tlbgorICAgIGNhbGwgczpMb2coJyAgICAiJyAuIGE6dG9rZW4gLiAnIiBwb3BzICInIC4gYTplbmRfdG9rZW4gLiAnIicpCisgICAgY2FsbCBzOlBvcChhOnN0YWNrKQorICAgIGlmICFlbXB0eShhOnN0YWNrKSAmJiBhOnN0YWNrWzBdID09ICdhbGlnbl90b19iZWdpbl9lbGVtZW50JworICAgICAgY2FsbCBzOlBvcChhOnN0YWNrKQorICAgICAgaWYgZW1wdHkoYTpzdGFjaykKKyAgICAgICAgcmV0dXJuIFsxLCBhOmN1cnJfdmNvbF0KKyAgICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFsxLCBzOlVuZXhwZWN0ZWRUb2tlbihhOnRva2VuLCBhOnN0YWNrKV0KKyAgICAgIGVuZGlmCisgICAgZWxzZQorICAgICAgcmV0dXJuIFswLCAwXQorICAgIGVuZGlmCisgIGVsc2UKKyAgICByZXR1cm4gWzEsIHM6VW5leHBlY3RlZFRva2VuKGE6dG9rZW4sIGE6c3RhY2spXQorICBlbmRpZgorZW5kZnVuY3Rpb24KKworIiBQdXJwb3NlOgorIiAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2UgaGl0IHRoZSBiZWdpbm5pbmcgb2YgYSBmaWxlIG9yIGFuCisiICAgZW5kLW9mLWNsYXVzZSB0b2tlbiAtLSBpLmUuIHdoZW4gd2UgZm91bmQgdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudAorIiAgIGNsYXVzZS4KKyIKKyIgICBJZiB0aGUgc3RhY2sgY29udGFpbnMgYW4gJy0+JyBvciAnd2hlbicsIHRoaXMgbWVhbnMgdGhhdCB3ZSBjYW4gcmV0dXJuCisiICAgbm93LCBzaW5jZSB3ZSB3ZXJlIGxvb2tpbmcgZm9yIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNsYXVzZS4KKyIgUGFyYW1ldGVyczoKKyIgICBzdGFjazogW3Rva2VuXQorIiAgIHRva2VuOiBzdHJpbmcKKyIgICBzdG9yZWRfdmNvbDogaW50ZWdlcgorIiBSZXR1cm5zOgorIiAgIHJlc3VsdDogW3Nob3VsZF9yZXR1cm4sIGluZGVudF0KKyIgICBzaG91bGRfcmV0dXJuOiBib29sIC0tIGlmIHRydWUsIHRoZSBjYWxsZXIgc2hvdWxkIHJldHVybiBgaW5kZW50YCB0byBWaW0KKyIgICBpbmRlbnQgLS0gaW50ZWdlcgorZnVuY3Rpb24hIHM6QmVnaW5uaW5nT2ZDbGF1c2VGb3VuZChzdGFjaywgdG9rZW4sIHN0b3JlZF92Y29sKQorICBpZiAhZW1wdHkoYTpzdGFjaykgJiYgYTpzdGFja1swXSA9PSAnd2hlbicKKyAgICBjYWxsIHM6TG9nKCcgICAgQmVnaW5uaW5nT2ZDbGF1c2VGb3VuZDogIndoZW4iIGZvdW5kIGluIHN0YWNrJykKKyAgICBjYWxsIHM6UG9wKGE6c3RhY2spCisgICAgaWYgZW1wdHkoYTpzdGFjaykKKyAgICAgIGNhbGwgczpMb2coJyAgICBTdGFjayBpcyBbIndoZW4iXSwgc28gTFRJIGlzIGluIGEgZ3VhcmQgLT4gcmV0dXJuJykKKyAgICAgIHJldHVybiBbMSwgYTpzdG9yZWRfdmNvbCArICZzdyArIDJdCisgICAgZWxzZQorICAgICAgcmV0dXJuIFsxLCBzOlVuZXhwZWN0ZWRUb2tlbihhOnRva2VuLCBhOnN0YWNrKV0KKyAgICBlbmRpZgorICBlbHNlaWYgIWVtcHR5KGE6c3RhY2spICYmIGE6c3RhY2tbMF0gPT0gJy0+JworICAgIGNhbGwgczpMb2coJyAgICBCZWdpbm5pbmdPZkNsYXVzZUZvdW5kOiAiLT4iIGZvdW5kIGluIHN0YWNrJykKKyAgICBjYWxsIHM6UG9wKGE6c3RhY2spCisgICAgaWYgZW1wdHkoYTpzdGFjaykKKyAgICAgIGNhbGwgczpMb2coJyAgICBTdGFjayBpcyBbIi0+Il0sIHNvIExUSSBpcyBpbiBmdW5jdGlvbiBib2R5IC0+IHJldHVybicpCisgICAgICByZXR1cm4gWzEsIGE6c3RvcmVkX3Zjb2wgKyAmc3ddCisgICAgZWxzZWlmIGE6c3RhY2tbMF0gPT0gJzsnCisgICAgICBjYWxsIHM6UG9wKGE6c3RhY2spCisgICAgICBpZiBlbXB0eShhOnN0YWNrKQorICAgICAgICBjYWxsIHM6TG9nKCcgICAgU3RhY2sgaXMgWyItPiIsICI7Il0sIHNvIExUSSBpcyBpbiBhIGZ1bmN0aW9uIGhlYWQgJyAuCisgICAgICAgICAgICAgICAgICBcJy0+IHJldHVybicpCisgICAgICAgIHJldHVybiBbMCwgYTpzdG9yZWRfdmNvbF0KKyAgICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFsxLCBzOlVuZXhwZWN0ZWRUb2tlbihhOnRva2VuLCBhOnN0YWNrKV0KKyAgICAgIGVuZGlmCisgICAgZWxzZQorICAgICAgcmV0dXJuIFsxLCBzOlVuZXhwZWN0ZWRUb2tlbihhOnRva2VuLCBhOnN0YWNrKV0KKyAgICBlbmRpZgorICBlbHNlCisgICAgcmV0dXJuIFswLCAwXQorICBlbmRpZgorZW5kZnVuY3Rpb24KKworbGV0IGc6ZXJsYW5nX2luZGVudF9zZWFyY2hwYWlyX3RpbWVvdXQgPSAyMDAwCisKKyIgVE9ETworZnVuY3Rpb24hIHM6U2VhcmNoUGFpcihsbnVtLCBjdXJyX2NvbCwgc3RhcnQsIG1pZGRsZSwgZW5kKQorICBjYWxsIGN1cnNvcihhOmxudW0sIGE6Y3Vycl9jb2wgKyAxKQorICBsZXQgW2xudW1fbmV3LCBjb2wxX25ld10gPSAKKyAgICAgIFxzZWFyY2hwYWlycG9zKGE6c3RhcnQsIGE6bWlkZGxlLCBhOmVuZCwgJ2JXJywKKyAgICAgICAgICAgICAgICAgICAgXCdzeW5JRGF0dHIoc3luSUQobGluZSgiLiIpLCBjb2woIi4iKSwgMCksICJuYW1lIikgJyAuCisgICAgICAgICAgICAgICAgICAgIFwnPX4/ICJzdHJpbmdcXHxxdW90ZWRhdG9tXFx8dG9kb1xcfGNvbW1lbnRcXHwnIC4gCisgICAgICAgICAgICAgICAgICAgIFwnZXJsYW5nbW9kaWZpZXIiJywKKyAgICAgICAgICAgICAgICAgICAgXDAsIGc6ZXJsYW5nX2luZGVudF9zZWFyY2hwYWlyX3RpbWVvdXQpCisgIHJldHVybiBbbG51bV9uZXcsIGNvbDFfbmV3IC0gMV0KK2VuZGZ1bmN0aW9uCisKK2Z1bmN0aW9uISBzOlNlYXJjaEVuZFBhaXIobG51bSwgY3Vycl9jb2wpCisgIHJldHVybiBzOlNlYXJjaFBhaXIoCisgICAgICAgICBcIGE6bG51bSwgYTpjdXJyX2NvbCwKKyAgICAgICAgIFwgJ1w8XCUoY2FzZVx8dHJ5XHxiZWdpblx8cmVjZWl2ZVx8aWZcKVw+XHwnIC4KKyAgICAgICAgIFwgJ1w8ZnVuXD5cJShcc1x8XG5cfCUuKiRcKSooJywKKyAgICAgICAgIFwgJycsCisgICAgICAgICBcICdcPGVuZFw+JykKK2VuZGZ1bmN0aW9uCisKKyIgRXJsYW5nQ2FsY0luZGVudCB7e3sxCisiID09PT09PT09PT09PT09PT0KKworIiBQdXJwb3NlOgorIiAgIENhbGN1bGF0ZSB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGdpdmVuIGxpbmUuCisiIFBhcmFtZXRlcnM6CisiICAgbG51bTogaW50ZWdlciAtLSBpbmRleCBvZiB0aGUgbGluZSBmb3Igd2hpY2ggdGhlIGluZGVudGF0aW9uIHNob3VsZCBiZQorIiAgICAgICAgICAgICAgICAgICAgY2FsY3VsYXRlZAorIiAgIHN0YWNrOiBbdG9rZW5dIC0tIGluaXRpYWwgc3RhY2sKKyIgUmV0dXJuOgorIiAgIGluZGVudDogaW50ZWdlciAtLSBpZiAtMSwgdGhhdCBtZWFucyAiZG9uJ3QgY2hhbmdlIHRoZSBpbmRlbnRhdGlvbiI7CisiICAgICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSBpdCBtZWFucyAiaW5kZW50IHRoZSBsaW5lIHdpdGggYGluZGVudGAKKyIgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHNwYWNlcyBvciBlcXVpdmFsZW50IHRhYnMiCitmdW5jdGlvbiEgczpFcmxhbmdDYWxjSW5kZW50KGxudW0sIHN0YWNrKQorICBsZXQgcmVzID0gczpFcmxhbmdDYWxjSW5kZW50MihhOmxudW0sIGE6c3RhY2spCisgIGNhbGwgczpMb2coIkVybGFuZ0NhbGNJbmRlbnQgcmV0dXJuZWQ6ICIgLiByZXMpCisgIHJldHVybiByZXMKK2VuZGZ1bmN0aW9uCisKK2Z1bmN0aW9uISBzOkVybGFuZ0NhbGNJbmRlbnQyKGxudW0sIHN0YWNrKQorCisgIGxldCBsbnVtID0gYTpsbnVtCisgIGxldCBzdG9yZWRfdmNvbCA9IC0xICIgVmlydHVhbCBjb2x1bW4gb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgdG9rZW4gdGhhdAorICAgICAgICAgICAgICAgICAgICIgd2UgY3VycmVudGx5IHRoaW5rIHdlIG1pZ2h0IGFsaWduIHRvLgorICBsZXQgbW9kZSA9ICdub3JtYWwnCisgIGxldCBzdGFjayA9IGE6c3RhY2sKKyAgbGV0IHNlbWljb2xvbl9hYnNjb2wgPSAnJworCisgICIgV2FsayB0aHJvdWdoIHRoZSBsaW5lcyBvZiB0aGUgYnVmZmVyIGJhY2t3YXJkcyAoc3RhcnRpbmcgZnJvbSB0aGUKKyAgIiBwcmV2aW91cyBsaW5lKSB1bnRpbCB3ZSBjYW4gZGVjaWRlIGhvdyB0byBpbmRlbnQgdGhlIGN1cnJlbnQgbGluZS4KKyAgd2hpbGUgMQorCisgICAgbGV0IFtsbnVtLCBpbmR0b2tlbnNdID0gczpUb2tlbml6ZUxpbmUobG51bSwgJ3VwJykKKworICAgICIgSGl0IHRoZSBzdGFydCBvZiB0aGUgZmlsZQorICAgIGlmIGxudW0gPT0gMAorICAgICAgbGV0IFtyZXQsIHJlc10gPSBzOkJlZ2lubmluZ09mQ2xhdXNlRm91bmQoc3RhY2ssICdiZWdpbm5pbmdfb2ZfZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxzdG9yZWRfdmNvbCkKKyAgICAgIGlmIHJldCB8IHJldHVybiByZXMgfCBlbmRpZgorCisgICAgICByZXR1cm4gMAorICAgIGVuZGlmCisKKyAgICBsZXQgaSA9IGxlbihpbmR0b2tlbnMpIC0gMQorICAgIGxldCBsYXN0X3Rva2VuX29mX2xpbmUgPSAxCisKKyAgICB3aGlsZSBpID49IDAKKworICAgICAgbGV0IFt0b2tlbiwgY3Vycl92Y29sLCBjdXJyX2NvbF0gPSBpbmR0b2tlbnNbaV0KKyAgICAgIGNhbGwgczpMb2coJyAgQW5hbHl6aW5nIHRoZSBmb2xsb3dpbmcgdG9rZW46ICcgLiBzdHJpbmcoaW5kdG9rZW5zW2ldKSkKKworICAgICAgaWYgbGVuKHN0YWNrKSA+IDI1NiAiIFRPRE86IG1hZ2ljIG51bWJlcgorICAgICAgICByZXR1cm4gczpJbmRlbnRFcnJvcignU3RhY2sgdG9vIGxvbmcnLCB0b2tlbiwgc3RhY2spCisgICAgICBlbmRpZgorCisgICAgICBpZiB0b2tlbiA9PSAnPGVuZF9vZl9jbGF1c2U+JworICAgICAgICBsZXQgW3JldCwgcmVzXSA9IHM6QmVnaW5uaW5nT2ZDbGF1c2VGb3VuZChzdGFjaywgdG9rZW4sIHN0b3JlZF92Y29sKQorICAgICAgICBpZiByZXQgfCByZXR1cm4gcmVzIHwgZW5kaWYKKworICAgICAgICBpZiBzdG9yZWRfdmNvbCA9PSAtMQorICAgICAgICAgIGNhbGwgczpMb2coJyAgICBFbmQgb2YgY2xhdXNlIGRpcmVjdGx5IHByZWNlZWRzIExUSSAtPiByZXR1cm4nKQorICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGVsc2UKKyAgICAgICAgICBjYWxsIHM6TG9nKCcgICAgRW5kIG9mIGNsYXVzZSAoYnV0IG5vdCBlbmQgb2YgbGluZSkgLT4gcmV0dXJuJykKKyAgICAgICAgICByZXR1cm4gc3RvcmVkX3Zjb2wKKyAgICAgICAgZW5kaWYKKworICAgICAgZWxzZWlmIHN0YWNrID09IFsncHJldl90ZXJtX3BsdXMnXQorICAgICAgICBpZiB0b2tlbiA9fiMgJ1thLXpBLVpfQF0nIHx8CisgICAgICAgICBcIHRva2VuID09ICc8c3RyaW5nPicgfHwgdG9rZW4gPT0gJzxzdHJpbmdfc3RhcnQ+JyB8fAorICAgICAgICAgXCB0b2tlbiA9PSAnPHF1b3RlZF9hdG9tPicgfHwgdG9rZW4gPT0gJzxxdW90ZWRfYXRvbV9zdGFydD4nCisgICAgICAgICAgY2FsbCBzOkxvZygnICAgIHByZXZpb3VzIHRva2VuIGZvdW5kOiBjdXJyX3Zjb2wgKyBwbHVzID0gJyAuCisgICAgICAgICAgICAgICAgICAgIFxjdXJyX3Zjb2wgLiAiICsgIiAuIHBsdXMpCisgICAgICAgICAgcmV0dXJuIGN1cnJfdmNvbCArIHBsdXMKKyAgICAgICAgZW5kaWYKKworICAgICAgZWxzZWlmIHRva2VuID09ICdiZWdpbicKKyAgICAgICAgbGV0IFtyZXQsIHJlc10gPSBzOkJlZ2luRWxlbWVudEZvdW5kKHN0YWNrLCB0b2tlbiwgY3Vycl92Y29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcc3RvcmVkX3Zjb2wsICdlbmQnLCAmc3cpCisgICAgICAgIGlmIHJldCB8IHJldHVybiByZXMgfCBlbmRpZgorCisgICAgICAiIGNhc2UgRVhQUiBvZiBCUkFOQ0hFUyBlbmQKKyAgICAgICIgdHJ5IEVYUFIgY2F0Y2ggQlJBTkNIRVMgZW5kCisgICAgICAiIHRyeSBFWFBSIGFmdGVyIEJPRFkgZW5kCisgICAgICAiIHRyeSBFWFBSIGNhdGNoIEJSQU5DSEVTIGFmdGVyIEJPRFkgZW5kCisgICAgICAiIHRyeSBFWFBSIG9mIEJSQU5DSEVTIGNhdGNoIEJSQU5DSEVTIGVuZAorICAgICAgIiB0cnkgRVhQUiBvZiBCUkFOQ0hFUyBhZnRlciBCT0RZIGVuZAorICAgICAgIiB0cnkgRVhQUiBvZiBCUkFOQ0hFUyBjYXRjaCBCUkFOQ0hFUyBhZnRlciBCT0RZIGVuZAorICAgICAgIiByZWNlaXZlIEJSQU5DSEVTIGVuZAorICAgICAgIiByZWNlaXZlIEJSQU5DSEVTIGFmdGVyIEJSQU5DSEVTIGVuZAorCisgICAgICAiIFRoaXMgYnJhbmNoIGlzIG5vdCBFbWFjcy1jb21wYXRpYmxlCisgICAgICBlbHNlaWYgKGluZGV4KFsnb2YnLCAncmVjZWl2ZScsICdhZnRlcicsICdpZiddLCB0b2tlbikgIT0gLTEgfHwKKyAgICAgICAgICAgXCAgKHRva2VuID09ICdjYXRjaCcgJiYgIXM6SXNDYXRjaFN0YW5kYWxvbmUobG51bSwgaSkpKSAmJgorICAgICAgICAgICBcICFsYXN0X3Rva2VuX29mX2xpbmUgJiYKKyAgICAgICAgICAgXCAoZW1wdHkoc3RhY2spIHx8IHN0YWNrID09IFsnd2hlbiddIHx8IHN0YWNrID09IFsnLT4nXSB8fAorICAgICAgICAgICBcICBzdGFjayA9PSBbJy0+JywgJzsnXSkKKworICAgICAgICAiIElmIHdlIGFyZSBhZnRlciBvZi9yZWNlaXZlLCBidXQgdGhlc2UgYXJlIG5vdCB0aGUgbGFzdAorICAgICAgICAiIHRva2VucyBvZiB0aGUgbGluZSwgd2Ugd2FudCB0byBpbmRlbnQgbGlrZSB0aGlzOgorICAgICAgICAiCisgICAgICAgICIgICAlIHN0YWNrID09IFtdCisgICAgICAgICIgICByZWNlaXZlIHN0b3JlZF92Y29sLAorICAgICAgICAiICAgICAgICAgICBMVEkKKyAgICAgICAgIgorICAgICAgICAiICAgJSBzdGFjayA9PSBbJy0+JywgJzsnXQorICAgICAgICAiICAgcmVjZWl2ZSBzdG9yZWRfdmNvbCAtPgorICAgICAgICAiICAgICAgICAgICAgICAgQjsKKyAgICAgICAgIiAgICAgICAgICAgTFRJCisgICAgICAgICIKKyAgICAgICAgIiAgICUgc3RhY2sgPT0gWyctPiddCisgICAgICAgICIgICByZWNlaXZlIHN0b3JlZF92Y29sIC0+CisgICAgICAgICIgICAgICAgICAgICAgICBMVEkKKyAgICAgICAgIgorICAgICAgICAiICAgJSBzdGFjayA9PSBbJ3doZW4nXQorICAgICAgICAiICAgcmVjZWl2ZSBzdG9yZWRfdmNvbCB3aGVuCisgICAgICAgICIgICAgICAgICAgICAgICBMVEkKKworICAgICAgICAiIHN0YWNrID0gW10gID0+ICBMVEkgaXMgYSBjb25kaXRpb24KKyAgICAgICAgIiBzdGFjayA9IFsnLT4nXSAgPT4gIExUSSBpcyBhIGJyYW5jaAorICAgICAgICAiIHN0YWNrID0gWyctPicsICc7J10gID0+ICBMVEkgaXMgYSBjb25kaXRpb24KKyAgICAgICAgIiBzdGFjayA9IFsnd2hlbiddICA9PiAgTFRJIGlzIGEgZ3VhcmQKKyAgICAgICAgaWYgZW1wdHkoc3RhY2spIHx8IHN0YWNrID09IFsnLT4nLCAnOyddCisgICAgICAgICAgY2FsbCBzOkxvZygnICAgIExUSSBpcyBpbiBhIGNvbmRpdGlvbiBhZnRlciAnIC4KKyAgICAgICAgICAgICAgICAgICAgXCcib2YvcmVjZWl2ZS9hZnRlci9pZi9jYXRjaCIgLT4gcmV0dXJuJykKKyAgICAgICAgICByZXR1cm4gc3RvcmVkX3Zjb2wKKyAgICAgICAgZWxzZWlmIHN0YWNrID09IFsnLT4nXQorICAgICAgICAgIGNhbGwgczpMb2coJyAgICBMVEkgaXMgaW4gYSBicmFuY2ggYWZ0ZXIgJyAuCisgICAgICAgICAgICAgICAgICAgIFwnIm9mL3JlY2VpdmUvYWZ0ZXIvaWYvY2F0Y2giIC0+IHJldHVybicpCisgICAgICAgICAgcmV0dXJuIHN0b3JlZF92Y29sICsgJnN3CisgICAgICAgIGVsc2VpZiBzdGFjayA9PSBbJ3doZW4nXQorICAgICAgICAgIGNhbGwgczpMb2coJyAgICBMVEkgaXMgaW4gYSBndWFyZCBhZnRlciAnIC4KKyAgICAgICAgICAgICAgICAgICAgXCcib2YvcmVjZWl2ZS9hZnRlci9pZi9jYXRjaCIgLT4gcmV0dXJuJykKKyAgICAgICAgICByZXR1cm4gc3RvcmVkX3Zjb2wgKyAmc3cKKyAgICAgICAgZWxzZQorICAgICAgICAgIHJldHVybiBzOlVuZXhwZWN0ZWRUb2tlbih0b2tlbiwgc3RhY2spCisgICAgICAgIGVuZGlmCisKKyAgICAgIGVsc2VpZiBpbmRleChbJ2Nhc2UnLCAnaWYnLCAndHJ5JywgJ3JlY2VpdmUnXSwgdG9rZW4pICE9IC0xCisKKyAgICAgICAgIiBzdGFjayA9IFtdICA9PiAgTFRJIGlzIGEgY29uZGl0aW9uCisgICAgICAgICIgc3RhY2sgPSBbJy0+J10gID0+ICBMVEkgaXMgYSBicmFuY2gKKyAgICAgICAgIiBzdGFjayA9IFsnLT4nLCAnOyddICA9PiAgTFRJIGlzIGEgY29uZGl0aW9uCisgICAgICAgICIgc3RhY2sgPSBbJ3doZW4nXSAgPT4gIExUSSBpcyBpbiBhIGd1YXJkCisgICAgICAgIGlmIGVtcHR5KHN0YWNrKQorICAgICAgICAgICIgcGFzcworICAgICAgICBlbHNlaWYgKHRva2VuID09ICdjYXNlJyAmJiBzdGFja1swXSA9PSAnb2YnKSB8fAorICAgICAgICAgICAgIFwgKHRva2VuID09ICdpZicpIHx8CisgICAgICAgICAgICAgXCAodG9rZW4gPT0gJ3RyeScgJiYgKHN0YWNrWzBdID09ICdvZicgfHwKKyAgICAgICAgICAgICBcICAgICAgICAgICAgICAgICAgICAgc3RhY2tbMF0gPT0gJ2NhdGNoJyB8fAorICAgICAgICAgICAgIFwgICAgICAgICAgICAgICAgICAgICBzdGFja1swXSA9PSAnYWZ0ZXInKSkgfHwKKyAgICAgICAgICAgICBcICh0b2tlbiA9PSAncmVjZWl2ZScpCisKKyAgICAgICAgICAiIEZyb20gdGhlIGluZGVudGF0aW9uIHBvaW50IG9mIHZpZXcsIHRoZSBrZXl3b3JkCisgICAgICAgICAgIiAob2YvY2F0Y2gvYWZ0ZXIvZW5kKSBiZWZvcmUgdGhlIExUSSBpcyB3aGF0IGNvdW50cywgc28KKyAgICAgICAgICAiIHdoZW4gd2UgcmVhY2hlZCB0aGVzZSB0b2tlbnMsIGFuZCB0aGUgc3RhY2sgYWxyZWFkeSBoYWQKKyAgICAgICAgICAiIGEgY2F0Y2gvYWZ0ZXIvZW5kLCB3ZSBkaWRuJ3QgbW9kaWZ5IGl0LgorICAgICAgICAgICIKKyAgICAgICAgICAiIFRoaXMgd2F5IHdoZW4gd2UgcmVhY2ggY2FzZS90cnkvcmVjZWl2ZSAoaS5lLiBub3cpLAorICAgICAgICAgICIgdGhlcmUgaXMgYXQgbW9zdCBvbmUgb2YvY2F0Y2gvYWZ0ZXIvZW5kIHRva2VuIGluIHRoZQorICAgICAgICAgICIgc3RhY2suCisgICAgICAgICAgaWYgdG9rZW4gPT0gJ2Nhc2UnIHx8IHRva2VuID09ICd0cnknIHx8CisgICAgICAgICAgIFwgKHRva2VuID09ICdyZWNlaXZlJyAmJiBzdGFja1swXSA9PSAnYWZ0ZXInKQorICAgICAgICAgICAgY2FsbCBzOlBvcChzdGFjaykKKyAgICAgICAgICBlbmRpZgorCisgICAgICAgICAgaWYgZW1wdHkoc3RhY2spCisgICAgICAgICAgICBjYWxsIHM6TG9nKCcgICAgTFRJIGlzIGluIGEgY29uZGl0aW9uOyBtYXRjaGluZyAnIC4KKyAgICAgICAgICAgICAgICAgICAgICBcJyJjYXNlL2lmL3RyeS9yZWNlaXZlIiBmb3VuZCcpCisgICAgICAgICAgICBsZXQgc3RvcmVkX3Zjb2wgPSBjdXJyX3Zjb2wgKyAmc3cKKyAgICAgICAgICBlbHNlaWYgc3RhY2tbMF0gPT0gJ2FsaWduX3RvX2JlZ2luX2VsZW1lbnQnCisgICAgICAgICAgICBjYWxsIHM6UG9wKHN0YWNrKQorICAgICAgICAgICAgbGV0IHN0b3JlZF92Y29sID0gY3Vycl92Y29sCisgICAgICAgICAgZWxzZWlmIGxlbihzdGFjaykgPiAxICYmIHN0YWNrWzBdID09ICctPicgJiYgc3RhY2tbMV0gPT0gJzsnCisgICAgICAgICAgICBjYWxsIHM6TG9nKCcgICAgTFRJIGlzIGluIGEgY29uZGl0aW9uOyBtYXRjaGluZyAnIC4KKyAgICAgICAgICAgICAgICAgICAgICBcJyJjYXNlL2lmL3RyeS9yZWNlaXZlIiBmb3VuZCcpCisgICAgICAgICAgICBjYWxsIHM6UG9wKHN0YWNrKQorICAgICAgICAgICAgY2FsbCBzOlBvcChzdGFjaykKKyAgICAgICAgICAgIGxldCBzdG9yZWRfdmNvbCA9IGN1cnJfdmNvbCArICZzdworICAgICAgICAgIGVsc2VpZiBzdGFja1swXSA9PSAnLT4nCisgICAgICAgICAgICBjYWxsIHM6TG9nKCcgICAgTFRJIGlzIGluIGEgYnJhbmNoOyBtYXRjaGluZyAnIC4KKyAgICAgICAgICAgICAgICAgICAgICBcJyJjYXNlL2lmL3RyeS9yZWNlaXZlIiBmb3VuZCcpCisgICAgICAgICAgICBjYWxsIHM6UG9wKHN0YWNrKQorICAgICAgICAgICAgbGV0IHN0b3JlZF92Y29sID0gY3Vycl92Y29sICsgMiAqICZzdworICAgICAgICAgIGVsc2VpZiBzdGFja1swXSA9PSAnd2hlbicKKyAgICAgICAgICAgIGNhbGwgczpMb2coJyAgICBMVEkgaXMgaW4gYSBndWFyZDsgbWF0Y2hpbmcgJyAuCisgICAgICAgICAgICAgICAgICAgICAgXCciY2FzZS9pZi90cnkvcmVjZWl2ZSIgZm91bmQnKQorICAgICAgICAgICAgY2FsbCBzOlBvcChzdGFjaykKKyAgICAgICAgICAgIGxldCBzdG9yZWRfdmNvbCA9IGN1cnJfdmNvbCArIDIgKiAmc3cgKyAyCisgICAgICAgICAgZW5kaWYKKworICAgICAgICBlbmRpZgorCisgICAgICAgIGxldCBbcmV0LCByZXNdID0gczpCZWdpbkVsZW1lbnRGb3VuZChzdGFjaywgdG9rZW4sIGN1cnJfdmNvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHN0b3JlZF92Y29sLCAnZW5kJywgJnN3KQorICAgICAgICBpZiByZXQgfCByZXR1cm4gcmVzIHwgZW5kaWYKKworICAgICAgZWxzZWlmIHRva2VuID09ICdmdW4nCisgICAgICAgIGxldCBuZXh0X2luZHRva2VuID0gczpOZXh0SW5kVG9rZW4obG51bSwgaSkKKyAgICAgICAgY2FsbCBzOkxvZygnICAgIE5leHQgaW5kdG9rZW4gPSAnIC4gc3RyaW5nKG5leHRfaW5kdG9rZW4pKQorCisgICAgICAgIGlmICFlbXB0eShuZXh0X2luZHRva2VuKSAmJiBuZXh0X2luZHRva2VuWzBdID09ICcoJworICAgICAgICAgICIgV2UgaGF2ZSBhbiBhbm9ueW1vdXMgZnVuY3Rpb24gZGVmaW5pdGlvbgorICAgICAgICAgICIgKGUuZy4gImZ1biAoKSAtPiBvayBlbmQiKQorCisgICAgICAgICAgIiBzdGFjayA9IFtdICA9PiAgTFRJIGlzIGEgY29uZGl0aW9uCisgICAgICAgICAgIiBzdGFjayA9IFsnLT4nXSAgPT4gIExUSSBpcyBhIGJyYW5jaAorICAgICAgICAgICIgc3RhY2sgPSBbJy0+JywgJzsnXSAgPT4gIExUSSBpcyBhIGNvbmRpdGlvbgorICAgICAgICAgICIgc3RhY2sgPSBbJ3doZW4nXSAgPT4gIExUSSBpcyBpbiBhIGd1YXJkCisgICAgICAgICAgaWYgZW1wdHkoc3RhY2spCisgICAgICAgICAgICBjYWxsIHM6TG9nKCcgICAgTFRJIGlzIGluIGEgY29uZGl0aW9uOyBtYXRjaGluZyAiZnVuIiBmb3VuZCcpCisgICAgICAgICAgICBsZXQgc3RvcmVkX3Zjb2wgPSBjdXJyX3Zjb2wgKyAmc3cKKyAgICAgICAgICBlbHNlaWYgbGVuKHN0YWNrKSA+IDEgJiYgc3RhY2tbMF0gPT0gJy0+JyAmJiBzdGFja1sxXSA9PSAnOycKKyAgICAgICAgICAgIGNhbGwgczpMb2coJyAgICBMVEkgaXMgaW4gYSBjb25kaXRpb247IG1hdGNoaW5nICJmdW4iIGZvdW5kJykKKyAgICAgICAgICAgIGNhbGwgczpQb3Aoc3RhY2spCisgICAgICAgICAgICBjYWxsIHM6UG9wKHN0YWNrKQorICAgICAgICAgIGVsc2VpZiBzdGFja1swXSA9PSAnLT4nCisgICAgICAgICAgICBjYWxsIHM6TG9nKCcgICAgTFRJIGlzIGluIGEgYnJhbmNoOyBtYXRjaGluZyAiZnVuIiBmb3VuZCcpCisgICAgICAgICAgICBjYWxsIHM6UG9wKHN0YWNrKQorICAgICAgICAgICAgbGV0IHN0b3JlZF92Y29sID0gY3Vycl92Y29sICsgMiAqICZzdworICAgICAgICAgIGVsc2VpZiBzdGFja1swXSA9PSAnd2hlbicKKyAgICAgICAgICAgIGNhbGwgczpMb2coJyAgICBMVEkgaXMgaW4gYSBndWFyZDsgbWF0Y2hpbmcgImZ1biIgZm91bmQnKQorICAgICAgICAgICAgY2FsbCBzOlBvcChzdGFjaykKKyAgICAgICAgICAgIGxldCBzdG9yZWRfdmNvbCA9IGN1cnJfdmNvbCArIDIgKiAmc3cgKyAyCisgICAgICAgICAgZW5kaWYKKworICAgICAgICAgIGxldCBbcmV0LCByZXNdID0gczpCZWdpbkVsZW1lbnRGb3VuZChzdGFjaywgdG9rZW4sIGN1cnJfdmNvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcc3RvcmVkX3Zjb2wsICdlbmQnLCAmc3cpCisgICAgICAgICAgaWYgcmV0IHwgcmV0dXJuIHJlcyB8IGVuZGlmCisgICAgICAgIGVsc2UKKyAgICAgICAgICAiIFBhc3M6IHdlIGhhdmUgYSBmdW5jdGlvbiByZWZlcmVuY2UgKGUuZy4gImZ1biBmLzAiKQorICAgICAgICBlbmRpZgorCisgICAgICBlbHNlaWYgdG9rZW4gPT0gJ1snCisgICAgICAgICIgRW1hY3MgY29tcGF0aWJpbGl0eQorICAgICAgICBsZXQgW3JldCwgcmVzXSA9IHM6QmVnaW5FbGVtZW50Rm91bmQoc3RhY2ssIHRva2VuLCBjdXJyX3Zjb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxzdG9yZWRfdmNvbCwgJ10nLCAxKQorICAgICAgICBpZiByZXQgfCByZXR1cm4gcmVzIHwgZW5kaWYKKworICAgICAgZWxzZWlmIHRva2VuID09ICc8PCcKKyAgICAgICAgIiBFbWFjcyBjb21wYXRpYmlsaXR5CisgICAgICAgIGxldCBbcmV0LCByZXNdID0gczpCZWdpbkVsZW1lbnRGb3VuZChzdGFjaywgdG9rZW4sIGN1cnJfdmNvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHN0b3JlZF92Y29sLCAnPj4nLCAyKQorICAgICAgICBpZiByZXQgfCByZXR1cm4gcmVzIHwgZW5kaWYKKworICAgICAgZWxzZWlmIHRva2VuID09ICcoJyB8fCB0b2tlbiA9PSAneycKKworICAgICAgICBsZXQgZW5kX3Rva2VuID0gKHRva2VuID09ICcoJyA/ICcpJyA6CisgICAgICAgICAgICAgICAgICAgICAgICBcdG9rZW4gPT0gJ3snID8gJ30nIDogJ2Vycm9yJykKKworICAgICAgICBpZiBlbXB0eShzdGFjaykKKyAgICAgICAgICAiIFdlIGZvdW5kIHRoZSBvcGVuaW5nIHBhcmVuIHdob3NlIGJsb2NrIGNvbnRhaW5zIHRoZSBMVEkuCisgICAgICAgICAgbGV0IG1vZGUgPSAnaW5zaWRlJworICAgICAgICBlbHNlaWYgc3RhY2tbMF0gPT0gZW5kX3Rva2VuCisgICAgICAgICAgY2FsbCBzOkxvZygnICAgICInIC4gdG9rZW4gLiAnIiBwb3BzICInIC4gZW5kX3Rva2VuIC4gJyInKQorICAgICAgICAgIGNhbGwgczpQb3Aoc3RhY2spCisKKyAgICAgICAgICBpZiAhZW1wdHkoc3RhY2spICYmIHN0YWNrWzBdID09ICdhbGlnbl90b19iZWdpbl9lbGVtZW50JworICAgICAgICAgICAgIiBXZSBmb3VuZCB0aGUgb3BlbmluZyBwYXJlbiB3aG9zZSBjbG9zaW5nIHBhcmVuCisgICAgICAgICAgICAiIHN0YXJ0cyBMVEkKKyAgICAgICAgICAgIGxldCBtb2RlID0gJ2FsaWduX3RvX2JlZ2luX2VsZW1lbnQnCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgIiBXZSBmb3VuZCB0aGUgb3BlbmluZyBwYWlyIGZvciBhIGNsb3NpbmcgcGFyZW4gdGhhdAorICAgICAgICAgICAgIiB3YXMgYWxyZWFkeSBpbiB0aGUgc3RhY2suCisgICAgICAgICAgICBsZXQgbW9kZSA9ICdvdXRzaWRlJworICAgICAgICAgIGVuZGlmCisgICAgICAgIGVsc2UKKyAgICAgICAgICByZXR1cm4gczpVbmV4cGVjdGVkVG9rZW4odG9rZW4sIHN0YWNrKQorICAgICAgICBlbmRpZgorCisgICAgICAgIGlmIG1vZGUgPT0gJ2luc2lkZScgfHwgbW9kZSA9PSAnYWxpZ25fdG9fYmVnaW5fZWxlbWVudCcKKworICAgICAgICAgIGlmIGxhc3RfdG9rZW5fb2ZfbGluZSAmJiBpICE9IDAKKyAgICAgICAgICAgICIgRXhhbXBsZXM6IHt7eworICAgICAgICAgICAgIgorICAgICAgICAgICAgIiBtb2RlID09ICdpbnNpZGUnOgorICAgICAgICAgICAgIgorICAgICAgICAgICAgIiAgICAgbXlfZnVuYygKKyAgICAgICAgICAgICIgICAgICAgTFRJCisgICAgICAgICAgICAiCisgICAgICAgICAgICAiICAgICBbVmFyaWFibGUsIHsKKyAgICAgICAgICAgICIgICAgICAgIExUSQorICAgICAgICAgICAgIgorICAgICAgICAgICAgIiBtb2RlID09ICdhbGlnbl90b19iZWdpbl9lbGVtZW50JzoKKyAgICAgICAgICAgICIKKyAgICAgICAgICAgICIgICAgIG15X2Z1bmMoCisgICAgICAgICAgICAiICAgICAgIFBhcmFtcworICAgICAgICAgICAgIiAgICAgICkgJSBMVEkKKyAgICAgICAgICAgICIKKyAgICAgICAgICAgICIgICAgIFtWYXJpYWJsZSwgeworICAgICAgICAgICAgIiAgICAgICAgVGVybXMKKyAgICAgICAgICAgICIgICAgICAgfSAlIExUSQorICAgICAgICAgICAgIiB9fX0KKyAgICAgICAgICAgIGxldCBzdGFjayA9IFsncHJldl90ZXJtX3BsdXMnXQorICAgICAgICAgICAgbGV0IHBsdXMgPSAobW9kZSA9PSAnaW5zaWRlJyA/IDIgOiAxKQorICAgICAgICAgICAgY2FsbCBzOkxvZygnICAgICInIC4gdG9rZW4gLgorICAgICAgICAgICAgICAgICAgICAgIFwnIiB0b2tlbiBmb3VuZCBhdCBlbmQgb2YgbGluZSAtPiBmaW5kIHByZXZpb3VzIHRva2VuJykKKyAgICAgICAgICBlbHNlaWYgbW9kZSA9PSAnYWxpZ25fdG9fYmVnaW5fZWxlbWVudCcKKyAgICAgICAgICAgICIgRXhhbXBsZXM6IHt7eworICAgICAgICAgICAgIgorICAgICAgICAgICAgIiBtb2RlID09ICdhbGlnbl90b19iZWdpbl9lbGVtZW50JyAmJiAhbGFzdF90b2tlbl9vZl9saW5lCisgICAgICAgICAgICAiCisgICAgICAgICAgICAiICAgICBteV9mdW5jKHN0b3JlZF92Y29sCisgICAgICAgICAgICAiICAgICAgICAgICAgKSAlIExUSQorICAgICAgICAgICAgIgorICAgICAgICAgICAgIiAgICAgW1ZhcmlhYmxlLCB7c3RvcmVkX3Zjb2wKKyAgICAgICAgICAgICIgICAgICAgICAgICAgICAgfSAlIExUSQorICAgICAgICAgICAgIgorICAgICAgICAgICAgIiBtb2RlID09ICdhbGlnbl90b19iZWdpbl9lbGVtZW50JyAmJiBpID09IDAKKyAgICAgICAgICAgICIKKyAgICAgICAgICAgICIgICAgICgKKyAgICAgICAgICAgICIgICAgICAgc3RvcmVkX3Zjb2wKKyAgICAgICAgICAgICIgICAgICkgJSBMVEkKKyAgICAgICAgICAgICIKKyAgICAgICAgICAgICIgICAgIHsKKyAgICAgICAgICAgICIgICAgICAgc3RvcmVkX3Zjb2wKKyAgICAgICAgICAgICIgICAgIH0gJSBMVEkKKyAgICAgICAgICAgICIgfX19CisgICAgICAgICAgICBjYWxsIHM6TG9nKCcgICAgIicgLiB0b2tlbiAuICciIHRva2VuICh3aG9zZSBjbG9zaW5nIHRva2VuICcgLgorICAgICAgICAgICAgICAgICAgICAgIFwnc3RhcnRzIExUSSkgZm91bmQgLT4gcmV0dXJuJykKKyAgICAgICAgICAgIHJldHVybiBjdXJyX3Zjb2wKKyAgICAgICAgICBlbHNlaWYgc3RvcmVkX3Zjb2wgPT0gLTEKKyAgICAgICAgICAgICIgRXhhbXBsZXM6IHt7eworICAgICAgICAgICAgIgorICAgICAgICAgICAgIiBtb2RlID09ICdpbnNpZGUnICYmIHN0b3JlZF92Y29sID09IC0xICYmICFsYXN0X3Rva2VuX29mX2xpbmUKKyAgICAgICAgICAgICIKKyAgICAgICAgICAgICIgICAgIG15X2Z1bmMoCisgICAgICAgICAgICAiICAgICAgICAgICAgIExUSQorICAgICAgICAgICAgIiAgICAgW1ZhcmlhYmxlLCB7CisgICAgICAgICAgICAiICAgICAgICAgICAgICAgICBMVEkKKyAgICAgICAgICAgICIKKyAgICAgICAgICAgICIgbW9kZSA9PSAnaW5zaWRlJyAmJiBzdG9yZWRfdmNvbCA9PSAtMSAmJiBpID09IDAKKyAgICAgICAgICAgICIKKyAgICAgICAgICAgICIgICAgICgKKyAgICAgICAgICAgICIgICAgICBMVEkKKyAgICAgICAgICAgICIKKyAgICAgICAgICAgICIgICAgIHsKKyAgICAgICAgICAgICIgICAgICBMVEkKKyAgICAgICAgICAgICIgfX19CisgICAgICAgICAgICBjYWxsIHM6TG9nKCcgICAgIicgLiB0b2tlbiAuCisgICAgICAgICAgICAgICAgICAgICAgXCciIHRva2VuICh3aGljaCBkaXJlY3RseSBwcmVjZWRlcyBMVEkpIGZvdW5kIC0+IHJldHVybicpCisgICAgICAgICAgICByZXR1cm4gY3Vycl92Y29sICsgMQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICIgRXhhbXBsZXM6IHt7eworICAgICAgICAgICAgIgorICAgICAgICAgICAgIiBtb2RlID09ICdpbnNpZGUnICYmIHN0b3JlZF92Y29sICE9IC0xICYmICFsYXN0X3Rva2VuX29mX2xpbmUKKyAgICAgICAgICAgICIKKyAgICAgICAgICAgICIgICAgIG15X2Z1bmMoc3RvcmVkX3Zjb2wsCisgICAgICAgICAgICAiICAgICAgICAgICAgIExUSQorICAgICAgICAgICAgIgorICAgICAgICAgICAgIiAgICAgW1ZhcmlhYmxlLCB7c3RvcmVkX3Zjb2wsCisgICAgICAgICAgICAiICAgICAgICAgICAgICAgICBMVEkKKyAgICAgICAgICAgICIKKyAgICAgICAgICAgICIgbW9kZSA9PSAnaW5zaWRlJyAmJiBzdG9yZWRfdmNvbCAhPSAtMSAmJiBpID09IDAKKyAgICAgICAgICAgICIKKyAgICAgICAgICAgICIgICAgIChzdG9yZWRfdmNvbCwKKyAgICAgICAgICAgICIgICAgICBMVEkKKyAgICAgICAgICAgICIKKyAgICAgICAgICAgICIgICAgIHtzdG9yZWRfdmNvbCwKKyAgICAgICAgICAgICIgICAgICBMVEkKKyAgICAgICAgICAgICIgfX19CisgICAgICAgICAgICBjYWxsIHM6TG9nKCcgICAgIicgLiB0b2tlbiAuCisgICAgICAgICAgICAgICAgICAgICAgXCciIHRva2VuICh3aG9zZSBibG9jayBjb250YWlucyBMVEkpIGZvdW5kIC0+IHJldHVybicpCisgICAgICAgICAgICByZXR1cm4gc3RvcmVkX3Zjb2wKKyAgICAgICAgICBlbmRpZgorICAgICAgICBlbmRpZgorCisgICAgICBlbHNlaWYgdG9rZW4gPT0gJ2VuZCcKKyAgICAgICAgbGV0IFtsbnVtX25ldywgY29sX25ld10gPSBzOlNlYXJjaEVuZFBhaXIobG51bSwgY3Vycl9jb2wpCisKKyAgICAgICAgaWYgbG51bV9uZXcgPT0gMAorICAgICAgICAgIHJldHVybiBzOkluZGVudEVycm9yKCdNYXRjaGluZyB0b2tlbiBmb3IgImVuZCIgbm90IGZvdW5kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0b2tlbiwgc3RhY2spCisgICAgICAgIGVsc2UKKyAgICAgICAgICBpZiBsbnVtX25ldyAhPSBsbnVtCisgICAgICAgICAgICBjYWxsIHM6TG9nKCcgICAgVG9rZW5pemUgZm9yICJlbmQiIDw8PDwnKQorICAgICAgICAgICAgbGV0IFtsbnVtLCBpbmR0b2tlbnNdID0gczpUb2tlbml6ZUxpbmUobG51bV9uZXcsICd1cCcpCisgICAgICAgICAgICBjYWxsIHM6TG9nKCcgICAgPj4+PiBUb2tlbml6ZSBmb3IgImVuZCInKQorICAgICAgICAgIGVuZGlmCisKKyAgICAgICAgICBsZXQgW3N1Y2Nlc3MsIGldID0gczpHZXRJbmR0b2tlbkF0Q29sKGluZHRva2VucywgY29sX25ldykKKyAgICAgICAgICBpZiAhc3VjY2VzcyB8IHJldHVybiBpIHwgZW5kaWYKKyAgICAgICAgICBsZXQgW3Rva2VuLCBjdXJyX3Zjb2wsIGN1cnJfY29sXSA9IGluZHRva2Vuc1tpXQorICAgICAgICAgIGNhbGwgczpMb2coJyAgICBNYXRjaCBmb3IgImVuZCIgaW4gbGluZSAnIC4gbG51bV9uZXcgLiAnOiAnIC4KKyAgICAgICAgICAgICAgICAgICAgXHN0cmluZyhpbmR0b2tlbnNbaV0pKQorICAgICAgICBlbmRpZgorCisgICAgICBlbHNlaWYgaW5kZXgoWycpJywgJ10nLCAnfSddLCB0b2tlbikgIT0gLTEKKworICAgICAgICBjYWxsIHM6UHVzaChzdGFjaywgdG9rZW4pCisKKyAgICAgICAgIiBXZSBoYXZlIHRvIGVzY2FwZSAnWycsIGJlY2F1c2UgdGhpcyBzdHJpbmcgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhCisgICAgICAgICIgcmVnZXhwCisgICAgICAgIGxldCBvcGVuX3BhcmVuID0gKHRva2VuID09ICcpJyA/ICcoJyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgXHRva2VuID09ICddJyA/ICdcWycgOgorICAgICAgICAgICAgICAgICAgICAgICAgIFwgICAgICAgICAgICAgICAneycpCisKKyAgICAgICAgbGV0IFtsbnVtX25ldywgY29sX25ld10gPSBzOlNlYXJjaFBhaXIobG51bSwgY3Vycl9jb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG9wZW5fcGFyZW4sICcnLCB0b2tlbikKKworICAgICAgICBpZiBsbnVtX25ldyA9PSAwCisgICAgICAgICAgcmV0dXJuIHM6SW5kZW50RXJyb3IoJ01hdGNoaW5nIHRva2VuIG5vdCBmb3VuZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcdG9rZW4sIHN0YWNrKQorICAgICAgICBlbHNlCisgICAgICAgICAgaWYgbG51bV9uZXcgIT0gbG51bQorICAgICAgICAgICAgY2FsbCBzOkxvZygnICAgIFRva2VuaXplIHRoZSBvcGVuaW5nIHBhcmVuIDw8PDwnKQorICAgICAgICAgICAgbGV0IFtsbnVtLCBpbmR0b2tlbnNdID0gczpUb2tlbml6ZUxpbmUobG51bV9uZXcsICd1cCcpCisgICAgICAgICAgICBjYWxsIHM6TG9nKCcgICAgPj4+PicpCisgICAgICAgICAgZW5kaWYKKworICAgICAgICAgIGxldCBbc3VjY2VzcywgaV0gPSBzOkdldEluZHRva2VuQXRDb2woaW5kdG9rZW5zLCBjb2xfbmV3KQorICAgICAgICAgIGlmICFzdWNjZXNzIHwgcmV0dXJuIGkgfCBlbmRpZgorICAgICAgICAgIGxldCBbdG9rZW4sIGN1cnJfdmNvbCwgY3Vycl9jb2xdID0gaW5kdG9rZW5zW2ldCisgICAgICAgICAgY2FsbCBzOkxvZygnICAgIE1hdGNoIGluIGxpbmUgJyAuIGxudW1fbmV3IC4gJzogJyAuCisgICAgICAgICAgICAgICAgICAgIFxzdHJpbmcoaW5kdG9rZW5zW2ldKSkKKworICAgICAgICAgICIgR28gYmFjayB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsb29wIGFuZCBoYW5kbGUgdGhlIG9wZW5pbmcgcGFyZW4KKyAgICAgICAgICBjb250aW51ZQorICAgICAgICBlbmRpZgorCisgICAgICBlbHNlaWYgdG9rZW4gPT0gJz4+JworICAgICAgICBjYWxsIHM6UHVzaChzdGFjaywgdG9rZW4pCisKKyAgICAgIGVsc2VpZiB0b2tlbiA9PSAnOycKKworICAgICAgICBpZiBlbXB0eShzdGFjaykKKyAgICAgICAgICBjYWxsIHM6UHVzaChzdGFjaywgJzsnKQorICAgICAgICBlbHNlaWYgaW5kZXgoWyc7JywgJy0+JywgJ3doZW4nLCAnZW5kJywgJ2FmdGVyJywgJ2NhdGNoJ10sCisgICAgICAgICAgICAgICAgICAgIFxzdGFja1swXSkgIT0gLTEKKyAgICAgICAgICAiIFBhc3M6CisgICAgICAgICAgIgorICAgICAgICAgICIgLSBJZiB0aGUgc3RhY2sgdG9wIGlzIGFub3RoZXIgJzsnLCB0aGVuIG9uZSAnOycgaXMKKyAgICAgICAgICAiICAgZW5vdWdoLgorICAgICAgICAgICIgLSBJZiB0aGUgc3RhY2sgdG9wIGlzIGFuICctPicgb3IgYSAnd2hlbicsIHRoZW4gd2UKKyAgICAgICAgICAiICAgc2hvdWxkIGtlZXAgdGhhdCwgYmVjYXVzZSB0aGV5IHNpZ25pZnkgdGhlIHR5cGUgb2YgdGhlCisgICAgICAgICAgIiAgIExUSSAoYnJhbmNoLCBjb25kaXRpb24gb3IgZ3VhcmQpLgorICAgICAgICAgICIgLSBGcm9tIHRoZSBpbmRlbnRhdGlvbiBwb2ludCBvZiB2aWV3LCB0aGUga2V5d29yZAorICAgICAgICAgICIgICAob2YvY2F0Y2gvYWZ0ZXIvZW5kKSBiZWZvcmUgdGhlIExUSSBpcyB3aGF0IGNvdW50cywgc28KKyAgICAgICAgICAiICAgaWYgdGhlIHN0YWNrIGFscmVhZHkgaGFzIGEgY2F0Y2gvYWZ0ZXIvZW5kLCB3ZSBkb24ndAorICAgICAgICAgICIgICBtb2RpZnkgaXQuIFRoaXMgd2F5IHdoZW4gd2UgcmVhY2ggY2FzZS90cnkvcmVjZWl2ZSwKKyAgICAgICAgICAiICAgdGhlcmUgd2lsbCBiZSBhdCBtb3N0IG9uZSBvZi9jYXRjaC9hZnRlci9lbmQgdG9rZW4gaW4KKyAgICAgICAgICAiICAgdGhlIHN0YWNrLgorICAgICAgICBlbHNlCisgICAgICAgICAgcmV0dXJuIHM6VW5leHBlY3RlZFRva2VuKHRva2VuLCBzdGFjaykKKyAgICAgICAgZW5kaWYKKworICAgICAgZWxzZWlmIHRva2VuID09ICctPicKKworICAgICAgICBpZiBlbXB0eShzdGFjaykgJiYgIWxhc3RfdG9rZW5fb2ZfbGluZQorICAgICAgICAgIGNhbGwgczpMb2coJyAgICBMVEkgaXMgaW4gZXhwcmVzc2lvbiBhZnRlciBhcnJvdyAtPiByZXR1cm4nKQorICAgICAgICAgIHJldHVybiBzdG9yZWRfdmNvbAorICAgICAgICBlbHNlaWYgZW1wdHkoc3RhY2spIHx8IHN0YWNrWzBdID09ICc7JyB8fCBzdGFja1swXSA9PSAnZW5kJworICAgICAgICAgICIgc3RhY2sgPSBbJzsnXSAgLT4gTFRJIGlzIGVpdGhlciBhIGJyYW5jaCBvciBpbiBhIGd1YXJkCisgICAgICAgICAgIiBzdGFjayA9IFsnLT4nXSAgLT4gIExUSSBpcyBhIGNvbmRpdGlvbgorICAgICAgICAgICIgc3RhY2sgPSBbJy0+JywgJzsnXSAgLT4gTFRJIGlzIGEgYnJhbmNoCisgICAgICAgICAgY2FsbCBzOlB1c2goc3RhY2ssICctPicpCisgICAgICAgIGVsc2VpZiBpbmRleChbJy0+JywgJ3doZW4nLCAnZW5kJywgJ2FmdGVyJywgJ2NhdGNoJ10sIHN0YWNrWzBdKSAhPSAtMQorICAgICAgICAgICIgUGFzczoKKyAgICAgICAgICAiCisgICAgICAgICAgIiAtIElmIHRoZSBzdGFjayB0b3AgaXMgYW5vdGhlciAnLT4nLCB0aGVuIG9uZSAnLT4nIGlzCisgICAgICAgICAgIiAgIGVub3VnaC4KKyAgICAgICAgICAiIC0gSWYgdGhlIHN0YWNrIHRvcCBpcyBhICd3aGVuJywgdGhlbiB3ZSBzaG91bGQga2VlcAorICAgICAgICAgICIgICB0aGF0LCBiZWNhdXNlIHRoaXMgc2lnbmlmaWVzIHRoYXQgTFRJIGlzIGEgaW4gYSBndWFyZC4KKyAgICAgICAgICAiIC0gRnJvbSB0aGUgaW5kZW50YXRpb24gcG9pbnQgb2YgdmlldywgdGhlIGtleXdvcmQKKyAgICAgICAgICAiICAgKG9mL2NhdGNoL2FmdGVyL2VuZCkgYmVmb3JlIHRoZSBMVEkgaXMgd2hhdCBjb3VudHMsIHNvCisgICAgICAgICAgIiAgIGlmIHRoZSBzdGFjayBhbHJlYWR5IGhhcyBhIGNhdGNoL2FmdGVyL2VuZCwgd2UgZG9uJ3QKKyAgICAgICAgICAiICAgbW9kaWZ5IGl0LiBUaGlzIHdheSB3aGVuIHdlIHJlYWNoIGNhc2UvdHJ5L3JlY2VpdmUsCisgICAgICAgICAgIiAgIHRoZXJlIHdpbGwgYmUgYXQgbW9zdCBvbmUgb2YvY2F0Y2gvYWZ0ZXIvZW5kIHRva2VuIGluCisgICAgICAgICAgIiAgIHRoZSBzdGFjay4KKyAgICAgICAgZWxzZQorICAgICAgICAgIHJldHVybiBzOlVuZXhwZWN0ZWRUb2tlbih0b2tlbiwgc3RhY2spCisgICAgICAgIGVuZGlmCisKKyAgICAgIGVsc2VpZiB0b2tlbiA9PSAnd2hlbicKKworICAgICAgICAiIFBvcCBhbGwgJzsnIGZyb20gdGhlIHRvcCBvZiB0aGUgc3RhY2sKKyAgICAgICAgd2hpbGUgIWVtcHR5KHN0YWNrKSAmJiBzdGFja1swXSA9PSAnOycKKyAgICAgICAgICBjYWxsIHM6UG9wKHN0YWNrKQorICAgICAgICBlbmR3aGlsZQorCisgICAgICAgIGlmIGVtcHR5KHN0YWNrKQorICAgICAgICAgIGlmIHNlbWljb2xvbl9hYnNjb2wgIT0gJycKKyAgICAgICAgICAgIGxldCBzdG9yZWRfdmNvbCA9IHNlbWljb2xvbl9hYnNjb2wKKyAgICAgICAgICBlbmRpZgorICAgICAgICAgIGlmICFsYXN0X3Rva2VuX29mX2xpbmUKKyAgICAgICAgICAgICIgRXhhbXBsZToKKyAgICAgICAgICAgICIgICB3aGVuIEEsCisgICAgICAgICAgICAiICAgICAgICBMVEkKKyAgICAgICAgICAgIGxldCBbcmV0LCByZXNdID0gczpCZWdpbkVsZW1lbnRGb3VuZElmRW1wdHkoc3RhY2ssIHRva2VuLCBjdXJyX3Zjb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHN0b3JlZF92Y29sLCAmc3cpCisgICAgICAgICAgICBpZiByZXQgfCByZXR1cm4gcmVzIHwgZW5kaWYKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAiIEV4YW1wbGU6CisgICAgICAgICAgICAiICAgd2hlbgorICAgICAgICAgICAgIiAgICAgICBMVEkKKyAgICAgICAgICAgIGNhbGwgczpQdXNoKHN0YWNrLCB0b2tlbikKKyAgICAgICAgICBlbmRpZgorICAgICAgICBlbHNlaWYgaW5kZXgoWyctPicsICd3aGVuJywgJ2VuZCcsICdhZnRlcicsICdjYXRjaCddLCBzdGFja1swXSkgIT0gLTEKKyAgICAgICAgICAiIFBhc3M6CisgICAgICAgICAgIiAtIElmIHRoZSBzdGFjayB0b3AgaXMgYW5vdGhlciAnd2hlbicsIHRoZW4gb25lICd3aGVuJyBpcworICAgICAgICAgICIgICBlbm91Z2guCisgICAgICAgICAgIiAtIElmIHRoZSBzdGFjayB0b3AgaXMgYW4gJy0+JyBvciBhICd3aGVuJywgdGhlbiB3ZQorICAgICAgICAgICIgICBzaG91bGQga2VlcCB0aGF0LCBiZWNhdXNlIHRoZXkgc2lnbmlmeSB0aGUgdHlwZSBvZiB0aGUKKyAgICAgICAgICAiICAgTFRJIChicmFuY2gsIGNvbmRpdGlvbiBvciBndWFyZCkuCisgICAgICAgICAgIiAtIEZyb20gdGhlIGluZGVudGF0aW9uIHBvaW50IG9mIHZpZXcsIHRoZSBrZXl3b3JkCisgICAgICAgICAgIiAgIChvZi9jYXRjaC9hZnRlci9lbmQpIGJlZm9yZSB0aGUgTFRJIGlzIHdoYXQgY291bnRzLCBzbworICAgICAgICAgICIgICBpZiB0aGUgc3RhY2sgYWxyZWFkeSBoYXMgYSBjYXRjaC9hZnRlci9lbmQsIHdlIGRvbid0CisgICAgICAgICAgIiAgIG1vZGlmeSBpdC4gVGhpcyB3YXkgd2hlbiB3ZSByZWFjaCBjYXNlL3RyeS9yZWNlaXZlLAorICAgICAgICAgICIgICB0aGVyZSB3aWxsIGJlIGF0IG1vc3Qgb25lIG9mL2NhdGNoL2FmdGVyL2VuZCB0b2tlbiBpbgorICAgICAgICAgICIgICB0aGUgc3RhY2suCisgICAgICAgIGVsc2UKKyAgICAgICAgICByZXR1cm4gczpVbmV4cGVjdGVkVG9rZW4odG9rZW4sIHN0YWNrKQorICAgICAgICBlbmRpZgorCisgICAgICBlbHNlaWYgdG9rZW4gPT0gJ29mJyB8fCB0b2tlbiA9PSAnYWZ0ZXInIHx8CisgICAgICAgICAgIFwgKHRva2VuID09ICdjYXRjaCcgJiYgIXM6SXNDYXRjaFN0YW5kYWxvbmUobG51bSwgaSkpCisKKyAgICAgICAgaWYgdG9rZW4gPT0gJ2FmdGVyJworICAgICAgICAgICIgSWYgTFRJIGlzIGJldHdlZW4gYW4gJ2FmdGVyJyBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAiICdlbmQnLCB0aGVuIGxldCdzIHJldHVybgorICAgICAgICAgIGxldCBbcmV0LCByZXNdID0gczpCZWdpbkVsZW1lbnRGb3VuZElmRW1wdHkoc3RhY2ssIHRva2VuLCBjdXJyX3Zjb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxzdG9yZWRfdmNvbCwgJnN3KQorICAgICAgICAgIGlmIHJldCB8IHJldHVybiByZXMgfCBlbmRpZgorICAgICAgICBlbmRpZgorCisgICAgICAgIGlmIGVtcHR5KHN0YWNrKSB8fCBzdGFja1swXSA9PSAnLT4nIHx8IHN0YWNrWzBdID09ICd3aGVuJworICAgICAgICAgIGNhbGwgczpQdXNoKHN0YWNrLCB0b2tlbikKKyAgICAgICAgZWxzZWlmIHN0YWNrWzBdID09ICdjYXRjaCcgfHwgc3RhY2tbMF0gPT0gJ2FmdGVyJyB8fCBzdGFja1swXSA9PSAnZW5kJworICAgICAgICAgICIgUGFzczogRnJvbSB0aGUgaW5kZW50YXRpb24gcG9pbnQgb2YgdmlldywgdGhlIGtleXdvcmQKKyAgICAgICAgICAiIChvZi9jYXRjaC9hZnRlci9lbmQpIGJlZm9yZSB0aGUgTFRJIGlzIHdoYXQgY291bnRzLCBzbworICAgICAgICAgICIgaWYgdGhlIHN0YWNrIGFscmVhZHkgaGFzIGEgY2F0Y2gvYWZ0ZXIvZW5kLCB3ZSBkb24ndAorICAgICAgICAgICIgbW9kaWZ5IGl0LiBUaGlzIHdheSB3aGVuIHdlIHJlYWNoIGNhc2UvdHJ5L3JlY2VpdmUsCisgICAgICAgICAgIiB0aGVyZSB3aWxsIGJlIGF0IG1vc3Qgb25lIG9mL2NhdGNoL2FmdGVyL2VuZCB0b2tlbiBpbgorICAgICAgICAgICIgdGhlIHN0YWNrLgorICAgICAgICBlbHNlCisgICAgICAgICAgcmV0dXJuIHM6VW5leHBlY3RlZFRva2VuKHRva2VuLCBzdGFjaykKKyAgICAgICAgZW5kaWYKKworICAgICAgZWxzZWlmIHRva2VuID09ICd8fCcgJiYgZW1wdHkoc3RhY2spICYmICFsYXN0X3Rva2VuX29mX2xpbmUKKworICAgICAgICBjYWxsIHM6TG9nKCcgICAgTFRJIGlzIGluIGV4cHJlc3Npb24gYWZ0ZXIgInx8IiAtPiByZXR1cm4nKQorICAgICAgICByZXR1cm4gc3RvcmVkX3Zjb2wKKworICAgICAgZWxzZQorICAgICAgICBjYWxsIHM6TG9nKCcgICAgTWlzYyB0b2tlbiwgc3RhY2sgdW5jaGFuZ2VkID0gJyAuIHN0cmluZyhzdGFjaykpCisKKyAgICAgIGVuZGlmCisKKyAgICAgIGlmIGVtcHR5KHN0YWNrKSB8fCBzdGFja1swXSA9PSAnLT4nIHx8IHN0YWNrWzBdID09ICd3aGVuJworICAgICAgICBsZXQgc3RvcmVkX3Zjb2wgPSBjdXJyX3Zjb2wKKyAgICAgICAgbGV0IHNlbWljb2xvbl9hYnNjb2wgPSAnJworICAgICAgICBjYWxsIHM6TG9nKCcgICAgTWlzYyB0b2tlbiB3aGVuIHRoZSBzdGFjayBpcyBlbXB0eSBvciBoYXMgIi0+IiAnIC4KKyAgICAgICAgICAgICAgICAgIFwnLT4gc2V0dGluZyBzdG9yZWRfdmNvbCB0byAnIC4gc3RvcmVkX3Zjb2wpCisgICAgICBlbHNlaWYgc3RhY2tbMF0gPT0gJzsnCisgICAgICAgIGxldCBzZW1pY29sb25fYWJzY29sID0gY3Vycl92Y29sCisgICAgICAgIGNhbGwgczpMb2coJyAgICBTZXR0aW5nIHNlbWljb2xvbi1zdG9yZWRfdmNvbCB0byAnIC4gc3RvcmVkX3Zjb2wpCisgICAgICBlbmRpZgorCisgICAgICBsZXQgaSAtPSAxCisgICAgICBjYWxsIHM6TG9nKCcgICAgVG9rZW4gcHJvY2Vzc2VkLiBzdG9yZWRfdmNvbD0nIC4gc3RvcmVkX3Zjb2wpCisKKyAgICAgIGxldCBsYXN0X3Rva2VuX29mX2xpbmUgPSAwCisKKyAgICBlbmR3aGlsZSAiIGl0ZXJhdGlvbiBvbiB0b2tlbnMgaW4gYSBsaW5lCisKKyAgICBjYWxsIHM6TG9nKCcgIExpbmUgYW5hbHl6ZWQuIHN0b3JlZF92Y29sPScgLiBzdG9yZWRfdmNvbCkKKworICAgIGlmIGVtcHR5KHN0YWNrKSAmJiBzdG9yZWRfdmNvbCAhPSAtMSAmJgorICAgICBcICghZW1wdHkoaW5kdG9rZW5zKSAmJiBpbmR0b2tlbnNbMF1bMF0gIT0gJzxzdHJpbmdfZW5kPicgJiYKKyAgICAgXCAgICAgICAgICAgICAgICAgICAgICAgaW5kdG9rZW5zWzBdWzBdICE9ICc8cXVvdGVkX2F0b21fZW5kPicpCisgICAgICBjYWxsIHM6TG9nKCcgICAgRW1wdHkgc3RhY2sgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSAtPiByZXR1cm4nKQorICAgICAgcmV0dXJuIHN0b3JlZF92Y29sCisgICAgZW5kaWYKKworICAgIGxldCBsbnVtIC09IDEKKworICBlbmR3aGlsZSAiIGl0ZXJhdGlvbiBvbiBsaW5lcworCitlbmRmdW5jdGlvbgorCisiIEVybGFuZ0luZGVudCBmdW5jdGlvbiB7e3sxCisiID09PT09PT09PT09PT09PT09PT09PQorCitmdW5jdGlvbiEgRXJsYW5nSW5kZW50KCkKKworICBjYWxsIHM6Q2xlYXJUb2tlbkNhY2hlSWZOZWVkZWQoKQorCisgIGxldCBjdXJybGluZSA9IGdldGxpbmUodjpsbnVtKQorICBjYWxsIHM6TG9nKCdJbmRlbnRpbmcgbGluZSAnIC4gdjpsbnVtIC4gJzogJyAuIGN1cnJsaW5lKQorCisgIGlmIHM6SXNMaW5lU3RyaW5nQ29udGludWF0aW9uKHY6bG51bSkgfHwgczpJc0xpbmVBdG9tQ29udGludWF0aW9uKHY6bG51bSkKKyAgICBjYWxsIHM6TG9nKCdTdHJpbmcgb3IgYXRvbSBjb250aW51YXRpb24gZm91bmQgLT4gJyAuCisgICAgICAgICAgICAgIFwnbGVhdmluZyBpbmRlbnRhdGlvbiB1bmNoYW5nZWQnKQorICAgIHJldHVybiAtMQorICBlbmRpZgorCisgIGxldCBtbCA9IG1hdGNobGlzdChjdXJybGluZSwKKyAgICAgICAgICAgICAgICAgICAgXCdeXChccypcKVwoXCUoZW5kXHxvZlx8Y2F0Y2hcfGFmdGVyXClcPlx8WylcXX1dXHw+PlwpJykKKworICAiIElmIHRoZSBsaW5lIGhhcyBhIHNwZWNpYWwgYmVnaW5uaW5nLCBidXQgbm90IGEgc3RhbmRhbG9uZSBjYXRjaAorICBpZiAhZW1wdHkobWwpICYmICEobWxbMl0gPT0gJ2NhdGNoJyAmJiBzOklzQ2F0Y2hTdGFuZGFsb25lKHY6bG51bSwgMCkpCisKKyAgICBsZXQgY3Vycl9jb2wgPSBsZW4obWxbMV0pCisKKyAgICBpZiBtbFsyXSA9PSAnZW5kJworICAgICAgbGV0IFtsbnVtLCBjb2xdID0gczpTZWFyY2hFbmRQYWlyKHY6bG51bSwgY3Vycl9jb2wpCisKKyAgICAgIGlmIGxudW0gPT0gMAorICAgICAgICByZXR1cm4gczpJbmRlbnRFcnJvcignTWF0Y2hpbmcgdG9rZW4gZm9yICJlbmQiIG5vdCBmb3VuZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCdlbmQnLCBbXSkKKyAgICAgIGVsc2UKKyAgICAgICAgY2FsbCBzOkxvZygnICAgIFRva2VuaXplIGZvciAiZW5kIiA8PDw8JykKKyAgICAgICAgbGV0IFtsbnVtLCBpbmR0b2tlbnNdID0gczpUb2tlbml6ZUxpbmUobG51bSwgJ3VwJykKKyAgICAgICAgY2FsbCBzOkxvZygnICAgID4+Pj4gVG9rZW5pemUgZm9yICJlbmQiJykKKworICAgICAgICBsZXQgW3N1Y2Nlc3MsIGldID0gczpHZXRJbmR0b2tlbkF0Q29sKGluZHRva2VucywgY29sKQorICAgICAgICBpZiAhc3VjY2VzcyB8IHJldHVybiBpIHwgZW5kaWYKKyAgICAgICAgbGV0IFt0b2tlbiwgY3Vycl92Y29sLCBjdXJyX2NvbF0gPSBpbmR0b2tlbnNbaV0KKyAgICAgICAgY2FsbCBzOkxvZygnICAgIE1hdGNoIGZvciAiZW5kIiBpbiBsaW5lICcgLiBsbnVtIC4gJzogJyAuCisgICAgICAgICAgICAgICAgICAgXHN0cmluZyhpbmR0b2tlbnNbaV0pKQorICAgICAgICByZXR1cm4gY3Vycl92Y29sCisgICAgICBlbmRpZgorCisgICAgZWxzZQorCisgICAgICBjYWxsIHM6TG9nKCIgIExpbmUgdHlwZSA9ICdlbmQnIikKKyAgICAgIGxldCBuZXdfY29sID0gczpFcmxhbmdDYWxjSW5kZW50KHY6bG51bSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxbbWxbMl0sICdhbGlnbl90b19iZWdpbl9lbGVtZW50J10pCisgICAgZW5kaWYKKyAgZWxzZQorICAgIGNhbGwgczpMb2coIiAgTGluZSB0eXBlID0gJ25vcm1hbCciKQorCisgICAgbGV0IG5ld19jb2wgPSBzOkVybGFuZ0NhbGNJbmRlbnQodjpsbnVtIC0gMSwgW10pCisgICAgaWYgY3VycmxpbmUgPX4jICdeXHMqd2hlblw+JworICAgICAgbGV0IG5ld19jb2wgKz0gMgorICAgIGVuZGlmCisgIGVuZGlmCisKKyAgaWYgbmV3X2NvbCA8IC0xCisgICAgY2FsbCBzOkxvZygnV0FSTklORzogcmV0dXJuaW5nIG5ld19jb2wgPT0gJyAuIG5ld19jb2wpCisgICAgcmV0dXJuIGc6ZXJsYW5nX3VuZXhwZWN0ZWRfdG9rZW5faW5kZW50CisgIGVuZGlmCisKKyAgcmV0dXJuIG5ld19jb2wKKworZW5kZnVuY3Rpb24KKworIiBDbGVhbnVwIHt7ezEKKyIgPT09PT09PQorCitsZXQgJmNwbyA9IHM6Y3BvX3NhdmUKK3VubGV0IHM6Y3BvX3NhdmUKKworIiB2aW06IHN3PTIgZXQgZmRtPW1hcmtlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9pbmRlbnQvdGV4LnZpbSBiL3J1bnRpbWUvaW5kZW50L3RleC52aW0KaW5kZXggOGUyYTVkYS4uN2UzYTM1MSAxMDA2NDQKLS0tIGEvcnVudGltZS9pbmRlbnQvdGV4LnZpbQorKysgYi9ydW50aW1lL2luZGVudC90ZXgudmltCkBAIC0xLDYgKzEsNiBAQAogIiBWaW0gaW5kZW50IGZpbGUKICIgTGFuZ3VhZ2U6ICAgICBMYVRlWAotIiBNYWludGFpbmVyOiAgIFpob3UgWWlDaGFvIDxicm9rZW4uemhvdSBBVCBnbWFpbC5jb20+CisiIE1haW50YWluZXI6ICAgWWlDaGFvIFpob3UgPGJyb2tlbi56aG91IEFUIGdtYWlsLmNvbT4KICIgQ3JlYXRlZDogICAgICBTYXQsIDE2IEZlYiAyMDAyIDE2OjUwOjE5ICswMTAwCiAiIExhc3QgQ2hhbmdlOgkyMDEyIE1hciAxOCAxOToxOTo1MAogIiBWZXJzaW9uOiAwLjcKQEAgLTQ2LDYgKzQ2LDkgQEAKICIgICAgICAgICAgICAgICAoKikgTW9kaWZ5IGluZGVudGtleXMuCiAiICAgICAgICAgICAgICAgMjAxMi8wMy8xOCBieSBaaG91IFlpY2hhbyA8YnJva2VuLnpob3UgQVQgZ21haWwuY29tPgogIiAgICAgICAgICAgICAgICgqKSBBZGQgJmNwbworIiAgICAgICAgICAgICAgIDIwMTMvMDUvMDIgYnkgWmhvdSBZaWNoYW8gPGJyb2tlbi56aG91IEFUIGdtYWlsLmNvbT4KKyIgICAgICAgICAgICAgICAoKikgRml4IHByb2JsZW0gYWJvdXQgR2V0VGVYSW5kZW50IGNoZWNrZXIuIFRoYW5rIEFsYmVydCBOZXR5bWsKKyIgICAgICAgICAgICAgICAgICAgZm9yIHJlcG9ydGluZyB0aGlzLgogIiB9fX0KIAogIiBEb2N1bWVudDoge3t7CkBAIC0xMDYsMTAgKzEwOSw2IEBACiAiIH19fSAKIAogIiBPbmx5IGRlZmluZSB0aGUgZnVuY3Rpb24gb25jZQotaWYgZXhpc3RzKCIqR2V0VGVYSW5kZW50IikKLSAgICBmaW5pc2gKLWVuZGlmCi0KIGlmIGV4aXN0cygiYjpkaWRfaW5kZW50IikKICAgICBmaW5pc2gKIGVuZGlmCkBAIC0xNTgsNyArMTU3LDcgQEAKIGxldCBnOnRleF9pdGVtcyA9ICdeXHMqJyAuIHN1YnN0aXR1dGUoZzp0ZXhfaXRlbXMsICdeXChcXlxcc1wqXCkqJywgJycsICcnKQogIiB9fX0KIAotZnVuY3Rpb24gR2V0VGVYSW5kZW50KCkgIiB7e3sKK2Z1bmN0aW9uISBHZXRUZVhJbmRlbnQoKSAiIHt7ewogICAgICIgRmluZCBhIG5vbi1ibGFuayBsaW5lIGFib3ZlIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgbGV0IGxudW0gPSBwcmV2bm9uYmxhbmsodjpsbnVtIC0gMSkKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9tZW51LnZpbSBiL3J1bnRpbWUvbWVudS52aW0KaW5kZXggNjU2MjEyZS4uZjRmZjlkYyAxMDA2NDQKLS0tIGEvcnVudGltZS9tZW51LnZpbQorKysgYi9ydW50aW1lL21lbnUudmltCkBAIC0yLDcgKzIsNyBAQAogIiBZb3UgY2FuIGFsc28gdXNlIHRoaXMgYXMgYSBzdGFydCBmb3IgeW91ciBvd24gc2V0IG9mIG1lbnVzLgogIgogIiBNYWludGFpbmVyOglCcmFtIE1vb2xlbmFhciA8QnJhbUB2aW0ub3JnPgotIiBMYXN0IENoYW5nZToJMjAxMiBEZWMgMDYKKyIgTGFzdCBDaGFuZ2U6CTIwMTMgTWF5IDE3CiAKICIgTm90ZSB0aGF0ICI6YW4iIChzaG9ydCBmb3IgIjphbm9yZW1lbnUiKSBpcyBvZnRlbiB1c2VkIHRvIG1ha2UgYSBtZW51IHdvcmsKICIgaW4gYWxsIG1vZGVzIGFuZCBhdm9pZCBzaWRlIGVmZmVjdHMgZnJvbSBtYXBwaW5ncyBkZWZpbmVkIGJ5IHRoZSB1c2VyLgpAQCAtMzA4LDggKzMwOCwxMCBAQAogICBlbmRpZgogICBsZXQgbiA9IGlucHV0ZGlhbG9nKGc6bWVudXRyYW5zX3RleHR3aWR0aF9kaWFsb2csICZ0dykKICAgaWYgbiAhPSAiIgotICAgICIgcmVtb3ZlIGxlYWRpbmcgemVyb3MgdG8gYXZvaWQgaXQgYmVpbmcgdXNlZCBhcyBhbiBvY3RhbCBudW1iZXIKLSAgICBsZXQgJnR3ID0gc3Vic3RpdHV0ZShuLCAiXjAqIiwgIiIsICIiKQorICAgICIgUmVtb3ZlIGxlYWRpbmcgemVyb3MgdG8gYXZvaWQgaXQgYmVpbmcgdXNlZCBhcyBhbiBvY3RhbCBudW1iZXIuCisgICAgIiBCdXQga2VlcCBhIHplcm8gYnkgaXRzZWxmLgorICAgIGxldCB0dyA9IHN1YnN0aXR1dGUobiwgIl4wKiIsICIiLCAiIikKKyAgICBsZXQgJnR3ID0gdHcgPT0gJycgPyAwIDogdHcgCiAgIGVuZGlmCiBlbmRmdW4KIApkaWZmIC0tZ2l0IGEvcnVudGltZS9wbHVnaW4vbWF0Y2hwYXJlbi52aW0gYi9ydW50aW1lL3BsdWdpbi9tYXRjaHBhcmVuLnZpbQppbmRleCAyOTY1YWQxLi4wZmRmZWYxIDEwMDY0NAotLS0gYS9ydW50aW1lL3BsdWdpbi9tYXRjaHBhcmVuLnZpbQorKysgYi9ydW50aW1lL3BsdWdpbi9tYXRjaHBhcmVuLnZpbQpAQCAtMSw2ICsxLDYgQEAKICIgVmltIHBsdWdpbiBmb3Igc2hvd2luZyBtYXRjaGluZyBwYXJlbnMKICIgTWFpbnRhaW5lcjogIEJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOiAyMDEzIE1hciAxOQorIiBMYXN0IENoYW5nZTogMjAxMyBNYXkgMDgKIAogIiBFeGl0IHF1aWNrbHkgd2hlbjoKICIgLSB0aGlzIHBsdWdpbiB3YXMgYWxyZWFkeSBsb2FkZWQgKG9yIGRpc2FibGVkKQpAQCAtMTEsNiArMTEsMTMgQEAKIGVuZGlmCiBsZXQgZzpsb2FkZWRfbWF0Y2hwYXJlbiA9IDEKIAoraWYgIWV4aXN0cygiZzptYXRjaHBhcmVuX3RpbWVvdXQiKQorICBsZXQgZzptYXRjaHBhcmVuX3RpbWVvdXQgPSAzMDAKK2VuZGlmCitpZiAhZXhpc3RzKCJnOm1hdGNocGFyZW5faW5zZXJ0X3RpbWVvdXQiKQorICBsZXQgZzptYXRjaHBhcmVuX2luc2VydF90aW1lb3V0ID0gNjAKK2VuZGlmCisKIGF1Z3JvdXAgbWF0Y2hwYXJlbgogICAiIFJlcGxhY2UgYWxsIG1hdGNocGFyZW4gYXV0b2NvbW1hbmRzCiAgIGF1dG9jbWQhIEN1cnNvck1vdmVkLEN1cnNvck1vdmVkSSxXaW5FbnRlciAqIGNhbGwgczpIaWdobGlnaHRfTWF0Y2hpbmdfUGFpcigpCkBAIC05OSwxMCArMTA2LDE1IEBACiAgICAgbGV0IHN0b3BsaW5lID0gc3RvcGxpbmV0b3AKICAgZW5kaWYKIAorICAiIExpbWl0IHRoZSBzZWFyY2ggdGltZSB0byAzMDAgbXNlYyB0byBhdm9pZCBhIGhhbmcgb24gdmVyeSBsb25nIGxpbmVzLgorICAiIFRoaXMgZmFpbHMgd2hlbiBhIHRpbWVvdXQgaXMgbm90IHN1cHBvcnRlZC4KKyAgaWYgbW9kZSgpID09ICdpJyB8fCBtb2RlKCkgPT0gJ1InCisgICAgbGV0IHRpbWVvdXQgPSBleGlzdHMoImI6bWF0Y2hwYXJlbl9pbnNlcnRfdGltZW91dCIpID8gYjptYXRjaHBhcmVuX2luc2VydF90aW1lb3V0IDogZzptYXRjaHBhcmVuX2luc2VydF90aW1lb3V0CisgIGVsc2UKKyAgICBsZXQgdGltZW91dCA9IGV4aXN0cygiYjptYXRjaHBhcmVuX3RpbWVvdXQiKSA/IGI6bWF0Y2hwYXJlbl90aW1lb3V0IDogZzptYXRjaHBhcmVuX3RpbWVvdXQKKyAgZW5kaWYKICAgdHJ5Ci0gICAgIiBMaW1pdCB0aGUgc2VhcmNoIHRpbWUgdG8gMzAwIG1zZWMgdG8gYXZvaWQgYSBoYW5nIG9uIHZlcnkgbG9uZyBsaW5lcy4KLSAgICAiIFRoaXMgZmFpbHMgd2hlbiBhIHRpbWVvdXQgaXMgbm90IHN1cHBvcnRlZC4KLSAgICBsZXQgW21fbG51bSwgbV9jb2xdID0gc2VhcmNocGFpcnBvcyhjLCAnJywgYzIsIHNfZmxhZ3MsIHNfc2tpcCwgc3RvcGxpbmUsIDMwMCkKKyAgICBsZXQgW21fbG51bSwgbV9jb2xdID0gc2VhcmNocGFpcnBvcyhjLCAnJywgYzIsIHNfZmxhZ3MsIHNfc2tpcCwgc3RvcGxpbmUsIHRpbWVvdXQpCiAgIGNhdGNoIC9FMTE4LwogICAgICIgQ2FuJ3QgdXNlIHRoZSB0aW1lb3V0LCByZXN0cmljdCB0aGUgc3RvcGxpbmUgYSBiaXQgbW9yZSB0byBhdm9pZCB0YWtpbmcKICAgICAiIGEgbG9uZyB0aW1lIG9uIGNsb3NlZCBmb2xkcyBhbmQgbG9uZyBsaW5lcy4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2RlYmNoYW5nZWxvZy52aW0gYi9ydW50aW1lL3N5bnRheC9kZWJjaGFuZ2Vsb2cudmltCmluZGV4IDRlMDA4ZDIuLmIxZDdhMzEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2RlYmNoYW5nZWxvZy52aW0KKysrIGIvcnVudGltZS9zeW50YXgvZGViY2hhbmdlbG9nLnZpbQpAQCAtMyw3ICszLDcgQEAKICIgTWFpbnRhaW5lcjogIERlYmlhbiBWaW0gTWFpbnRhaW5lcnMgPHBrZy12aW0tbWFpbnRhaW5lcnNAbGlzdHMuYWxpb3RoLmRlYmlhbi5vcmc+CiAiIEZvcm1lciBNYWludGFpbmVyczogR2VyZnJpZWQgRnVjaHMgPGFsZmllQGlzdC5vcmc+CiAiICAgICAgICAgICAgICAgICAgICAgV2ljaGVydCBBa2tlcm1hbiA8d2Fra2VybWFAZGViaWFuLm9yZz4KLSIgTGFzdCBDaGFuZ2U6IDIwMTMgSmFuIDAzCisiIExhc3QgQ2hhbmdlOiAyMDEzIE1heSAwNQogIiBVUkw6IGh0dHA6Ly9hbm9uc2NtLmRlYmlhbi5vcmcvaGcvcGtnLXZpbS92aW0vcmF3LWZpbGUvdW5zdGFibGUvcnVudGltZS9zeW50YXgvZGViY2hhbmdlbG9nLnZpbQogCiAiIFN0YW5kYXJkIHN5bnRheCBpbml0aWFsaXphdGlvbgpAQCAtMTksNyArMTksNyBAQAogIiBEZWZpbmUgc29tZSBjb21tb24gZXhwcmVzc2lvbnMgd2UgY2FuIHVzZSBsYXRlciBvbgogc3luIG1hdGNoIGRlYmNoYW5nZWxvZ05hbWUJY29udGFpbmVkICJeW1s6YWxudW06XV1bWzphbG51bTpdListXVwrICIKIHN5biBtYXRjaCBkZWJjaGFuZ2Vsb2dVcmdlbmN5CWNvbnRhaW5lZCAiOyB1cmdlbmN5PVwobG93XHxtZWRpdW1cfGhpZ2hcfGNyaXRpY2FsXHxlbWVyZ2VuY3lcKVwoIFxTLipcKVw9Igotc3luIG1hdGNoIGRlYmNoYW5nZWxvZ1RhcmdldAljb250YWluZWQgIlx2ICUoZnJvemVufHVuc3RhYmxlfCUodGVzdGluZ3wlKG9sZCk9c3RhYmxlKSUoLXByb3Bvc2VkLXVwZGF0ZXN8LXNlY3VyaXR5KT18ZXhwZXJpbWVudGFsfCUoc3F1ZWV6ZSktJShiYWNrcG9ydHMlKC1zbG9wcHkpPXx2b2xhdGlsZSl8JShoYXJkeXxsdWNpZHxvbmVpcmljfHByZWNpc2V8cXVhbnRhbHxyYXJpbmcpJSgtJShzZWN1cml0eXxwcm9wb3NlZHx1cGRhdGVzfGJhY2twb3J0c3xjb21tZXJjaWFsfHBhcnRuZXIpKT0pKyIKK3N5biBtYXRjaCBkZWJjaGFuZ2Vsb2dUYXJnZXQJY29udGFpbmVkICJcdiAlKGZyb3plbnx1bnN0YWJsZXwlKHRlc3Rpbmd8JShvbGQpPXN0YWJsZSklKC1wcm9wb3NlZC11cGRhdGVzfC1zZWN1cml0eSk9fGV4cGVyaW1lbnRhbHxzcXVlZXplLSUoYmFja3BvcnRzJSgtc2xvcHB5KT18dm9sYXRpbGUpfHdoZWV6eS1iYWNrcG9ydHN8JShsdWNpZHxwcmVjaXNlfHF1YW50YWx8cmFyaW5nfHNhdWN5KSUoLSUoc2VjdXJpdHl8cHJvcG9zZWR8dXBkYXRlc3xiYWNrcG9ydHN8Y29tbWVyY2lhbHxwYXJ0bmVyKSk9KSsiCiBzeW4gbWF0Y2ggZGViY2hhbmdlbG9nVmVyc2lvbgljb250YWluZWQgIiguXHstfSkiCiBzeW4gbWF0Y2ggZGViY2hhbmdlbG9nQ2xvc2VzCWNvbnRhaW5lZCAiY2xvc2VzOlxfcypcKGJ1Z1wpXD0jXD1cX3NcPVxkXCtcKCxcX3MqXChidWdcKVw9I1w9XF9zXD1cZFwrXCkqIgogc3luIG1hdGNoIGRlYmNoYW5nZWxvZ0xQCWNvbnRhaW5lZCAiXGNscDpcc1wrI1xkXCtcKCxccyojXGRcK1wpKiIKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2RlYnNvdXJjZXMudmltIGIvcnVudGltZS9zeW50YXgvZGVic291cmNlcy52aW0KaW5kZXggN2M2NDQ3MS4uZjNkZDJhNSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvZGVic291cmNlcy52aW0KKysrIGIvcnVudGltZS9zeW50YXgvZGVic291cmNlcy52aW0KQEAgLTIsNyArMiw3IEBACiAiIExhbmd1YWdlOiAgICAgRGViaWFuIHNvdXJjZXMubGlzdAogIiBNYWludGFpbmVyOiAgIERlYmlhbiBWaW0gTWFpbnRhaW5lcnMgPHBrZy12aW0tbWFpbnRhaW5lcnNAbGlzdHMuYWxpb3RoLmRlYmlhbi5vcmc+CiAiIEZvcm1lciBNYWludGFpbmVyOiBNYXR0aGlqcyBNb2hsbWFubiA8bWF0dGhpanNAY2FjaG9sb25nLm5sPgotIiBMYXN0IENoYW5nZTogMjAxMyBKYW4gMDMKKyIgTGFzdCBDaGFuZ2U6IDIwMTMgTWF5IDA1CiAiIFVSTDogaHR0cDovL2Fub25zY20uZGViaWFuLm9yZy9oZy9wa2ctdmltL3ZpbS9yYXctZmlsZS91bnN0YWJsZS9ydW50aW1lL3N5bnRheC9kZWJzb3VyY2VzLnZpbQogCiAiIFN0YW5kYXJkIHN5bnRheCBpbml0aWFsaXphdGlvbgpAQCAtMjMsNyArMjMsNyBAQAogCiAiIE1hdGNoIHVyaSdzCiBzeW4gbWF0Y2ggZGVic291cmNlc1VyaSAgICAgICAgICAgICtcKGh0dHA6Ly9cfGZ0cDovL1x8W3JzXXNoOi8vXHxkZWJ0b3JyZW50Oi8vXHxcKGNkcm9tXHxjb3B5XHxmaWxlXCk6XClbXicgCTw+Il1cKysKLXN5biBtYXRjaCBkZWJzb3VyY2VzRGlzdHJLZXl3b3JkICAgK1woW1s6YWxudW06XV8uL10qXClcKHNxdWVlemVcfHdoZWV6eVx8XChvbGRcKVw9c3RhYmxlXHx0ZXN0aW5nXHx1bnN0YWJsZVx8c2lkXHxyYy1idWdneVx8ZXhwZXJpbWVudGFsXHxoYXJkeVx8bHVjaWRcfG9uZWlyaWNcfHByZWNpc2VcfHF1YW50YWxcfHJhcmluZ1wpXChbLVs6YWxudW06XV8uL10qXCkrCitzeW4gbWF0Y2ggZGVic291cmNlc0Rpc3RyS2V5d29yZCAgICtcKFtbOmFsbnVtOl1fLi9dKlwpXChzcXVlZXplXHx3aGVlenlcfFwob2xkXClcPXN0YWJsZVx8dGVzdGluZ1x8dW5zdGFibGVcfHNpZFx8cmMtYnVnZ3lcfGV4cGVyaW1lbnRhbFx8bHVjaWRcfHByZWNpc2VcfHF1YW50YWxcfHJhcmluZ1x8c2F1Y3lcKVwoWy1bOmFsbnVtOl1fLi9dKlwpKwogCiAiIEFzc29jaWF0ZSBvdXIgbWF0Y2hlcyBhbmQgcmVnaW9ucyB3aXRoIHByZXR0eSBjb2xvdXJzCiBoaSBkZWYgbGluayBkZWJzb3VyY2VzTGluZSAgICAgICAgICAgIEVycm9yCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9lcmxhbmcudmltIGIvcnVudGltZS9zeW50YXgvZXJsYW5nLnZpbQppbmRleCAyOGJjNGE1Li5mMzRhMDA0IDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9lcmxhbmcudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L2VybGFuZy52aW0KQEAgLTEsMTI2ICsxLDE3NSBAQAogIiBWaW0gc3ludGF4IGZpbGUKLSIgTGFuZ3VhZ2U6ICAgICBFcmxhbmcKLSIgQXV0aG9yOiAgICAgICBPc2NhciBIZWxsc3Ry9m0gPG9zY2FyQG9zY2FyaC5uZXQ+IChodHRwOi8vb3NjYXIuaGVsbHN0cm9tLnN0KQotIiBDb250cmlidXRvcnM6IFJpY2FyZG8gQ2F0YWxpbmFzIEppbeluZXogPGppbWVuZXpyaWNrQGdtYWlsLmNvbT4KKyIgTGFuZ3VhZ2U6ICAgICBFcmxhbmcgKGh0dHA6Ly93d3cuZXJsYW5nLm9yZykKKyIgTWFpbnRhaW5lcjogICBDc2FiYSBIb2NoIDxjc2FiYS5ob2NoQGdtYWlsLmNvbT4KKyIgRm9ybWVyIE1haW50YWluZXI6ICBLcmXEhWltaXIgTWFyxL5pxIcgKEtyZXNpbWlyIE1hcnppYykgPGttYXJ6aWNAZmx5LnNyay5mZXIuaHI+CisiIExhc3QgVXBkYXRlOiAgMjAxMy1NYXItMDcKICIgTGljZW5zZTogICAgICBWaW0gbGljZW5zZQotIiBWZXJzaW9uOiAgICAgIDIwMTEvMDkvMTEKKyIgVVJMOiAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vaGNzNDIvdmltLWVybGFuZwogCi1pZiBleGlzdHMoImI6Y3VycmVudF9zeW50YXgiKQotCWZpbmlzaAotZWxzZQotCWxldCBiOmN1cnJlbnRfc3ludGF4ID0gImVybGFuZyIKKyIgQ3VzdG9taXphdGlvbjoKKyIKKyIgVGhlcmUgYXJlIHR3byBvcHRpb25hbCBzZXRzIG9mIGhpZ2hsaWdodGluZzoKKyIKKyIgMS4gVGhlIEJJRnMgKGJ1aWx0LWluIGZ1bmN0aW9ucykgYXJlIGhpZ2hsaWdodGVkIGJ5IGRlZmF1bHQuIFRvIGRpc2FibGUKKyIgICAgdGhpcywgcHV0IHRoZSBmb2xsb3dpbmcgbGluZSBpbiB5b3VyIHZpbXJjOgorIgorIiAgICAgIGxldCBnOmVybGFuZ19oaWdobGlnaHRfYmlmcyA9IDAKKyIKKyIgMi4gVG8gZW5hYmxlIGhpZ2hsaWdodGluZyBzb21lIHNwZWNpYWwgYXRvbXMsIHB1dCB0aGlzIGluIHlvdXIgdmltcmM6CisiCisiICAgICAgbGV0IGc6ZXJsYW5nX2hpZ2hsaWdodF9zcGVjaWFsX2F0b21zID0gMQorCisiIEZvciB2ZXJzaW9uIDUueDogQ2xlYXIgYWxsIHN5bnRheCBpdGVtcworIiBGb3IgdmVyc2lvbiA2Lng6IFF1aXQgd2hlbiBhIHN5bnRheCBmaWxlIHdhcyBhbHJlYWR5IGxvYWRlZAoraWYgdmVyc2lvbiA8IDYwMAorICAgIHN5bnRheCBjbGVhcgorZWxzZWlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCisgICAgZmluaXNoCiBlbmRpZgogCi1pZiAhZXhpc3RzKCJnOmVybGFuZ19oaWdobGlnaHRfYmlmIikKLQlsZXQgZzplcmxhbmdfaGlnaGxpZ2h0X2JpZiA9IDEKLWVuZGlmCi0KLSIgRXJsYW5nIGlzIGNhc2Ugc2Vuc2l0aXZlCisiIENhc2Ugc2Vuc2l0aXZlCiBzeW4gY2FzZSBtYXRjaAogCi0iIE1hdGNoIGdyb3Vwcwotc3luIG1hdGNoIGVybGFuZ1N0cmluZ01vZGlmaWVyICAgICAgICAgICAgICAgL1xcLi8gY29udGFpbmVkCi1zeW4gbWF0Y2ggZXJsYW5nU3RyaW5nTW9kaWZpZXIgICAgICAgICAgICAgICAvXH5cJSgtXD9bMC05Kl1cK1wpXD9cJShcLlswLTkqXVwrXC4uXD9cKVw/XCUoY1x8Zlx8ZVx8Z1x8c1x8d1x8cFx8V1x8UFx8Qlx8WFx8I1x8Ylx8K1x8blx8aVwpLyBjb250YWluZWQKLXN5biBtYXRjaCBlcmxhbmdNb2RpZmllciAgICAgICAgICAgICAgICAgICAgIC9cJFxcXD8uLwotCi1zeW4gbWF0Y2ggZXJsYW5nSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAvXDxcJShbMC05XVwrI1swLTlhLWZBLUZdXCtcfFswLTldXCtcKVw+Lwotc3luIG1hdGNoIGVybGFuZ0Zsb2F0ICAgICAgICAgICAgICAgICAgICAgICAgL1w8WzAtOV1cK1wuWzAtOV1cK1wlKGUtXD9bMC05XVwrXClcP1w+LwotCi1zeW4ga2V5d29yZCBlcmxhbmdUb2RvICAgICAgICAgICAgICAgICAgICAgICBUT0RPIEZJWE1FIFhYWCBjb250YWluZWQKLXN5biBtYXRjaCAgIGVybGFuZ0NvbW1lbnQgICAgICAgICAgICAgICAgICAgIC8lLiokLyBjb250YWlucz1AU3BlbGwsZXJsYW5nVG9kbyxlcmxhbmdBbm5vdGF0aW9uCi1zeW4gbWF0Y2ggICBlcmxhbmdBbm5vdGF0aW9uICAgICAgICAgICAgICAgICAvXCUoJVxzXClcQDw9QFwlKGF1dGhvclx8Y2xlYXJcfGNvcHlyaWdodFx8ZGVwcmVjYXRlZFx8ZG9jXHxkb2NmaWxlXHxlbmRcfGVxdWl2XHxoZWFkZXJmaWxlXHxoaWRkZW5cfHByaXZhdGVcfHJlZmVyZW5jZVx8c2VlXHxzaW5jZVx8c3BlY1x8dGhyb3dzXHx0aXRsZVx8dG9kb1x8VE9ET1x8dHlwZVx8dmVyc2lvblwpLyBjb250YWluZWQKLXN5biBtYXRjaCAgIGVybGFuZ0Fubm90YXRpb24gICAgICAgICAgICAgICAgIC9gW14nXVwrJy8gY29udGFpbmVkCi0KLXN5biBrZXl3b3JkIGVybGFuZ0tleXdvcmQgICAgICAgICAgICAgICAgICAgIGJhbmQgYm9yIGJub3QgYnNsIGJzciBieG9yIGRpdiByZW0geG9yCi1zeW4ga2V5d29yZCBlcmxhbmdLZXl3b3JkICAgICAgICAgICAgICAgICAgICB0cnkgY2F0Y2ggYmVnaW4gcmVjZWl2ZSBhZnRlciBjb25kIGZ1biBsZXQgcXVlcnkKLQotc3luIGtleXdvcmQgZXJsYW5nQ29uZGl0aW9uYWwgICAgICAgICAgICAgICAgY2FzZSBpZiBvZiBlbmQKLXN5biBrZXl3b3JkIGVybGFuZ0NvbmRpdGlvbmFsICAgICAgICAgICAgICAgIG5vdCBhbmQgb3IgYW5kYWxzbyBvcmVsc2UKLXN5biBrZXl3b3JkIGVybGFuZ0NvbmRpdGlvbmFsICAgICAgICAgICAgICAgIHdoZW4KLQotc3luIGtleXdvcmQgZXJsYW5nQm9vbGVhbiAgICAgICAgICAgICAgICAgICAgdHJ1ZSBmYWxzZQotCi1zeW4ga2V5d29yZCBlcmxhbmdHdWFyZCAgICAgICAgICAgICAgICAgICAgICBpc19saXN0IGlzX2FsaXZlIGlzX2F0b20gaXNfYmluYXJ5IGlzX2JpdHN0cmluZyBpc19ib29sZWFuIGlzX3R1cGxlIGlzX251bWJlciBpc19pbnRlZ2VyIGlzX2Zsb2F0IGlzX2Z1bmN0aW9uIGlzX2NvbnN0YW50IGlzX3BpZCBpc19wb3J0IGlzX3JlZmVyZW5jZSBpc19yZWNvcmQgaXNfcHJvY2Vzc19hbGl2ZQotCi1zeW4gbWF0Y2ggZXJsYW5nT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAvXC9cfCpcfCtcfC1cfCsrXHwtLS8KLXN5biBtYXRjaCBlcmxhbmdPcGVyYXRvciAgICAgICAgICAgICAgICAgICAgIC8tPlx8PC1cfHx8XHx8XHwhXHw9Lwotc3luIG1hdGNoIGVybGFuZ09wZXJhdG9yICAgICAgICAgICAgICAgICAgICAgLz06PVx8PT1cfFwvPVx8PVwvPVx8PFx8Plx8PTxcfD49Lwotc3luIGtleXdvcmQgZXJsYW5nT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgZGl2IHJlbQotCi1zeW4gcmVnaW9uIGVybGFuZ1N0cmluZyAgICAgICAgICAgICAgICAgICAgICBzdGFydD0vIi8gZW5kPS8iLyBza2lwPS9cXC8gY29udGFpbnM9QFNwZWxsLGVybGFuZ1N0cmluZ01vZGlmaWVyCi0KLXN5biBtYXRjaCBlcmxhbmdWYXJpYWJsZSAgICAgICAgICAgICAgICAgICAgIC9cPFtBLVpfXVx3Klw+Lwotc3luIG1hdGNoIGVybGFuZ0F0b20gICAgICAgICAgICAgICAgICAgICAgICAgL1wlKFwlKF4tXClcfCNcKVxAPCFcPFthLXpdW0EtWmEtejAtOV9dKlw+XCUoXHMqWyg6XVwpXEAhLwotc3luIG1hdGNoIGVybGFuZ0F0b20gICAgICAgICAgICAgICAgICAgICAgICAgL1xcXEA8ISdbXiddKlxcXEA8IScvCi0KLXN5biBtYXRjaCBlcmxhbmdSZWNvcmQgICAgICAgICAgICAgICAgICAgICAgIC8jXHdcKy8KLQotc3luIG1hdGNoIGVybGFuZ1R1cGxlICAgICAgICAgICAgICAgICAgICAgICAgL3tcfH0vCi1zeW4gbWF0Y2ggZXJsYW5nTGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAvXFtcfFxdLwotCi1zeW4gbWF0Y2ggZXJsYW5nQXR0cmlidXRlICAgICAgICAgICAgICAgICAgICAvXi1cJSh2c25cfGF1dGhvclx8Y29weXJpZ2h0XHxjb21waWxlXHxkZXByZWNhdGVkXHxtb2R1bGVcfGV4cG9ydFx8aW1wb3J0XHxiZWhhdmlvdXJcfGJlaGF2aW9yXHxleHBvcnRfdHlwZVx8aWdub3JlX3hyZWZcfG9uX2xvYWRcKVxzKihcQD0vCi1zeW4gbWF0Y2ggZXJsYW5nSW5jbHVkZSAgICAgICAgICAgICAgICAgICAgICAvXi1pbmNsdWRlXCUoX2xpYlwpXD9ccyooXEA9Lwotc3luIG1hdGNoIGVybGFuZ1JlY29yZERlZiAgICAgICAgICAgICAgICAgICAgL14tcmVjb3JkXHMqKFxAPS8KLXN5biBtYXRjaCBlcmxhbmdEZWZpbmUgICAgICAgICAgICAgICAgICAgICAgIC9eLVwlKGRlZmluZVx8dW5kZWZcKVxzKihcQD0vCi1zeW4gbWF0Y2ggZXJsYW5nUHJlQ29uZGl0ICAgICAgICAgICAgICAgICAgICAvXi1cJShpZmRlZlx8aWZuZGVmXHxlbHNlXHxlbmRpZlwpXCUoXHMqKFxAPVwpXD8vCi0KLXN5biBtYXRjaCBlcmxhbmdUeXBlICAgICAgICAgICAgICAgICAgICAgICAgIC9eLVwlKHNwZWNcfHR5cGVcKVsoIF1cQD0vCi0KLXN5biBtYXRjaCBlcmxhbmdNYWNybyAgICAgICAgICAgICAgICAgICAgICAgIC9cJSgtZGVmaW5lKFwpXEA8PVx3XCsvCi1zeW4gbWF0Y2ggZXJsYW5nTWFjcm8gICAgICAgICAgICAgICAgICAgICAgICAvP1w/P1x3XCsvCi0KLXN5biBtYXRjaCBlcmxhbmdCaXRUeXBlICAgICAgICAgICAgICAgICAgICAgIC9cJShcL1x8LVwpXEA8PVwlKGJpdHNcfGJpdHN0cmluZ1x8YmluYXJ5XHxpbnRlZ2VyXHxmbG9hdFx8dW5pdFwpXD4vCi1zeW4gbWF0Y2ggZXJsYW5nQml0U2l6ZSAgICAgICAgICAgICAgICAgICAgICAvOlxAPD1bMC05XVwrLwotCi1zeW4gbWF0Y2ggZXJsYW5nQmluYXJ5ICAgICAgICAgICAgICAgICAgICAgIC88PFx8Pj4vCi0KLSIgQklGcwotc3luIG1hdGNoIGVybGFuZ0JJRiAgICAgICAgICAgICAgICAgICAgICAgICAgL1wlKFteOjAtOUEtWmEtel9dXHxcPGVybGFuZzpcKVxAPD1cJShhYnNcfGFwcGx5XHxhdG9tX3RvX2JpbmFyeVx8YXRvbV90b19saXN0XHxiaW5hcnlfcGFydFx8YmluYXJ5X3RvX2F0b21cfGJpbmFyeV90b19leGlzdGluZ19hdG9tXHxiaW5hcnlfdG9fbGlzdFx8YmluYXJ5X3RvX3Rlcm1cfGJpdF9zaXplXHxiaXRzdHJpbmdfdG9fbGlzdFx8Ynl0ZV9zaXplXHxjaGVja19wcm9jZXNzX2NvZGVcfGRhdGVcfGRlbGV0ZV9tb2R1bGVcfGRlbW9uaXRvclx8ZGlzY29ubmVjdF9ub2RlXHxlbGVtZW50XHxlcmFzZVx8ZXhpdFx8ZmxvYXRcfGZsb2F0X3RvX2xpc3RcfGdhcmJhZ2VfY29sbGVjdFx8Z2V0XHxnZXRfa2V5c1x8Z3JvdXBfbGVhZGVyXHxoZFx8aW50ZWdlcl90b19saXN0XHxpb2xpc3Rfc2l6ZVx8aW9saXN0X3RvX2JpbmFyeVx8aXNfYWxpdmVcfGlzX2F0b21cfGlzX2JpbmFyeVx8aXNfYml0c3RyaW5nXHxpc19ib29sZWFuXHxpc19mbG9hdFx8aXNfZnVuY3Rpb25cfGlzX2ludGVnZXJcfGlzX2xpc3RcfGlzX251bWJlclx8aXNfcGlkXHxpc19wb3J0XHxpc19wcm9jZXNzX2FsaXZlXHxpc19yZWNvcmRcfGlzX3JlZmVyZW5jZVx8aXNfdHVwbGVcfGxlbmd0aFx8bGlua1x8bGlzdF90b19hdG9tXHxsaXN0X3RvX2JpbmFyeVx8bGlzdF90b19iaXRzdHJpbmdcfGxpc3RfdG9fZXhpc3RpbmdfYXRvbVx8bGlzdF90b19mbG9hdFx8bGlzdF90b19pbnRlZ2VyXHxsaXN0X3RvX3BpZFx8bGlzdF90b190dXBsZVx8bG9hZF9tb2R1bGVcfG1ha2VfcmVmXHxtYXhcfG1pblx8bW9kdWxlX2xvYWRlZFx8bW9uaXRvclx8bW9uaXRvcl9ub2RlXHxub2RlXHxub2Rlc1x8bm93XHxvcGVuX3BvcnRcfHBpZF90b19saXN0XHxwb3J0X2Nsb3NlXHxwb3J0X2NvbW1hbmRcfHBvcnRfY29ubmVjdFx8cG9ydF9jb250cm9sXHxwcmVfbG9hZGVkXHxwcm9jZXNzZXNcfHByb2Nlc3NfZmxhZ1x8cHJvY2Vzc19pbmZvXHxwdXJnZV9tb2R1bGVcfHB1dFx8cmVnaXN0ZXJcfHJlZ2lzdGVyZWRcfHJvdW5kXHxzZWxmXHxzZXRlbGVtZW50XHxzaXplXHxzcGF3blx8c3Bhd25fbGlua1x8c3Bhd25fbW9uaXRvclx8c3Bhd25fb3B0XHxzcGxpdF9iaW5hcnlcfHN0YXRpc3RpY3NcfHRlcm1fdG9fYmluYXJ5XHx0aW1lXHx0bFx8dHJ1bmNcfHR1cGxlX3NpemVcfHR1cGxlX3RvX2xpc3RcfHVubGlua1x8dW5yZWdpc3Rlclx8d2hlcmVpc1wpXCUoKFx8XC9bMC05XVwpXEA9Lwotc3luIG1hdGNoIGVybGFuZ0JJRiAgICAgICAgICAgICAgICAgICAgICAgICAgL1w8XCUoZXJsYW5nOlwpXEA8PVwlKGFwcGVuZF9lbGVtZW50XHxidW1wX3JlZHVjdGlvbnNcfGNhbmNlbF90aW1lclx8ZGVjb2RlX3BhY2tldFx8ZGlzcGxheVx8ZnVuY3Rpb25fZXhwb3J0ZWRcfGZ1bl9pbmZvXHxmdW5fdG9fbGlzdFx8Z2V0X2Nvb2tpZVx8Z2V0X3N0YWNrdHJhY2VcfGhhc2hcfGlzX2J1aWx0aW5cfGxvYWRlZFx8bG9hZF9uaWZcfGxvY2FsdGltZVx8bG9jYWx0aW1lX3RvX3VuaXZlcnNhbHRpbWVcfG1ha2VfdHVwbGVcfG1lbW9yeVx8bW9uaXRvcl9ub2RlXHxwaGFzaFx8cG9ydF9jYWxsXHxwb3J0X2luZm9cfHBvcnRzXHxwb3J0X3RvX2xpc3RcfHByb2Nlc3NfZGlzcGxheVx8cmVhZF90aW1lclx8cmVmX3RvX2xpc3RcfHJlc3VtZV9wcm9jZXNzXHxzZW5kXHxzZW5kX2FmdGVyXHxzZW5kX25vc3VzcGVuZFx8c2V0X2Nvb2tpZVx8c3RhcnRfdGltZXJcfHN1c3BlbmRfcHJvY2Vzc1x8c3lzdGVtX2ZsYWdcfHN5c3RlbV9pbmZvXHxzeXN0ZW1fbW9uaXRvclx8c3lzdGVtX3Byb2ZpbGVcfHRyYWNlXHx0cmFjZV9kZWxpdmVyZWRcfHRyYWNlX2luZm9cfHRyYWNlX3BhdHRlcm5cfHVuaXZlcnNhbHRpbWVcfHVuaXZlcnNhbHRpbWVfdG9fbG9jYWx0aW1lXHx5aWVsZFwpKFxAPS8KLXN5biBtYXRjaCBlcmxhbmdHQklGICAgICAgICAgICAgICAgICAgICAgICAgIC9lcmxhbmdcJSg6XHdcKVxAPS8KLQotIiBMaW5rIEVybGFuZyBzdHVmZiB0byBWaW0gZ3JvdXBzCi1oaSBsaW5rIGVybGFuZ1RvZG8gICAgICAgICAgIFRvZG8KLWhpIGxpbmsgZXJsYW5nU3RyaW5nICAgICAgICAgU3RyaW5nCi1oaSBsaW5rIGVybGFuZ05vU3BlbGxTdHJpbmcgIFN0cmluZwotaGkgbGluayBlcmxhbmdNb2RpZmllciAgICAgICBTcGVjaWFsQ2hhcgotaGkgbGluayBlcmxhbmdTdHJpbmdNb2RpZmllciBTcGVjaWFsQ2hhcgotaGkgbGluayBlcmxhbmdDb21tZW50ICAgICAgICBDb21tZW50Ci1oaSBsaW5rIGVybGFuZ0Fubm90YXRpb24gICAgIFNwZWNpYWwKLWhpIGxpbmsgZXJsYW5nVmFyaWFibGUgICAgICAgSWRlbnRpZmllcgotaGkgbGluayBlcmxhbmdJbmNsdWRlICAgICAgICBJbmNsdWRlCi1oaSBsaW5rIGVybGFuZ1JlY29yZERlZiAgICAgIEtleXdvcmQKLWhpIGxpbmsgZXJsYW5nQXR0cmlidXRlICAgICAgS2V5d29yZAotaGkgbGluayBlcmxhbmdLZXl3b3JkICAgICAgICBLZXl3b3JkCi1oaSBsaW5rIGVybGFuZ01hY3JvICAgICAgICAgIE1hY3JvCi1oaSBsaW5rIGVybGFuZ0RlZmluZSAgICAgICAgIERlZmluZQotaGkgbGluayBlcmxhbmdQcmVDb25kaXQgICAgICBQcmVDb25kaXQKLWhpIGxpbmsgZXJsYW5nUHJlUHJvYyAgICAgICAgUHJlUHJvYwotaGkgbGluayBlcmxhbmdEZWxpbWl0ZXIgICAgICBEZWxpbWl0ZXIKLWhpIGxpbmsgZXJsYW5nQml0RGVsaW1pdGVyICAgTm9ybWFsCi1oaSBsaW5rIGVybGFuZ09wZXJhdG9yICAgICAgIE9wZXJhdG9yCi1oaSBsaW5rIGVybGFuZ0NvbmRpdGlvbmFsICAgIENvbmRpdGlvbmFsCi1oaSBsaW5rIGVybGFuZ0d1YXJkICAgICAgICAgIENvbmRpdGlvbmFsCi1oaSBsaW5rIGVybGFuZ0Jvb2xlYW4gICAgICAgIEJvb2xlYW4KLWhpIGxpbmsgZXJsYW5nQXRvbSAgICAgICAgICAgQ29uc3RhbnQKLWhpIGxpbmsgZXJsYW5nUmVjb3JkICAgICAgICAgU3RydWN0dXJlCi1oaSBsaW5rIGVybGFuZ0ludGVnZXIgICAgICAgIE51bWJlcgotaGkgbGluayBlcmxhbmdGbG9hdCAgICAgICAgICBOdW1iZXIKLWhpIGxpbmsgZXJsYW5nRmxvYXQgICAgICAgICAgTnVtYmVyCi1oaSBsaW5rIGVybGFuZ0Zsb2F0ICAgICAgICAgIE51bWJlcgotaGkgbGluayBlcmxhbmdGbG9hdCAgICAgICAgICBOdW1iZXIKLWhpIGxpbmsgZXJsYW5nSGV4ICAgICAgICAgICAgTnVtYmVyCi1oaSBsaW5rIGVybGFuZ0Z1biAgICAgICAgICAgIEtleXdvcmQKLWhpIGxpbmsgZXJsYW5nTGlzdCAgICAgICAgICAgRGVsaW1pdGVyCi1oaSBsaW5rIGVybGFuZ1R1cGxlICAgICAgICAgIERlbGltaXRlcgotaGkgbGluayBlcmxhbmdCaW5hcnkgICAgICAgICBLZXl3b3JkCi1oaSBsaW5rIGVybGFuZ0JpdFZhcmlhYmxlICAgIElkZW50aWZpZXIKLWhpIGxpbmsgZXJsYW5nQml0VHlwZSAgICAgICAgVHlwZQotaGkgbGluayBlcmxhbmdUeXBlICAgICAgICAgICBUeXBlCi1oaSBsaW5rIGVybGFuZ0JpdFNpemUgICAgICAgIE51bWJlcgotCi0iIE9wdGlvbmFsIGhpZ2hsaWdodGluZwotaWYgZzplcmxhbmdfaGlnaGxpZ2h0X2JpZgotCWhpIGxpbmsgZXJsYW5nQklGICAgIEtleXdvcmQKLQloaSBsaW5rIGVybGFuZ0dCSUYgICBLZXl3b3JkCitpZiB2ZXJzaW9uID49IDYwMAorICBzZXRsb2NhbCBpc2tleXdvcmQrPSQsQC1ACiBlbmRpZgorCisiIENvbW1lbnRzCitzeW4gbWF0Y2ggZXJsYW5nQ29tbWVudCAgICAgICAgICAgICAnJS4qJCcgY29udGFpbnM9ZXJsYW5nQ29tbWVudEFubm90YXRpb24sZXJsYW5nVG9kbworc3luIG1hdGNoIGVybGFuZ0NvbW1lbnRBbm5vdGF0aW9uICAgJyBcQDw9QFwlKGNsZWFyXHxkb2NmaWxlXHxlbmRcfGhlYWRlcmZpbGVcfHRvZG9cfFRPRE9cfHR5cGVcfGF1dGhvclx8Y29weXJpZ2h0XHxkb2NcfHJlZmVyZW5jZVx8c2VlXHxzaW5jZVx8dGl0bGVcfHZlcnNpb25cfGRlcHJlY2F0ZWRcfGhpZGRlblx8cHJpdmF0ZVx8ZXF1aXZcfHNwZWNcfHRocm93c1wpJyBjb250YWluZWQKK3N5biBtYXRjaCBlcmxhbmdDb21tZW50QW5ub3RhdGlvbiAgIC9gW14nXSonLyBjb250YWluZWQKK3N5biBrZXl3b3JkIGVybGFuZ1RvZG8gICAgICAgICAgICAgIFRPRE8gRklYTUUgWFhYIGNvbnRhaW5lZAorCisiIE51bWJlcnMgKG1pbmltdW0gYmFzZSBpcyAyLCBtYXhpbXVtIGlzIDM2LikKK3N5biBtYXRjaCAgIGVybGFuZ051bWJlckludGVnZXIgICAgICdcPFxkXCtcPicKK3N5biBtYXRjaCAgIGVybGFuZ051bWJlckludGVnZXIgICAgICdcPFwlKFsyLTldXHxbMTJdXGRcfDNbMC02XVwpXCsjW1s6YWxudW06XV1cK1w+Jworc3luIG1hdGNoICAgZXJsYW5nTnVtYmVyRmxvYXQgICAgICAgJ1w8XGRcK1wuXGRcK1wlKFtlRV1bKy1dXD1cZFwrXClcPVw+JworCisiIFN0cmluZ3MsIGF0b21zLCBjaGFyYWN0ZXJzCitzeW4gcmVnaW9uICBlcmxhbmdTdHJpbmcgICAgICAgICAgICBzdGFydD0vIi8gZW5kPS8iLyBjb250YWlucz1lcmxhbmdTdHJpbmdNb2RpZmllcgorc3luIHJlZ2lvbiAgZXJsYW5nUXVvdGVkQXRvbSAgICAgICAgc3RhcnQ9LycvIGVuZD0vJy8gY29udGFpbnM9ZXJsYW5nUXVvdGVkQXRvbU1vZGlmaWVyCitzeW4gbWF0Y2ggICBlcmxhbmdTdHJpbmdNb2RpZmllciAgICAgJ1x+XGFcfFxcXCUoXG9cezEsM31cfHhceFx4XHx4e1x4XCt9XHxcXi5cfC5cKScgY29udGFpbmVkCitzeW4gbWF0Y2ggICBlcmxhbmdRdW90ZWRBdG9tTW9kaWZpZXIgJ1x+XGFcfFxcXCUoXG9cezEsM31cfHhceFx4XHx4e1x4XCt9XHxcXi5cfC5cKScgY29udGFpbmVkCitzeW4gbWF0Y2ggICBlcmxhbmdNb2RpZmllciAgICAgICAgICAgJ1wkXCUoW15cXF1cfFxcXCUoXG9cezEsM31cfHhceFx4XHx4e1x4XCt9XHxcXi5cfC5cKVwpJworCisiIE9wZXJhdG9ycworc3luIG1hdGNoICAgZXJsYW5nT3BlcmF0b3IgICAgICAgICAgJz09XHw9Oj1cfC89XHw9Lz1cfDxcfD08XHw+XHw+PVx8KytcfC0tXHw9XHwhXHw8LVx8K1x8LVx8XCpcfFwvJworc3luIGtleXdvcmQgZXJsYW5nT3BlcmF0b3IgICAgICAgICAgZGl2IHJlbSBvciB4b3IgYm9yIGJ4b3IgYnNsIGJzciBhbmQgYmFuZCBub3QgYm5vdCBhbmRhbHNvIG9yZWxzZQorCisiIFNlcGFyYXRvcnMKK3N5biBtYXRjaCBlcmxhbmdTZXBhcmF0b3IgICAgICAgICAgICcoXHwpXHx7XHx9XHxcW1x8XVx8fFx8fHxcfDtcfCxcfD9cfCMnCitzeW4gbWF0Y2ggZXJsYW5nUmlnaHRBcnJvdyAgICAgICAgICAnLT4nCisKKyIgRnVuY3Rpb25zIGNhbGwKK3N5biBtYXRjaCAgIGVybGFuZ0ZDYWxsICAgICAgICAgICAgICdcPFwlKFxhW1s6YWxudW06XUBdKlxzKlwuXHMqXCkqXGFbWzphbG51bTpdQF0qXHMqOlxzKlxhW1s6YWxudW06XUBdKlw+JworCisiIENvbnN0YW50cyBhbmQgRGlyZWN0aXZlcworc3luIG1hdGNoICAgZXJsYW5nRGlyZWN0aXZlICAgICAgICAgJy1cJShiZWhhdmlvdXJcfGJlaGF2aW9yXHxjb21waWxlXHxkZWZpbmVcfGVsc2VcfGVuZGlmXHxleHBvcnRcfGZpbGVcfGlmZGVmXHxpZm5kZWZcfGltcG9ydFx8aW5jbHVkZV9saWJcfGluY2x1ZGVcfG1vZHVsZVx8cmVjb3JkXHx1bmRlZlx8YXV0aG9yXHxjb3B5cmlnaHRcfGRvY1x8dnNuXHxvbl9sb2FkXHxleHBvcnRfdHlwZVwpXD4nCisKKyIgS2V5d29yZHMKK3N5biBrZXl3b3JkIGVybGFuZ0tleXdvcmQgICAgICAgICAgIGFmdGVyIGJlZ2luIGNhc2UgY2F0Y2ggY29uZCBlbmQgZnVuIGlmIGxldCBvZiBxdWVyeSByZWNlaXZlIHdoZW4gdHJ5CitzeW4ga2V5d29yZCBlcmxhbmdFeHRyYSAgICAgICAgICAgICB0cnVlIGZhbHNlCisKKworaWYgIWV4aXN0cygiZzplcmxhbmdfaGlnaGxpZ2h0X2JpZnMiKSB8fCBnOmVybGFuZ19oaWdobGlnaHRfYmlmcyA9PSAxCisKKyAgIiBidWlsZC1pbi1mdW5jdGlvbnMgKEJJRnMpCisgIHN5biBrZXl3b3JkIGVybGFuZ0JJRiAgICAgICAgYWJzIGFsaXZlIGFwcGx5IGF0b21fdG9fYmluYXJ5IGF0b21fdG9fbGlzdCBiaW5hcnlfcGFydCBiaW5hcnlfdG9fYXRvbSBiaW5hcnlfdG9fZXhpc3RpbmdfYXRvbSBiaW5hcnlfdG9fZmxvYXQgYmluYXJ5X3RvX2ludGVnZXIgYml0c3RyaW5nX3RvX2xpc3QgYmluYXJ5X3RvX2xpc3QgYmluYXJ5X3RvX3Rlcm0gYml0X3NpemUgYnl0ZV9zaXplIGNoZWNrX29sZF9jb2RlIGNoZWNrX3Byb2Nlc3NfY29kZSBjb25jYXRfYmluYXJ5IGRhdGUgZGVsZXRlX21vZHVsZSBkZW1vbml0b3IgZGlzY29ubmVjdF9ub2RlIGVsZW1lbnQgZXJhc2UgZXJyb3IgZXhpdCBmbG9hdCBmbG9hdF90b19iaW5hcnkgZmxvYXRfdG9fbGlzdCBnYXJiYWdlX2NvbGxlY3QgZ2V0IGdldF9rZXlzIGdyb3VwX2xlYWRlciBoYWx0IGhkIGludGVnZXJfdG9fYmluYXJ5IGludGVnZXJfdG9fbGlzdCBpb2xpc3RfdG9fYmluYXJ5IGlvbGlzdF9zaXplIGlzX2FsaXZlIGlzX2F0b20gaXNfYmluYXJ5IGlzX2JpdHN0cmluZyBpc19ib29sZWFuIGlzX2Zsb2F0IGlzX2Z1bmN0aW9uIGlzX2ludGVnZXIgaXNfbGlzdCBpc19udW1iZXIgaXNfcGlkIGlzX3BvcnQgaXNfcHJvY2Vzc19hbGl2ZSBpc19yZWNvcmQgaXNfcmVmZXJlbmNlIGlzX3R1cGxlIGxlbmd0aCBsaW5rIGxpc3RfdG9fYXRvbSBsaXN0X3RvX2JpbmFyeSBsaXN0X3RvX2JpdHN0cmluZyBsaXN0X3RvX2V4aXN0aW5nX2F0b20gbGlzdF90b19mbG9hdCBsaXN0X3RvX2ludGVnZXIgbGlzdF90b19waWQgbGlzdF90b190dXBsZSBsb2FkX21vZHVsZSBtYWtlX3JlZiBtYXggbWluIG1vZHVsZV9sb2FkZWQgbW9uaXRvciBtb25pdG9yX25vZGUgbm9kZSBub2RlcyBub3cgb3Blbl9wb3J0IHBpZF90b19saXN0IHBvcnRfY2xvc2UgcG9ydF9jb21tYW5kIHBvcnRfY29ubmVjdCBwcmVfbG9hZGVkIHByb2Nlc3NfZmxhZyBwcm9jZXNzX2ZsYWcgcHJvY2Vzc19pbmZvIHByb2Nlc3MgcHVyZ2VfbW9kdWxlIHB1dCByZWdpc3RlciByZWdpc3RlcmVkIHJvdW5kIHNlbGYgc2V0ZWxlbWVudCBzaXplIHNwYXduIHNwYXduX2xpbmsgc3Bhd25fbW9uaXRvciBzcGF3bl9vcHQgc3BsaXRfYmluYXJ5IHN0YXRpc3RpY3MgdGVybV90b19iaW5hcnkgdGhyb3cgdGltZSB0bCB0cnVuYyB0dXBsZV9zaXplIHR1cGxlX3RvX2xpc3QgdW5saW5rIHVucmVnaXN0ZXIgd2hlcmVpcworCitlbmRpZgorCisKK2lmIGV4aXN0cygiZzplcmxhbmdfaGlnaGxpZ2h0X3NwZWNpYWxfYXRvbXMiKSAmJiBnOmVybGFuZ19oaWdobGlnaHRfc3BlY2lhbF9hdG9tcyA9PSAxCisKKyAgIiBQcm9jZXNzZXMKKyAgc3luIGtleXdvcmQgZXJsYW5nUHJvY2VzcyAgICBjcmVhdGlvbiBjdXJyZW50X2Z1bmN0aW9uIGRpY3Rpb25hcnkKKyAgc3luIGtleXdvcmQgZXJsYW5nUHJvY2VzcyAgICBncm91cF9sZWFkZXIgaGVhcF9zaXplIGhpZ2ggaW5pdGlhbF9jYWxsCisgIHN5biBrZXl3b3JkIGVybGFuZ1Byb2Nlc3MgICAgbGlua2VkIGxvdyBtZW1vcnlfaW5fdXNlIG1lc3NhZ2VfcXVldWUKKyAgc3luIGtleXdvcmQgZXJsYW5nUHJvY2VzcyAgICBuZXRfa2VybmVsIG5vZGUgbm9ybWFsIHByaW9yaXR5CisgIHN5biBrZXl3b3JkIGVybGFuZ1Byb2Nlc3MgICAgcmVkdWN0aW9ucyByZWdpc3RlcmVkX25hbWUgcnVubmFibGUKKyAgc3luIGtleXdvcmQgZXJsYW5nUHJvY2VzcyAgICBydW5uaW5nIHN0YWNrX3RyYWNlIHN0YXR1cyB0aW1lcgorICBzeW4ga2V5d29yZCBlcmxhbmdQcm9jZXNzICAgIHRyYXBfZXhpdCB3YWl0aW5nCisKKyAgIiBQb3J0cworICBzeW4ga2V5d29yZCBlcmxhbmdQb3J0ICAgICAgIGNvbW1hbmQgY291bnRfaW4gY291bnRfb3V0IGNyZWF0aW9uIGluCisgIHN5biBrZXl3b3JkIGVybGFuZ1BvcnQgICAgICAgaW5fZm9ybWF0IGxpbmtlZCBub2RlIG91dCBvd25lciBwYWNrZXRpbmcKKworICAiIE5vZGVzCisgIHN5biBrZXl3b3JkIGVybGFuZ05vZGUgICAgICAgYXRvbV90YWJsZXMgY29tbXVuaWNhdGluZyBjcmVhdGlvbgorICBzeW4ga2V5d29yZCBlcmxhbmdOb2RlICAgICAgIGN1cnJlbnRfZ2MgY3VycmVudF9yZWR1Y3Rpb25zIGN1cnJlbnRfcnVudGltZQorICBzeW4ga2V5d29yZCBlcmxhbmdOb2RlICAgICAgIGN1cnJlbnRfd2FsbF9jbG9jayBkaXN0cmlidXRpb25fcG9ydAorICBzeW4ga2V5d29yZCBlcmxhbmdOb2RlICAgICAgIGVudHJ5X3BvaW50cyBlcnJvcl9oYW5kbGVyIGZyaWVuZHMKKyAgc3luIGtleXdvcmQgZXJsYW5nTm9kZSAgICAgICBnYXJiYWdlX2NvbGxlY3Rpb24gbWFnaWNfY29va2llIG1hZ2ljX2Nvb2tpZXMKKyAgc3luIGtleXdvcmQgZXJsYW5nTm9kZSAgICAgICBtb2R1bGVfdGFibGUgbW9uaXRvcmVkX25vZGVzIG5hbWUgbmV4dF9yZWYKKyAgc3luIGtleXdvcmQgZXJsYW5nTm9kZSAgICAgICBwb3J0cyBwcmVsb2FkZWQgcHJvY2Vzc2VzIHJlZHVjdGlvbnMKKyAgc3luIGtleXdvcmQgZXJsYW5nTm9kZSAgICAgICByZWZfc3RhdGUgcmVnaXN0cnkgcnVudGltZSB3YWxsX2Nsb2NrCisKKyAgIiBSZXNlcnZlZAorICBzeW4ga2V5d29yZCBlcmxhbmdSZXNlcnZlZCAgIGFwcGx5X2xhbWJkYSBtb2R1bGVfaW5mbyBtb2R1bGVfbGFtYmRhcworICBzeW4ga2V5d29yZCBlcmxhbmdSZXNlcnZlZCAgIHJlY29yZCByZWNvcmRfaW5kZXggcmVjb3JkX2luZm8KKworICAiIEV4dHJhcworICBzeW4ga2V5d29yZCBlcmxhbmdFeHRyYSAgICAgIGJhZGFyZyBub2Nvb2tpZQorCisgICIgU2lnbmFscworICBzeW4ga2V5d29yZCBlcmxhbmdTaWduYWwgICAgIGJhZHNpZyBraWxsIGtpbGxlZCBleGl0IG5vcm1hbAorZW5kaWYKKworIiBTeW5jIGF0IHRoZSBiZWdpbm5pbmcgb2YgZnVuY3Rpb25zOiBpZiB0aGlzIGlzIG5vdCB1c2VkLCBtdWx0aWxpbmUgc3RyaW5nCisiIGFyZSBub3QgYWx3YXlzIHJlY29nbml6ZWQKK3N5biBzeW5jIG1hdGNoIGVybGFuZ1N5bmMgZ3JvdXBoZXJlIE5PTkUgIl5bYS16XVxzKigiCisKKyIgRGVmaW5lIHRoZSBkZWZhdWx0IGhpZ2hsaWdodGluZy4KKyIgRm9yIHZlcnNpb24gNS43IGFuZCBlYXJsaWVyOiBvbmx5IHdoZW4gbm90IGRvbmUgYWxyZWFkeQorIiBGb3IgdmVyc2lvbiA1LjggYW5kIGxhdGVyOiBvbmx5IHdoZW4gYW4gaXRlbSBkb2Vzbid0IGhhdmUgaGlnaGxpZ2h0aW5nIHlldAoraWYgdmVyc2lvbiA+PSA1MDggfHwgIWV4aXN0cyAoImRpZF9lcmxhbmdfaW5pdHMiKQorICBpZiB2ZXJzaW9uIDwgNTA4CisgICAgbGV0IGRpZF9lcmxhbmdfaW5pdHMgPSAxCisgICAgY29tbWFuZCAtbmFyZ3M9KyBIaUxpbmsgaGkgbGluayA8YXJncz4KKyAgZWxzZQorICAgIGNvbW1hbmQgLW5hcmdzPSsgSGlMaW5rIGhpIGRlZiBsaW5rIDxhcmdzPgorICBlbmRpZgorCisgICIgZXJsYW5nX2NoYXJhY3RlcnMKKyAgSGlMaW5rIGVybGFuZ0NvbW1lbnQgQ29tbWVudAorICBIaUxpbmsgZXJsYW5nQ29tbWVudEFubm90YXRpb24gU3BlY2lhbAorICBIaUxpbmsgZXJsYW5nVG9kbyBUb2RvCisgIEhpTGluayBlcmxhbmdTZXBhcmF0b3IgTm9ybWFsCisgIEhpTGluayBlcmxhbmdPcGVyYXRvciBPcGVyYXRvcgorICBIaUxpbmsgZXJsYW5nUmlnaHRBcnJvdyBPcGVyYXRvcgorCisgIEhpTGluayBlcmxhbmdTdGFydFN0cmluZyBTdHJpbmcKKyAgSGlMaW5rIGVybGFuZ1N0cmluZyBTdHJpbmcKKyAgSGlMaW5rIGVybGFuZ1N0cmluZ01vZGlmaWVyIFNwZWNpYWwKKworICBIaUxpbmsgZXJsYW5nU3RhcnRRdW90ZWRBdG9tIFR5cGUKKyAgSGlMaW5rIGVybGFuZ1F1b3RlZEF0b20gVHlwZQorICBIaUxpbmsgZXJsYW5nUXVvdGVkQXRvbU1vZGlmaWVyIFNwZWNpYWwKKworICBIaUxpbmsgZXJsYW5nTnVtYmVySW50ZWdlciBOdW1iZXIKKyAgSGlMaW5rIGVybGFuZ051bWJlckZsb2F0IEZsb2F0CisgIEhpTGluayBlcmxhbmdOdW1iZXJIZXggTnVtYmVyCisKKyAgSGlMaW5rIGVybGFuZ01vZGlmaWVyIFNwZWNpYWwKKworICAiIGVybGFuZ19mdW5jdGlvbnMKKyAgSGlMaW5rIGVybGFuZ0ZDYWxsIEZ1bmN0aW9uCisgIEhpTGluayBlcmxhbmdCSUYgRnVuY3Rpb24KKworICAiIGVybGFuZ19rZXl3b3JkcworICBIaUxpbmsgZXJsYW5nRGlyZWN0aXZlIFR5cGUKKyAgSGlMaW5rIGVybGFuZ0tleXdvcmQgS2V5d29yZAorICBIaUxpbmsgZXJsYW5nUHJvY2VzcyBTcGVjaWFsCisgIEhpTGluayBlcmxhbmdQb3J0IFNwZWNpYWwKKyAgSGlMaW5rIGVybGFuZ05vZGUgU3BlY2lhbAorICBIaUxpbmsgZXJsYW5nUmVzZXJ2ZWQgU3RhdGVtZW50CisgIEhpTGluayBlcmxhbmdFeHRyYSBTdGF0ZW1lbnQKKyAgSGlMaW5rIGVybGFuZ1NpZ25hbCBTdGF0ZW1lbnQKKworICBkZWxjb21tYW5kIEhpTGluaworZW5kaWYKKworCitsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJlcmxhbmciCisKKyIgdmltOiBzdz0yIGV0CmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9zZ21sbG54LnZpbSBiL3J1bnRpbWUvc3ludGF4L3NnbWxsbngudmltCmluZGV4IDk5ZTZlYTIuLjI4MjI0ZjYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3NnbWxsbngudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3NnbWxsbngudmltCkBAIC0xLDggKzEsNyBAQAogIiBWaW0gc3ludGF4IGZpbGUKICIgTGFuZ3VhZ2U6CVNHTUwtbGludXhkb2MgKHN1cHBvcnRlZCBieSBvbGQgc2dtbHRvb2xzLTEueCkKLSIJCShmb3IgbW9yZSBpbmZvcm1hdGlvbiwgdmlzaXQgd3d3LnNnbWx0b29scy5vcmcpCiAiIE1haW50YWluZXI6CVN1bmdIeXVuIE5hbSA8Z293ZW9sQGdtYWlsLmNvbT4KLSIgTGFzdCBDaGFuZ2U6CTIwMDggU2VwIDE3CisiIExhc3QgQ2hhbmdlOgkyMDEzIE1heSAxMwogCiAiIEZvciB2ZXJzaW9uIDUueDogQ2xlYXIgYWxsIHN5bnRheCBpdGVtcwogIiBGb3IgdmVyc2lvbiA2Lng6IFF1aXQgd2hlbiBhIHN5bnRheCBmaWxlIHdhcyBhbHJlYWR5IGxvYWRlZApAQCAtMjksNyArMjgsNyBAQAogc3luIGtleXdvcmQgc2dtbGxueFRhZ05hbWUgY29udGFpbmVkIGFydGljbGUgYXV0aG9yIGRhdGUgdG9jIHRpdGxlIHNlY3QgdmVyYgogc3luIGtleXdvcmQgc2dtbGxueFRhZ05hbWUgY29udGFpbmVkIGFic3RyYWN0IHRzY3JlZW4gcCBpdGVtaXplIGl0ZW0gZW51bQogc3luIGtleXdvcmQgc2dtbGxueFRhZ05hbWUgY29udGFpbmVkIGRlc2NyaXAgcXVvdGUgaHRtbHVybCBjb2RlIHJlZgotc3luIGtleXdvcmQgc2dtbGxueFRhZ05hbWUgY29udGFpbmVkIHR0IHRhZyBiZgorc3luIGtleXdvcmQgc2dtbGxueFRhZ05hbWUgY29udGFpbmVkIHR0IHRhZyBiZiBpdCB1cmwKIHN5biBtYXRjaCAgIHNnbWxsbnhUYWdOYW1lIGNvbnRhaW5lZCAic2VjdFxkXCsiCiAKICIgQ29tbWVudHMKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L3Npc3UudmltIGIvcnVudGltZS9zeW50YXgvc2lzdS52aW0KaW5kZXggNDU0NWVlOC4uMjNkNzMyNSAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvc2lzdS52aW0KKysrIGIvcnVudGltZS9zeW50YXgvc2lzdS52aW0KQEAgLTEsOCArMSw4IEBACiAiIFNpU1UgVmltIHN5bnRheCBmaWxlCiAiIFNpU1UgTWFpbnRhaW5lcjogUmFscGggQW1pc3NhaCA8cmFscGhAYW1pc3NhaC5jb20+Ci0iIFNpU1UgTWFya3VwOiAgICAgU2lTVSAoc2lzdS0zLjEuMCkKLSIgTGFzdCBDaGFuZ2U6ICAgICAyMDExLTEwLTAzCi0iIFVSTDogICAgICAgICAgICAgPGh0dHA6Ly9naXQuc2lzdWRvYy5vcmcvP3A9Y29kZS9zaXN1LmdpdDthPWJsb2I7Zj1kYXRhL3Npc3UvdjMvY29uZi9lZGl0b3Itc3ludGF4LWV0Yy92aW0vc3ludGF4L3Npc3UudmltO2hiPUhFQUQ+CisiIFNpU1UgTWFya3VwOiAgICAgU2lTVSAoc2lzdS00LjAuOSkKKyIgTGFzdCBDaGFuZ2U6ICAgICAyMDEzLTAyLTIyCisiIFVSTCAoc2lzdS00LjEuMCk6IDxodHRwOi8vZ2l0LnNpc3Vkb2Mub3JnLz9wPWNvZGUvc2lzdS5naXQ7YT1ibG9iO2Y9ZGF0YS9zaXN1L2NvbmYvZWRpdG9yLXN5bnRheC1ldGMvdmltL3N5bnRheC9zaXN1LnZpbTtoYj1IRUFEPgogIihvcmlnaW5hbGx5IGxvb2tlZCBhdCBSdWJ5IFZpbSBieSBNaXJrbyBOYXNhdG8pCiAKIGlmIHZlcnNpb24gPCA2MDAKQEAgLTIwLDE0ICsyMCw5IEBACiAiJSAiTWFya2VycyBJZGVudGlmaWVyczoKIGlmICFleGlzdHMoInNpc3Vfbm9faWRlbnRpZmllcnMiKQogICBzeW4gbWF0Y2ggICBzaXN1X21hcmtfZW5kbm90ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXH5eIgotICBzeW4gbWF0Y2ggICBzaXN1X2JyZWFrICAgICAgICAgICAgICAgY29udGFpbnM9QE5vU3BlbGwgICAgICAgICAgICAgICAgICAiIFxcXFxcKCBcfCRcKSIKLSAgc3luIG1hdGNoICAgc2lzdV9icmVhayAgICAgICAgICAgICAgIGNvbnRhaW5zPUBOb1NwZWxsICAgICAgICAgICAgICAgICAgIjxicj5cfDxiciAvPiIKLSAgc3luIG1hdGNoICAgc2lzdV9jb250cm9sICAgICAgICAgICAgIGNvbnRhaW5zPUBOb1NwZWxsICAgICAgICAgICAgICAgICAgIl48OnBbYm5dPlxzKiQiCi0gInN5biBtYXRjaCAgIHNpc3VfY29udHJvbCAgICAgICAgICAgICBjb250YWlucz1ATm9TcGVsbCAgICAgICAgICAgICAgICAgICJePFwoYnJcKVw/OlwocGdcfHBnblx8cG5cKT5ccyokIgotICJzeW4gbWF0Y2ggICBzaXN1X2NvbnRyb2wgICAgICAgICAgICAgY29udGFpbnM9QE5vU3BlbGwgICAgICAgICAgICAgICAgICAiXlxbXChiclwpXD86XChwZ1x8cGduXHxwblwpXF1ccyokIgorICBzeW4gbWF0Y2ggICBzaXN1X2JyZWFrICAgICAgICAgICAgICAgY29udGFpbnM9QE5vU3BlbGwgICAgICAgICAgICAgICAgICAiIFxcXFxcKCBcfCRcKVx8PGJyPlx8PGJyIC8+IgorICBzeW4gbWF0Y2ggICBzaXN1X2NvbnRyb2wgICAgICAgICAgICAgY29udGFpbnM9QE5vU3BlbGwgICAgICAgICAgICAgICAgICAiXlwoLVxcXFwtXHw9XFxcXD1cfC1cLlwuLVx8PDpwW2JuXT5cKVxzKiQiCiAgIHN5biBtYXRjaCAgIHNpc3VfY29udHJvbCAgICAgICAgICAgICBjb250YWlucz1ATm9TcGVsbCAgICAgICAgICAgICAgICAgICJePDpcKGJvXHwtLS1cKT5ccyokIgotICJzeW4gbWF0Y2ggICBzaXN1X2NvbnRyb2wgICAgICAgICAgICAgY29udGFpbnM9QE5vU3BlbGwgICAgICAgICAgICAgICAgICAiXjxcKGJyXClcPzpcKHByXHxvXCk+XHMqJCIKLSAic3luIG1hdGNoICAgc2lzdV9jb250cm9sICAgICAgICAgICAgIGNvbnRhaW5zPUBOb1NwZWxsICAgICAgICAgICAgICAgICAgIl5cW1woYnJcKVw/OlwocHJcfG9cKVxdXHMqJCIKICAgc3luIG1hdGNoICAgc2lzdV9tYXJrdGFpbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlt+LV0jIgogICBzeW4gbWF0Y2ggICBzaXN1X2NvbnRyb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXCIiCiAgIHN5biBtYXRjaCAgIHNpc3VfdW5kZXJsaW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcKF5cfCBcKV9bYS16QS1aMC05XVwrX1woWyAuLF1cfCRcKSIKQEAgLTQzLDExICszOCwxMiBAQAogICBzeW4gbWF0Y2ggICBzaXN1X3N1Yl9oZWFkZXJfdGl0bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlxzXCs6XChzdWJ0aXRsZVx8c2hvcnRcfGVkaXRpb25cfGxhbmd1YWdlXHxsYW5nX2NoYXJcfG5vdGVcKTpccyIgImdyb3VwPXNpc3VfaGVhZGVyX2NvbnRlbnQKICAgc3luIG1hdGNoICAgc2lzdV9zdWJfaGVhZGVyX2NyZWF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl5cc1wrOlwoYXV0aG9yXHxlZGl0b3JcfGNvbnRyaWJ1dG9yXHxpbGx1c3RyYXRvclx8cGhvdG9ncmFwaGVyXHx0cmFuc2xhdG9yXHxkaWdpdGl6ZWRfYnlcfHByZXBhcmVkX2J5XHxhdWRpb1x8dmlkZW9cKTpccyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAmaG9uICZpbnN0aXR1dGlvbgogICBzeW4gbWF0Y2ggICBzaXN1X3N1Yl9oZWFkZXJfcmlnaHRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlxzXCs6XChjb3B5cmlnaHRcfHRleHRcfHRyYW5zbGF0aW9uXHxpbGx1c3RyYXRpb25zXHxwaG90b2dyYXBoc1x8cHJlcGFyYXRpb25cfGRpZ2l0aXphdGlvblx8YXVkaW9cfHZpZGVvXHxsaWNlbnNlXHxhbGxcKTpccyIgICAgICAgICAgICAgICAgICAgIiBhY2Nlc3NfcmlnaHRzIGxpY2Vuc2UKLSAgc3luIG1hdGNoICAgc2lzdV9zdWJfaGVhZGVyX2NsYXNzaWZ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl5cc1wrOlwodG9waWNfcmVnaXN0ZXJcfGNvdmVyYWdlXHxmb3JtYXRcfGlkZW50aWZpZXJcfGtleXdvcmRzXHxyZWxhdGlvblx8c3ViamVjdFx8dHlwZVx8ZGV3ZXlcfGxvY1x8b2NsY1x8cGdcfGlzYm5cKTpccyIKLSAgc3luIG1hdGNoICAgc2lzdV9zdWJfaGVhZGVyX2RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlxzXCs6XChhZGRlZF90b19zaXRlXHxhdmFpbGFibGVcfGNyZWF0ZWRcfGlzc3VlZFx8bW9kaWZpZWRcfHB1Ymxpc2hlZFx8dmFsaWRcfHRyYW5zbGF0ZWRcfG9yaWdpbmFsX3B1YmxpY2F0aW9uXCk6XHMiCisgIHN5biBtYXRjaCAgIHNpc3Vfc3ViX2hlYWRlcl9jbGFzc2lmeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeXHNcKzpcKHRvcGljX3JlZ2lzdGVyXHxrZXl3b3Jkc1x8c3ViamVjdFx8ZGV3ZXlcfGxvY1wpOlxzIgorICBzeW4gbWF0Y2ggICBzaXN1X3N1Yl9oZWFkZXJfaWRlbnRpZmllciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlxzXCs6XChvY2xjXHxpc2JuXCk6XHMiCisgIHN5biBtYXRjaCAgIHNpc3Vfc3ViX2hlYWRlcl9kYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJeXHNcKzpcKGFkZGVkX3RvX3NpdGVcfGF2YWlsYWJsZVx8Y3JlYXRlZFx8aXNzdWVkXHxtb2RpZmllZFx8cHVibGlzaGVkXHx2YWxpZFx8dHJhbnNsYXRlZFx8b3JpZ2luYWxfcHVibGljYXRpb25cKTpccyIKICAgc3luIG1hdGNoICAgc2lzdV9zdWJfaGVhZGVyX29yaWdpbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl5cc1wrOlwocHVibGlzaGVyXHxkYXRlXHxsYW5ndWFnZVx8bGFuZ19jaGFyXHxpbnN0aXR1dGlvblx8bmF0aW9uYWxpdHlcfHNvdXJjZVwpOlxzIgotICBzeW4gbWF0Y2ggICBzaXN1X3N1Yl9oZWFkZXJfbWFrZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlxzXCs6XChoZWFkaW5nc1x8bnVtX3RvcFx8YnJlYWtzXHxsYW5ndWFnZVx8aXRhbGljc1x8Ym9sZFx8ZW1waGFzaXNcfHBsYWludGV4dF93cmFwXHx0ZXhwZGZfZm9udF9tb25vXHx0ZXhwZGZfZm9udFx8c2tpblx8c3RhbXBcfHByb21vXHxhZFx8bWFucGFnZVwpOlxzIgotICBzeW4gbWF0Y2ggICBzaXN1X3N1Yl9oZWFkZXJfbm90ZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlxzXCs6XChhYnN0cmFjdFx8Y29tbWVudFx8ZGVzY3JpcHRpb25cfGhpc3RvcnlcfHByZWZpeFx8cHJlZml4X1thYl1cfHN1ZmZpeFwpOlxzIgorICBzeW4gbWF0Y2ggICBzaXN1X3N1Yl9oZWFkZXJfbWFrZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlxzXCs6XChoZWFkaW5nc1x8bnVtX3RvcFx8YnJlYWtzXHxsYW5ndWFnZVx8aXRhbGljc1x8Ym9sZFx8ZW1waGFzaXNcfHN1YnN0aXR1dGVcfG9taXRcfHBsYWludGV4dF93cmFwXHx0ZXhwZGZfZm9udF9tb25vXHx0ZXhwZGZfZm9udFx8c3RhbXBcfHByb21vXHxhZFx8bWFucGFnZVx8aG9tZV9idXR0b25fdGV4dFx8aG9tZV9idXR0b25faW1hZ2VcfGNvdmVyX2ltYWdlXHxmb290ZXJcKTpccyIKKyAgc3luIG1hdGNoICAgc2lzdV9zdWJfaGVhZGVyX25vdGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl5cc1wrOlwoZGVzY3JpcHRpb25cfGFic3RyYWN0XHxjb21tZW50XHxjb3ZlcmFnZVx8cmVsYXRpb25cfHNvdXJjZVx8aGlzdG9yeVx8dHlwZVx8Zm9ybWF0XHxwcmVmaXhcfHByZWZpeF9bYWJdXHxzdWZmaXhcKTpccyIKIAogIiUgInNlbWFudGljIG1hcmtlcnM6IChpZ25vcmUpCiAgIHN5biBtYXRjaCAgIHNpc3Vfc2VtX21hcmtlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI7e1x8fTtbYS16Ll9dKlthLXpdIgpAQCAtODUsNiArODEsOCBAQAogc3luIHJlZ2lvbiBzaXN1X2hlYWRlcl9jb250ZW50IGNvbnRhaW5zPXNpc3VfZXJyb3Isc2lzdV9jb21tZW50LHNpc3VfYnJlYWssc2lzdV9saW5rLHNpc3Vfc3ViX2hlYWRlcl9yaWdodHMgbWF0Y2hncm91cD1zaXN1X2hlYWRlciBzdGFydD0iXltAXXJpZ2h0czpbKy1dXD9cKFxzXHxcblwpInJzPWUtMSBlbmQ9IlxuJCIKICIgY2xhc3NpZnkgZG9jdW1lbnQKIHN5biByZWdpb24gc2lzdV9oZWFkZXJfY29udGVudCBjb250YWlucz1zaXN1X2Vycm9yLHNpc3VfY29tbWVudCxzaXN1X2JyZWFrLHNpc3VfbGluayxzaXN1X3N1Yl9oZWFkZXJfY2xhc3NpZnkgbWF0Y2hncm91cD1zaXN1X2hlYWRlciBzdGFydD0iXltAXWNsYXNzaWZ5OlsrLV1cP1woXHNcfFxuXCkicnM9ZS0xIGVuZD0iXG4kIgorIiBpZGVudGlmaWVyIGRvY3VtZW50CitzeW4gcmVnaW9uIHNpc3VfaGVhZGVyX2NvbnRlbnQgY29udGFpbnM9c2lzdV9lcnJvcixzaXN1X2NvbW1lbnQsc2lzdV9icmVhayxzaXN1X2xpbmssc2lzdV9zdWJfaGVhZGVyX2lkZW50aWZpZXIgbWF0Y2hncm91cD1zaXN1X2hlYWRlciBzdGFydD0iXltAXWlkZW50aWZpZXI6WystXVw/XChcc1x8XG5cKSJycz1lLTEgZW5kPSJcbiQiCiAiIG9yaWdpbmFsIGxhbmd1YWdlIChkZXByZWNpYXRlZCkKIHN5biByZWdpb24gc2lzdV9oZWFkZXJfY29udGVudCBjb250YWlucz1zaXN1X2Vycm9yLHNpc3VfY29tbWVudCxzaXN1X2JyZWFrLHNpc3VfbGluayxzaXN1X3N1Yl9oZWFkZXJfb3JpZ2luYWwgbWF0Y2hncm91cD1zaXN1X2hlYWRlciBzdGFydD0iXltAXW9yaWdpbmFsOlsrLV1cP1woXHNcfFxuXCkicnM9ZS0xIGVuZD0iXG4kIgogIiBub3RlcwpAQCAtMjE5LDYgKzIxNyw3IEBACiBoaSBkZWYgbGluayBzaXN1X3N1Yl9oZWFkZXJfcHVibGlzaGVyICBTdGF0ZW1lbnQKIGhpIGRlZiBsaW5rIHNpc3Vfc3ViX2hlYWRlcl9yaWdodHMgICAgIFN0YXRlbWVudAogaGkgZGVmIGxpbmsgc2lzdV9zdWJfaGVhZGVyX2NsYXNzaWZ5ICAgU3RhdGVtZW50CitoaSBkZWYgbGluayBzaXN1X3N1Yl9oZWFkZXJfaWRlbnRpZmllciBTdGF0ZW1lbnQKIGhpIGRlZiBsaW5rIHNpc3Vfc3ViX2hlYWRlcl9vcmlnaW5hbCAgIFN0YXRlbWVudAogaGkgZGVmIGxpbmsgc2lzdV9zdWJfaGVhZGVyX2xpbmtzICAgICAgU3RhdGVtZW50CiBoaSBkZWYgbGluayBzaXN1X3N1Yl9oZWFkZXJfbm90ZXMgICAgICBTdGF0ZW1lbnQKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L3NxbGFueXdoZXJlLnZpbSBiL3J1bnRpbWUvc3ludGF4L3NxbGFueXdoZXJlLnZpbQppbmRleCBiMGY5MzIxLi4wNWIwNWM5IDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9zcWxhbnl3aGVyZS52aW0KKysrIGIvcnVudGltZS9zeW50YXgvc3FsYW55d2hlcmUudmltCkBAIC0xLDExICsxLDExIEBACi0KICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOiAgICBTUUwsIEFkYXB0aXZlIFNlcnZlciBBbnl3aGVyZQogIiBNYWludGFpbmVyOiAgRGF2aWQgRmlzaGJ1cm4gPGRmaXNoYnVybiBkb3QgdmltIGF0IGdtYWlsIGRvdCBjb20+Ci0iIExhc3QgQ2hhbmdlOiAyMDEyIEphbiAyMwotIiBWZXJzaW9uOiAgICAgMTIuMC4xCisiIExhc3QgQ2hhbmdlOiAyMDEzIE1heSAxMworIiBWZXJzaW9uOiAgICAgMTYuMC4wCiAKLSIgRGVzY3JpcHRpb246IFVwZGF0ZWQgdG8gQWRhcHRpdmUgU2VydmVyIEFueXdoZXJlIDEyLjAuMSAoaW5jbHVkaW5nIHNwYXRpYWwgZGF0YSkKKyIgRGVzY3JpcHRpb246IFVwZGF0ZWQgdG8gQWRhcHRpdmUgU2VydmVyIEFueXdoZXJlIDE2LjAuMAorIiAgICAgICAgICAgICAgVXBkYXRlZCB0byBBZGFwdGl2ZSBTZXJ2ZXIgQW55d2hlcmUgMTIuMC4xIChpbmNsdWRpbmcgc3BhdGlhbCBkYXRhKQogIiAgICAgICAgICAgICAgVXBkYXRlZCB0byBBZGFwdGl2ZSBTZXJ2ZXIgQW55d2hlcmUgMTEuMC4xCiAiICAgICAgICAgICAgICBVcGRhdGVkIHRvIEFkYXB0aXZlIFNlcnZlciBBbnl3aGVyZSAxMC4wLjEKICIgICAgICAgICAgICAgIFVwZGF0ZWQgdG8gQWRhcHRpdmUgU2VydmVyIEFueXdoZXJlICA5LjAuMgpAQCAtMjcsMzMgKzI3LDM0IEBACiBzeW4ga2V5d29yZCBzcWxTcGVjaWFsICBmYWxzZSBudWxsIHRydWUKIAogIiBjb21tb24gZnVuY3Rpb25zCi1zeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgY291bnQgc3VtIGF2ZyBtaW4gbWF4IGRlYnVnX2VuZyBpc251bGwKLXN5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBncmVhdGVyIGxlc3NlciBhcmduIHN0cmluZyB5bWQgdG9kYXRlCi1zeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgdG90aW1lc3RhbXAgZGF0ZSB0b2RheSBub3cgdXRjX25vdwotc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIG51bWJlciBpZGVudGl0eSB5ZWFycyBtb250aHMgd2Vla3MgZGF5cwotc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIGhvdXJzIG1pbnV0ZXMgc2Vjb25kcyBzZWNvbmQgbWludXRlIGhvdXIKLXN5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBkYXkgbW9udGggeWVhciBkb3cgZGF0ZV9mb3JtYXQgc3Vic3RyCi1zeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgc3Vic3RyaW5nIGJ5dGVfc3Vic3RyIGxlbmd0aCBieXRlX2xlbmd0aAotc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIGRhdGFsZW5ndGggaWZudWxsIGV2YWx1YXRlIGxpc3QKLXN5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBzb3VuZGV4IHNpbWlsYXIgZGlmZmVyZW5jZSBsaWtlX3N0YXJ0Ci1zeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgbGlrZV9lbmQgcmVnZXhwX2NvbXBpbGUKLXN5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSByZWdleHBfY29tcGlsZV9wYXRpbmRleCByZW1haW5kZXIgYWJzCi1zeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgZ3JhcGhpY2FsX3BsYW4gcGxhbiBleHBsYW5hdGlvbiB1bHBsYW4KLXN5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBncmFwaGljYWxfdWxwbGFuIGxvbmdfdWxwbGFuCi1zeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgc2hvcnRfdWxwbGFuIHJld3JpdGUgd2F0Y29tc3FsCi1zeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgdHJhbnNhY3RzcWwgZGlhbGVjdCBlc3RpbWF0ZQotc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIGVzdGltYXRlX3NvdXJjZSBpbmRleF9lc3RpbWF0ZQotc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIGV4cGVyaWVuY2VfZXN0aW1hdGUgdHJhY2ViYWNrIHdzcWxfc3RhdGUKLXN5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBsYW5nX21lc3NhZ2UgZGF0ZWFkZCBkYXRlZGlmZiBkYXRlcGFydAotc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIGRhdGVuYW1lIGRheW5hbWUgbW9udGhuYW1lIHF1YXJ0ZXIKLXN5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSB0c2VxdWFsIGhleHRvaW50IGludHRvaGV4IHJhbmQgdGV4dHB0cgotc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIHJvd2lkIGdyb3VwaW5nIHN0ZGRldiB2YXJpYW5jZSByYW5rCi1zeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgZGVuc2VfcmFuayBkZW5zaXR5IHBlcmNlbnRfcmFuayB1c2VyX25hbWUKLXN5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSB1c2VyX2lkIHN0ciBzdHVmZiBjaGFyX2xlbmd0aCBudWxsaWYKLXN5biBrZXl3b3JkIHNxbEZ1bmN0aW9uCSBzb3J0a2V5IGNvbXBhcmUgdHNfaW5kZXhfc3RhdGlzdGljcwotc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIHRzX3RhYmxlX3N0YXRpc3RpY3MgaXNkYXRlIGlzbnVtZXJpYwotc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIGdldF9pZGVudGl0eSBsb29rdXAgbmV3aWQgdXVpZHRvc3RyCi1zeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgc3RydG91dWlkIHZhcmV4aXN0cworc3luIGtleXdvcmQgc3FsRnVuY3Rpb24gIGFicyBhcmduIGF2ZyBiaW50b2hleCBiaW50b3N0cgorc3luIGtleXdvcmQgc3FsRnVuY3Rpb24gIGJ5dGVfbGVuZ3RoIGJ5dGVfc3Vic3RyIGNoYXJfbGVuZ3RoCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbiAgY29tcGFyZSBjb3VudCBjb3VudF9iaWcgZGF0YWxlbmd0aCBkYXRlCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbiAgZGF0ZV9mb3JtYXQgZGF0ZWFkZCBkYXRlZGlmZiBkYXRlbmFtZQorc3luIGtleXdvcmQgc3FsRnVuY3Rpb24gIGRhdGVwYXJ0IGRheSBkYXluYW1lIGRheXMgZGVidWdfZW5nCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbiAgZGVuc2VfcmFuayBkZW5zaXR5IGRpYWxlY3QgZGlmZmVyZW5jZQorc3luIGtleXdvcmQgc3FsRnVuY3Rpb24gIGRvdyBlc3RpbWF0ZSBlc3RpbWF0ZV9zb3VyY2UgZXZhbHVhdGUKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uICBleHBlcmllbmNlX2VzdGltYXRlIGV4cGxhbmF0aW9uCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbiAgZ2V0X2lkZW50aXR5IGdyYXBoaWNhbF9wbGFuCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbiAgZ3JhcGhpY2FsX3VscGxhbiBncmVhdGVyIGdyb3VwaW5nCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbiAgaGV4dG9iaW4gaGV4dG9pbnQgaG91ciBob3VycyBpZGVudGl0eQorc3luIGtleXdvcmQgc3FsRnVuY3Rpb24gIGlmbnVsbCBpbmRleF9lc3RpbWF0ZSBpbnR0b2hleCBpc2RhdGUKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uICBpc2VuY3J5cHRlZCBpc251bGwgaXNudW1lcmljCitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbiAgbGFuZ19tZXNzYWdlIGxlbmd0aCBsZXNzZXIgbGlrZV9lbmQKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uICBsaWtlX3N0YXJ0IGxpc3QgbG9uZ191bHBsYW4gbG9va3VwIG1heAorc3luIGtleXdvcmQgc3FsRnVuY3Rpb24gIG1pbiBtaW51dGUgbWludXRlcyBtb250aCBtb250aG5hbWUKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uICBtb250aHMgbmV3aWQgbm93IG51bGxpZiBudW1iZXIKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uICBwZXJjZW50X3JhbmsgcGxhbiBxdWFydGVyIHJhbmQgcmFuaworc3luIGtleXdvcmQgc3FsRnVuY3Rpb24gIHJlZ2V4cF9jb21waWxlIHJlZ2V4cF9jb21waWxlX3BhdGluZGV4CitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbiAgcmVtYWluZGVyIHJld3JpdGUgcm93aWQgc2Vjb25kIHNlY29uZHMKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uICBzaG9ydF91bHBsYW4gc2ltaWxhciBzb3J0a2V5IHNvdW5kZXgKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uICBzdGRkZXYgc3RhY2tfdHJhY2Ugc3RyIHN0cmluZyBzdHJ0b2JpbiBzdHJ0b3V1aWQgc3R1ZmYKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uICBzdWJwYXJ0aXRpb24gc3Vic3RyIHN1YnN0cmluZyBzdW0gc3dpdGNob2Zmc2V0IHN5c2RhdGV0aW1lb2Zmc2V0CitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbiAgdGV4dHB0ciB0b2RhdGUgdG9kYXRldGltZW9mZnNldCB0b2RheSB0b3RpbWVzdGFtcCB0cmFjZWJhY2sgdHJhbnNhY3RzcWwKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uICB0c19pbmRleF9zdGF0aXN0aWNzIHRzX3RhYmxlX3N0YXRpc3RpY3MKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uICB0c2VxdWFsIHVscGxhbiB1c2VyX2lkIHVzZXJfbmFtZSB1dGNfbm93CitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbiAgdXVpZHRvc3RyIHZhcmV4aXN0cyB2YXJpYW5jZSB3YXRjb21zcWwKK3N5biBrZXl3b3JkIHNxbEZ1bmN0aW9uICB3ZWVrcyB3c3FsX3N0YXRlIHllYXIgeWVhcnMgeW1kCiAKICIgOS4wLjEgZnVuY3Rpb25zCiBzeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgYWNvcyBhc2luIGF0YW4gYXRuMiBjYXN0IGNlaWxpbmcgY29udmVydCBjb3MgY290CkBAIC00NzMsMzEgKzQ3NCwzNiBAQAogc3luIGtleXdvcmQgc3FsRnVuY3Rpb24gIFNUX1RvUG9seWdvbgogc3luIGtleXdvcmQgc3FsRnVuY3Rpb24gIFNUX1RvU3VyZmFjZQogCisiIEFycmF5IGZ1bmN0aW9ucyAxNi54CitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgYXJyYXkgYXJyYXlfYWdnIGFycmF5X21heF9jYXJkaW5hbGl0eSB0cmltX2FycmF5CitzeW4ga2V5d29yZCBzcWxGdW5jdGlvbgkgZXJyb3JfbGluZSBlcnJvcl9tZXNzYWdlIGVycm9yX3Byb2NlZHVyZQorc3luIGtleXdvcmQgc3FsRnVuY3Rpb24JIGVycm9yX3NxbGNvZGUgZXJyb3Jfc3Fsc3RhdGUgZXJyb3Jfc3RhY2tfdHJhY2UKKwogCiAiIGtleXdvcmRzCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBhYnNvbHV0ZSBhY2NlbnQgYWN0aW9uIGFjdGl2ZSBhZGQgYWRkcmVzcyBhZG1pbiBhZXNfZGVjcnlwdAotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgYWZ0ZXIgYWdncmVnYXRlIGFsZ29yaXRobSBhbGxvd19kdXBfcm93IGFsbG93IGFsbG93ZWQgYWx0ZXIgCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBhbmQgYW5ndWxhciBhbnNpX3N1YnN0cmluZyBhbnkgYXMgYXBwZW5kIGFwcGx5IAotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgYXJiaXRlciBhc2MgYXNjaWkgYXNlCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBhc3NpZ24gYXQgYXRhbjIgYXRvbWljIGF0dGVuZGVkIAotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgYXVkaXQgYXVkaXRpbmcgYXV0aG9yaXphdGlvbiBheGlzCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBhYnNvbHV0ZSBhY2NlbnQgYWNjZXNzIGFjY291bnQgYWN0aW9uIGFjdGl2ZSBhY3RpdmF0ZSBhZGQgYWRkcmVzcyBhZG1pbgorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgYWVzX2RlY3J5cHQgYWZ0ZXIgYWdncmVnYXRlIGFsZ29yaXRobSBhbGxvd19kdXBfcm93IGFsbG93IGFsbG93ZWQgYWx0ZXIKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGFsd2F5cyBhbmQgYW5ndWxhciBhbnNpX3N1YnN0cmluZyBhbnkgYXMgYXBwZW5kIGFwcGx5CitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBhcmJpdGVyIGFycmF5IGFzYyBhc2NpaSBhc2UKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGFzc2lnbiBhdCBhdGFuMiBhdG9taWMgYXR0ZW5kZWQKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGF1ZGl0IGF1ZGl0aW5nIGF1dGhlbnRpY2F0aW9uIGF1dGhvcml6YXRpb24gYXhpcwogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgYXV0b2luY3JlbWVudCBhdXRvc3RvcCBiYXRjaCBiY3AgYmVmb3JlCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBiZXR3ZWVuIGJpdF9hbmQgYml0X2xlbmd0aCBiaXRfb3IgYml0X3N1YnN0ciBiaXRfeG9yCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBibGFuayBibGFua3MgYmxvY2sKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGJvdGggYm90dG9tIHVuYm91bmRlZCBicmVha2VyIGJ1ZmZlcnBvb2wKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGJ1aWxkIGJ1bGsgYnkgYnl0ZSBieXRlcyBjYWNoZSBjYWxpYnJhdGUgY2FsaWJyYXRpb24KLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGNhbmNlbCBjYXBhYmlsaXR5IGNhc2NhZGUgY2FzdAotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgY2F0YWxvZyBjZWlsIGNoYW5nZSBjaGFuZ2VzIGNoYXIgY2hhcl9jb252ZXJ0IGNoZWNrIGNoZWNrc3VtCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBjbGFzcyBjbGFzc2VzIGNsaWVudCBjbXAKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGNhbmNlbCBjYXBhYmlsaXR5IGNhcmRpbmFsaXR5IGNhc2NhZGUgY2FzdAorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgY2F0YWxvZyBjYXRjaCBjZWlsIGNoYW5nZSBjaGFuZ2VzIGNoYXIgY2hhcl9jb252ZXJ0CitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBjaGVjayBjaGVja3BvaW50bG9nIGNoZWNrc3VtIGNsYXNzIGNsYXNzZXMgY2xpZW50IGNtcAogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgY2x1c3RlciBjbHVzdGVyZWQgY29sbGF0aW9uCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBjb2x1bW4gY29sdW1ucwotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgY29tbWFuZCBjb21tZW50cyBjb21taXR0ZWQgY29tcGFyaXNvbnMKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGNvbW1hbmQgY29tbWVudHMgY29tbWl0dGVkIGNvbW1pdGlkIGNvbXBhcmlzb25zCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBjb21wYXRpYmxlIGNvbXBvbmVudCBjb21wcmVzc2VkIGNvbXB1dGUgY29tcHV0ZXMKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGNvbmNhdCBjb25maWd1cmF0aW9uIGNvbmZpcm0gY29uZmxpY3QgY29ubmVjdGlvbgogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgY29uc29sZSBjb25zb2xpZGF0ZSBjb25zb2xpZGF0ZWQKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGNvbnN0cmFpbnQgY29uc3RyYWludHMgY29udGVudCAKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGNvbnN0cmFpbnQgY29uc3RyYWludHMgY29udGVudAogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgY29udmVydCBjb29yZGluYXRlIGNvb3JkaW5hdG9yIGNvcHkgY291bnQgY291bnRfc2V0X2JpdHMKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGNyYyBjcmVhdGV0aW1lIGNyb3NzIGN1YmUgY3VtZV9kaXN0CitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBjcmMgY3JlYXRldGltZSBjcml0aWNhbCBjcm9zcyBjdWJlIGN1bWVfZGlzdAogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgY3VycmVudCBjdXJzb3IgZGF0YSBkYXRhIGRhdGFiYXNlCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBjdXJyZW50X3RpbWVzdGFtcCBjdXJyZW50X3VzZXIgY3ljbGUKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGRhdGFiYXNlcyBkYXRhdHlwZSBkYmEgZGJmaWxlCkBAIC01MDYsODMgKzUxMiw4NiBAQAogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgZGVmaW5lciBkZWZpbml0aW9uCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBkZWxheSBkZWxldGluZyBkZWxpbWl0ZWQgZGVwZW5kZW5jaWVzIGRlc2MKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGRlc2NyaXB0aW9uIGRldGVybWluaXN0aWMgZGlyZWN0b3J5Ci1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBkaXNhYmxlIGRpc2FibGVkIGRpc2FsbG93IGRpc3RpbmN0IGRvIGRvbWFpbiBkb3dubG9hZCBkdXBsaWNhdGUKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGRzZXRwYXNzIGR0dG0gZHluYW1pYyBlYWNoIGVhcnRoIGVkaXRwcm9jIGVqYgotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgZWxpbWluYXRpb24gZWxsaXBzb2lkCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBlbHNlIGVsc2VpZiBlbXB0eSBlbmFibGUgZW5jYXBzdWxhdGVkIGVuY3J5cHRlZCBlbmQKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGVuY29kaW5nIGVuZGlmIGVuZ2luZSBlbnZpcm9ubWVudCBlcmFzZSBlcnJvciBlc2NhcGUgZXNjYXBlcyBldmVudAorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgZGlzYWJsZSBkaXNhYmxlZCBkaXNhbGxvdyBkaXN0aW5jdCBkaXNrc2FuZGJveCBkaXNrX3NhbmRib3gKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGRuIGRvIGRvbWFpbiBkb3dubG9hZCBkdXBsaWNhdGUKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGRzZXRwYXNzIGR0dG0gZHluYW1pYyBlYWNoIGVhcnRoIGVkaXRwcm9jIGVmZmVjdGl2ZSBlamIKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGVsaW1pbmF0aW9uIGVsbGlwc29pZCBlbHNlIGVsc2VpZgorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgZW1haWwgZW1wdHkgZW5hYmxlIGVuY2Fwc3VsYXRlZCBlbmNyeXB0ZWQgZW5jcnlwdGlvbiBlbmQKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGVuY29kaW5nIGVuZGlmIGVuZ2luZSBlbnZpcm9ubWVudCBlcmFzZSBlcnJvciBlcnJvcnMgZXNjYXBlIGVzY2FwZXMgZXZlbnQKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGV2ZW50X3BhcmFtZXRlciBldmVyeSBleGNlcHRpb24gZXhjbHVkZSBleGNsdWRlZCBleGNsdXNpdmUgZXhlYwogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgZXhpc3RpbmcgZXhpc3RzIGV4cGFuZGVkIGV4cGlyeSBleHByZXNzIGV4cHJ0eXBlIGV4dGVuZGVkX3Byb3BlcnR5CiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBleHRlcm5hbCBleHRlcm5sb2dpbiBmYWN0b3IgZmFpbG92ZXIgZmFsc2UKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGZhc3RmaXJzdHJvdyBmZWF0dXJlIGZpZWxkcHJvYyBmaWxlIGZpbGVzIGZpbGxlcgogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgZmlsbGZhY3RvciBmaW5hbCBmaW5pc2ggZmlyc3QgZmlyc3Rfa2V5d29yZCBmaXJzdF92YWx1ZQogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgZmxhdHRlbmluZwotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgZm9sbG93aW5nIGZvcmNlIGZvcmVpZ24gZm9ybWF0IGZvcnhtbCBmb3J4bWxfc2VwIGZwIGZyYW1lCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBmcmVlIGZyZWVwYWdlIGZyZW5jaCBmcmVzaCBmdWxsIGZ1bmN0aW9uIAorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgZm9sbG93aW5nIGZvcmNlIGZvcmVpZ24gZm9ybWF0IGZvcmpzb24gZm9yeG1sIGZvcnhtbF9zZXAgZnAgZnJhbWUKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGZyZWUgZnJlZXBhZ2UgZnJlbmNoIGZyZXNoIGZ1bGwgZnVuY3Rpb24KIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGdiIGdlbmVyaWMgZ2V0X2JpdCBnbyBnbG9iYWwgZ3JpZAogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgZ3JvdXAgaGFuZGxlciBoYXNoIGhhdmluZyBoZWFkZXIgaGV4YWRlY2ltYWwKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGhpZGRlbiBoaWdoIGhpc3RvcnkgaGcgaG5nIGhvbGQgaG9sZGxvY2sgaG9zdAogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgaG91cnMgaHR0cF9ib2R5IGh0dHBfc2Vzc2lvbl90aW1lb3V0IGlkIGlkZW50aWZpZWQgaWRlbnRpdHkgaWdub3JlCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBpZ25vcmVfZHVwX2tleSBpZ25vcmVfZHVwX3JvdyBpbW1lZGlhdGUKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGluIGluYWN0aXYgaW5hY3RpdmUgaW5hY3Rpdml0eSBpbmNsdWRlZCBpbmNyZW1lbnQgaW5jcmVtZW50YWwKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGluZGV4IGluZGV4X2VuYWJsZWQgaW5kZXhfbHBhcmVuIGluZGV4b25seSBpbmZvCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBpbmxpbmUgaW5uZXIgaW5vdXQgaW5zZW5zaXRpdmUgaW5zZXJ0aW5nCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBpbnN0ZWFkIGludGVncmF0ZWQKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGludGVybmFsIGludGVyc2VjdGlvbiBpbnRvIGludHJvZHVjZWQgaW52ZXJzZSBpbnZva2VyIAorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgaW5kZXggaW5kZXhfZW5hYmxlZCBpbmRleF9scGFyZW4gaW5kZXhvbmx5IGluZm8gaW5mb3JtYXRpb24KK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGluaGVyaXRhbmNlIGlubGluZSBpbm5lciBpbm91dCBpbnNlbnNpdGl2ZSBpbnNlcnRpbmcKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGluc3RlYWQKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGludGVybmFsIGludGVyc2VjdGlvbiBpbnRvIGludHJvZHVjZWQgaW52ZXJzZSBpbnZva2VyCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBpcSBpcyBpc29sYXRpb24KIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGphciBqYXZhIGphdmFfbG9jYXRpb24gamF2YV9tYWluX3VzZXJpZCBqYXZhX3ZtX29wdGlvbnMKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGpjb25uZWN0IGpkayBqb2luIGtiIGtleSBrZWVwIGtlcmJlcm9zIGxhbmd1YWdlIGxhc3QKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIGpjb25uZWN0IGpkayBqb2luIGpzb24ga2Iga2V5IGtleXMga2VlcCBsYW5ndWFnZSBsYXN0CiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBsYXN0X2tleXdvcmQgbGFzdF92YWx1ZSBsYXRlcmFsIGxhdGl0dWRlCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBsZCBsZWZ0IGxlbiBsaW5lYXIgbGYgbG4gbGV2ZWwgbGlrZQotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgbGltaXQgbG9jYWwgbG9jYXRpb24gbG9nIAorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgbGQgbGRhcCBsZWZ0IGxlbiBsaW5lYXIgbGYgbG4gbGV2ZWwgbGlrZQorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgbGltaXQgbG9jYWwgbG9jYXRpb24gbG9nCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBsb2dnaW5nIGxvZ2ljYWwgbG9naW4gbG9nc2NhbiBsb25nIGxvbmdpdHVkZSBsb3cgbHJ1IGxzCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBtYWluIG1ham9yIG1hbnVhbCBtYXJrCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBtYXRjaCBtYXRjaGVkIG1hdGVyaWFsaXplZCBtYXggbWF4dmFsdWUgbWF4aW11bSBtYiBtZWFzdXJlIG1lbWJlcnNoaXAKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIG1lcmdlIG1ldGFkYXRhIG1ldGhvZHMgbWluaW11bSBtaW5vciBtaW51dGVzIG1pbnZhbHVlIG1pcnJvciAKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIG1vZGUgbW9kaWZ5IG1vbml0b3IgbW92ZSBtcnUgbXVsdGlwbGV4IAotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgbmFtZSBuYW1lZCBuYW1lc3BhY2VzIG5hdGlvbmFsIG5hdGl2ZSBuYXR1cmFsIG5ldyBuZXh0IG5leHR2YWwgCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBtYWluIG1ham9yIG1hbmFnZSBtYW51YWwgbWFyayBtYXN0ZXIKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIG1hdGNoIG1hdGNoZWQgbWF0ZXJpYWxpemVkIG1heCBtYXh2YWx1ZSBtYXhpbXVtIG1iIG1lYXN1cmUgbWVkaWFuIG1lbWJlcnNoaXAKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIG1lcmdlIG1ldGFkYXRhIG1ldGhvZHMgbWlncmF0ZSBtaW5pbXVtIG1pbm9yIG1pbnV0ZXMgbWludmFsdWUgbWlycm9yCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBtb2RlIG1vZGlmeSBtb25pdG9yIG1vdmUgbXJ1IG11bHRpcGxleAorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgbmFtZSBuYW1lZCBuYW1lc3BhY2VzIG5hdGlvbmFsIG5hdGl2ZSBuYXR1cmFsIG5ldyBuZXh0IG5leHR2YWwKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIG5ncmFtIG5vIG5vaG9sZGxvY2sgbm9sb2NrIG5vbmNsdXN0ZXJlZCBub25lIG5vcm1hbCBub3QKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIG5vdGlmeSBudWxsIG51bGxhYmxlX2NvbnN0YW50IG51bGxzIAotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgb2JqZWN0IG9lbV9zdHJpbmcgb2Ygb2ZmIG9mZmxpbmUgb2Zmc2V0IG9sYXAKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIG5vdGlmeSBudWxsIG51bGxhYmxlX2NvbnN0YW50IG51bGxzCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBvYmplY3Qgb2JqZWN0cyBvZW1fc3RyaW5nIG9mIG9mZiBvZmZsaW5lIG9mZnNldCBvbGFwCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBvbGQgb24gb25saW5lIG9ubHkgb3BlbnN0cmluZyBvcGVyYXRvcgogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgb3B0aW1pemF0aW9uIG9wdGltaXplciBvcHRpb24KLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIG9yIG9yZGVyIG9yZ2FuaXphdGlvbiBvdGhlcnMgb3V0IG91dGVyIG92ZXIKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIG9yIG9yZGVyIG9yZGluYWxpdHkgb3JnYW5pemF0aW9uIG90aGVycyBvdXQgb3V0ZXIgb3ZlciBvd25lcgogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgcGFja2FnZSBwYWNrZXRzaXplIHBhZGRpbmcgcGFnZSBwYWdlcwotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgcGFnbG9jayBwYXJhbGxlbCBwYXJhbWV0ZXIgcGFyZW50IHBhcnQgCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBwYXJ0aXRpb24gcGFydGl0aW9ucyBwYXJ0bmVyIHBhc3N3b3JkIHBhdGggcGN0ZnJlZSAKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHBlcm1zIHBsYW4gcGxhbmFyIHBvbGljeSBwb2x5Z29uIHBvcHVsYXRlIHBvcnQgcG9zdGZpbHRlciBwcmVjZWRpbmcgCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBwYWdsb2NrIHBhcmFsbGVsIHBhcmFtZXRlciBwYXJlbnQgcGFydCBwYXJ0aWFsCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBwYXJ0aXRpb24gcGFydGl0aW9ucyBwYXJ0bmVyIHBhc3N3b3JkIHBhdGggcGN0ZnJlZQorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgcGVybWlzc2lvbnMgcGVybXMgcGxhbiBwbGFuYXIgcG9saWN5IHBvbHlnb24gcG9wdWxhdGUgcG9ydCBwb3N0ZmlsdGVyIHByZWNlZGluZwogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgcHJlY2lzaW9ucHJlZmV0Y2ggcHJlZmlsdGVyIHByZWZpeCBwcmVzZXJ2ZSBwcmV2aWV3IHByZXZpb3VzCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBwcmltYXJ5IHByaW9yIHByaW9yaXR5IHByaXF0eSBwcml2YXRlIHByaXZpbGVnZXMgcHJvY2VkdXJlIHByb2ZpbGUKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIHByaW1hcnkgcHJpb3IgcHJpb3JpdHkgcHJpcXR5IHByaXZhdGUgcHJpdmlsZWdlIHByaXZpbGVnZXMgcHJvY2VkdXJlIHByb2ZpbGUgcHJvZmlsaW5nCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBwcm9wZXJ0eV9pc19jdW11bGF0aXZlIHByb3BlcnR5X2lzX251bWVyaWMgcHVibGljIHB1YmxpY2F0aW9uIHB1Ymxpc2ggcHVibGlzaGVyCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBxdWllc2NlIHF1b3RlIHF1b3RlcyByYW5nZSByZWFkY2xpZW50ZmlsZSByZWFkY29tbWl0dGVkIHJlYWRlciByZWFkZmlsZSByZWFkb25seQogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgcmVhZHBhc3QgcmVhZHVuY29tbWl0dGVkIHJlYWR3cml0ZSByZWJ1aWxkCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSByZWNlaXZlZCByZWNvbXBpbGUgcmVjb3ZlciByZWN1cnNpdmUgcmVmZXJlbmNlcwogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgcmVmZXJlbmNpbmcgcmVnZXggcmVnZXhwIHJlZ2V4cF9zdWJzdHIgcmVsYXRpdmUgcmVsb2NhdGUKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHJlbmFtZSByZXBlYXRhYmxlIHJlcGVhdGFibGVyZWFkIHJlcGxpY2F0ZSAKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIHJlbmFtZSByZXBlYXRhYmxlIHJlcGVhdGFibGVyZWFkIHJlcGxpY2F0ZSByZXBsaWNhdGlvbgogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgcmVxdWVzdHMgcmVxdWVzdF90aW1lb3V0IHJlcXVpcmVkIHJlcmVjZWl2ZSByZXNlbmQgcmVzZXJ2ZSByZXNldAogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgcmVzaXppbmcgcmVzb2x2ZSByZXNvdXJjZSByZXNwZWN0IHJlc3RhcnQKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHJlc3RyaWN0IHJlc3VsdCByZXRhaW4KLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHJldHVybnMgcmV2ZXJzZSByaWdodCByb2xlCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSByb2xsdXAgcm9vdCByb3cgcm93X251bWJlciByb3dsb2NrIHJvd3MgCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSByZXN0cmljdCByZXN1bHQgcmV0YWluIHJldHJpZXMKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIHJldHVybnMgcmV2ZXJzZSByaWdodCByb2xlIHJvbGVzCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSByb2xsdXAgcm9vdCByb3cgcm93X251bWJlciByb3dsb2NrIHJvd3Mgcm93dHlwZQogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgc2FfaW5kZXhfaGFzaCBzYV9pbnRlcm5hbF9ma192ZXJpZnkgc2FfaW50ZXJuYWxfdGVybWJyZWFrCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBzYV9vcmRlcl9wcmVzZXJ2aW5nX2hhc2ggc2Ffb3JkZXJfcHJlc2VydmluZ19oYXNoX2JpZyBzYV9vcmRlcl9wcmVzZXJ2aW5nX2hhc2hfcHJlZml4Ci1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBzY2FsZSBzY2hlZHVsZSBzY2hlbWEgc2NvcGUgc2NyaXB0ZWQgc2Nyb2xsIHNlY29uZHMgc2VjcXR5IHNlY3VyaXR5CitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBzYV9maWxlX2ZyZWVfcGFnZXMgc2FfaW50ZXJuYWxfdHlwZV9mcm9tX2NhdGFsb2cgc2FfaW50ZXJuYWxfdmFsaWRfaGFzaAorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgc2FfaW50ZXJuYWxfdmFsaWRhdGVfdmFsdWUgc2FfanNvbl9lbGVtZW50CitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBzY2FsZSBzY2hlZHVsZSBzY2hlbWEgc2NvcGUgc2NyaXB0IHNjcmlwdGVkIHNjcm9sbCBzZWFyY2ggc2Vjb25kcyBzZWNxdHkgc2VjdXJpdHkKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHNlbWkgc2VuZCBzZW5zaXRpdmUgc2VudCBzZXF1ZW5jZSBzZXJpYWxpemFibGUKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHNlcnZlciBzZXJ2ZXIgc2Vzc2lvbiBzZXRfYml0IHNldF9iaXRzIHNldHMKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIHNlcnZlciBzZXZlcml0eSBzZXNzaW9uIHNldF9iaXQgc2V0X2JpdHMgc2V0cwogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgc2hhcGVmaWxlIHNoYXJlIHNpZGUgc2ltcGxlIHNpbmNlIHNpdGUgc2l6ZSBza2lwCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBzbmFwIHNuYXBzaG90IHNvYXBoZWFkZXIgc29hcF9oZWFkZXIgCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBzbmFwIHNuYXBzaG90IHNvYXBoZWFkZXIgc29hcF9oZWFkZXIKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHNwYXRpYWwgc3BsaXQgc29tZSBzb3J0ZWRfZGF0YQogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgc3FsIHNxbGNvZGUgc3FsaWQgc3FsZmxhZ2dlciBzcWxzdGF0ZSBzcXJ0IHNxdWFyZQotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgc3RhY2tlciBzdGFsZSBzdGF0ZW1lbnQgc3RhdGlzdGljcyBzdGF0dXMgc3RkZGV2X3BvcCBzdGRkZXZfc2FtcAorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgc3RhY2tlciBzdGFsZSBzdGF0ZSBzdGF0ZW1lbnQgc3RhdGlzdGljcyBzdGF0dXMgc3RkZGV2X3BvcCBzdGRkZXZfc2FtcAogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgc3RlbW1lciBzdG9ncm91cCBzdG9wbGlzdCBzdG9yYWdlIHN0b3JlCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBzdHJpcCBzdHJpcGVzaXpla2Igc3RyaXBpbmcgc3VicGFnZXMgc3Vic2NyaWJlIHN1YnNjcmlwdGlvbgotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgc3VidHJhbnNhY3Rpb24gc3VzZXJfaWQgc3VzZXJfbmFtZSBzeW5jaHJvbml6YXRpb24KK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIHN1YnRyYW5zYWN0aW9uIHN1c2VyX2lkIHN1c2VyX25hbWUgc3VzcGVuZCBzeW5jaHJvbml6YXRpb24KIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHN5bnRheF9lcnJvciB0YWJsZSB0YWJsZXMgdGFibG9jawotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgdGFibG9ja3ggdGIgdGVtcCB0ZW1wbGF0ZSB0ZW1wb3JhcnkgdGVybSB0aGVuIHRpZXMgCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSB0aW1lem9uZSB0aW1lb3V0IHRvIHRvX2NoYXIgdG9fbmNoYXIgdG9sZXJhbmNlIHRvcAotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgdHJhY2VkX3BsYW4gdHJhY2luZwotc3luIGtleXdvcmQgc3FsS2V5d29yZAkgdHJhbnNmZXIgdHJhbnNmb3JtIHRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uYWwgdHJlYXQgdHJpZXMgCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSB0cnVlIHRzZXF1YWwgdHlwZSB0dW5lIHVuY29tbWl0dGVkIHVuY29uZGl0aW9uYWxseQorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgdGFibG9ja3ggdGFyZ2V0IHRiIHRlbXAgdGVtcGxhdGUgdGVtcG9yYXJ5IHRlcm0gdGhlbiB0aWVzCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSB0aW1lem9uZSB0aW1lb3V0IHRscyB0byB0b19jaGFyIHRvX25jaGFyIHRvbGVyYW5jZSB0b3AKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIHRyYWNlIHRyYWNlZF9wbGFuIHRyYWNpbmcKK3N5biBrZXl3b3JkIHNxbEtleXdvcmQJIHRyYW5zZmVyIHRyYW5zZm9ybSB0cmFuc2FjdGlvbiB0cmFuc2FjdGlvbmFsIHRyZWF0IHRyaWVzCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSB0cnVlIHRyeSB0c2VxdWFsIHR5cGUgdHVuZSB1bmNvbW1pdHRlZCB1bmNvbmRpdGlvbmFsbHkKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHVuZW5mb3JjZWQgdW5pY29kZSB1bmlxdWUgdW5pc3RyIHVuaXQgdW5rbm93biB1bmxpbWl0ZWQgdW5sb2FkCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSB1bnBhcnRpdGlvbiB1bnF1aWVzY2UgdXBkYXRldGltZSB1cGRhdGluZyB1cGRsb2NrIHVwZ3JhZGUgdXBsb2FkCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSB1cHBlciB1c2FnZSB1c2UgdXNlcgpAQCAtNTkzLDE0ICs2MDIsMTQgQEAKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHdhcm5pbmcgd2Qgd2ViIHdoZW4gd2hlcmUgd2l0aCB3aXRoX2F1dG8KIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHdpdGhfYXV0byB3aXRoX2N1YmUgd2l0aF9yb2xsdXAgd2l0aG91dAogc3luIGtleXdvcmQgc3FsS2V5d29yZAkgd2l0aF9scGFyZW4gd2l0aGluIHdvcmQgd29yayB3b3JrbG9hZCB3cml0ZSB3cml0ZWZpbGUKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHdyaXRlY2xpZW50ZmlsZSB3cml0ZXIgd3JpdGVycyB3cml0ZXNlcnZlciB4bG9jayAKLXN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHplcm9zIHpvbmUKLSIgWE1MIAorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgd3JpdGVjbGllbnRmaWxlIHdyaXRlciB3cml0ZXJzIHdyaXRlc2VydmVyIHhsb2NrCitzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSB3YXIgeG1sIHplcm9zIHpvbmUKKyIgWE1MCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSByYXcgYXV0byBlbGVtZW50cyBleHBsaWNpdAogIiBIVFRQIHN1cHBvcnQKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIGF1dGhvcml6YXRpb24gc2VjdXJlIHVybCBzZXJ2aWNlIG5leHRfc29hcF9oZWFkZXIKICIgSFRUUCA5LjAuMiBuZXcgcHJvY2VkdXJlIGtleXdvcmRzCi1zeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBuYW1lc3BhY2UgY2VydGlmaWNhdGUgY2xpZW50cG9ydCBwcm94eQorc3luIGtleXdvcmQgc3FsS2V5d29yZAkgbmFtZXNwYWNlIGNlcnRpZmljYXRlIGNlcnRpZmljYXRlcyBjbGllbnRwb3J0IHByb3h5IHRydXN0ZWRfY2VydGlmaWNhdGVzX2ZpbGUKICIgT0xBUCBzdXBwb3J0IDkuMC4wCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBjb3Zhcl9wb3AgY292YXJfc2FtcCBjb3JyIHJlZ3Jfc2xvcGUgcmVncl9pbnRlcmNlcHQKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHJlZ3JfY291bnQgcmVncl9yMiByZWdyX2F2Z3ggcmVncl9hdmd5CkBAIC02MTAsNiArNjE5LDEwIEBACiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkCSBjaGFyYWN0ZXIgZGVjIG9wdGlvbnMgcHJvYyByZWZlcmVuY2UKIHN5biBrZXl3b3JkIHNxbEtleXdvcmQJIHN1YnRyYW5zIHRyYW4gc3luIGtleXdvcmQKIAorIiBMb2dpbiBNb2RlIE9wdGlvbnMKK3N5biBrZXl3b3JkIHNxbEtleXdvcmRMb2dpbgkgc3RhbmRhcmQgaW50ZWdyYXRlZCBrZXJiZXJvcyBMREFQVUEKK3N5biBrZXl3b3JkIHNxbEtleXdvcmRMb2dpbgkgY2xvdWRhZG1pbiBtaXhlZAorCiAiIFNwYXRpYWwgUHJlZGljYXRlcwogc3luIGtleXdvcmQgc3FsS2V5d29yZCAgIFNUX0NvbnRhaW5zCiBzeW4ga2V5d29yZCBzcWxLZXl3b3JkICAgU1RfQ29udGFpbnNGaWx0ZXIKQEAgLTY5Miw5ICs3MDUsOSBAQAogc3luIGtleXdvcmQgc3FsT3BlcmF0b3IJIGluIGFueSBzb21lIGFsbCBiZXR3ZWVuIGV4aXN0cwogc3luIGtleXdvcmQgc3FsT3BlcmF0b3IJIGxpa2UgZXNjYXBlIG5vdCBpcyBhbmQgb3IKIHN5biBrZXl3b3JkIHNxbE9wZXJhdG9yICBtaW51cwotc3luIGtleXdvcmQgc3FsT3BlcmF0b3IgIHByaW9yIGRpc3RpbmN0CitzeW4ga2V5d29yZCBzcWxPcGVyYXRvciAgcHJpb3IgZGlzdGluY3QgdW5uZXN0CiAKLXN5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBhbGxvY2F0ZSBhbHRlciBhdHRhY2ggYmFja3VwIGJlZ2luIGJyZWFrIGNhbGwgY2FzZQorc3luIGtleXdvcmQgc3FsU3RhdGVtZW50IGFsbG9jYXRlIGFsdGVyIGF0dGFjaCBiYWNrdXAgYmVnaW4gYnJlYWsgY2FsbCBjYXNlIGNhdGNoCiBzeW4ga2V5d29yZCBzcWxTdGF0ZW1lbnQgY2hlY2twb2ludCBjbGVhciBjbG9zZSBjb21tZW50IGNvbW1pdCBjb25maWd1cmUgY29ubmVjdAogc3luIGtleXdvcmQgc3FsU3RhdGVtZW50IGNvbnRpbnVlIGNyZWF0ZSBkZWFsbG9jYXRlIGRlY2xhcmUgZGVsZXRlIGRlc2NyaWJlCiBzeW4ga2V5d29yZCBzcWxTdGF0ZW1lbnQgZGV0YWNoIGRpc2Nvbm5lY3QgZHJvcCBleGNlcHQgZXhlY3V0ZSBleGl0IGV4cGxhaW4gZmV0Y2gKQEAgLTcwNSw3ICs3MTgsNyBAQAogc3luIGtleXdvcmQgc3FsU3RhdGVtZW50IHJlbW90ZSByZW1vdmUgcmVvcmdhbml6ZSByZXNpZ25hbCByZXN0b3JlIHJlc3VtZQogc3luIGtleXdvcmQgc3FsU3RhdGVtZW50IHJldHVybiByZXZva2Ugcm9sbGJhY2sgc2F2ZSBzYXZlcG9pbnQgc2VsZWN0CiBzeW4ga2V5d29yZCBzcWxTdGF0ZW1lbnQgc2V0IHNldHVzZXIgc2lnbmFsIHN0YXJ0IHN0b3Agc3luY2hyb25pemUKLXN5biBrZXl3b3JkIHNxbFN0YXRlbWVudCBzeXN0ZW0gdHJpZ2dlciB0cnVuY2F0ZSB1bmlvbiB1bmxvYWQgdXBkYXRlCitzeW4ga2V5d29yZCBzcWxTdGF0ZW1lbnQgc3lzdGVtIHRyaWdnZXIgdHJ1bmNhdGUgdHJ5IHVuaW9uIHVubG9hZCB1cGRhdGUKIHN5biBrZXl3b3JkIHNxbFN0YXRlbWVudCB2YWxpZGF0ZSB3YWl0Zm9yIHdoZW5ldmVyIHdoaWxlIHdpbmRvdyB3cml0ZXRleHQKIAogCkBAIC03MTUsNyArNzI4LDcgQEAKIHN5biBrZXl3b3JkIHNxbFR5cGUJIHNtYWxsaW50IHRpbnlpbnQgcmVhbAogc3luIGtleXdvcmQgc3FsVHlwZQkgbW9uZXkgc21hbGxtb25leQogc3luIGtleXdvcmQgc3FsVHlwZQkgZGF0ZSBkYXRldGltZSBkYXRldGltZW9mZnNldCBzbWFsbGRhdGV0aW1lIHRpbWUgdGltZXN0YW1wCi1zeW4ga2V5d29yZCBzcWxUeXBlCSBiaW5hcnkgaW1hZ2UgdmFyYmluYXJ5IHVuaXF1ZWlkZW50aWZpZXIKK3N5biBrZXl3b3JkIHNxbFR5cGUJIGJpbmFyeSBpbWFnZSB2YXJyYXkgdmFyYmluYXJ5IHVuaXF1ZWlkZW50aWZpZXIKIHN5biBrZXl3b3JkIHNxbFR5cGUJIHVuc2lnbmVkCiAiIFNwYXRpYWwgdHlwZXMKIHN5biBrZXl3b3JkIHNxbFR5cGUJIHN0X2dlb21ldHJ5IHN0X3BvaW50IHN0X2N1cnZlIHN0X3N1cmZhY2Ugc3RfZ2VvbWNvbGxlY3Rpb24KQEAgLTczNiw4ICs3NDksMTAgQEAKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBBbnNpbnVsbAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIEF1ZGl0aW5nCiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgQXVkaXRpbmdfb3B0aW9ucworc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIEF1dG9fY29tbWl0X29uX2NyZWF0ZV9sb2NhbF90ZW1wX2luZGV4CiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgQmFja2dyb3VuZF9wcmlvcml0eQogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIEJsb2NraW5nCitzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgQmxvY2tpbmdfb3RoZXJzX3RpbWVvdXQKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBCbG9ja2luZ190aW1lb3V0CiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgQ2hhaW5lZAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIENoZWNrcG9pbnRfdGltZQpAQCAtNzU0LDYgKzc2OSw3IEBACiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgRGF0YWJhc2VfYXV0aGVudGljYXRpb24KIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBEYXRlX2Zvcm1hdAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIERhdGVfb3JkZXIKK3N5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBkYl9wdWJsaXNoZXIKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBEZWJ1Z19tZXNzYWdlcwogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIERlZGljYXRlZF90YXNrCiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgRGVmYXVsdF9kYnNwYWNlCkBAIC03NjQsMTQgKzc4MCwxOCBAQAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIEVzY2FwZV9jaGFyYWN0ZXIKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBFeGNsdWRlX29wZXJhdG9ycwogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIEV4dGVuZGVkX2pvaW5fc3ludGF4CitzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgRXh0ZXJuX2xvZ2luX2NyZWRlbnRpYWxzCiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgRmlyZV90cmlnZ2Vycwogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIEZpcnN0X2RheV9vZl93ZWVrCiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgRm9yX3htbF9udWxsX3RyZWF0bWVudAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIEZvcmNlX3ZpZXdfY3JlYXRpb24KIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBHbG9iYWxfZGF0YWJhc2VfaWQKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBIdHRwX3Nlc3Npb25fdGltZW91dAorc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIEh0dHBfY29ubmVjdGlvbl9wb29sX2Jhc2VzaXplCitzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgSHR0cF9jb25uZWN0aW9uX3Bvb2xfdGltZW91dAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIEludGVncmF0ZWRfc2VydmVyX25hbWUKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBJc29sYXRpb25fbGV2ZWwKK3N5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBKYXZhX2NsYXNzX3BhdGgKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBKYXZhX2xvY2F0aW9uCiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgSmF2YV9tYWluX3VzZXJpZAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIEphdmFfdm1fb3B0aW9ucwpAQCAtNzkwLDYgKzgxMCw3IEBACiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgTWF4X3N0YXRlbWVudF9jb3VudAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIE1heF90ZW1wX3NwYWNlCiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgTWluX3Bhc3N3b3JkX2xlbmd0aAorc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIE1pbl9yb2xlX2FkbWlucwogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIE5lYXJlc3RfY2VudHVyeQogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIE5vbl9rZXl3b3Jkcwogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIE9kYmNfZGVzY3JpYmVfYmluYXJ5X2FzX3ZhcmJpbmFyeQpAQCAtODA3LDYgKzgyOCw3IEBACiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgUHJlc2VydmVfc291cmNlX2Zvcm1hdAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIFByZXZlbnRfYXJ0aWNsZV9wa2V5X3VwZGF0ZQogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIFByaW9yaXR5CitzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgUHJvZ3Jlc3NfbWVzc2FnZXMKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBRdWVyeV9tZW1fdGltZW91dAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIFF1b3RlZF9pZGVudGlmaWVyCiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgUmVhZF9wYXN0X2RlbGV0ZWQKQEAgLTgxNCw2ICs4MzYsNyBAQAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIFJlbW90ZV9pZGxlX3RpbWVvdXQKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBSZXBsaWNhdGVfYWxsCiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgUmVxdWVzdF90aW1lb3V0CitzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgUmVzZXJ2ZWRfa2V5d29yZHMKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBSZXR1cm5fZGF0ZV90aW1lX2FzX3N0cmluZwogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIFJvbGxiYWNrX29uX2RlYWRsb2NrCiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgUm93X2NvdW50cwpAQCAtODIzLDYgKzg0NiwxMiBAQAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIFNxbF9mbGFnZ2VyX2Vycm9yX2xldmVsCiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgU3FsX2ZsYWdnZXJfd2FybmluZ19sZXZlbAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIFN0cmluZ19ydHJ1bmNhdGlvbgorc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIHN0X2dlb21ldHJ5X2FzYmluYXJ5X2Zvcm1hdAorc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIHN0X2dlb21ldHJ5X2FzdGV4dF9mb3JtYXQKK3N5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBzdF9nZW9tZXRyeV9hc3htbF9mb3JtYXQKK3N5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBzdF9nZW9tZXRyeV9kZXNjcmliZV90eXBlCitzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgc3RfZ2VvbWV0cnlfaW50ZXJwb2xhdGlvbgorc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIHN0X2dlb21ldHJ5X29uX2ludmFsaWQKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBTdWJzdW1lX3Jvd19sb2Nrcwogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIFN1cHByZXNzX3Rkc19kZWJ1Z2dpbmcKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBTeW5jaHJvbml6ZV9taXJyb3Jfb25fY29tbWl0CkBAIC04MzEsNiArODYwLDcgQEAKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBUaW1lX2Zvcm1hdAogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIFRpbWVfem9uZV9hZGp1c3RtZW50CiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgVGltZXN0YW1wX2Zvcm1hdAorc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIFRpbWVzdGFtcF93aXRoX3RpbWVfem9uZV9mb3JtYXQKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBUcnVuY2F0ZV90aW1lc3RhbXBfdmFsdWVzCiBzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgVHNxbF9vdXRlcl9qb2lucwogc3luIGtleXdvcmQgc3FsT3B0aW9uICAgIFRzcWxfdmFyaWFibGVzCkBAIC04NDIsNiArODcyLDcgQEAKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBWZXJpZnlfcGFzc3dvcmRfZnVuY3Rpb24KIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBXYWl0X2Zvcl9jb21taXQKIHN5biBrZXl3b3JkIHNxbE9wdGlvbiAgICBXZWJzZXJ2aWNlX25hbWVzcGFjZV9ob3N0CitzeW4ga2V5d29yZCBzcWxPcHRpb24gICAgV2Vic2VydmljZV9zZXNzaW9uaWRfbmFtZQogCiAiIFN0cmluZ3MgYW5kIGNoYXJhY3RlcnM6CiBzeW4gcmVnaW9uIHNxbFN0cmluZwkJc3RhcnQ9KyIrICAgIGVuZD0rIisgY29udGFpbnM9QFNwZWxsCkBAIC04NTksMzIgKzg5MCwxOCBAQAogc3luIHN5bmMgY2NvbW1lbnQgc3FsRGFzaENvbW1lbnQKIHN5biBzeW5jIGNjb21tZW50IHNxbFNsYXNoQ29tbWVudAogCi0iIERlZmluZSB0aGUgZGVmYXVsdCBoaWdobGlnaHRpbmcuCi0iIEZvciB2ZXJzaW9uIDUuNyBhbmQgZWFybGllcjogb25seSB3aGVuIG5vdCBkb25lIGFscmVhZHkKLSIgRm9yIHZlcnNpb24gNS44IGFuZCBsYXRlcjogb25seSB3aGVuIGFuIGl0ZW0gZG9lc24ndCBoYXZlIGhpZ2hsaWdodGluZyB5ZXQKLWlmIHZlcnNpb24gPj0gNTA4IHx8ICFleGlzdHMoImRpZF9zcWxfc3luX2luaXRzIikKLSAgICBpZiB2ZXJzaW9uIDwgNTA4Ci0gICAgICAgIGxldCBkaWRfc3FsX3N5bl9pbml0cyA9IDEKLSAgICAgICAgY29tbWFuZCAtbmFyZ3M9KyBIaUxpbmsgaGkgbGluayA8YXJncz4KLSAgICBlbHNlCi0gICAgICAgIGNvbW1hbmQgLW5hcmdzPSsgSGlMaW5rIGhpIGxpbmsgPGFyZ3M+Ci0gICAgZW5kaWYKLQotICAgIEhpTGluayBzcWxEYXNoQ29tbWVudAlDb21tZW50Ci0gICAgSGlMaW5rIHNxbFNsYXNoQ29tbWVudAlDb21tZW50Ci0gICAgSGlMaW5rIHNxbE11bHRpQ29tbWVudAlDb21tZW50Ci0gICAgSGlMaW5rIHNxbE51bWJlcgkgICAgICAgIE51bWJlcgotICAgIEhpTGluayBzcWxPcGVyYXRvcgkgICAgICAgIE9wZXJhdG9yCi0gICAgSGlMaW5rIHNxbFNwZWNpYWwJICAgICAgICBTcGVjaWFsCi0gICAgSGlMaW5rIHNxbEtleXdvcmQJICAgICAgICBLZXl3b3JkCi0gICAgSGlMaW5rIHNxbFN0YXRlbWVudAkgICAgICAgIFN0YXRlbWVudAotICAgIEhpTGluayBzcWxTdHJpbmcJICAgICAgICBTdHJpbmcKLSAgICBIaUxpbmsgc3FsVHlwZQkgICAgICAgIFR5cGUKLSAgICBIaUxpbmsgc3FsRnVuY3Rpb24JICAgICAgICBGdW5jdGlvbgotICAgIEhpTGluayBzcWxPcHRpb24JICAgICAgICBQcmVQcm9jCi0KLSAgICBkZWxjb21tYW5kIEhpTGluawotZW5kaWYKK2hpIGRlZiBsaW5rIHNxbERhc2hDb21tZW50CUNvbW1lbnQKK2hpIGRlZiBsaW5rIHNxbFNsYXNoQ29tbWVudAlDb21tZW50CitoaSBkZWYgbGluayBzcWxNdWx0aUNvbW1lbnQJQ29tbWVudAoraGkgZGVmIGxpbmsgc3FsTnVtYmVyCSAgICAgICAgTnVtYmVyCitoaSBkZWYgbGluayBzcWxPcGVyYXRvcgkgICAgICAgIE9wZXJhdG9yCitoaSBkZWYgbGluayBzcWxTcGVjaWFsCSAgICAgICAgU3BlY2lhbAoraGkgZGVmIGxpbmsgc3FsS2V5d29yZAkgICAgICAgIEtleXdvcmQKK2hpIGRlZiBsaW5rIHNxbFN0YXRlbWVudAlTdGF0ZW1lbnQKK2hpIGRlZiBsaW5rIHNxbFN0cmluZwkgICAgICAgIFN0cmluZworaGkgZGVmIGxpbmsgc3FsVHlwZQkgICAgICAgIFR5cGUKK2hpIGRlZiBsaW5rIHNxbEZ1bmN0aW9uCSAgICAgICAgRnVuY3Rpb24KK2hpIGRlZiBsaW5rIHNxbE9wdGlvbgkgICAgICAgIFByZVByb2MKIAogbGV0IGI6Y3VycmVudF9zeW50YXggPSAic3FsYW55d2hlcmUiCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvdG9vbHMvY2NmaWx0ZXJfUkVBRE1FLnR4dCBiL3J1bnRpbWUvdG9vbHMvY2NmaWx0ZXJfUkVBRE1FLnR4dAppbmRleCBmZjY1OGM5Li4zYzEyYThjIDEwMDY0NAotLS0gYS9ydW50aW1lL3Rvb2xzL2NjZmlsdGVyX1JFQURNRS50eHQKKysrIGIvcnVudGltZS90b29scy9jY2ZpbHRlcl9SRUFETUUudHh0CkBAIC0xMSw3ICsxMSw3IEBACiAgICAgY2MgLURfSVJJWCAgICBjY2ZpbHRlci5jIC1vIGNjZmlsdGVyCiAgICAgY2MgLURfU09MQVJJUyBjY2ZpbHRlci5jIC1vIGNjZmlsdGVyCiAgICAgY2MgLURfSFBVWCAgICBjY2ZpbHRlci5jIC1vIGNjZmlsdGVyCi1Zb3UgY2FuIHRoZW4gY29weSBjY2ZpbHRlciB0byBpdCdzIHRhcmdldCBkZXN0aW5hdGlvbiAoaS5lOiAvdXNyL2xvY2FsL2JpbikuCitZb3UgY2FuIHRoZW4gY29weSBjY2ZpbHRlciB0byBpdHMgdGFyZ2V0IGRlc3RpbmF0aW9uIChpLmU6IC91c3IvbG9jYWwvYmluKS4KIFRoZSBtYW4gcGFnZSBjY2ZpbHRlci4xIGhhcyB0byBiZSBjb3BpZWQgdG8gc29tZXdoZXJlIGluIHlvdXIgTUFOUEFUSCwKIHVuZGVyIGEgbWFuMSBkaXJlY3RvcnkgKGkuZTogL3Vzci9sb2NhbC9tYW4vbWFuMSkuCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvdHV0b3IvdHV0b3IuemgudXRmLTggYi9ydW50aW1lL3R1dG9yL3R1dG9yLnpoLnV0Zi04Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZDcwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3R1dG9yL3R1dG9yLnpoLnV0Zi04CkBAIC0wLDAgKzEsODUyIEBACis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis9ICAgICAg5q2hICAgICDov44gICAgIOmWsSAgICAg6K6AICAg44CKIFYgSSBNICDmlZkgIOeoiyDjgIsgICDilIDilIAgICAgIOeJiOacrCAxLjUgICAgICA9Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgIHZpbSDmmK/kuIDlgIvlhbfmnInlvojlpJrlkb3ku6TnmoTlip/og73pnZ7luLjlvLflpKfnmoTnt6jovK/lmajjgILpmZDkuo7nr4fluYXvvIzlnKjmnKzmlZnnqIvnlbbkuK0KKyAgICAg5LiN5bCx6Kmz57Sw5LuL57S55LqG44CC5pys5pWZ56iL55qE6Kit6KiI55uu5qiZ5piv6Kyb6L+w5LiA5Lqb5b+F6KaB55qE5Z+65pys5ZG95Luk77yM6ICM5o6M5o+h5aW96YCZCisgICAgIOS6m+WRveS7pO+8jOaCqOWwseiDveWkoOW+iOWuueaYk+Wwh3ZpbeeVtuS9nOS4gOWAi+mAmueUqOeahOiQrOiDvee3qOi8r+WZqOS+huS9v+eUqOS6huOAggorCisgICAgIOWujOaIkOacrOaVmeeoi+eahOWFp+WuueWkp+e0hOmcgOimgTI1LTMw5YiG6ZCY77yM5Y+W5rG65LqO5oKo6KiT57e055qE5pmC6ZaT44CCCisKKyAgICAg5q+P5LiA56+A55qE5ZG95Luk5pON5L2c5bCH5pyD5pu05pS55pys5paH44CC5o6o6Jam5oKo5b6p5Yi25pys5paH55qE5LiA5YCL5Ymv5pys77yM54S25b6M5Zyo5Ymv5pys5LiKCisgICAgIOmAsuihjOiok+e3tCjlpoLmnpzmgqjmmK/pgJrpgY4idmltdHV0b3Ii5L6G5ZWf5YuV5pWZ56iL55qE77yM6YKj6bq85pys5paH5bCx5bey57aT5piv5Ymv5pys5LqGKeOAggorCisgICAgIOWIh+iomOS4gOm7nu+4sOacrOaVmeeoi+eahOioreioiOaAnei3r+aYr+WcqOS9v+eUqOS4remAsuihjOWtuOe/kueahOOAguS5n+WwseaYr+iqqu+8jOaCqOmcgOimgemAmumBjgorICAgICDln7fooYzlkb3ku6Tkvoblrbjnv5LlroPlgJHmnKzouqvnmoTmraPnorrnlKjms5XjgILlpoLmnpzmgqjlj6rmmK/plrHoroDogIzkuI3mk43kvZzvvIzpgqPpurzmgqjlj6/og70KKyAgICAg5pyD5b6I5b+r6YG65b+Y6YCZ5Lqb5ZG95Luk55qE77yBCisKKyAgICAg5aW95LqG77yM54++5Zyo6KuL56K65a6a5oKo55qEU2hpZnQtTG9jayjlpKflsI/lr6vpjpblrprpjbUp6YKE5rKS5pyJ5oyJ5LiL77yM54S25b6M5oyJ6Y2155uk5LiKCisgICAgIOeahOWtl+avjemNtSBqIOi2s+WkoOWkmueahOasoeaVuOS+huenu+WLleWFieaome+8jOebtOWIsOesrOS4gOevgOeahOWFp+WuueiDveWkoOWujOWFqOWFhea7v+Wxj+W5leOAggorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCeesrOS4gOism+esrOS4gOevgO+4sOenu+WLleWFieaomQorCisKKyAgIOKAu+KAuyDopoHnp7vli5XlhYnmqJnvvIzoq4vkvp3nhafoqqrmmI7liIbliKXmjInkuIsgaOOAgWrjgIFr44CBbCDpjbXjgIIg4oC74oC7CisKKwkgICAgIF4KKwkgICAgIGsJCSAgICDmj5DnpLrvuLAgaCDnmoTpjbXkvY3kuo7lt6bpgorvvIzmr4/mrKHmjInkuIvlsLHmnIPlkJHlt6bnp7vli5XjgIIKKyAgICAgICA8IGgJIGwgPgkJICAgbCDnmoTpjbXkvY3kuo7lj7PpgorvvIzmr4/mrKHmjInkuIvlsLHmnIPlkJHlj7Pnp7vli5XjgIIKKwkgICAgIGoJCQkgICBqIOmNteeci+i1t+S+huW+iOixoeS4gOaUr+Wwluerr+aWueWQkeacneS4i+eahOeuremgreOAggorCSAgICAgdgorCisgIDEuIOiri+maqOaEj+WcqOWxj+W5leWFp+enu+WLleWFieaome+8jOebtOiHs+aCqOimuuW+l+iIkuacjeeCuuatouOAggorCisgIDIuIOaMieS4i+S4i+ihjOmNtShqKe+8jOebtOWIsOWHuuePvuWFieaomemHjeW+qeS4i+ihjOOAggorCistLS0+IOePvuWcqOaCqOaHieipsuW3sue2k+WtuOacg+WmguS9leenu+WLleWIsOS4i+S4gOism+WQp+OAggorCisgIDMuIOePvuWcqOiri+S9v+eUqOS4i+ihjOmNte+8jOWwh+WFieaomeenu+WLleWIsOesrOS6jOism+OAggorCivmj5DnpLrvuLDlpoLmnpzmgqjkuI3mlaLnorrlrprmgqjmiYDmjInkuIvnmoTlrZfmr43vvIzoq4vmjInkuIs8RVNDPumNteWbnuWIsOato+W4uChOb3JtYWwp5qih5byP44CCCisgICAgICDnhLblvozlho3mrKHlvp7pjbXnm6TovLjlhaXmgqjmg7PopoHnmoTlkb3ku6TjgIIKKwor5o+Q56S677iw5YWJ5qiZ6Y215oeJ55W25Lmf6IO95q2j5bi45bel5L2c55qE44CC5L2G5piv5L2/55SoaGprbOmNte+8jOWcqOe/kuaFo+S5i+W+jOaCqOWwseiDveWkoOW/q+mAnworICAgICAg5Zyw5Zyo5bGP5bmV5YWn5Zub6JmV56e75YuV5YWJ5qiZ5LqG44CCCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkJ56ys5LiA6Kyb56ys5LqM56+A77iwVklN55qE6YCy5YWl5ZKM6YCA5Ye6CisKKworICAhISDnibnliKXmj5DnpLrvuLDmlazoq4vplrHoroDlrozmlbTmnKzkuIDnr4DnmoTlhaflrrnvvIznhLblvozmiY3og73ln7fooYzku6XkuIvmiYDorJvop6PnmoTlkb3ku6TjgIIKKworICAxLiDoq4vmjIk8RVNDPumNtSjpgJnmmK/ngrrkuobnorrkv53mgqjomZXlnKjmraPluLjmqKHlvI8p44CCCisKKyAgMi4g54S25b6M6Ly45YWl77iwCQkJOnEhIDzlm57ou4o+CisKKy0tLT4g6YCZ56iu5pa55byP55qE6YCA5Ye657eo6Lyv5Zmo57WV5LiN5pyD5L+d5a2Y5oKo6YCy5YWl57eo6Lyv5Zmo5Lul5L6G5omA5YGa55qE5pS55YuV44CCCisgICAgIOWmguaenOaCqOaDs+S/neWtmOabtOaUueWGjemAgOWHuu+8jOiri+i8uOWFpe+4sAorCQkJCTp3cSAgPOWbnui7ij4KKworICAzLiDlpoLmnpzmgqjnnIvliLDkuoblkb3ku6TooYzmj5DnpLrnrKbvvIzoq4vovLjlhaXog73lpKDluLbmgqjlm57liLDmnKzmlZnnqIvnmoTlkb3ku6TvvIzpgqPlsLHmmK/vuLAKKworCQl2aW10dXRvciA85Zue6LuKPgorCisgICAgIOmAmuW4uOaDheazgeS4i+aCqOS5n+WPr+S7peeUqOmAmeeoruaWueW8j++4sAorCisJCXZpbSB0dXRvciA85Zue6LuKPgorCistLS0+IOmAmeijoeeahCAndmltJyDooajnpLrpgLLlhaV2aW3nt6jovK/lmajvvIzogIwgJ3R1dG9yJ+WJh+aYr+aCqOa6luWCmeimgee3qOi8r+eahOaWh+S7tuOAggorCisgIDQuIOWmguaenOaCqOiHquS/oeW3sue2k+eJoueJouiomOS9j+S6humAmeS6m+atpempn+eahOipse+8jOiri+W+nuatpempnzHln7fooYzliLDmraXpqZ8z6YCA5Ye677yM54S2CisgICAgIOW+jOWGjeasoemAsuWFpee3qOi8r+WZqOOAguaOpeiRl+Wwh+WFieaomeenu+WLleWIsOesrOS4gOism+esrOS4ieevgOS+hue5vOe6jOaIkeWAkeeahOaVmeeoi+ism+ino+OAggorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCeesrOS4gOism+esrOS4ieevgO+4sOaWh+acrOe3qOi8r+S5i+WIqumZpAorCisKKyAgICoqIOWcqOato+W4uChOb3JtYWwp5qih5byP5LiL77yM5Y+v5Lul5oyJ5LiLIHgg6Y215L6G5Yiq6Zmk5YWJ5qiZ5omA5Zyo5L2N572u55qE5a2X56ym44CCKioKKworICAxLiDoq4vlsIflhYnmqJnnp7vli5XliLDmnKznr4DkuK3kuIvpnaLmqJnoqJjmnIkgLS0tPiDnmoTpgqPkuIDooYzjgIIKKworICAyLiDngrrkuobkv67mraPovLjlhaXpjK/oqqTvvIzoq4vlsIflhYnmqJnnp7voh7PmupblgpnliKrpmaTnmoTlrZfnrKbnmoTkvY3nva7omZXjgIIKKworICAzLiDnhLblvozmjInkuIsgeCDpjbXlsIfpjK/oqqTlrZfnrKbliKrpmaTmjonjgIIKKworICA0LiDph43lvqnmraXpqZ8y5Yiw5q2l6amfNO+8jOebtOWIsOWPpeWtkOS/ruato+eCuuatouOAggorCistLS0+IFRoZSBjY293IGp1bXBlZGQgb3Z2ZXJyIHRoaGUgbW9vb24uCisKKyAgNS4g5aW95LqG77yM6Kmy6KGM5bey57aT5L+u5q2j5LqG77yM5LiL5LiA56+A5YWn5a655piv56ys5LiA6Kyb56ys5Zub56+A44CCCisKK+eJueWIpeaPkOekuu+4sOWcqOaCqOeAj+imveacrOaVmeeoi+aZgu+8jOS4jeimgeW8t+ihjOiomOaGtuOAguiomOS9j+S4gOm7nu+4sOWcqOS9v+eUqOS4reWtuOe/kuOAggorCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCSAgICAg56ys5LiA6Kyb56ys5Zub56+A77iw5paH5pys57eo6Lyv5LmL5o+S5YWlCisKKworCSAqKiDlnKjmraPluLjmqKHlvI/kuIvvvIzlj6/ku6XmjInkuIsgaSDpjbXkvobmj5LlhaXmlofmnKzjgIIqKgorCisgIDEuIOiri+Wwh+WFieaomeenu+WLleWIsOacrOevgOS4reS4i+mdouaomeiomOaciSAtLS0+IOeahOesrOS4gOihjOOAggorCisgIDIuIOeCuuS6huS9v+W+l+esrOS4gOihjOWFp+Wuuembt+WQjOS6juesrOS6jOihjO+8jOiri+Wwh+WFieaomeenu+iHs+aWh+acrOesrOS4gOWAi+Wtl+espua6luWCmeaPkuWFpQorICAgICDnmoTkvY3nva7jgIIKKworICAzLiDnhLblvozmjInkuIsgaSDpjbXvvIzmjqXokZfovLjlhaXlv4XopoHnmoTmlofmnKzlrZfnrKbjgIIKKworICA0LiDmiYDmnInmlofmnKzpg73kv67mraPlroznlaLvvIzoq4vmjInkuIsgPEVTQz4g6Y216L+U5Zue5q2j5bi45qih5byP44CCCisgICAgIOmHjeW+qeatpempnzLoh7PmraXpqZ805Lul5L6/5L+u5q2j5Y+l5a2Q44CCCisKKy0tLT4gVGhlcmUgaXMgdGV4dCBtaXNuZyB0aGlzIC4KKy0tLT4gVGhlcmUgaXMgc29tZSB0ZXh0IG1pc3NpbmcgZnJvbSB0aGlzIGxpbmUuCisKKyAgNS4g5aaC5p6c5oKo5bCN5paH5pys5o+S5YWl5pON5L2c5bey57aT5b6I5ru/5oSP77yM6KuL5o6l6JGX6Zax6K6A5LiL6Z2i55qE5bCP57WQ44CCCisKKworCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSAgICAgICDnrKzkuIDorJvlsI/ntZAKKworCisgIDEuIOWFieaomeWcqOWxj+W5leaWh+acrOS4reeahOenu+WLleaXouWPr+S7peeUqOeuremgremNte+8jOS5n+WPr+S7peS9v+eUqCBoamtsIOWtl+avjemNteOAggorCSBoICjlt6bnp7spCWogKOS4i+ihjCkgICAgICAgayAo5LiK6KGMKQkgICAgbCAo5Y+z56e7KQorCisgIDIuIOassumAsuWFpXZpbee3qOi8r+WZqCjlvp7lkb3ku6TooYzmj5DnpLrnrKYp77yM6KuL6Ly45YWl77iwdmltIOaWh+S7tuWQjSA85Zue6LuKPgorCisgIDMuIOassumAgOWHunZpbee3qOi8r+WZqO+8jOiri+i8uOWFpeS7peS4i+WRveS7pOaUvuajhOaJgOacieS/ruaUue+4sAorCisJPEVTQz4gICA6cSEJIDzlm57ou4o+CisKKyAgICAg5oiW6ICF6Ly45YWl5Lul5LiL5ZG95Luk5L+d5a2Y5omA5pyJ5L+u5pS577iwCisKKwk8RVNDPiAgIDp3cQkgPOWbnui7ij4KKworICA0LiDlnKjmraPluLjmqKHlvI/kuIvliKrpmaTlhYnmqJnmiYDlnKjkvY3nva7nmoTlrZfnrKbvvIzoq4vmjInvuLAgeAorCisgIDUuIOWcqOato+W4uOaooeW8j+S4i+imgeWcqOWFieaomeaJgOWcqOS9jee9rumWi+Wni+aPkuWFpeaWh+acrO+8jOiri+aMie+4sAorCisJIGkgICAgIOi8uOWFpeW/heimgeaWh+acrAk8RVNDPgorCivnibnliKXmj5DnpLrvuLDmjInkuIsgPEVTQz4g6Y215pyD5bi25oKo5Zue5Yiw5q2j5bi45qih5byP5oiW6ICF5Y+W5raI5LiA5YCL5LiN5pyf5pyb5oiW6ICF6YOo5YiG5a6M5oiQCivnmoTlkb3ku6TjgIIKKwor5aW95LqG77yM56ys5LiA6Kyb5Yiw5q2k57WQ5p2f44CC5LiL6Z2i5o6l5LiL5L6G57m857qM56ys5LqM6Kyb55qE5YWn5a6544CCCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCQnnrKzkuozorJvnrKzkuIDnr4DvuLDliKrpmaTpoZ7lkb3ku6QKKworCisJICAgICoqIOi8uOWFpSBkdyDlj6/ku6Xlvp7lhYnmqJnomZXliKrpmaToh7PkuIDlgIvllq7lrZcv5Zau6Kme55qE5pyr5bC+44CCKioKKworICAxLiDoq4vmjInkuIsgPEVTQz4g6Y2156K65L+d5oKo6JmV5LqO5q2j5bi45qih5byP44CCCisKKyAgMi4g6KuL5bCH5YWJ5qiZ56e75YuV5Yiw5pys56+A5Lit5LiL6Z2i5qiZ6KiY5pyJIC0tLT4g55qE6YKj5LiA6KGM44CCCisKKyAgMy4g6KuL5bCH5YWJ5qiZ56e76Iez5rqW5YKZ6KaB5Yiq6Zmk55qE5Zau6Kme55qE6ZaL5aeL44CCCisKKyAgNC4g5o6l6JGX6Ly45YWlIGR3IOWIqumZpOaOieipsuWWruipnuOAggorCisgIOeJueWIpeaPkOekuu+4sOaCqOaJgOi8uOWFpeeahCBkdyDmnIPlnKjmgqjovLjlhaXnmoTlkIzmmYLlh7rnj77lnKjlsY/luZXnmoTmnIDlvozkuIDooYzjgILlpoLmnpzmgqjovLgKKyAg5YWl5pyJ6Kqk77yM6KuL5oyJ5LiLIDxFU0M+IOmNteWPlua2iO+8jOeEtuW+jOmHjeaWsOWGjeS+huOAggorCistLS0+IFRoZXJlIGFyZSBhIHNvbWUgd29yZHMgZnVuIHRoYXQgZG9uJ3QgYmVsb25nIHBhcGVyIGluIHRoaXMgc2VudGVuY2UuCisKKyAgNS4g6YeN5b6p5q2l6amfM+iHs+atpempnzTvvIznm7Toh7Plj6XlrZDkv67mraPlroznlaLjgILmjqXokZfnubznuoznrKzkuozorJvnrKzkuoznr4DlhaflrrnjgIIKKworCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkgICAgICDnrKzkuozorJvnrKzkuoznr4DvuLDlhbbku5bliKrpmaTpoZ7lkb3ku6QKKworCisJCSAgICoqIOi8uOWFpSBkJCDlvp7nlbbliY3lhYnmqJnliKrpmaTliLDooYzmnKvjgIIqKgorCisgIDEuIOiri+aMieS4iyA8RVNDPiDpjbXnorrkv53mgqjomZXkuo7mraPluLjmqKHlvI/jgIIKKworICAyLiDoq4vlsIflhYnmqJnnp7vli5XliLDmnKznr4DkuK3kuIvpnaLmqJnoqJjmnIkgLS0tPiDnmoTpgqPkuIDooYzjgIIKKworICAzLiDoq4vlsIflhYnmqJnnp7vli5XliLDoqbLooYznmoTlsL7pg6go5Lmf5bCx5piv5Zyo56ys5LiA5YCL6bue6Jmf4oCYLuKAmeW+jOmdoinjgIIKKworICA0LiDnhLblvozovLjlhaUgZCQg5b6e5YWJ5qiZ6JmV5Yiq6Iez55W25YmN6KGM5bC+6YOo44CCCisKKy0tLT4gU29tZWJvZHkgdHlwZWQgdGhlIGVuZCBvZiB0aGlzIGxpbmUgdHdpY2UuIGVuZCBvZiB0aGlzIGxpbmUgdHdpY2UuCisKKworICA1LiDoq4vnubznuozlrbjnv5LnrKzkuozorJvnrKzkuInnr4DlsLHnn6XpgZPmmK/mgI7purzlm57kuovkuobjgIIKKworCisKKworCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJICAgICDnrKzkuozorJvnrKzkuInnr4DvuLDpl5zkuo7lkb3ku6TlkozlsI3osaEKKworCisgIOWIqumZpOWRveS7pCBkIOeahOagvOW8j+WmguS4i++4sAorCisJIFtudW1iZXJdICAgZAlvYmplY3QJICAgIOaIluiAhSAgICAgZAkgW251bWJlcl0gICBvYmplY3QKKworICDlhbbmhI/lpoLkuIvvuLAKKyAgICBudW1iZXIgLSDku6Pooajln7fooYzlkb3ku6TnmoTmrKHmlbgo5Y+v6YG46aCF77yM57y655yB6Kit572u54K6IDEgKeOAggorICAgIGQgLSDku6PooajliKrpmaTjgIIKKyAgICBvYmplY3QgLSDku6Pooajlkb3ku6TmiYDopoHmk43kvZznmoTlsI3osaEo5LiL6Z2i5pyJ55u46Zec5LuL57S5KeOAggorCisgIOS4gOWAi+ewoeefreeahOWwjeixoeWIl+ihqO+4sAorICAgIHcgLSDlvp7nlbbliY3lhYnmqJnnlbbliY3kvY3nva7nm7TliLDllq7lrZcv5Zau6Kme5pyr5bC+77yM5YyF5ous56m65qC844CCCisgICAgZSAtIOW+nueVtuWJjeWFieaomeeVtuWJjeS9jee9ruebtOWIsOWWruWtly/llq7oqZ7mnKvlsL7vvIzkvYbmmK8gKuS4jSog5YyF5ous56m65qC844CCCisgICAgJCAtIOW+nueVtuWJjeWFieaomeeVtuWJjeS9jee9ruebtOWIsOeVtuWJjeihjOacq+OAggorCivnibnliKXmj5DnpLrvuLAKKyAgICDlsI3kuo7li4fkuo7mjqLntKLogIXvvIzoq4vlnKjmraPluLjmqKHlvI/kuIvpnaLlg4XmjInku6Pooajnm7jmh4nlsI3osaHnmoTpjbXogIzkuI3kvb/nlKjlkb3ku6TvvIzliYcKKyAgICDlsIfnnIvliLDlhYnmqJnnmoTnp7vli5XmraPlpoLkuIrpnaLnmoTlsI3osaHliJfooajmiYDku6PooajnmoTkuIDmqKPjgIIKKworCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCeesrOS6jOism+esrOWbm+evgO+4sOWwjeixoeWRveS7pOeahOeJueauiuaDheazgQorCisKKwkgICAgICAgKiog6Ly45YWlIGRkIOWPr+S7peWIqumZpOaVtOS4gOWAi+eVtuWJjeihjOOAgiAqKgorCisgIOmRkuS6juaVtOihjOWIqumZpOeahOmrmOmgu+W6pu+8jFZJTSDnmoToqK3oqIjogIXmsbrlrpropoHnsKHljJbmlbTooYzliKrpmaTvvIzlg4XpnIDopoHlnKjlkIzkuIDooYzkuIoKKyAg5pOK5omT5YWp5qyhIGQg5bCx5Y+v5Lul5Yiq6Zmk5o6J5YWJ5qiZ5omA5Zyo55qE5pW06KGM5LqG44CCCisKKyAgMS4g6KuL5bCH5YWJ5qiZ56e75YuV5Yiw5pys56+A5Lit5LiL6Z2i55qE55+t5Y+l5q616JC95Lit55qE56ys5LqM6KGM44CCCisgIDIuIOi8uOWFpSBkZCDliKrpmaToqbLooYzjgIIKKyAgMy4g54S25b6M56e75YuV5Yiw56ys5Zub6KGM44CCCisgIDQuIOaOpeiRl+i8uOWFpSAyZGQgKOmChOiomOW+l+WJjemdouism+mBjueahCBudW1iZXItY29tbWFuZC1vYmplY3Qg5ZeO77yfKSDliKrpmaTlhanooYzjgIIKKworICAgICAgMSkgIFJvc2VzIGFyZSByZWQsCisgICAgICAyKSAgTXVkIGlzIGZ1biwKKyAgICAgIDMpICBWaW9sZXRzIGFyZSBibHVlLAorICAgICAgNCkgIEkgaGF2ZSBhIGNhciwKKyAgICAgIDUpICBDbG9ja3MgdGVsbCB0aW1lLAorICAgICAgNikgIFN1Z2FyIGlzIHN3ZWV0CisgICAgICA3KSAgQW5kIHNvIGFyZSB5b3UuCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCQkg56ys5LqM6Kyb56ys5LqU56+A77iw5pKk5raI6aGe5ZG95LukCisKKworCSAqKiDovLjlhaUgdSDkvobmkqTmtojmnIDlvozln7fooYznmoTlkb3ku6TvvIzovLjlhaUgVSDkvobkv67mraPmlbTooYzjgIIqKgorCisgIDEuIOiri+Wwh+WFieaomeenu+WLleWIsOacrOevgOS4reS4i+mdouaomeiomOaciSAtLS0+IOeahOmCo+S4gOihjO+8jOS4puWwh+WFtue9ruS6juesrOS4gOWAi+mMr+iqpAorICAgICDomZXjgIIKKyAgMi4g6Ly45YWlIHgg5Yiq6Zmk56ys5LiA5YCL5LiN5oOz5L+d55WZ55qE5a2X5q+N44CCCisgIDMuIOeEtuW+jOi8uOWFpSB1IOaSpOa2iOacgOW+jOWft+ihjOeahCjkuIDmrKEp5ZG95Luk44CCCisgIDQuIOmAmeasoeimgeS9v+eUqCB4IOS/ruato+acrOihjOeahOaJgOaciemMr+iqpOOAggorICA1LiDnj77lnKjovLjlhaXkuIDlgIvlpKflr6vnmoQgVSDvvIzmgaLlvqnliLDoqbLooYznmoTljp/lp4vni4DmhYvjgIIKKyAgNi4g5o6l6JGX5aSa5qyh6Ly45YWlIHUg5Lul5pKk5raIIFUg5Lul5Y+K5pu05YmN55qE5ZG95Luk44CCCisgIDcuIOeEtuW+jOWkmuasoei8uOWFpSBDVFJMLVIgKOWFiOaMieS4iyBDVFJMIOmNteS4jeaUvumWi++8jOaOpeiRl+i8uOWFpSBSIOmNtSkg77yM6YCZ5qij5bCxCisgICAgIOWPr+S7peWft+ihjOaBouW+qeWRveS7pO+8jOS5n+WwseaYr+aSpOa2iOaOieaSpOa2iOWRveS7pOOAggorCistLS0+IEZpaXggdGhlIGVycm9ycyBvb24gdGhoaXMgbGluZSBhbmQgcmVlcGxhY2UgdGhlbSB3aXR0aCB1bmRvLgorCisgIDguIOmAmeS6m+mDveaYr+mdnuW4uOacieeUqOeahOWRveS7pOOAguS4i+mdouaYr+esrOS6jOism+eahOWwj+e1kOS6huOAggorCisKKworCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSAgICAgICDnrKzkuozorJvlsI/ntZAKKworCisgIDEuIOassuW+nueVtuWJjeWFieaomeWIqumZpOiHs+WWruWtly/llq7oqZ7mnKvlsL7vvIzoq4vovLjlhaXvuLBkdworCisgIDIuIOassuW+nueVtuWJjeWFieaomeWIqumZpOiHs+eVtuWJjeihjOacq+Wwvu+8jOiri+i8uOWFpe+4sGQkCisKKyAgMy4g5qyy5Yiq6Zmk5pW06KGM77yM6KuL6Ly45YWl77iwZGQKKworICA0LiDlnKjmraPluLjmqKHlvI/kuIvkuIDlgIvlkb3ku6TnmoTmoLzlvI/mmK/vuLAKKworICAgICAgIFtudW1iZXJdICAgY29tbWFuZCAgIG9iamVjdCAgICAg5oiW6ICFICAgICBjb21tYW5kCVtudW1iZXJdICAgb2JqZWN0CisgICAgIOWFtuaEj+aYr++4sAorICAgICAgIG51bWJlciAtIOS7o+ihqOeahOaYr+WRveS7pOWft+ihjOeahOasoeaVuAorICAgICAgIGNvbW1hbmQgLSDku6PooajopoHlgZrnmoTkuovmg4XvvIzmr5TlpoIgZCDku6PooajliKrpmaQKKyAgICAgICBvYmplY3QgLSDku6PooajopoHmk43kvZznmoTlsI3osaHvvIzmr5TlpoIgdyDku6Pooajllq7lrZcv5Zau6Kme77yMJCDku6PooajliLDooYzmnKvnrYnnrYnjgIIKKwkJJCAodG8gdGhlIGVuZCBvZiBsaW5lKSwgZXRjLgorCisgIDUuIOassuaSpOa2iOS7peWJjeeahOaTjeS9nO+8jOiri+i8uOWFpe+4sHUgKOWwj+Wvq+eahHUpCisgICAgIOassuaSpOa2iOWcqOS4gOihjOS4reaJgOWBmueahOaUueWLle+8jOiri+i8uOWFpe+4sFUgKOWkp+Wvq+eahFUpCisgICAgIOassuaSpOa2iOS7peWJjeeahOaSpOa2iOWRveS7pO+8jOaBouW+qeS7peWJjeeahOaTjeS9nOe1kOaenO+8jOiri+i8uOWFpe+4sENUUkwtUgorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSDnrKzkuInorJvnrKzkuIDnr4DvuLDnva7lhaXpoZ7lkb3ku6QKKworCisJICAgICAgICoqIOi8uOWFpSBwIOWwh+acgOW+jOS4gOasoeWIqumZpOeahOWFp+Wuuee9ruWFpeWFieaomeS5i+W+jCAqKgorCisgIDEuIOiri+Wwh+WFieaomeenu+WLleWIsOacrOevgOS4reS4i+mdouekuuiMg+auteiQveeahOmmluihjOOAggorCisgIDIuIOi8uOWFpSBkZCDlsIfoqbLooYzliKrpmaTvvIzpgJnmqKPmnIPlsIfoqbLooYzkv53lrZjliLB2aW3nmoTnt6nmspbljYDkuK3jgIIKKworICAzLiDmjqXokZflsIflhYnmqJnnp7vli5XliLDmupblgpnnva7lhaXnmoTkvY3nva7nmoTkuIrmlrnjgILoqJjkvY/vuLDmmK/kuIrmlrnlk6bjgIIKKworICA0LiDnhLblvozlnKjmraPluLjmqKHlvI/kuIsoPEVTQz7pjbXpgLLlhaUp77yM6Ly45YWlIHAg5bCH6Kmy6KGM57KY6LK8572u5YWl44CCCisKKyAgNS4g6YeN5b6p5q2l6amfMuiHs+atpempnzTvvIzlsIfmiYDmnInnmoTooYzkvp3luo/mlL7nva7liLDmraPnorrnmoTkvY3nva7kuIrjgIIKKworICAgICBkKSBDYW4geW91IGxlYXJuIHRvbz8KKyAgICAgYikgVmlvbGV0cyBhcmUgYmx1ZSwKKyAgICAgYykgSW50ZWxsaWdlbmNlIGlzIGxlYXJuZWQsCisgICAgIGEpIFJvc2VzIGFyZSByZWQsCisKKworCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJICAgICAgIOesrOS4ieism+esrOS6jOevgO+4sOabv+aPm+mhnuWRveS7pAorCisKKwkgICoqIOi8uOWFpSByIOWSjOS4gOWAi+Wtl+espuabv+aPm+WFieaomeaJgOWcqOS9jee9rueahOWtl+espuOAgioqCisKKyAgMS4g6KuL5bCH5YWJ5qiZ56e75YuV5Yiw5pys56+A5Lit5LiL6Z2i5qiZ6KiY5pyJIC0tLT4g55qE56ys5LiA6KGM44CCCisKKyAgMi4g6KuL56e75YuV5YWJ5qiZ5Yiw56ys5LiA5YCL6Yyv6Kqk55qE6YGp55W25L2N572u44CCCisKKyAgMy4g5o6l6JGX6Ly45YWlIHIg77yM6YCZ5qij5bCx6IO95bCH6Yyv6Kqk5pu/5o+b5o6J5LqG44CCCisKKyAgNC4g6YeN5b6p5q2l6amfMuWSjOatpempnzPvvIznm7TliLDnrKzkuIDooYzlt7LntpPkv67mlLnlroznlaLjgIIKKworLS0tPiAgV2hhbiB0aGlzIGxpbWUgd2FzIHR1b2VkIGluLCBzb21lb25lIHByZXNzd2Qgc29tZSB3cm9qZyBrZXlzIQorLS0tPiAgV2hlbiB0aGlzIGxpbmUgd2FzIHR5cGVkIGluLCBzb21lb25lIHByZXNzZWQgc29tZSB3cm9uZyBrZXlzIQorCisgIDUuIOeEtuW+jOaIkeWAkee5vOe6jOWtuOagoeesrOS4ieism+esrOS4ieevgOOAggorCivnibnliKXmj5DnpLrvuLDliIfoqJjmgqjopoHlnKjkvb/nlKjkuK3lrbjnv5LvvIzogIzkuI3mmK/lnKjoqJjmhrbkuK3lrbjnv5LjgIIKKworCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkJ56ys5LiJ6Kyb56ys5LiJ56+A77iw5pu05pS56aGe5ZG95LukCisKKworCSAgICoqIOimgeaUueiuiuS4gOWAi+WWruWtly/llq7oqZ7nmoTpg6jliIbmiJbogIXlhajpg6jvvIzoq4vovLjlhaUgY3cgKioKKworICAxLiDoq4vlsIflhYnmqJnnp7vli5XliLDmnKznr4DkuK3kuIvpnaLmqJnoqJjmnIkgLS0tPiDnmoTnrKzkuIDooYzjgIIKKworICAyLiDmjqXokZfmiorlhYnmqJnmlL7lnKjllq7oqZ4gbHVidyDnmoTlrZfmr40gdSDnmoTkvY3nva7pgqPoo6HjgIIKKworICAzLiDnhLblvozovLjlhaUgY3cg5bCx5Y+v5Lul5L+u5q2j6Kmy5Zau6Kme5LqGKOWcqOacrOS+i+mAmeijoeaYr+i8uOWFpSBpbmUg44CCKQorCisgIDQuIOacgOW+jOaMiSA8RVNDPiDpjbXvvIznhLblvozlhYnmqJnlrprkvY3liLDkuIvkuIDlgIvpjK/oqqTnrKzkuIDlgIvmupblgpnmm7TmlLnnmoTlrZfmr43omZXjgIIKKworICA1LiDph43lvqnmraXpqZ8z5ZKM5q2l6amfNO+8jOebtOWIsOesrOS4gOWAi+WPpeWtkOWujOWFqOmbt+WQjOesrOS6jOWAi+WPpeWtkOOAggorCistLS0+IFRoaXMgbHVidyBoYXMgYSBmZXcgd3B0ZmQgdGhhdCBtcnJmIGNoYW5naW5nIHVzZiB0aGUgY2hhbmdlIGNvbW1hbmQuCistLS0+IFRoaXMgbGluZSBoYXMgYSBmZXcgd29yZHMgdGhhdCBuZWVkIGNoYW5naW5nIHVzaW5nIHRoZSBjaGFuZ2UgY29tbWFuZC4KKwor5o+Q56S677iw6KuL5rOo5oSPIGN3IOWRveS7pOS4jeWDheWDheaYr+abv+aPm+S6huS4gOWAi+WWruipnu+8jOS5n+iuk+aCqOmAsuWFpeaWh+acrOaPkuWFpeeLgOaFi+S6huOAggorCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCSAgICAgICDnrKzkuInorJvnrKzlm5vnr4DvuLDkvb/nlKhj5oyH5Luk55qE5YW25LuW5pu05pS56aGe5ZG95LukCisKKworCSAgICAgKiog5pu05pS56aGe5oyH5Luk5Y+v5Lul5L2/55So5ZCM5Yiq6Zmk6aGe5ZG95Luk5omA5L2/55So55qE5bCN6LGh5Y+D5pW444CCKioKKworICAxLiDmm7TmlLnpoZ7mjIfku6TnmoTlt6XkvZzmlrnlvI/ot5/liKrpmaTpoZ7lkb3ku6TmmK/kuIDoh7TnmoTjgILmk43kvZzmoLzlvI/mmK/vuLAKKworICAgICAgIFtudW1iZXJdICAgYyAgIG9iamVjdAkgICDmiJbogIUJICAgIGMJW251bWJlcl0gICBvYmplY3QKKworICAyLiDlsI3osaHlj4PmlbjkuZ/mmK/kuIDmqKPnmoTvvIzmr5TlpoIgdyDku6Pooajllq7lrZcv5Zau6Kme77yMJOS7o+ihqOihjOacq+etieetieOAggorCisgIDMuIOiri+Wwh+WFieaomeenu+WLleWIsOacrOevgOS4reS4i+mdouaomeiomOaciSAtLS0+IOeahOesrOS4gOihjOOAggorCisgIDQuIOaOpeiRl+Wwh+WFieaomeenu+WLleWIsOesrOS4gOWAi+mMr+iqpOiZleOAggorCisgIDUuIOeEtuW+jOi8uOWFpSBjJCDkvb/lvpfoqbLooYzliankuIvnmoTpg6jliIbmm7TmraPlvpflkIznrKzkuozooYzkuIDmqKPjgILmnIDlvozmjIkgPEVTQz4g6Y2144CCCisKKy0tLT4gVGhlIGVuZCBvZiB0aGlzIGxpbmUgbmVlZHMgc29tZSBoZWxwIHRvIG1ha2UgaXQgbGlrZSB0aGUgc2Vjb25kLgorLS0tPiBUaGUgZW5kIG9mIHRoaXMgbGluZSBuZWVkcyB0byBiZSBjb3JyZWN0ZWQgdXNpbmcgdGhlICBjJCAgY29tbWFuZC4KKworCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkJICAgICAgIOesrOS4ieism+Wwj+e1kAorCisKKyAgMS4g6KaB6YeN5paw572u5YWl5bey57aT5Yiq6Zmk55qE5paH5pys5YWn5a6577yM6KuL6Ly45YWl5bCP5a+r5a2X5q+NIHDjgILoqbLmk43kvZzlj6/ku6XlsIflt7LliKrpmaQKKyAgICAg55qE5paH5pys5YWn5a65572u5LqO5YWJ5qiZ5LmL5b6M44CC5aaC5p6c5pyA5b6M5LiA5qyh5Yiq6Zmk55qE5piv5LiA5YCL5pW06KGM77yM6YKj6bq86Kmy6KGM5bCH572uCisgICAgIOS6jueVtuWJjeWFieaomeaJgOWcqOihjOeahOS4i+S4gOihjOOAggorCisgIDIuIOimgeabv+aPm+WFieaomeaJgOWcqOS9jee9rueahOWtl+espu+8jOiri+i8uOWFpeWwj+Wvq+eahCByIOWSjOimgeabv+aPm+aOieWOn+S9jee9ruWtl+espueahOaWsOWtlworICAgICDnrKbljbPlj6/jgIIKKworICAzLiDmm7TmlLnpoZ7lkb3ku6TlhYHoqLHmgqjmlLnorormjIflrprnmoTlsI3osaHvvIzlvp7nlbbliY3lhYnmqJnmiYDlnKjkvY3nva7nm7TliLDlsI3osaHnmoTmnKvlsL7jgIIKKyAgICAg5q+U5aaC6Ly45YWlIGN3IOWPr+S7peabv+aPm+eVtuWJjeWFieaomeWIsOWWruipnueahOacq+WwvueahOWFp+Wuue+8m+i8uOWFpSBjJCDlj6/ku6Xmm7/mj5vnlbYKKyAgICAg5YmN5YWJ5qiZ5Yiw6KGM5pyr55qE5YWn5a6544CCCisKKyAgNC4g5pu05pS56aGe5ZG95Luk55qE5qC85byP5piv77iwCisKKwkgW251bWJlcl0gICBjCW9iamVjdAkgICAgICDmiJbogIUJYyAgIFtudW1iZXJdICAgb2JqZWN0CisKK+S4i+mdouaIkeWAkee5vOe6jOWtuOe/kuS4i+S4gOism+OAggorCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCSAgICAg56ys5Zub6Kyb56ys5LiA56+A77iw5a6a5L2N5Y+K5paH5Lu254uA5oWLCisKKworICAqKiDovLjlhaUgQ1RSTC1nIOmhr+ekuueVtuWJjee3qOi8r+aWh+S7tuS4reeVtuWJjeWFieaomeaJgOWcqOihjOS9jee9ruS7peWPiuaWh+S7tueLgOaFi+S/oeaBr+OAggorICAgICDovLjlhaUgU0hJRlQtRyDliYfnm7TmjqXot7PovYnliLDmlofku7bkuK3nmoTmn5DkuIDmjIflrprooYzjgIIqKgorCisgIOaPkOekuu+4sOWIh+iomOimgeWFiOmAmuiugOacrOevgOWFp+Wuue+8jOS5i+W+jOaJjeWPr+S7peWft+ihjOS7peS4i+atpempnyEhIQorCisgIDEuIOaMieS4iyBDVFJMIOmNteS4jeaUvumWi+eEtuW+jOaMiSBnIOmNteOAgueEtuW+jOWwseacg+eci+WIsOmggemdouacgOW6lemDqOWHuuePvuS4gOWAi+eLgOaFi+S/oQorICAgICDmga/ooYzvvIzpoa/npLrnmoTlhaflrrnmmK/nlbbliY3nt6jovK/nmoTmlofku7blkI3lkozmlofku7bnmoTnuL3ooYzmlbjjgILoq4voqJjkvY/mraXpqZ8z55qE6KGM6Jmf44CCCisKKyAgMi4g5oyJ5LiLIFNISUZULUcg6Y215Y+v5Lul5L2/5b6X55W25YmN5YWJ5qiZ55u05o6l6Lez6L2J5Yiw5paH5Lu25pyA5b6M5LiA6KGM44CCCisKKyAgMy4g6Ly45YWl5oKo5pu+5YGc55WZ55qE6KGM6Jmf77yM54S25b6M5oyJ5LiLIFNISUZULUfjgILpgJnmqKPlsLHlj6/ku6Xov5Tlm57liLDmgqjnrKzkuIDmrKHmjInkuIsKKyAgICAgQ1RSTC1nIOaZguaJgOWcqOeahOihjOWlveS6huOAguazqOaEj++4sOi8uOWFpeihjOiZn+aZgu+8jOihjOiZn+aYr+S4jeacg+WcqOWxj+W5leS4iumhr+ekuuWHuuS+hgorICAgICDnmoTjgIIKKworICA0LiDlpoLmnpzpoZjmhI/vvIzmgqjlj6/ku6Xnubznuozln7fooYzmraXpqZ8x6Iez5q2l6amf5LiJ44CCCisKKworCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCeesrOWbm+ism+esrOS6jOevgO+4sOaQnOe0oumhnuWRveS7pAorCisKKyAgICAgKiog6Ly45YWlIC8g5Lul5Y+K5bC+6Zqo55qE5a2X56ym5Liy5Y+v5Lul55So5Lul5Zyo55W25YmN5paH5Lu25Lit5p+l5om+6Kmy5a2X56ym5Liy44CCKioKKworICAxLiDlnKjmraPluLjmqKHlvI/kuIvovLjlhaUgLyDlrZfnrKbjgILmgqjmraTmmYLmnIPms6jmhI/liLDoqbLlrZfnrKblkozlhYnmqJnpg73mnIPlh7rnj77lnKjlsY/luZXlupUKKyAgICAg6YOo77yM6YCZ6LefIDog5ZG95Luk5piv5LiA5qij55qE44CCCisKKyAgMi4g5o6l6JGX6Ly45YWlIGVycnJvb3IgPOWbnui7ij7jgILpgqPlgItlcnJyb29y5bCx5piv5oKo6KaB5p+l5om+55qE5a2X56ym5Liy44CCCisKKyAgMy4g6KaB5p+l5om+5ZCM5LiK5LiA5qyh55qE5a2X56ym5Liy77yM5Y+q6ZyA6KaB5oyJIG4g6Y2144CC6KaB5ZCR55u45Y+N5pa55ZCR5p+l5om+5ZCM5LiK5LiA5qyh55qE5a2XCisgICAgIOespuS4su+8jOiri+i8uOWFpSBTaGlmdC1OIOWNs+WPr+OAggorCisgIDQuIOWmguaenOaCqOaDs+mAhuWQkeafpeaJvuWtl+espuS4su+8jOiri+S9v+eUqCA/IOS7o+abvyAvIOmAsuihjOOAggorCistLS0+IFdoZW4gdGhlIHNlYXJjaCByZWFjaGVzIHRoZSBlbmQgb2YgdGhlIGZpbGUgaXQgd2lsbCBjb250aW51ZSBhdCB0aGUgc3RhcnQuCisKKyAgImVycnJvb3IiIGlzIG5vdCB0aGUgd2F5IHRvIHNwZWxsIGVycm9yOyAgZXJycm9vciBpcyBhbiBlcnJvci4KKworICDmj5DnpLrvuLDlpoLmnpzmn6Xmib7lt7LntpPliLDpgZTmlofku7bmnKvlsL7vvIzmn6Xmib7mnIPoh6rli5Xlvp7mlofku7bpoK3pg6jnubznuozmn6Xmib7jgIIKKworCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkgICDnrKzlm5vorJvnrKzkuInnr4DvuLDphY3lsI3mi6zomZ/nmoTmn6Xmib4KKworCisJICAgICAgKiog5oyJICUg5Y+v5Lul5p+l5om+6YWN5bCN55qE5ous6JmfICnjgIFd44CBfeOAgioqCisKKyAgMS4g5oqK5YWJ5qiZ5pS+5Zyo5pys56+A5LiL6Z2i5qiZ6KiY5pyJIC0tPiDpgqPkuIDooYzkuK3nmoTku7vkvZXkuIDlgIsgKOOAgVsg5oiWIHsg6JmV44CCCisKKyAgMi4g5o6l6JGX5oyJICUg5a2X56ym44CCCisKKyAgMy4g5q2k5pmC5YWJ5qiZ55qE5L2N572u5oeJ55W25piv5Zyo6YWN5bCN55qE5ous6Jmf6JmV44CCCisKKyAgNC4g5YaN5qyh5oyJICUg5bCx5Y+v5Lul6Lez5Zue6YWN5bCN55qE56ys5LiA5YCL5ous6Jmf6JmV44CCCisKKy0tLT4gVGhpcyAoIGlzIGEgdGVzdCBsaW5lIHdpdGggKCdzLCBbJ3MgXSBhbmQgeydzIH0gaW4gaXQuICkpCisKK+aPkOekuu+4sOWcqOeoi+W6j+iqv+ippuaZgu+8jOmAmeWAi+WKn+iDveeUqOS+huafpeaJvuS4jemFjeWwjeeahOaLrOiZn+aYr+W+iOacieeUqOeahOOAggorCisKKworCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCSAgICAgIOesrOWbm+ism+esrOWbm+evgO+4sOS/ruato+mMr+iqpOeahOaWueazleS5i+S4gAorCisKKwkJKiog6Ly45YWlIDpzL29sZC9uZXcvZyDlj6/ku6Xmm7/mj5sgb2xkIOeCuiBuZXfjgIIqKgorCisgIDEuIOiri+Wwh+WFieaomeenu+WLleWIsOacrOevgOS4reS4i+mdouaomeiomOaciSAtLS0+IOeahOmCo+S4gOihjOOAggorCisgIDIuIOi8uOWFpSA6cy90aGVlL3RoZSA85Zue6LuKPiDjgILoq4vms6jmhI/oqbLlkb3ku6Tlj6rmlLnororlhYnmqJnmiYDlnKjooYznmoTnrKzkuIDlgIvljLnphY0KKyAgICAg5Liy44CCCisKKyAgMy4g6Ly45YWlIDpzL3RoZWUvdGhlL2cJ5YmH5piv5pu/5o+b5YWo6KGM55qE5Yy56YWN5Liy44CCCisKKy0tLT4gdGhlIGJlc3QgdGltZSB0byBzZWUgdGhlZSBmbG93ZXJzIGlzIGluIHRoZWUgc3ByaW5nLgorCisgIDQuIOimgeabv+aPm+WFqeihjOS5i+mWk+WHuuePvueahOavj+WAi+WMuemFjeS4su+8jOiri+i8uOWFpSA6Iywjcy9vbGQvbmV3L2cgKCMsI+S7o+ihqOeahOaYrworICAgICDlhanooYznmoTooYzomZ8p44CC6Ly45YWlIDolcy9vbGQvbmV3L2cg5YmH5piv5pu/5o+b5pW05YCL5paH5Lu25Lit55qE5q+P5YCL5Yy56YWN5Liy44CCCisKKworCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkJICAgICAgIOesrOWbm+ism+Wwj+e1kAorCisKKyAgMS4gQ3RybC1nIOeUqOS6jumhr+ekuueVtuWJjeWFieaomeaJgOWcqOS9jee9ruWSjOaWh+S7tueLgOaFi+S/oeaBr+OAglNoaWZ0LUcg55So5LqO5bCH5YWJ5qiZ6LezCisgICAgIOi9ieiHs+aWh+S7tuacgOW+jOS4gOihjOOAguWFiOaVsuWFpeS4gOWAi+ihjOiZn+eEtuW+jOaMiSBTaGlmdC1HIOWJh+aYr+Wwh+WFieaomeenu+WLleiHs+ipsuihjAorICAgICDomZ/ku6PooajnmoTooYzjgIIKKworICAyLiDovLjlhaUgLyDnhLblvoznt4rpmqjkuIDlgIvlrZfnrKbkuLLmmK/liYfmmK/lnKjnlbbliY3miYDnt6jovK/nmoTmlofmqpTkuK3lkJHlvozmn6Xmib7oqbLlrZfnrKbkuLLjgIIKKyAgICAg6Ly45YWl5ZWP6JmfID8g54S25b6M57eK6Zqo5LiA5YCL5a2X56ym5Liy5piv5YmH5piv5Zyo55W25YmN5omA57eo6Lyv55qE5paH5qqU5Lit5ZCR5YmN5p+l5om+6Kmy5a2XCisgICAgIOespuS4suOAguWujOaIkOS4gOasoeafpeaJvuS5i+W+jOaMiSBuIOmNteWJh+aYr+mHjeW+qeS4iuS4gOasoeeahOWRveS7pO+8jOWPr+WcqOWQjOS4gOaWueWQkeS4iuafpQorICAgICDmib7kuIvkuIDlgIvlrZfnrKbkuLLmiYDlnKjvvJvmiJbogIXmjIkgU2hpZnQtTiDlkJHnm7jlj43mlrnlkJHmn6Xmib7kuIvoqbLlrZfnrKbkuLLmiYDlnKjjgIIKKworICAzLiDlpoLmnpzlhYnmqJnnlbbliY3kvY3nva7mmK/mi6zomZ8o44CBKeOAgVvjgIFd44CBe+OAgX3vvIzmjIkgJSDlj6/ku6XlsIflhYnmqJnnp7vli5XliLDphY3lsI3nmoQKKyAgICAg5ous6Jmf5LiK44CCCisKKyAgNC4g5Zyo5LiA6KGM5YWn5pu/5o+b6aCt5LiA5YCL5a2X56ym5LiyIG9sZCDngrrmlrDnmoTlrZfnrKbkuLIgbmV377yM6KuL6Ly45YWlICA6cy9vbGQvbmV3CisgICAgIOWcqOS4gOihjOWFp+abv+aPm+aJgOacieeahOWtl+espuS4siBvbGQg54K65paw55qE5a2X56ym5LiyIG5ld++8jOiri+i8uOWFpSAgOnMvb2xkL25ldy9nCisgICAgIOWcqOWFqeihjOWFp+abv+aPm+aJgOacieeahOWtl+espuS4siBvbGQg54K65paw55qE5a2X56ym5LiyIG5ld++8jOiri+i8uOWFpSAgOiMsI3Mvb2xkL25ldy9nCisgICAgIOWcqOaWh+S7tuWFp+abv+aPm+aJgOacieeahOWtl+espuS4siBvbGQg54K65paw55qE5a2X56ym5LiyIG5ld++8jOiri+i8uOWFpSAgOiVzL29sZC9uZXcvZworICAgICDpgLLooYzlhajmlofmm7/mj5vmmYLoqaLllY/nlKjmiLbnorroqo3mr4/lgIvmm7/mj5vpnIDmt7vliqAgYyDpgbjpoIXvvIzoq4vovLjlhaUgOiVzL29sZC9uZXcvZ2MKKworCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJ56ys5LqU6Kyb56ys5LiA56+A77iw5ZyoIFZJTSDlhafln7fooYzlpJbpg6jlkb3ku6TnmoTmlrnms5UKKworCisJICAgKiog6Ly45YWlIDohIOeEtuW+jOe3iumaqOiRl+i8uOWFpeS4gOWAi+WklumDqOWRveS7pOWPr+S7peWft+ihjOipsuWklumDqOWRveS7pOOAgioqCisKKyAgMS4g5oyJ5LiL5oiR5YCR5omA54af5oKJ55qEIDog5ZG95Luk6Kit572u5YWJ5qiZ5Yiw5bGP5bmV5bqV6YOo44CC6YCZ5qij5bCx5Y+v5Lul6K6T5oKo6Ly45YWl5ZG95Luk5LqG44CCCisKKyAgMi4g5o6l6JGX6Ly45YWl5oSf5ZiG6JmfICEg6YCZ5YCL5a2X56ym77yM6YCZ5qij5bCx5YWB6Kix5oKo5Z+36KGM5aSW6YOo55qEIHNoZWxsIOWRveS7pOS6huOAggorCisgIDMuIOaIkeWAkeS7pSBscyDlkb3ku6TngrrkvovjgILovLjlhaUgIWxzIDzlm57ou4o+IOOAguipsuWRveS7pOWwseacg+WIl+iIieWHuuaCqOeVtuWJjeebrumMhOeahAorICAgICDlhaflrrnvvIzlsLHlpoLlkIzmgqjlnKjlkb3ku6TooYzmj5DnpLrnrKbkuIvovLjlhaUgbHMg5ZG95Luk55qE57WQ5p6c5LiA5qij44CC5aaC5p6cICFscyDmspLotbcKKyAgICAg5L2c55So77yM5oKo5Y+v5Lul6Kmm6KmmIDohZGlyIOeci+eci+OAggorCistLS0+IOaPkOekuu+4sCDmiYDmnInnmoTlpJbpg6jlkb3ku6Tpg73lj6/ku6Xku6XpgJnnqK7mlrnlvI/ln7fooYzjgIIKKworLS0tPiDmj5DnpLrvuLAg5omA5pyJ55qEIDog5ZG95Luk6YO95b+F6aCI5LulIDzlm57ou4o+IOWRiue1guOAggorCisKKworCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJICAgICAg56ys5LqU6Kyb56ys5LqM56+A77iw6Zec5LqO5L+d5a2Y5paH5Lu255qE5pu05aSa5L+h5oGvCisKKworCSAgICAgKiog6KaB5bCH5bCN5paH5Lu255qE5pS55YuV5L+d5a2Y5Yiw5paH5Lu25Lit77yM6KuL6Ly45YWlIDp3IEZJTEVOQU1FICoqCisKKyAgMS4g6Ly45YWlIDohZGlyIOaIluiAhSA6IWxzIOeNsuefpeeVtuWJjeebrumMhOeahOWFp+WuueOAguaCqOaHieeVtuW3suefpemBk+acgOW+jOmChOW+l+aVsgorICAgICA85Zue6LuKPiDlkKfjgIIKKworICAyLiDpgbjmk4fkuIDlgIvlsJrmnKrlrZjlnKjmlofku7blkI3vvIzmr5TlpoIgVEVTVCDjgIIKKworICAzLiDmjqXokZfovLjlhaUgOncgVEVTVCAgKOatpOiZlSBURVNUIOaYr+aCqOaJgOmBuOaTh+eahOaWh+S7tuWQjeOAgikKKworICA0LiDoqbLlkb3ku6TmnIPku6UgVEVTVCDngrrmlofku7blkI3kv53lrZjmlbTlgIvmlofku7YgKFZJTSDmlZnnqIsp44CC54K65LqG56K65L+d5q2j56K65L+d5a2Y77yMCisgICAgIOiri+WGjeasoei8uOWFpSA6IWRpciDmn6XnnIvmgqjnmoTnm67pjITliJfooajlhaflrrnjgIIKKworLS0tPiDoq4vms6jmhI/vuLDlpoLmnpzmgqjpgIDlh7ogVklNIOeEtuW+jOWcqOS7peaWh+S7tuWQjSBURVNUIOeCuuWPg+aVuOmAsuWFpe+8jOmCo+m6vOipsuaWh+S7tuWFpworICAgICDlrrnmh4noqbLlkIzmgqjkv53lrZjmmYLnmoTmlofku7blhaflrrnmmK/lrozlhajkuIDmqKPnmoTjgIIKKworICA1LiDnj77lnKjmgqjlj6/ku6XpgJrpgY7ovLjlhaUgOiFybSBURVNUIOS+huWIqumZpCBURVNUIOaWh+S7tuS6huOAggorCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCSAgICDnrKzkupTorJvnrKzkuInnr4DvuLDkuIDlgIvlhbfmnInpgbjmk4fmgKfnmoTkv53lrZjlkb3ku6QKKworCisJCSoqIOimgeS/neWtmOaWh+S7tueahOmDqOWIhuWFp+Wuue+8jOiri+i8uOWFpSA6IywjIHcgRklMRU5BTUUgKioKKworICAxLiDlho3kvobln7fooYzkuIDmrKEgOiFkaXIg5oiW6ICFIDohbHMg542y55+l55W25YmN55uu6YyE55qE5YWn5a6577yM54S25b6M6YG45pOH5LiA5YCL5ZCI6YGp55qECisgICAgIOS4jemHjeWQjeeahOaWh+S7tuWQje+8jOavlOWmgiBURVNUIOOAggorCisgIDIuIOaOpeiRl+Wwh+WFieaomeenu+WLleiHs+acrOmggeeahOacgOmgguerr++8jOeEtuW+jOaMiSBDVFJMLWcg5om+5Yiw6Kmy6KGM55qE6KGM6Jmf44CC5Yil5b+Y5LqGCisgICAgIOihjOiZn+WTpuOAggorCisgIDMuIOaOpeiRl+aKiuWFieaomeenu+WLleiHs+acrOmggeeahOacgOW6leerr++8jOWGjeaMieS4gOasoSBDVFJMLWcg44CC5Lmf5Yil5b+Y5LqG6YCZ5YCL6KGM5aW95ZOm44CCCisKKyAgNC4g54K65LqG5Y+q5L+d5a2Y5paH56ug55qE5p+Q5YCL6YOo5YiG77yM6KuL6Ly45YWlIDojLCMgdyBURVNUIOOAgumAmeijoeeahCAjLCMg5bCx5piv5LiK6Z2iCisgICAgIOimgeaxguaCqOiomOS9j+eahOihjOiZnyjpoILnq6/ooYzomZ8s5bqV56uv6KGM6JmfKe+8jOiAjCBURVNUIOWwseaYr+mBuOWumueahOaWh+S7tuWQjeOAggorCisgIDUuIOacgOW+jO+8jOeUqCA6IWRpciDnorroqo3mlofku7bmmK/lkKbmraPnorrkv53lrZjjgILkvYbmmK/pgJnmrKHlhYjliKXliKrpmaTmjonjgIIKKworCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCSAgIOesrOS6lOism+esrOWbm+evgO+4sOaPkOWPluWSjOWQiOS4puaWh+S7tgorCisKKyAgICAgICAqKiDopoHlkJHnlbbliY3mlofku7bkuK3mj5LlhaXlj6blpJbnmoTmlofku7bnmoTlhaflrrnvvIzoq4vovLjlhaUgOnIgRklMRU5BTUUgKioKKworICAxLiDoq4vpjbXlhaUgOiFkaXIg56K66KqN5oKo5YmN6Z2i5Ym15bu655qEIFRFU1Qg5paH5Lu26YKE5Zyo44CCCisKKyAgMi4g54S25b6M5bCH5YWJ5qiZ56e75YuV6Iez55W25YmN6aCB6Z2i55qE6aCC56uv44CCCisKK+eJueWIpeaPkOekuu+4sCDln7fooYzmraXpqZ8z5LmL5b6M5oKo5bCH55yL5Yiw56ys5LqU6Kyb56ys5LiJ56+A77yM6KuL5bGG5pmC5YaN5b6A5LiL56e75YuV5Zue5Yiw6YCZ6KOh5L6G44CCCisKKyAgMy4g5o6l6JGX6YCa6YGOIDpyIFRFU1Qg5bCH5YmN6Z2i5Ym15bu655qE5ZCN54K6IFRFU1Qg55qE5paH5Lu25o+Q5Y+W6YCy5L6G44CCCisKK+eJueWIpeaPkOekuu+4sOaCqOaJgOaPkOWPlumAsuS+hueahOaWh+S7tuWwh+W+nuWFieaomeaJgOWcqOS9jee9ruiZlemWi+Wni+e9ruWFpeOAggorCisgIDQuIOeCuuS6hueiuuiqjeaWh+S7tuW3sue2k+aPkOWPluaIkOWKn++8jOenu+WLleWFieaomeWbnuWIsOWOn+S+hueahOS9jee9ruWwseWPr+S7peazqOaEj+acieWFqeS7veesrAorICAgICDkupTorJvnrKzkuInnr4DvvIzkuIDku73mmK/ljp/mnKzvvIzlj6blpJbkuIDku73mmK/kvoboh6rmlofku7bnmoTlia/mnKzjgIIKKworCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkJICAgICAgIOesrOS6lOism+Wwj+e1kAorCisKKyAgMS4gOiFjb21tYW5kIOeUqOS6juWft+ihjOS4gOWAi+WklumDqOWRveS7pCBjb21tYW5k44CCCisKKyAgICAg6KuL55yL5LiA5Lqb5a+m6Zqb5L6L5a2Q77iwCisJIDohZGlyCQktICDnlKjkuo7poa/npLrnlbbliY3nm67pjITnmoTlhaflrrnjgIIKKwkgOiFybSBGSUxFTkFNRQktICDnlKjkuo7liKrpmaTlkI3ngrogRklMRU5BTUUg55qE5paH5Lu244CCCisKKyAgMi4gOncgRklMRU5BTUUgIOWPr+Wwh+eVtuWJjSBWSU0g5Lit5q2j5Zyo57eo6Lyv55qE5paH5Lu25L+d5a2Y5Yiw5ZCN54K6IEZJTEVOQU1FCisgICAgIOeahOaWh+S7tuS4reOAggorCisgIDMuIDojLCN3IEZJTEVOQU1FIOWPr+Wwh+eVtuWJjee3qOi8r+aWh+S7tuesrCAjIOihjOiHs+esrCAjIOihjOeahOWFp+WuueS/neWtmOWIsOaWh+S7tgorICAgICBGSUxFTkFNRSDkuK3jgIIKKworICA0LiA6ciBGSUxFTkFNRSDlj6/mj5Dlj5bno4Hnm6Tmlofku7YgRklMRU5BTUUg5Lim5bCH5YW25o+S5YWl5Yiw55W25YmN5paH5Lu255qE5YWJ5qiZ5L2N572uCisgICAgIOW+jOmdouOAggorCisKKworCisKKworCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSDnrKzlha3orJvnrKzkuIDnr4DvuLDmiZPplovpoZ7lkb3ku6QKKworCisJICoqIOi8uOWFpSBvIOWwh+WcqOWFieaomeeahOS4i+aWueaJk+mWi+aWsOeahOS4gOihjOS4pumAsuWFpeaPkuWFpeaooeW8j+OAgioqCisKKyAgMS4g6KuL5bCH5YWJ5qiZ56e75YuV5Yiw5pys56+A5Lit5LiL6Z2i5qiZ6KiY5pyJIC0tLT4g55qE6YKj5LiA6KGM44CCCisKKyAgMi4g5o6l6JGX6Ly45YWl5bCP5a+r55qEIG8g5Zyo5YWJ5qiZICrkuIvmlrkqIOaJk+mWi+aWsOeahOS4gOihjOS4pumAsuWFpeaPkuWFpeaooeW8j+OAggorCisgIDMuIOeEtuW+jOW+qeWItuaomeiomOaciSAtLS0+IOeahOihjOS4puaMiSA8RVNDPiDpjbXpgIDlh7rmj5LlhaXmqKHlvI/ogIzpgLLlhaXmraPluLjmqKHlvI/jgIIKKworLS0tPiBBZnRlciB0eXBpbmcgIG8gIHRoZSBjdXJzb3IgaXMgcGxhY2VkIG9uIHRoZSBvcGVuIGxpbmUgaW4gSW5zZXJ0IG1vZGUuCisKKyAgNC4g54K65LqG5Zyo5YWJ5qiZICrkuIrmlrkqIOaJk+mWi+aWsOeahOS4gOihjO+8jOWPqumcgOimgei8uOWFpeWkp+Wvq+eahCBPIOiAjOS4jeaYr+Wwj+Wvq+eahCBvCisgICAgIOWwseWPr+S7peS6huOAguiri+WcqOS4i+ihjOa4rOippuS4gOS4i+WQp+OAgueVtuWFieaomeiZleWcqOWcqOipsuihjOS4iuaZgu+8jOaMiSBTaGlmdC1P5Y+v5LulCisgICAgIOWcqOipsuihjOS4iuaWueaWsOmWi+S4gOihjOOAggorCitPcGVuIHVwIGEgbGluZSBhYm92ZSB0aGlzIGJ5IHR5cGluZyBTaGlmdC1PIHdoaWxlIHRoZSBjdXJzb3IgaXMgb24gdGhpcyBsaW5lLgorCisKKworCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkJ56ys5YWt6Kyb56ys5LqM56+A77iw5YWJ5qiZ5b6M5o+S5YWl6aGe5ZG95LukCisKKworCQkgICAgICoqIOi8uOWFpSBhIOWwh+WPr+WcqOWFieaomeS5i+W+jOaPkuWFpeaWh+acrOOAgiAqKgorCisgIDEuIOiri+WcqOato+W4uOaooeW8j+S4i+mAmumBjui8uOWFpSAkIOWwh+WFieaomeenu+WLleWIsOacrOevgOS4reS4i+mdouaomeiomOaciSAtLS0+IOeahOesrOS4gOihjAorICAgICDnmoTmnKvlsL7jgIIKKworICAyLiDmjqXokZfovLjlhaXlsI/lr6vnmoQgYSDliYflj6/lnKjlhYnmqJnkuYvlvozmj5LlhaXmlofmnKzkuobjgILlpKflr6vnmoQgQSDliYflj6/ku6Xnm7TmjqXlnKjooYwKKyAgICAg5pyr5o+S5YWl5paH5pys44CCCisKK+aPkOekuu+4sOi8uOWFpeWkp+WvqyBBIOeahOaTjeS9nOaWueazleWPr+S7peWcqOihjOacq+aPkuWFpeaWh+acrO+8jOmBv+WFjeS6hui8uOWFpSBp77yM5YWJ5qiZ5a6a5L2N5YiwCisgICAgICDmnIDlvozkuIDlgIvlrZfnrKbvvIzovLjlhaXnmoTmlofmnKzvvIw8RVNDPiDlm57lvqnmraPluLjmqKHlvI/vvIznrq3poK3lj7PpjbXnp7vli5XlhYnmqJnku6Xlj4oKKyAgICAgIHgg5Yiq6Zmk55W25YmN5YWJ5qiZ5omA5Zyo5L2N572u5a2X56ym562J562J6Ku45aSa57mB6Zuc55qE5pON5L2c44CCCisKKyAgMy4g5pON5L2c5LmL5b6M56ys5LiA6KGM5bCx5Y+v5Lul6KOc5YWF5a6M5pW05LqG44CC6KuL5rOo5oSP5YWJ5qiZ5b6M5o+S5YWl5paH5pys6IiH5o+S5YWl5qih5byP5piv5Z+6CisgICAgIOacrOWujOWFqOS4gOiHtOeahO+8jOWPquaYr+aWh+acrOaPkuWFpeeahOS9jee9ruWumuS9jeeojeacieS4jeWQjOe9t+S6huOAggorCistLS0+IFRoaXMgbGluZSB3aWxsIGFsbG93IHlvdSB0byBwcmFjdGljZQorLS0tPiBUaGlzIGxpbmUgd2lsbCBhbGxvdyB5b3UgdG8gcHJhY3RpY2UgYXBwZW5kaW5nIHRleHQgdG8gdGhlIGVuZCBvZiBhIGxpbmUuCisKKworCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJICAgIOesrOWFreism+esrOS4ieevgO+4sOWPpuWkluS4gOWAi+e9ruaPm+mhnuWRveS7pOeahOeJiOacrAorCisKKwkJICAgICAgKiog6Ly45YWl5aSn5a+r55qEIFIg5Y+v6YCj57qM5pu/5o+b5aSa5YCL5a2X56ym44CCKioKKworICAxLiDoq4vlsIflhYnmqJnnp7vli5XliLDmnKznr4DkuK3kuIvpnaLmqJnoqJjmnIkgLS0tPiDnmoTnrKzkuIDooYzjgIIKKworICAyLiDnp7vli5XlhYnmqJnliLDnrKzkuIDooYzkuK3kuI3lkIzkuo7mqJnmnIkgLS0tPiDnmoTnrKzkuozooYznmoTnrKzkuIDlgIvllq7oqZ7nmoTplovlp4vvvIzljbPllq4KKyAgICAg6KmeIGxhc3Qg6JmV44CCCisKKyAgMy4g54S25b6M6Ly45YWl5aSn5a+r55qEIFIg6ZaL5aeL5oqK56ys5LiA6KGM5Lit55qE5LiN5ZCM5LqO56ys5LqM6KGM55qE5Ymp5L2Z5a2X56ym6YCQ5LiA6Ly45YWl77yM5bCxCisgICAgIOWPr+S7peWFqOmDqOabv+aPm+aOieWOn+acieeahOWtl+espuiAjOS9v+W+l+esrOS4gOihjOWujOWFqOmbt+WQjOesrOS6jOihjOS6huOAggorCistLS0+IFRvIG1ha2UgdGhlIGZpcnN0IGxpbmUgdGhlIHNhbWUgYXMgdGhlIGxhc3Qgb24gdGhpcyBwYWdlIHVzZSB0aGUga2V5cy4KKy0tLT4gVG8gbWFrZSB0aGUgZmlyc3QgbGluZSB0aGUgc2FtZSBhcyB0aGUgc2Vjb25kLCB0eXBlIFIgYW5kIHRoZSBuZXcgdGV4dC4KKworICA0LiDoq4vms6jmhI/vuLDlpoLmnpzmgqjmjIkgPEVTQz4g6YCA5Ye6572u5o+b5qih5byP5Zue5b6p5q2j5bi45qih5byP77yM5bCa5pyq5pu/5o+b55qE5paH5pys5bCH5LuNCisgICAgIOeEtuS/neaMgeWOn+eLgOOAggorCisKKworCisKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCQkJICAgIOesrOWFreism+esrOWbm+evgO+4sOioree9rumhnuWRveS7pOeahOmBuOmghQorCisKKwkJICAqKiDoqK3nva7lj6/kvb/mn6Xmib7miJbogIXmm7/mj5vlj6/lv73nlaXlpKflsI/lr6vnmoTpgbjpoIUgKioKKworCisgIDEuIOimgeafpeaJvuWWruipniBpZ25vcmUg5Y+v5Zyo5q2j5bi45qih5byP5LiL6Ly45YWlIC9pZ25vcmUg44CC6KaB6YeN5b6p5p+l5om+6Kmy6Kme77yM5Y+v5LulCisgICAgIOmHjeW+qeaMiSBuIOmNteOAggorCisgIDIuIOeEtuW+jOioree9riBpYyDpgbjpoIUoaWPlsLHmmK/oi7Hmloflv73nlaXlpKflsI/lr6tJZ25vcmUgQ2FzZeeahOmmluWtl+avjee4ruWvq+ipninvvIzljbMKKyAgICAg6Ly45YWl77iwCisJOnNldCBpYworCisgIDMuIOePvuWcqOWPr+S7pemAmumBjumNteWFpSBuIOmNteWGjeasoeafpeaJvuWWruipniBpZ25vcmXjgILph43lvqnmn6Xmib7lj6/ku6Xph43lvqnpjbXlhaUgbiDpjbXjgIIKKworICA0LiDnhLblvozoqK3nva4gaGxzZWFyY2gg5ZKMIGluY3NlYXJjaCDpgJnlhanlgIvpgbjpoIXvvIzovLjlhaXku6XkuIvlhaflrrnvuLAKKyAgICAgOnNldCBobHMgaXMKKworICA1LiDnj77lnKjlj6/ku6Xlho3mrKHovLjlhaXmn6Xmib7lkb3ku6TvvIznnIvnnIvmnIPmnInku4DpurzmlYjmnpzvuLAKKyAgICAgL2lnbm9yZQorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKwkJCSAgICAgICDnrKzlha3orJvlsI/ntZAKKworCisgIDEuIOi8uOWFpeWwj+Wvq+eahCBvIOWPr+S7peWcqOWFieaomeS4i+aWueaJk+mWi+aWsOeahOS4gOihjOS4puWwh+WFieaomee9ruS6juaWsOmWi+eahOihjOmmlu+8jOmAsuWFpQorICAgICDmj5LlhaXmqKHlvI/jgIIKKyAgICAg6Ly45YWl5aSn5a+r55qEIE8g5Y+v5Lul5Zyo5YWJ5qiZ5LiK5pa55omT6ZaL5paw55qE5LiA6KGM5Lim5bCH5YWJ5qiZ572u5LqO5paw6ZaL55qE6KGM6aaW77yM6YCy5YWlCisgICAgIOaPkuWFpeaooeW8j+OAggorCisgIDIuIOi8uOWFpeWwj+Wvq+eahCBhIOWPr+S7peWcqOWFieaomeaJgOWcqOS9jee9ruS5i+W+jOaPkuWFpeaWh+acrOOAggorICAgICDovLjlhaXlpKflr6vnmoQgQSDlj6/ku6XlnKjlhYnmqJnmiYDlnKjooYznmoTooYzmnKvkuYvlvozmj5LlhaXmlofmnKzjgIIKKworICAzLiDovLjlhaXlpKflr6vnmoQgUiDlsIfpgLLlhaXmm7/mj5vmqKHlvI/vvIznm7Toh7PmjIkgPEVTQz4g6Y216YCA5Ye65pu/5o+b5qih5byP6ICM6YCy5YWl5q2j5bi4CisgICAgIOaooeW8j+OAggorCisgIDQuIOi8uOWFpSA6c2V0IHh4eCDlj6/ku6XoqK3nva4geHh4IOmBuOmgheOAggorCisKKworCisKKworCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCSAgICAgICDnrKzkuIPorJvvuLDlnKjnt5rluavliqnlkb3ku6QKKworCQkgICAgICAqKiDkvb/nlKjlnKjnt5rluavliqnns7vntbEgKioKKworICBWaW0g5pOB5pyJ5LiA5YCL57Sw6Ie05YWo6Z2i55qE5Zyo57ea5bmr5Yqp57O757Wx44CC6KaB5ZWf5YuV6Kmy5bmr5Yqp57O757Wx77yM6KuL6YG45pOH5aaC5LiL5LiJ56iu5pa5CisgIOazleS5i+S4gO+4sAorCS0g5oyJ5LiLIDxIRUxQPiDpjbUgKOWmguaenOmNteebpOS4iuacieeahOipsSkKKwktIOaMieS4iyA8RjE+IOmNtSAo5aaC5p6c6Y2155uk5LiK5pyJ55qE6KmxKQorCS0g6Ly45YWlCTpoZWxwIDzlm57ou4o+CisKKyAg6Ly45YWlIDpxIDzlm57ou4o+IOWPr+S7pemXnOmWieW5q+WKqeeql+WPo+OAggorCisgIOaPkOS+m+S4gOWAi+ato+eiuueahOWPg+aVuOe1piI6aGVscCLlkb3ku6TvvIzmgqjlj6/ku6Xmib7liLDpl5zkuo7oqbLkuLvpoYznmoTluavliqnjgILoq4voqabpqZfku6UKKyAg5LiL5Y+D5pW4KOWPr+WIpeW/mOS6huaMieWbnui7iumNteWTpuOAgjop77iwCisKKwkgIDpoZWxwIHcgPOWbnui7ij4KKwkgIDpoZWxwIGNfPFQgPOWbnui7ij4KKwkgIDpoZWxwIGluc2VydC1pbmRleCA85Zue6LuKPgorCSAgOmhlbHAgdXNlci1tYW51YWwgPOWbnui7ij4KKworCisKKworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisJCSAgICAgIOesrOWFq+ism++4sOWJteW7uuS4gOWAi+WVn+WLleiFs+acrAorCisJCQkgKiog5ZWf55Sodmlt55qE5Yqf6IO9ICoqCisKKyAgVmlt55qE5Yqf6IO954m55oCn6KaB5q+UdmnlpJrlvpflpJrvvIzkvYblpKfpg6jliIblip/og73pg73mspLmnInnvLrnnIHmv4DmtLvjgILngrrkuobllZ/li5Xmm7TlpJrnmoQKKyAg5Yqf6IO977yM5oKo5b6X5Ym15bu65LiA5YCLdmltcmPmlofku7bjgIIKKworICAxLiDplovlp4vnt6jovK92aW1yY+aWh+S7tu+8jOmAmeWPluaxuuS6juaCqOaJgOS9v+eUqOeahOaTjeS9nOezu+e1se+4sAorCisgICAgIDplZGl0IH4vLnZpbXJjCQnpgJnmmK9Vbml457O757Wx5omA5L2/55So55qE5ZG95LukCisgICAgIDplZGl0ICRWSU0vX3ZpbXJjCQnpgJnmmK9XaW5kb3dz57O757Wx5omA5L2/55So55qE5ZG95LukCisKKyAgMi4g5o6l6JGX5bCO5YWldmltcmPojIPkvovmlofku7bvuLAKKworICAgICA6cmVhZCAkVklNUlVOVElNRS92aW1yY19leGFtcGxlLnZpbQorCisgIDMuIOS/neWtmOaWh+S7tu+8jOWRveS7pOeCuu+4sAorCisgICAgIDp3cml0ZQorCisgIOWcqOS4i+asoeaCqOWVn+WLlXZpbeeahOaZguWAme+8jOe3qOi8r+WZqOWwseacg+acieS6huiqnuazlemrmOS6rueahOWKn+iDveOAguaCqOWPr+S7pee5vOe6jOaKiuaCqOWWnAorICDmraHnmoTlhbblroPlip/og73oqK3nva7mt7vliqDliLDpgJnlgIt2aW1yY+aWh+S7tuS4reOAggorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworICB2aW0g5pWZ56iL5Yiw5q2k57WQ5p2f44CC5pys5pWZ56iL5Y+q5piv54K65LqG57Ch5piO5Zyw5LuL57S55LiA5LiLdmlt57eo6Lyv5Zmo77yM5L2G5bey6Laz5Lul6K6T5oKoCisgIOW+iOWuueaYk+WtuOacg+S9v+eUqOacrOe3qOi8r+WZqOS6huOAguavi+W6uOizqueWke+8jHZpbemChOacieW+iOWkmuW+iOWkmueahOWRveS7pO+8jOacrOaVmeeoi+aJgOS7iworICDntLnnmoTpgoTlt67lvpfpgaDokZflkaLjgILmiYDku6XmgqjopoHnsr7pgJrnmoToqbHvvIzpgoTmnJvnubznuozliqrlipvlk6bjgILkuIvkuIDmraXmgqjlj6/ku6XplrHoroAKKyAgdmlt5omL5YaK77yM5L2/55So55qE5ZG95Luk5piv77iwCisJOmhlbHAgdXNlci1tYW51YWwKKworICDngrrkuobmm7TpgLLkuIDmraXnmoTlj4PogIPlkozlrbjnv5LvvIzku6XkuIvpgJnmnKzmm7jlgLzlvpfmjqjolqbvuLAKKworCVZpbSAtIFZpIEltcHJvdmVkIC0g5L2c6ICF77iwU3RldmUgT3VhbGxpbmUKKwnlh7rniYjnpL7vuLBOZXcgUmlkZXJzCisKKyAg6YCZ5piv56ys5LiA5pys5a6M5YWo6Kyb6Kejdmlt55qE5pu457GN44CC5bCN5LqO5Yid5a246ICF54m55Yil5pyJ55So44CC5YW25Lit6YKE5YyF5ZCr5pyJ5aSn6YeP5a+m5L6LCisgIOWSjOWcluekuuOAguassuefpeips+aDhe+8jOiri+ioquWVjyBodHRwOi8vaWNjZi1ob2xsYW5kLm9yZy9jbGljazUuaHRtbAorCisgIOS7peS4i+mAmeacrOabuOavlOi8g+iAgeS6huiAjOS4lOWFp+WuueS4u+imgeaYr3Zp6ICM5LiN5pivdmlt77yM5L2G5piv5Lmf5YC85b6X5o6o6Jam77iwCisKKwlMZWFybmluZyB0aGUgVmkgRWRpdG9yIC0g5L2c6ICF77iwTGluZGEgTGFtYgorCeWHuueJiOekvu+4sE8nUmVpbGx5ICYgQXNzb2NpYXRlcyBJbmMuCisKKyAg6YCZ5piv5LiA5pys5LiN6Yyv55qE5pu477yM6YCa6YGO5a6D5oKo5bm+5LmO6IO95aSg5LqG6Kej5Yiw5YWo6YOodmnog73lpKDlgZrliLDnmoTkuovmg4XjgILmraTmm7jnmoTnrKwKKyAg5YWt5YCL54mI5pys5Lmf5YyF5ZCr5LqG5LiA5Lqb6Zec5LqOdmlt55qE5L+h5oGv44CCCisKKyAg5pys5pWZ56iL5piv55Sx5L6G6IeqQ2Fsb3JhZG8gU2Nob29sIG9mIE1pbmVzZeeahE1pY2hhZWwgQy4gUGllcmNl44CBUm9iZXJ0IEsuCisgIFdhcmUg5omA57eo5a+r55qE77yM5YW25Lit5L6G6IeqQ29sb3JhZG8gU3RhdGUgVW5pdmVyc2l0eeeahENoYXJsZXMgU21pdGjmj5DkvpvkuoYKKyAg5b6I5aSa5Ym15oSP44CC57eo6ICF6YCa5L+h5Zyw5Z2A5piv77iwCisKKwlid2FyZUBtaW5lcy5jb2xvcmFkby5lZHUKKworICDmnKzmlZnnqIvlt7LnlLFCcmFtIE1vb2xlbmFhcuWwiOeCunZpbemAsuihjOS/ruioguOAggorCisKKworICDora/liLbogIXpmYToqIDvuLAKKyAgPT09PT09PT09PT0KKyAgICAgIOewoemrlOS4reaWh+aVmeeoi+e/u+itr+eJiOS5i+itr+WItuiAheeCuuaigeaYjOazsCA8YmVvc0B0dXJib2xpbnV4LmNvbS5jbj7vvIzpgoTmnIkKKyAgICAgIOWPpuWkluS4gOWAi+iBr+ezu+WcsOWdgO+4sGxpbnV4cmF0QGdudWNoaW5hLm9yZ+OAggorCisgICAgICDnuYHpq5TkuK3mlofmlZnnqIvmmK/lvp7nsKHpq5TkuK3mlofmlZnnqIvnv7vora/niYjkvb/nlKggRGViaWFuIEdOVS9MaW51eCDkuK3mlofpoIXnm67lsI8KKyAgICAgIOe1hOeahOS6juW7o+i8neWFiOeUn+e3qOWvq+eahOS4reaWh+a8ouWtl+i9ieeivOWZqCAgYXV0b2NvbnZlcnQg6L2J5o+b6ICM5oiQ55qE77yM5Lim5bCN6L2JCisgICAgICDmj5vnmoTntZDmnpzlgZrkuobkuIDkupvntLDnr4DnmoTmlLnli5XjgIIKKworICDorormm7ToqJjpjITvuLAKKyAgPT09PT09PT09CisgICAgICAyMDAy5bm0MDjmnIgzMOaXpSDmooHmmIzms7AgPGJlb3NAdHVyYm9saW51eC5jb20uY24+CisgICAgICDmhJ/orJ0gUk1TQFNNVEgg55qE5oyH5q2j77yM5bCH5aSa6JmV6Yyv6Kqk5L+u5q2j44CCCisKKyAgICAgIDIwMDLlubQwNOaciDIy5pelIOaigeaYjOazsCA8bGludXhyYXRAZ251Y2hpbmEub3JnPgorICAgICAg5oSf6KydIHh1YW5kb25nQHNoMTYzLm5ldCDnmoTmjIfmraPvvIzlsIflhanomZXpjK/liKXlrZfkv67mraPjgIIKKworICAgICAgMjAwMuW5tDAz5pyIMTjml6Ug5qKB5piM5rOwIDxsaW51eHJhdEBnbnVjaGluYS5vcmc+CisgICAgICDmoLnmk5pCcmFtIE1vbGVuYWFy5YWI55Sf5ZyoMjAwMuW5tDAz5pyIMTbml6XnmoTkvobkv6HopoHmsYLvvIzlsId2aW10dXRvcjEuNOS4reitrworICAgICAg54mI5Y2H57Sa5YiwdmltdHV0b3IxLjXjgIIKKworICAgICAgMjAwMeW5tDEx5pyIMTXml6Ug5qKB5piM5rOwIDxsaW51eHJhdEBnbnVjaGluYS5vcmc+CisgICAgICDlsId2aW10dXRvcjEuNOS4reitr+eJiOaPkOS6pOe1pkJyYW0gTW9sZW5hYXLlkoxTdmVuIEd1Y2tlc+OAggorCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4K