LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFZpYmVXZWF2ZSBHbG9iYWwgU3R5bGVzCiAgIERlc2lnbiBTeXN0ZW06ICJEYXJrIEltbWVyc2l2ZSBNdXNpYyBTcGFjZSIKICAgQXBwbGUgTXVzaWMgSW1tZXJzaW9uICsgQXBwbGUgMjAyNSBMaXF1aWQgR2xhc3MKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCgpAdGFpbHdpbmQgYmFzZTsKQHRhaWx3aW5kIGNvbXBvbmVudHM7CkB0YWlsd2luZCB1dGlsaXRpZXM7CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgMS4gRGVzaWduIFRva2VucyDigJQgOnJvb3QKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBsYXllciBiYXNlIHsKICA6cm9vdCB7CiAgICAvKiDilIDilIAgRWFzaW5nIOKUgOKUgCAqLwogICAgLS1lYXNlLWFwcGxlOiBjdWJpYy1iZXppZXIoMC4yNSwgMC4xLCAwLjI1LCAxKTsKCiAgICAvKiDilIDilIAgVHlwb2dyYXBoeSBTY2FsZSAoQXBwbGUtc3R5bGUpIOKUgOKUgCAqLwogICAgLS1mb250LXNpemUtY2FwdGlvbjI6IDAuNjg3NXJlbTsgICAvKiAxMXB4ICovCiAgICAtLWZvbnQtc2l6ZS1jYXB0aW9uMTogMC43NXJlbTsgICAgIC8qIDEycHggKi8KICAgIC0tZm9udC1zaXplLWZvb3Rub3RlOiAwLjgxMjVyZW07ICAgLyogMTNweCAqLwogICAgLS1mb250LXNpemUtc3ViaGVhZDogMC44NzVyZW07ICAgICAvKiAxNHB4ICovCiAgICAtLWZvbnQtc2l6ZS1ib2R5OiAxcmVtOyAgICAgICAgICAgIC8qIDE2cHggKi8KICAgIC0tZm9udC1zaXplLXRpdGxlMzogMS4xMjVyZW07ICAgICAgLyogMThweCAqLwogICAgLS1mb250LXNpemUtdGl0bGUyOiAxLjM3NXJlbTsgICAgICAvKiAyMnB4ICovCiAgICAtLWZvbnQtc2l6ZS10aXRsZTE6IDEuNzVyZW07ICAgICAgIC8qIDI4cHggKi8KICAgIC0tZm9udC1zaXplLWxhcmdlLXRpdGxlOiAycmVtOyAgICAgLyogMzJweCAqLwogICAgLS1mb250LXNpemUtZGlzcGxheTogMi43NXJlbTsgICAgICAvKiA0NHB4ICovCiAgICAtLWZvbnQtc2l6ZS1oZXJvOiAzLjVyZW07ICAgICAgICAgIC8qIDU2cHggKi8KCiAgICAvKiDilIDilIAgTGluZSBIZWlnaHRzIOKUgOKUgCAqLwogICAgLS1sZWFkaW5nLXRpZ2h0OiAxLjE7CiAgICAtLWxlYWRpbmctc251ZzogMS4yNTsKICAgIC0tbGVhZGluZy1ub3JtYWw6IDEuNDc7CiAgICAtLWxlYWRpbmctcmVsYXhlZDogMS42OwogICAgLS1sZWFkaW5nLWxvb3NlOiAxLjg7CgogICAgLyog4pSA4pSAIExldHRlciBTcGFjaW5nIOKUgOKUgCAqLwogICAgLS10cmFja2luZy10aWdodDogLTAuMDIyZW07CiAgICAtLXRyYWNraW5nLW5vcm1hbDogLTAuMDExZW07CiAgICAtLXRyYWNraW5nLXdpZGU6IDAuMDJlbTsKICAgIC0tdHJhY2tpbmctd2lkZXI6IDAuMDZlbTsKCiAgICAvKiDilIDilIAgQmFja2dyb3VuZCBIaWVyYXJjaHkg4pSA4pSAICovCiAgICAtLXZ3LWJnLXByaW1hcnk6ICMwMDAwMDA7CiAgICAtLXZ3LWJnLWVsZXZhdGVkOiAjMGEwYTBmOwogICAgLS12dy1iZy1jYXJkOiAjMTExMTE4OwogICAgLS12dy1iZy1pbnB1dDogIzFhMWEyNDsKCiAgICAvKiDilIDilIAgQm9yZGVyIOKUgOKUgCAqLwogICAgLS12dy1ib3JkZXI6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICAtLXZ3LWJvcmRlci1zdWJ0bGU6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCk7CiAgICAtLXZ3LWJvcmRlci1mb2N1czogIzVlNWNlNjsKCiAgICAvKiDilIDilIAgVGV4dCBIaWVyYXJjaHkg4pSA4pSAICovCiAgICAtLXZ3LXRleHQ6ICNmNWY1Zjc7CiAgICAtLXZ3LXRleHQtc2Vjb25kYXJ5OiAjYTFhMWIwOwogICAgLS12dy10ZXh0LW11dGVkOiAjNmU2ZTgwOwoKICAgIC8qIOKUgOKUgCBBY2NlbnQg4pSA4pSAICovCiAgICAtLXZ3LWFjY2VudDogIzVlNWNlNjsKICAgIC0tdnctYWNjZW50LWhvdmVyOiAjNGY0ZGRiOwogICAgLS12dy1hY2NlbnQtYW1iZXI6ICNmMGE1MDA7CiAgICAtLXZ3LWN5YW46ICMwMGQyZmY7CiAgICAtLXZ3LXN1Y2Nlc3M6ICMyMmM1NWU7CiAgICAtLXZ3LWVycm9yOiAjZWY0NDQ0OwogICAgLS12dy13YXJuaW5nOiAjZjU5ZTBiOwogICAgLS12dy1pbmZvOiAjM2I4MmY2OwoKICAgIC8qIOKUgOKUgCBNb29kIEdyYWRpZW50cyAoZm9yIG1vb2QgdmlzdWFsaXphdGlvbikg4pSA4pSAICovCiAgICAtLWdyYWRpZW50LW1vb2QtaGFwcHk6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmMGE1MDAgMCUsICNmZjZiNmIgMTAwJSk7CiAgICAtLWdyYWRpZW50LW1vb2Qtc2FkOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNWU1Y2U2IDAlLCAjM2I4MmY2IDEwMCUpOwogICAgLS1ncmFkaWVudC1tb29kLWVuZXJnZXRpYzogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2VmNDQ0NCAwJSwgI2YwYTUwMCAxMDAlKTsKICAgIC0tZ3JhZGllbnQtbW9vZC1jYWxtOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMjJjNTVlIDAlLCAjMDBkMmZmIDEwMCUpOwogICAgLS1ncmFkaWVudC1tb29kLWZvY3VzOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNWU1Y2U2IDAlLCAjYTg1NWY3IDEwMCUpOwogICAgLS1ncmFkaWVudC1tb29kLXJvbWFudGljOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZWM0ODk5IDAlLCAjZjBhNTAwIDEwMCUpOwogICAgLS1ncmFkaWVudC1tb29kLW1lbGFuY2hvbHk6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2MzY2ZjEgMCUsICM2ZTZlODAgMTAwJSk7CiAgICAtLWdyYWRpZW50LW1vb2QtZXVwaG9yaWM6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmMGE1MDAgMCUsICMyMmM1NWUgNTAlLCAjMDBkMmZmIDEwMCUpOwoKICAgIC8qIOKUgOKUgCBHbGFzcyDilIDilIAgKi8KICAgIC0tZ2xhc3MtYmc6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNik7CiAgICAtLWdsYXNzLWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgLS1nbGFzcy1ibHVyOiAyMHB4OwogICAgLS1nbGFzcy1zYXR1cmF0ZTogMTgwJTsKICB9CgogICogewogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICB9CgogIGh0bWwgewogICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7CiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7CiAgICB0ZXh0LXJlbmRlcmluZzogb3B0aW1pemVMZWdpYmlsaXR5OwogIH0KCiAgYm9keSB7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdnctYmctcHJpbWFyeSk7CiAgICBjb2xvcjogdmFyKC0tdnctdGV4dCk7CiAgICBmb250LWZhbWlseTogJ0RNIFNhbnMnLCBzYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYm9keSk7CiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGVhZGluZy1ub3JtYWwpOwogICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRyYWNraW5nLW5vcm1hbCk7CiAgfQoKICAvKiDilIDilIAgU2VsZWN0aW9uIOKUgOKUgCAqLwogIDo6c2VsZWN0aW9uIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoOTQsIDkyLCAyMzAsIDAuMzUpOwogICAgY29sb3I6ICNmNWY1Zjc7CiAgfQoKICAvKiDilIDilIAgU2Nyb2xsYmFyIChXZWJLaXQpIOKUgOKUgCAqLwogIDo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgd2lkdGg6IDZweDsKICB9CiAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICB9CiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpOwogICAgYm9yZGVyLXJhZGl1czogM3B4OwogIH0KICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsKICB9Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAyLiBVdGlsaXR5IENsYXNzZXMg4oCUIHZ3LSogKGJhY2t3YXJkLWNvbXBhdGlibGUpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAbGF5ZXIgdXRpbGl0aWVzIHsKICAvKiDilIDilIAgQmFja2dyb3VuZCDilIDilIAgKi8KICAuYmctdnctYmctY2FyZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS12dy1iZy1jYXJkKTsKICB9CgogIC5iZy12dy1iZy1lbGV2YXRlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS12dy1iZy1lbGV2YXRlZCk7CiAgfQoKICAuYmctdnctYmctaW5wdXQgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdnctYmctaW5wdXQpOwogIH0KCiAgLmJnLXZ3LWFjY2VudCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS12dy1hY2NlbnQpOwogIH0KCiAgLmhvdmVyXDpiZy12dy1hY2NlbnQtaG92ZXI6aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdnctYWNjZW50LWhvdmVyKTsKICB9CgogIC5iZy12dy1hY2NlbnQtYW1iZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdnctYWNjZW50LWFtYmVyKTsKICB9CgogIC8qIOKUgOKUgCBCb3JkZXIg4pSA4pSAICovCiAgLmJvcmRlci12dy1ib3JkZXIgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS12dy1ib3JkZXIpOwogIH0KCiAgLmJvcmRlci12dy1hY2NlbnQgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS12dy1hY2NlbnQpOwogIH0KCiAgLmJvcmRlci12dy1ib3JkZXItZm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiB2YXIoLS12dy1ib3JkZXItZm9jdXMpOwogIH0KCiAgLmZvY3VzXDpib3JkZXItdnctYWNjZW50OmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdnctYWNjZW50KTsKICB9CgogIC5mb2N1c1w6cmluZy12dy1hY2NlbnQ6Zm9jdXMgewogICAgLS10dy1yaW5nLWNvbG9yOiB2YXIoLS12dy1hY2NlbnQpOwogIH0KCiAgLyog4pSA4pSAIFRleHQgQ29sb3Ig4pSA4pSAICovCiAgLnRleHQtdnctdGV4dCB7CiAgICBjb2xvcjogdmFyKC0tdnctdGV4dCk7CiAgfQoKICAudGV4dC12dy10ZXh0LXNlY29uZGFyeSB7CiAgICBjb2xvcjogdmFyKC0tdnctdGV4dC1zZWNvbmRhcnkpOwogIH0KCiAgLnRleHQtdnctdGV4dC1tdXRlZCB7CiAgICBjb2xvcjogdmFyKC0tdnctdGV4dC1tdXRlZCk7CiAgfQoKICAudGV4dC12dy1hY2NlbnQgewogICAgY29sb3I6IHZhcigtLXZ3LWFjY2VudCk7CiAgfQoKICAuaG92ZXJcOnRleHQtdnctYWNjZW50LWhvdmVyOmhvdmVyIHsKICAgIGNvbG9yOiB2YXIoLS12dy1hY2NlbnQtaG92ZXIpOwogIH0KCiAgLnRleHQtdnctYWNjZW50LWFtYmVyIHsKICAgIGNvbG9yOiB2YXIoLS12dy1hY2NlbnQtYW1iZXIpOwogIH0KCiAgLnRleHQtdnctY3lhbiB7CiAgICBjb2xvcjogdmFyKC0tdnctY3lhbik7CiAgfQoKICAudGV4dC12dy1zdWNjZXNzIHsKICAgIGNvbG9yOiB2YXIoLS12dy1zdWNjZXNzKTsKICB9CgogIC50ZXh0LXZ3LWVycm9yIHsKICAgIGNvbG9yOiB2YXIoLS12dy1lcnJvcik7CiAgfQoKICAudGV4dC12dy13YXJuaW5nIHsKICAgIGNvbG9yOiB2YXIoLS12dy13YXJuaW5nKTsKICB9CgogIC50ZXh0LXZ3LWluZm8gewogICAgY29sb3I6IHZhcigtLXZ3LWluZm8pOwogIH0KCiAgLyog4pSA4pSAIFBsYWNlaG9sZGVyIOKUgOKUgCAqLwogIC5wbGFjZWhvbGRlci12dy10ZXh0LW11dGVkOjpwbGFjZWhvbGRlciB7CiAgICBjb2xvcjogdmFyKC0tdnctdGV4dC1tdXRlZCk7CiAgfQoKICAvKiDilIDilIAgRm9udCBGYW1pbHkg4pSA4pSAICovCiAgLmZvbnQtZGlzcGxheSB7CiAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICB9CgogIC5mb250LWJvZHkgewogICAgZm9udC1mYW1pbHk6ICdETSBTYW5zJywgc2Fucy1zZXJpZjsKICB9Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAzLiBBbmltYXRpb24gU3lzdGVtCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLyog4pSA4pSAIEFwcGxlLXN0eWxlIGZhZGVJblVwIOKUgOKUgCAqLwpAa2V5ZnJhbWVzIGZhZGVJblVwIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjRweCk7CiAgfQogIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgfQp9CgovKiDilIDilIAgUHVyZSBmYWRlSW4g4pSA4pSAICovCkBrZXlmcmFtZXMgZmFkZUluIHsKICBmcm9tIHsKICAgIG9wYWNpdHk6IDA7CiAgfQogIHRvIHsKICAgIG9wYWNpdHk6IDE7CiAgfQp9CgovKiDilIDilIAgU2NhbGUgaW4g4pSA4pSAICovCkBrZXlmcmFtZXMgc2NhbGVJbiB7CiAgZnJvbSB7CiAgICBvcGFjaXR5OiAwOwogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkyKTsKICB9CiAgdG8gewogICAgb3BhY2l0eTogMTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgfQp9CgovKiDilIDilIAgU2hpbW1lciAobGlnaHQgc3dlZXApIOKUgOKUgCAqLwpAa2V5ZnJhbWVzIHNoaW1tZXIgewogIDAlIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IC0yMDAlIDA7CiAgfQogIDEwMCUgewogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMjAwJSAwOwogIH0KfQoKLyog4pSA4pSAIFRvYXN0OiBzbGlkZS1pbi1yaWdodCDilIDilIAgKi8KQGtleWZyYW1lcyBzbGlkZS1pbi1yaWdodCB7CiAgZnJvbSB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7CiAgICBvcGFjaXR5OiAwOwogIH0KICB0byB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICBvcGFjaXR5OiAxOwogIH0KfQoKLyog4pSA4pSAIFRvYXN0OiBzbGlkZS1vdXQtcmlnaHQg4pSA4pSAICovCkBrZXlmcmFtZXMgc2xpZGUtb3V0LXJpZ2h0IHsKICBmcm9tIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTsKICAgIG9wYWNpdHk6IDE7CiAgfQogIHRvIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTsKICAgIG9wYWNpdHk6IDA7CiAgfQp9CgovKiDilIDilIAgQW5pbWF0aW9uIHV0aWxpdHkgY2xhc3NlcyDilIDilIAgKi8KLmFuaW1hdGUtZmFkZS1pbi11cCB7CiAgYW5pbWF0aW9uOiBmYWRlSW5VcCAwLjhzIHZhcigtLWVhc2UtYXBwbGUpIGJvdGg7Cn0KCi5hbmltYXRlLWZhZGUtaW4gewogIGFuaW1hdGlvbjogZmFkZUluIDAuNnMgdmFyKC0tZWFzZS1hcHBsZSkgYm90aDsKfQoKLmFuaW1hdGUtc2NhbGUtaW4gewogIGFuaW1hdGlvbjogc2NhbGVJbiAwLjVzIHZhcigtLWVhc2UtYXBwbGUpIGJvdGg7Cn0KCi5hbmltYXRlLXNoaW1tZXIgewogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgKICAgIDkwZGVnLAogICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAwJSwKICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCkgNTAlLAogICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlCiAgKTsKICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgMTAwJTsKICBhbmltYXRpb246IHNoaW1tZXIgMi41cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKfQoKLmFuaW1hdGUtc2xpZGUtaW4tcmlnaHQgewogIGFuaW1hdGlvbjogc2xpZGUtaW4tcmlnaHQgMC4zcyBlYXNlLW91dDsKfQoKLmFuaW1hdGUtc2xpZGUtb3V0LXJpZ2h0IHsKICBhbmltYXRpb246IHNsaWRlLW91dC1yaWdodCAwLjNzIGVhc2UtaW4gZm9yd2FyZHM7Cn0KCi8qIOKUgOKUgCBTdGFnZ2VyIGRlbGF5cyDilIDilIAgKi8KLmRlbGF5LTEwMCB7IGFuaW1hdGlvbi1kZWxheTogMTAwbXM7IH0KLmRlbGF5LTIwMCB7IGFuaW1hdGlvbi1kZWxheTogMjAwbXM7IH0KLmRlbGF5LTMwMCB7IGFuaW1hdGlvbi1kZWxheTogMzAwbXM7IH0KLmRlbGF5LTQwMCB7IGFuaW1hdGlvbi1kZWxheTogNDAwbXM7IH0KLmRlbGF5LTUwMCB7IGFuaW1hdGlvbi1kZWxheTogNTAwbXM7IH0KLmRlbGF5LTcwMCB7IGFuaW1hdGlvbi1kZWxheTogNzAwbXM7IH0KLmRlbGF5LTEwMDAgeyBhbmltYXRpb24tZGVsYXk6IDEwMDBtczsgfQoKLyog4pSA4pSAIC5yZXZlYWwg4oCUIEludGVyc2VjdGlvbk9ic2VydmVyIHRyaWdnZXIg4pSA4pSACiAgIEVsZW1lbnRzIHN0YXJ0IGludmlzaWJsZTsgd2hlbiAucmV2ZWFsZWQgaXMgYWRkZWQgdGhleSBhbmltYXRlIGluLiAqLwoucmV2ZWFsIHsKICBvcGFjaXR5OiAwOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyNHB4KTsKICB0cmFuc2l0aW9uOgogICAgb3BhY2l0eSAwLjhzIHZhcigtLWVhc2UtYXBwbGUpLAogICAgdHJhbnNmb3JtIDAuOHMgdmFyKC0tZWFzZS1hcHBsZSk7Cn0KCi5yZXZlYWwucmV2ZWFsZWQgewogIG9wYWNpdHk6IDE7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwp9CgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgNC4gQ29tcG9uZW50IFV0aWxpdHkgQ2xhc3NlcwogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCi8qIOKUgOKUgCBMaXF1aWQgR2xhc3Mg4pSA4pSAICovCi5nbGFzcyB7CiAgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtYmcpOwogIGJhY2tkcm9wLWZpbHRlcjogYmx1cih2YXIoLS1nbGFzcy1ibHVyKSkgc2F0dXJhdGUodmFyKC0tZ2xhc3Mtc2F0dXJhdGUpKTsKICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cih2YXIoLS1nbGFzcy1ibHVyKSkgc2F0dXJhdGUodmFyKC0tZ2xhc3Mtc2F0dXJhdGUpKTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1nbGFzcy1ib3JkZXIpOwogIGJvcmRlci1yYWRpdXM6IDE2cHg7Cn0KCi8qIOKUgOKUgCBTdWJ0bGUgR2xhc3MgKGxpZ2h0ZXIgdmFyaWFudCkg4pSA4pSAICovCi5nbGFzcy1zdWJ0bGUgewogIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMyk7CiAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEycHgpIHNhdHVyYXRlKDE1MCUpOwogIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEycHgpIHNhdHVyYXRlKDE1MCUpOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNik7CiAgYm9yZGVyLXJhZGl1czogMTJweDsKfQoKLyog4pSA4pSAIEdyYWRpZW50IFRleHQg4pSA4pSAICovCi50ZXh0LWdyYWRpZW50IHsKICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS12dy1hY2NlbnQpIDAlLCAjYTg1NWY3IDUwJSwgdmFyKC0tdnctYWNjZW50LWFtYmVyKSAxMDAlKTsKICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50Owp9CgoudGV4dC1ncmFkaWVudC1hY2NlbnQgewogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXZ3LWFjY2VudCkgMCUsICM4YjVjZjYgMTAwJSk7CiAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsKfQoKLnRleHQtZ3JhZGllbnQtd2FybSB7CiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tdnctYWNjZW50LWFtYmVyKSAwJSwgI2VmNDQ0NCAxMDAlKTsKICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsKICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50Owp9CgovKiDilIDilIAgQXBwbGUtc3R5bGUgUGlsbCBCdXR0b24g4pSA4pSAICovCi5hcHBsZS1idG4gewogIGRpc3BsYXk6IGlubGluZS1mbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZ2FwOiA4cHg7CiAgcGFkZGluZzogMTJweCAyOHB4OwogIGZvbnQtZmFtaWx5OiAnRE0gU2FucycsIHNhbnMtc2VyaWY7CiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc3ViaGVhZCk7CiAgZm9udC13ZWlnaHQ6IDYwMDsKICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdHJhY2tpbmctbm9ybWFsKTsKICBsaW5lLWhlaWdodDogMTsKICBib3JkZXI6IG5vbmU7CiAgYm9yZGVyLXJhZGl1czogOTgwcHg7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRyYW5zaXRpb246CiAgICBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgdmFyKC0tZWFzZS1hcHBsZSksCiAgICB0cmFuc2Zvcm0gMC4ycyB2YXIoLS1lYXNlLWFwcGxlKSwKICAgIGJveC1zaGFkb3cgMC4zcyB2YXIoLS1lYXNlLWFwcGxlKTsKICB1c2VyLXNlbGVjdDogbm9uZTsKICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwp9CgouYXBwbGUtYnRuOmFjdGl2ZSB7CiAgdHJhbnNmb3JtOiBzY2FsZSgwLjk3KTsKfQoKLmFwcGxlLWJ0bi1wcmltYXJ5IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS12dy1hY2NlbnQpOwogIGNvbG9yOiAjZmZmZmZmOwp9CgouYXBwbGUtYnRuLXByaW1hcnk6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXZ3LWFjY2VudC1ob3Zlcik7Cn0KCi5hcHBsZS1idG4tc2Vjb25kYXJ5IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogIGNvbG9yOiB2YXIoLS12dy10ZXh0KTsKICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpOwp9CgouYXBwbGUtYnRuLXNlY29uZGFyeTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTsKfQoKLmFwcGxlLWJ0bi1naG9zdCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgY29sb3I6IHZhcigtLXZ3LWFjY2VudCk7Cn0KCi5hcHBsZS1idG4tZ2hvc3Q6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoOTQsIDkyLCAyMzAsIDAuMSk7Cn0KCi8qIOKUgOKUgCBBcHBsZS1zdHlsZSBTZWN0aW9uIFBhZGRpbmcg4pSA4pSAICovCi5zZWN0aW9uLXBhZGRpbmcgewogIHBhZGRpbmctdG9wOiAxMDBweDsKICBwYWRkaW5nLWJvdHRvbTogMTAwcHg7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogIC5zZWN0aW9uLXBhZGRpbmcgewogICAgcGFkZGluZy10b3A6IDY0cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogNjRweDsKICB9Cn0={}
