ClRoZSBNUEwgUmVmZXJlbmNlIE1hbnVhbAoqKioqKioqKioqKioqKioqKioqKioqKioKCjpDb3B5cmlnaHQ6IENvcHlyaWdodCCpICAyMDAxLTIwMDkgQWxla3NleSBHdXJ0b3ZveSBhbmQgRGF2aWQgQWJyYWhhbXMKCjpMaWNlbnNlOiAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSAKICAgICAgICAgICAgYWNjb21wYW55aW5nIGZpbGUgYGBMSUNFTlNFXzFfMC50eHRgYCBvciBjb3B5IGF0IAogICAgICAgICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCgoKLi4gcmF3OjogbGF0ZXgKCiAgIFxzZXRjb3VudGVye3NlY251bWRlcHRofXsyfQogICBcc2V0Y291bnRlcnt0b2NkZXB0aH17Mn0KCgouLiBUT0MgY29weXJpZ2h0OgouLiBjb3B5cmlnaHQ6OiBDb3B5cmlnaHQgqSAgMjAwMS0yMDA5IEFsZWtzZXkgR3VydG92b3kgYW5kIERhdmlkIEFicmFoYW1zCiAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKICAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCiAgICAKLi4gY29udGVudHM6OiBUYWJsZSBvZiBDb250ZW50cwogICAgOmRlcHRoOiAzCgoKLi4gfEJvb3N0LkJpbmR8IHJlcGxhY2U6OiBgQm9vc3QuQmluZCA8aHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9iaW5kL2JpbmQuaHRtbD5gX18KLi4gfEJvb3N0LkxhbWJkYXwgcmVwbGFjZTo6IGBCb29zdC5MYW1iZGEgPGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbGFtYmRhL2RvYy9pbmRleC5odG1sPmBfXwoKLi4gcm9sZTo6IHJlZmVudHJ5KGxpdGVyYWwpCgouLiB8dDF8IHJlcGxhY2U6OiBcICp0KlwgOnN1YjpgMWAKLi4gfHQyfCByZXBsYWNlOjogXCAqdCpcIDpzdWI6YDJgCi4uIHx0bnwgcmVwbGFjZTo6IFwgKnQqXCA6c3ViOmBuYAouLiB3b3JrYXJvdW5kIHdlaXJkIHN1YnN0aXR1dGlvbiBidWcgKHVzZWQgdG8gd29yayEpOgouLiB8dDEuLi50bnwgcmVwbGFjZTo6IFwgKnQqXCA6c3ViOmAxYCxcICp0KlwgOnN1YjpgMmAsLi4uIHx0bnwKCi4uIHxwMS4uLnBufCByZXBsYWNlOjogXCAqcCpcIDpzdWI6YDFgLFwgKnAqXCA6c3ViOmAyYCwuLi4gXCAqcCpcIDpzdWI6YG5gCgoKLi4gfGMxfCByZXBsYWNlOjogXCAqYypcIDpzdWI6YDFgCi4uIHxjMnwgcmVwbGFjZTo6IFwgKmMqXCA6c3ViOmAyYAouLiB8Y258IHJlcGxhY2U6OiBcICpjKlwgOnN1YjpgbmAKLi4gd29ya2Fyb3VuZCB3ZWlyZCBzdWJzdGl0dXRpb24gYnVnICh3b3JrcyB3aXRoIHQncyEpOgouLiB8YzEuLi5jbnwgcmVwbGFjZTo6IFwgKmMqXCA6c3ViOmAxYCxcICpjKlwgOnN1YjpgMmAsLi4uIFwgKmMqXCA6c3ViOmBuYAoKLi4gfHgxLi4ueG58IHJlcGxhY2U6OiAqeCpcIDpzdWI6YDFgLFwgKngqXCA6c3ViOmAyYCwuLi4gXCAqeCpcIDpzdWI6YG5gCgouLiB8Li4ufCByZXBsYWNlOjogKi4uLioKLi4gfFQxLi4uVG58IHJlcGxhY2U6OiBgYFQxYGAsIGBgVDJgYCwuLi4gYGBUbmBgCgouLiB8RjEuLi5GbnwgcmVwbGFjZTo6IGBgRjFgYCwgYGBGMmBgLC4uLiBgYEZuYGAKLi4gfGYxLi4uZm58IHJlcGxhY2U6OiBgYGYxYGAsIGBgZjJgYCwuLi4gYGBmbmBgCgouLiB8QTEuLi5BbnwgcmVwbGFjZTo6IGBgQTFgYCwuLi4gYGBBbmBgCi4uIHxhMS4uLmFufCByZXBsYWNlOjogYGBhMWBgLC4uLiBgYGFuYGAKCgoKLi4gfGJlZ2luL2VuZDxTZXF1ZW5jZT58IHJlcGxhY2U6OiBbYGBiZWdpbjxTZXF1ZW5jZT46OnR5cGVgYCwgYGBlbmQ8U2VxdWVuY2U+Ojp0eXBlYGApCi4uIHxiZWdpbi9lbmQ8U2VxPnwgcmVwbGFjZTo6IFtgYGJlZ2luPFNlcT46OnR5cGVgYCwgYGBlbmQ8U2VxPjo6dHlwZWBgKQouLiB8YmVnaW4vZW5kPFNlcTE+fCByZXBsYWNlOjogW2BgYmVnaW48U2VxMT46OnR5cGVgYCwgYGBlbmQ8U2VxMT46OnR5cGVgYCkKLi4gfGJlZ2luL2VuZDxTZXEyPnwgcmVwbGFjZTo6IFtgYGJlZ2luPFNlcTI+Ojp0eXBlYGAsIGBgZW5kPFNlcTI+Ojp0eXBlYGApCgouLiB8YmVnaW4vZW5kPHM+fCByZXBsYWNlOjogW2BgYmVnaW48cz46OnR5cGVgYCwgYGBlbmQ8cz46OnR5cGVgYCkKLi4gfGJlZ2luL2VuZDx2PnwgcmVwbGFjZTo6IFtgYGJlZ2luPHY+Ojp0eXBlYGAsIGBgZW5kPHY+Ojp0eXBlYGApCi4uIHxiZWdpbi9lbmQ8czE+fCByZXBsYWNlOjogW2BgYmVnaW48czE+Ojp0eXBlYGAsIGBgZW5kPHMxPjo6dHlwZWBgKQouLiB8YmVnaW4vZW5kPHMyPnwgcmVwbGFjZTo6IFtgYGJlZ2luPHMyPjo6dHlwZWBgLCBgYGVuZDxzMj46OnR5cGVgYCkKCi4uIHxpc19zYW1lfCByZXBsYWNlOjogaXNfc2FtZQouLiB8dW5zcGVjaWZpZWR8IHJlcGxhY2U6OiAqdW5zcGVjaWZpZWQqCi4uIHx1bnNwZWNpZmllZC10b2tlbi1zZXF8IHJlcGxhY2U6OiAqdW5zcGVjaWZpZWQgdG9rZW4gc2VxdWVuY2UqCgouLiB8aWRpY3wgcmVwbGFjZTo6ICppbXBsZW1lbnRhdGlvbi1kZWZpbmVkIGludGVncmFsIGNvbnN0YW50KgoKLi4gfHRydWUgaWYgYW5kIG9ubHkgaWZ8IHJlcGxhY2U6OiBBIGJvb2xlYW4gYEludGVncmFsIENvbnN0YW50YF8gYGBjYGAgc3VjaCB0aGF0CiAgIGBgYzo6dmFsdWUgPT0gdHJ1ZWBgIGlmIGFuZCBvbmx5IGlmIAoKCi4uIHxPKDEpfCByZXBsYWNlOjogKk8oMSkqCgouLiB8LS18IHVuaWNvZGU6OiBVKzAyMDE0IC4uIEVNIERBU0gKCgouLiB8Tm90ZTp8IHJlcGxhY2U6OiBbKk5vdGU6KgouLiB8LS0gZW5kIG5vdGV8IHJlcGxhY2U6OiB8LS18ICplbmQgbm90ZSpcXQoKCi4uIHxTZW1hbnRpY3MgZGlzY2xhaW1lci4uLnwgcmVwbGFjZTo6IFRoZSBzZW1hbnRpY3Mgb2YgYW4gZXhwcmVzc2lvbiBhcmUgZGVmaW5lZCBvbmx5IAogICB3aGVyZSB0aGV5IGRpZmZlciBmcm9tLCBvciBhcmUgbm90IGRlZmluZWQgaW4KCgouLiB8bnVtZXJpYyBtZXRhZnVuY3Rpb24gbm90ZXwgcmVwbGFjZTo6IFRoZSByZXF1aXJlbWVudHMgbGlzdGVkIGluIHRoaXMgc3BlY2lmaWNhdGlvbiAKICAgYXJlIHRoZSBvbmVzIGltcG9zZWQgYnkgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uIFNlZSB8TnVtZXJpYyBNZXRhZnVuY3Rpb258IGNvbmNlcHQgCiAgIGZvciB0aGUgZGV0YWlscyBvbiBob3cgdG8gcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgYSB1c2VyLWRlZmluZWQgbnVtZXJpYyB0eXBlIAogICB0aGF0IGRvZXMgbm90IHNhdGlzZnkgdGhlIGBJbnRlZ3JhbCBDb25zdGFudGBfIHJlcXVpcmVtZW50cy4KICAgCgouLiAiWypOb3RlOioiIGluc3RlYWQgb2YgInxOb3RlOnwiIHRvIHdvcmthcm91bmQgYW5vdGhlciBzdWJzdC4gYnVnCgoKLi4gfHByZXByb2Nlc3NlZCBoZWFkZXJzIGRpc2NsYWltZXJ8IHJlcGxhY2U6OiBbKk5vdGU6KiBPdmVycmlkaW5nIHdpbGwgdGFrZSBlZmZlY3QgCiAgICpvbmx5KiBpZiB0aGUgbGlicmFyeSBpcyBjb25maWd1cmVkIG5vdCB0byB1c2UgfHByZXByb2Nlc3NlZCBoZWFkZXJzfC4gU2VlIAogICB8Qk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSU3wgZm9yIG1vcmUgaW5mb3JtYXRpb24uIHwtLXwgKmVuZCBub3RlKlxdCgouLiB8dHJhbnNmb3JtYXRpb24gYWxnb3JpdGhtIGRpc2NsYWltZXJ8IHJlcGxhY2U6OiAKICAgWypOb3RlOiogVGhpcyB3b3JkaW5nIGFwcGxpZXMgdG8gYSBuby1pbnNlcnRlciB2ZXJzaW9uKHMpIG9mIHRoZSBhbGdvcml0aG0uIFNlZSB0aGUgCiAgIGBFeHByZXNzaW9uIHNlbWFudGljc2Agc3Vic2VjdGlvbiBmb3IgYSBwcmVjaXNlIHNwZWNpZmljYXRpb24gb2YgdGhlIGFsZ29yaXRobSdzIAogICBkZXRhaWxzIGluIGFsbCBjYXNlcyB8LS18ICplbmQgbm90ZSpcXQoKLi4gfEluIHRoZSBmb2xsb3dpbmcgdGFibGUuLi58IHJlcGxhY2U6OiBJbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFuZCBzdWJzZXF1ZW50IHNwZWNpZmljYXRpb25zLCAK