(function(){ try {const reservationMenu = {};reservationMenu.style=`data:text/css;base64,OnJvb3R7LS1peC1hY2NlbnQtYmx1ZTojMjY0MzdhOy0taXgtYWNjZW50LXJlZDojOWExZTFlOy0taXgtYWNjZW50LWNvbG9yOnZhcigtLWl4LWFjY2VudC1ibHVlKX0jaXgtaXhyYS1jb25maXJtLWUtc3RhdHVze3dpZHRoOjQwMHB4O2JvcmRlcjpub25lO21hcmdpbi10b3A6MTBweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWl4LWFjY2VudC1jb2xvcik7Y29sb3I6dmFyKC0taXgtYWNjZW50LWNvbG9yKSAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxLjE0M2VtO2hlaWdodDoxMjBweDtmbG9hdDpsZWZ0O2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW4tbGVmdDpjYWxjKDUwJSAtIDIwMHB4KTttYXJnaW4tdG9wOjIwcHh9I2l4LWl4cmEtY29uZmlybS1lLWluZm97d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tdG9wOjM0cHg7Zm9udC1zaXplOjIxcHg7Zm9udC1mYW1pbHk6cm9ib3RvU2xhYjtmb250LXdlaWdodDo1MDA7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfSNpeC1peHJhLWNvbmZpcm0tZS1tc2d7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tdG9wOjEwcHh9I2l4LWl4cmEtY2FuY2VsLXN0YXR1c3t3aWR0aDo0MDBweDtib3JkZXI6bm9uZTttYXJnaW4tdG9wOjEwcHg7Ym9yZGVyOjJweCBzb2xpZCB2YXIoLS1peC1hY2NlbnQtY29sb3IpO2NvbG9yOnZhcigtLWl4LWFjY2VudC1jb2xvcikgIWltcG9ydGFudDtmb250LXNpemU6MS4xNDNlbTtoZWlnaHQ6MTQwcHg7ZmxvYXQ6bGVmdDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bWFyZ2luLWxlZnQ6Y2FsYyg1MCUgLSAyMDBweCk7bWFyZ2luLXRvcDoyMHB4fSNpeC1peHJhLWNhbmNlbC1pbmZve3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLXRvcDoyNXB4O2ZvbnQtc2l6ZToyMXB4O2ZvbnQtZmFtaWx5OnJvYm90b1NsYWI7Zm9udC13ZWlnaHQ6NTAwO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0jaXgtaXhyYS1jYW5jZWwtbXNne3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLXRvcDoxMHB4fSNpeC1peHJhLWNhbmNlbC1idG57Ym9yZGVyLXJhZGl1czo5OTk5cHg7b3ZlcmZsb3c6aGlkZGVuO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2NvbG9yOnZhcigtLWl4LWFjY2VudC1jb2xvcik7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2U4ZThlODt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Zm9udC1zaXplOi44NTdlbTtwYWRkaW5nOjEwcHggMTVweDt0ZXh0LWRlY29yYXRpb246bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBlYXNlIDBzO3RyYW5zaXRpb246YWxsIC4zcyBlYXNlIDBzO3dpZHRoOjE3MHB4O21hcmdpbi1sZWZ0OmNhbGMoNTAlIC0gODVweCk7bWFyZ2luLXRvcDoxNXB4O2N1cnNvcjpwb2ludGVyfSNpeC1peHJhLWNhbmNlbC1idG46aG92ZXJ7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWl4LWFjY2VudC1jb2xvcik7Ym9yZGVyLWNvbG9yOnZhcigtLWl4LWFjY2VudC1jb2xvcil9QG1lZGlhKG1heC13aWR0aDo2MDBweCl7I2l4LWl4cmEtY29uZmlybS1lLXN0YXR1c3t3aWR0aDoxMDAlO21hcmdpbi1sZWZ0OjB9I2l4LWl4cmEtY2FuY2VsLXN0YXR1c3t3aWR0aDoxMDAlO21hcmdpbi1sZWZ0OjB9fUBtZWRpYShtaW4td2lkdGg6NjQxcHgpeyNpeC1ib29raW5nLWV4dGVybmFsLW1lbnV7d2lkdGg6NjAwcHg7Ym94LXNpemluZzpib3JkZXItYm94fSNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUgLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG57Ym9yZGVyOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZjRmNGY0O3dpZHRoOjEwMCU7ZmxvYXQ6bGVmdDttYXJnaW4tdG9wOjEwcHg7Zm9udC1zaXplOjFlbTtwYWRkaW5nOjA7Ym94LXNpemluZzpib3JkZXItYm94O2N1cnNvcjpwb2ludGVyfSNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUgLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG4gLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG4taWNvbntwb3NpdGlvbjphYnNvbHV0ZX0jaXgtYm9va2luZy1leHRlcm5hbC1tZW51IC5peC1ib29raW5nLWV4dGVybmFsLW1lbnUtYnRuOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzIzNTI3Y30jaXgtYm9va2luZy1leHRlcm5hbC1tZW51IC5peC1ib29raW5nLWV4dGVybmFsLW1lbnUtYnRuOmhvdmVyIC5peC1ib29raW5nLWV4dGVybmFsLW1lbnUtYnRuLXRleHR7Y29sb3I6I2ZmZjt0ZXh0LXNoYWRvdzowIDFweCAwIHZhcigtLWl4LWFjY2VudC1jb2xvcil9I2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudSAuaXgtYm9va2luZy1leHRlcm5hbC1tZW51LWJ0biAuaXgtYm9va2luZy1leHRlcm5hbC1tZW51LWJ0bi10ZXh0e2NvbG9yOnZhcigtLWl4LWFjY2VudC1jb2xvcik7Zm9udC1zaXplOjEuMTQzZW07Zm9udC1mYW1pbHk6cm9ib3RvU2xhYjtmb250LXdlaWdodDo1MDA7cGFkZGluZy10b3A6MjBweDtwYWRkaW5nLWJvdHRvbToyMHB4O2NvbG9yOnZhcigtLWl4LWFjY2VudC1jb2xvcik7dGV4dC1zaGFkb3c6MCAxcHggMCAjZmZmO3RyYW5zaXRpb246Y29sb3IgLjNzIGVhc2UgMHM7bGluZS1oZWlnaHQ6MWVtfSNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUgLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG4gLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG4tb2ZmbGluZXtkaXNwbGF5Om5vbmU7Zm9udC1mYW1pbHk6IlJvYm90byIsc2Fucy1zZXJpZjtmb250LXNpemU6Ljg4ZW19I2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudSAuaXgtYm9va2luZy1leHRlcm5hbC1tZW51LWJ0bltkaXNhYmxlZD0iIl17YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI0NCwyNDQsMjQ0LC41KTtjdXJzb3I6bm90LWFsbG93ZWR9I2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudSAuaXgtYm9va2luZy1leHRlcm5hbC1tZW51LWJ0bltkaXNhYmxlZD0iIl0gLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG4tdGV4dHtwYWRkaW5nLWJvdHRvbTo1cHg7b3BhY2l0eTouNTt0ZXh0LXNoYWRvdzpub25lfSNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUgLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG5bZGlzYWJsZWQ9IiJdOmhvdmVye2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsMjQ0LDI0NCwuNSl9I2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudSAuaXgtYm9va2luZy1leHRlcm5hbC1tZW51LWJ0bltkaXNhYmxlZD0iIl06aG92ZXIgLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG4tdGV4dHtjb2xvcjp2YXIoLS1peC1hY2NlbnQtY29sb3IpO3RleHQtc2hhZG93Om5vbmV9I2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudSAuaXgtYm9va2luZy1leHRlcm5hbC1tZW51LWJ0bltkaXNhYmxlZD0iIl0gLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG4tb2ZmbGluZXtkaXNwbGF5OmJsb2NrO3BhZGRpbmctYm90dG9tOjIwcHg7Y29sb3I6IzU3NTc1NztvcGFjaXR5Oi42fSNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUgI2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1lcnJvcnt3aWR0aDo2MDBweDtiYWNrZ3JvdW5kLWNvbG9yOiNjODY5Njk7Y29sb3I6I2ZmZjtwYWRkaW5nOjEwcHg7cGFkZGluZy1sZWZ0OjIwcHg7Ym94LXNpemluZzpib3JkZXItYm94O29wYWNpdHk6MDstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAuNHMgZWFzZS1pbi1vdXQ7LW1vei10cmFuc2l0aW9uOm9wYWNpdHkgLjRzIGVhc2UtaW4tb3V0Oy1tcy10cmFuc2l0aW9uOm9wYWNpdHkgLjRzIGVhc2UtaW4tb3V0Oy1vLXRyYW5zaXRpb246b3BhY2l0eSAuNHMgZWFzZS1pbi1vdXQ7dHJhbnNpdGlvbjpvcGFjaXR5IC40cyBlYXNlLWluLW91dDtmb250LWZhbWlseTpSdWJpazt2aXNpYmlsaXR5OmhpZGRlbn0jaXgtYm9va2luZy1leHRlcm5hbC1tZW51IC5peC1ib29raW5nLW1lbnUtdmlzaWJsZS1lcnJvcnt2aXNpYmlsaXR5OnZpc2libGUgIWltcG9ydGFudDtvcGFjaXR5OjEgIWltcG9ydGFudH0jaXgtYm9va2luZy1leHRlcm5hbC1tZW51ICNpeC1tZW51LXZpZGVve21hcmdpbjozMHB4IGF1dG87d2lkdGg6NjAwcHg7bWFyZ2luLWxlZnQ6MH0jaXgtYm9va2luZy1leHRlcm5hbC1tZW51IC5peC1tZW51LW9mZmxpbmUtbGluZXtmb250LXNpemU6Ljk4ZW07dG9wOjkwcHg7bGVmdDo1MCU7bWFyZ2luLXRvcDo1cHg7ZGlzcGxheTpub25lfSNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUgI2l4LWV4dC1tZW51LWJ0bi1jb250YWluZXIgLml4LW1lbnUtYnRue3dpZHRoOjEwMCU7YmFja2dyb3VuZDojZWZlZmVmICFpbXBvcnRhbnQ7Ym9yZGVyOm5vbmU7bWFyZ2luLXRvcDoxMHB4O2JvcmRlcjoycHggc29saWQgdmFyKC0taXgtYWNjZW50LWNvbG9yKTtjb2xvcjp2YXIoLS1peC1hY2NlbnQtY29sb3IpICFpbXBvcnRhbnQ7Zm9udC1zaXplOjEuMTQzZW07aGVpZ2h0OjEyMHB4O2Zsb2F0OmxlZnQ7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94fSNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUgI2l4LWV4dC1tZW51LWJ0bi1jb250YWluZXIgLml4LW1lbnUtYnRuW2Rpc2FibGVkXXtjdXJzb3I6bm90LWFsbG93ZWQ7b3BhY2l0eTouNH0jaXgtYm9va2luZy1leHRlcm5hbC1tZW51ICNpeC1leHQtbWVudS1idG4tY29udGFpbmVyIC5peC1tZW51LWJ0bltkaXNhYmxlZF0gLml4LW1lbnUtb2ZmbGluZS1saW5le2Rpc3BsYXk6YmxvY2t9I2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudSBoM3twYWRkaW5nLXRvcDoyMHB4O2Zsb2F0OmxlZnQ7d2lkdGg6MTAwJX19QG1lZGlhKG1heC13aWR0aDo2NDBweCl7I2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudXt3aWR0aDoxMDAlO2JveC1zaXppbmc6Ym9yZGVyLWJveH0jaXgtYm9va2luZy1leHRlcm5hbC1tZW51IC5peC1ib29raW5nLWV4dGVybmFsLW1lbnUtYnRue2JvcmRlcjpub25lO2JhY2tncm91bmQtY29sb3I6I2Y0ZjRmNDt3aWR0aDoxMDAlO2Zsb2F0OmxlZnQ7bWFyZ2luLXRvcDoxMHB4O2ZvbnQtc2l6ZToxZW07cGFkZGluZzowO2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcn0jaXgtYm9va2luZy1leHRlcm5hbC1tZW51IC5peC1ib29raW5nLWV4dGVybmFsLW1lbnUtYnRuIC5peC1ib29raW5nLWV4dGVybmFsLW1lbnUtYnRuLWljb257cG9zaXRpb246YWJzb2x1dGV9I2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudSAuaXgtYm9va2luZy1leHRlcm5hbC1tZW51LWJ0bjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMyMzUyN2N9I2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudSAuaXgtYm9va2luZy1leHRlcm5hbC1tZW51LWJ0bjpob3ZlciAuaXgtYm9va2luZy1leHRlcm5hbC1tZW51LWJ0bi10ZXh0e2NvbG9yOiNmZmY7dGV4dC1zaGFkb3c6MCAxcHggMCB2YXIoLS1peC1hY2NlbnQtY29sb3IpfSNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUgLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG4gLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG4tdGV4dHtjb2xvcjp2YXIoLS1peC1hY2NlbnQtY29sb3IpO2ZvbnQtc2l6ZToxLjE0M2VtO2ZvbnQtZmFtaWx5OnJvYm90b1NsYWI7Zm9udC13ZWlnaHQ6NTAwO3BhZGRpbmctdG9wOjIwcHg7cGFkZGluZy1ib3R0b206MjBweDtjb2xvcjp2YXIoLS1peC1hY2NlbnQtY29sb3IpO3RleHQtc2hhZG93OjAgMXB4IDAgI2ZmZjt0cmFuc2l0aW9uOmNvbG9yIC4zcyBlYXNlIDBzO2xpbmUtaGVpZ2h0OjFlbX0jaXgtYm9va2luZy1leHRlcm5hbC1tZW51IC5peC1ib29raW5nLWV4dGVybmFsLW1lbnUtYnRuIC5peC1ib29raW5nLWV4dGVybmFsLW1lbnUtYnRuLW9mZmxpbmV7ZGlzcGxheTpub25lO2ZvbnQtZmFtaWx5OiJSb2JvdG8iLHNhbnMtc2VyaWY7Zm9udC1zaXplOi44OGVtfSNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUgLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG5bZGlzYWJsZWQ9IiJde2JhY2tncm91bmQtY29sb3I6cmdiYSgyNDQsMjQ0LDI0NCwuNSk7Y3Vyc29yOm5vdC1hbGxvd2VkfSNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUgLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG5bZGlzYWJsZWQ9IiJdIC5peC1ib29raW5nLWV4dGVybmFsLW1lbnUtYnRuLXRleHR7cGFkZGluZy1ib3R0b206NXB4O29wYWNpdHk6LjU7dGV4dC1zaGFkb3c6bm9uZX0jaXgtYm9va2luZy1leHRlcm5hbC1tZW51IC5peC1ib29raW5nLWV4dGVybmFsLW1lbnUtYnRuW2Rpc2FibGVkPSIiXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ0LDI0NCwyNDQsLjUpfSNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUgLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG5bZGlzYWJsZWQ9IiJdOmhvdmVyIC5peC1ib29raW5nLWV4dGVybmFsLW1lbnUtYnRuLXRleHR7Y29sb3I6dmFyKC0taXgtYWNjZW50LWNvbG9yKTt0ZXh0LXNoYWRvdzpub25lfSNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUgLml4LWJvb2tpbmctZXh0ZXJuYWwtbWVudS1idG5bZGlzYWJsZWQ9IiJdIC5peC1ib29raW5nLWV4dGVybmFsLW1lbnUtYnRuLW9mZmxpbmV7ZGlzcGxheTpibG9jaztwYWRkaW5nLWJvdHRvbToyMHB4O2NvbG9yOiM1NzU3NTc7b3BhY2l0eTouNn0jaXgtYm9va2luZy1leHRlcm5hbC1tZW51ICNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUtZXJyb3J7d2lkdGg6NjAwcHg7YmFja2dyb3VuZC1jb2xvcjojYzg2OTY5O2NvbG9yOiNmZmY7cGFkZGluZzoxMHB4O3BhZGRpbmctbGVmdDoyMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjRzIGVhc2UtaW4tb3V0Oy1tb3otdHJhbnNpdGlvbjpvcGFjaXR5IC40cyBlYXNlLWluLW91dDstbXMtdHJhbnNpdGlvbjpvcGFjaXR5IC40cyBlYXNlLWluLW91dDstby10cmFuc2l0aW9uOm9wYWNpdHkgLjRzIGVhc2UtaW4tb3V0O3RyYW5zaXRpb246b3BhY2l0eSAuNHMgZWFzZS1pbi1vdXQ7Zm9udC1mYW1pbHk6UnViaWs7dmlzaWJpbGl0eTpoaWRkZW59I2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudSAuaXgtYm9va2luZy1tZW51LXZpc2libGUtZXJyb3J7dmlzaWJpbGl0eTp2aXNpYmxlICFpbXBvcnRhbnQ7b3BhY2l0eToxICFpbXBvcnRhbnR9I2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudSAjaXgtbWVudS12aWRlb3ttYXJnaW46MzBweCBhdXRvO3dpZHRoOjYwMHB4O21hcmdpbi1sZWZ0OjB9I2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudSAuaXgtbWVudS1vZmZsaW5lLWxpbmV7Zm9udC1zaXplOi45OGVtO3RvcDo5MHB4O2xlZnQ6NTAlO21hcmdpbi10b3A6NXB4O2Rpc3BsYXk6bm9uZX0jaXgtYm9va2luZy1leHRlcm5hbC1tZW51ICNpeC1leHQtbWVudS1idG4tY29udGFpbmVyIC5peC1tZW51LWJ0bnt3aWR0aDoxMDAlO2JhY2tncm91bmQ6I2VmZWZlZiAhaW1wb3J0YW50O2JvcmRlcjpub25lO21hcmdpbi10b3A6MTBweDtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWl4LWFjY2VudC1jb2xvcik7Y29sb3I6dmFyKC0taXgtYWNjZW50LWNvbG9yKSAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxLjE0M2VtO2hlaWdodDoxMjBweDtmbG9hdDpsZWZ0O2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveH0jaXgtYm9va2luZy1leHRlcm5hbC1tZW51ICNpeC1leHQtbWVudS1idG4tY29udGFpbmVyIC5peC1tZW51LWJ0bjpudGgtY2hpbGQoMm4pe21hcmdpbi1sZWZ0OjB9I2l4LWJvb2tpbmctZXh0ZXJuYWwtbWVudSAjaXgtZXh0LW1lbnUtYnRuLWNvbnRhaW5lciAuaXgtbWVudS1idG5bZGlzYWJsZWRde2N1cnNvcjpub3QtYWxsb3dlZDtvcGFjaXR5Oi40fSNpeC1ib29raW5nLWV4dGVybmFsLW1lbnUgI2l4LWV4dC1tZW51LWJ0bi1jb250YWluZXIgLml4LW1lbnUtYnRuW2Rpc2FibGVkXSAuaXgtbWVudS1vZmZsaW5lLWxpbmV7ZGlzcGxheTpibG9ja30jaXgtYm9va2luZy1leHRlcm5hbC1tZW51IGgze3BhZGRpbmctdG9wOjIwcHg7ZmxvYXQ6bGVmdDt3aWR0aDoxMDAlfX1Aa2V5ZnJhbWVzIHNwaW57MCAlIHt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfTEwMCAlIHt0cmFuc2Zvcm06cm90YXRlKDM2MGRlZyl9QG1lZGlhKG1heC13aWR0aDo2MDBweCl7Lml4LXJtZW1jdC1zdWItdGl0bGV7d2lkdGg6MTAwJTtmb250LXdlaWdodDo1MDA7ZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS1peC1hY2NlbnQtY29sb3IpO2ZvbnQtZmFtaWx5OnJvYm90b1NsYWI7Zm9udC1zaXplOjEuMTQzZW07Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbi10b3A6MjBweDttYXJnaW4tYm90dG9tOjEwcHh9I2l4LXJtZW1jdC1vbGQtZGF0ZXt3aWR0aDoxMDAlO2JvcmRlcjoxcHggc29saWQgdmFyKC0taXgtYWNjZW50LWNvbG9yKTtmb250LWZhbWlseTpSb2JvdG87cGFkZGluZzo4cHggMjBweCA4cHggMjBweDstd2Via2l0LXRyYW5zaXRpb246YmFja2dyb3VuZCAuM3MgZWFzZSAwcyxib3JkZXIgLjNzIGVhc2UgMHM7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4zcyBlYXNlIDBzLGJvcmRlciAuM3MgZWFzZSAwcztib3gtc2l6aW5nOmJvcmRlci1ib3g7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLWl4LWFjY2VudC1jb2xvcik7bWFyZ2luLXRvcDoyMHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveH0jaXgtcm1lbWN0LW5ldy1kYXRle3dpZHRoOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1peC1hY2NlbnQtY29sb3IpO2ZvbnQtZmFtaWx5OlJvYm90bztwYWRkaW5nOjhweCAyMHB4IDhweCAyMHB4Oy13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4zcyBlYXNlIDBzLGJvcmRlciAuM3MgZWFzZSAwczt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjNzIGVhc2UgMHMsYm9yZGVyIC4zcyBlYXNlIDBzO2JveC1zaXppbmc6Ym9yZGVyLWJveDtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0taXgtYWNjZW50LWNvbG9yKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxvYXQ6bGVmdH0jaXgtcm1lbWN0LWJ0bi1uZXctZGF0ZXtiYWNrZ3JvdW5kOnZhcigtLWl4LWFjY2VudC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1peC1hY2NlbnQtY29sb3IpO2ZvbnQtZmFtaWx5OlJvYm90bztwYWRkaW5nOjhweCAyMHB4IDhweCAyMHB4O2NvbG9yOiNmZmY7LXdlYmtpdC10cmFuc2l0aW9uOmJhY2tncm91bmQgLjNzIGVhc2UgMHMsYm9yZGVyIC4zcyBlYXNlIDBzO3RyYW5zaXRpb246YmFja2dyb3VuZCAuM3MgZWFzZSAwcyxib3JkZXIgLjNzIGVhc2UgMHM7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjE2MHB4O3RleHQtYWxpZ246Y2VudGVyO21hcmdpbi10b3A6MjBweDtmbG9hdDpsZWZ0fSNpeC1ybWVtY3QtYnRuLWJhY2t7ZGlzcGxheTpmbGV4O2hlaWdodDozNnB4O3dpZHRoOjM2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1peC1hY2NlbnQtY29sb3IpO2NvbG9yOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1peC1hY2NlbnQtY29sb3IpO2JvcmRlci1yYWRpdXM6MDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTZweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Zsb2F0OmxlZnR9I2l4LXJtZW1jdC1idG4tbmV4dHtkaXNwbGF5OmZsZXg7aGVpZ2h0OjM2cHg7d2lkdGg6MzZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWl4LWFjY2VudC1jb2xvcik7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWl4LWFjY2VudC1jb2xvcik7Ym9yZGVyLXJhZGl1czowO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNnB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZmxvYXQ6bGVmdH0uY2FsZW5kYXItYnRuLWRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZCAhaW1wb3J0YW50O29wYWNpdHk6LjR9I2l4LXJtZW1jdC1jYWxlbmRhci1ib3h7d2lkdGg6MTAwJTtmbG9hdDpsZWZ0fSNpeC1ybWVtY3QtY2FsZW5kYXItcHJlLWxvYWRlci1pbWd7aGVpZ2h0OjM2cHg7bWFyZ2luLXRvcDoxMHB4O21hcmdpbi1ib3R0b206MjBweDthbmltYXRpb24tbmFtZTpzcGluO2FuaW1hdGlvbi1kdXJhdGlvbjozMDAwbXM7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcn0jaXgtcm1lbWN0LXByZS1sb2FkZXJ7d2lkdGg6Y2FsYygxMDAlIC0gNzRweCk7dGV4dC1hbGlnbjpjZW50ZXI7ZmxvYXQ6bGVmdH0jaXgtcm1lbWN0LWNvbHVtbnN7ZmxvYXQ6bGVmdDttYXJnaW4tYm90dG9tOjIwcHg7d2lkdGg6Y2FsYygxMDAlIC0gNzRweCl9Lml4LXJtZW1jdC1jb2x1bW57d2lkdGg6MzMlO2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpjZW50ZXJ9I3ZpZXctbmV3LWRhdGV7d2lkdGg6MTAwJX0uaXgtcm1lbWN0LWRheS1ib3h7d2lkdGg6MTAwJTtmb250LXdlaWdodDo1MDA7ZGlzcGxheTpibG9jaztjb2xvcjp2YXIoLS1peC1hY2NlbnQtY29sb3IpO2ZvbnQtZmFtaWx5OnJvYm90b1NsYWI7Zm9udC1zaXplOjEuMTQzZW07Ym94LXNpemluZzpib3JkZXItYm94fS5peC1ybWVtY3QtZGF0ZS1ib3h7Y29sb3I6IzU3NTc1NzttYXJnaW4tYm90dG9tOjEwcHh9Lml4LXJtZW1jdC1zbG90c3tkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcn0uaXgtcm1lbWN0LXNsb3R7d2lkdGg6Y2FsYygxMDAlIC0gMjBweCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1peC1hY2NlbnQtY29sb3IpO2ZvbnQtZmFtaWx5OlJvYm90bztwYWRkaW5nOjhweCAyMHB4IDhweCAyMHB4Oy13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4zcyBlYXNlIDBzLGJvcmRlciAuM3MgZWFzZSAwczt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjNzIGVhc2UgMHMsYm9yZGVyIC4zcyBlYXNlIDBzO2N1cnNvcjpwb2ludGVyO2JveC1zaXppbmc6Ym9yZGVyLWJveDtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0taXgtYWNjZW50LWNvbG9yKTttYXJnaW4tdG9wOjEwcHg7Ym94LXNpemluZzpib3JkZXItYm94O2ZvbnQtc2l6ZToxLjFlbX0uZGF0ZXRpbWUtYm94LWFjdGl2ZXtjb2xvcjojZmZmO2JhY2tncm91bmQ6dmFyKC0taXgtYWNjZW50LWNvbG9yKX0jaXgtcm1lbWN0LW1haW57d2lkdGg6MTAwJTttYXJnaW4tbGVmdDowfS5peC1peHJhLXFye2hlaWdodDozMjBweDttYXJnaW4tbGVmdDpjYWxjKDUwJSAtIDE2MHB4KTttYXJnaW4tdG9wOjQwcHh9fUBtZWRpYShtaW4td2lkdGg6NjAxcHgpey5peC1ybWVtY3Qtc3ViLXRpdGxle3dpZHRoOjEwMCU7Zm9udC13ZWlnaHQ6NTAwO2Rpc3BsYXk6YmxvY2s7Y29sb3I6dmFyKC0taXgtYWNjZW50LWNvbG9yKTtmb250LWZhbWlseTpyb2JvdG9TbGFiO2ZvbnQtc2l6ZToxLjE0M2VtO2JveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW4tdG9wOjIwcHg7bWFyZ2luLWJvdHRvbToxMHB4fSNpeC1ybWVtY3Qtb2xkLWRhdGV7d2lkdGg6NjAwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1peC1hY2NlbnQtY29sb3IpO2ZvbnQtZmFtaWx5OlJvYm90bztwYWRkaW5nOjhweCAyMHB4IDhweCAyMHB4Oy13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4zcyBlYXNlIDBzLGJvcmRlciAuM3MgZWFzZSAwczt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjNzIGVhc2UgMHMsYm9yZGVyIC4zcyBlYXNlIDBzO2JveC1zaXppbmc6Ym9yZGVyLWJveDtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0taXgtYWNjZW50LWNvbG9yKTttYXJnaW4tdG9wOjIwcHg7Ym94LXNpemluZzpib3JkZXItYm94fSNpeC1ybWVtY3QtbmV3LWRhdGV7d2lkdGg6NjAwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1peC1hY2NlbnQtY29sb3IpO2ZvbnQtZmFtaWx5OlJvYm90bztwYWRkaW5nOjhweCAyMHB4IDhweCAyMHB4Oy13ZWJraXQtdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4zcyBlYXNlIDBzLGJvcmRlciAuM3MgZWFzZSAwczt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjNzIGVhc2UgMHMsYm9yZGVyIC4zcyBlYXNlIDBzO2JveC1zaXppbmc6Ym9yZGVyLWJveDtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0taXgtYWNjZW50LWNvbG9yKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZmxvYXQ6bGVmdH0jaXgtcm1lbWN0LWJ0bi1uZXctZGF0ZXtiYWNrZ3JvdW5kOnZhcigtLWl4LWFjY2VudC1jb2xvcik7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1peC1hY2NlbnQtY29sb3IpO2ZvbnQtZmFtaWx5OlJvYm90bztwYWRkaW5nOjhweCAyMHB4IDhweCAyMHB4O2NvbG9yOiNmZmY7LXdlYmtpdC10cmFuc2l0aW9uOmJhY2tncm91bmQgLjNzIGVhc2UgMHMsYm9yZGVyIC4zcyBlYXNlIDBzO3RyYW5zaXRpb246YmFja2dyb3VuZCAuM3MgZWFzZSAwcyxib3JkZXIgLjNzIGVhc2UgMHM7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjE2MHB4O3RleHQtYWxpZ246Y2VudGVyO21hcmdpbi10b3A6MjBweDtmbG9hdDpsZWZ0fSNpeC1ybWVtY3QtYnRuLWJhY2t7ZGlzcGxheTpmbGV4O2hlaWdodDozNnB4O3dpZHRoOjM2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1peC1hY2NlbnQtY29sb3IpO2NvbG9yOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1peC1hY2NlbnQtY29sb3IpO2JvcmRlci1yYWRpdXM6MDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTZweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7dGV4dC1hbGlnbjpjZW50ZXI7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2p1c3RpZnktY29udGVudDpjZW50ZXI7YWxpZ24tY29udGVudDpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO2Zsb2F0OmxlZnR9I2l4LXJtZW1jdC1idG4tbmV4dHtkaXNwbGF5OmZsZXg7aGVpZ2h0OjM2cHg7d2lkdGg6MzZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWl4LWFjY2VudC1jb2xvcik7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWl4LWFjY2VudC1jb2xvcik7Ym9yZGVyLXJhZGl1czowO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZToxNnB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDtjdXJzb3I6cG9pbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpjb2x1bW47anVzdGlmeS1jb250ZW50OmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7ZmxvYXQ6bGVmdH0uY2FsZW5kYXItYnRuLWRpc2FibGVke2N1cnNvcjpub3QtYWxsb3dlZCAhaW1wb3J0YW50O29wYWNpdHk6LjR9I2l4LXJtZW1jdC1jYWxlbmRhci1ib3h7d2lkdGg6NjAwcHg7ZmxvYXQ6bGVmdH0jaXgtcm1lbWN0LXByZS1sb2FkZXJ7d2lkdGg6Y2FsYygxMDAlIC0gNzRweCk7ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmNlbnRlcn0jaXgtcm1lbWN0LWNhbGVuZGFyLXByZS1sb2FkZXItaW1ne2hlaWdodDozNnB4O21hcmdpbi10b3A6MTBweDttYXJnaW4tYm90dG9tOjIwcHg7YW5pbWF0aW9uLW5hbWU6c3BpbjthbmltYXRpb24tZHVyYXRpb246MzAwMG1zO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXJ9I2l4LXJtZW1jdC1jb2x1bW5ze2Zsb2F0OmxlZnQ7bWFyZ2luLWJvdHRvbToyMHB4O3dpZHRoOmNhbGMoMTAwJSAtIDc0cHgpfS5peC1ybWVtY3QtY29sdW1ue3dpZHRoOjMzJTtmbG9hdDpsZWZ0O3RleHQtYWxpZ246Y2VudGVyfSN2aWV3LW5ldy1kYXRle3dpZHRoOjYwMHB4fS5peC1ybWVtY3QtZGF5LWJveHt3aWR0aDoxMDAlO2ZvbnQtd2VpZ2h0OjUwMDtkaXNwbGF5OmJsb2NrO2NvbG9yOnZhcigtLWl4LWFjY2VudC1jb2xvcik7Zm9udC1mYW1pbHk6cm9ib3RvU2xhYjtmb250LXNpemU6MS4xNDNlbTtib3gtc2l6aW5nOmJvcmRlci1ib3h9Lml4LXJtZW1jdC1kYXRlLWJveHtjb2xvcjojNTc1NzU3O21hcmdpbi1ib3R0b206MTBweH0uaXgtcm1lbWN0LXNsb3Rze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyfS5peC1ybWVtY3Qtc2xvdHt3aWR0aDoxNDBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWl4LWFjY2VudC1jb2xvcik7Zm9udC1mYW1pbHk6Um9ib3RvO3BhZGRpbmc6OHB4IDIwcHggOHB4IDIwcHg7LXdlYmtpdC10cmFuc2l0aW9uOmJhY2tncm91bmQgLjNzIGVhc2UgMHMsYm9yZGVyIC4zcyBlYXNlIDBzO3RyYW5zaXRpb246YmFja2dyb3VuZCAuM3MgZWFzZSAwcyxib3JkZXIgLjNzIGVhc2UgMHM7Y3Vyc29yOnBvaW50ZXI7Ym94LXNpemluZzpib3JkZXItYm94O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1peC1hY2NlbnQtY29sb3IpO21hcmdpbi10b3A6MTBweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7Zm9udC1zaXplOjEuMWVtfS5kYXRldGltZS1ib3gtYWN0aXZle2NvbG9yOiNmZmY7YmFja2dyb3VuZDp2YXIoLS1peC1hY2NlbnQtY29sb3IpfSNpeC1ybWVtY3QtbWFpbnt3aWR0aDo2MDBweDttYXJnaW4tbGVmdDpjYWxjKDUwJSAtIDMwMHB4KX0uaXgtaXhyYS1xcntoZWlnaHQ6MzIwcHg7bWFyZ2luLWxlZnQ6Y2FsYyg1MCUgLSAxNjBweCk7bWFyZ2luLXRvcDo0MHB4fX0=`;reservationMenu.settings=JSON.parse(`{"videoUrl":"https://www.youtube.com/embed/2BMAz8AshUk","buttons":[{"line1":"WIZYTA W CZYTELNI AKT","line2":" ","form":0,"active":false,"offlineMessage":"Formularz chwilowo nie czynny"}]}`); const ThisStaticFieldIsResultOfNotHavingEnoughTimeToDoneBetterJobOnRenderThisInterfaceSorryForEnyoneWhoWantOrWhatIsWarsedMustEditThisCode = `

Szybka instrukcja umawiania wizyty w sądzie

1. Naciśnij przycisk wyboru miejsca rezerwacji wizyty.

2. Wpisz swoje dane osobowe w wolnych polach.

2.1. Jeżeli wybrałeś opcję Czytelnia Akt, będziesz musiał wypełnić dodatkowe pola dotyczące interesujących Cię dokumentów.

3. Wybierz odpowiadający Ci termin wizyty w wyświetlonym kalendarzu.
UWAGA: Kalendarz pokazuje tylko dostępne terminy.

Dodatkowe informacje

Potwierdzenie wizyty przez interesanta

Po zakończeniu rezerwacji na podany przez Ciebie adres email zostanie wysłana wiadomość automatyczna.Potwierdź swoje dane, poprzez wybranie przycisku “Potwierdź email”.
Masz na to 60 minut, jeżeli tego nie zrobisz rezerwacja zostanie anulowana.

Potwierdzenie wizyty przez pracownika

Twoja rezerwacja zostaje przekazana do potwierdzenia przez pracownika sądu.
Jeżeli wybrany przez Ciebie termin zostanie ostatecznie zaakceptowany, na Twój adres email zostanie wysłana wiadomość potwierdzająca wraz ze specjalnym kodem QR.

Realizacja wizyty

Przyjdź w umówionym terminie do siedziby sądu, potwierdź swoją obecność, skanując kod QR lub wpisując numer rezerwacji - zrób to na urządzeniu - biletomacie.

By dowiedzieć się więcej o szczegółach rezerwacji, możesz obejrzeć ten film instruktażowy:

`; const videoTags = [ `` ]; class ClientCalendar { constructor(passedGuid) { this.prepareHtml() ; (async () => { const DaysOfWeek = Object.freeze({ 0: 'Niedziela', 1: 'Poniedziałek', 2: 'Wtorek', 3: 'Środa', 4: 'Czwartek', 5: 'Piątek', 6: 'Sobota', Sunday: 0, Monday: 1, Tuesday: 2, Wednesday: 3, Thursday: 4, Friday: 5, Saturday: 6 }) const RoomType = Object.freeze({ 0: 'IncorrectType', 1: 'PaperSignature', 2: 'ElectronicSignature', IncorrectType: 0, PaperSignature: 1, ElectronicSignature: 2 }) class TimeManager { static toDate(date) { // date ma format 2023-06-27T00:00:00 const [datePart, timePart] = date.split('T') const [year, month, day] = datePart.split('-') return new Date(year, parseInt(month) - 1, day) //return new Date(parseInt(apiDate.replace('/Date(', '').split('+')[0])) } static toTimeString(timespan) { const [hours, minutes, seconds] = timespan.split(':'); return `${hours}:${minutes}` /* const normalize = apiTime.replace('PT', '').split('H') let hours = parseInt(normalize[0]) let minutes = parseInt(normalize[1]) || 0 if (hours < 10) hours = `0${hours}` if (minutes < 10) minutes = `0${minutes}` return `${hours}:${minutes}`*/ } static nextDays(date, days) { return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days) } static shortDateString(date) { let day = date.getDate() let month = date.getMonth() day = (day < 10) ? `0${day}` : day month = monthsOfYear[month] return `${day} ${month}` } static toApiDate(date) { //return `/Date(${date.getTime()}+200)/` let year = date.getFullYear() let months = parseInt(date.getMonth()) + 1 let day = date.getDate() if (parseInt(months) < 10) months = `0${parseInt(months)}` if (parseInt(day) < 10) day = `0${parseInt(day)}` return `${year}-${months}-${day}T00:00:00` } } class DateRangeHistory { static get maxIndex() { return 5 } constructor() { this.history = [] this.index = -1 } get triple() { return this.history[this.index] } set triple(triple) { this.history[this.index] = triple } init(triple) { this.history = [triple] this.index = 0 } next() { this.index++ } previous() { this.index-- } isCurrentFirst() { return this.index === 0 } isCurrentLast() { return this.index == DateRangeHistory.maxIndex } } const baseUrl = `${ixMenu.homeURL}/`, url = `${ixMenu.homeURL}/ChangeReservationTerm`, infoUrl = `${ixMenu.homeURL}/GetReservationBasicInfo`, pureGuid = passedGuid, guid = `guid=${pureGuid}`, calendarHistory = new DateRangeHistory(), monthsOfYear = ['Stycznia', 'Lutego', 'Marca', 'Kwietnia', 'Maja', 'Czerwca', 'Lipca', 'Sierpnia', 'Września', 'Października', 'Listopada', 'Grudnia'], daysOfWeek = ['Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota'] , $ix = 'ix-booking', // dom create helper objects $div = 'div', $input = 'input', $label = 'label', $form = 'form', $span = 'span', $select = 'select', $option = 'option', $button = 'button', $img = 'img', // dom request helper object $id = 'id', $cls = 'class', $query = 'query' ; let // main dom container container, /** form id */ formId, // dom object for form styles style, // added signatures selectedSignatures = [], // incremented id for selected signatures signaturesIID = 0, // max items u can add to signature table maxSignaturesCount, // references subformCtx, // TODO: add comennt to this variable apiUrl, // current slot set loaded for calendar slotSet, // currentWeek, // selectedRoomType = 1, // uzywany do historii przewijania jako punkt startowy firstWeek, // ilość przewininięć kalendarza calendarPage = 0, // selected slot currentSlot, // calendarPreloadDelay = 620, basicInfo ; const hide = (...nodes) => nodes.forEach(node => node.style.display = 'none') const show = (...nodes) => nodes.forEach(node => node.style.display = 'block') const spawn = namespace => dom => options => { let { id, cls, txt, val, on, src } = options || {} const element = document.createElement(dom) element.id = id ? (namespace ? `${namespace}-${id}` : id) : '' cls = cls ? (namespace ? `${namespace}-${cls}` : cls) : '' if (cls) element.classList.add(cls) element.innerText = txt || '' if ((val != undefined) && (val != null)) element.value = val if ((on != undefined) && (on != null)) element.disabled = !on if (src) element.src = src return element } const get = namespace => method => query => { switch (method) { case 'id': return document.getElementById(namespace ? `${namespace}-${query}` : query) break case 'class': return Array.from(document.getElementsByClassName(namespace ? `${namespace}-${query}` : query)) break case 'query': return Array.from(document.querySelectorAll(query)) break } } const getBasicInfo = async () => { console.log('getBasicInfo', infoUrl + '?' + guid) const res = await fetch(infoUrl + '?' + guid, { headers: { 'Content-Type': 'application/json' } }) return res.json() } const showMessage = msg => { document.getElementById('details').innerText = msg document.getElementById('details').style.display = 'block' document.getElementById('result-box').classList.remove('box-error') document.getElementById('result-box').classList.add('box-message') document.getElementById('result-box').innerText = 'Sukces' } const showError = err => { document.getElementById('details').innerText = err document.getElementById('details').style.display = 'block' document.getElementById('result-box').classList.add('box-error') document.getElementById('result-box').classList.remove('box-message') document.getElementById('result-box').innerText = 'Niepowodzenie' } const getFirstSlot = async (selectedRoomType, divisionId) => { let req = { RoomType: (selectedRoomType == RoomType.PaperSignature) ? null : selectedRoomType, DivisionId: divisionId } const res = await fetch(`${baseUrl}GetFirstFreeTimeWindow`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(req) }) return res.json() } const getSlots = async (start, end, roomType, devisionId) => { let req = { //DateFrom: `/Date(${start.getTime()}+200)/`, DateFrom: TimeManager.toApiDate(start), //DateTo: `/Date(${end.getTime()}+0200)/`, DateTo: TimeManager.toApiDate(end), RoomType: roomType === RoomType.PaperSignature ? null : roomType, DivisionId: devisionId } const res = await fetch(`${baseUrl}GetAvailableTimeWindows`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(req) }) return res.json() } const onFirstFreeSlot = (res, ok, nope) => { const date1 = TimeManager.toDate(res.dateValue) let date2 = TimeManager.nextDays(date1, 1) let date3 if (date2.getDay() === DaysOfWeek.Sunday) { date2 = TimeManager.nextDays(date1, 2) return ok([date1, date2, TimeManager.nextDays(date2, 1)]) } else if (date2.getDay() === DaysOfWeek.Saturday) { getSlots(date2, date2).then(data => { if (data.length == 0) { date2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate() + 2) return ok([date1, date2, new Date(date2.getFullYear(), date2.getMonth(), date2.getDate() + 1)]) } else { date3 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate() + 2) return ok([date1, date2, date3]) } }).catch(error => { nope(error) }) } date3 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate() + 1) if (date3.getDay() == 0) { // niedziela return ok([date1, date2, new Date(date3.getFullYear(), date3.getMonth(), date3.getDate() + 1)]) } else if (date3.getDay() == 6) { // sobota getSlots(date3, date3).then(data => { if (data.length == 0) { // pusta sobota return ok([date1, date2, new Date(date3.getFullYear(), date3.getMonth(), date3.getDate() + 2)]) } else { // "pełna sobota" return ok([date1, date2, date3]) } }).catch(error => { nope(error) }) } return ok([date1, date2, date3]) } const assignSlotSet = set => { set.forEach(e => { e.DateValue = TimeManager.toDate(e.dateValue) e.EndTime = TimeManager.toTimeString(e.endTime) e.StartTime = TimeManager.toTimeString(e.startTime) }) slotSet = set } const existAsPaperSlot = reqSlot => slotSet.find(slot => { if (slot.RoomType === RoomType.ElectronicSignature) return false if (slot.DateValue.getTime() != reqSlot.DateValue.getTime()) return false if (slot.StartTime != reqSlot.StartTime) return false if (slot.EndTime != reqSlot.EndTime) return false return true }) const setSelectedSlot = slot => { get()($id)('ix-rmemct-btn-new-date').classList.remove('calendar-btn-disabled') const nodeSelectedLabel = get()($id)('ix-rmemct-new-date') currentSlot = slot const date = slot.DateValue nodeSelectedLabel.innerText = `Wybrano: ${DaysOfWeek[date.getDay()]}, ${date.getDate()} ${monthsOfYear[date.getMonth()]} ${date.getFullYear()}, ${slot.StartTime} - ${slot.EndTime}` } const getSelectedSlot = () => currentSlot const renderCalendar = (selectedRoomType) => { let properSlotSet = [] if (selectedRoomType == RoomType.PaperSignature) { slotSet.forEach(slot => { switch (slot.roomType) { case RoomType.ElectronicSignature: if (!existAsPaperSlot(slot)) { properSlotSet.push(slot) } break case RoomType.PaperSignature: properSlotSet.push(slot) break } }) } else { properSlotSet = slotSet } let today = new Date() today = new Date(today.getFullYear(), today.getMonth(), today.getDate()) //console.log(properSlotSet) //window.s = properSlotSet let [hours, minutes] = (new Date()).toLocaleTimeString('pl-PL').split(':') let time = `${hours}:${minutes}` properSlotSet = properSlotSet.filter(slot => (slot.DateValue.getTime() != today.getTime()) || (time < slot.StartTime)) let longColumnExist = false const triple = calendarHistory.triple const nodeColumnsBox = get()($id)('ix-rmemct-columns') const columns = [nodeColumnsBox.children[0], nodeColumnsBox.children[1], nodeColumnsBox.children[2]] for (let i = 0; i < 3; i++) { columns[i].children[0].innerText = DaysOfWeek[triple[i].getDay()] columns[i].children[1].innerText = TimeManager.shortDateString(triple[i]) const slotsForDay = [] properSlotSet.forEach(slot => { if (slot.DateValue.getTime() == triple[i].getTime()) slotsForDay.push(slot) }) columns[i].children[2].innerHTML = '' for (const slot of properSlotSet) { if (slot.DateValue.getTime() == triple[i].getTime()) { const currentSlot = slot const nodeSlot = spawn()($div)({ cls: 'ix-rmemct-slot', txt: `${slot.StartTime} - ${slot.EndTime}` }) columns[i].children[2].append(nodeSlot) nodeSlot.addEventListener('click', event => { if (event.target.disabled) return get()($cls)('datetime-box-active').forEach(node => node.classList.remove('datetime-box-active')) event.target.classList.add('datetime-box-active') setSelectedSlot(currentSlot) get()($id)('ix-rmemct-btn-new-date').scrollIntoView({ behavior: "smooth" }); }) // zanacznie const selectedSlot = getSelectedSlot() if ( selectedSlot && (selectedSlot.DateValue.getTime() === currentSlot.DateValue.getTime()) && (selectedSlot.WindowNumber === currentSlot.WindowNumber) ) { nodeSlot.classList.add('datetime-box-active') } } } } const nodeBtnBack = get()($id)('ix-rmemct-btn-back') const nodeBtnNext = get()($id)('ix-rmemct-btn-next') if (calendarHistory.isCurrentFirst()) { nodeBtnBack.disabled = true nodeBtnBack.classList.add('calendar-btn-disabled') nodeBtnNext.disabled = false nodeBtnNext.classList.remove('calendar-btn-disabled') } else if (calendarHistory.isCurrentLast()) { nodeBtnBack.disabled = false nodeBtnBack.classList.remove('calendar-btn-disabled') nodeBtnNext.disabled = true nodeBtnNext.classList.add('calendar-btn-disabled') } else { nodeBtnBack.disabled = false nodeBtnBack.classList.remove('calendar-btn-disabled') nodeBtnNext.disabled = false nodeBtnNext.classList.remove('calendar-btn-disabled') } setTimeout(() => { hide(get()($id)('ix-rmemct-pre-loader')) show(get()($id)('ix-rmemct-columns')) }, calendarPreloadDelay) } const iHaveNewTripple = (triple, callback) => { return callback(triple) } const onNewFreeSlot = (current, ok, nope) => { let date1 = new Date(current[2].getFullYear(), current[2].getMonth(), current[2].getDate() + 1) if (date1.getDay == 0) { date1 = new Date(current[2].getFullYear(), current[2].getMonth(), current[2].getDate() + 2) return iHaveNewTripple([ date1, new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 1), new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 2) ], ok) } else if (date1.getDay() == 6) { getSlots(date1, date1, basicInfo.FirstChoice, basicInfo.DivisionId).then(data => { if (data.length == 0) { // pusta sobota date1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 2) return iHaveNewTripple([ date1, new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 1), new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 2) ], ok) } else { // "pełna" sobota return iHaveNewTripple([ date1, new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 2), new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 3) ], ok) } }).catch(error => { return nope(error) }) } let date2 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 1) let date3 if (date2.getDay() == 0) { // niedziela naley siłowo dodać jeden dzień date2 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate() + 2) return iHaveNewTripple([date1, date2, new Date(date2.getFullYear(), date2.getMonth(), date2.getDate() + 1)], ok) } else if (date2.getDay() == 6) { // sobota getSlots(date2, date2, basicInfo.FirstChoice, basicInfo.DivisionId).then(data => { if (data.length == 0) { // pusta sobota date2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate() + 2) return iHaveNewTripple([date1, date2, new Date(date2.getFullYear(), date2.getMonth(), date2.getDate() + 1)], ok) } else { // "pełna" sobota date3 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate() + 2) return iHaveNewTripple([date1, date2, date3], ok) } }).catch(error => { return nope(error) }) } date3 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate() + 1) if (date3.getDay() == 0) { // niedziela return iHaveNewTripple([date1, date2, new Date(date3.getFullYear(), date3.getMonth(), date3.getDate() + 1)], ok) } else if (date3.getDay() == 6) { // sobota getSlots(date3, date3, basicInfo.FirstChoice, basicInfo.DivisionId).then(data => { if (data.length == 0) { // pusta sobota return iHaveNewTripple([date1, date2, new Date(date3.getFullYear(), date3.getMonth(), date3.getDate() + 2)], ok) } else { // "pełna sobota" return iHaveNewTripple([date1, date2, date3]) } }).catch(error => { return nope(error) }) } return iHaveNewTripple([date1, date2, date3], ok) } const nodeBtnBack = get()($id)('ix-rmemct-btn-back') const nodeBtnNext = get()($id)('ix-rmemct-btn-next') const nodeColumnsBox = get()($id)('ix-rmemct-columns') const nodePageLoader = get()($id)('ix-rmemct-pre-loader') nodeBtnBack.addEventListener('click', event => { if (event.target.disabled) return nodeBtnBack.disabled = true nodeBtnNext.disabled = true nodeBtnBack.classList.add('calendar-btn-disabled') nodeBtnNext.classList.add('calendar-btn-disabled') hide(nodeColumnsBox) show(nodePageLoader) calendarHistory.previous() getSlots(calendarHistory.triple[0], calendarHistory.triple[2], basicInfo.firstChoice, basicInfo.divisionId).then(slots => { assignSlotSet(slots) renderCalendar(basicInfo.firstChoice) }) }) nodeBtnNext.addEventListener('click', event => { if (event.target.disabled) return nodeBtnBack.disabled = true nodeBtnNext.disabled = true nodeBtnBack.classList.add('calendar-btn-disabled') nodeBtnNext.classList.add('calendar-btn-disabled') hide(nodeColumnsBox) show(nodePageLoader) const oldTriple = calendarHistory.triple calendarHistory.next() const load = () => { getSlots(calendarHistory.triple[0], calendarHistory.triple[2], basicInfo.firstChoice, basicInfo.divisionId).then(slots => { assignSlotSet(slots) renderCalendar(basicInfo.firstChoice) }) } if (calendarHistory.triple == undefined) { onNewFreeSlot(oldTriple, triple => { calendarHistory.triple = triple load() }) } else { load() } }) const nodeBtnAction = get()($id)('ix-rmemct-btn-new-date') const action = async (date, window) => { const req = { OperationGuid: pureGuid, NewTerm: TimeManager.toApiDate(date), TimeWindow: window }; const res = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(req) }); return res.json(); } nodeBtnAction.addEventListener('click', event => { action(getSelectedSlot().DateValue, getSelectedSlot().windowNumber).then(res => { const { success: Success, message: Message } = res hide(get()($id)('view-new-date')) ixMenu.showConfirmEmailResponse(Success, Message) }).catch(error => { console.error(error) hide(get()($id)('view-new-date')) ixMenu.showConfirmEmailResponse(false, 'Błąd systemu. Spróbuj ponownie później') }) }) const preLoader = get()($id)('ix-rmemct-pre-loader') //show(preLoader) const displayBasicInfo = () => { const infoDiv = get()($id)('ix-rmemct-old-date') const date = TimeManager.toDate(basicInfo.startDate) let str = `${daysOfWeek[date.getDay()]}, ${date.getDate()} ${monthsOfYear[date.getMonth()]} ${date.getFullYear()} - ${TimeManager.toTimeString(basicInfo.startTime)}` infoDiv.innerText = str //console.log('Koniec wyświetlania basicInfo') } // //console.log("Start: getBasicInfo") getBasicInfo().then(res => { basicInfo = res displayBasicInfo() //console.log("Run: getFirstSlot(", res.FirstChoice, res.DivisionId, ")") getFirstSlot(res.firstChoice, res.divisionId).then(firstSlot => { onFirstFreeSlot(firstSlot, triple => { getSlots(triple[0], triple[2], res.firstChoice, res.divisionId).then(slots => { assignSlotSet(slots) calendarHistory.init(triple) //hide(preLoader) renderCalendar(res.firstChoice) show(get()($id)('view-new-date')) }).catch(error => { console.error(error) showError('Nie udało się znaleść wolnych terminów. Spróbuj ponownie później') }) }, error => { console.error(error); showError('Nie udało się znaleść wolnych terminów. Spróbuj ponownie później') }) }).catch(error => { console.error(error); showError('Nie udało się znaleść wolnych terminów. Spróbuj ponownie później') }) }).catch(error => { console.error(error); showError('Coś poszło nie tak. Spróbuj ponownie później') }) })() } prepareHtml() { ixMenu.DOM._container.innerHTML = `
Obecny termin rezerwacji
Wybierz nowy termin
<
>
Nie wybrano terminu
Zmień termin
` } } class IRRouter { static get actions() { return Object.freeze({ default: 'm', menu: 'm', form: '0', confirmEmail: '1', cancelReservation: '2', qr: '3', acceptTerm: '4', changeTerm: '5' }) } static get route() { const { searchParams } = new URL(location.href) let [ action, ...content ] = searchParams.get('ixra') || this.actions.default content = content.join('') return { action, content } } } let ixMenu class MenuButton { constructor(settings) { this.settings = settings } render(_container, _parent, homeURL) { const { settings } = this const _span = document.createElement('span') const _line1 = ixMenu.constructor.domFromString(`${settings.line1}`) const _line2 = ixMenu.constructor.domFromString(`${settings.line2}`) const _line3 = ixMenu.constructor.domFromString(`${settings.offlineMessage}`) _span.append(_line1, document.createElement('br'), _line2, document.createElement('br'), _line3) const _btn = document.createElement('button') _btn.classList.add('ix-menu-btn') _btn.type = 'button' _btn.disabled = !settings.active _btn.append(_span) _btn.onclick = ev => { if (_btn.disabled) return _line1.innerText = "Łączenie..." ixMenu.loadFormScript(settings.form, _engine => { if (window.ixBookingLauncher) { ixMenu.DOM._menu.style.display = 'none' ixBookingLauncher(_parent, homeURL, settings.form) } else { if (_engine.remove instanceof Function) _engine.remove() _line1.innerText = settings.line1 ixMenu.DOM._errorMsg.innerText = 'Nie udało się połączyć z formularzem' ixMenu.constructor.showPeriod(ixMenu.DOM._errorMsg, 3000) } }, _engine => { if (_engine.remove instanceof Function) _engine.remove() _line1.innerText = settings.line1 ixMenu.DOM._errorMsg.innerText = 'Nie udało się połączyć z formularzem' ixMenu.constructor.showPeriod(ixMenu.DOM._errorMsg, 3000) }) } //_container.append(_li) _container.append(_btn) } } class Menu { static insertAfter (target, node) { target.parentNode.insertBefore(node,target.nextSibling) } static insertBefore (target, node) { target.parentNode.insertBefore(node,target) } static showPeriod (_node, time) { _node.classList.add('ix-booking-menu-visible-error') setTimeout(() => { setTimeout(() => _node.classList.remove('ix-booking-menu-visible-error'), time) }, 10) } static initStyle (_container, href) { const _style = document.createElement('link') _style.rel = 'stylesheet' _style.href = href this.insertBefore(_container, _style) } static run(_container, homeURL) { const { actions, route: { action, content } } = IRRouter ixMenu = new Menu(_container, reservationMenu.style, reservationMenu.settings, homeURL) switch (action) { case actions.form: ixMenu.loadFormScript(content, _engine => ixBookingLauncher(_container, homeURL, content), () => { }) break case actions.confirmEmail: ixMenu.loadConfirm(content) break case actions.qr: ixMenu.loadQr(content) break case actions.cancelReservation: ixMenu.loadCancel(content) break case actions.acceptTerm: ixMenu.loadAcceptTerm(content) break case actions.changeTerm: ixMenu.loadChangeTerm(content) break default: ixMenu.render() } } constructor(_container, style, settings, homeURL) { this.constructor.initStyle(_container, style) this.DOM = { _container } this.settings = settings this.homeURL = homeURL } loadFormScript(id, callbackReady, callbackError) { const { homeURL } = this const { _container } = this.DOM const scriptUrl = `${homeURL}/GetRestFormScript?formId=${id}&courtUnitId=${this.settings.courtUnit}&nocache=${parseInt(Math.random() * 1000000)}` const _engine = document.createElement('script') _engine.src = scriptUrl _engine.onload = () => callbackReady(_engine) _engine.onabort = _engine.oncancel = _engine.onerror = () => callbackError(_engine) this.constructor.insertAfter(_container, _engine) } static domFromString(htmlString) { const div = document.createElement('div') div.innerHTML = htmlString.trim() return div.firstChild } async confirmEmail(token) { const { homeURL } = this const res = await fetch(`${homeURL}/ConfirmReservationEmail?guid=${token}`, { headers: { 'Content-Type': 'application/json' } }) return await res.json() } showConfirmEmailResponse(Success, Message) { const { _container } = this.DOM const _status = document.createElement('div') _status.id = 'ix-ixra-confirm-e-status' _status.classList.add(Success ? 'ix-ixra-e-status-success' : 'ix-ixra-e-status-error') const _info = document.createElement('div') _info.id = 'ix-ixra-confirm-e-info' _info.innerText = Success ? 'Sukces' : 'Niepowodzenie' const _msg = document.createElement('div') _msg.id = 'ix-ixra-confirm-e-msg' _msg.innerText = Message _status.append(_info, _msg) _container.append(_status) } async loadConfirmEmail(token) { let Success, Message try { ({ success: Success, message: Message } = await this.confirmEmail(token)) } catch (ex) { log.e('loadConfirmEmail')(ex) Success = false Message = 'Nie dało się wykonać akcji' } this.showConfirmEmailResponse(Success, Message) } async loadQr(num) { const { homeURL } = this const { _container } = this.DOM const _qr = document.createElement('img') _qr.classList.add('ix-ixra-qr') _qr.src = `${homeURL}/GetQrCode?reservationNumber=${num}` _container.append(_qr) } async cancelReservation(token) { const { homeURL } = this const res = await fetch(`${homeURL}/CancelReservation?guid=${token}`, { headers: { 'Content-Type': 'application/json' } }) return await res.json() } async loadConfirm(token) { let confirmed; const { _container } = this.DOM const bStyles = window.getComputedStyle(document.body); const popup = document.createElement('div'); popup.id = 'ix-ixra-confirm-popup-bg'; popup.style.background = bStyles.backgroundColor; popup.style.height = '100vh'; popup.style.width = '100vw'; popup.style.position = 'fixed'; popup.style.top = '0'; popup.style.left = '0'; popup.style.bottom = '0'; popup.style.right = '0'; popup.style.zIndex = '100000000000'; popup.style.display = 'flex'; popup.style.flexDirection = 'row'; popup.style.justifyContent = 'center'; popup.style.alignItems = 'center'; const body = document.createElement('div'); body.id = 'ix-ixra-confirm-popup-body'; body.style.position = 'relative'; body.style.width = '400px'; const preLoader = document.createElement('img'); preLoader.style.marginLeft = '50%'; preLoader.style.transform = 'translateX(-50%)'; preLoader.src = 'data:image/gif;base64,R0lGODlhQABAANUAAAQCBISGhMTGxERCROTm5KSmpCQiJGRiZNTW1LS2tPT29BQSFJSWlFRSVDQyNHR2dMzOzOzu7KyurGxqbNze3Ly+vFxaXAwKDIyOjCwqLPz+/BweHKSipDw6PMzKzExKTOzq7KyqrCQmJGRmZNza3Ly6vPz6/BQWFJyanFRWVDQ2NHx+fNTS1PTy9LSytGxubOTi5MTCxFxeXAwODJSSlP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQICQAAACwAAAAAQABAAAAG/sCacEgsGo/IpHLJbDqf0Kh0Sq1ar9isdsvteikPiHfcAGxa424AAFilua0NG/behtipulbTYcf0WRBsDiaAWCNsKIZXBDMAJ2iLVRhsLpJHFA0BCkomBymRezAInE0PbBshGpIgHgIeFE4QcmwdYnotCAK7HqFMLStsbCMgaQoUvB4whVEwKcIzGMxaJgSuHjGkVjEOwgdcyLssEVkKKCcAFlwkryDTWREJvlgm7pf3+Pn6+/yLFAkAAwZkUYcAhYMIEc4TEuGCsIfC/owhgIFGxYsWK5Yi0hAiRIleKGIYSRLjRiL/BAq8lQYECRgvY5KgsLCfzZs4c+oE1MJF+80qCiD8pGLiXDouGFIcqPCuCjdvXBg0SNHgAQIrzqBJ42LChQyqKTAUi6IgmLARBNK0QAHWQoGTS2YJswWIwoqpKUbEMoVK1SINAiZM5eCEhCa4RTxZGFpEwYQHTRu7wJB2CyUAlpqU2LBB0SUQjk6QKyIA5JAIDjZkGLsIEQDPRAQBYDmkAOcHkmQ7QFyCTQIjJgZwvgpIwwA2FY4k8H3EA+cGq/TcAZBHOfMjEzhnfqOAFh3rAH4fgWFgQwfEXNa0SbI8fBIMG07QqFPmDPvrR1qo2DCiDokwSrQnHhIsBPDdPgLuBN6ACg5BwQUz7NUgR6xNaOGFNwUBACH5BAgJAAAALAAAAABAAEAAhQQCBISChMTCxERCRKSipOTi5GRmZCQiJFRSVLSytPTy9JSWlNTS1BQSFHR2dIyKjExKTKyqrOzq7DQyNFxaXLy6vPz6/Nza3AwKDMzOzHRydJyenBweHHx+fDw6PISGhMTGxERGRKSmpOTm5GxqbFRWVLS2tPT29JyanNTW1BQWFHx6fIyOjExOTKyurOzu7FxeXLy+vPz+/Nze3AwODDw+PP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+QJtwSCwaj8ikcslsOp/QqHRKbVpO1axU4XIptODmKBIZhc/JcRlNnTkySolozZYiAJwvUm2uRz8AAB1pZH1+TwocgQV7ESKGh04RgSWNLpCRTDI1gQJHfJlQGYETFkagoU8GgShGL44vqU8jNAAqekQSsbJPLIEJvEkzCB9YSRYGJbhhMgoSpk0OgRwRMsE2CgUFM7tMGYqBNXCpFiPaBSPQTQodgYEGEpEWEuczCtZRBSXuNCzqYRZeaJsxQgI+KgImuDPAhh66Eca0nEChAgAFNi8IKvgH5oWJZWBknDh4raTJkyhTqjw5w4TLly8ZhHoxoqZNmyCFvMDgrqf+O0+HJJAZSjSCC442dvr0CdSPHBdFhx490hImzHGRaN68mXOl169gw4o9qSBB1yonUkQESNEiGwIaVoAgWSXhQjYiNJDQwOJCFn38/LGxEMOBXg0buj050W4hJjQK8mqYbAJpkm/uxMkasWCvhg6Mok2LYPmQjAwdJrtwcoHYWiPIKJw1wvhDaSEnKmyIh8YXAGBNBHiYIMKkhFoqFAsB0XSIghA1BihPtQpAqyKjAGAdkmCChw/Xsk94baNCIBNGZMDw4CEFLxkDAsU4YuL8kQzDSdA9NAlAJfr2HdEBexWkcgI4oRlRHwDofVLDBAiQxwYggiSxYINHoMDeBqEv3JGHhQEecUILHjgQygVvKHGhEikskGBKK44FIIMyUoUBDTPUeMQLvOno448yBgEAIfkECAkAAAAsAAAAAEAAQACFBAIEhIaExMbEREJE5ObkpKakZGJkHB4c1NbUtLa09Pb0lJaUDA4MVFJUdHZ0zM7M7O7srK6sNDI03N7cvL68XFpcjI6MbGpsJCYk/P78nJ6cFBYUDAoMzMrM7OrsrKqsZGZkJCIk3NrcvLq8/Pr8nJqcFBIUVFZUfH581NLU9PL0tLK05OLkxMLEXF5clJKU////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv5AmHBILBqPyKRyyWw6n9CodEptqlTVrNRTcXm04Obj1HiEz8lH42RGTyeONjLVKLunDcABixzb71EBAAAoaWtygE4qB4MsfWSIiU0fgyePf5JOGQODLUdqbJlQD4MSJEZ+kaJLIIMlRhNrE6tPBAwAG3xECCK0UBaDK75JsQEKSiQGJ7rDRQ6DBx8ZzVMPjIMDqtRMKiiDgyBf21AsJ98MFqfjTy0S3wbrUAolGwAV8VEQCcz4/f7/AAMKBDQhgcGDB1OIUgGhoUOHx4xA4PCt4jdPiSAI6LCxI0eO6ohMtGgRIyAVAlK2UClgZYeQRAoiRKgNjQIVHhjqhHBloP7Pn0CDCuW2gp8WBRMiniFBz56bBBZKpJgGpt07NyMsaC3gqEq5c+nckOiwQKuFfVIUePsGgoAkBSNeaH0hAOYSa98GdKBF4IMFuSXcNnmmpwBVWiRElNBqcomIBsaQGahgFImCFwvsFiEhYAUEN8AACGvSgczoZh5ubfhcpMPeIgqUuaicqRWAV0UQHDigsAiFOrh9kQIgQekQCrspGCHh4MSJWbQ2DVJupMXuEUcQrEFxOBMlAJaOIN/QmIiFOgJWKbjW1QjyA9SNcDlxwTggQYSSvMeO5MOaCKLksYd+B5CXhAIgNGCBKCLEocQIu5VXhAgFCIaPdQYOBcN7EhD+xEIIGLQ3FE8almjiOkEAACH5BAgJAAAALAAAAABAAEAAhQQCBISChMTCxERCROTi5KSipCQiJGRmZNTS1PTy9LSytBQSFJSWlHR2dMzKzFRSVOzq7Nza3Pz6/Ly6vAwKDIyOjKyqrDQyNBweHJyenHx+fFxaXISGhMTGxOTm5HRydNTW1PT29LS2tBQWFJyanHx6fMzOzFRWVOzu7Nze3Pz+/Ly+vAwODKyurDw6PP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+wJdwSCwaj8ikcslsOp/QqHRKbaIg1aw0xaKktOCmCAAQhc/JcRlNTTVMygnZzJY+AJhEel6Xcsgae2t9UAkYZARIanSETxZkJ4p8jU8qLmQCR4uUUCZkFxJGm5xPB2QkRp4AcKROHiwAI3pFApmtTxVkCrdJKQ8cIUoSByezvEYNZBgWKsdTJodkLqzOhRpkZAdY1VAEJ9gsFaHcTwIX2AfkUCEkIwAb6lEoIsbx9vf4+fr7hCki/wABIuAUoqDBg+OKoKCArSE2W31CEJhIsSKBZgoZOmwIsY5EixVTYCziL2BAaoQkHFw5kp/LlzBjykySQEE9MBI8BEMjod3tOzYdLLQQGcYcOjYOLCidsI2KN3Di2EgA0UKphQ47111D56FRCBNWWyBIyAQatmmtUKwIi8JJMjzMeKnwJxSlkgi/sh4ZtuFmkhAFLJA1EgJEB79ZcgHY1QTEhw8rqkGANaJtEQR2X4Qo8aEBYkqmAKAqEuGCiwhGOjwucEzVBb1COrhw0cGIBA6PE7VSMYBMZCMOTNc2kuIxg8GEHgGIdEQ2bSQZHmf2GE13auFIIDzWgJzNHwCBkDgfrukxI0J38iSRfYE8YQ0fMnCK8EbJeCUEWjRV1wH7zBf3/eeBCwN09d8LCVh24IIM8hIEACH5BAgJAAAALAAAAABAAEAAhQQCBISGhMTGxERCROTm5KSmpCQiJGRmZNTW1LS2tPT29BQSFJSWlFRSVDQyNHR2dMzOzOzu7KyurNze3Ly+vFxaXAwKDIyOjCwqLGxubPz+/BweHJyenDw6PMzKzExKTOzq7KyqrCQmJGxqbNza3Ly6vPz6/BQWFJyanFRWVDQ2NHx+fNTS1PTy9LSytOTi5MTCxFxeXAwODJSSlP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+QJpwSCwaj8ikcslsOp/QqHRKbUZA1ax0IrNMtOBmAgBIhM/JcRlNnTwgyhLZnIywWmxjA7DBI9V0RyYuBQJ5RQFkK2lzSSwhIQiHRC0bZC9/jUctEgUJJpNEIWQpmWtHApCYoUMaHWQwR4BHIJAUGqxEEGQOoEWzRSYlBRIRuUUHZChGuwBwRROQz8dDBDIAJ35EMLFFCoQSCtRFF2QuTgQhEiRsEw0B4kkmBynaSyYCHrhoD2QbIfvGTYFgiUyHaQKjtFhBhswBLAmlvEjRUMYFXxGhwHDQ8EBGKQpQnABQ4eOUCAnsmVzJsqXLlzBXTkhAs2ZNFjGFRLDQsGf+w24wd/r0CRTmTJs2EeZcyrSp06dQhbRwoVKLiQgYw5gQSZINgnwEAmbZ2LGdgHwQqkKZWPEiGxMEPMA4SyIeFAUMOxIIZYLE2Xwvsi4h2PAgtRZfz6Z10o8PwIQgPJxdxYTEO7uCHozArMREghKCi2h4UZcNig0bSjghceGCUmogRGzAUBWBpGAMLjBQy+oB6gJGJqRo8KUIiwszVAtEgPpDaAgNUrzWUKA1xGMaGqD2cMTD8Nc0XrR+fMwFao9HWEQHT8PFjAvscinosMEA5SIe1iNp8R5FaDYzoHZBEtBJl4QArXHHygEbOMCZLvohsdUF57DyQgA4ERghEiAcwGBMSxB8F5UQBbK3FAgVxHBdVC3wNuKLMB4TBAAh+QQICQAAACwAAAAAQABAAIUEAgSEhoTExsREQkSkpqTk5uRkYmQkIiTU1tRUUlS0trSUlpT09vR0cnQUEhSMjozMzsxMSkysrqzs7uw0MjTc3txcWly8vrx8enwMCgxsamykoqT8/vwcHhw8OjyMiozMysxERkSsqqzs6uxkZmTc2txUVlS8urycmpz8+vx0dnQUFhSUkpTU0tRMTky0srT08vTk4uRcXlzEwsR8fnwMDgw8Pjz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/sCbcEgsGo/IpHLJbDqf0Kh0Sm1ORtWstFLLVLTgpgIAUITPyXEZTa2oIMoT2ZysEApsYwLQgaXnSQwaCQ95RQFkNH9rSCIJCRKGRDAdZDFIanRGIyYmGgySRCJkJpiARw8JJgKhRBw2ZDNHmUcIqjQprUQQZBS5RbRFKSomFiW6RSRkKEa8AHBFF4/MyEQFNQArfkUzskUMBiYy29VDD2QvTiAmCeloFQkBoEkp4eRLDA8Lv2cqZB0iOJSrAqESGRvQBkqBQYMMGRJYFEqJYcJhjQf8JD6ZQcGhAY1SGKBYAcACyCkTFNw7ybKly5cwY7KsoKCmTZstZAqZkMGh/k+H3mLy/PkzaEyaN28m1Mm0qdOnUKMOgfFipRYODASiSTGyJJsRMQrA0KqFo0c2E2JUCDuPCkWLGNmkmFAght0RGZ0waOiQBB5Jc9dWEJtXSUGHCKulKFB3cGEk/viIeByKgd0YE5yUiNf2SIoANDorSSEABNkjHK5QpkLAgwejSgqIEIFA44QQFCJYrfBFmAQREkQj++A6UpECDTT8JVJh9lJkCDxQkHFaCIIGDWoLOzE7czUOGlw/t64h+5ERBCRcqC7phHRFtbBrNyJg9iVdDBJ4sLG8yHUN830zmwKrhbEBBR4skMR15iHRAgG06aKCBy4IN8R/ARbBwQsiKbDSSgELZOiffEpMAIFVGiFQnohOMchiUxOooIJ3Ut0Ag4U15qhjNUEAACH5BAgJAAAALAAAAABAAEAAhQQCBISGhMTGxERCROTm5KSmpCQiJGRiZNTW1LS2tPT29BQSFFRSVDQyNHR2dJSSlMzOzOzu7KyurGxqbNze3Ly+vFxaXAwKDCwqLPz+/BweHDw6PJyanIyOjMzKzExKTOzq7KyqrCQmJGRmZNza3Ly6vPz6/BQWFFRWVDQ2NHx+fJSWlNTS1PTy9LSytGxubOTi5MTCxFxeXAwODP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+QJpwSCwaj8ikcslsOp/QqHRKbUZA1ayUMrtQtOBmAgBIhM/JcRlNpTggyhLZnIQ4vuwiA6BppedJLRoADHlFAWQqf2tIKmQBhkSCZDBIanRGMGQaCpFEIWQoloBHKGQhnkQZG2QxR5dHMWQbGalEEGQNJkawRSYNZHC2RCNkHEa4AMJEHGQjw0UEMwAnfkUxrkURJwAzWNBEHWQuTi5kHWwUDAGdSSYHKNZMLSgju2gOmyG14FQQg7OW9YvSwhEZACO+DYwCwxSZGR3uLYQSAxiZAxOlKODAzULGKRESyPtIsqTJkyhTlqSQoKVLlyxUColw4aDNg9lS0rx5M2f3SpYvXwqUSbSo0aNIkwppUaJd0gwFMGh4odTDAA1YHSCFMQKrBgwcnMpU0MGAVwcKibJI4ZVBTKQBsG5wIfEojAMPRhoxseKBWCUmSFCo288FCgZDk4AQIIDAxBYyGBz4SwOGY18eBHigbGvF4QpGCHTokFYIAcZ4wFGwwMABPyIUHnRIPSQDC8Z6PWVQwQAFgiMUOjwgcaSF5rfDBPRGdwTGaNpESMQQUNqQiQkMLFQXQmJ0peKaPbyOJKF3gSTOO3xvznh9pA4MRnAWEnu2u8zEUxEo4N5Id/uBUDDfQPVBd1Rw6im11AMPRKCgEAoM+OCEFEYSBAAh+QQICQAAACwAAAAAQABAAIUEAgSEgoTEwsREQkTk4uSkoqRkZmQkIiTU0tRUUlT08vS0srSUlpQUEhR0dnSMiozMysxMSkzs6uysqqw0MjTc2txcWlz8+vy8urwMCgx0cnScnpwcHhx8fnw8OjyEhoTExsRERkTk5uSkpqRsamzU1tRUVlT09vS0trScmpwUFhR8enyMjozMzsxMTkzs7uysrqzc3txcXlz8/vy8vrwMDgw8Pjz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/sCbcEgsGo/IpHLJbDqf0Kh0Sm2+JNWsNFbLxLTgJgoAQIXPyXEZTY05WkoM2ZxsOb7sYgLAUaTnSQocAAl5RR9kHX9rSB1kH4ZEgmQESGp0RgRkHCeRRBNkJpaARyZkE55EMzZkAkeXRwJkNjOpRC1kFBdGsEUXFGRwtkQGZClGuADCRClkBsNFIjUAKn5FAq5FLyoANVjQRCxkC04LZCxsMQkfnUkXBibWTAomBrvuJSDySw6bE7XgLhBYMGHCsiUtBs066OkFjQkjYCx48USBIzIADHwzdKJFwQkwELSDQsAUmRos7p25UALGRxAjpwgA5owNhI8YRIQ5kYKb/gU2IEDGAHjmBYp9YC6IiAmuqdOnUKNKnbokBoqrWLEioHrkRQaMYDFm4zrEa9iwY8kKsZo1K0O1cOPKnUu3bhYF+uyqWhDCgyK9N1rI8EDBAyS7IjoQ9hBihEq5PG0QtvGBYt0KLhaTKAGYQWEXNIjaJeCgAFNfIwo8VnLhiuimNDRo2NrkBAEClp0qcKBhxWkJG4fMuE1g9bAJJDSAMPKiYO4hCmKICD5MBAkHD17fEFFQZ5EZIm6fjjSDgQYSeKJB9O5LOnVPLc4XQMIdBvsiEsQPuxDg+nMi3E1wHxEXxECACMaxgYFsmBjB3QgDSnLbf3lsQEIHCQpRX4TCJ932HhsSoFBJEgFyOMQJL2To1IMmzrUhYNDBAANSel0wHow45uhUEAAh+QQICQAAACwAAAAAQABAAIUEAgSEhoTExsREQkSkpqTk5uRkYmQcHhzU1tS0trSUlpT09vQMDgxUUlR0dnTMzsysrqzs7uw0MjTc3ty8vrycnpxcWlyMjoxsamwkJiT8/vwUFhQMCgzMysysqqzs6uxkZmQkIiTc2ty8urycmpz8+vwUEhRUVlR8fnzU0tS0srT08vTk4uTEwsSkoqRcXlyUkpT///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/sCYcEgsGo/IpHLJbDqf0Kh0Sm1GPtWsdMLgTLTgZgIASITPyXEZTZ04HsoR2Zx8OL7sYgNwWKXnSSsHAA15RQFkKH9rSChkAYZEgmQsSGp0RixkBwuRRB5kJ5aARydkHp5EGgNkLUeXRy1kAyWpRA9kErVFsEUlEmRwtkQgZCRGuADCRCRkIMNFBQwAG35FLa5FERsADFjQRBdkKk4qZBdsEw0BnUklBifWTCsnILtICxAXBU4Omx4awMUoIQDDiQYunDwYNGtZqgkoDtbD02SFIzIAQHwzFIGERAse2kFhYYoMgwv3wpRQ8aLBwQsbp7QARsYAGwUuGzgQEWYB+AluFthcOGGAQkowERLI6/lgqcCnUKNKnUq16hAWFLJq1YrAqpEIGQ6IHUu2g1ciYMmS3XDA7NmrI+LKHdFiRIq3ePPq3cu3L5UFHUT61TACHgy/QhA4ONhAgd8PQ12+UHH07QIPFlyeIOEU7wQQOVFU8uviIAYBlfUWuAAh9ZASIxK41vvgwgWKfhfAuEBCsJAVEfKOsH23yAoBAnxThXzBRUBtHQQE96rBwwUYo7W16DDdKgLb5I5EQN6daokKMGCUlySgQ8ypHWwLSBKhhXSvKngrH3Kcu9f6/NAnQAvr9bXCdgXyNd59iAkBWGANvrZfhBRWCE0QACH5BAgJAAAALAAAAABAAEAAhQQCBISChMTCxERCROTi5KSipCQiJGRmZNTS1PTy9LSytBQSFJSWlHR2dMzKzFRSVOzq7Nza3Pz6/Ly6vAwKDIyOjKyqrDQyNBweHJyenHx+fFxaXISGhMTGxOTm5HRydNTW1PT29LS2tBQWFJyanHx6fMzOzFRWVOzu7Nze3Pz+/Ly+vAwODKyurDw6PP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+wJdwSCwaj8ikcslsOp/QqHRKbaIg1aw0xaKktOCmCAAQhc/JcRlNTTVMygnZnDQ1vuziA4BJpOdJCRgAD3lFHGQaf2tIGmQchkSCZARIanRGBGQYIZFEFmQnloBHJ2QWnkQqLmQCR5dHAmQuKqlEJmQXEkawRRIXZHC2RAdkJEa4AMJEJGQHw0UeLAAjfkUCrkUoIwAsWNBEFWQKTgpkFWwpDxydSRIHJ9ZMCScHu4EcD3hMDZsWteAkWBgEoIETEwQBuFiWysQAMnwYLkngCOKBb4Y8FIOoQd4TAqbIsKhw70yICgsgntg3RQAwZ2w2AriwIkwIEtw2sDE1gkH+yTAoRHgEk0ABCnBIkypdyrSp0yceOkidOjWCLRQesmrVOlRIAhdgw4a9sNATBAto06pt8VMIigEuyMqNC1YimrNq87I9EpUqVaupsG7d2vWp4cOIEytGHAJE28VDVHQo8aEAZCMpKnzYbPmy2wKbD5RY8RixBBGhP1g46pmAhs0fGFTyLETBZg0mSi+GkEFEOyQqHHTQDTkCWg+0iYRoYWFvkRC/EZtAC1g5AQLRn6JAKwKgdeyIVaxAi/F79qYE0HZAEoJAivNLT6OF/6K9B/pJQaC1O6Q9eMMdNOedEf7hh1QCJrCGhAQp/JecEAU+2N91BiomgXsDPqhChhIGdujhUkEAACH5BAgJAAAALAAAAABAAEAAhQQCBISGhMTGxERCROTm5KSmpCQiJGRmZNTW1PT29LS2tBQSFJSWlFRSVDQyNHR2dMzOzOzu7Nze3Ly+vFxaXAwKDIyOjLSytCwqLGxubPz+/BweHJyenDw6PMzKzExKTOzq7KyqrCQmJGxqbNza3Pz6/Ly6vBQWFJyanFRWVDQ2NHx+fNTS1PTy9OTi5MTCxFxeXAwODJSSlP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+wJlwSCwaj8ikcslsOp/QqHRKbUZA1axUEqtItOCmAgBQhM/JcRlNlTwgShPZnIQ8vuxiA7BppedJLRsADXlFAWQrf2tIK2QBhkSCZC5IanRGLmQbCZFEIWQploBHKWQhnkQaHWQvR5dHL2QdGqlEEGQOJUawRSUOZHC2RAdkKEa4AMJEKGQHw0UEMQAnfkUvrkURJwAxWNBEFmQXThdkFmwuBwydSSUHKdZMLSkHu4EBDXhMARsbHRdqgSsRYhCAB05YqPC3oQECaBAGkOGzbJ4FAwwffDMEotjEFfKeqGOIAUW7MyUsTAu1b4qHARnZeATgYEKYEgUcbBjBhgLYNQb3zkQwcTJMiwsRwCldyrSp06dQn4CAQLVq1ZaGJFjdulEShRQNwIoN69ATCbJjxVIIKaQFDLRwUzyMhCAu2rVHCFBlAYGFB74ssOZx8bdvYb9doypezLixY8cJJAR9XEQDCxQWMFEe4qKAhc8mNg85+tmCDA+THZcQIOOzDBNsHRPA/DkEAdFDXnzmQCL15ggXUCspIaE37mgCBCQ9LmS1B+HMZ5AQ8OJ29BbJWfjejECAh+XMQSQnEX2GBg/ei+J2kbxS+enQoydwEbu8/fv48+vfTzkIACH5BAgJAAAALAAAAABAAEAAhQQCBISGhMTGxERCROTm5KSmpGRmZCQiJNTW1FRSVLS2tPT29BQSFJSWlHR2dMzOzExKTOzu7KyurDQyNNze3FxaXLy+vAwKDIyOjHRydPz+/BweHKSipHx+fDw6PIyKjMzKzERGROzq7KyqrGxqbNza3FRWVLy6vPz6/BQWFJyanHx6fNTS1ExOTPTy9LSytOTi5FxeXMTCxAwODDw+PP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+wJpwSCwaj8ikcslsOp/QqHRKbUZE1ayUMrtQtOCmAgBQhM/JcRlNpTgeyhPZnHw4vuxiArBxpedJLhsACXlFAWQdf2tIHWQBhkSCZDBIanRGMGQbC5FEI2QmloBHJmQjnkQaNGQyR5dHMmQ0GqlED2QTKEawRSgTZHC2RAZkKka4AMJEKmQGw0UEMwApfkUyrkURKQAzWNBEGGQvTi9kGGwwDhydSSgGJtZMLiYGu4EBCXhMDR4TCRbuQdMwYhAAB04QtPDgjwQCaA8GkOGzjMkCFTQYeggQwZOIYhM7yHtCoMMEhiEKCAyzAAODiSb2TXkQw99GNiABTLAQRoP+BAgeFKGpQK3BSjAuZLQ74+JFR3BQo0qdSrWqVScREGjdupWALRYKwooVK3PIAgcZ0qpVS6IsGgET40688FQSWhIZ8OpN6/aMLLlx6R4RwbWw11QPxirue7Wx48eQIztGAeOoFhQELGfRUELCCAFsQBR4QUGzFBEnRqgGEXpEgREnvlFZIEB1AQkIaqHRgMCzagFLn6Bgodr1A9NgFjxwPUICC+RGIrxwLcFC3VQRZNh26oTFbQUwdENDQUGB6opKXAhAAB3FFfFhUCAQMBIpDBjBJRMhDyOz/iMR3Hfdf0JQRgEB8BFYAwH95UfgAvfJpmANGtxHQYIEuiDghEQTiHAghgS6Bx2HJJZo4okopohiEAAh+QQICQAAACwAAAAAQABAAIUEAgSEhoTExsREQkTk5uSsqqxkYmQcHhzU1tT09vSUlpS8vrwMDgxUUlR0dnTMzszs7uy0srTc3txcWlyMjoxsamw0MjT8/vykoqQUFhQMCgzMyszs6uysrqxkZmQkIiTc2tz8+vycmpzEwsQUEhRUVlR8fnzU0tT08vS0trTk4uRcXlyUkpT///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/sCWcEgsGo/IpHLJbDqf0Kh0Sm1CONWsVMLQSLTgZgoASIXPyXEZTZU4Hkq1OflwfNnFBuCASpPnRygHAA14RQFkJn5rSCZkAYZEgmQqSHJIKmQHCZFEBWQlln9IJWQFnUQXA2QjR5dGI2QDIahED2QWtEWvRCEWZHC1RB5kIka3AMFEImQewkUEDAAZfUUjrUUQGQAMWM9EFGQRThFkFGwEFB26SAkGJZxNKCUe7IEBDXdMGA0lFQIXvrUIUWAQAAdOJHjo18CEPlQPVmlSxiRBgQkl+omA0IkDMTIATFSDwoFCxhIrItgDk4CFNFAPpSBwwFABm48ALCwIc2GB14EGLNhMmKZgpRYUD+KdQRGBo8CnUKNKnUq1qhEUErJq1eqt04MUYMOGjSmkJQUWZ9OipUCgUyyQcMlocErELIW7eO+yqBRJQNy4cwNJUAGCsGEQXSN9FSuWrNXHkCNLniw1BASjWRI8GMmTgwABINiwaGBgAWYpSAVsAM1GwUkHCDKD+KxaRUA0ISKsYEghsZMQKmhvAKEUDwrXGScUKL4k9eoTnDtJMHHSg+MjEj5v8F0rhIAK/TD8Lny6VoIObCmrX8++vfv38OPLn0+/vv37+PPrNxIEACH5BAgJAAAALAAAAABAAEAAhQQCBISChMTCxERCROTi5KSipCQiJGRmZNTS1PTy9LSytJSSlHR2dBQSFDQyNFRSVMzKzOzq7KyqrGxubNza3Pz6/Ly6vJyanAwKDIyOjCwqLHx+fBweHDw6PFxaXISGhMTGxExKTOTm5KSmpCQmJGxqbNTW1PT29LS2tJSWlHx6fBQWFDQ2NFRWVMzOzOzu7KyurHRydNze3Pz+/Ly+vJyenAwODP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+wJtwSCwaj8ikcslsOp/QqHRKbb4i1axUZsPItOAmCgBAhc/JcRlNJXwQSrU56WJ82cUDh3VKk+dHCRwAD3hFCxwcGUkKf0kbZB+GRCcdKyQESHJIBGQcfZNDCoklmo5HLWQSoUQzD4kQR41rRgJkHTOsRAiJIRVGm0UVDmQuukUMiQVGCMVGF2QHx0URGhwOL7UgRi8rADZY00QXiRZOs4toETUWoEgVMSXuSwktB79JCR8Pd0wKEzECuMglroKEQQAYOCGwIQbAFJmOuRhABgAHY04qoGAAcIKEBKFElKgIYAPIKC8KdFRBA9+ZExkaVGzRbwqFDB1XoTlQ0QH+jTAzQKiIsQyNBwArUrgMcwLBPDAJFGQTR7Wq1atYs2p1kkCE169fp4ZCgKKsWbM1h1SAIaGt27fhDIEgSRcABrFDTrB9+3YEXja26la8Gwis4b94XJxdnHar48eQI0uOPOMEwTNREWeZkYAAAc1Vjq64sLTKCRGeP7PhScaBgCwVIqSWkeAy0ww2ZkaEwlmGZxkvbLMRwZrMhqdKKqQmIKL0JBcdKl508oKADBHIWc04SEZhk9jB2VQAAUF4EX38HItoa2JykrUSYGR3f0NGW4z0hVloC9p9hBEw0GBefiC0tVt+ebWFgnP5ITCCBO0hSIRGEmwjIREvuHDShRwJdujhhyCGmFUQACH5BAgJAAAALAAAAABAAEAAhQQCBISGhMTGxERCRKSmpOTm5GRiZCQiJJSWlNTW1FRSVLS2tPT29BQSFHR2dIyOjMzOzExKTKyurOzu7DQyNJyenNze3FxaXLy+vAwKDGxqbPz+/BweHHx+fDw6PIyKjMzKzERGRKyqrOzq7GRmZJyanNza3FRWVLy6vPz6/BQWFHx6fJSSlNTS1ExOTLSytPTy9KSipOTi5FxeXMTCxAwODDw+PP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+wJtwSCwaj8ikcslsOp/QqHRKbU5G1azUUstYtODmAgBYhM/JcRlNLbBMSrU5CXF82cUVxcVIk+dHMBwACnhFFR4eJX5rSB1kAYZEDAoeNgVIckgyZBx9kkMoHhQdmX9IJ2QioEQbJIkQR5pGNGQ2G6xEJqMzuEWzRCkUZLG5RAGJEkYtxEYlZCTGRRMhHhEwtAJGEyoANVjSRAQUHtpNL2QPbBMvIClKKQEdn0wwJyTvSTABCndMNA8eVDCRT9oGEYMAOHBSoETAByIwGYMwgAwADsWapBDA4iEKenhGkLAIoAO2KDBePOjIAkLBMAweNLB4wt8UGTE8shlJhgLdhjAbWjgEFOYCABUIXoJhQHDdgpPhokqdSrWq1atNGEzYypUrSEMtFogdO9bmkBQgBKRdq5aGAKh4apGcm2GCkY0CBLjdq/YtKLlzLdY9wgDGCBgTDBtOnAsC2cdmsUqeTLmy5ct4UtrFjMSoihJKOd/gCYACDdGTHtSgKQP1EJEk57kWAsGGRYyzbxxMuBArAxZJlTDgF3kqBAUnXuQWAsOAghlwXWNAvmj5BgfIi3NOcEJBB1+5H3Q3l3vEhRMaQosWoUCBsuUMSJz4sFyIBQIS6+vfz7+///9ZBAEAIfkECAkAAAAsAAAAAEAAQACFBAIEhIaExMbEREJE5ObkpKakZGJkHB4c1NbUtLa09Pb0DA4MlJKUVFJUdHZ0zM7M7O7srK6s3N7cvL68XFpcbGpsNDI0/P78FBYUnJqcDAoMjI6MzMrM7OrsrKqsZGZkJCIk3NrcvLq8/Pr8FBIUlJaUVFZUfH581NLU9PL0tLK05OLkxMLEXF5c////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv5Al3BILBqPyKRyyWw6n9CodEptQjrVrFSy0Ei04GYCAEiEz8lxGU0lFL5psjn5cMDZxE3jo0iK5EkpBwANeEURDSYeSSqASCdkAYZEIxUNFFhHanNGK2QHfZNDAiYNG0ibSCZki6JDFyelCJqORSxkAyOuRBIUDQ4XRqlFIxZkD7tFJaUTRijHRhlkH8lFKS0NBqFELCxGEBgAC5nVQyqlyE2NAKdoKQIIukkjJQzbSykmH/JIKQENd5Y88OAhwYpg5UZ4GATAgRMIKggWmACh2oMBZAAcSNdkxIMIBD08uMemw4eMAE6kkKJAQMgIIfiFUbCBREYTAaV0SCCRY/GYk2QsNANzQUKECBzYUACAoYRMMCNWPNUCIUHFclizat3KtatXJyMUiB07diqbBwnSqlWbU8iFFXDjyl1BEo0AlHgBaLhKCa4EAnP/1j1zK2/GvUfCkiVrFg3atWvbfp1MubLly5jZpFDBN7ORpRgyNMYMFIAFb56J0Fxwc0VqIiZRnhiM+WLGja+HjCjA0OHXFBT2KfEHcPK6dpc7kBsCTtzyyRAIdhYiDQA1ywQIEjBSDFrl7B62Gymc67t2VazMh0ci4RPtrODFH4EEQNLk+EkUDCp0/zwdO5Thl9sQAg7oQgpHrWSgEGEt6OCDXQUBACH5BAgJAAAALAAAAABAAEAAhQQCBISChMTCxERCROTi5KSipGRmZBweHNTS1PTy9JSWlLSytAwODFRSVHR2dMzKzOzq7DQyNNza3Pz6/Ly6vFxaXIyOjCQmJJyenBQWFHx+fAwKDISGhMTGxOTm5KyqrHRydCQiJNTW1PT29JyanLS2tBQSFFRWVHx6fMzOzOzu7Nze3Pz+/Ly+vFxeXP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+wJdwSCwaj8ikcslsOp/QqHRKbapU1ayUcLkQtOBm63Bohc/J8YGCpkIW3zSZnUw5Vm0jBqSZyDMCSQkHAA15RRQgICVyB4FIKAAAHIdEIwGKWEdjgEgrGwAHI5VEKYoYSAJkj0YNkh+kRBMWihJHFAedRgKSA36xQx6KFr9EamZFExGSKcBFBYodRghkCEYkkgbORQkOICijRQ8PRioZAAwQ20UtitZNC5IWbSMSBCxKEwUYxUsqFQbCIRnBoQGeJgQ6dHigbt0LFh9CSHLgJMEDhR1EJNiWYoCkUM2cTCBwUeGKfm08GPgIQMPGKPUWCnhwr80sEx9PHKSSIAXexp1hVkqKgEzLBAgXbaGpACCDApRGIUDNoqKEJodYs2rdyrWr169EEJQYS5YsULAvOrBcC2DDVbS82H50i7ZU2btn6+rdy7ev378vEix4C/gF0wwkpvIVCiACq78jLDDIGQcwBMYtBf7t+PFASMATPhACQNFrAoCKhSQomDdrPADz9ooQYSTBuXR6V5wweC2b3hS7Pw9Rxqwu8AbCh8T1hRZBgxPJh5x4hTbF8+hCCEgSBfY4diEaJFH6ah16khGEDH11jlyJndZZvRceUv47XwgVXDScH/gl//8AahUEACH5BAgJAAAALAAAAABAAEAAhQQCBISGhMTGxERCROTm5KSmpCQiJNTW1LS2tGRmZPT29BQSFJSWlMzOzFRSVOzu7KyurNze3Ly+vAwKDIyOjDQyNHR2dPz+/BweHJyenFxaXMzKzOzq7KyqrNza3Ly6vPz6/BQWFJyanNTS1FRWVPTy9LSytOTi5MTCxAwODJSSlDw6PHx+fP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+wJZwSCwaj8ikcslsOp/QqHRKbZYe1ayUsBoQtOCmYLUShM9JQaWMpj5QHOWYnWxYIm2jiSJSpFcVZkgKGAAOeUUCFBSCRxtrjUYsAAABiEQgGSoqWEdzkUQnlBh+l0MeiyZIanRGJJQdppgdiyeeZKBCKJQrF7JEBCoUBSBGY4FGIBWUDb9FH4sjRh5kB0YZlAnORQrCfUYNzUUlIQApcdtEDYt4TSaUFG0gHA++SSAfCMVNDxoJpYMCOGjH5MGJEwRKpBNyoYMBShacgDh4kMC+Xw0GUAKAQVyTCwYjEDjx4GIeAgk2AmChMMq8ExEO1pNHYcFGEgSnKBgps03+SkoVJIS5UGJkpzMaAIRgYBLMBQX2zpQwcXSh1atYs2rdyrXrkBEIwooVm9NrCwEq0wKYUNXrLrUb2ZpVN7Zu2bl48+rdy7dvi6lt/SYNIaIp358AKqDwK0QBhRQ3bTHmgHglwL4NVmzsyLhFw0IAIqK5sEGAYSQl/J0eUkLg3SweOnT44g4eVgUQOkAwjCLXg3Lnrm6QfbcBMyMisll90KHAh6hDEFBCkGwZAI+/LkiQja6IdADUjbztte2E7FxCvod3BcsZCAS6WxpRjyTCBI6XER1oLg0JfSSTVPKLAB2YsFoL/x1RQiGHyFJCA4ERkeARdnjg1YR+YdiXfSkMvMbXA911JuKIWgUBACH5BAgJAAAALAAAAABAAEAAhQQCBISGhMTGxERCROTm5KSmpGRiZBweHNTW1LS2tPT29AwODJSSlFRSVHR2dMzOzOzu7KyurNze3Ly+vFxaXGxqbDQyNPz+/BQWFJyanAwKDIyOjMzKzOzq7KyqrGRmZCQiJNza3Ly6vPz6/BQSFJSWlFRWVHx+fNTS1PTy9LSytOTi5MTCxFxeXP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+QJdwSCwaj8ikcslsOp/QqHRKbaZS1ay0Q2l1tODmw9R4hM/JR8NkRk9TD4gStW4jHw6J2yjwqEZpdUkpBwANe0UIHh4oaWR2RicAAAGIRCMJBREKd4JHKxoAB5yWQyuLAnePSCaTHqVEFxOLX0ZqbEcskwOAsEMQHgUTvURjZUYjFpOQvi4Pi3pFEmvRRBmTH81FChEeEcRDCCFGKSQAC7XaQyGLBE4qkxvqRSMCHOBKEBQGpEgKAQ2qzYtywQOISQ4GSnkwYJIoZgqVdPjgEMAJLBGZjNiwwKEJgRmVGHBoYULIJxQAYCiB76SSFCrkuJxJs6bNmzhpokjAs2feT5A0BVQcCkCDTJu6iDo0mvOBz6dAc0qdSrWqVXUwj15NiSFDS6kUJ1lgcVUBR48rrk6seKIfVYYOD0DMOaJAIQAJ0YwowcDtSwofvg5JATBqFRWrmsADIE9hihYN+BlhkaoIBAzn0qkrQcZkkQfLjFwDkG2eBAoNHFwwkmBSAmTKAMxFdOHEGgRHWgN4PXmXYDcC1jQ2IsI1K1fNRlRoQEEzEd28jUiYNMpXhDUFkkBPIomSrw0NPvh9btxfoUOwCBRIq738HQfjZm6/6mL+VQkaFhiWCsE5/f8AzhMEACH5BAgJAAAALAAAAABAAEAAhQQCBISGhMTGxERCROTm5CQiJKSmpGRmZNTW1LS2tPT29BQSFDQyNHR2dFRSVJSSlMzOzOzu7KyurGxubNze3Ly+vAwKDCwqLPz+/BweHDw6PFxaXIyOjMzKzExKTOzq7CQmJKyqrGxqbNza3Ly6vPz6/BQWFDQ2NHx+fFRWVJyanNTS1PTy9LSytHRydOTi5MTCxAwODP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+QJlwSCwaj8ikcslsOp/QqHRKbSpY1aw00mhEtOAmwuVChM/J8cSMnipe2LRrrVwFXm3jSNApyctJLCcZB3lFLwICeEgIE4BIHBkZD4ZEGB18CoxzbEYvBRkacZVCH4kjm3RHIpItpEUIiaNEjY9FHRkmDhivRCx8ELywnEYlAxkFK71FewIfnmSLRAaSLstFJXx9RhQURhEMGRfP10SIAl9NJJIq5UUYIyN+ViIN80gsAQ7e7lMYIRkAAGjQTwqEAQIBZIBQ8MmHAwkBoJjVMEkJDjESpuBXkQlEgQwqdHyyAYAJFZpGOmHRIp3KlzBjypxJ8+WKBDhz5uQoU0D+xJ8ALLiMCQNoRKE1IehcyrOm06dQo0pFUuLFvTAsh4KBJyGEgDYlT16t8oFEiLMd2nwEwABGFgUCzhqQgEDYGQUYNUp7UmLF2RAGIIxFQ2CtxJRNIrQALKGC1koQNCRc6GTF3AQv7C77F3DgSgEIBhNRcGADxUAbDogekm9fGw4CXTWRIJBDww8ZTTwW4LYICxMAYpBz97FdEQgCGRZRIbCQO+RsEQ8hITBBMQbJy2FACECkkQTVj1QQqEEzqRACUyABD8D6kRQCQyxT0HkvEfbuuVlQKN1QAIEoJIFfEigIFEAvDih02hAD4hOQA72M0IBy64WXBAQNoPJSg1MScSgVBRbE0FRUEQw31YkodhQEACH5BAgJAAAALAAAAABAAEAAhQQCBISGhMTGxERCRKSmpOTm5GRiZCQiJFRSVJSWlNTW1LS2tPT29BQSFHR2dIyOjExKTKyurOzu7DQyNFxaXNze3AwKDMzOzGxqbKSipLy+vPz+/BweHHx+fDw6PIyKjERGRKyqrOzq7GRmZFRWVJyanNza3Pz6/BQWFHx6fJSSlExOTLSytPTy9FxeXOTi5AwODNTS1MTCxDw+PP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+QJpwSCwaj8ikcslsOp/QqHRKbTIY1ay0pVJJtOBm5fGohM/JscqMnp4kJ+W4rDSpCm2j6FWIIysqH2xHJxAeDnlFEi8vX0gvH3RIJRMeGYlEGwWMfkZqg0UFMx4rWJhDLS8Vjp5koEQpHh4ap6GbpkWQa0cxlSMbtUQnjAXARXOvNCcusgrBRXsvLUYFgSJGER4TH89FJxWbxkR8Ri2GIKzdQi0VL7hLMtoE6kUbEnBODB0BnUcMAQiS0XOyIQQHAAAQDYxyYQBCABwuLHwiYsRDAB2mTWRy4gGMhyQEbjxi4OEEWiOdUACAIkG/lEtasEgHs6bNmzhz6kwZY4H+z58/RaYUcLEoAAs0a8owehHpzgtAowrdSbWq1atYhzC48A6MzKRZNmgwgEBFm5UoSrykosABAgQkErQpiXCCjCwiHpCA64LF2iwMPIJ8IYVBCApwSZTQmKiAxYcdusoZARdBB8LPLsx4GNFJhr0YBPzFVPBgQicFHkQYLYTBCAqMY1IYwZpGC4BTpTxAyMJJBIQPJor4iCKpgLtFWqAAAOPawMcljFxAKLFICYQjBk4HMEHyAoQLjJyYQF3dBocAUBb5DiC8EQ0IZ4irFQIhCSTs3RshgTDEMwamYWZEfn8gxIFkbQSAUAdJEIhEBwgFEAwCEMW2HnhJAAgAAsEhmOBAdfhhmMQFDphgk4NZoYhVBRbAkFtOEjiX1Yw0phQEACH5BAgJAAAALAAAAABAAEAAhQQCBISGhMTGxERCROTm5KSmpGRiZBweHPT29LS2tNTW1AwODJSSlFRSVHR2dOzu7KyurFxaXMzOzGxqbDQyNPz+/Ly+vNze3BQWFJyanAwKDIyOjOzq7KyqrGRmZCQiJPz6/BQSFJSWlFRWVHx+fPTy9LSytFxeXNTS1MTCxOTi5P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+wJVwSCwaj8ikcslsOp/QqHRKbYIQ1ay0BIGUtOAmodMhhM/JcRnNLqrNyUsB3oa+k4hJY1OP3pEdDQ0QfXZkdEUcIyMTWIVOf0YbIw0Cj0+RRAqUJBWXkIdGFQ4NERefTg9kD0YWDSMZqE8ciEIIBg0nX7JVEq8mvFkIDCIgSggBDafBUhUdBwAADsxREgPRAAcS1E4cHtgAJLvcSiAbC9gjy+RLBtgUFuxOEQAYxfJOJSas+P3+/wAD9itBoKBBg/wKoUjAsGHDdURAQCBDsWIHDoUEgNsIQEPCIQgmWqRY4CObFBzBeTxC8OBBk20kOJwJUaDNmzhz6kSib1zwGH0ws4DIgAFABDYj6mUwBiYFBWwG2HyLRiFFFhVJoy3YwPQMgnPpVEhBQAKch1povIEj4aiJBGjRBmz7ZA2bNicOoh0o0PUTiAJwpzW50CBA2yMgDETwqaREBA99jZRIVlPLhmjAmkCIxocZB3QYYAqwWqRE0QUYg02NVURCtLlEMkTzEMw1AAqHhSSIlsAIiKcAYF+qcA1APCO7AfRuFTdynw7RRiBJvtxI1g6fEMAVe4Q6kgt6c7cJEI1EEu9IygIIcKlBNsZE0B/RDqDBpQsOhCPnrUSCg8rUyKeTgDldoMECAN70QGo7NeggO0EAACH5BAgJAAAALAAAAABAAEAAhQQCBISChMTCxERCROTi5KSipGRmZCQiJPTy9NTS1LSytHR2dBQSFJSWlFRSVDQyNMzKzOzq7GxubPz6/Ly6vFxaXAwKDIyOjKyqrCwqLNze3Hx+fBweHJyenDw6PISGhMTGxExKTOTm5KSmpGxqbCQmJPT29NTW1LS2tHx6fBQWFJyanFRWVDQ2NMzOzOzu7HRydPz+/Ly+vFxeXAwODP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb+wJpwSCwaj8ikcslsOp/QqHRKbU4m1azUBAGZtODmCwR5hc/JMciMbhMR5IiSoJC7oy/BOjnZSDp3eF1sRygwMBSBUGMQdkYvhxtYik5jAoRFBRIwLpRPCAJlRxowEg2TnkxqmEITF6UEqU5cAl9FIKUYsk8vCEYmKTALvrtVCaUyxVkTHRioRyYNBrHKUjEKHhwcH9VRJw7aHA8J3U4RC+EHF8TlShMrGeEk1O1LMOEDEPVOEhwZIzH2OUFAgZ3AgwgTKly4L4KLhxAhavCUAIXFixcnGkFQgYUDjyA/OjihCASAkyhTWmBVA8EMkSFBkgwkIKVNACuPiHiYwEX+Agg9E2hU5AKj0aEMkypdyrRpEgQKDIKBynLZChUAKrRhAUDFimdVBDxAaaCNAZQPBGQhwPUkjQtgtZi4QAMlC3pPTGxIaUCEoghnUW6w1cQFB5QeOqVy4QElB8VMFpzkgCHgrhgYDgNY4ESDgw9Si0wwUCE0Eo4G4r754AApmAsnFThRcPJCtwh1VbAEobbIC6w0HO0KvMKIi5OQh6w4WbbYcQAPCA+hcBKFkQljASSnFGPAyWRGUFQ/UhOAB8ueMJxkgUQ8AOtH2uryZEIzXiLu4RvRYAEAB+l3fHDSBknkl8ReAHBDiQP+mSaEgacd5oAnpGxXBIRIuLCAa+UTYNiUh0zxRwOHS70gnFMoplhOEAAh+QQICQAAACwAAAAAQABAAIUEAgSEhoTExsREQkSkpqTk5uRkZmQkIiSUlpTU1tRUUlS0trT09vQUEhR0dnSMjozMzsxMSkysrqzs7uw0MjScnpzc3txcWly8vrwMCgz8/vwcHhx8fnw8OjyMiozMysxERkSsqqzs6uxsamycmpzc2txUVlS8urz8+vwUFhR8enyUkpTU0tRMTky0srT08vSkoqTk4uRcXlzEwsQMDgw8Pjz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/kCbcEgsGo/IpHLJbDqf0Kh0Sm1qUNWsFBWLYbVgJiNmYYTPyXHBjG4TxzE2UjSbuKVwuRGFeLjuUXlJAg8PH4BQgkcvKw8VX4hNikYuhSWRT5NEMYUhGphOmkIaMIUioE4oFnFGLA8rJ6iZekJ8r7SyURavh2gvAgmQYSgLJ8JGDDAOMU4QISELMZ+yKBgtHRQIThMuzwQYdqAlIxQdHS2XqRASzyEQuGcTHuYdNSTwSwwC7RIlx1ooCIDA1sFBgSwiFniD0CYAQRkMwWiwIEFCrzMcOkSQMO0Ml39ZXtTJRbKkyZMoU6o8YmGBy5cvWWCCALOmhSMTMgDYybPn/gxEAnoKBZAhHJGcQ30CTcqzKMuaMCMiognV5c2VWLNq3coV6wsXL9p8NTqMRAoAF9qYAJCCBEgpMyjwNNDGAE8KP6vEWLuTxoO3VBg8oMHTBLNAHHoaOAhIhF2eHPAdgbCBZw2pkSDU4LkBsxIHOzeEAOxGQ4jKABw4KaEggGQbKAxcCNvkxQUDpF8EUHD1zIOdf5pI2PnApAjCKcgKEZCXyIuzNE6RfEzCCISdnm2Q2Ek313UAFHCd2Llgj1wA2QFpGLATw5EF5I9g2FmjY6QQO00ggQ+g/BG+IYDCAGqHGcGff0ZYENprYASwEwdJHJhEYgAEgIkCAGxA23vxKiExIAAKYFKCA+kNIWESEDiQjkondmVghy4WYUEGNPQW41HS3ajjji4GAQAh+QQICQAAACwAAAAAQABAAIUEAgSEhoTExsREQkTk5uSsqqxkYmQcHhzU1tT09vS8uryUlpQMDgxUUlR0dnTMzszs7uy0srQ0MjTc3txcWlyMjoxsamwkJiT8/vzEwsSkoqQUFhQMCgzMyszs6uysrqxkZmQkIiTc2tz8+vy8vrycmpwUEhRUVlR8fnzU0tT08vS0trTk4uRcXlyUkpT///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/sCXcEgsGo/IpHLJbDqf0Kh0Sq1ar9isdsvtereQlOrbHUUKAjI3VSgg1NpEezWCZwXtiR3raZMwe1YYCm0QgVYibQ+HVSMfBR8JjFQEbW9bBBUfdVsjAh2ASQkfFQROGg0nFgKhe54WJw0aThMgqQ0oenYTKLEnILpNchS+JYZfKiW+FAWSUR4Vvi0RnFpmLbcuHlYIDrcLXAu+DpdXgwYnLlzRBgqtWQkdztYdY5P3+Pn6+/yBEysAAwZMAScFiYMIEbI4AoEDgIcQI2Yg0+GAxYsYLxwj0jCiRwATvwjASPJACHtF/gkUuEgNAgUZFMicmWFhv5s4c+rceU9F/gSUWXxuzDKixAYAFLicALChRDUrGSRANMAFBEQJIamwWPqQQYWnWBJUYADxhE0oCVBEBGHqiwerEFHMY/LgAMQBHfY8GADxQEsmDh4eaHYIQwG7ABw4EdEgwFwjIwxQAKpEBQUQYIuoCNAgWJYKDyM4+fCwwj0PZDcMFSIg6xAVRxlsYwS3hJEHD/8OKfEQBCPcACQ8fqHg4QrIUgHoVoOBLwASR1YYP0Li4YDMXgo8PIFEOoDjR7gWsJMA8dki3sEbmSB4OJcAD1EkSZ9ELYAAcBoAOECZCH0k5QHQABwiOLAcetMl8YADIvTzH08Ifgfhehww4NmEQkAwG4YcBHaYUxAAIfkECAkAAAAsAAAAAEAAQACFBAIEhIKExMLEREJE5OLkpKKkJCIkZGZk1NLU9PL0FBIUlJaUtLK0dHZ0zMrMVFJU7Ors3Nrc/Pr8vLq8DAoMjI6MNDI0HB4cnJ6cfH58XFpchIaExMbE5ObkrKqsdHJ01NbU9Pb0FBYUnJqctLa0fHp8zM7MVFZU7O7s3N7c/P78vL68DA4MPDo8////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv5Al3BILBqPyKRyyWw6n9CodEqtWq/YrHbL7Xq3iVTo25WYOBEyl8DhENTakIPjUMGzkTbkjkW1EXxXKgh0CYFWEG1ph1QSbQ5jjFN+Dm9bKQ8bkVoSERF2SRITGHtNDQAAFx6gfGYBHx8MTiYXqAAtJnwdC7AfGZZNCRm2AAelXgkesAcfJJtPBCe2LBUSXBIrDb0YKFYCFrYHXAW9G4tXISMiABrjHw0crFkoJIZbISDPkvv8/f7/AOGkIEGwYEFAavK0WbiwwxEUFIhJBCCAjIkWFlpo3LjRHhGIE4lV/HJRY8aTGQd0MzLQoMFcCRnKdBiwps2bOHPuS8DAY+wWnis5qWPHRZqIEdawfAvH5YAtCyOpRJtWjUuICixsnQD2JMSwcDS9QHBqK4M+JbRs4eJz0dYFmExOpVp1SIWHWgAaOImQ6SwRCQc0+FSSQMOBpEgSbHiQgksFVLKaMEBVYR+ErCKCDuEQdQiKdSyOBSI7wogJVHCHjEAl7tBpABbOTkBFwogEcABSq1ExANWKIyRoHxGAqoU8Mh5QnUASHEDtI9IAeLgTAi9XIs2fs4x4we+WDagyJMme5OsGOA9SDcYuPHGtB3AiNNBdhHwSEw3O+bOvs377/kSkQAELjQFYBAqiGajggjUFAQAh+QQICQAAACwAAAAAQABAAIUEAgSEhoTExsREQkTk5uSkpqQkIiRkZmTU1tS0trT09vQUEhSUlpRUUlQ0MjR0dnTMzszs7uysrqzc3ty8vrxcWlwMCgyMjowsKixsbmz8/vwcHhycnpw8OjzMysxMSkzs6uysqqwkJiRsamzc2ty8urz8+vwUFhScmpxUVlQ0NjR8fnzU0tT08vS0srTk4uTEwsRcXlwMDgyUkpT///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG/kCacEgsGo/IpHLJbDqf0Kh0Sq1ar9isdsvteluQCNYUMXmJgpDLXNW8XqDzEBEKsayRt1hOMyUKEgpUJi8TBBp8Qi91AlQgLwQtiUIaFHVxUQqFmJM0ESEFFGxOGgRvgp1CEHUTUC16qUMKEiESo0smBBMvt6kkdQROmi97WhMNAahIJgIevUkaIBGIScwuxUsPAAAbIdSdJiQoFxcwThAb2wAdEJ0gIeQzKMFOLSvqAAecXS0l5BczBCh78iKFOhkXnlkx4YHBPxeSqsBwoO4AlwT/CrzIogDFCQAVLspjobBKhAQRtSggMTCWy5cwY8qcSXPIhAQ4c+a8w2cC/oSfQIHuGxLBAr6jAMydQZCiQdOnThvESEnUKFJ1Sr0wjQq16dQjN3XqbMfnBQQWZ9OiHVqzrdu3cOPKbAGRi4IS2MZ4BMllxAYMBb5ZmViRy4MNiD80qlLwYEK7KDAg3jBiY6Z7Fel5AXEYsYELVJegU8euE4sGk1XwZKKNm7dYJlyoQBzACQlkLYuYOFAhdJIWFQ6UFNJixohWWy5sc+FEwrYLMEHIAHAiLw0BWYe0+CiDbaID21AYgbCNLBEU2yzGIg/AQe4S2xIYMUERgPlEGgZso3AkQfwjFGzTgWByhLBNCkj4B4B8RxgEQAiTKJAOAJYZoSCDRkxg1Aa5PXERwDYrJHFhEpjVxkcD3Pg2xIhItJBOA4mQ8MB9Fv6XBAQPkNAWi3LVuGCPYFkgA3JAFhGBd0UmqaRbQQAAIfkECAkAAAAsAAAAAEAAQACFBAIEhIaExMbEREJEpKak5ObkZGJkJCIk1NbUVFJUtLa0lJaU9Pb0dHJ0FBIUjI6MzM7MTEpMrK6s7O7sNDI03N7cXFpcvL68fHp8DAoMbGpspKKk/P78HB4cPDo8jIqMzMrMREZErKqs7OrsZGZk3NrcVFZUvLq8nJqc/Pr8dHZ0FBYUlJKU1NLUTE5MtLK09PL05OLkXF5cxMLEfH58DA4MPD48////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABv7Am3BILBqPyKRyyWw6n9CodEqtWq/YrHbL7XoLhIp3/EiQGOOuJGESpbkpTcIyem8FpsTDruXQ8gh8WRUWCSocglgLeReJVzAyCQZojlUveRCVRxUJAZRIKQssn1kpCAIwTioAAB0iiIkpMQoiIplNEB2sADa3dhMXtQQvE08wNLsAJHVjDBC1IhItKVIxJrs1D9RbphLQqFYzFLsGXCDQCsVYDCgrABZcAtEVsFoTCqncBaSa/f7/AAMKtFNBgcGDB1vYiYGgoUOH6opMyJCsIoAZaSo00NCgo8eOKvIRmWgxGcYxGjtyXMkx5CaEMH2NKfCwJrOBOHPq3MlTE/6MFyKzMJgRFEuKdu+40PAQQUK9cONYldsSgIIHDzJkVrvGKts2LSkIhLDqAUMBKQyQ7SJxdsyED1cp2EDBT0muXb0EIdBw1YOLEqpYufrKh4MCFx4oLHBSolNdIikMWCiaBIYFEoSNMNigIgaXB6xeOJHAao+mETUArIg4RMBJIjDc1biZiAQrFEYgsNJ6AwUrEpV0A6BQ9wQrBUZSROU9hsMAVo2MKDh+5AIrG0/TiGBlAsl0AMiPcHVjh4EuAJ6PfA9vpILgx1RZ0UiyPonaAHYStKI8pD4S8wAkYEcJKjDXH3VJQKACYAL511MRDj44RAUZ1CCGhBLRhuGGHAPiFAQAOw=='; body.appendChild(preLoader); popup.append(body); _container.appendChild(popup); const start = new Date(); try { confirmed = await new Promise(async (r, rej) => { // 20s let resolved = false; setTimeout(() => resolved || rej(), 20000); try { const res = await fetch(`${this.homeURL}/IsEmailConfirmed?guid=${token}`); const data = await res.json(); if (data.status) { resolved = true; return r(data.status); } resolved = true; return rej(); } catch (ex) { resolved = true; return rej(); } }); } catch (ex) {} const end = new Date(); if ((end.getTime() - start.getTime()) <= 1000) await new Promise(r => setTimeout(r, (1000) - (end.getTime() - start.getTime()))); preLoader.remove(); const title = document.createElement('div'); title.id = 'ix-ixra-confirm-popup-title'; title.style.color = 'var(--ix-accent-color)'; title.style.fontFamily = 'robotoSlab'; title.style.width = '100%'; title.style.textAlign = 'center'; title.style.fontSize = '24px'; title.style.fontWeight = 'bold'; title.style.marginBottom = '20px'; body.appendChild(title); if (confirmed === 0) { title.innerText = 'Nie znaleziono rezerwacji o podanym identyfikatorze'; return; } if (confirmed === 1) { title.innerText = 'Upłynął czas na potwierdzenie adresu e-mail'; return; } if (confirmed) { const title = document.createElement('div'); title.id = 'ix-ixra-confirm-popup-title'; title.innerText = 'Adres e-mail został już potwierdzony'; title.style.color = 'var(--ix-accent-color)'; title.style.fontFamily = 'robotoSlab'; title.style.width = '100%'; title.style.textAlign = 'center'; title.style.fontSize = '24px'; title.style.fontWeight = 'bold'; title.style.marginBottom = '20px'; body.appendChild(title); return; } title.innerText = 'Weryfikacja adresu e-mail'; const desc = document.createElement('div'); desc.id = 'ix-ixra-confirm-popup-desc'; desc.innerHTML = 'W celu potwierdzenia adresu email
kliknij w przycisk poniżej'; desc.style.fontFamily = 'roboto'; desc.style.fontSize = '16px'; desc.style.width = '100%'; desc.style.textAlign = 'center'; desc.style.marginBottom = '20px'; const btn = document.createElement('div'); btn.id = 'ix-ixra-confirm-popup-btn'; btn.innerText = 'Potwierdzam'; btn.style.fontFamily = 'roboto'; btn.style.fontSize = '16px'; btn.style.fontWeight = 'bold'; btn.style.color = 'white'; btn.style.backgroundColor = 'var(--ix-accent-color)'; btn.style.width = '178px'; btn.style.height = '47px'; btn.style.display = 'flex'; btn.style.flexDirection = 'row'; btn.style.justifyContent = 'center'; btn.style.alignItems = 'center'; btn.style.marginLeft = 'calc(50% - 89px)'; btn.style.cursor = 'pointer'; const msg = document.createElement('div'); msg.id = 'ix-ixra-confirm-popup-msg'; msg.style.textAlign = 'center'; msg.style.width = '100%'; msg.style.marginTop = '20px'; msg.style.fontFamily = 'roboto'; msg.style.fontSize = '16px'; msg.style.color = 'var(--ix-accent-color)'; msg.style.fontFamily = 'robotoSlab'; msg.style.fontSize = '24px'; msg.style.fontWeight = 'bold'; msg.style.lineHeight = '32px'; body.appendChild(title); body.appendChild(desc); body.appendChild(btn); body.appendChild(msg); btn.onclick = async () => { let ok, msgText; try { ({ success: ok, message: msgText } = await this.confirmEmail(token)) } catch (ex) { log.e('loadConfirmEmail')(ex) ok = false msgText = 'Wykonanie akcji nie powiodło się
Proszę spróbować jeszcze raz'; } desc.remove(); title.remove(); btn.remove(); msg.innerHTML = msgText; } } async loadCancel(token) { const { _container } = this.DOM const bStyles = window.getComputedStyle(document.body); const popup = document.createElement('div'); popup.id = 'ix-ixra-confirm-popup-bg'; popup.style.background = bStyles.backgroundColor; popup.style.height = '100vh'; popup.style.width = '100vw'; popup.style.position = 'fixed'; popup.style.top = '0'; popup.style.left = '0'; popup.style.bottom = '0'; popup.style.right = '0'; popup.style.zIndex = '100000000000'; popup.style.display = 'flex'; popup.style.flexDirection = 'row'; popup.style.justifyContent = 'center'; popup.style.alignItems = 'center'; const body = document.createElement('div'); body.id = 'ix-ixra-confirm-popup-body'; body.style.position = 'relative'; body.style.width = '400px'; const title = document.createElement('div'); title.id = 'ix-ixra-confirm-popup-title'; title.style.color = 'var(--ix-accent-color)'; title.style.fontFamily = 'robotoSlab'; title.style.width = '100%'; title.style.textAlign = 'center'; title.style.fontSize = '24px'; title.style.fontWeight = 'bold'; title.style.marginBottom = '20px'; title.innerText = 'Anulowanie rezerwacji'; body.appendChild(title); const desc = document.createElement('div'); desc.id = 'ix-ixra-confirm-popup-desc'; desc.innerHTML = 'W celu anulownia rezerwacji
kliknij w przycisk poniżej'; desc.style.fontFamily = 'roboto'; desc.style.fontSize = '16px'; desc.style.width = '100%'; desc.style.textAlign = 'center'; desc.style.marginBottom = '20px'; const btn = document.createElement('div'); btn.id = 'ix-ixra-confirm-popup-btn'; btn.innerText = 'Anuluję'; btn.style.fontFamily = 'roboto'; btn.style.fontSize = '16px'; btn.style.fontWeight = 'bold'; btn.style.color = 'white'; btn.style.backgroundColor = 'var(--ix-accent-color)'; btn.style.width = '178px'; btn.style.height = '47px'; btn.style.display = 'flex'; btn.style.flexDirection = 'row'; btn.style.justifyContent = 'center'; btn.style.alignItems = 'center'; btn.style.marginLeft = 'calc(50% - 89px)'; btn.style.cursor = 'pointer'; const msg = document.createElement('div'); msg.id = 'ix-ixra-confirm-popup-msg'; msg.style.textAlign = 'center'; msg.style.width = '100%'; msg.style.marginTop = '20px'; msg.style.fontFamily = 'roboto'; msg.style.fontSize = '16px'; msg.style.color = 'var(--ix-accent-color)'; msg.style.fontFamily = 'robotoSlab'; msg.style.fontSize = '24px'; msg.style.fontWeight = 'bold'; msg.style.lineHeight = '32px'; body.appendChild(title); body.appendChild(desc); body.appendChild(btn); body.appendChild(msg); popup.append(body); _container.append(popup); btn.onclick = async () => { let Success, Message; let msgText = ''; try { ({ success: Success, message: Message } = await this.cancelReservation(token)); msgText = 'Rezerwacja została anulowana'; } catch (ex) { log.e('loadConfirmEmail')(ex) msgText = 'Nie dało się wykonać akcji' } desc.remove(); title.remove(); btn.remove(); msg.innerHTML = msgText; } } async acceptTerm(token) { const { homeURL } = this const res = await fetch(`${homeURL}/ConfirmReservationTerm?guid=${token}`, { headers: { 'Content-Type': 'application/json' } }) return await res.json() } async loadAcceptTerm(token) { const { _container } = this.DOM const bStyles = window.getComputedStyle(document.body); const popup = document.createElement('div'); popup.id = 'ix-ixra-confirm-popup-bg'; popup.style.background = bStyles.backgroundColor; popup.style.height = '100vh'; popup.style.width = '100vw'; popup.style.position = 'fixed'; popup.style.top = '0'; popup.style.left = '0'; popup.style.bottom = '0'; popup.style.right = '0'; popup.style.zIndex = '100000000000'; popup.style.display = 'flex'; popup.style.flexDirection = 'row'; popup.style.justifyContent = 'center'; popup.style.alignItems = 'center'; const body = document.createElement('div'); body.id = 'ix-ixra-confirm-popup-body'; body.style.position = 'relative'; body.style.width = '400px'; const title = document.createElement('div'); title.id = 'ix-ixra-confirm-popup-title'; title.style.color = 'var(--ix-accent-color)'; title.style.fontFamily = 'robotoSlab'; title.style.width = '100%'; title.style.textAlign = 'center'; title.style.fontSize = '24px'; title.style.fontWeight = 'bold'; title.style.marginBottom = '20px'; title.innerText = 'Potwierdzenie terminu'; body.appendChild(title); const desc = document.createElement('div'); desc.id = 'ix-ixra-confirm-popup-desc'; desc.innerHTML = 'W celu potwierdzenia terminu
kliknij w przycisk poniżej'; desc.style.fontFamily = 'roboto'; desc.style.fontSize = '16px'; desc.style.width = '100%'; desc.style.textAlign = 'center'; desc.style.marginBottom = '20px'; const btn = document.createElement('div'); btn.id = 'ix-ixra-confirm-popup-btn'; btn.innerText = 'Potwierdzam'; btn.style.fontFamily = 'roboto'; btn.style.fontSize = '16px'; btn.style.fontWeight = 'bold'; btn.style.color = 'white'; btn.style.backgroundColor = 'var(--ix-accent-color)'; btn.style.width = '178px'; btn.style.height = '47px'; btn.style.display = 'flex'; btn.style.flexDirection = 'row'; btn.style.justifyContent = 'center'; btn.style.alignItems = 'center'; btn.style.marginLeft = 'calc(50% - 89px)'; btn.style.cursor = 'pointer'; const msg = document.createElement('div'); msg.id = 'ix-ixra-confirm-popup-msg'; msg.style.textAlign = 'center'; msg.style.width = '100%'; msg.style.marginTop = '20px'; msg.style.fontFamily = 'roboto'; msg.style.fontSize = '16px'; msg.style.color = 'var(--ix-accent-color)'; msg.style.fontFamily = 'robotoSlab'; msg.style.fontSize = '24px'; msg.style.fontWeight = 'bold'; msg.style.lineHeight = '32px'; body.appendChild(title); body.appendChild(desc); body.appendChild(btn); body.appendChild(msg); popup.append(body); _container.append(popup); btn.onclick = async () => { let Success, Message, msgText; try { ({ success: Success, message: Message } = await this.acceptTerm(token)); msgText = 'Termin został potwierdzony'; } catch (ex) { log.e('loadConfirmEmail')(ex) msgText = 'Nie dało się wykonać akcji'; } desc.remove(); title.remove(); btn.remove(); msg.innerHTML = msgText; } } async loadChangeTerm(content) { setTimeout(() => new ClientCalendar(content), 100) } render() { const { settings, homeURL } = this const { _container } = this.DOM const _menu = document.createElement('div') _menu.id = 'ix-booking-external-menu' _menu.classList.add('main-text') const _errorMsg = document.createElement('div') _errorMsg.id = 'ix-booking-external-menu-error' _menu.append(_errorMsg) this.constructor.insertBefore(_container, _menu) const _buttonsContainerSupport = document.createElement('div') _buttonsContainerSupport.id = 'ix-ext-menu-support' const _buttonsContainer = document.createElement('div') _buttonsContainer.id = 'ix-ext-menu-btn-container' _buttonsContainerSupport.append(_buttonsContainer) settings.buttons.forEach(btn => { const button = new MenuButton(btn) button.render(_buttonsContainer, _container, homeURL) }) _menu.append(_buttonsContainerSupport) _menu.insertAdjacentHTML('beforeend', ThisStaticFieldIsResultOfNotHavingEnoughTimeToDoneBetterJobOnRenderThisInterfaceSorryForEnyoneWhoWantOrWhatIsWarsedMustEditThisCode) const [partOne, partTwo] = videoTags if (settings?.videoUrl) { _menu.insertAdjacentHTML('beforeend', `${partOne}${settings?.videoUrl}${partTwo}`) } else { document.getElementById('ix-video-label').style.display = 'none' } this.DOM.constructor.assign(this.DOM, { _menu, _errorMsg }) } } window.ixMenuLauncher = (...args) => Menu.run(...args); } catch(e){ console.error(e); }})()