cropper

DYNAMIC PARADIGMS HIVE
UBUNTU-COHORT HUB

cropper
  • Cohort
  • Assess
  • Week 1
  • Week 2
  • Week 3-1
  • Week 3-2
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Founder
    • About
    • Hub
  • Connect
{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+V2VlayAzOiBCdXNpbmVzcyBQbGFubmluZyAmIFN0cnVjdHVyZSB8IFVidW50dSBDb2hvcnQgfCBOaWdodGluZ2FsZSBNdWthc2E8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkJ1c2luZXNzIE1vZGVsIENhbnZhcyBhbmQgcmVnaXN0cmF0aW9uIHN0cnVjdHVyZSBmb3IgTXVrYXNhIFZlbnR1cmUgUGFydG5lcnMgTExDIC0gV2VlayAzIFVidW50dSBDb2hvcnQgaG9tZXdvcmsgYnkgTmlnaHRpbmdhbGUgTXVrYXNhLiI+CiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9ImluZGV4LCBmb2xsb3csIG5vYXJjaGl2ZSwgbm9pbWFnZWluZGV4Ij4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZHluYW1pY3BhcmFkaWdtc2FjYWRlbXkuY29tL3dlZWszLTEiPgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vZHluYW1pY3BhcmFkaWdtc2FjYWRlbXkuY29tL3dlZWszLTEiPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1QbGF5ZmFpcitEaXNwbGF5OndnaHRANDAwOzUwMDs2MDA7NzAwJmZhbWlseT1Db3Jtb3JhbnQrR2FyYW1vbmQ6aXRhbCx3Z2h0QDAsNDAwOzAsNTAwOzAsNjAwOzEsNDAwJmZhbWlseT1Nb250c2VycmF0OndnaHRAMzAwOzQwMDs1MDA7NjAwJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0Ij4KICAgIDxzdHlsZT4KICAgICAgICA6cm9vdCB7CiAgICAgICAgICAgIC0tbmF2eTogIzBEMUIyQTsKICAgICAgICAgICAgLS1pbmRpZ286ICMxQzFGNEE7CiAgICAgICAgICAgIC0tZ29sZDogI0Q0QUYzNzsKICAgICAgICAgICAgLS1yb3NlZ29sZDogI0MyOUE4QjsKICAgICAgICAgICAgLS1pdm9yeTogI0Y4RjRFQzsKICAgICAgICAgICAgLS1kZWVwZ29sZDogI0I4OTcyRTsKICAgICAgICAgICAgLS1saWdodGdvbGQ6ICNFOEQ1QTM7CiAgICAgICAgICAgIC0tc2hhZG93bmF2eTogcmdiYSgxMywgMjcsIDQyLCAwLjg1KTsKICAgICAgICAgICAgLS10ZWFsOiAjMDA4OTdiOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9CiAgICAgICAgaHRtbCB7IHNjcm9sbC1iZWhhdmlvcjogc21vb3RoOyB9CiAgICAgICAgCiAgICAgICAgYm9keSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5hdnkpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS43OwogICAgICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaW1nIHsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHVzZXItZHJhZzogbm9uZTsgfQogICAgICAgIAogICAgICAgIC53YXRlcm1hcmsgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIHRvcDogMDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuMDI7CiAgICAgICAgfQogICAgICAgIC53YXRlcm1hcms6OmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICfCqSBEeW5hbWljIFBhcmFkaWdtc+KEoiDigKIgUHJvcHJpZXRhcnkgRnJhbWV3b3JrJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDUwJTsgbGVmdDogNTAlOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoLTMwZGVnKTsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4wNCk7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIEBtZWRpYSBwcmludCB7CiAgICAgICAgICAgIGJvZHk6OmJlZm9yZSB7CiAgICAgICAgICAgICAgICBjb250ZW50OiAnQ09ORklERU5USUFMIOKAoiDCqSBEeW5hbWljIFBhcmFkaWdtcyAmIE1lbnRvcnNoaXAgU3VjY2VzcyBBY2FkZW1pZXMnOwogICAgICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOyB0b3A6IDUwJTsgbGVmdDogNTAlOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKC00NWRlZyk7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDRyZW07CiAgICAgICAgICAgICAgICBjb2xvcjogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMyk7CiAgICAgICAgICAgICAgICB6LWluZGV4OiA5OTk5OTsKICAgICAgICAgICAgfQogICAgICAgICAgICBib2R5ICogeyB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAuZ2VvcGF0dGVybiB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsgei1pbmRleDogMDsgb3BhY2l0eTogMC4wMzsKICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogCiAgICAgICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoMzBkZWcsIHZhcigtLWdvbGQpIDFweCwgdHJhbnNwYXJlbnQgMXB4KSwKICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgtMzBkZWcsIHZhcigtLWdvbGQpIDFweCwgdHJhbnNwYXJlbnQgMXB4KTsKICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiA2MHB4IDEwNHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAub3JiIHsgcG9zaXRpb246IGZpeGVkOyBib3JkZXItcmFkaXVzOiA1MCU7IGZpbHRlcjogYmx1cig2MHB4KTsgb3BhY2l0eTogMC4xNTsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IDA7IH0KICAgICAgICAub3JiMSB7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiA0MDBweDsgYmFja2dyb3VuZDogdmFyKC0tZ29sZCk7IHRvcDogLTEwMHB4OyByaWdodDogLTEwMHB4OyBhbmltYXRpb246IGZsb2F0b3JiIDIwcyBlYXNlLWluLW91dCBpbmZpbml0ZTsgfQogICAgICAgIC5vcmIyIHsgd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1yb3NlZ29sZCk7IGJvdHRvbTogMjAlOyBsZWZ0OiAtMTAwcHg7IGFuaW1hdGlvbjogZmxvYXRvcmIgMjVzIGVhc2UtaW4tb3V0IGluZmluaXRlIHJldmVyc2U7IH0KICAgICAgICAKICAgICAgICBAa2V5ZnJhbWVzIGZsb2F0b3JiIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKSBzY2FsZSgxKTsgfQogICAgICAgICAgICA1MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMjBweCwgMjBweCkgc2NhbGUoMC45NSk7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogTmF2aWdhdGlvbiAqLwogICAgICAgIC5zb3ZlcmVpZ25uYXYgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7IHRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IHotaW5kZXg6IDEwMDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXNoYWRvd25hdnkpOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7CiAgICAgICAgICAgIHBhZGRpbmc6IDEycHggMzBweDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgfQogICAgICAgIC5uYXZsb2dvIHsgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7IGZvbnQtc2l6ZTogMC45NXJlbTsgY29sb3I6IHZhcigtLWdvbGQpOyBsZXR0ZXItc3BhY2luZzogMnB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KICAgICAgICAubmF2Y2VudGVyIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMnB4OyB9CiAgICAgICAgLm5hdmJ0biB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTsgbGV0dGVyLXNwYWNpbmc6IDFweDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyNXB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAubmF2YnRuOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1nb2xkKTsgYmFja2dyb3VuZDogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7IGNvbG9yOiB2YXIoLS1nb2xkKTsgfQogICAgICAgIC5uYXZidG4uaG9tZWJ0biB7IGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpOyBib3JkZXItY29sb3I6IHZhcigtLWdvbGQpOyBjb2xvcjogdmFyKC0tZ29sZCk7IH0KICAgICAgICAubmF2YmFkZ2UgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tZGVlcGdvbGQpKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLW5hdnkpOyBwYWRkaW5nOiA2cHggMTZweDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjY1cmVtOyBmb250LXdlaWdodDogNjAwOyBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgIH0KICAgICAgICAubmF2cHJvZ3Jlc3MgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDZweDsgbWFyZ2luLWxlZnQ6IDE1cHg7IH0KICAgICAgICAucHJvZ3Jlc3Nkb3QgeyB3aWR0aDogOHB4OyBoZWlnaHQ6IDhweDsgYm9yZGVyLXJhZGl1czogNTAlOyB9CiAgICAgICAgLnByb2dyZXNzZG90LmNvbXBsZXRlZCB7IGJhY2tncm91bmQ6IHZhcigtLXRlYWwpOyB9CiAgICAgICAgLnByb2dyZXNzZG90LmN1cnJlbnQgeyBiYWNrZ3JvdW5kOiB2YXIoLS1nb2xkKTsgYm94LXNoYWRvdzogMCAwIDEwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuNSk7IH0KICAgICAgICAucHJvZ3Jlc3Nkb3QudXBjb21pbmcgeyBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yKTsgfQogICAgICAgIAogICAgICAgIC8qIEhlcm8gKi8KICAgICAgICAuaGVybyB7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDcwdmg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDEyMHB4IDQwcHggNjBweDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAxOwogICAgICAgIH0KICAgICAgICAuaGVyb2JhZGdlIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1nb2xkKTsgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDMwcHg7IGZvbnQtc2l6ZTogMC43cmVtOyBsZXR0ZXItc3BhY2luZzogNHB4OyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgICAgICAgICBhbmltYXRpb246IGZhZGVJblVwIDFzIGVhc2UgZm9yd2FyZHMgMC4zczsgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgICAgLmhlcm90aXRsZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDIuNXJlbSwgNnZ3LCA0LjVyZW0pOwogICAgICAgICAgICBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMS4xOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgICAgICBhbmltYXRpb246IGZhZGVJblVwIDFzIGVhc2UgZm9yd2FyZHMgMC41czsgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgICAgLmhlcm90aXRsZSBzcGFuIHsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpLCB2YXIoLS1saWdodGdvbGQpLCB2YXIoLS1nb2xkKSk7CiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OyAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgfQogICAgICAgIC5oZXJvc3VidGl0bGUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ0Nvcm1vcmFudCBHYXJhbW9uZCcsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDEuMXJlbSwgMnZ3LCAxLjRyZW0pOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7IGNvbG9yOiB2YXIoLS1yb3NlZ29sZCk7CiAgICAgICAgICAgIG1heC13aWR0aDogNzAwcHg7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZmFkZUluVXAgMXMgZWFzZSBmb3J3YXJkcyAwLjdzOyBvcGFjaXR5OiAwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBAa2V5ZnJhbWVzIGZhZGVJblVwIHsKICAgICAgICAgICAgZnJvbSB7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgzMHB4KTsgfQogICAgICAgICAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBDb250aW51ZSB0byBQYXJ0IDIgQ1RBICovCiAgICAgICAgLnBhcnR0d29jdGEgewogICAgICAgICAgICBtYXJnaW4tdG9wOiA1MHB4OwogICAgICAgICAgICBhbmltYXRpb246IGZhZGVJblVwIDFzIGVhc2UgZm9yd2FyZHMgMC45czsgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgICAgLnBhcnR0d29idG4gewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxNXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tZGVlcGdvbGQpKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICAgICAgICBwYWRkaW5nOiAxOHB4IDQwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCcsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDJweDsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggNDBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKTsKICAgICAgICB9CiAgICAgICAgLnBhcnR0d29idG46aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMjBweCA2MHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjQpOwogICAgICAgIH0KICAgICAgICAucGFydHR3b2J0biAuYXJyb3cgewogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLnBhcnR0d29idG46aG92ZXIgLmFycm93IHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFNlY3Rpb25zICovCiAgICAgICAgc2VjdGlvbiB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMTsgcGFkZGluZzogODBweCA0MHB4OyB9CiAgICAgICAgLmNvbnRhaW5lciB7IG1heC13aWR0aDogMTAwMHB4OyBtYXJnaW46IDAgYXV0bzsgfQogICAgICAgIC5zZWN0aW9uaGVhZGVyIHsgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tYm90dG9tOiA1MHB4OyB9CiAgICAgICAgLnNlY3Rpb25sYWJlbCB7IGZvbnQtc2l6ZTogMC43cmVtOyBsZXR0ZXItc3BhY2luZzogNHB4OyBjb2xvcjogdmFyKC0tZ29sZCk7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IG1hcmdpbi1ib3R0b206IDE1cHg7IH0KICAgICAgICAuc2VjdGlvbnRpdGxlIHsgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7IGZvbnQtc2l6ZTogY2xhbXAoMS44cmVtLCA0dncsIDIuOHJlbSk7IG1hcmdpbi1ib3R0b206IDE1cHg7IH0KICAgICAgICAuc2VjdGlvbnN1YnRpdGxlIHsgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsgZm9udC1zaXplOiAxLjFyZW07IGZvbnQtc3R5bGU6IGl0YWxpYzsgY29sb3I6IHZhcigtLXJvc2Vnb2xkKTsgfQogICAgICAgIAogICAgICAgIC8qIENhbnZhcyBHcmlkICovCiAgICAgICAgLmNhbnZhc2dyaWQgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI4MHB4LCAxZnIpKTsKICAgICAgICAgICAgZ2FwOiAyNXB4OwogICAgICAgIH0KICAgICAgICAuY2FudmFzY2FyZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMTMsIDI3LCA0MiwgMC44KSwgcmdiYSgyOCwgMzEsIDc0LCAwLjQpKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMTUpOwogICAgICAgICAgICBwYWRkaW5nOiAzMHB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgICAgIH0KICAgICAgICAuY2FudmFzY2FyZDpob3ZlciB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyMTIsIDE3NSwgNTUsIDAuNCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgICAgICB9CiAgICAgICAgLmNhbnZhc2NhcmQgaDMgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07IGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OwogICAgICAgIH0KICAgICAgICAuY2FudmFzaWNvbiB7IGZvbnQtc2l6ZTogMS41cmVtOyB9CiAgICAgICAgLmNhbnZhc2NhcmQgcCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjgpOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS44OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBEZWVwIERpdmUgQ1RBIFNlY3Rpb24gKi8KICAgICAgICAuZGVlcGRpdmVjdGEgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xKSwgcmdiYSgxOTQsIDE1NCwgMTM5LCAwLjA1KSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjIpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICBwYWRkaW5nOiA1MHB4IDQwcHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogNTBweDsKICAgICAgICB9CiAgICAgICAgLmRlZXBkaXZlY3RhIGgzIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgfQogICAgICAgIC5kZWVwZGl2ZWN0YSBwIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXJvc2Vnb2xkKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA2MDBweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgICB9CiAgICAgICAgLmRlZXBkaXZlYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWdvbGQpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMzVweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAgICAgICB9CiAgICAgICAgLmRlZXBkaXZlYnRuOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDE1cHggNDBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogUmVnaXN0cmF0aW9uIFNlY3Rpb24gKi8KICAgICAgICAucmVnaXN0cmF0aW9uc2VjdGlvbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDI4LCAzMSwgNzQsIDAuMyksIHRyYW5zcGFyZW50KTsKICAgICAgICB9CiAgICAgICAgLnJlZ2lzdHJhdGlvbmNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCByZ2JhKDEzLCAyNywgNDIsIDAuOSksIHJnYmEoMjgsIDMxLCA3NCwgMC41KSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjIpOwogICAgICAgICAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLWdvbGQpOwogICAgICAgICAgICBwYWRkaW5nOiA0MHB4OwogICAgICAgICAgICBtYXgtd2lkdGg6IDkwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgLnJlZ2lzdHJhdGlvbmNhcmQgaDMgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07IGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICB9CiAgICAgICAgLnJlZ2lzdHJhdGlvbmNhcmQgcCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC44KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuODsKICAgICAgICB9CiAgICAgICAgLnJlZ2lzdHJhdGlvbmNhcmQgc3Ryb25nIHsgY29sb3I6IHZhcigtLXJvc2Vnb2xkKTsgfQogICAgICAgIC5vcHRpb25zbGlzdCB7CiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICAgICAgICAgIG1hcmdpbjogMjBweCAwOwogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5vcHRpb25zbGlzdCBsaSB7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAwOwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC43NSk7CiAgICAgICAgfQogICAgICAgIC5vcHRpb25zbGlzdCBsaTo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogJ+Kcpic7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMnB4OwogICAgICAgIH0KICAgICAgICAuY2hvaWNlaGlnaGxpZ2h0IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjIpOwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgICAgIH0KICAgICAgICAuY2hvaWNlaGlnaGxpZ2h0IGg0IHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogU3VtbWFyeSBTZWN0aW9uICovCiAgICAgICAgLnN1bW1hcnlzZWN0aW9uIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0taW5kaWdvKSwgdmFyKC0tbmF2eSkpOwogICAgICAgIH0KICAgICAgICAuc3VtbWFyeWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCByZ2JhKDEzLCAyNywgNDIsIDAuNyksIHJnYmEoMjgsIDMxLCA3NCwgMC4zKSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjE1KTsKICAgICAgICAgICAgcGFkZGluZzogNDBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXgtd2lkdGg6IDgwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgLnN1bW1hcnljYXJkIHAgewogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuODUpOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS45OwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFBhcnQgMiBGaW5hbCBDVEEgKi8KICAgICAgICAuZmluYWxjdGFzZWN0aW9uIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWRlZXBnb2xkKSk7CiAgICAgICAgICAgIHBhZGRpbmc6IDYwcHggNDBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgfQogICAgICAgIC5maW5hbGN0YXNlY3Rpb24gaDMgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjhyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICB9CiAgICAgICAgLmZpbmFsY3Rhc2VjdGlvbiBwIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07CiAgICAgICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgICAgICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICAgICAgfQogICAgICAgIC5maW5hbGN0YWJ0biB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5hdnkpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIHBhZGRpbmc6IDE4cHggNDVweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0Jywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5maW5hbGN0YWJ0bjpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxNXB4IDQwcHggcmdiYSgxMywgMjcsIDQyLCAwLjQpOwogICAgICAgIH0KICAgICAgICAuZmluYWxjdGFidG4gLmFycm93IHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5maW5hbGN0YWJ0bjpob3ZlciAuYXJyb3cgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNXB4KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogQm90dG9tIE5hdiAqLwogICAgICAgIC5wYWdlbmF2IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMjVweDsKICAgICAgICAgICAgcGFkZGluZzogNTBweCAzMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgxMywgMjcsIDQyLCAwLjMpKTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAxOwogICAgICAgIH0KICAgICAgICAucGFnZW5hdmNhcmQgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDE1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMjgsIDMxLCA3NCwgMC42KSwgcmdiYSgxMywgMjcsIDQyLCAwLjgpKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7IHBhZGRpbmc6IDE4cHggMjVweDsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgICAgICAgICBtaW4td2lkdGg6IDE4MHB4OwogICAgICAgIH0KICAgICAgICAucGFnZW5hdmNhcmQ6aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLWdvbGQpOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7IH0KICAgICAgICAucGFnZW5hdmNhcmQuZmVhdHVyZWQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xNSksIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjA1KSk7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyMTIsIDE3NSwgNTUsIDAuNCk7CiAgICAgICAgfQogICAgICAgIC5wYWdlbmF2YXJyb3cgeyBmb250LXNpemU6IDEuNHJlbTsgY29sb3I6IHZhcigtLWdvbGQpOyB9CiAgICAgICAgLnBhZ2VuYXZpbmZvIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAzcHg7IH0KICAgICAgICAucGFnZW5hdmxhYmVsIHsgZm9udC1zaXplOiAwLjZyZW07IGxldHRlci1zcGFjaW5nOiAycHg7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGNvbG9yOiB2YXIoLS1yb3NlZ29sZCk7IH0KICAgICAgICAucGFnZW5hdnRpdGxlIHsgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7IGZvbnQtc2l6ZTogMC45NXJlbTsgY29sb3I6IHZhcigtLWl2b3J5KTsgfQogICAgICAgIC5wYWdlbmF2aG9tZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgdmFyKC0tZGVlcGdvbGQpKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsgcGFkZGluZzogMThweCAzMHB4OwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5wYWdlbmF2aG9tZTpob3ZlciB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsgYm94LXNoYWRvdzogMCAxNXB4IDQwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMyk7IH0KICAgICAgICAucGFnZW5hdmhvbWUgLnBhZ2VuYXZhcnJvdyB7IGNvbG9yOiB2YXIoLS1uYXZ5KTsgfQogICAgICAgIC5wYWdlbmF2aG9tZSAucGFnZW5hdmxhYmVsIHsgY29sb3I6IHZhcigtLW5hdnkpOyBmb250LXdlaWdodDogNjAwOyB9CiAgICAgICAgCiAgICAgICAgLyogRm9vdGVyICovCiAgICAgICAgLmZvb3RlcnNlY3Rpb24gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1uYXZ5KTsgcGFkZGluZzogNjBweCA0MHB4IDMwcHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDE7CiAgICAgICAgfQogICAgICAgIC5mb290ZXJsb2dvIHsgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7IGZvbnQtc2l6ZTogMS41cmVtOyBjb2xvcjogdmFyKC0tZ29sZCk7IG1hcmdpbi1ib3R0b206IDEwcHg7IH0KICAgICAgICAuZm9vdGVydGFnbGluZSB7IGZvbnQtZmFtaWx5OiAnQ29ybW9yYW50IEdhcmFtb25kJywgc2VyaWY7IGZvbnQtc3R5bGU6IGl0YWxpYzsgY29sb3I6IHZhcigtLXJvc2Vnb2xkKTsgbWFyZ2luLWJvdHRvbTogMjVweDsgfQogICAgICAgIC5mb290ZXJkaXZpZGVyIHsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDFweDsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgdmFyKC0tZ29sZCksIHRyYW5zcGFyZW50KTsgbWFyZ2luOiAyNXB4IGF1dG87IH0KICAgICAgICAuZm9vdGVyY29weXJpZ2h0IHsgZm9udC1zaXplOiAwLjdyZW07IGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNCk7IGxpbmUtaGVpZ2h0OiAxLjg7IG1hcmdpbi1ib3R0b206IDMwcHg7IH0KICAgICAgICAKICAgICAgICAuc2hhcmVjdGFzZWN0aW9uIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyOCwgMzEsIDc0LCAwLjQpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xNSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7IHBhZGRpbmc6IDI1cHggMzBweDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA0NTBweDsgbWFyZ2luOiAwIGF1dG8gMzBweDsKICAgICAgICB9CiAgICAgICAgLnNoYXJlY3RhaGVhZGxpbmUgeyBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsgZm9udC1zaXplOiAxLjFyZW07IGNvbG9yOiB2YXIoLS1pdm9yeSk7IG1hcmdpbi1ib3R0b206IDhweDsgfQogICAgICAgIC5zaGFyZWN0YXN1YnRleHQgeyBmb250LXNpemU6IDAuOHJlbTsgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC42KTsgbWFyZ2luLWJvdHRvbTogMjBweDsgfQogICAgICAgIC5zaGFyZWJ0bmdyb3VwIHsgZGlzcGxheTogZmxleDsgZ2FwOiAxMnB4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZmxleC13cmFwOiB3cmFwOyB9CiAgICAgICAgLnNoYXJlYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDIwcHg7IGJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtOyBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsgYm9yZGVyOiBub25lOyBmb250LWZhbWlseTogJ01vbnRzZXJyYXQnLCBzYW5zLXNlcmlmOwogICAgICAgIH0KICAgICAgICAuc2hhcmVidG4ud2hhdHNhcHAgeyBiYWNrZ3JvdW5kOiByZ2JhKDM3LCAyMTEsIDEwMiwgMC4xNSk7IGNvbG9yOiAjMjVEMzY2OyBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDM3LCAyMTEsIDEwMiwgMC4zKTsgfQogICAgICAgIC5zaGFyZWJ0bi53aGF0c2FwcDpob3ZlciB7IGJhY2tncm91bmQ6ICMyNUQzNjY7IGNvbG9yOiB3aGl0ZTsgfQogICAgICAgIC5zaGFyZWJ0bi5saW5rZWRpbiB7IGJhY2tncm91bmQ6IHJnYmEoMTAsIDEwMiwgMTk0LCAwLjE1KTsgY29sb3I6ICMwQTY2QzI7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTAsIDEwMiwgMTk0LCAwLjMpOyB9CiAgICAgICAgLnNoYXJlYnRuLmxpbmtlZGluOmhvdmVyIHsgYmFja2dyb3VuZDogIzBBNjZDMjsgY29sb3I6IHdoaXRlOyB9CiAgICAgICAgLnNoYXJlYnRuLmNvcHkgeyBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xKTsgY29sb3I6IHZhcigtLWdvbGQpOyBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4zKTsgfQogICAgICAgIC5zaGFyZWJ0bi5jb3B5OmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tZ29sZCk7IGNvbG9yOiB2YXIoLS1uYXZ5KTsgfQogICAgICAgIAogICAgICAgIC5mb290ZXJpbmZvIHsgZm9udC1zaXplOiAwLjc1cmVtOyBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjUpOyB9CiAgICAgICAgCiAgICAgICAgLyogUmVzcG9uc2l2ZSAqLwogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgICAgICBzZWN0aW9uIHsgcGFkZGluZzogNjBweCAyMHB4OyB9CiAgICAgICAgICAgIC5oZXJvIHsgcGFkZGluZzogMTAwcHggMjBweCA2MHB4OyB9CiAgICAgICAgICAgIC5uYXZjZW50ZXIgeyBkaXNwbGF5OiBub25lOyB9CiAgICAgICAgICAgIC5wYWdlbmF2IHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxNXB4OyB9CiAgICAgICAgICAgIC5zaGFyZWJ0bmdyb3VwIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfQogICAgICAgICAgICAucGFydHR3b2J0biB7IHBhZGRpbmc6IDE1cHggMzBweDsgZm9udC1zaXplOiAwLjc1cmVtOyB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5yZXZlYWwgeyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7IHRyYW5zaXRpb246IGFsbCAwLjhzIGVhc2U7IH0KICAgICAgICAucmV2ZWFsLmFjdGl2ZSB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICAgIDxkaXYgY2xhc3M9IndhdGVybWFyayI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJnZW9wYXR0ZXJuIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im9yYiBvcmIxIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im9yYiBvcmIyIj48L2Rpdj4KICAgIAogICAgPCEtLSBOYXZpZ2F0aW9uIC0tPgogICAgPG5hdiBjbGFzcz0ic292ZXJlaWdubmF2Ij4KICAgICAgICA8YSBocmVmPSJodHRwczovL2R5bmFtaWNwYXJhZGlnbXNhY2FkZW15LmNvbS91YnVudHVodWIiIGNsYXNzPSJuYXZsb2dvIj5USEUgU09WRVJFSUdOIEFSQ0hJVEVDVOKEojwvYT4KICAgICAgICA8ZGl2IGNsYXNzPSJuYXZjZW50ZXIiPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2R5bmFtaWNwYXJhZGlnbXNhY2FkZW15LmNvbS93ZWVrMiIgY2xhc3M9Im5hdmJ0biI+PHNwYW4+4oaQPC9zcGFuPjxzcGFuPldlZWsgMjwvc3Bhbj48L2E+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZHluYW1pY3BhcmFkaWdtc2FjYWRlbXkuY29tL3VidW50dWh1YiIgY2xhc3M9Im5hdmJ0biBob21lYnRuIj48c3Bhbj7il4g8L3NwYW4+PHNwYW4+SHViPC9zcGFuPjwvYT4KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9keW5hbWljcGFyYWRpZ21zYWNhZGVteS5jb20vd2VlazMiIGNsYXNzPSJuYXZidG4iIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yKTsgYm9yZGVyLWNvbG9yOiB2YXIoLS1nb2xkKTsiPjxzcGFuPlBhcnQgMjwvc3Bhbj48c3Bhbj7ihpI8L3NwYW4+PC9hPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZwcm9ncmVzcyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzc2RvdCBjb21wbGV0ZWQiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3Nkb3QgY29tcGxldGVkIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzZG90IGN1cnJlbnQiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3Nkb3QgdXBjb21pbmciPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3Nkb3QgdXBjb21pbmciPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3Nkb3QgdXBjb21pbmciPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3Nkb3QgdXBjb21pbmciPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3Nkb3QgdXBjb21pbmciPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJuYXZiYWRnZSI+V2VlayAzIG9mIDg8L2Rpdj4KICAgIDwvbmF2PgogICAgCiAgICA8IS0tIEhlcm8gLS0+CiAgICA8c2VjdGlvbiBjbGFzcz0iaGVybyI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVyb2JhZGdlIj5VYnVudHUgQ29ob3J0IChUQVNOKSDigKIgV2VlayAzIEFzc2lnbm1lbnQg4oCiIFBhcnQgMTwvZGl2PgogICAgICAgIDxoMSBjbGFzcz0iaGVyb3RpdGxlIj4KICAgICAgICAgICAgPHNwYW4+QnVzaW5lc3MgUGxhbm5pbmc8L3NwYW4+CiAgICAgICAgICAgICYgU3RydWN0dXJlIE1vZHVsZQogICAgICAgIDwvaDE+CiAgICAgICAgPHAgY2xhc3M9Imhlcm9zdWJ0aXRsZSI+QnVzaW5lc3MgTW9kZWwgQ2FudmFzIGFuZCBDb3Jwb3JhdGUgU3RydWN0dXJlIGZvciBNdWthc2EgVmVudHVyZSBQYXJ0bmVycyBMTEM8L3A+CiAgICAgICAgCiAgICAgICAgPGRpdiBjbGFzcz0icGFydHR3b2N0YSI+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZHluYW1pY3BhcmFkaWdtc2FjYWRlbXkuY29tL3dlZWszIiBjbGFzcz0icGFydHR3b2J0biI+CiAgICAgICAgICAgICAgICA8c3Bhbj5Db250aW51ZSB0byBWaXN1YWwgQ2FudmFzPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFycm93Ij7ihpI8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIAogICAgPCEtLSBCdXNpbmVzcyBNb2RlbCBDYW52YXMgLS0+CiAgICA8c2VjdGlvbj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uaGVhZGVyIHJldmVhbCI+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0ic2VjdGlvbmxhYmVsIj5QYXJ0IE9uZTwvcD4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0ic2VjdGlvbnRpdGxlIj5CdXNpbmVzcyBNb2RlbCBDYW52YXM8L2gyPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9InNlY3Rpb25zdWJ0aXRsZSI+TXVrYXNhIFZlbnR1cmUgUGFydG5lcnMgTExDIOKAlCBBIG11bHRpLXZlbnR1cmUgZGlnaXRhbCBob2xkaW5nIGNvbXBhbnk8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FudmFzZ3JpZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYW52YXNjYXJkIHJldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPGgzPjxzcGFuIGNsYXNzPSJjYW52YXNpY29uIj7wn5KhPC9zcGFuPiBUaGUgSWRlYTwvaDM+CiAgICAgICAgICAgICAgICAgICAgPHA+TXVrYXNhIFZlbnR1cmUgUGFydG5lcnMgTExDIG9wZXJhdGVzIGFzIGEgcGFyZW50IGNvbXBhbnkgaG9sZGluZyBtdWx0aXBsZSB2ZW50dXJlcyBpbiBkaWdpdGFsIG1hcmtldGluZywgU2FhUyBzb2x1dGlvbnMsIHN0cmF0ZWdpYyBjb21tdW5pY2F0aW9ucywgd2ViaW5hciBhcmNoaXRlY3R1cmUsIGJyYW5kIGRldmVsb3BtZW50IGFuZCBkaWdpdGFsIHRyYW5zZm9ybWF0aW9uIHN1cHBvcnQgZm9yIGdsb2JhbCBjbGllbnRzLiBUaGUgY29tcGFueSBmdW5jdGlvbnMgYXMgYm90aCBhbiBhZ2VuY3kgYW5kIGEgdGVjaG5vbG9neS1lbmFibGVkIHNlcnZpY2UgcHJvdmlkZXIuPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbnZhc2NhcmQgcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8aDM+PHNwYW4gY2xhc3M9ImNhbnZhc2ljb24iPvCfkaU8L3NwYW4+IEN1c3RvbWVyPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cD48c3Ryb25nPlByaW1hcnk6PC9zdHJvbmc+IEJ1c2luZXNzZXMgYW5kIG9yZ2FuaXphdGlvbnMgcmVxdWlyaW5nIGhpZ2gtbGV2ZWwgZGlnaXRhbCBzdHJhdGVneSwgbWFya2V0aW5nIG9wZXJhdGlvbnMsIGNvbnRlbnQgc3lzdGVtcyBhbmQgdGVjaG5vbG9neSBpbnRlZ3JhdGlvbi4gVGhpcyBpbmNsdWRlcyBwcm9mZXNzaW9uYWwgc2VydmljZSBmaXJtcywgY29hY2hlcywgbmV0d29ya3MsIGVkdWNhdGlvbmFsIG9yZ2FuaXphdGlvbnMsIGFuZCBjb21wYW5pZXMgcHJlcGFyaW5nIHRvIHNjYWxlIGRpZ2l0YWxseS48L3A+CiAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbi10b3A6IDE1cHg7Ij48c3Ryb25nPlNlY29uZGFyeTo8L3N0cm9uZz4gR3JvdXBzIHNlZWtpbmcgc3RydWN0dXJlZCB3ZWJpbmFycywgZXZlcmdyZWVuIHRyYWluaW5nIGFuZCBicmFuZGVkIGVkdWNhdGlvbmFsIGNvbnRlbnQuPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbnZhc2NhcmQgcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8aDM+PHNwYW4gY2xhc3M9ImNhbnZhc2ljb24iPvCfkrA8L3NwYW4+IE1vbmV5IEluPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cD5SZXZlbnVlIHByaW1hcmlseSBjb21lcyB0aHJvdWdoIENoaWVmIE1hcmtldGluZyBPZmZpY2VyIGxldmVsIGNvbnRyYWN0cyB3aXRoaW4gbXkgZGlnaXRhbCBtYXJrZXRpbmcgYW5kIFNhYVMgYWdlbmN5IG9wZXJhdGlvbnMuIEFkZGl0aW9uYWwgcmV2ZW51ZSBzdHJlYW1zIGluY2x1ZGUgZGlnaXRhbCBsZWFybmluZyBhcmNoaXRlY3R1cmUsIHdlYmluYXIgcHJvZHVjdGlvbiwgbGljZW5zaW5nIG9mIGVkdWNhdGlvbmFsIG1vZHVsZXMsIGNvbnN1bHRpbmcgcmV0YWluZXJzLCBhbmQgYnJhbmQgZGV2ZWxvcG1lbnQgc2VydmljZXMuPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhbnZhc2NhcmQgcmV2ZWFsIj4KICAgICAgICAgICAgICAgICAgICA8aDM+PHNwYW4gY2xhc3M9ImNhbnZhc2ljb24iPvCfk4o8L3NwYW4+IE1vbmV5IE91dDwvaDM+CiAgICAgICAgICAgICAgICAgICAgPHA+T3BlcmF0aW9uYWwgZXhwZW5zZXMgaW5jbHVkZSBzb2Z0d2FyZSBwbGF0Zm9ybXMsIFNhYVMgcmVzb3VyY2UgdG9vbHMsIGRpZ2l0YWwgaW5mcmFzdHJ1Y3R1cmUsIGRlc2lnbiBhbmQgcHJvZHVjdGlvbiBzeXN0ZW1zLCBwcm9mZXNzaW9uYWwgZGV2ZWxvcG1lbnQsIGNvbnRpbnVpbmcgZWR1Y2F0aW9uIGFuZCBzcGVjaWFsaXplZCBjZXJ0aWZpY2F0aW9ucywgbGVnYWwgc3VwcG9ydCwgYW5kIGV4ZWN1dGl2ZSBvcGVyYXRpb25zIG1hbmFnZW1lbnQuIEkgYWxzbyBpbnZlc3QgaW4gb25nb2luZyBleHBhbnNpb24gb2YgYWdlbmN5IGNhcGFiaWxpdGllcyBhcyB3ZSB0cmFuc2l0aW9uIHRvd2FyZCBhIEMgQ29ycG9yYXRpb24gc3RydWN0dXJlLjwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYW52YXNjYXJkIHJldmVhbCI+CiAgICAgICAgICAgICAgICAgICAgPGgzPjxzcGFuIGNsYXNzPSJjYW52YXNpY29uIj7wn6SdPC9zcGFuPiBUZWFtPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cD5NeSBjb21wYW55IGlzIHN1cHBvcnRlZCBieSBhIENoaWVmIEZpbmFuY2lhbCBPZmZpY2VyLCBhIENoaWVmIE9wZXJhdGluZyBPZmZpY2VyLCBhbmQgdHdvIGxvbmctdGVybSB2aXJ0dWFsIGFzc2lzdGFudHMgd2hvIGhhdmUgYmVlbiB3aXRoIG1lIGZvciBlaWdodCBhbmQgZml2ZSB5ZWFycy4gVG9nZXRoZXIgdGhleSBoZWxwIG1haW50YWluIG9wZXJhdGlvbmFsIHN0YWJpbGl0eSwgZmluYW5jaWFsIG1hbmFnZW1lbnQsIGNsaWVudCBkZWxpdmVyeSBhbmQgaW50ZXJuYWwgc3lzdGVtcy4gSSBleHBhbmQgdGhlIHRlYW0gd2l0aCBzcGVjaWFsaXN0cyB3aGVuIG5lZWRlZCBkZXBlbmRpbmcgb24gcHJvamVjdCBzY29wZS48L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIERlZXAgRGl2ZSBDVEEgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlZXBkaXZlY3RhIHJldmVhbCI+CiAgICAgICAgICAgICAgICA8aDM+4pymIFdhbnQgdGhlIEZ1bGwgVmlzdWFsIEV4cGVyaWVuY2U/PC9oMz4KICAgICAgICAgICAgICAgIDxwPkV4cGxvcmUgdGhlIGNvbXBsZXRlIDktYmxvY2sgQnVzaW5lc3MgTW9kZWwgQ2FudmFzIHdpdGggaW50ZXJhY3RpdmUgaG92ZXIgc3RhdGVzLCBjb21wYW55IHN0YXRpc3RpY3MsIGFuZCB0aGUgZnVsbCBjb3Jwb3JhdGUgc3RydWN0dXJlIGRpYWdyYW0uPC9wPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9keW5hbWljcGFyYWRpZ21zYWNhZGVteS5jb20vd2VlazMiIGNsYXNzPSJkZWVwZGl2ZWJ0biI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+VmlldyBWaXN1YWwgQ2FudmFzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPuKGkjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CiAgICAKICAgIDwhLS0gUmVnaXN0cmF0aW9uIFNlY3Rpb24gLS0+CiAgICA8c2VjdGlvbiBjbGFzcz0icmVnaXN0cmF0aW9uc2VjdGlvbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbmhlYWRlciByZXZlYWwiPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9InNlY3Rpb25sYWJlbCI+UGFydCBUd288L3A+CiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InNlY3Rpb250aXRsZSI+QnVzaW5lc3MgUmVnaXN0cmF0aW9uPC9oMj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJzZWN0aW9uc3VidGl0bGUiPlVuZGVyc3RhbmRpbmcgc3RydWN0dXJhbCBvcHRpb25zIGZvciBlbnRyZXByZW5ldXJzIGFjcm9zcyByZWdpb25zPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlZ2lzdHJhdGlvbmNhcmQgcmV2ZWFsIj4KICAgICAgICAgICAgICAgIDxoMz7wn5OLIFJlZ2lzdHJhdGlvbiBDb250ZXh0PC9oMz4KICAgICAgICAgICAgICAgIDxwPkkgYWNrbm93bGVkZ2UgdGhlIFVnYW5kYS1iYXNlZCBpbnN0cnVjdGlvbiByZWdhcmRpbmcgVVJTQiBhcyBwYXJ0IG9mIHRoZSBhY2NlbGVyYXRvciBjdXJyaWN1bHVtLiBBbHRob3VnaCBJIGRvIG5vdCBsaXZlIGluIFVnYW5kYSBhbmQgZG8gbm90IHVzZSBVUlNCIGZvciByZWdpc3RyYXRpb24sIEkgdW5kZXJzdGFuZCB0aGUgaW1wb3J0YW5jZSBvZiBsZWFybmluZyBob3cgdG8gYXNzZXNzIHRoZSBzdHJ1Y3R1cmFsIG9wdGlvbnMgYXZhaWxhYmxlIHRvIGVudHJlcHJlbmV1cnMgaW4gZWFjaCByZWdpb24uPC9wPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8cD5CZWNhdXNlIEkgb3BlcmF0ZSBpbnRlcm5hdGlvbmFsbHksIG15IGNvbXBhbnkgaXMgZm9ybWFsbHkgcmVnaXN0ZXJlZCBpbiB0aGUgPHN0cm9uZz5Vbml0ZWQgU3RhdGVzIGFzIE11a2FzYSBWZW50dXJlIFBhcnRuZXJzIExMQzwvc3Ryb25nPiwgZXN0YWJsaXNoZWQgaW4gMjAxOCBpbiB0aGUgc3RhdGUgb2YgTWljaGlnYW4uIFRoaXMgc3RydWN0dXJlIGhhcyBhbGxvd2VkIG1lIHRvIGJ1aWxkIG11bHRpcGxlIGJ1c2luZXNzIHVuaXRzIHVuZGVyIG9uZSBwYXJlbnQgZW50aXR5IGFuZCBtYWludGFpbiBsZWdhbCBhbmQgZmluYW5jaWFsIHNlcGFyYXRpb24gd2hlcmUgbmVlZGVkLjwvcD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPHA+SSBhbSBjdXJyZW50bHkgcHJlcGFyaW5nIHRvIDxzdHJvbmc+dHJhbnNpdGlvbiB0byBhIEMgQ29ycG9yYXRpb24gc3RydWN0dXJlPC9zdHJvbmc+IHRvIHN1cHBvcnQgdGhlIGNvbXBhbnkncyBncm93dGgsIHRlY2hub2xvZ3kgZXhwYW5zaW9uIGFuZCBsb25nLXRlcm0gc2NhbGluZyByZXF1aXJlbWVudHMuIEkgd29yayB3aXRoIExlZ2FsU2hpZWxkLCBhIGxpY2Vuc2VkIG5ldHdvcmsgb2YgYXR0b3JuZXlzLCBmb3IgYm90aCBidXNpbmVzcyBhbmQgcGVyc29uYWwgbGVnYWwgc3VwcG9ydC48L3A+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0ibWFyZ2luLXRvcDogMzBweDsiPvCfj5vvuI8gRXF1aXZhbGVudCBSZWdpc3RyYXRpb24gT3B0aW9ucyBDb25zaWRlcmVkPC9oMz4KICAgICAgICAgICAgICAgIDxwPlRoZSBjbG9zZXN0IFVTIGVxdWl2YWxlbnRzIHRvIFVSU0Igb3B0aW9ucyBpbmNsdWRlOjwvcD4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ib3B0aW9uc2xpc3QiPgogICAgICAgICAgICAgICAgICAgIDxsaT5Tb2xlIFByb3ByaWV0b3JzaGlwPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+TGltaXRlZCBMaWFiaWxpdHkgQ29tcGFueSAoTExDKTwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPkMgQ29ycG9yYXRpb248L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2hvaWNlaGlnaGxpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8aDQ+4pymIE15IENob2ljZTwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHA+SSBpbml0aWFsbHkgY2hvc2UgYW4gPHN0cm9uZz5MTEM8L3N0cm9uZz4gYmVjYXVzZSBpdCBvZmZlcmVkIGxpYWJpbGl0eSBwcm90ZWN0aW9uLCBmbGV4aWJpbGl0eSBhbmQgdGhlIGFiaWxpdHkgdG8gc3VwcG9ydCBtdWx0aXBsZSBidXNpbmVzcyB2ZW50dXJlcyB1bmRlciBvbmUgZW50aXR5LiBJIGFtIG5vdyB0cmFuc2l0aW9uaW5nIHRvd2FyZCBhIDxzdHJvbmc+QyBDb3Jwb3JhdGlvbjwvc3Ryb25nPiBiZWNhdXNlIHRoaXMgc3RydWN0dXJlIGJldHRlciBzdXBwb3J0cyBleHBhbnNpb24sIGludmVzdG1lbnQgcmVhZGluZXNzIGFuZCB0aGUgbG9uZy10ZXJtIG5lZWRzIG9mIGEgU2FhUy1lbmFibGVkIGFuZCBhZ2VuY3ktYmFzZWQgYnVzaW5lc3MuPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgogICAgCiAgICA8IS0tIFN1bW1hcnkgLS0+CiAgICA8c2VjdGlvbiBjbGFzcz0ic3VtbWFyeXNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb25oZWFkZXIgcmV2ZWFsIj4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJzZWN0aW9ubGFiZWwiPlN1bW1hcnkgU3RhdGVtZW50PC9wPgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJzZWN0aW9udGl0bGUiPkFzc2lnbm1lbnQgQ29tcGxldGlvbjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3VtbWFyeWNhcmQgcmV2ZWFsIj4KICAgICAgICAgICAgICAgIDxwPiJJIGNvbXBsZXRlZCB0aGlzIFdlZWsgVGhyZWUgYXNzaWdubWVudCBieSBhcHBseWluZyB0aGUgY2xhc3MgcHJpbmNpcGxlcyBvZiBidXNpbmVzcyBwbGFubmluZyBhbmQgcmVnaXN0cmF0aW9uIHRvIG15IHJlYWwgYnVzaW5lc3MgZW52aXJvbm1lbnQuIEFsdGhvdWdoIEkgZG8gbm90IHVzZSBVZ2FuZGEncyBVUlNCIHN5c3RlbSwgSSBmb2xsb3dlZCB0aGUgbGVhcm5pbmcgb2JqZWN0aXZlcyBieSBhbmFseXppbmcgZXF1aXZhbGVudCBzdHJ1Y3R1cmVzLCByZXZpZXdpbmcgbXkgZXhpc3RpbmcgcmVnaXN0cmF0aW9uLCBjbGFyaWZ5aW5nIG15IGJ1c2luZXNzIG1vZGVsIGFuZCBwcmVzZW50aW5nIGEgQnVzaW5lc3MgTW9kZWwgQ2FudmFzIGFsaWduZWQgd2l0aCBteSBvcGVyYXRpb25zLiBUaGlzIHN1Ym1pc3Npb24gaG9ub3JzIHRoZSBwdXJwb3NlIG9mIHRoZSBsZXNzb24gd2hpbGUgc3RheWluZyB0cnVlIHRvIG15IGdyb3d0aCB0cmFqZWN0b3J5IGFzIGEgZm91bmRlci4iPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KICAgIAogICAgPCEtLSBQYXJ0IDIgRmluYWwgQ1RBIC0tPgogICAgPHNlY3Rpb24gY2xhc3M9ImZpbmFsY3Rhc2VjdGlvbiI+CiAgICAgICAgPGgzPkNvbnRpbnVlIHRvIFBhcnQgMjwvaDM+CiAgICAgICAgPHA+RXhwZXJpZW5jZSB0aGUgZnVsbCB2aXN1YWwgQnVzaW5lc3MgTW9kZWwgQ2FudmFzIHdpdGggaW50ZXJhY3RpdmUgZWxlbWVudHMgYW5kIGRldGFpbGVkIGFyY2hpdGVjdHVyZTwvcD4KICAgICAgICA8YSBocmVmPSJodHRwczovL2R5bmFtaWNwYXJhZGlnbXNhY2FkZW15LmNvbS93ZWVrMyIgY2xhc3M9ImZpbmFsY3RhYnRuIj4KICAgICAgICAgICAgPHNwYW4+VmlldyBWaXN1YWwgQ2FudmFzPC9zcGFuPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXJyb3ciPuKGkjwvc3Bhbj4KICAgICAgICA8L2E+CiAgICA8L3NlY3Rpb24+CiAgICAKICAgIDwhLS0gQm90dG9tIE5hdiAtLT4KICAgIDxuYXYgY2xhc3M9InBhZ2VuYXYiPgogICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZHluYW1pY3BhcmFkaWdtc2FjYWRlbXkuY29tL3dlZWsyIiBjbGFzcz0icGFnZW5hdmNhcmQiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0icGFnZW5hdmFycm93Ij7ihpA8L3NwYW4+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhZ2VuYXZpbmZvIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYWdlbmF2bGFiZWwiPlByZXZpb3VzPC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBhZ2VuYXZ0aXRsZSI+V2VlayAyOiBDbGllbnQgQWNxdWlzaXRpb248L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvYT4KICAgICAgICA8YSBocmVmPSJodHRwczovL2R5bmFtaWNwYXJhZGlnbXNhY2FkZW15LmNvbS91YnVudHVodWIiIGNsYXNzPSJwYWdlbmF2aG9tZSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYWdlbmF2YXJyb3ciPuKXiDwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBhZ2VuYXZsYWJlbCI+UmV0dXJuIHRvIEh1Yjwvc3Bhbj4KICAgICAgICA8L2E+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9keW5hbWljcGFyYWRpZ21zYWNhZGVteS5jb20vd2VlazMiIGNsYXNzPSJwYWdlbmF2Y2FyZCBmZWF0dXJlZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBhZ2VuYXZpbmZvIiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYWdlbmF2bGFiZWwiPlBhcnQgMjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYWdlbmF2dGl0bGUiPlZpc3VhbCBDYW52YXMgRGVlcCBEaXZlPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBhZ2VuYXZhcnJvdyI+4oaSPC9zcGFuPgogICAgICAgIDwvYT4KICAgIDwvbmF2PgogICAgCiAgICA8IS0tIEZvb3RlciAtLT4KICAgIDxmb290ZXIgY2xhc3M9ImZvb3RlcnNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3RlcmxvZ28iPlRIRSBTT1ZFUkVJR04gQVJDSElURUNU4oSiPC9kaXY+CiAgICAgICAgPHAgY2xhc3M9ImZvb3RlcnRhZ2xpbmUiPldoZXJlIElkZW50aXR5IE1lZXRzIERpZ2l0YWwgUG93ZXI8L3A+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyZGl2aWRlciI+PC9kaXY+CiAgICAgICAgPHAgY2xhc3M9ImZvb3RlcmNvcHlyaWdodCI+CiAgICAgICAgICAgIMKpIDIwMjQgPHN0cm9uZz5EeW5hbWljIFBhcmFkaWdtcyAmIE1lbnRvcnNoaXAgU3VjY2VzcyBBY2FkZW1pZXPihKI8L3N0cm9uZz48YnI+CiAgICAgICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFVuYXV0aG9yaXplZCByZXByb2R1Y3Rpb24gcHJvaGliaXRlZC4KICAgICAgICA8L3A+CiAgICAgICAgPGRpdiBjbGFzcz0ic2hhcmVjdGFzZWN0aW9uIj4KICAgICAgICAgICAgPGgzIGNsYXNzPSJzaGFyZWN0YWhlYWRsaW5lIj5Lbm93IHNvbWVvbmUgd2hvIHdvdWxkIGJlbmVmaXQgZnJvbSB0aGlzPzwvaDM+CiAgICAgICAgICAgIDxwIGNsYXNzPSJzaGFyZWN0YXN1YnRleHQiPlNoYXJlIHRoaXMgcmVzb3VyY2Ugd2l0aCBhIGNvbGxlYWd1ZSBvciBmcmllbmQ8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNoYXJlYnRuZ3JvdXAiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9InNoYXJlYnRuIHdoYXRzYXBwIiBpZD0ic2hhcmVXaGF0c0FwcCI+PHNwYW4+8J+SrDwvc3Bhbj48c3Bhbj5TaGFyZSB2aWEgV2hhdHNBcHA8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9InNoYXJlYnRuIGxpbmtlZGluIiBpZD0ic2hhcmVMaW5rZWRJbiI+PHNwYW4+8J+SvDwvc3Bhbj48c3Bhbj5TaGFyZSBvbiBMaW5rZWRJbjwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzaGFyZWJ0biBjb3B5IiBpZD0ic2hhcmVDb3B5Ij48c3Bhbj7wn5OLPC9zcGFuPjxzcGFuPkNvcHkgTGluazwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHAgY2xhc3M9ImZvb3RlcmluZm8iPgogICAgICAgICAgICBVYnVudHUgQ29ob3J0IChUQVNOKSBXZWVrIDMgSG9tZXdvcmsg4oCiIFBhcnQgMTxicj4KICAgICAgICAgICAgPHN0cm9uZz5OaWdodGluZ2FsZSBNdWthc2EgfCBEeW5hbWljIFBhcmFkaWdtcyAmIE1lbnRvcnNoaXAgU3VjY2VzcyBBY2FkZW1pZXM8L3N0cm9uZz4KICAgICAgICA8L3A+CiAgICA8L2Zvb3Rlcj4KICAgIAogICAgPHNjcmlwdD4KICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIGUgPT4gZS5wcmV2ZW50RGVmYXVsdCgpKTsKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoKGUuY3RybEtleSAmJiBbJ2MnLCdDJywndicsJ1YnLCdzJywnUycsJ3AnLCdQJywndScsJ1UnXS5pbmNsdWRlcyhlLmtleSkpIHx8IGUua2V5ID09PSAnRjEyJykgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIGNvbnN0IFNIQVJFX0NPTkZJRyA9IHsgc2hhcmVVcmw6ICdodHRwczovL2R5bmFtaWNwYXJhZGlnbXNhY2FkZW15LmNvbS8nLCB3aGF0c2FwcE1lc3NhZ2U6ICJDaGVjayBvdXQgdGhpcyBhbWF6aW5nIGJ1c2luZXNzIGZyYW1ld29yayBieSBOaWdodGluZ2FsZSBNdWthc2E6ICIgfTsKICAgICAgICAKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaGFyZVdoYXRzQXBwJykuaHJlZiA9IGBodHRwczovL3dhLm1lLz90ZXh0PSR7ZW5jb2RlVVJJQ29tcG9uZW50KFNIQVJFX0NPTkZJRy53aGF0c2FwcE1lc3NhZ2UgKyBTSEFSRV9DT05GSUcuc2hhcmVVcmwpfWA7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaGFyZVdoYXRzQXBwJykudGFyZ2V0ID0gJ19ibGFuayc7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaGFyZUxpbmtlZEluJykuaHJlZiA9IGBodHRwczovL3d3dy5saW5rZWRpbi5jb20vc2hhcmluZy9zaGFyZS1vZmZzaXRlLz91cmw9JHtlbmNvZGVVUklDb21wb25lbnQoU0hBUkVfQ09ORklHLnNoYXJlVXJsKX1gOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hhcmVMaW5rZWRJbicpLnRhcmdldCA9ICdfYmxhbmsnOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hhcmVDb3B5JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KFNIQVJFX0NPTkZJRy5zaGFyZVVybCkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbm5lckhUTUwgPSAnPHNwYW4+4pyTPC9zcGFuPjxzcGFuPkxpbmsgQ29waWVkITwvc3Bhbj4nOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLmlubmVySFRNTCA9ICc8c3Bhbj7wn5OLPC9zcGFuPjxzcGFuPkNvcHkgTGluazwvc3Bhbj4nOyB9LCAyMDAwKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgICAgICAKICAgICAgICBmdW5jdGlvbiByZXZlYWwoKSB7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZXZlYWwnKS5mb3JFYWNoKGVsID0+IHsKICAgICAgICAgICAgICAgIGlmIChlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgPCB3aW5kb3cuaW5uZXJIZWlnaHQgLSAxNTApIGVsLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHJldmVhbCk7CiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCByZXZlYWwpOwogICAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==","embed":""}
Week 3: Business Planning & Structure | Ubuntu Cohort | Nightingale Mukasa
THE SOVEREIGN ARCHITECT™
←Week 2 ◈Hub Part 2→
Week 3 of 8
Ubuntu Cohort (TASN) • Week 3 Assignment • Part 1

Business Planning & Structure Module

Business Model Canvas and Corporate Structure for Mukasa Venture Partners LLC

Continue to Visual Canvas →

Part One

Business Model Canvas

Mukasa Venture Partners LLC — A multi-venture digital holding company

💡 The Idea

Mukasa Venture Partners LLC operates as a parent company holding multiple ventures in digital marketing, SaaS solutions, strategic communications, webinar architecture, brand development and digital transformation support for global clients. The company functions as both an agency and a technology-enabled service provider.

👥 Customer

Primary: Businesses and organizations requiring high-level digital strategy, marketing operations, content systems and technology integration. This includes professional service firms, coaches, networks, educational organizations, and companies preparing to scale digitally.

Secondary: Groups seeking structured webinars, evergreen training and branded educational content.

💰 Money In

Revenue primarily comes through Chief Marketing Officer level contracts within my digital marketing and SaaS agency operations. Additional revenue streams include digital learning architecture, webinar production, licensing of educational modules, consulting retainers, and brand development services.

📊 Money Out

Operational expenses include software platforms, SaaS resource tools, digital infrastructure, design and production systems, professional development, continuing education and specialized certifications, legal support, and executive operations management. I also invest in ongoing expansion of agency capabilities as we transition toward a C Corporation structure.

🤝 Team

My company is supported by a Chief Financial Officer, a Chief Operating Officer, and two long-term virtual assistants who have been with me for eight and five years. Together they help maintain operational stability, financial management, client delivery and internal systems. I expand the team with specialists when needed depending on project scope.

✦ Want the Full Visual Experience?

Explore the complete 9-block Business Model Canvas with interactive hover states, company statistics, and the full corporate structure diagram.

View Visual Canvas →

Part Two

Business Registration

Understanding structural options for entrepreneurs across regions

📋 Registration Context

I acknowledge the Uganda-based instruction regarding URSB as part of the accelerator curriculum. Although I do not live in Uganda and do not use URSB for registration, I understand the importance of learning how to assess the structural options available to entrepreneurs in each region.

Because I operate internationally, my company is formally registered in the United States as Mukasa Venture Partners LLC, established in 2018 in the state of Michigan. This structure has allowed me to build multiple business units under one parent entity and maintain legal and financial separation where needed.

I am currently preparing to transition to a C Corporation structure to support the company's growth, technology expansion and long-term scaling requirements. I work with LegalShield, a licensed network of attorneys, for both business and personal legal support.

🏛️ Equivalent Registration Options Considered

The closest US equivalents to URSB options include:

  • Sole Proprietorship
  • Limited Liability Company (LLC)
  • C Corporation

✦ My Choice

I initially chose an LLC because it offered liability protection, flexibility and the ability to support multiple business ventures under one entity. I am now transitioning toward a C Corporation because this structure better supports expansion, investment readiness and the long-term needs of a SaaS-enabled and agency-based business.

Summary Statement

Assignment Completion

"I completed this Week Three assignment by applying the class principles of business planning and registration to my real business environment. Although I do not use Uganda's URSB system, I followed the learning objectives by analyzing equivalent structures, reviewing my existing registration, clarifying my business model and presenting a Business Model Canvas aligned with my operations. This submission honors the purpose of the lesson while staying true to my growth trajectory as a founder."

Continue to Part 2

Experience the full visual Business Model Canvas with interactive elements and detailed architecture

View Visual Canvas →
←
Previous Week 2: Client Acquisition
◈ Return to Hub
Part 2 Visual Canvas Deep Dive
→
THE SOVEREIGN ARCHITECT™

Where Identity Meets Digital Power

© 2024 Dynamic Paradigms & Mentorship Success Academies™
All rights reserved. Unauthorized reproduction prohibited.

Know someone who would benefit from this?

Share this resource with a colleague or friend

💬Share via WhatsApp 💼Share on LinkedIn

Ubuntu Cohort (TASN) Week 3 Homework • Part 1
Nightingale Mukasa | Dynamic Paradigms & Mentorship Success Academies

Image Gallery Grid
T
Please Check Your Email
We Will Be Following Up Shortly
*
*
*

warning