Wellness wheel for assessing health

Your Wellness Wheel

[fusion_builder_container hundred_percent=”no” hundred_percent_height=”no” hundred_percent_height_scroll=”no” hundred_percent_height_center_content=”yes” equal_height_columns=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” status=”published” border_style=”solid” padding_top=”15%” gradient_start_position=”0″ gradient_end_position=”100″ gradient_type=”linear” radial_direction=”center center” linear_angle=”0″ background_image=”https://healthwithhashimotos.com/wp-content/uploads/2022/12/fred-moon-3NvRkNaiHtc-unsplash-scaled.jpg” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ background_blend_mode=”none” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” filter_hue=”0″ filter_saturation=”100″ filter_brightness=”100″ filter_contrast=”100″ filter_invert=”0″ filter_sepia=”0″ filter_opacity=”100″ filter_blur=”0″ filter_hue_hover=”0″ filter_saturation_hover=”100″ filter_brightness_hover=”100″ filter_contrast_hover=”100″ filter_invert_hover=”0″ filter_sepia_hover=”0″ filter_opacity_hover=”100″ filter_blur_hover=”0″ admin_toggled=”yes” admin_label=”Opt-in Form” gradient_start_color=”hsla(var(–awb-color5-h),var(–awb-color5-s),var(–awb-color5-l),calc(var(–awb-color5-a) – 20%))” gradient_end_color=”hsla(var(–awb-color8-h),var(–awb-color8-s),calc( var(–awb-color8-l) – 20% ),calc( var(–awb-color8-a) – 55% ))” type=”flex” margin_bottom=”0px” padding_bottom=”10%” margin_top=”0px” padding_right=”10%” padding_left=”10%”][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ center_content=”no” target=”_self” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” hover_type=”none” border_style=”solid” border_position=”all” box_shadow=”no” box_shadow_blur=”0″ box_shadow_spread=”0″ background_type=”single” gradient_start_position=”0″ gradient_end_position=”100″ gradient_type=”linear” radial_direction=”center center” linear_angle=”180″ background_position=”center center” background_repeat=”no-repeat” background_blend_mode=”none” animation_type=”fade” animation_direction=”up” animation_speed=”1.0″ filter_type=”regular” filter_hue=”0″ filter_saturation=”100″ filter_brightness=”100″ filter_contrast=”100″ filter_invert=”0″ filter_sepia=”0″ filter_opacity=”100″ filter_blur=”0″ filter_hue_hover=”0″ filter_saturation_hover=”100″ filter_brightness_hover=”100″ filter_contrast_hover=”100″ filter_invert_hover=”0″ filter_sepia_hover=”0″ filter_opacity_hover=”100″ filter_blur_hover=”0″ first=”true” last=”true” padding_bottom=”59px” border_sizes_top=”0px” border_sizes_bottom=”0px” border_sizes_left=”0px” border_sizes_right=”0px” align_self=”center” align_content=”center” min_height=”” link=””][fusion_title title_type=”text” rotation_effect=”bounceIn” display_time=”1200″ highlight_effect=”circle” loop_animation=”off” highlight_width=”9″ highlight_top_margin=”0″ content_align=”center” size=”1″ style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” margin_bottom=”0px” margin_bottom_mobile=”0px” margin_bottom_small=”0px”]

The Whole Picture: My Wellness Wheel

[/fusion_title][fusion_text animation_direction=”left” animation_speed=”0.3″ hide_on_mobile=”small-visibility,medium-visibility,large-visibility” sticky_display=”normal,sticky” text_color=”#ffffff” margin_right=”10%” margin_left=”10%”]

This quick health assessment tool will give you a picture of your current health status. With this information, you can plan for your healthiest 2023!

[/fusion_text][/fusion_builder_column][fusion_builder_column type=”1_1″ layout=”1_1″ center_content=”no” target=”_self” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” hover_type=”none” border_style=”solid” border_position=”all” box_shadow=”no” box_shadow_blur=”0″ box_shadow_spread=”0″ background_type=”single” gradient_start_position=”0″ gradient_end_position=”100″ gradient_type=”linear” radial_direction=”center center” linear_angle=”180″ background_position=”left top” background_repeat=”no-repeat” background_blend_mode=”none” animation_direction=”left” animation_speed=”0.3″ filter_type=”regular” filter_hue=”0″ filter_saturation=”100″ filter_brightness=”100″ filter_contrast=”100″ filter_invert=”0″ filter_sepia=”0″ filter_opacity=”100″ filter_blur=”0″ filter_hue_hover=”0″ filter_saturation_hover=”100″ filter_brightness_hover=”100″ filter_contrast_hover=”100″ filter_invert_hover=”0″ filter_sepia_hover=”0″ filter_opacity_hover=”100″ filter_blur_hover=”0″ first=”true” last=”true” border_sizes_top=”0px” border_sizes_bottom=”0px” border_sizes_left=”0px” border_sizes_right=”0px” min_height=”” link=””][fusion_code]PHN0eWxlPgogI19mb3JtXzM3XyB7IGZvbnQtc2l6ZToxNHB4OyBsaW5lLWhlaWdodDoxLjY7IGZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IG1hcmdpbjowOyB9CiAjX2Zvcm1fMzdfICogeyBvdXRsaW5lOjA7IH0KIC5fZm9ybV9oaWRlIHsgZGlzcGxheTpub25lOyB2aXNpYmlsaXR5OmhpZGRlbjsgfQogLl9mb3JtX3Nob3cgeyBkaXNwbGF5OmJsb2NrOyB2aXNpYmlsaXR5OnZpc2libGU7IH0KICNfZm9ybV8zN18uX2Zvcm0tdG9wIHsgdG9wOjA7IH0KICNfZm9ybV8zN18uX2Zvcm0tYm90dG9tIHsgYm90dG9tOjA7IH0KICNfZm9ybV8zN18uX2Zvcm0tbGVmdCB7IGxlZnQ6MDsgfQogI19mb3JtXzM3Xy5fZm9ybS1yaWdodCB7IHJpZ2h0OjA7IH0KICNfZm9ybV8zN18gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zN18gaW5wdXRbdHlwZT0idGVsIl0sI19mb3JtXzM3XyBpbnB1dFt0eXBlPSJkYXRlIl0sI19mb3JtXzM3XyB0ZXh0YXJlYSB7IHBhZGRpbmc6NnB4OyBoZWlnaHQ6YXV0bzsgYm9yZGVyOiM5Nzk3OTcgMXB4IHNvbGlkOyBib3JkZXItcmFkaXVzOjRweDsgY29sb3I6IzAwMCAhaW1wb3J0YW50OyBmb250LXNpemU6MTRweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0KICNfZm9ybV8zN18gdGV4dGFyZWEgeyByZXNpemU6bm9uZTsgfQogI19mb3JtXzM3XyAuX3N1Ym1pdCB7IC13ZWJraXQtYXBwZWFyYW5jZTpub25lOyBjdXJzb3I6cG9pbnRlcjsgZm9udC1mYW1pbHk6YXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZToxNHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgYmFja2dyb3VuZDojMDA0Y2ZmICFpbXBvcnRhbnQ7IGJvcmRlcjowICFpbXBvcnRhbnQ7IC1tb3otYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjRweCAhaW1wb3J0YW50OyBjb2xvcjojZmZmICFpbXBvcnRhbnQ7IHBhZGRpbmc6MTBweCAhaW1wb3J0YW50OyB9CiAjX2Zvcm1fMzdfIC5fY2xvc2UtaWNvbiB7IGN1cnNvcjpwb2ludGVyOyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnaHR0cHM6Ly9kMjI2YWo0YW8xdDYxcS5jbG91ZGZyb250Lm5ldC9lc2ZreWpoMXVfZm9ybXMtY2xvc2UtZGFyay5wbmcnKTsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXNpemU6MTQuMnB4IDE0LjJweDsgcG9zaXRpb246YWJzb2x1dGU7IGRpc3BsYXk6YmxvY2s7IHRvcDoxMXB4OyByaWdodDo5cHg7IG92ZXJmbG93OmhpZGRlbjsgd2lkdGg6MTYuMnB4OyBoZWlnaHQ6MTYuMnB4OyB9CiAjX2Zvcm1fMzdfIC5fY2xvc2UtaWNvbjpiZWZvcmUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfQogI19mb3JtXzM3XyAuX2Zvcm0tYm9keSB7IG1hcmdpbi1ib3R0b206MzBweDsgfQogI19mb3JtXzM3XyAuX2Zvcm0taW1hZ2UtbGVmdCB7IHdpZHRoOjE1MHB4OyBmbG9hdDpsZWZ0OyB9CiAjX2Zvcm1fMzdfIC5fZm9ybS1jb250ZW50LXJpZ2h0IHsgbWFyZ2luLWxlZnQ6MTY0cHg7IH0KICNfZm9ybV8zN18gLl9mb3JtLWJyYW5kaW5nIHsgY29sb3I6I2ZmZjsgZm9udC1zaXplOjEwcHg7IGNsZWFyOmJvdGg7IHRleHQtYWxpZ246bGVmdDsgbWFyZ2luLXRvcDozMHB4OyBmb250LXdlaWdodDoxMDA7IH0KICNfZm9ybV8zN18gLl9mb3JtLWJyYW5kaW5nIC5fbG9nbyB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEzMHB4OyBoZWlnaHQ6MTRweDsgbWFyZ2luLXRvcDo2cHg7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCdodHRwczovL2QyMjZhajRhbzF0NjFxLmNsb3VkZnJvbnQubmV0L2hoOXVqcWd2NV9hY2xvZ29fbGkucG5nJyk7IGJhY2tncm91bmQtc2l6ZToxMzBweCBhdXRvOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IH0KICNfZm9ybV8zN18gLmZvcm0tc3Itb25seSB7IHBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDoxcHg7IGhlaWdodDoxcHg7IHBhZGRpbmc6MDsgbWFyZ2luOi0xcHg7IG92ZXJmbG93OmhpZGRlbjsgY2xpcDpyZWN0KDAsIDAsIDAsIDApOyBib3JkZXI6MDsgfQogI19mb3JtXzM3XyAuX2Zvcm0tbGFiZWwsI19mb3JtXzM3XyAuX2Zvcm1fZWxlbWVudCAuX2Zvcm0tbGFiZWwgeyBmb250LXdlaWdodDpib2xkOyBtYXJnaW4tYm90dG9tOjVweDsgZGlzcGxheTpibG9jazsgfQogI19mb3JtXzM3Xy5fZGFyayAuX2Zvcm0tYnJhbmRpbmcgeyBjb2xvcjojMzMzOyB9CiAjX2Zvcm1fMzdfLl9kYXJrIC5fZm9ybS1icmFuZGluZyAuX2xvZ28geyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnaHR0cHM6Ly9kMjI2YWo0YW8xdDYxcS5jbG91ZGZyb250Lm5ldC9qZnRxMmM4c19hY2xvZ29fZGsucG5nJyk7IH0KICNfZm9ybV8zN18gLl9mb3JtX2VsZW1lbnQgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luLWJvdHRvbToxMHB4OyBmb250LXNpemU6MDsgbWF4LXdpZHRoOjEwMCU7IH0KICNfZm9ybV8zN18gLl9mb3JtX2VsZW1lbnQgKiB7IGZvbnQtc2l6ZToxNHB4OyB9CiAjX2Zvcm1fMzdfIC5fZm9ybV9lbGVtZW50Ll9jbGVhciB7IGNsZWFyOmJvdGg7IHdpZHRoOjEwMCU7IGZsb2F0Om5vbmU7IH0KICNfZm9ybV8zN18gLl9mb3JtX2VsZW1lbnQuX2NsZWFyOmFmdGVyIHsgY2xlYXI6bGVmdDsgfQogI19mb3JtXzM3XyAuX2Zvcm1fZWxlbWVudCBpbnB1dFt0eXBlPSJ0ZXh0Il0sI19mb3JtXzM3XyAuX2Zvcm1fZWxlbWVudCBpbnB1dFt0eXBlPSJkYXRlIl0sI19mb3JtXzM3XyAuX2Zvcm1fZWxlbWVudCBzZWxlY3QsI19mb3JtXzM3XyAuX2Zvcm1fZWxlbWVudCB0ZXh0YXJlYTpub3QoLmctcmVjYXB0Y2hhLXJlc3BvbnNlKSB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyBmb250LWZhbWlseTppbmhlcml0OyB9CiAjX2Zvcm1fMzdfIC5fZmllbGQtd3JhcHBlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9CiAjX2Zvcm1fMzdfIC5faW5saW5lLXN0eWxlIHsgZmxvYXQ6bGVmdDsgfQogI19mb3JtXzM3XyAuX2lubGluZS1zdHlsZSBpbnB1dFt0eXBlPSJ0ZXh0Il0geyB3aWR0aDoxNTBweDsgfQogI19mb3JtXzM3XyAuX2lubGluZS1zdHlsZTpub3QoLl9jbGVhcikgKyAuX2lubGluZS1zdHlsZTpub3QoLl9jbGVhcikgeyBtYXJnaW4tbGVmdDoyMHB4OyB9CiAjX2Zvcm1fMzdfIC5fZm9ybV9lbGVtZW50IGltZy5fZm9ybS1pbWFnZSB7IG1heC13aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzdfIC5fZm9ybV9lbGVtZW50IC5fZm9ybS1maWVsZHNldCB7IGJvcmRlcjowOyBwYWRkaW5nOjAuMDFlbSAwIDAgMDsgbWFyZ2luOjA7IG1pbi13aWR0aDowOyB9CiAjX2Zvcm1fMzdfIC5fY2xlYXItZWxlbWVudCB7IGNsZWFyOmxlZnQ7IH0KICNfZm9ybV8zN18gLl9mdWxsX3dpZHRoIHsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzM3XyAuX2Zvcm1fZnVsbF9maWVsZCB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IG1hcmdpbi1ib3R0b206MTBweDsgfQogI19mb3JtXzM3XyBpbnB1dFt0eXBlPSJ0ZXh0Il0uX2hhc19lcnJvciwjX2Zvcm1fMzdfIHRleHRhcmVhLl9oYXNfZXJyb3IgeyBib3JkZXI6I2YzN2M3YiAxcHggc29saWQ7IH0KICNfZm9ybV8zN18gaW5wdXRbdHlwZT0iY2hlY2tib3giXS5faGFzX2Vycm9yIHsgb3V0bGluZTojZjM3YzdiIDFweCBzb2xpZDsgfQogI19mb3JtXzM3XyAuX2Vycm9yIHsgZGlzcGxheTpibG9jazsgcG9zaXRpb246YWJzb2x1dGU7IGZvbnQtc2l6ZToxNHB4OyB6LWluZGV4OjEwMDAwMDAxOyB9CiAjX2Zvcm1fMzdfIC5fZXJyb3IuX2Fib3ZlIHsgcGFkZGluZy1ib3R0b206NHB4OyBib3R0b206MzlweDsgcmlnaHQ6MDsgfQogI19mb3JtXzM3XyAuX2Vycm9yLl9iZWxvdyB7IHBhZGRpbmctdG9wOjRweDsgdG9wOjEwMCU7IHJpZ2h0OjA7IH0KICNfZm9ybV8zN18gLl9lcnJvci5fYWJvdmUgLl9lcnJvci1hcnJvdyB7IGJvdHRvbTowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zN18gLl9lcnJvci5fYmVsb3cgLl9lcnJvci1hcnJvdyB7IHRvcDowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zN18gLl9lcnJvci1pbm5lciB7IHBhZGRpbmc6OHB4IDEycHg7IGJhY2tncm91bmQtY29sb3I6I2YzN2M3YjsgZm9udC1zaXplOjE0cHg7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyB9CiAjX2Zvcm1fMzdfIC5fZXJyb3ItaW5uZXIuX2Zvcm1fZXJyb3IgeyBtYXJnaW4tYm90dG9tOjVweDsgdGV4dC1hbGlnbjpsZWZ0OyB9CiAjX2Zvcm1fMzdfIC5fYnV0dG9uLXdyYXBwZXIgLl9lcnJvci1pbm5lci5fZm9ybV9lcnJvciB7IHBvc2l0aW9uOnN0YXRpYzsgfQogI19mb3JtXzM3XyAuX2Vycm9yLWlubmVyLl9ub19hcnJvdyB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogI19mb3JtXzM3XyAuX2Vycm9yLWFycm93IHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjA7IGhlaWdodDowOyB9CiAjX2Zvcm1fMzdfIC5fZXJyb3ItaHRtbCB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogLnBpa2Etc2luZ2xlIHsgei1pbmRleDoxMDAwMDAwMSAhaW1wb3J0YW50OyB9CiAjX2Zvcm1fMzdfIGlucHV0W3R5cGU9InRleHQiXS5kYXRldGltZV9kYXRlIHsgd2lkdGg6NjklOyBkaXNwbGF5OmlubGluZTsgfQogI19mb3JtXzM3XyBzZWxlY3QuZGF0ZXRpbWVfdGltZSB7IHdpZHRoOjI5JTsgZGlzcGxheTppbmxpbmU7IGhlaWdodDozMnB4OyB9CiAjX2Zvcm1fMzdfIGlucHV0W3R5cGU9ImRhdGUiXS5kYXRldGltZV9kYXRlIHsgd2lkdGg6NjklOyBkaXNwbGF5OmlubGluZS1mbGV4OyB9CiAjX2Zvcm1fMzdfIGlucHV0W3R5cGU9InRpbWUiXS5kYXRldGltZV90aW1lIHsgd2lkdGg6MjklOyBkaXNwbGF5OmlubGluZS1mbGV4OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTpub25lOyB9CiAjX2Zvcm1fMzdfIHsgbWFyZ2luOjA7IHdpZHRoOjEwMCU7IG1pbi13aWR0aDoxMDAlOyBtYXgtd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMzdfICogeyAtd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZm9udC1zaXplOjFlbTsgfQogI19mb3JtXzM3XyAuX2Zvcm0tY29udGVudCB7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzdfIC5fZm9ybS1pbm5lciB7IGRpc3BsYXk6YmxvY2s7IG1pbi13aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzdfIC5fZm9ybS10aXRsZSwjX2Zvcm1fMzdfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tcmlnaHQ6MDsgbWFyZ2luLWxlZnQ6MDsgfQogI19mb3JtXzM3XyAuX2Zvcm0tdGl0bGUgeyBmb250LXNpemU6MS4yZW07IH0KICNfZm9ybV8zN18gLl9mb3JtX2VsZW1lbnQgeyBtYXJnaW46MCAwIDIwcHg7IHBhZGRpbmc6MDsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzM3XyAuX2Zvcm0tZWxlbWVudCwjX2Zvcm1fMzdfIC5faW5saW5lLXN0eWxlLCNfZm9ybV8zN18gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zN18gbGFiZWwsI19mb3JtXzM3XyBwLCNfZm9ybV8zN18gdGV4dGFyZWE6bm90KC5nLXJlY2FwdGNoYS1yZXNwb25zZSkgeyBmbG9hdDpub25lOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzdfIC5fcm93Ll9jaGVja2JveC1yYWRpbyBsYWJlbCB7IGRpc3BsYXk6aW5saW5lOyB9CiAjX2Zvcm1fMzdfIC5fcm93LCNfZm9ybV8zN18gcCwjX2Zvcm1fMzdfIGxhYmVsIHsgbWFyZ2luLWJvdHRvbTowLjdlbTsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzM3XyAuX3JvdyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLCNfZm9ybV8zN18gLl9yb3cgaW5wdXRbdHlwZT0icmFkaW8iXSB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOm1pZGRsZSAhaW1wb3J0YW50OyB9CiAjX2Zvcm1fMzdfIC5fcm93IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gKyBzcGFuIGxhYmVsIHsgZGlzcGxheTppbmxpbmU7IH0KICNfZm9ybV8zN18gLl9yb3cgc3BhbiBsYWJlbCB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHdpZHRoOmluaXRpYWwgIWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zN18gLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zN18gaW5wdXRbdHlwZT0idGV4dCJdIHsgcGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctcmlnaHQ6MTBweDsgZm9udC1zaXplOjE2cHg7IGxpbmUtaGVpZ2h0OjEuM2VtOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgfQogI19mb3JtXzM3XyBpbnB1dFt0eXBlPSJyYWRpbyJdLCNfZm9ybV8zN18gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDoxLjNlbTsgaGVpZ2h0OjEuM2VtOyBmb250LXNpemU6MWVtOyBtYXJnaW46MCAwLjNlbSAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lOyB9CiAjX2Zvcm1fMzdfIGJ1dHRvblt0eXBlPSJzdWJtaXQiXSB7IHBhZGRpbmc6MjBweDsgZm9udC1zaXplOjEuNWVtOyB9CiAjX2Zvcm1fMzdfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luOjIwcHggMCAwICFpbXBvcnRhbnQ7IH0KIH0KICNfZm9ybV8zN18geyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MjVweCBhdXRvIDA7IHBhZGRpbmc6MjBweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7ICp6b29tOjE7IGJhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6MHB4IHNvbGlkICNiMGIwYjAgIWltcG9ydGFudDsgbWF4LXdpZHRoOjUwMHB4OyAtbW96LWJvcmRlci1yYWRpdXM6MHB4ICFpbXBvcnRhbnQ7IC13ZWJraXQtYm9yZGVyLXJhZGl1czowcHggIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czowcHggIWltcG9ydGFudDsgY29sb3I6IzAwMCAhaW1wb3J0YW50OyB9CiAjX2Zvcm1fMzdfLl9pbmxpbmUtZm9ybSwjX2Zvcm1fMzdfLl9pbmxpbmUtZm9ybSAuX2Zvcm0tY29udGVudCwjX2Zvcm1fMzdfLl9pbmxpbmUtZm9ybSBpbnB1dCwjX2Zvcm1fMzdfLl9pbmxpbmUtZm9ybSAuX3N1Ym1pdCB7IGZvbnQtZmFtaWx5OiJJQk0gUGxleCBTYW5zIiwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyB9CiAjX2Zvcm1fMzdfIC5fZm9ybS10aXRsZSB7IGZvbnQtc2l6ZToyMnB4OyBsaW5lLWhlaWdodDoyMnB4OyBmb250LXdlaWdodDo2MDA7IG1hcmdpbi1ib3R0b206MDsgfQogI19mb3JtXzM3XzpiZWZvcmUsI19mb3JtXzM3XzphZnRlciB7IGNvbnRlbnQ6IiAiOyBkaXNwbGF5OnRhYmxlOyB9CiAjX2Zvcm1fMzdfOmFmdGVyIHsgY2xlYXI6Ym90aDsgfQogI19mb3JtXzM3Xy5faW5saW5lLXN0eWxlIHsgd2lkdGg6YXV0bzsgZGlzcGxheTppbmxpbmUtYmxvY2s7IH0KICNfZm9ybV8zN18uX2lubGluZS1zdHlsZSBpbnB1dFt0eXBlPSJ0ZXh0Il0sI19mb3JtXzM3Xy5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9ImRhdGUiXSB7IHBhZGRpbmc6MTBweCAxMnB4OyB9CiAjX2Zvcm1fMzdfLl9pbmxpbmUtc3R5bGUgYnV0dG9uLl9pbmxpbmUtc3R5bGUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgdG9wOjI3cHg7IH0KICNfZm9ybV8zN18uX2lubGluZS1zdHlsZSBwIHsgbWFyZ2luOjA7IH0KICNfZm9ybV8zN18uX2lubGluZS1zdHlsZSAuX2J1dHRvbi13cmFwcGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbjoyN3B4IDEyLjVweCAwIDIwcHg7IH0KICNfZm9ybV8zN18gLl9mb3JtLXRoYW5rLXlvdSB7IHBvc2l0aW9uOnJlbGF0aXZlOyBsZWZ0OjA7IHJpZ2h0OjA7IHRleHQtYWxpZ246Y2VudGVyOyBmb250LXNpemU6MThweDsgfQogQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDozMjBweCkgYW5kIChtYXgtd2lkdGg6NjY3cHgpIHsgI19mb3JtXzM3Xy5faW5saW5lLWZvcm0uX2lubGluZS1zdHlsZSAuX2lubGluZS1zdHlsZS5fYnV0dG9uLXdyYXBwZXIgeyBtYXJnaW4tdG9wOjIwcHggIWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6MCAhaW1wb3J0YW50OyB9CiB9CiAjX2Zvcm1fMzdfIC5pdGkuaXRpLS1hbGxvdy1kcm9wZG93bi5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSB7IHdpZHRoOjEwMCU7IH0KICNfZm9ybV8zN18gLml0aSBpbnB1dCB7IHdpZHRoOjEwMCU7IGhlaWdodDozMnB4OyBib3JkZXI6Izk3OTc5NyAxcHggc29saWQ7IGJvcmRlci1yYWRpdXM6NHB4OyB9CiAjX2Zvcm1fMzdfIC5pdGktLXNlcGFyYXRlLWRpYWwtY29kZSAuaXRpX19zZWxlY3RlZC1mbGFnIHsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBib3JkZXItcmFkaXVzOjRweDsgfQogI19mb3JtXzM3XyAuaXRpLS1zZXBhcmF0ZS1kaWFsLWNvZGUgLml0aV9fc2VsZWN0ZWQtZmxhZzpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLCAwLCAwLCAwLjA1KTsgfQogI19mb3JtXzM3XyAuaXRpX19jb3VudHJ5LWxpc3QgeyBib3JkZXItcmFkaXVzOjRweDsgbWFyZ2luLXRvcDo0cHg7IG1pbi13aWR0aDo0NjBweDsgfQogI19mb3JtXzM3XyAuaXRpX19jb3VudHJ5LWxpc3QtLWRyb3B1cCB7IG1hcmdpbi1ib3R0b206NHB4OyB9CiAjX2Zvcm1fMzdfIC5waG9uZS1lcnJvci1oaWRkZW4geyBkaXNwbGF5Om5vbmU7IH0KICNfZm9ybV8zN18gLnBob25lLWVycm9yIHsgY29sb3I6I2U0MGU0OTsgfQogI19mb3JtXzM3XyAucGhvbmUtaW5wdXQtZXJyb3IgeyBib3JkZXI6MXB4IHNvbGlkICNlNDBlNDkgIWltcG9ydGFudDsgfQo8L3N0eWxlPgo8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUxhdG8mZmFtaWx5PU1vbnRzZXJyYXQmZmFtaWx5PVJvYm90byZmYW1pbHk9SUJNK1BsZXgrU2Fuczp3Z2h0QDQwMDs2MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Imh0dHBzOi8vdW5wa2cuY29tL2ludGwtdGVsLWlucHV0QDE3LjAuMTgvYnVpbGQvY3NzL2ludGxUZWxJbnB1dC5taW4uY3NzIi8+CiAgICA8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iaHR0cHM6Ly90aGV3aG9sZXlvdS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwIiBpZD0iX2Zvcm1fMzdfIiBjbGFzcz0iX2Zvcm0gX2Zvcm1fMzcgX2lubGluZS1mb3JtICBfZGFyayIgbm92YWxpZGF0ZT4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idSIgdmFsdWU9IjM3IiAvPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmIiB2YWx1ZT0iMzciIC8+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InMiIC8+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImMiIHZhbHVlPSIwIiAvPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtIiB2YWx1ZT0iMCIgLz4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3ViIiAvPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ2IiB2YWx1ZT0iMiIgLz4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ib3IiIHZhbHVlPSJmMTk2YTIyNTkyZjRiZDY0ZDNmOTVjZmRiMGYxZGU5ZiIgLz4KICAgICAgPGRpdiBjbGFzcz0iX2Zvcm0tY29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDIwMTgzNjMzIF9mdWxsX3dpZHRoIF9jbGVhciIgPgogICAgICAgICAgPGltZyBjbGFzcz0iX2Zvcm0taW1hZ2UiIHNyYz0iLy9jb250ZW50LmFwcC11czEuY29tL3k5NVJ2LzIwMjIvMTEvMjYvNzBhZDM1ZGYtOTI1NS00YjU0LWJkOGMtNjMxMThjM2ZjMDQ3LnBuZyIgc3R5bGU9IiIgLz4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDY5MTI3NzMzIF9mdWxsX3dpZHRoIF9jbGVhciIgPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJfZm9ybS10aXRsZSI+CiAgICAgICAgICAgICAgRG93bmxvYWQgdGhlIFdlbGxuZXNzIFdoZWVsCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF94MTgzNjQyNjcgX2Z1bGxfd2lkdGggIiA+CiAgICAgICAgICAgIDxsYWJlbCBmb3I9ImZpcnN0bmFtZSIgY2xhc3M9Il9mb3JtLWxhYmVsIj4KICAgICAgICAgICAgICBGaXJzdCBOYW1lCiAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImZpcnN0bmFtZSIgbmFtZT0iZmlyc3RuYW1lIiBwbGFjZWhvbGRlcj0iVHlwZSB5b3VyIGZpcnN0IG5hbWUiIC8+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF94NjAyMjMzMjcgX2Z1bGxfd2lkdGggIiA+CiAgICAgICAgICAgIDxsYWJlbCBmb3I9ImVtYWlsIiBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgICAgICAgIEVtYWlsKgogICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJfZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJlbWFpbCIgbmFtZT0iZW1haWwiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgZW1haWwiIHJlcXVpcmVkLz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9Il9idXR0b24td3JhcHBlciBfZnVsbF93aWR0aCI+CiAgICAgICAgICAgIDxidXR0b24gaWQ9Il9mb3JtXzM3X3N1Ym1pdCIgY2xhc3M9Il9zdWJtaXQiIHR5cGU9InN1Ym1pdCI+CiAgICAgICAgICAgICAgU3VibWl0CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJfY2xlYXItZWxlbWVudCI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJfZm9ybS10aGFuay15b3UiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJfZm9ybS1icmFuZGluZyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJfbWFya2V0aW5nLWJ5Ij4KICAgICAgICAgICAgTWFya2V0aW5nIGJ5CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmFjdGl2ZWNhbXBhaWduLmNvbS8/dXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249YWNmb3JtcyIgY2xhc3M9Il9sb2dvIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZvcm0tc3Itb25seSI+CiAgICAgICAgICAgICAgQWN0aXZlQ2FtcGFpZ24KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC9hPgogICAgICAgIDwvZGl2PgogICAgICA8L2Zvcm0+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp3aW5kb3cuY2ZpZWxkcyA9IFtdOwp3aW5kb3cuX3Nob3dfdGhhbmtfeW91ID0gZnVuY3Rpb24oaWQsIG1lc3NhZ2UsIHRyYWNrY21wX3VybCwgZW1haWwpIHsKICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8nICsgaWQgKyAnXycpLCB0aGFua195b3UgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS10aGFuay15b3UnKTsKICBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS1jb250ZW50Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICB0aGFua195b3UuaW5uZXJIVE1MID0gbWVzc2FnZTsKICB0aGFua195b3Uuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgY29uc3QgdmdvQWxpYXMgPSB0eXBlb2YgdmlzaXRvckdsb2JhbE9iamVjdEFsaWFzID09PSAndW5kZWZpbmVkJyA/ICd2Z28nIDogdmlzaXRvckdsb2JhbE9iamVjdEFsaWFzOwogIHZhciB2aXNpdG9yT2JqZWN0ID0gd2luZG93W3Znb0FsaWFzXTsKICBpZiAoZW1haWwgJiYgdHlwZW9mIHZpc2l0b3JPYmplY3QgIT09ICd1bmRlZmluZWQnKSB7CiAgICB2aXNpdG9yT2JqZWN0KCdzZXRFbWFpbCcsIGVtYWlsKTsKICAgIHZpc2l0b3JPYmplY3QoJ3VwZGF0ZScpOwogIH0gZWxzZSBpZiAodHlwZW9mKHRyYWNrY21wX3VybCkgIT0gJ3VuZGVmaW5lZCcgJiYgdHJhY2tjbXBfdXJsKSB7CiAgICAvLyBTaXRlIHRyYWNraW5nIFVSTCB0byB1c2UgYWZ0ZXIgaW5saW5lIGZvcm0gc3VibWlzc2lvbi4KICAgIF9sb2FkX3NjcmlwdCh0cmFja2NtcF91cmwpOwogIH0KICBpZiAodHlwZW9mIHdpbmRvdy5fZm9ybV9jYWxsYmFjayAhPT0gJ3VuZGVmaW5lZCcpIHdpbmRvdy5fZm9ybV9jYWxsYmFjayhpZCk7Cn07CndpbmRvdy5fc2hvd19lcnJvciA9IGZ1bmN0aW9uKGlkLCBtZXNzYWdlLCBodG1sKSB7CiAgdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fJyArIGlkICsgJ18nKSwgZXJyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIGJ1dHRvbiA9IGZvcm0ucXVlcnlTZWxlY3RvcignYnV0dG9uJyksIG9sZF9lcnJvciA9IGZvcm0ucXVlcnlTZWxlY3RvcignLl9mb3JtX2Vycm9yJyk7CiAgaWYgKG9sZF9lcnJvcikgb2xkX2Vycm9yLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob2xkX2Vycm9yKTsKICBlcnIuaW5uZXJIVE1MID0gbWVzc2FnZTsKICBlcnIuY2xhc3NOYW1lID0gJ19lcnJvci1pbm5lciBfZm9ybV9lcnJvciBfbm9fYXJyb3cnOwogIHZhciB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgd3JhcHBlci5jbGFzc05hbWUgPSAnX2Zvcm0taW5uZXInOwogIHdyYXBwZXIuYXBwZW5kQ2hpbGQoZXJyKTsKICBidXR0b24ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUod3JhcHBlciwgYnV0dG9uKTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbaWRePSJfZm9ybSJdW2lkJD0iX3N1Ym1pdCJdJykuZGlzYWJsZWQgPSBmYWxzZTsKICBpZiAoaHRtbCkgewogICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgZGl2LmNsYXNzTmFtZSA9ICdfZXJyb3ItaHRtbCc7CiAgICBkaXYuaW5uZXJIVE1MID0gaHRtbDsKICAgIGVyci5hcHBlbmRDaGlsZChkaXYpOwogIH0KfTsKd2luZG93Ll9sb2FkX3NjcmlwdCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spIHsKICB2YXIgaGVhZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKSwgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksIHIgPSBmYWxzZTsKICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogIHNjcmlwdC5jaGFyc2V0ID0gJ3V0Zi04JzsKICBzY3JpcHQuc3JjID0gdXJsOwogIGlmIChjYWxsYmFjaykgewogICAgc2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKCFyICYmICghdGhpcy5yZWFkeVN0YXRlIHx8IHRoaXMucmVhZHlTdGF0ZSA9PSAnY29tcGxldGUnKSkgewogICAgICAgIHIgPSB0cnVlOwogICAgICAgIGNhbGxiYWNrKCk7CiAgICAgIH0KICAgIH07CiAgfQogIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKfTsKKGZ1bmN0aW9uKCkgewogIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnNlYXJjaCgiZXhjbHVkZWZvcm0iKSAhPT0gLTEpIHJldHVybiBmYWxzZTsKICB2YXIgZ2V0Q29va2llID0gZnVuY3Rpb24obmFtZSkgewogICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDsgKScgKyBuYW1lICsgJz0oW147XSspJykpOwogICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMl0gOiBudWxsOwogIH0KICB2YXIgc2V0Q29va2llID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpOwogICAgdmFyIHRpbWUgPSBub3cuZ2V0VGltZSgpOwogICAgdmFyIGV4cGlyZVRpbWUgPSB0aW1lICsgMTAwMCAqIDYwICogNjAgKiAyNCAqIDM2NTsKICAgIG5vdy5zZXRUaW1lKGV4cGlyZVRpbWUpOwogICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArICc9JyArIHZhbHVlICsgJzsgZXhwaXJlcz0nICsgbm93ICsgJztwYXRoPS87IFNlY3VyZTsgU2FtZVNpdGU9TGF4Oyc7Ly8gY2Fubm90IGJlIEh0dHBPbmx5CiAgfQogICAgICB2YXIgYWRkRXZlbnQgPSBmdW5jdGlvbihlbGVtZW50LCBldmVudCwgZnVuYykgewogICAgaWYgKGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGZ1bmMpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIG9sZEZ1bmMgPSBlbGVtZW50WydvbicgKyBldmVudF07CiAgICAgIGVsZW1lbnRbJ29uJyArIGV2ZW50XSA9IGZ1bmN0aW9uKCkgewogICAgICAgIG9sZEZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIH07CiAgICB9CiAgfQogIHZhciBfcmVtb3ZlZCA9IGZhbHNlOwogIHZhciBmb3JtX3RvX3N1Ym1pdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8zN18nKTsKICB2YXIgYWxsSW5wdXRzID0gZm9ybV90b19zdWJtaXQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEnKSwgdG9vbHRpcHMgPSBbXSwgc3VibWl0dGVkID0gZmFsc2U7CgogIHZhciBnZXRVcmxQYXJhbSA9IGZ1bmN0aW9uKG5hbWUpIHsKICAgIHZhciBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpOwogICAgcmV0dXJuIHBhcmFtcy5nZXQobmFtZSkgfHwgZmFsc2U7CiAgfTsKCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxJbnB1dHMubGVuZ3RoOyBpKyspIHsKICAgIHZhciByZWdleFN0ciA9ICJmaWVsZFxcWyhcXGQrKVxcXSI7CiAgICB2YXIgcmVzdWx0cyA9IG5ldyBSZWdFeHAocmVnZXhTdHIpLmV4ZWMoYWxsSW5wdXRzW2ldLm5hbWUpOwogICAgaWYgKHJlc3VsdHMgIT0gdW5kZWZpbmVkKSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSB3aW5kb3cuY2ZpZWxkc1tyZXN1bHRzWzFdXTsKICAgIH0gZWxzZSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSBhbGxJbnB1dHNbaV0ubmFtZTsKICAgIH0KICAgIHZhciBmaWVsZFZhbCA9IGdldFVybFBhcmFtKGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUpOwoKICAgIGlmIChmaWVsZFZhbCkgewogICAgICBpZiAoYWxsSW5wdXRzW2ldLmRhdGFzZXQuYXV0b2ZpbGwgPT09ICJmYWxzZSIpIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICBpZiAoYWxsSW5wdXRzW2ldLnR5cGUgPT0gInJhZGlvIiB8fCBhbGxJbnB1dHNbaV0udHlwZSA9PSAiY2hlY2tib3giKSB7CiAgICAgICAgaWYgKGFsbElucHV0c1tpXS52YWx1ZSA9PSBmaWVsZFZhbCkgewogICAgICAgICAgYWxsSW5wdXRzW2ldLmNoZWNrZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBhbGxJbnB1dHNbaV0udmFsdWUgPSBmaWVsZFZhbDsKICAgICAgfQogICAgfQogIH0KCiAgdmFyIHJlbW92ZV90b29sdGlwcyA9IGZ1bmN0aW9uKCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICB0b29sdGlwc1tpXS50aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b29sdGlwc1tpXS50aXApOwogICAgfQogICAgdG9vbHRpcHMgPSBbXTsKICB9OwogIHZhciByZW1vdmVfdG9vbHRpcCA9IGZ1bmN0aW9uKGVsZW0pIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbHRpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHRvb2x0aXBzW2ldLmVsZW0gPT09IGVsZW0pIHsKICAgICAgICB0b29sdGlwc1tpXS50aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b29sdGlwc1tpXS50aXApOwogICAgICAgIHRvb2x0aXBzLnNwbGljZShpLCAxKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgIH0KICB9OwogIHZhciBjcmVhdGVfdG9vbHRpcCA9IGZ1bmN0aW9uKGVsZW0sIHRleHQpIHsKICAgIHZhciB0b29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIGFycm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIGlubmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIG5ld190b29sdGlwID0ge307CiAgICBpZiAoZWxlbS50eXBlICE9ICdyYWRpbycgJiYgZWxlbS50eXBlICE9ICdjaGVja2JveCcpIHsKICAgICAgdG9vbHRpcC5jbGFzc05hbWUgPSAnX2Vycm9yJzsKICAgICAgYXJyb3cuY2xhc3NOYW1lID0gJ19lcnJvci1hcnJvdyc7CiAgICAgIGlubmVyLmNsYXNzTmFtZSA9ICdfZXJyb3ItaW5uZXInOwogICAgICBpbm5lci5pbm5lckhUTUwgPSB0ZXh0OwogICAgICB0b29sdGlwLmFwcGVuZENoaWxkKGFycm93KTsKICAgICAgdG9vbHRpcC5hcHBlbmRDaGlsZChpbm5lcik7CiAgICAgIGVsZW0ucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0b29sdGlwKTsKICAgIH0gZWxzZSB7CiAgICAgIHRvb2x0aXAuY2xhc3NOYW1lID0gJ19lcnJvci1pbm5lciBfbm9fYXJyb3cnOwogICAgICB0b29sdGlwLmlubmVySFRNTCA9IHRleHQ7CiAgICAgIGVsZW0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodG9vbHRpcCwgZWxlbSk7CiAgICAgIG5ld190b29sdGlwLm5vX2Fycm93ID0gdHJ1ZTsKICAgIH0KICAgIG5ld190b29sdGlwLnRpcCA9IHRvb2x0aXA7CiAgICBuZXdfdG9vbHRpcC5lbGVtID0gZWxlbTsKICAgIHRvb2x0aXBzLnB1c2gobmV3X3Rvb2x0aXApOwogICAgcmV0dXJuIG5ld190b29sdGlwOwogIH07CiAgdmFyIHJlc2l6ZV90b29sdGlwID0gZnVuY3Rpb24odG9vbHRpcCkgewogICAgdmFyIHJlY3QgPSB0b29sdGlwLmVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgZG9jID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBzY3JvbGxQb3NpdGlvbiA9IHJlY3QudG9wIC0gKCh3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jLnNjcm9sbFRvcCkgIC0gKGRvYy5jbGllbnRUb3AgfHwgMCkpOwogICAgaWYgKHNjcm9sbFBvc2l0aW9uIDwgNDApIHsKICAgICAgdG9vbHRpcC50aXAuY2xhc3NOYW1lID0gdG9vbHRpcC50aXAuY2xhc3NOYW1lLnJlcGxhY2UoLyA/KF9hYm92ZXxfYmVsb3cpID8vZywgJycpICsgJyBfYmVsb3cnOwogICAgfSBlbHNlIHsKICAgICAgdG9vbHRpcC50aXAuY2xhc3NOYW1lID0gdG9vbHRpcC50aXAuY2xhc3NOYW1lLnJlcGxhY2UoLyA/KF9hYm92ZXxfYmVsb3cpID8vZywgJycpICsgJyBfYWJvdmUnOwogICAgfQogIH07CiAgdmFyIHJlc2l6ZV90b29sdGlwcyA9IGZ1bmN0aW9uKCkgewogICAgaWYgKF9yZW1vdmVkKSByZXR1cm47CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvb2x0aXBzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmICghdG9vbHRpcHNbaV0ubm9fYXJyb3cpIHJlc2l6ZV90b29sdGlwKHRvb2x0aXBzW2ldKTsKICAgIH0KICB9OwogIHZhciB2YWxpZGF0ZV9maWVsZCA9IGZ1bmN0aW9uKGVsZW0sIHJlbW92ZSkgewogICAgdmFyIHRvb2x0aXAgPSBudWxsLCB2YWx1ZSA9IGVsZW0udmFsdWUsIG5vX2Vycm9yID0gdHJ1ZTsKICAgIHJlbW92ZSA/IHJlbW92ZV90b29sdGlwKGVsZW0pIDogZmFsc2U7CiAgICBpZiAoZWxlbS50eXBlICE9ICdjaGVja2JveCcpIGVsZW0uY2xhc3NOYW1lID0gZWxlbS5jbGFzc05hbWUucmVwbGFjZSgvID9faGFzX2Vycm9yID8vZywgJycpOwogICAgaWYgKGVsZW0uZ2V0QXR0cmlidXRlKCdyZXF1aXJlZCcpICE9PSBudWxsKSB7CiAgICAgIGlmIChlbGVtLnR5cGUgPT0gJ3JhZGlvJyB8fCAoZWxlbS50eXBlID09ICdjaGVja2JveCcgJiYgL2FueS8udGVzdChlbGVtLmNsYXNzTmFtZSkpKSB7CiAgICAgICAgdmFyIGVsZW1zID0gZm9ybV90b19zdWJtaXQuZWxlbWVudHNbZWxlbS5uYW1lXTsKICAgICAgICBpZiAoIShlbGVtcyBpbnN0YW5jZW9mIE5vZGVMaXN0IHx8IGVsZW1zIGluc3RhbmNlb2YgSFRNTENvbGxlY3Rpb24pIHx8IGVsZW1zLmxlbmd0aCA8PSAxKSB7CiAgICAgICAgICBub19lcnJvciA9IGVsZW0uY2hlY2tlZDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbXNbaV0uY2hlY2tlZCkgbm9fZXJyb3IgPSB0cnVlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIW5vX2Vycm9yKSB7CiAgICAgICAgICB0b29sdGlwID0gY3JlYXRlX3Rvb2x0aXAoZWxlbSwgIlBsZWFzZSBzZWxlY3QgYW4gb3B0aW9uLiIpOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChlbGVtLnR5cGUgPT0nY2hlY2tib3gnKSB7CiAgICAgICAgdmFyIGVsZW1zID0gZm9ybV90b19zdWJtaXQuZWxlbWVudHNbZWxlbS5uYW1lXSwgZm91bmQgPSBmYWxzZSwgZXJyID0gW107CiAgICAgICAgbm9fZXJyb3IgPSB0cnVlOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGlmIChlbGVtc1tpXS5nZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJykgPT09IG51bGwpIGNvbnRpbnVlOwogICAgICAgICAgaWYgKCFmb3VuZCAmJiBlbGVtc1tpXSAhPT0gZWxlbSkgcmV0dXJuIHRydWU7CiAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICBlbGVtc1tpXS5jbGFzc05hbWUgPSBlbGVtc1tpXS5jbGFzc05hbWUucmVwbGFjZSgvID9faGFzX2Vycm9yID8vZywgJycpOwogICAgICAgICAgaWYgKCFlbGVtc1tpXS5jaGVja2VkKSB7CiAgICAgICAgICAgIG5vX2Vycm9yID0gZmFsc2U7CiAgICAgICAgICAgIGVsZW1zW2ldLmNsYXNzTmFtZSA9IGVsZW1zW2ldLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgICAgIGVyci5wdXNoKCJDaGVja2luZyAlcyBpcyByZXF1aXJlZCIucmVwbGFjZSgiJXMiLCBlbGVtc1tpXS52YWx1ZSkpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIW5vX2Vycm9yKSB7CiAgICAgICAgICB0b29sdGlwID0gY3JlYXRlX3Rvb2x0aXAoZWxlbSwgZXJyLmpvaW4oJzxici8+JykpOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChlbGVtLnRhZ05hbWUgPT0gJ1NFTEVDVCcpIHsKICAgICAgICB2YXIgc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgIGlmIChlbGVtLm11bHRpcGxlKSB7CiAgICAgICAgICBzZWxlY3RlZCA9IGZhbHNlOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtLm9wdGlvbnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGVsZW0ub3B0aW9uc1tpXS5zZWxlY3RlZCkgewogICAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW0ub3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkICYmICghZWxlbS5vcHRpb25zW2ldLnZhbHVlIHx8IChlbGVtLm9wdGlvbnNbaV0udmFsdWUubWF0Y2goL1xuL2cpKSkpIHsKICAgICAgICAgICAgICBzZWxlY3RlZCA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghc2VsZWN0ZWQpIHsKICAgICAgICAgIGVsZW0uY2xhc3NOYW1lID0gZWxlbS5jbGFzc05hbWUgKyAnIF9oYXNfZXJyb3InOwogICAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiUGxlYXNlIHNlbGVjdCBhbiBvcHRpb24uIik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSB7CiAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICB0b29sdGlwID0gY3JlYXRlX3Rvb2x0aXAoZWxlbSwgIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIik7CiAgICAgIH0KICAgIH0KICAgIGlmIChub19lcnJvciAmJiAoZWxlbS5pZCA9PSAnZmllbGRbXScgfHwgZWxlbS5pZCA9PSAnY2FbMTFdW3ZdJykpIHsKICAgICAgaWYgKGVsZW0uY2xhc3NOYW1lLmluY2x1ZGVzKCdwaG9uZS1pbnB1dC1lcnJvcicpKSB7CiAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKG5vX2Vycm9yICYmIGVsZW0ubmFtZSA9PSAnZW1haWwnKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15bXCtfYS16MC05LScmPV0rKFwuW1wrX2EtejAtOS0nXSspKkBbYS16MC05LV0rKFwuW2EtejAtOS1dKykqKFwuW2Etel17Mix9KSQvaSkpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLiIpOwogICAgICB9CiAgICB9CiAgICBpZiAobm9fZXJyb3IgJiYgL2RhdGVfZmllbGQvLnRlc3QoZWxlbS5jbGFzc05hbWUpKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15cZFxkXGRcZC1cZFxkLVxkXGQkLykpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBkYXRlLiIpOwogICAgICB9CiAgICB9CiAgICB0b29sdGlwID8gcmVzaXplX3Rvb2x0aXAodG9vbHRpcCkgOiBmYWxzZTsKICAgIHJldHVybiBub19lcnJvcjsKICB9OwogIHZhciBuZWVkc192YWxpZGF0ZSA9IGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgaWYoZWwuZ2V0QXR0cmlidXRlKCdyZXF1aXJlZCcpICE9PSBudWxsKXsKICAgICAgICAgICAgcmV0dXJuIHRydWUKICAgICAgICB9CiAgICAgICAgaWYoZWwubmFtZSA9PT0gJ2VtYWlsJyAmJiBlbC52YWx1ZSAhPT0gIiIpewogICAgICAgICAgICByZXR1cm4gdHJ1ZQogICAgICAgIH0KCiAgICBpZigoZWwuaWQgPT0gJ2ZpZWxkW10nIHx8IGVsLmlkID09ICdjYVsxMV1bdl0nKSAmJiBlbC5jbGFzc05hbWUuaW5jbHVkZXMoJ3Bob25lLWlucHV0LWVycm9yJykpewogICAgICAgICAgICByZXR1cm4gdHJ1ZQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlCiAgfTsKICB2YXIgdmFsaWRhdGVfZm9ybSA9IGZ1bmN0aW9uKGUpIHsKICAgIHZhciBlcnIgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yKCcuX2Zvcm1fZXJyb3InKSwgbm9fZXJyb3IgPSB0cnVlOwogICAgaWYgKCFzdWJtaXR0ZWQpIHsKICAgICAgc3VibWl0dGVkID0gdHJ1ZTsKICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFsbElucHV0cy5sZW5ndGg7IGkgPCBsZW47IGkrKykgewogICAgICAgIHZhciBpbnB1dCA9IGFsbElucHV0c1tpXTsKICAgICAgICBpZiAobmVlZHNfdmFsaWRhdGUoaW5wdXQpKSB7CiAgICAgICAgICBpZiAoaW5wdXQudHlwZSA9PSAndGVsJykgewogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2JsdXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS50cmltKCk7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGlucHV0LnR5cGUgPT0gJ3RleHQnIHx8IGlucHV0LnR5cGUgPT0gJ251bWJlcicgfHwgaW5wdXQudHlwZSA9PSAndGltZScpIHsKICAgICAgICAgICAgYWRkRXZlbnQoaW5wdXQsICdibHVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUudHJpbSgpOwogICAgICAgICAgICAgIHZhbGlkYXRlX2ZpZWxkKHRoaXMsIHRydWUpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgYWRkRXZlbnQoaW5wdXQsICdpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHZhbGlkYXRlX2ZpZWxkKHRoaXMsIHRydWUpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQudHlwZSA9PSAncmFkaW8nIHx8IGlucHV0LnR5cGUgPT0gJ2NoZWNrYm94JykgewogICAgICAgICAgICAoZnVuY3Rpb24oZWwpIHsKICAgICAgICAgICAgICB2YXIgcmFkaW9zID0gZm9ybV90b19zdWJtaXQuZWxlbWVudHNbZWwubmFtZV07CiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYWRpb3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGFkZEV2ZW50KHJhZGlvc1tpXSwgJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX2ZpZWxkKGVsLCB0cnVlKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkoaW5wdXQpOwogICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC50YWdOYW1lID09ICdTRUxFQ1QnKSB7CiAgICAgICAgICAgIGFkZEV2ZW50KGlucHV0LCAnY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC50eXBlID09ICd0ZXh0YXJlYScpewogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2lucHV0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmVtb3ZlX3Rvb2x0aXBzKCk7CiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYWxsSW5wdXRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgIHZhciBlbGVtID0gYWxsSW5wdXRzW2ldOwogICAgICBpZiAobmVlZHNfdmFsaWRhdGUoZWxlbSkpIHsKICAgICAgICBpZiAoZWxlbS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICJzZWxlY3QiKSB7CiAgICAgICAgICBlbGVtLnZhbHVlID0gZWxlbS52YWx1ZS50cmltKCk7CiAgICAgICAgfQogICAgICAgIHZhbGlkYXRlX2ZpZWxkKGVsZW0pID8gdHJ1ZSA6IG5vX2Vycm9yID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIGlmICghbm9fZXJyb3IgJiYgZSkgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICB9CiAgICByZXNpemVfdG9vbHRpcHMoKTsKICAgIHJldHVybiBub19lcnJvcjsKICB9OwogIGFkZEV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScsIHJlc2l6ZV90b29sdGlwcyk7CiAgYWRkRXZlbnQod2luZG93LCAnc2Nyb2xsJywgcmVzaXplX3Rvb2x0aXBzKTsKCiAgdmFyIGhpZGVQaG9uZUlucHV0RXJyb3IgPSBmdW5jdGlvbihpbnB1dElkKSB7CiAgICB2YXIgZXJyb3JNZXNzYWdlID0gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlcnJvci1tc2ctIiArIGlucHV0SWQpOwogICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5wdXRJZCk7CiAgICBlcnJvck1lc3NhZ2UuY2xhc3NMaXN0LnJlbW92ZSgicGhvbmUtZXJyb3IiKTsKICAgIGVycm9yTWVzc2FnZS5jbGFzc0xpc3QuYWRkKCJwaG9uZS1lcnJvci1oaWRkZW4iKTsKICAgIGlucHV0LmNsYXNzTGlzdC5yZW1vdmUoInBob25lLWlucHV0LWVycm9yIik7CiAgfTsKCiAgdmFyIGluaXRpYWxpemVQaG9uZUlucHV0ID0gZnVuY3Rpb24oaW5wdXQsIGRlZmF1bHRDb3VudHJ5KSB7CiAgICByZXR1cm4gd2luZG93LmludGxUZWxJbnB1dChpbnB1dCwgewogICAgICB1dGlsc1NjcmlwdDogImh0dHBzOi8vdW5wa2cuY29tL2ludGwtdGVsLWlucHV0QDE3LjAuMTgvYnVpbGQvanMvdXRpbHMuanMiLAogICAgICBhdXRvSGlkZURpYWxDb2RlOiBmYWxzZSwKICAgICAgc2VwYXJhdGVEaWFsQ29kZTogdHJ1ZSwKICAgICAgaW5pdGlhbENvdW50cnk6IGRlZmF1bHRDb3VudHJ5LAogICAgICBwcmVmZXJyZWRDb3VudHJpZXM6IFtdCiAgICB9KTsKICB9CgogIHZhciBzZXRQaG9uZUlucHV0RXZlbnRMaXN0ZW5lcnMgPSBmdW5jdGlvbihpbnB1dElkLCBpbnB1dCwgaXRpKSB7CiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgZnVuY3Rpb24oKSB7CiAgICAgIHZhciBlcnJvck1lc3NhZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXJyb3ItbXNnLSIgKyBpbnB1dElkKTsKICAgICAgaWYgKGlucHV0LnZhbHVlLnRyaW0oKSkgewogICAgICAgIGlmIChpdGkuaXNWYWxpZE51bWJlcigpKSB7CiAgICAgICAgICBpdGkuc2V0TnVtYmVyKGl0aS5nZXROdW1iZXIoKSk7CiAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlLmNsYXNzTGlzdC5jb250YWlucygicGhvbmUtZXJyb3IiKSl7CiAgICAgICAgICAgIGhpZGVQaG9uZUlucHV0RXJyb3IoaW5wdXRJZCk7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHNob3dQaG9uZUlucHV0RXJyb3IoaW5wdXRJZCkKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGVycm9yTWVzc2FnZS5jbGFzc0xpc3QuY29udGFpbnMoInBob25lLWVycm9yIikpewogICAgICAgICAgaGlkZVBob25lSW5wdXRFcnJvcihpbnB1dElkKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0pOwoKICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoImNvdW50cnljaGFuZ2UiLCBmdW5jdGlvbigpIHsKICAgICAgaXRpLnNldE51bWJlcignJyk7CiAgICB9KTsKCiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgZnVuY3Rpb24oZSkgewogICAgICAgIHZhciBjaGFyQ29kZSA9IChlLndoaWNoKSA/IGUud2hpY2ggOiBlLmtleUNvZGU7CiAgICAgICAgaWYgKGNoYXJDb2RlID4gMzEgJiYgKGNoYXJDb2RlIDwgNDggfHwgY2hhckNvZGUgPiA1NykgJiYgY2hhckNvZGUgIT09IDgpIHsKICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICB9CiAgICAgfSk7CiAgfTsKCiAgdmFyIHNob3dQaG9uZUlucHV0RXJyb3IgPSBmdW5jdGlvbihpbnB1dElkKSB7CiAgICB2YXIgZXJyb3JNZXNzYWdlID0gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlcnJvci1tc2ctIiArIGlucHV0SWQpOwogICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5wdXRJZCk7CiAgICBlcnJvck1lc3NhZ2UuY2xhc3NMaXN0LmFkZCgicGhvbmUtZXJyb3IiKTsKICAgIGVycm9yTWVzc2FnZS5jbGFzc0xpc3QucmVtb3ZlKCJwaG9uZS1lcnJvci1oaWRkZW4iKTsKICAgIGlucHV0LmNsYXNzTGlzdC5hZGQoInBob25lLWlucHV0LWVycm9yIik7CiAgfTsKCgogICAgdmFyIF9mb3JtX3NlcmlhbGl6ZSA9IGZ1bmN0aW9uKGZvcm0pe2lmKCFmb3JtfHxmb3JtLm5vZGVOYW1lIT09IkZPUk0iKXtyZXR1cm4gfXZhciBpLGoscT1bXTtmb3IoaT0wO2k8Zm9ybS5lbGVtZW50cy5sZW5ndGg7aSsrKXtpZihmb3JtLmVsZW1lbnRzW2ldLm5hbWU9PT0iIil7Y29udGludWV9c3dpdGNoKGZvcm0uZWxlbWVudHNbaV0ubm9kZU5hbWUpe2Nhc2UiSU5QVVQiOnN3aXRjaChmb3JtLmVsZW1lbnRzW2ldLnR5cGUpe2Nhc2UidGVsIjpxLnB1c2goZm9ybS5lbGVtZW50c1tpXS5uYW1lKyI9IitlbmNvZGVVUklDb21wb25lbnQoZm9ybS5lbGVtZW50c1tpXS5wcmV2aW91c1NpYmxpbmcucXVlcnlTZWxlY3RvcignZGl2Lml0aV9fc2VsZWN0ZWQtZGlhbC1jb2RlJykuaW5uZXJUZXh0KStlbmNvZGVVUklDb21wb25lbnQoIiAiKStlbmNvZGVVUklDb21wb25lbnQoZm9ybS5lbGVtZW50c1tpXS52YWx1ZSkpO2JyZWFrO2Nhc2UidGV4dCI6Y2FzZSJudW1iZXIiOmNhc2UiZGF0ZSI6Y2FzZSJ0aW1lIjpjYXNlImhpZGRlbiI6Y2FzZSJwYXNzd29yZCI6Y2FzZSJidXR0b24iOmNhc2UicmVzZXQiOmNhc2Uic3VibWl0IjpxLnB1c2goZm9ybS5lbGVtZW50c1tpXS5uYW1lKyI9IitlbmNvZGVVUklDb21wb25lbnQoZm9ybS5lbGVtZW50c1tpXS52YWx1ZSkpO2JyZWFrO2Nhc2UiY2hlY2tib3giOmNhc2UicmFkaW8iOmlmKGZvcm0uZWxlbWVudHNbaV0uY2hlY2tlZCl7cS5wdXNoKGZvcm0uZWxlbWVudHNbaV0ubmFtZSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGZvcm0uZWxlbWVudHNbaV0udmFsdWUpKX1icmVhaztjYXNlImZpbGUiOmJyZWFrfWJyZWFrO2Nhc2UiVEVYVEFSRUEiOnEucHVzaChmb3JtLmVsZW1lbnRzW2ldLm5hbWUrIj0iK2VuY29kZVVSSUNvbXBvbmVudChmb3JtLmVsZW1lbnRzW2ldLnZhbHVlKSk7YnJlYWs7Y2FzZSJTRUxFQ1QiOnN3aXRjaChmb3JtLmVsZW1lbnRzW2ldLnR5cGUpe2Nhc2Uic2VsZWN0LW9uZSI6cS5wdXNoKGZvcm0uZWxlbWVudHNbaV0ubmFtZSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGZvcm0uZWxlbWVudHNbaV0udmFsdWUpKTticmVhaztjYXNlInNlbGVjdC1tdWx0aXBsZSI6Zm9yKGo9MDtqPGZvcm0uZWxlbWVudHNbaV0ub3B0aW9ucy5sZW5ndGg7aisrKXtpZihmb3JtLmVsZW1lbnRzW2ldLm9wdGlvbnNbal0uc2VsZWN0ZWQpe3EucHVzaChmb3JtLmVsZW1lbnRzW2ldLm5hbWUrIj0iK2VuY29kZVVSSUNvbXBvbmVudChmb3JtLmVsZW1lbnRzW2ldLm9wdGlvbnNbal0udmFsdWUpKX19YnJlYWt9YnJlYWs7Y2FzZSJCVVRUT04iOnN3aXRjaChmb3JtLmVsZW1lbnRzW2ldLnR5cGUpe2Nhc2UicmVzZXQiOmNhc2Uic3VibWl0IjpjYXNlImJ1dHRvbiI6cS5wdXNoKGZvcm0uZWxlbWVudHNbaV0ubmFtZSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGZvcm0uZWxlbWVudHNbaV0udmFsdWUpKTticmVha31icmVha319cmV0dXJuIHEuam9pbigiJiIpfTsKICB2YXIgZm9ybV9zdWJtaXQgPSBmdW5jdGlvbihlKSB7CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICBpZiAodmFsaWRhdGVfZm9ybSgpKSB7CiAgICAgIC8vIHVzZSB0aGlzIHRyaWNrIHRvIGdldCB0aGUgc3VibWl0IGJ1dHRvbiAmIGRpc2FibGUgaXQgdXNpbmcgcGxhaW4gamF2YXNjcmlwdAogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjX2Zvcm1fMzdfc3VibWl0JykuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICB2YXIgc2VyaWFsaXplZCA9IF9mb3JtX3NlcmlhbGl6ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fMzdfJykpLnJlcGxhY2UoLyUwQS9nLCAnXFxuJyk7CiAgICAgIHZhciBlcnIgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yKCcuX2Zvcm1fZXJyb3InKTsKICAgICAgZXJyID8gZXJyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZXJyKSA6IGZhbHNlOwogICAgICBfbG9hZF9zY3JpcHQoJ2h0dHBzOi8vdGhld2hvbGV5b3UuYWN0aXZlaG9zdGVkLmNvbS9wcm9jLnBocD8nICsgc2VyaWFsaXplZCArICcmanNvbnA9dHJ1ZScpOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH07CiAgYWRkRXZlbnQoZm9ybV90b19zdWJtaXQsICdzdWJtaXQnLCBmb3JtX3N1Ym1pdCk7Cn0pKCk7Cgo8L3NjcmlwdD4=[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container hundred_percent=”yes” hundred_percent_height=”no” hundred_percent_height_scroll=”no” hundred_percent_height_center_content=”yes” equal_height_columns=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” status=”published” border_style=”solid” gradient_start_position=”0″ gradient_end_position=”58″ gradient_type=”linear” radial_direction=”center center” linear_angle=”0″ background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.2″ background_blend_mode=”none” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” filter_hue=”0″ filter_saturation=”100″ filter_brightness=”100″ filter_contrast=”100″ filter_invert=”0″ filter_sepia=”0″ filter_opacity=”100″ filter_blur=”0″ filter_hue_hover=”0″ filter_saturation_hover=”100″ filter_brightness_hover=”100″ filter_contrast_hover=”100″ filter_invert_hover=”0″ filter_sepia_hover=”0″ filter_opacity_hover=”100″ filter_blur_hover=”0″ padding_bottom=”8%” admin_toggled=”yes” admin_label=”Benefits” gradient_start_color=”var(–awb-color3)” gradient_end_color=”hsla(var(–awb-color1-h),var(–awb-color1-s),var(–awb-color1-l),calc(var(–awb-color1-a) – 20%))” padding_right=”10%” padding_left=”10%” type=”flex”][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ center_content=”no” target=”_self” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” hover_type=”none” border_style=”solid” border_position=”all” box_shadow=”no” box_shadow_blur=”0″ box_shadow_spread=”0″ background_type=”single” gradient_start_position=”0″ gradient_end_position=”100″ gradient_type=”linear” radial_direction=”center center” linear_angle=”180″ background_position=”left top” background_repeat=”no-repeat” background_blend_mode=”none” animation_direction=”left” animation_speed=”0.3″ filter_type=”regular” filter_hue=”0″ filter_saturation=”100″ filter_brightness=”100″ filter_contrast=”100″ filter_invert=”0″ filter_sepia=”0″ filter_opacity=”100″ filter_blur=”0″ filter_hue_hover=”0″ filter_saturation_hover=”100″ filter_brightness_hover=”100″ filter_contrast_hover=”100″ filter_invert_hover=”0″ filter_sepia_hover=”0″ filter_opacity_hover=”100″ filter_blur_hover=”0″ first=”true” last=”true” border_sizes_top=”0px” border_sizes_bottom=”0px” border_sizes_left=”0px” border_sizes_right=”0px” min_height=”” link=””][fusion_text animation_direction=”left” animation_speed=”0.3″ hide_on_mobile=”small-visibility,medium-visibility,large-visibility” sticky_display=”normal,sticky” text_color=”#000000″ text_transform=”uppercase” fusion_font_variant_text_font=”500″ fusion_font_family_text_font=”Montserrat”]

Quick assessment of your whole health

[/fusion_text][fusion_checklist hide_on_mobile=”small-visibility,medium-visibility,large-visibility” textcolor=”#000000″ size=”24″ iconcolor=”#000000″][fusion_li_item]Download your wheel[/fusion_li_item][fusion_li_item icon=”fa-check fas”]Rate your health in each area[/fusion_li_item][fusion_li_item icon=”fa-check fas”]Connect the dots[/fusion_li_item][fusion_li_item icon=”fa-circle-notch fas”]

A healthy life is circular

[/fusion_li_item][fusion_li_item icon=”fa-exclamation-triangle fas”]

Flat tire wheels show where you can improve

[/fusion_li_item][/fusion_checklist][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]