Jmx0Oz9waHAKLy8g2KfZhNin2KrYtdin2YQg2KjZgtin2LnYr9ipINin2YTYqNmK2KfZhtin2KoKJGRiID0gbmV3IFNRTGl0ZTMoJ2VtcGxveWVlcy5kYicpOwpzZXNzaW9uX3N0YXJ0KCk7CgovLyDYpdmG2LTYp9ihINin2YTYrNiv2KfZiNmECiRkYi0mZ3Q7ZXhlYygmcXVvdDsKICAgIENSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIHVzZXJzICgKICAgICAgICBpZCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsCiAgICAgICAgdXNlcm5hbWUgVEVYVCBVTklRVUUsCiAgICAgICAgcGFzc3dvcmQgVEVYVCwKICAgICAgICByb2xlIFRFWFQsCiAgICAgICAgcGVybWlzc2lvbnMgVEVYVCwKICAgICAgICBhY3RpdmUgSU5URUdFUiBERUZBVUxUIDEKICAgICk7CgogICAgQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgZW1wbG95ZWVzICgKICAgICAgICBtaWxpdGFyeU51bWJlciBURVhUIFBSSU1BUlkgS0VZLAogICAgICAgIGZpcnN0TmFtZSBURVhULAogICAgICAgIGxhc3ROYW1lIFRFWFQsCiAgICAgICAgdW5pdCBURVhULAogICAgICAgIGRlcGFydG1lbnQgVEVYVCwKICAgICAgICBzZWN0aW9uIFRFWFQsCiAgICAgICAgc3BlY2lhbHR5IFRFWFQsCiAgICAgICAgc3VwZXJ2aXNvciBURVhULAogICAgICAgIHF1YWxpZmljYXRpb24gVEVYVCwKICAgICAgICBwaG9uZSBURVhULAogICAgICAgIG5vdGVzIFRFWFQKICAgICk7CgogICAgQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgZGFpbHlTdGF0dXMgKAogICAgICAgIGlkIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwKICAgICAgICBtaWxpdGFyeU51bWJlciBURVhULAogICAgICAgIGNoZWNrSW4gREFURSwKICAgICAgICBjaGVja091dCBEQVRFLAogICAgICAgIGV4aXRSZWFzb24gVEVYVCwKICAgICAgICBub3RlcyBURVhULAogICAgICAgIEZPUkVJR04gS0VZKG1pbGl0YXJ5TnVtYmVyKSBSRUZFUkVOQ0VTIGVtcGxveWVlcyhtaWxpdGFyeU51bWJlcikKICAgICk7CiZxdW90Oyk7CgovLyDYpdi22KfZgdipINmF2LPYqtiu2K/ZhSDYp9mB2KrYsdin2LbZigokZGItJmd0O2V4ZWMoJnF1b3Q7SU5TRVJUIE9SIElHTk9SRSBJTlRPIHVzZXJzICh1c2VybmFtZSwgcGFzc3dvcmQsIHJvbGUpIFZBTFVFUyAoJ2FkbWluJywgJ2FkbWluMTIzJywgJ2FkbWluJykmcXVvdDspOwoKLy8g2YXYudin2YTYrNipINi32YTYqNin2KogQUpBWAppZiAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT09ICdQT1NUJykgewogICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nKTsKICAgICRyZXNwb25zZSA9IFtdOwoKICAgIHRyeSB7CiAgICAgICAgc3dpdGNoICgkX1BPU1RbJ2FjdGlvbiddKSB7CiAgICAgICAgICAgIGNhc2UgJ2xvZ2luJzoKICAgICAgICAgICAgICAgICRzdG10ID0gJGRiLSZndDtwcmVwYXJlKCZxdW90O1NFTEVDVCAqIEZST00gdXNlcnMgV0hFUkUgdXNlcm5hbWUgPSA6dXNlcm5hbWUmcXVvdDspOwogICAgICAgICAgICAgICAgJHN0bXQtJmd0O2JpbmRWYWx1ZSgnOnVzZXJuYW1lJywgJF9QT1NUWyd1c2VybmFtZSddKTsKICAgICAgICAgICAgICAgICR1c2VyID0gJHN0bXQtJmd0O2V4ZWN1dGUoKS0mZ3Q7ZmV0Y2hBcnJheShTUUxJVEUzX0FTU09DKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKCR1c2VyICZhbXA7JmFtcDsgJF9QT1NUWydwYXNzd29yZCddID09PSAkdXNlclsncGFzc3dvcmQnXSkgewogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsndXNlciddID0gJHVzZXI7CiAgICAgICAgICAgICAgICAgICAgJHJlc3BvbnNlWydzdWNjZXNzJ10gPSB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkcmVzcG9uc2VbJ2Vycm9yJ10gPSAn2KjZitin2YbYp9iqINin2YTYr9iu2YjZhCDYutmK2LEg2LXYrdmK2K3YqSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ2dldEVtcGxveWVlcyc6CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJGRiLSZndDtxdWVyeSgmcXVvdDtTRUxFQ1QgKiBGUk9NIGVtcGxveWVlcyZxdW90Oyk7CiAgICAgICAgICAgICAgICAkZW1wbG95ZWVzID0gW107CiAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9ICRyZXN1bHQtJmd0O2ZldGNoQXJyYXkoU1FMSVRFM19BU1NPQykpIHsKICAgICAgICAgICAgICAgICAgICAkZW1wbG95ZWVzW10gPSAkcm93OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHJlc3BvbnNlWydkYXRhJ10gPSAkZW1wbG95ZWVzOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdzYXZlRW1wbG95ZWUnOgogICAgICAgICAgICAgICAgJHN0bXQgPSAkZGItJmd0O3ByZXBhcmUoJnF1b3Q7CiAgICAgICAgICAgICAgICAgICAgSU5TRVJUIE9SIFJFUExBQ0UgSU5UTyBlbXBsb3llZXMgVkFMVUVTICgKICAgICAgICAgICAgICAgICAgICAgICAgOm1pbGl0YXJ5TnVtYmVyLCA6Zmlyc3ROYW1lLCA6bGFzdE5hbWUsIDp1bml0LAogICAgICAgICAgICAgICAgICAgICAgICA6ZGVwYXJ0bWVudCwgOnNlY3Rpb24sIDpzcGVjaWFsdHksIDpzdXBlcnZpc29yLAogICAgICAgICAgICAgICAgICAgICAgICA6cXVhbGlmaWNhdGlvbiwgOnBob25lLCA6bm90ZXMKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAmcXVvdDspOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkX1BPU1QgYXMgJGtleSA9Jmd0OyAkdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGtleSAhPT0gJ2FjdGlvbicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0bXQtJmd0O2JpbmRWYWx1ZSgmcXVvdDs6JGtleSZxdW90OywgJHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICRzdG10LSZndDtleGVjdXRlKCk7CiAgICAgICAgICAgICAgICAkcmVzcG9uc2VbJ3N1Y2Nlc3MnXSA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ2RlbGV0ZUVtcGxveWVlJzoKICAgICAgICAgICAgICAgICRkYi0mZ3Q7ZXhlYygmcXVvdDtERUxFVEUgRlJPTSBlbXBsb3llZXMgV0hFUkUgbWlsaXRhcnlOdW1iZXIgPSAneyRfUE9TVFsnbWlsaXRhcnlOdW1iZXInXX0nJnF1b3Q7KTsKICAgICAgICAgICAgICAgICRyZXNwb25zZVsnc3VjY2VzcyddID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnZ2V0RGFpbHlTdGF0dXMnOgogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRkYi0mZ3Q7cXVlcnkoJnF1b3Q7CiAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGUuKiwgZC5jaGVja0luLCBkLmNoZWNrT3V0LCBkLmV4aXRSZWFzb24gCiAgICAgICAgICAgICAgICAgICAgRlJPTSBlbXBsb3llZXMgZQogICAgICAgICAgICAgICAgICAgIExFRlQgSk9JTiBkYWlseVN0YXR1cyBkIE9OIGUubWlsaXRhcnlOdW1iZXIgPSBkLm1pbGl0YXJ5TnVtYmVyCiAgICAgICAgICAgICAgICAmcXVvdDspOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkZGF0YSA9IFtdOwogICAgICAgICAgICAgICAgd2hpbGUgKCRyb3cgPSAkcmVzdWx0LSZndDtmZXRjaEFycmF5KFNRTElURTNfQVNTT0MpKSB7CiAgICAgICAgICAgICAgICAgICAgJGRhdGFbXSA9ICRyb3c7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcmVzcG9uc2VbJ2RhdGEnXSA9ICRkYXRhOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgJHJlc3BvbnNlWydlcnJvciddID0gJGUtJmd0O2dldE1lc3NhZ2UoKTsKICAgIH0KCiAgICBlY2hvIGpzb25fZW5jb2RlKCRyZXNwb25zZSk7CiAgICBleGl0Owp9CgovLyDYpdiw2Kcg2YTZhSDZitmD2YYg2YXYs9is2YQg2K/YrtmI2YQKaWYgKCFpc3NldCgkX1NFU1NJT05bJ3VzZXInXSkgJmFtcDsmYW1wOyBiYXNlbmFtZSgkX1NFUlZFUlsnUEhQX1NFTEYnXSkgIT09ICdsb2dpbi5waHAnKSB7CiAgICBoZWFkZXIoJnF1b3Q7TG9jYXRpb246IGxvZ2luLnBocCZxdW90Oyk7CiAgICBleGl0Owp9Cj8mZ3Q7CgombHQ7IURPQ1RZUEUgaHRtbCZndDsKJmx0O2h0bWwgbGFuZz0mcXVvdDthciZxdW90OyBkaXI9JnF1b3Q7cnRsJnF1b3Q7Jmd0OwombHQ7aGVhZCZndDsKICAgICZsdDttZXRhIGNoYXJzZXQ9JnF1b3Q7VVRGLTgmcXVvdDsmZ3Q7CiAgICAmbHQ7bWV0YSBuYW1lPSZxdW90O3ZpZXdwb3J0JnF1b3Q7IGNvbnRlbnQ9JnF1b3Q7d2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCZxdW90OyZndDsKICAgICZsdDt0aXRsZSZndDvZhti42KfZhSDYtNik2YjZhiDYp9mE2LnYp9mF2YTZitmGIC0g2KfZhNmC2YjYp9iqINin2YTYrtin2LXYqSZsdDsvdGl0bGUmZ3Q7CiAgICAmbHQ7bGluayBocmVmPSZxdW90O2h0dHBzOi8vYy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uci5uZXQvbnBtL2Jvb3RzdHJhcEA1LjEuMy9kaXN0L2Nzcy9ib290c3RyYXAucnRsLm1pbi5jc3MmcXVvdDsgcmVsPSZxdW90O3N0eWxlc2hlZXQmcXVvdDsmZ3Q7CiAgICAmbHQ7bGluayBocmVmPSZxdW90O2h0dHBzOi8vYy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uZS5jb20vYWpheC9saWJzL2ZvbnQtYXdlc29tZS82LjAuMC9jc3MvYWxsLm1pbi5jc3MmcXVvdDsgcmVsPSZxdW90O3N0eWxlc2hlZXQmcXVvdDsmZ3Q7CiAgICAmbHQ7c3R5bGUmZ3Q7CiAgICAgICAgLyog2YbZgdizINin2YTYo9mG2YXYp9i3INin2YTYo9i12YTZitipICovCiAgICAgICAgIDpyb290IHsKICAgICAgICAgICAgLS1wcmltYXJ5LWNvbG9yOiAjMkEzOTUwOwogICAgICAgICAgICAtLXNlY29uZGFyeS1jb2xvcjogIzNBNEI2MzsKICAgICAgICAgICAgLS1hY2NlbnQtY29sb3I6ICM0RTZCRkY7CiAgICAgICAgICAgIC0tc3VjY2Vzcy1jb2xvcjogIzAwQzg1MzsKICAgICAgICAgICAgLS13YXJuaW5nLWNvbG9yOiAjRkZDMTA3OwogICAgICAgICAgICAtLWRhbmdlci1jb2xvcjogI0QzMkYyRjsKICAgICAgICAgICAgLS1ncmFkaWVudC1iZzogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2Y4ZjlmYSAwJSwgI2VlZjJmNiAxMDAlKTsKICAgICAgICAgICAgLS1nbGFzcy1iZzogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk4KTsKICAgICAgICB9CgogICAgICAgIGJvZHkgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ncmFkaWVudC1iZyk7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnVGFqYXdhbCcsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7CiAgICAgICAgfQoKICAgICAgICAuaGVhZGVyLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjhyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHZhcigtLXByaW1hcnktY29sb3IpLCB2YXIoLS1hY2NlbnQtY29sb3IpKTsKICAgICAgICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAgICAgICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgdGV4dC1zaGFkb3c6IDJweCAycHggNHB4IHJnYmEoMCwwLDAsMC4xKTsKICAgICAgICB9CgogICAgICAgIC5nbGFzc21vcnBoaXNtIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtYmcpOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTJweCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgzMSwgMzgsIDEzNSwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcywgYm94LXNoYWRvdyAwLjNzOwogICAgICAgIH0KCiAgICAgICAgLnN0YXQtY2FyZCB7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtYmcpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDEuNXJlbTsKICAgICAgICB9CgogICAgICAgIC5zdGF0LWNhcmQ6aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTJweCAyNHB4IHJnYmEoMCwwLDAsMC4xKTsKICAgICAgICB9CgogICAgICAgIC5zY3JvbGxhYmxlLXRhYmxlIHsKICAgICAgICAgICAgbWF4LWhlaWdodDogNjB2aDsKICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICB9CgogICAgICAgIC5maXhlZC1zaWRlYmFyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ2xhc3MtYmcpOwogICAgICAgICAgICBib3gtc2hhZG93OiA0cHggMCAxNXB4IHJnYmEoMCwwLDAsMC4wNSk7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgaGVpZ2h0OiAxMDB2aDsKICAgICAgICAgICAgd2lkdGg6IDI4MHB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiByaWdodCAwLjNzOwogICAgICAgICAgICB6LWluZGV4OiAxMDAwOwogICAgICAgIH0KCiAgICAgICAgLm5hdi1saW5rIHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpOwogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKICAgICAgICAgICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07CiAgICAgICAgICAgIG1hcmdpbjogMC4yNXJlbSAwOwogICAgICAgIH0KCiAgICAgICAgLm5hdi1saW5rOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSg3OCwgMTA3LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNXB4KTsKICAgICAgICB9CgogICAgICAgIC5idG4tbW9kZXJuIHsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDI0cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1jb2xvcik7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICB9CgogICAgICAgIC5idG4tbW9kZXJuOmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgbGVmdDogMDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjEpOwogICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB0cmFuc2l0aW9uOiAwLjNzOwogICAgICAgIH0KCiAgICAgICAgLmJ0bi1tb2Rlcm46aG92ZXI6YmVmb3JlIHsKICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB9CgogICAgICAgIC50YWJsZS1tb2Rlcm4gewogICAgICAgICAgICAtLWJzLXRhYmxlLWJnOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsKICAgICAgICAgICAgYm9yZGVyLXNwYWNpbmc6IDAgOHB4OwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB9CgogICAgICAgIC50YWJsZS1tb2Rlcm4gdGhlYWQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgfQoKICAgICAgICAudGFibGUtbW9kZXJuIHRoIHsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICB9CgogICAgICAgIC50YWJsZS1tb2Rlcm4gdGQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nbGFzcy1iZyk7CiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgICAgIHBhZGRpbmc6IDEuMnJlbTsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNmOGY5ZmE7CiAgICAgICAgfQoKICAgICAgICAudGFibGUtbW9kZXJuIHRyIHsKICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3M7CiAgICAgICAgfQoKICAgICAgICAudGFibGUtbW9kZXJuIHRyOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7CiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtbW9kZXJuIHsKICAgICAgICAgICAgcGFkZGluZzogMC41cmVtIDFyZW07CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWFjY2VudC1jb2xvcik7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICB9CgogICAgICAgIC5jaGFydC1jb250YWluZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nbGFzcy1iZyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDEuNXJlbTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMTZweCByZ2JhKDAsMCwwLDAuMDUpOwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgICAgIC5oZWFkZXItdGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAycmVtOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAuc3RhdC1jYXJkIHsKICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLmZpeGVkLXNpZGViYXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyog2KPZhtmF2KfYtyDZhNmI2K3YqSDYp9mE2YXYr9mK2LEg2KfZhNis2K/Zitiv2KkgKi8KICAgICAgICAuYWRtaW4tcGFuZWwtc2VjdGlvbiB7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWdsYXNzLWJnKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICAgICAgcGFkZGluZzogMnJlbTsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMnJlbTsKICAgICAgICB9CgogICAgICAgIC5hZG1pbi1zdGF0cy1ncmlkIHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyNDBweCwgMWZyKSk7CiAgICAgICAgICAgIGdhcDogMS41cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtOwogICAgICAgIH0KCiAgICAgICAgLmFkbWluLWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nbGFzcy1iZyk7CiAgICAgICAgICAgIHBhZGRpbmc6IDEuNXJlbTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsMCwwLDAuMDUpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zczsKICAgICAgICB9CgogICAgICAgIC5hZG1pbi1jYXJkOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwogICAgICAgIH0KCiAgICAgICAgLnBlcm1pc3Npb24tYmFkZ2UgewogICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSg3OCwgMTA3LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1hY2NlbnQtY29sb3IpOwogICAgICAgIH0KCiAgICAgICAgLmFjdGl2aXR5LWxvZyB7CiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDUwMHB4OwogICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nbGFzcy1iZyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICAgICAgfQogICAgICAgIC8qIC4uLiDYrNmF2YrYuSDYp9mE2KPZhtmF2KfYtyDYp9mE2KPYtdmE2YrYqSAuLi4gKi8KICAgICZsdDsvc3R5bGUmZ3Q7CiZsdDsvaGVhZCZndDsKJmx0O2JvZHkmZ3Q7CgombHQ7P3BocCBpZiAoIWlzc2V0KCRfU0VTU0lPTlsndXNlciddKSk6ID8mZ3Q7CiZsdDshLS0g2YbZhdmI2LDYrCDYp9mE2K/YrtmI2YQgLS0mZ3Q7CiZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwgZmFkZSBzaG93IGQtYmxvY2smcXVvdDsgdGFiaW5kZXg9JnF1b3Q7LTEmcXVvdDsmZ3Q7CiAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWRpYWxvZyBtb2RhbC1kaWFsb2ctY2VudGVyZWQmcXVvdDsmZ3Q7CiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1jb250ZW50JnF1b3Q7Jmd0OwogICAgICAgICAgICAmbHQ7Zm9ybSBpZD0mcXVvdDtsb2dpbkZvcm0mcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWhlYWRlciBiZy1wcmltYXJ5IHRleHQtd2hpdGUmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2g1IGNsYXNzPSZxdW90O21vZGFsLXRpdGxlJnF1b3Q7Jmd0O9iq2LPYrNmK2YQg2KfZhNiv2K7ZiNmEJmx0Oy9oNSZndDsKICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1ib2R5JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bWItMyZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2xhYmVsJmd0O9in2LPZhSDYp9mE2YXYs9iq2K7Yr9mFJmx0Oy9sYWJlbCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lucHV0IHR5cGU9JnF1b3Q7dGV4dCZxdW90OyBuYW1lPSZxdW90O3VzZXJuYW1lJnF1b3Q7IGNsYXNzPSZxdW90O2Zvcm0tY29udHJvbCZxdW90OyByZXF1aXJlZCZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21iLTMmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtsYWJlbCZndDvZg9mE2YXYqSDYp9mE2YXYsdmI2LEmbHQ7L2xhYmVsJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDtwYXNzd29yZCZxdW90OyBuYW1lPSZxdW90O3Bhc3N3b3JkJnF1b3Q7IGNsYXNzPSZxdW90O2Zvcm0tY29udHJvbCZxdW90OyByZXF1aXJlZCZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1mb290ZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2J1dHRvbiB0eXBlPSZxdW90O3N1Ym1pdCZxdW90OyBjbGFzcz0mcXVvdDtidG4gYnRuLXByaW1hcnkmcXVvdDsmZ3Q72K/YrtmI2YQmbHQ7L2J1dHRvbiZndDsKICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAmbHQ7L2Zvcm0mZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7L2RpdiZndDsKJmx0Oy9kaXYmZ3Q7CgombHQ7P3BocCBlbHNlOiA/Jmd0OwombHQ7IS0tINin2YTZiNin2KzZh9ipINin2YTYsdim2YrYs9mK2KkgLS0mZ3Q7CiZsdDtuYXYgaWQ9JnF1b3Q7c2lkZWJhciZxdW90OyBjbGFzcz0mcXVvdDtkLWZsZXggZmxleC1jb2x1bW4gcC0zIGdsYXNzbW9ycGhpc20gZml4ZWQtc2lkZWJhciZxdW90OyZndDsKICAgICZsdDshLS0g2YbZgdizINmF2K3YqtmI2Ykg2KfZhNmC2KfYptmF2Kkg2KfZhNis2KfZhtio2YrYqSAtLSZndDsKCnN0eWxlPSZxdW90O3JpZ2h0OiAtMjgwcHg7JnF1b3Q7Jmd0OwoKICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7c2lkZWJhci1oZWFkZXImcXVvdDsmZ3Q7CiAgICAgICAgJmx0O2g0IGNsYXNzPSZxdW90O3RleHQtcHJpbWFyeSBtYi00JnF1b3Q7Jmd0O9in2YTZgtin2KbZhdipINin2YTYsdim2YrYs9mK2KkmbHQ7L2g0Jmd0OwogICAgJmx0Oy9kaXYmZ3Q7CiAgICAKICAgICZsdDt1bCBjbGFzcz0mcXVvdDtuYXYgZmxleC1jb2x1bW4gZmxleC1ncm93LTEmcXVvdDsmZ3Q7CiAgICAgICAgJmx0O2xpIGNsYXNzPSZxdW90O25hdi1pdGVtJnF1b3Q7Jmd0OwogICAgICAgICAgICAmbHQ7YnV0dG9uIGNsYXNzPSZxdW90O25hdi1saW5rIGJ0biBidG4tbGluayB0ZXh0LXN0YXJ0JnF1b3Q7IG9uY2xpY2s9JnF1b3Q7c2hvd0Rhc2hib2FyZCgpJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgJmx0O2kgY2xhc3M9JnF1b3Q7ZmFzIGZhLWhvbWUgbWUtMiZxdW90OyZndDsmbHQ7L2kmZ3Q72KfZhNmE2YjYrdipINin2YTYsdim2YrYs9mK2KkKICAgICAgICAgICAgJmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgJmx0Oy9saSZndDsKICAgICAgICAmbHQ7bGkgY2xhc3M9JnF1b3Q7bmF2LWl0ZW0mcXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDtidXR0b24gY2xhc3M9JnF1b3Q7bmF2LWxpbmsgYnRuIGJ0bi1saW5rIHRleHQtc3RhcnQmcXVvdDsgb25jbGljaz0mcXVvdDtzaG93RW1wbG95ZWVNYW5hZ2VtZW50KCkmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7aSBjbGFzcz0mcXVvdDtmYXMgZmEtdXNlcnMtY29nIG1lLTImcXVvdDsmZ3Q7Jmx0Oy9pJmd0O9il2K/Yp9ix2Kkg2KfZhNij2YHYsdin2K8KICAgICAgICAgICAgJmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgJmx0Oy9saSZndDsKICAgICAgICAmbHQ7bGkgY2xhc3M9JnF1b3Q7bmF2LWl0ZW0mcXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDtidXR0b24gY2xhc3M9JnF1b3Q7bmF2LWxpbmsgYnRuIGJ0bi1saW5rIHRleHQtc3RhcnQmcXVvdDsgb25jbGljaz0mcXVvdDtzaG93RGFpbHlTdGF0dXMoKSZxdW90OyZndDsKICAgICAgICAgICAgICAgICZsdDtpIGNsYXNzPSZxdW90O2ZhcyBmYS1jYWxlbmRhci1kYXkgbWUtMiZxdW90OyZndDsmbHQ7L2kmZ3Q72KfZhNmI2LbYudmK2Kkg2KfZhNmK2YjZhdmK2KkKICAgICAgICAgICAgJmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgJmx0Oy9saSZndDsKICAgICAgICAmbHQ7bGkgY2xhc3M9JnF1b3Q7bmF2LWl0ZW0mcXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDtidXR0b24gY2xhc3M9JnF1b3Q7bmF2LWxpbmsgYnRuIGJ0bi1saW5rIHRleHQtc3RhcnQmcXVvdDsgb25jbGljaz0mcXVvdDtzaG93UmVwb3J0cygpJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgJmx0O2kgY2xhc3M9JnF1b3Q7ZmFzIGZhLWNoYXJ0LXBpZSBtZS0yJnF1b3Q7Jmd0OyZsdDsvaSZndDvYp9mE2KrZgtin2LHZitixCiAgICAgICAgICAgICZsdDsvYnV0dG9uJmd0OwogICAgICAgICZsdDsvbGkmZ3Q7CiAgICAgICAgJmx0O2xpIGNsYXNzPSZxdW90O25hdi1pdGVtJnF1b3Q7Jmd0OwogICAgICAgICAgICAmbHQ7YnV0dG9uIGNsYXNzPSZxdW90O25hdi1saW5rIGJ0biBidG4tbGluayB0ZXh0LXN0YXJ0JnF1b3Q7IGRhdGEtYnMtdG9nZ2xlPSZxdW90O21vZGFsJnF1b3Q7IGRhdGEtYnMtdGFyZ2V0PSZxdW90OyNzZXR0aW5nc01vZGFsJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgJmx0O2kgY2xhc3M9JnF1b3Q7ZmFzIGZhLWNvZ3MgbWUtMiZxdW90OyZndDsmbHQ7L2kmZ3Q72KfZhNil2LnYr9in2K/Yp9iqCiAgICAgICAgICAgICZsdDsvYnV0dG9uJmd0OwogICAgICAgICZsdDsvbGkmZ3Q7CiAgICAmbHQ7L3VsJmd0OwoKICAgICZsdDshLS0g2KfZhNi52YbYp9i12LEg2KfZhNij2LXZhNmK2KkgLS0mZ3Q7CiAgICAmbHQ7bGkgY2xhc3M9JnF1b3Q7bmF2LWl0ZW0mcXVvdDsmZ3Q7CiAgICAgICAgJmx0O2J1dHRvbiBjbGFzcz0mcXVvdDtuYXYtbGluayBidG4gYnRuLWxpbmsgdGV4dC1zdGFydCZxdW90OyBvbmNsaWNrPSZxdW90O3Nob3dBZG1pblBhbmVsKCkmcXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDtpIGNsYXNzPSZxdW90O2ZhcyBmYS11c2VyLXNoaWVsZCBtZS0yJnF1b3Q7Jmd0OyZsdDsvaSZndDvZhNmI2K3YqSDYp9mE2YXYr9mK2LEKICAgICAgICAmbHQ7L2J1dHRvbiZndDsKICAgICZsdDsvbGkmZ3Q7CgombHQ7L25hdiZndDsKCgombHQ7IS0tINiy2LEg2YHYqtitINin2YTZgtin2KbZhdipIC0tJmd0OwombHQ7YnV0dG9uIGNsYXNzPSZxdW90O2J0biBidG4tbW9kZXJuIGZpeGVkLXRvcCBtLTMmcXVvdDsgb25jbGljaz0mcXVvdDt0b2dnbGVTaWRlYmFyKCkmcXVvdDsmZ3Q7CiAgICAmbHQ7aSBjbGFzcz0mcXVvdDtmYXMgZmEtYmFycyBtZS0yJnF1b3Q7Jmd0OyZsdDsvaSZndDsg2KfZhNmC2KfYptmF2KkKJmx0Oy9idXR0b24mZ3Q7CgoKCiZsdDshLS0g2YLYs9mFINmE2YjYrdipINin2YTZhdiv2YrYsSAtLSZndDsKJmx0O2RpdiBjbGFzcz0mcXVvdDthZG1pbi1wYW5lbC1zZWN0aW9uJnF1b3Q7IGlkPSZxdW90O2FkbWluUGFuZWwmcXVvdDsmZ3Q7CiAgICAmbHQ7YnV0dG9uIGNsYXNzPSZxdW90O2J0biBidG4tbW9kZXJuIG1iLTQmcXVvdDsgb25jbGljaz0mcXVvdDtyZXR1cm5Ub01haW4oKSZxdW90OyZndDsKICAgICAgICAmbHQ7aSBjbGFzcz0mcXVvdDtmYXMgZmEtYXJyb3ctcmlnaHQgbWUtMiZxdW90OyZndDsmbHQ7L2kmZ3Q72KfZhNi52YjYr9ipINmE2YTZiNit2Kkg2KfZhNix2KbZitiz2YrYqQogICAgJmx0Oy9idXR0b24mZ3Q7CgogICAgJmx0O2gyIGNsYXNzPSZxdW90O2hlYWRlci10aXRsZSBtYi00JnF1b3Q7Jmd0O9mE2YjYrdipINin2YTZhdiv2YrYsSZsdDsvaDImZ3Q7CgogICAgJmx0O2RpdiBjbGFzcz0mcXVvdDthZG1pbi1zdGF0cy1ncmlkJnF1b3Q7Jmd0OwogICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7YWRtaW4tY2FyZCZxdW90OyZndDsKICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtmbGV4LWdyb3ctMSZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7aDUgY2xhc3M9JnF1b3Q7bWItMiZxdW90OyZndDvYp9mE2YXYs9iq2K7Yr9mF2YjZhiDYp9mE2YbYtNi32YjZhiZsdDsvaDUmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2gyIGNsYXNzPSZxdW90O21iLTAgdGV4dC1wcmltYXJ5JnF1b3Q7IGlkPSZxdW90O2FjdGl2ZVVzZXJzQ291bnQmcXVvdDsmZ3Q7MCZsdDsvaDImZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICZsdDtpIGNsYXNzPSZxdW90O2ZhcyBmYS11c2VyLWNoZWNrIGZzLTEgdGV4dC1wcmltYXJ5JnF1b3Q7Jmd0OyZsdDsvaSZndDsKICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CgogICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7YWRtaW4tY2FyZCZxdW90OyZndDsKICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtmbGV4LWdyb3ctMSZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7aDUgY2xhc3M9JnF1b3Q7bWItMiZxdW90OyZndDvYp9mE2LnZhdmE2YrYp9iqINin2YTZitmI2YXZitipJmx0Oy9oNSZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7aDIgY2xhc3M9JnF1b3Q7bWItMCB0ZXh0LXN1Y2Nlc3MmcXVvdDsgaWQ9JnF1b3Q7ZGFpbHlBY3Rpdml0aWVzJnF1b3Q7Jmd0OzAmbHQ7L2gyJmd0OwogICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7aSBjbGFzcz0mcXVvdDtmYXMgZmEtdGFza3MgZnMtMSB0ZXh0LXN1Y2Nlc3MmcXVvdDsmZ3Q7Jmx0Oy9pJmd0OwogICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAmbHQ7L2RpdiZndDsKCiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDthZG1pbi1jYXJkJnF1b3Q7Jmd0OwogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2QtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2ZsZXgtZ3Jvdy0xJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICZsdDtoNSBjbGFzcz0mcXVvdDttYi0yJnF1b3Q7Jmd0O9in2YTYpdmG2LDYp9ix2KfYqiZsdDsvaDUmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2gyIGNsYXNzPSZxdW90O21iLTAgdGV4dC1kYW5nZXImcXVvdDsgaWQ9JnF1b3Q7YWRtaW5BbGVydHMmcXVvdDsmZ3Q7MCZsdDsvaDImZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICZsdDtpIGNsYXNzPSZxdW90O2ZhcyBmYS1iZWxsIGZzLTEgdGV4dC1kYW5nZXImcXVvdDsmZ3Q7Jmx0Oy9pJmd0OwogICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAmbHQ7L2RpdiZndDsKICAgICZsdDsvZGl2Jmd0OwoKICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7cm93IGctNCZxdW90OyZndDsKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2NvbC1tZC04JnF1b3Q7Jmd0OwogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2FkbWluLWNhcmQmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7aDUgY2xhc3M9JnF1b3Q7bWItMyZxdW90OyZndDvZhti02KfYtyDYp9mE2YbYuNin2YUmbHQ7L2g1Jmd0OwogICAgICAgICAgICAgICAgJmx0O2NhbnZhcyBpZD0mcXVvdDthZG1pbkFjdGl2aXR5Q2hhcnQmcXVvdDsmZ3Q7Jmx0Oy9jYW52YXMmZ3Q7CiAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICZsdDsvZGl2Jmd0OwoKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2NvbC1tZC00JnF1b3Q7Jmd0OwogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2FkbWluLWNhcmQmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7aDUgY2xhc3M9JnF1b3Q7bWItMyZxdW90OyZndDvYp9mE2KXYrdi12KfYptmK2KfYqiDYp9mE2LPYsdmK2LnYqSZsdDsvaDUmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7dWwgY2xhc3M9JnF1b3Q7bGlzdC1ncm91cCZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7bGkgY2xhc3M9JnF1b3Q7bGlzdC1ncm91cC1pdGVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgINin2YTZhdiz2KrYrtiv2YXZiNmGINin2YTZhdi12LHYrSDZhNmH2YUKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7YmFkZ2UtbW9kZXJuJnF1b3Q7IGlkPSZxdW90O2F1dGhvcml6ZWRVc2VycyZxdW90OyZndDswJmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAgICAgICAgICZsdDsvbGkmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2xpIGNsYXNzPSZxdW90O2xpc3QtZ3JvdXAtaXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICDYp9mE2KrYudiv2YrZhNin2Kog2KfZhNij2K7Zitix2KkKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7YmFkZ2UtbW9kZXJuIGJnLXdhcm5pbmcmcXVvdDsgaWQ9JnF1b3Q7cmVjZW50Q2hhbmdlcyZxdW90OyZndDswJmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAgICAgICAgICZsdDsvbGkmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7L3VsJmd0OwogICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAmbHQ7L2RpdiZndDsKICAgICZsdDsvZGl2Jmd0OwoKICAgICZsdDshLS0g2YLYs9mFINil2K/Yp9ix2Kkg2KfZhNmF2LPYqtiu2K/ZhdmK2YYgLS0mZ3Q7CiAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O210LTUmcXVvdDsgaWQ9JnF1b3Q7YWRtaW5Vc2Vyc1NlY3Rpb24mcXVvdDsmZ3Q7CiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTQmcXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDtoNCZndDvYpdiv2KfYsdipINin2YTZhdiz2KrYrtiv2YXZitmGJmx0Oy9oNCZndDsKICAgICAgICAgICAgJmx0O2J1dHRvbiBjbGFzcz0mcXVvdDtidG4gYnRuLW1vZGVybiZxdW90OyBvbmNsaWNrPSZxdW90O3Nob3dVc2VyRm9ybSgpJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgJmx0O2kgY2xhc3M9JnF1b3Q7ZmFzIGZhLXVzZXItcGx1cyBtZS0yJnF1b3Q7Jmd0OyZsdDsvaSZndDvZhdiz2KrYrtiv2YUg2KzYr9mK2K8KICAgICAgICAgICAgJmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CgogICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7c2Nyb2xsYWJsZS10YWJsZSZxdW90OyZndDsKICAgICAgICAgICAgJmx0O3RhYmxlIGNsYXNzPSZxdW90O3RhYmxlIHRhYmxlLW1vZGVybiZxdW90OyZndDsKICAgICAgICAgICAgICAgICZsdDt0aGVhZCZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7dHImZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0aCZndDvYp9iz2YUg2KfZhNmF2LPYqtiu2K/ZhSZsdDsvdGgmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0aCZndDvYp9mE2K/ZiNixJmx0Oy90aCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3RoJmd0O9in2YTYtdmE2KfYrdmK2KfYqiZsdDsvdGgmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0aCZndDvYp9mE2K3Yp9mE2KkmbHQ7L3RoJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dGgmZ3Q72KfZhNil2KzYsdin2KHYp9iqJmx0Oy90aCZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7L3RyJmd0OwogICAgICAgICAgICAgICAgJmx0Oy90aGVhZCZndDsKICAgICAgICAgICAgICAgICZsdDt0Ym9keSBpZD0mcXVvdDthZG1pblVzZXJzVGFibGUmcXVvdDsmZ3Q7Jmx0Oy90Ym9keSZndDsKICAgICAgICAgICAgJmx0Oy90YWJsZSZndDsKICAgICAgICAmbHQ7L2RpdiZndDsKICAgICZsdDsvZGl2Jmd0OwombHQ7L2RpdiZndDsKCgoKCgoKCgombHQ7IS0tINmG2KfZgdiw2Kkg2KXYttin2YHYqSDZhdiz2KrYrtiv2YUg2KzYr9mK2K8gLS0mZ3Q7CiZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwgZmFkZSZxdW90OyBpZD0mcXVvdDt1c2VyRm9ybU1vZGFsJnF1b3Q7Jmd0OwogICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1kaWFsb2cmcXVvdDsmZ3Q7CiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1jb250ZW50IGdsYXNzbW9ycGhpc20mcXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwtaGVhZGVyIGJnLXN1Y2Nlc3MgdGV4dC13aGl0ZSZxdW90OyZndDsKICAgICAgICAgICAgICAgICZsdDtoNSBjbGFzcz0mcXVvdDttb2RhbC10aXRsZSZxdW90OyZndDvYpdi22KfZgdipINmF2LPYqtiu2K/ZhSDYrNiv2YrYryZsdDsvaDUmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O2J0bi1jbG9zZSZxdW90OyBkYXRhLWJzLWRpc21pc3M9JnF1b3Q7bW9kYWwmcXVvdDsmZ3Q7Jmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWJvZHkmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7Zm9ybSBpZD0mcXVvdDt1c2VyRm9ybSZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21iLTMmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtsYWJlbCZndDvYp9iz2YUg2KfZhNmF2LPYqtiu2K/ZhSZsdDsvbGFiZWwmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtpbnB1dCB0eXBlPSZxdW90O3RleHQmcXVvdDsgY2xhc3M9JnF1b3Q7Zm9ybS1jb250cm9sJnF1b3Q7IGlkPSZxdW90O25ld1VzZXJuYW1lJnF1b3Q7IHJlcXVpcmVkJmd0OwogICAgICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bWItMyZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2xhYmVsJmd0O9mD2YTZhdipINin2YTZhdix2YjYsSZsdDsvbGFiZWwmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtpbnB1dCB0eXBlPSZxdW90O3Bhc3N3b3JkJnF1b3Q7IGNsYXNzPSZxdW90O2Zvcm0tY29udHJvbCZxdW90OyBpZD0mcXVvdDtuZXdQYXNzd29yZCZxdW90OyByZXF1aXJlZCZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21iLTMmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtsYWJlbCZndDvYp9mE2K/ZiNixJmx0Oy9sYWJlbCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3NlbGVjdCBjbGFzcz0mcXVvdDtmb3JtLXNlbGVjdCZxdW90OyBpZD0mcXVvdDt1c2VyUm9sZSZxdW90OyByZXF1aXJlZCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtvcHRpb24gdmFsdWU9JnF1b3Q7YWRtaW4mcXVvdDsmZ3Q72YXYr9mK2LEmbHQ7L29wdGlvbiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtvcHRpb24gdmFsdWU9JnF1b3Q7c3VwZXJ2aXNvciZxdW90OyZndDvZhdi02LHZgSZsdDsvb3B0aW9uJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O29wdGlvbiB2YWx1ZT0mcXVvdDt1c2VyJnF1b3Q7Jmd0O9mF2LPYqtiu2K/ZhSDYudin2K/ZiiZsdDsvb3B0aW9uJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L3NlbGVjdCZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21iLTMmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtsYWJlbCZndDvYp9mE2LXZhNin2K3Zitin2KombHQ7L2xhYmVsJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2Zvcm0tY2hlY2smcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aW5wdXQgY2xhc3M9JnF1b3Q7Zm9ybS1jaGVjay1pbnB1dCZxdW90OyB0eXBlPSZxdW90O2NoZWNrYm94JnF1b3Q7IGlkPSZxdW90O3Blcm0xJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2xhYmVsIGNsYXNzPSZxdW90O2Zvcm0tY2hlY2stbGFiZWwmcXVvdDsgZm9yPSZxdW90O3Blcm0xJnF1b3Q7Jmd0O9il2K/Yp9ix2Kkg2KfZhNmF2LPYqtiu2K/ZhdmK2YYmbHQ7L2xhYmVsJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtmb3JtLWNoZWNrJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lucHV0IGNsYXNzPSZxdW90O2Zvcm0tY2hlY2staW5wdXQmcXVvdDsgdHlwZT0mcXVvdDtjaGVja2JveCZxdW90OyBpZD0mcXVvdDtwZXJtMiZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtsYWJlbCBjbGFzcz0mcXVvdDtmb3JtLWNoZWNrLWxhYmVsJnF1b3Q7IGZvcj0mcXVvdDtwZXJtMiZxdW90OyZndDvYqti52K/ZitmEINin2YTYpdi52K/Yp9iv2KfYqiZsdDsvbGFiZWwmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgJmx0Oy9mb3JtJmd0OwogICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1mb290ZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O2J0biBidG4tc2Vjb25kYXJ5JnF1b3Q7IGRhdGEtYnMtZGlzbWlzcz0mcXVvdDttb2RhbCZxdW90OyZndDvYsdis2YjYuSZsdDsvYnV0dG9uJmd0OwogICAgICAgICAgICAgICAgJmx0O2J1dHRvbiB0eXBlPSZxdW90O2J1dHRvbiZxdW90OyBjbGFzcz0mcXVvdDtidG4gYnRuLXByaW1hcnkmcXVvdDsgb25jbGljaz0mcXVvdDtzYXZlVXNlcigpJnF1b3Q7Jmd0O9it2YHYuCZsdDsvYnV0dG9uJmd0OwogICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAmbHQ7L2RpdiZndDsKICAgICZsdDsvZGl2Jmd0OwombHQ7L2RpdiZndDsKCgoKCgoKCgoKCiZsdDshLS0g2KjYp9mC2Yog2LnZhtin2LXYsSDYp9mE2YjYp9is2YfYqSAtLSZndDsKJmx0O2RpdiBjbGFzcz0mcXVvdDttYWluLWNvbnRlbnQgcC00JnF1b3Q7Jmd0OwogICAgJmx0O2gxIGNsYXNzPSZxdW90O2hlYWRlci10aXRsZSB0ZXh0LWNlbnRlciBtYi01JnF1b3Q7Jmd0O9mF2LHYrdio2KfZiyDYqNmDINmB2Yog2YbYuNin2YUg2LTYpNmI2YYg2KfZhNi52KfZhdmE2YrZhiZsdDsvaDEmZ3Q7CiAgICAKICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtyb3cgZy00JnF1b3Q7Jmd0OwogICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Y29sLW1kLTYmcXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7c3RhdC1jYXJkJnF1b3Q7IG9uY2xpY2s9JnF1b3Q7c2hvd1ZhY2F0aW9uQWxlcnRzKCkmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2QtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2g0IGNsYXNzPSZxdW90O3RleHQtZGFuZ2VyJnF1b3Q7Jmd0OyZsdDtpIGNsYXNzPSZxdW90O2ZhcyBmYS1leGNsYW1hdGlvbi10cmlhbmdsZSBtZS0yJnF1b3Q7Jmd0OyZsdDsvaSZndDvYpdmG2LDYp9ix2KfYqiDYp9mE2KXYrNin2LLYp9iqJmx0Oy9oNCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3AgY2xhc3M9JnF1b3Q7dGV4dC1tdXRlZCBtYi0wJnF1b3Q7Jmd0O9in2YTYo9mB2LHYp9ivINin2YTZhdiq2KzYp9mI2LLZitmGINin2YTZhdiv2Kkg2KfZhNmF2LPZhdmI2K3YqSZsdDsvcCZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtiYWRnZS1tb2Rlcm4mcXVvdDsgaWQ9JnF1b3Q7dmFjYXRpb25BbGVydHNDb3VudCZxdW90OyZndDswJmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICZsdDsvZGl2Jmd0OwoKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2NvbC1tZC02JnF1b3Q7Jmd0OwogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O3N0YXQtY2FyZCZxdW90OyBvbmNsaWNrPSZxdW90O3Nob3cyNERheXNBbGVydCgpJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICZsdDtkaXYmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtoNCBjbGFzcz0mcXVvdDt0ZXh0LXdhcm5pbmcmcXVvdDsmZ3Q7Jmx0O2kgY2xhc3M9JnF1b3Q7ZmFzIGZhLWJlbGwgbWUtMiZxdW90OyZndDsmbHQ7L2kmZ3Q72KXZg9mF2KfZhCDYp9mE2YXYr9ipJmx0Oy9oNCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3AgY2xhc3M9JnF1b3Q7dGV4dC1tdXRlZCBtYi0wJnF1b3Q7Jmd0O9in2YTYo9mB2LHYp9ivINin2YTZhdmD2KrZhdmE2YrZhiAyNCDZitmI2YUg2K/ZiNin2YUmbHQ7L3AmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7YmFkZ2UtbW9kZXJuIGJnLXdhcm5pbmcmcXVvdDsgaWQ9JnF1b3Q7ZGF5czI0QWxlcnRDb3VudCZxdW90OyZndDswJmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICZsdDsvZGl2Jmd0OwogICAgJmx0Oy9kaXYmZ3Q7CgogICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtkYXNoYm9hcmQtc3RhdHMgbXQtNCZxdW90OyZndDsKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O3JvdyBnLTQmcXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Y29sLW1kLTQmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O3N0YXQtY2FyZCB0ZXh0LWNlbnRlciZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7aDMgY2xhc3M9JnF1b3Q7dGV4dC1wcmltYXJ5JnF1b3Q7IGlkPSZxdW90O3RvdGFsRW1wbG95ZWVzJnF1b3Q7Jmd0OzAmbHQ7L2gzJmd0OwogICAgICAgICAgICAgICAgICAgICZsdDtwIGNsYXNzPSZxdW90O3RleHQtbXV0ZWQgbWItMCZxdW90OyZndDvYpdis2YXYp9mE2Yog2KfZhNij2YHYsdin2K8mbHQ7L3AmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Y29sLW1kLTQmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O3N0YXQtY2FyZCB0ZXh0LWNlbnRlciZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7aDMgY2xhc3M9JnF1b3Q7dGV4dC1zdWNjZXNzJnF1b3Q7IGlkPSZxdW90O3ByZXNlbnRFbXBsb3llZXMmcXVvdDsmZ3Q7MCZsdDsvaDMmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O3AgY2xhc3M9JnF1b3Q7dGV4dC1tdXRlZCBtYi0wJnF1b3Q7Jmd0O9it2KfYttix2YrZhiDYp9mE2KLZhiZsdDsvcCZndDsKICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtjb2wtbWQtNCZxdW90OyZndDsKCQkJCSAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O3N0YXQtY2FyZCB0ZXh0LWNlbnRlciZxdW90OyBvbmNsaWNrPSZxdW90O3Nob3dNaXNzaW9ucygpJnF1b3Q7Jmd0OyAmbHQ7IS0tINij2LbZgSDZh9mG2KcgLS0mZ3Q7CgkJCQkJCSZsdDtoMyBjbGFzcz0mcXVvdDt0ZXh0LWluZm8mcXVvdDsgaWQ9JnF1b3Q7bWlzc2lvbnNDb3VudCZxdW90OyZndDswJmx0Oy9oMyZndDsKCQkJCQkJJmx0O3AgY2xhc3M9JnF1b3Q7dGV4dC1tdXRlZCBtYi0wJnF1b3Q7Jmd0O9mB2Yog2YXZh9mF2KfYqiZsdDsvcCZndDsKCQkJCQkmbHQ7L2RpdiZndDsKICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7L2RpdiZndDsKJmx0Oy9kaXYmZ3Q7CgombHQ7IS0tINmI2KfYrNmH2Kkg2KXYr9in2LHYqSDYp9mE2KPZgdix2KfYryAtLSZndDsKJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbCBmYWRlJnF1b3Q7IGlkPSZxdW90O2VtcGxveWVlTWFuYWdlbWVudE1vZGFsJnF1b3Q7IHRhYmluZGV4PSZxdW90Oy0xJnF1b3Q7Jmd0OwogICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1kaWFsb2cgbW9kYWwteGwmcXVvdDsmZ3Q7CiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1jb250ZW50IGdsYXNzbW9ycGhpc20mcXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwtaGVhZGVyIGJnLXByaW1hcnkgdGV4dC13aGl0ZSZxdW90OyZndDsKICAgICAgICAgICAgICAgICZsdDtoNSBjbGFzcz0mcXVvdDttb2RhbC10aXRsZSZxdW90OyZndDsmbHQ7aSBjbGFzcz0mcXVvdDtmYXMgZmEtdXNlcnMtY29nIG1lLTImcXVvdDsmZ3Q7Jmx0Oy9pJmd0O9il2K/Yp9ix2Kkg2KfZhNij2YHYsdin2K8mbHQ7L2g1Jmd0OwogICAgICAgICAgICAgICAgJmx0O2J1dHRvbiB0eXBlPSZxdW90O2J1dHRvbiZxdW90OyBjbGFzcz0mcXVvdDtidG4tY2xvc2UgYnRuLWNsb3NlLXdoaXRlJnF1b3Q7IGRhdGEtYnMtZGlzbWlzcz0mcXVvdDttb2RhbCZxdW90OyZndDsmbHQ7L2J1dHRvbiZndDsKICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwtYm9keSZxdW90OyZndDsKICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7cm93IG1iLTMmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtjb2wtbWQtNCZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2J1dHRvbiBjbGFzcz0mcXVvdDtidG4gYnRuLXN1Y2Nlc3MgYnRuLW1vZGVybiZxdW90OyBvbmNsaWNrPSZxdW90O29wZW5FbXBsb3llZUZvcm0oKSZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtpIGNsYXNzPSZxdW90O2ZhcyBmYS11c2VyLXBsdXMgbWUtMiZxdW90OyZndDsmbHQ7L2kmZ3Q72KXYttin2YHYqSDYrNiv2YrYrwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2J1dHRvbiZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2NvbC1tZC04JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDt0ZXh0JnF1b3Q7IGNsYXNzPSZxdW90O2Zvcm0tY29udHJvbCZxdW90OyBpZD0mcXVvdDtlbXBsb3llZVNlYXJjaCZxdW90OyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSZxdW90O9in2KjYrdirINio2KfZhNin2LPZhSDYo9mIINin2YTYsdmC2YUg2KfZhNi52LPZg9ix2YouLi4mcXVvdDsgb25rZXl1cD0mcXVvdDtzZWFyY2hFbXBsb3llZXMoKSZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwoKICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7c2Nyb2xsYWJsZS10YWJsZSZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7dGFibGUgY2xhc3M9JnF1b3Q7dGFibGUgdGFibGUtbW9kZXJuJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dGhlYWQmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dHImZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3RoJmd0O9in2YTYsdmC2YUg2KfZhNi52LPZg9ix2YombHQ7L3RoJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0aCZndDvYp9mE2KfYs9mFJmx0Oy90aCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dGgmZ3Q72KfZhNmD2YbZitipJmx0Oy90aCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dGgmZ3Q72KfZhNmI2K3Yr9ipJmx0Oy90aCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dGgmZ3Q72KfZhNmC2LPZhSZsdDsvdGgmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3RoJmd0O9in2YTYtNi52KjYqSZsdDsvdGgmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3RoJmd0O9in2YTYpdis2LHYp9ih2KfYqiZsdDsvdGgmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L3RyJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L3RoZWFkJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dGJvZHkgaWQ9JnF1b3Q7ZW1wbG95ZWVzVGFibGUmcXVvdDsmZ3Q7Jmx0Oy90Ym9keSZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7L3RhYmxlJmd0OwogICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWZvb3RlciZxdW90OyZndDsKICAgICAgICAgICAgICAgICZsdDtidXR0b24gdHlwZT0mcXVvdDtidXR0b24mcXVvdDsgY2xhc3M9JnF1b3Q7YnRuIGJ0bi1zZWNvbmRhcnkgYnRuLW1vZGVybiZxdW90OyBkYXRhLWJzLWRpc21pc3M9JnF1b3Q7bW9kYWwmcXVvdDsmZ3Q72LHYrNmI2LkmbHQ7L2J1dHRvbiZndDsKICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7L2RpdiZndDsKJmx0Oy9kaXYmZ3Q7CgombHQ7IS0tINio2KfZgtmKINin2YTZhtmI2KfZgdiwINin2YTZhdmG2KjYq9mC2Kkg2YXYuSDYqti32KjZitmCINin2YTYqtmG2LPZitmC2KfYqiDYp9mE2K3Yr9mK2KvYqSAtLSZndDsKCgombHQ7IS0tINmG2YXZiNiw2Kwg2KXYttin2YHYqS/Yqti52K/ZitmEINin2YTZgdix2K8gLS0mZ3Q7CiZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwgZmFkZSZxdW90OyBpZD0mcXVvdDtlbXBsb3llZUZvcm1Nb2RhbCZxdW90OyB0YWJpbmRleD0mcXVvdDstMSZxdW90OyZndDsKICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwtZGlhbG9nIG1vZGFsLWxnJnF1b3Q7Jmd0OwogICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwtY29udGVudCBnbGFzc21vcnBoaXNtJnF1b3Q7Jmd0OwogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWhlYWRlciBiZy1zdWNjZXNzIHRleHQtd2hpdGUmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7aDUgY2xhc3M9JnF1b3Q7bW9kYWwtdGl0bGUmcXVvdDsgaWQ9JnF1b3Q7Zm9ybVRpdGxlJnF1b3Q7Jmd0O9il2LbYp9mB2Kkg2YHYsdivINis2K/ZitivJmx0Oy9oNSZndDsKICAgICAgICAgICAgICAgICZsdDtidXR0b24gdHlwZT0mcXVvdDtidXR0b24mcXVvdDsgY2xhc3M9JnF1b3Q7YnRuLWNsb3NlJnF1b3Q7IGRhdGEtYnMtZGlzbWlzcz0mcXVvdDttb2RhbCZxdW90OyZndDsmbHQ7L2J1dHRvbiZndDsKICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwtYm9keSZxdW90OyZndDsKICAgICAgICAgICAgICAgICZsdDtmb3JtIGlkPSZxdW90O2VtcGxveWVlRm9ybSZxdW90OyBvbnN1Ym1pdD0mcXVvdDtyZXR1cm4gaGFuZGxlRW1wbG95ZWVTdWJtaXQoZXZlbnQpJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICZsdDtpbnB1dCB0eXBlPSZxdW90O2hpZGRlbiZxdW90OyBpZD0mcXVvdDtlZGl0SWQmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtyb3cgZy0zJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2NvbC1tZC02JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2xhYmVsIGNsYXNzPSZxdW90O3JlcXVpcmVkJnF1b3Q7Jmd0O9in2YTYsdmC2YUg2KfZhNi52LPZg9ix2YombHQ7L2xhYmVsJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lucHV0IHR5cGU9JnF1b3Q7dGV4dCZxdW90OyBjbGFzcz0mcXVvdDtmb3JtLWNvbnRyb2wmcXVvdDsgaWQ9JnF1b3Q7bWlsaXRhcnlOdW1iZXImcXVvdDsgcmVxdWlyZWQmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2NvbC1tZC02JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2xhYmVsIGNsYXNzPSZxdW90O3JlcXVpcmVkJnF1b3Q7Jmd0O9in2YTYp9iz2YUmbHQ7L2xhYmVsJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lucHV0IHR5cGU9JnF1b3Q7dGV4dCZxdW90OyBjbGFzcz0mcXVvdDtmb3JtLWNvbnRyb2wmcXVvdDsgaWQ9JnF1b3Q7Zmlyc3ROYW1lJnF1b3Q7IHJlcXVpcmVkJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtjb2wtbWQtNiZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtsYWJlbCBjbGFzcz0mcXVvdDtyZXF1aXJlZCZxdW90OyZndDvYp9mE2YPZhtmK2KkmbHQ7L2xhYmVsJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lucHV0IHR5cGU9JnF1b3Q7dGV4dCZxdW90OyBjbGFzcz0mcXVvdDtmb3JtLWNvbnRyb2wmcXVvdDsgaWQ9JnF1b3Q7bGFzdE5hbWUmcXVvdDsgcmVxdWlyZWQmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2NvbC1tZC02JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2xhYmVsIGNsYXNzPSZxdW90O3JlcXVpcmVkJnF1b3Q7Jmd0O9in2YTZiNit2K/YqSZsdDsvbGFiZWwmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7c2VsZWN0IGNsYXNzPSZxdW90O2Zvcm0tc2VsZWN0JnF1b3Q7IGlkPSZxdW90O3VuaXQmcXVvdDsgcmVxdWlyZWQmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O29wdGlvbiB2YWx1ZT0mcXVvdDvYp9mE2YLZitin2K/YqSZxdW90OyZndDvYp9mE2YLZitin2K/YqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2YLZitin2K/YqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2YLZiNmJINin2YTYqNi02LHZitipJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9in2YTYudmF2YTZitin2KombHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNiz2YrYt9ix2KkmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNiq2K/YsdmK2KgmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNiv2LnZhSDZiNin2YTYpdmF2K/Yp9ivJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9in2YTYr9i52YUg2KfZhNmC2KrYp9mE2YombHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNmE2YjYp9ihINin2YTYo9mI2YQmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNmE2YjYp9ihINin2YTYq9in2YbZiiZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2YTZiNin2KEg2KfZhNir2KfZhNirJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9in2YTZhNmI2KfYoSDYp9mE2LHYp9io2LkmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNmE2YjYp9ihINin2YTYrtin2YXYsyZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDsg2KfZhNmD2KrZitio2Kkg2KfZhNij2YjZhNmJJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9in2YTZg9iq2YrYqNipINin2YTYq9in2YbZitipJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9iz2LHZitipINin2YTYqtiv2K7ZhCZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYs9ix2YrYqSDYp9mE2YLZhtin2LXYqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2KrZiNis2YrZhyDYp9mE2YXYudmG2YjZiiZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2LTYsdi32Kkg2KfZhNi52LPZg9ix2YrYqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2KXYs9iq2K7YqNin2LHYp9iqJmx0Oy9vcHRpb24mZ3Q7CiAgICAgICAgICAgICAgJmx0Oy9zZWxlY3QmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2NvbC1tZC02JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2xhYmVsIGNsYXNzPSZxdW90O3JlcXVpcmVkJnF1b3Q7Jmd0O9in2YTZgtiz2YUmbHQ7L2xhYmVsJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3NlbGVjdCBjbGFzcz0mcXVvdDtmb3JtLXNlbGVjdCZxdW90OyBpZD0mcXVvdDtkZXBhcnRtZW50JnF1b3Q7IHJlcXVpcmVkJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtvcHRpb24gdmFsdWU9JnF1b3Q72KfZhNmC2YrYp9iv2KkmcXVvdDsmZ3Q72KfZhNmC2YrYp9iv2KkmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNij2LHZg9in2YYmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNio2LTYsdmK2KkmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNiz2YrYt9ix2KkmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72YXYtNin2KkmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q7INiv2LHZiNi5Jmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0OyDYp9mE2KrZiNis2YrZhyDYp9mE2YXYudmG2YjZiiZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDsg2YfZhtiv2LPZhyZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDsg2LTYpNmI2YYg2KfZhNi52KfZhdmE2YrZhiZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYtNik2YjZhiDYp9mE2KPZgdix2KfYryZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2LXZitin2YbYqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2YbZgtmEJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9in2YTZhNmI2KzYs9iq2YombHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNi12YrYp9mG2KkmbHQ7L29wdGlvbiZndDsKICAgICAgICAgICAgICAmbHQ7L3NlbGVjdCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Y29sLW1kLTYmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7bGFiZWwmZ3Q72KfZhNi02LnYqNipJmx0Oy9sYWJlbCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtpbnB1dCB0eXBlPSZxdW90O3RleHQmcXVvdDsgY2xhc3M9JnF1b3Q7Zm9ybS1jb250cm9sJnF1b3Q7IGlkPSZxdW90O3NlY3Rpb24mcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2NvbC1tZC02JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2xhYmVsJmd0O9in2YTYqtiu2LXYtSZsdDsvbGFiZWwmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDt0ZXh0JnF1b3Q7IGNsYXNzPSZxdW90O2Zvcm0tY29udHJvbCZxdW90OyBpZD0mcXVvdDtzcGVjaWFsdHkmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2NvbC1tZC02JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2xhYmVsJmd0O9in2YTZhdi02LHZgSDYp9mE2YXYqNin2LTYsSZsdDsvbGFiZWwmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDt0ZXh0JnF1b3Q7IGNsYXNzPSZxdW90O2Zvcm0tY29udHJvbCZxdW90OyBpZD0mcXVvdDtzdXBlcnZpc29yJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtjb2wtbWQtNiZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtsYWJlbCZndDvYp9mE2YXYpNmH2YQmbHQ7L2xhYmVsJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lucHV0IHR5cGU9JnF1b3Q7dGV4dCZxdW90OyBjbGFzcz0mcXVvdDtmb3JtLWNvbnRyb2wmcXVvdDsgaWQ9JnF1b3Q7cXVhbGlmaWNhdGlvbiZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Y29sLW1kLTYmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7bGFiZWwmZ3Q72LHZgtmFINin2YTZh9in2KrZgSZsdDsvbGFiZWwmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDt0ZWwmcXVvdDsgY2xhc3M9JnF1b3Q7Zm9ybS1jb250cm9sJnF1b3Q7IGlkPSZxdW90O3Bob25lJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtjb2wtMTImcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7bGFiZWwmZ3Q72YXZhNin2K3YuNin2KombHQ7L2xhYmVsJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3RleHRhcmVhIGNsYXNzPSZxdW90O2Zvcm0tY29udHJvbCZxdW90OyBpZD0mcXVvdDtub3RlcyZxdW90OyByb3dzPSZxdW90OzMmcXVvdDsmZ3Q7Jmx0Oy90ZXh0YXJlYSZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1mb290ZXIgbXQtMyZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2J1dHRvbiB0eXBlPSZxdW90O2J1dHRvbiZxdW90OyBjbGFzcz0mcXVvdDtidG4gYnRuLXNlY29uZGFyeSZxdW90OyBkYXRhLWJzLWRpc21pc3M9JnF1b3Q7bW9kYWwmcXVvdDsmZ3Q72LHYrNmI2LkmbHQ7L2J1dHRvbiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2J1dHRvbiB0eXBlPSZxdW90O3N1Ym1pdCZxdW90OyBjbGFzcz0mcXVvdDtidG4gYnRuLXByaW1hcnkmcXVvdDsmZ3Q72K3Zgdi4Jmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7L2Zvcm0mZ3Q7CiAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICZsdDsvZGl2Jmd0OwogICAgJmx0Oy9kaXYmZ3Q7CiZsdDsvZGl2Jmd0OwoKJmx0OyEtLSDZiNin2KzZh9ipINin2YTZiNi22LnZitipINin2YTZitmI2YXZitipIC0tJmd0OwombHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsIGZhZGUmcXVvdDsgaWQ9JnF1b3Q7ZGFpbHlTdGF0dXNNb2RhbCZxdW90OyB0YWJpbmRleD0mcXVvdDstMSZxdW90OyZndDsKICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwtZGlhbG9nIG1vZGFsLXhsJnF1b3Q7Jmd0OwogICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwtY29udGVudCBnbGFzc21vcnBoaXNtJnF1b3Q7Jmd0OwogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWhlYWRlciBiZy1pbmZvIHRleHQtd2hpdGUmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7aDUgY2xhc3M9JnF1b3Q7bW9kYWwtdGl0bGUmcXVvdDsmZ3Q7Jmx0O2kgY2xhc3M9JnF1b3Q7ZmFzIGZhLWNhbGVuZGFyLWRheSBtZS0yJnF1b3Q7Jmd0OyZsdDsvaSZndDvYp9mE2YjYtti52YrYqSDYp9mE2YrZiNmF2YrYqSZsdDsvaDUmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O2J0bi1jbG9zZSZxdW90OyBkYXRhLWJzLWRpc21pc3M9JnF1b3Q7bW9kYWwmcXVvdDsmZ3Q7Jmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWJvZHkmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O3JvdyBtYi0zJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Y29sLW1kLTYmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtpbnB1dCB0eXBlPSZxdW90O3RleHQmcXVvdDsgY2xhc3M9JnF1b3Q7Zm9ybS1jb250cm9sJnF1b3Q7IGlkPSZxdW90O2RhaWx5U2VhcmNoJnF1b3Q7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9JnF1b3Q72KfYqNit2Ksg2KjYp9mE2KfYs9mFINij2Ygg2KfZhNix2YLZhSDYp9mE2LnYs9mD2LHZii4uLiZxdW90OyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ua2V5dXA9JnF1b3Q7c2VhcmNoRGFpbHlTdGF0dXMoKSZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2NvbC1tZC02IHRleHQtZW5kJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7YnV0dG9uIGNsYXNzPSZxdW90O2J0biBidG4tcHJpbWFyeSBtZS0yJnF1b3Q7IG9uY2xpY2s9JnF1b3Q7ZXhwb3J0RGFpbHlUb0V4Y2VsKCkmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aSBjbGFzcz0mcXVvdDtmYXMgZmEtZmlsZS1leGNlbCBtZS0yJnF1b3Q7Jmd0OyZsdDsvaSZndDvYqti12K/ZitixINmE2KXZg9iz2YQKICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtidXR0b24gY2xhc3M9JnF1b3Q7YnRuIGJ0bi1kYW5nZXImcXVvdDsgb25jbGljaz0mcXVvdDtwcmludERhaWx5U3RhdHVzKCkmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aSBjbGFzcz0mcXVvdDtmYXMgZmEtcHJpbnQgbWUtMiZxdW90OyZndDsmbHQ7L2kmZ3Q72LfYqNin2LnYqQogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2J1dHRvbiZndDsKCQkJCQkJCgkJCQkJCQoJCQkJCQkKCQkJCQkJCiAgICAgICAgICAgIAombHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O2J0biBidG4tc2Vjb25kYXJ5JnF1b3Q7IGRhdGEtYnMtZGlzbWlzcz0mcXVvdDttb2RhbCZxdW90OyZndDvYsdis2YjYuSZsdDsvYnV0dG9uJmd0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKCiAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O3Njcm9sbGFibGUtdGFibGUmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O3RhYmxlIGNsYXNzPSZxdW90O3RhYmxlIHRhYmxlLWhvdmVyIHRhYmxlLXN0cmlwZWQmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0aGVhZCBjbGFzcz0mcXVvdDtiZy1saWdodCZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0ciZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dGgmZ3Q72KfZhNix2YLZhSDYp9mE2LnYs9mD2LHZiiZsdDsvdGgmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3RoJmd0O9in2YTYp9iz2YUmbHQ7L3RoJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0aCZndDvYp9mE2YjYrdiv2KkmbHQ7L3RoJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0aCZndDvYqtin2LHZitiuINin2YTYr9iu2YjZhCZsdDsvdGgmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3RoJmd0O9iq2KfYsdmK2K4g2KfZhNiu2LHZiNisJmx0Oy90aCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dGgmZ3Q72KPZitin2YUg2KfZhNiv2K7ZiNmEJmx0Oy90aCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dGgmZ3Q72KPZitin2YUg2KfZhNiu2LHZiNisJmx0Oy90aCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dGgmZ3Q72LPYqNioINin2YTYrtix2YjYrCZsdDsvdGgmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3RoJmd0O9in2YTYpdis2LHYp9ih2KfYqiZsdDsvdGgmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L3RyJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L3RoZWFkJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dGJvZHkgaWQ9JnF1b3Q7ZGFpbHlTdGF0dXNUYWJsZSZxdW90OyZndDsmbHQ7L3Rib2R5Jmd0OwogICAgICAgICAgICAgICAgICAgICZsdDsvdGFibGUmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7L2RpdiZndDsKJmx0Oy9kaXYmZ3Q7CgombHQ7IS0tINmG2YXZiNiw2Kwg2KrYrdiv2YrYqyDYp9mE2YjYtti52YrYqSDYp9mE2YrZiNmF2YrYqSAtLSZndDsKJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbCBmYWRlJnF1b3Q7IGlkPSZxdW90O3VwZGF0ZVN0YXR1c01vZGFsJnF1b3Q7IHRhYmluZGV4PSZxdW90Oy0xJnF1b3Q7Jmd0OwogICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1kaWFsb2cmcXVvdDsmZ3Q7CiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1jb250ZW50IGdsYXNzbW9ycGhpc20mcXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwtaGVhZGVyIGJnLXByaW1hcnkgdGV4dC13aGl0ZSZxdW90OyZndDsKICAgICAgICAgICAgICAgICZsdDtoNSBjbGFzcz0mcXVvdDttb2RhbC10aXRsZSZxdW90OyZndDvYqtit2K/ZitirINin2YTZiNi22LnZitipINin2YTZitmI2YXZitipJmx0Oy9oNSZndDsKICAgICAgICAgICAgICAgICZsdDtidXR0b24gdHlwZT0mcXVvdDtidXR0b24mcXVvdDsgY2xhc3M9JnF1b3Q7YnRuLWNsb3NlJnF1b3Q7IGRhdGEtYnMtZGlzbWlzcz0mcXVvdDttb2RhbCZxdW90OyZndDsmbHQ7L2J1dHRvbiZndDsKICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CgkJCQogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWJvZHkmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7Zm9ybSBpZD0mcXVvdDtzdGF0dXNGb3JtJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICZsdDtpbnB1dCB0eXBlPSZxdW90O2hpZGRlbiZxdW90OyBpZD0mcXVvdDtzdGF0dXNNaWxpdGFyeU51bWJlciZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21iLTMmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtsYWJlbCZndDvYp9mE2KfYs9mFOiZsdDsvbGFiZWwmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtpbnB1dCB0eXBlPSZxdW90O3RleHQmcXVvdDsgY2xhc3M9JnF1b3Q7Zm9ybS1jb250cm9sJnF1b3Q7IGlkPSZxdW90O2VtcGxveWVlTmFtZSZxdW90OyBkaXNhYmxlZCZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21iLTMmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtsYWJlbCZndDvYp9mE2YjYrdiv2Kk6Jmx0Oy9sYWJlbCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lucHV0IHR5cGU9JnF1b3Q7dGV4dCZxdW90OyBjbGFzcz0mcXVvdDtmb3JtLWNvbnRyb2wmcXVvdDsgaWQ9JnF1b3Q7ZW1wbG95ZWVVbml0JnF1b3Q7IGRpc2FibGVkJmd0OwogICAgICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bWItMyZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2xhYmVsJmd0O9iq2KfYsdmK2K4g2KfZhNiv2K7ZiNmEJmx0Oy9sYWJlbCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lucHV0IHR5cGU9JnF1b3Q7ZGF0ZSZxdW90OyBjbGFzcz0mcXVvdDtmb3JtLWNvbnRyb2wmcXVvdDsgaWQ9JnF1b3Q7Y2hlY2tJbkRhdGUmcXVvdDsgcmVxdWlyZWQmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttYi0zJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7bGFiZWwmZ3Q72KrYp9ix2YrYriDYp9mE2K7YsdmI2KwmbHQ7L2xhYmVsJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDtkYXRlJnF1b3Q7IGNsYXNzPSZxdW90O2Zvcm0tY29udHJvbCZxdW90OyBpZD0mcXVvdDtjaGVja091dERhdGUmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttYi0zJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7bGFiZWwmZ3Q72LPYqNioINin2YTYrtix2YjYrCZsdDsvbGFiZWwmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtzZWxlY3QgY2xhc3M9JnF1b3Q7Zm9ybS1zZWxlY3QmcXVvdDsgaWQ9JnF1b3Q7ZXhpdFJlYXNvbiZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7b3B0aW9uIHZhbHVlPSZxdW90OyZxdW90OyZndDvYp9iu2KrYsSDYp9mE2LPYqNioJmx0Oy9vcHRpb24mZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O29wdGlvbiZndDvYpdis2KfYstipJmx0Oy9vcHRpb24mZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O29wdGlvbiZndDvZhdix2LbZitipJmx0Oy9vcHRpb24mZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O29wdGlvbiZndDvYr9mI2LHYqSZsdDsvb3B0aW9uJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtvcHRpb24mZ3Q72YXZh9mF2KkmbHQ7L29wdGlvbiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7b3B0aW9uJmd0O9ij2K7YsdmJJmx0Oy9vcHRpb24mZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L3NlbGVjdCZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKCQkJCQkKCQkJCQkKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttYi0zJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2xhYmVsIGNsYXNzPSZxdW90O2Zvcm0tbGFiZWwmcXVvdDsmZ3Q72K3Yp9mE2Kkg2KfZhNmB2LHYryZsdDsvbGFiZWwmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7c2VsZWN0IGNsYXNzPSZxdW90O2Zvcm0tc2VsZWN0JnF1b3Q7IG5hbWU9JnF1b3Q7c3RhdHVzJnF1b3Q7IHJlcXVpcmVkJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtvcHRpb24gdmFsdWU9JnF1b3Q7JnF1b3Q7Jmd0O9in2K7YqtixINin2YTYrdin2YTYqSZsdDsvb3B0aW9uJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtvcHRpb24mZ3Q72YXYsdin2KjYtyZsdDsvb3B0aW9uJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtvcHRpb24mZ3Q72YXZh9mF2KkmbHQ7L29wdGlvbiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7b3B0aW9uJmd0O9il2KzYp9iy2KkmbHQ7L29wdGlvbiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvc2VsZWN0Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21iLTMmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtsYWJlbCZndDvZhdmE2KfYrdi42KfYqiZsdDsvbGFiZWwmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0ZXh0YXJlYSBjbGFzcz0mcXVvdDtmb3JtLWNvbnRyb2wmcXVvdDsgaWQ9JnF1b3Q7c3RhdHVzTm90ZXMmcXVvdDsgcm93cz0mcXVvdDszJnF1b3Q7Jmd0OyZsdDsvdGV4dGFyZWEmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7L2Zvcm0mZ3Q7CiAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWZvb3RlciZxdW90OyZndDsKICAgICAgICAgICAgICAgICZsdDtidXR0b24gdHlwZT0mcXVvdDtidXR0b24mcXVvdDsgY2xhc3M9JnF1b3Q7YnRuIGJ0bi1zZWNvbmRhcnkmcXVvdDsgZGF0YS1icy1kaXNtaXNzPSZxdW90O21vZGFsJnF1b3Q7Jmd0O9ix2KzZiNi5Jmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O2J0biBidG4tcHJpbWFyeSZxdW90OyBvbmNsaWNrPSZxdW90O3NhdmVEYWlseVN0YXR1cygpJnF1b3Q7Jmd0O9it2YHYuCZsdDsvYnV0dG9uJmd0OwogICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAmbHQ7L2RpdiZndDsKCQkKICAgICZsdDsvZGl2Jmd0OwoJCiZsdDsvZGl2Jmd0OwoKJmx0OyEtLSDZiNin2KzZh9ipINin2YTYqtmC2KfYsdmK2LEgLS0mZ3Q7CiZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwgZmFkZSZxdW90OyBpZD0mcXVvdDtyZXBvcnRzTW9kYWwmcXVvdDsgdGFiaW5kZXg9JnF1b3Q7LTEmcXVvdDsmZ3Q7CiAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWRpYWxvZyBtb2RhbC14bCZxdW90OyZndDsKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWNvbnRlbnQgZ2xhc3Ntb3JwaGlzbSZxdW90OyZndDsKICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1oZWFkZXIgYmctd2FybmluZyB0ZXh0LXdoaXRlJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgJmx0O2g1IGNsYXNzPSZxdW90O21vZGFsLXRpdGxlJnF1b3Q7Jmd0OyZsdDtpIGNsYXNzPSZxdW90O2ZhcyBmYS1jaGFydC1waWUgbWUtMiZxdW90OyZndDsmbHQ7L2kmZ3Q72KfZhNiq2YLYp9ix2YrYsSZsdDsvaDUmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O2J0bi1jbG9zZSZxdW90OyBkYXRhLWJzLWRpc21pc3M9JnF1b3Q7bW9kYWwmcXVvdDsmZ3Q7Jmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWJvZHkmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2ZpbHRlci1ncm91cCZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O3JvdyBnLTMmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Y29sLW1kLTMmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7c2VsZWN0IGNsYXNzPSZxdW90O2Zvcm0tc2VsZWN0JnF1b3Q7IGlkPSZxdW90O2ZpbHRlclR5cGUmcXVvdDsgb25jaGFuZ2U9JnF1b3Q7dG9nZ2xlRmlsdGVycygpJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtvcHRpb24gdmFsdWU9JnF1b3Q7b3ZlcnZpZXcmcXVvdDsmZ3Q72YbYuNix2Kkg2LnYp9mF2KkmbHQ7L29wdGlvbiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7b3B0aW9uIHZhbHVlPSZxdW90O2luZGl2aWR1YWwmcXVvdDsmZ3Q72KrZgtix2YrYsSDZgdix2K/ZiiZsdDsvb3B0aW9uJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtvcHRpb24gdmFsdWU9JnF1b3Q7dW5pdCZxdW90OyZndDvYrdiz2Kgg2KfZhNmI2K3Yr9ipJmx0Oy9vcHRpb24mZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O29wdGlvbiB2YWx1ZT0mcXVvdDtkZXBhcnRtZW50JnF1b3Q7Jmd0O9it2LPYqCDYp9mE2YLYs9mFJmx0Oy9vcHRpb24mZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L3NlbGVjdCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Y29sLW1kLTMmcXVvdDsgaWQ9JnF1b3Q7aW5kaXZpZHVhbEZpbHRlciZxdW90OyBzdHlsZT0mcXVvdDtkaXNwbGF5Om5vbmU7JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2lucHV0IHR5cGU9JnF1b3Q7dGV4dCZxdW90OyBjbGFzcz0mcXVvdDtmb3JtLWNvbnRyb2wmcXVvdDsgaWQ9JnF1b3Q7ZW1wbG95ZWVTZWFyY2hSZXBvcnQmcXVvdDsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9JnF1b3Q72KfYqNit2Ksg2KjYp9mE2KfYs9mFINij2Ygg2KfZhNix2YLZhSDYp9mE2LnYs9mD2LHZiiZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Y29sLW1kLTMmcXVvdDsgaWQ9JnF1b3Q7dW5pdEZpbHRlciZxdW90OyBzdHlsZT0mcXVvdDtkaXNwbGF5Om5vbmU7JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3NlbGVjdCBjbGFzcz0mcXVvdDtmb3JtLXNlbGVjdCZxdW90OyBpZD0mcXVvdDt1bml0U2VsZWN0JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtvcHRpb24gdmFsdWU9JnF1b3Q7YWxsJnF1b3Q7Jmd0O9is2YXZiti5INin2YTZiNit2K/Yp9iqJmx0Oy9vcHRpb24mZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O29wdGlvbiB2YWx1ZT0mcXVvdDvYp9mE2YLZitin2K/YqSZxdW90OyZndDvYp9mE2YLZitin2K/YqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2YLZitin2K/YqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2YLZiNmJINin2YTYqNi02LHZitipJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9in2YTYudmF2YTZitin2KombHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNiz2YrYt9ix2KkmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNiq2K/YsdmK2KgmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNiv2LnZhSDZiNin2YTYpdmF2K/Yp9ivJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9in2YTYr9i52YUg2KfZhNmC2KrYp9mE2YombHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNmE2YjYp9ihINin2YTYo9mI2YQmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNmE2YjYp9ihINin2YTYq9in2YbZiiZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2YTZiNin2KEg2KfZhNir2KfZhNirJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9in2YTZhNmI2KfYoSDYp9mE2LHYp9io2LkmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNmE2YjYp9ihINin2YTYrtin2YXYsyZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDsg2KfZhNmD2KrZitio2Kkg2KfZhNij2YjZhNmJJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9in2YTZg9iq2YrYqNipINin2YTYq9in2YbZitipJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9iz2LHZitipINin2YTYqtiv2K7ZhCZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYs9ix2YrYqSDYp9mE2YLZhtin2LXYqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2KrZiNis2YrZhyDYp9mE2YXYudmG2YjZiiZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2LTYsdi32Kkg2KfZhNi52LPZg9ix2YrYqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2KXYs9iq2K7YqNin2LHYp9iqJmx0Oy9vcHRpb24mZ3Q7CiAgICAgICAgICAgICAgJmx0Oy9zZWxlY3QmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2NvbC1tZC0zJnF1b3Q7IGlkPSZxdW90O2RlcGFydG1lbnRGaWx0ZXImcXVvdDsgc3R5bGU9JnF1b3Q7ZGlzcGxheTpub25lOyZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtzZWxlY3QgY2xhc3M9JnF1b3Q7Zm9ybS1zZWxlY3QmcXVvdDsgaWQ9JnF1b3Q7ZGVwYXJ0bWVudFNlbGVjdCZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7b3B0aW9uIHZhbHVlPSZxdW90O2FsbCZxdW90OyZndDvYrNmF2YrYuSDYp9mE2KPZgtiz2KfZhSZsdDsvb3B0aW9uJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtvcHRpb24gdmFsdWU9JnF1b3Q72KfZhNmF2LTYp9ipJnF1b3Q7Jmd0O9in2YTZhdi02KfYqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2YLZitin2K/YqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2KPYsdmD2KfZhiZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2KjYtNix2YrYqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2LPZiti32LHYqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvZhdi02KfYqSZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDsg2K/YsdmI2LkmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q7INin2YTYqtmI2KzZitmHINin2YTZhdi52YbZiNmKJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0OyDZh9mG2K/Ys9mHJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0OyDYtNik2YjZhiDYp9mE2LnYp9mF2YTZitmGJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9i02KTZiNmGINin2YTYo9mB2LHYp9ivJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9in2YTYtdmK2KfZhtipJmx0Oy9vcHRpb24mZ3Q7CiAgICAmbHQ7b3B0aW9uJmd0O9in2YTZhtmC2YQmbHQ7L29wdGlvbiZndDsKICAgICZsdDtvcHRpb24mZ3Q72KfZhNmE2YjYrNiz2KrZiiZsdDsvb3B0aW9uJmd0OwogICAgJmx0O29wdGlvbiZndDvYp9mE2LXZitin2YbYqSZsdDsvb3B0aW9uJmd0OwogICAgICAgICAgICAgICZsdDsvc2VsZWN0Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtjb2wtbWQtMyZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtpbnB1dCB0eXBlPSZxdW90O2RhdGUmcXVvdDsgY2xhc3M9JnF1b3Q7Zm9ybS1jb250cm9sJnF1b3Q7IGlkPSZxdW90O3N0YXJ0RGF0ZSZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Y29sLW1kLTMmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDtkYXRlJnF1b3Q7IGNsYXNzPSZxdW90O2Zvcm0tY29udHJvbCZxdW90OyBpZD0mcXVvdDtlbmREYXRlJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwoKICAgICAgICAgICAgICAgICZsdDtkaXYgaWQ9JnF1b3Q7cmVwb3J0Q29udGVudCZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O3JvdyBtYi00JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2NvbC1tZC04JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtjaGFydC1jb250YWluZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2NhbnZhcyBpZD0mcXVvdDtzdGF0dXNDaGFydCZxdW90OyZndDsmbHQ7L2NhbnZhcyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDtjb2wtbWQtNCZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Y2FyZCBnbGFzc21vcnBoaXNtJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Y2FyZC1ib2R5JnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aDUgY2xhc3M9JnF1b3Q7Y2FyZC10aXRsZSZxdW90OyZndDvYpdit2LXYp9im2YrYp9iqINiz2LHZiti52KkmbHQ7L2g1Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dWwgY2xhc3M9JnF1b3Q7bGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2xpIGNsYXNzPSZxdW90O2xpc3QtZ3JvdXAtaXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINin2YTYrdin2LbYsdmI2YYg2KfZhNii2YYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtiYWRnZSBiZy1zdWNjZXNzJnF1b3Q7IGlkPSZxdW90O3JlcG9ydFByZXNlbnRDb3VudCZxdW90OyZndDswJmx0Oy9zcGFuJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9saSZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtsaSBjbGFzcz0mcXVvdDtsaXN0LWdyb3VwLWl0ZW0gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDZgdmKINin2YTZhdmH2YXYp9iqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7YmFkZ2UgYmctaW5mbyZxdW90OyBpZD0mcXVvdDtyZXBvcnRNaXNzaW9uc0NvdW50JnF1b3Q7Jmd0OzAmbHQ7L3NwYW4mZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2xpJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2xpIGNsYXNzPSZxdW90O2xpc3QtZ3JvdXAtaXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgINmB2Yog2KfZhNil2KzYp9iy2KfYqgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDtzcGFuIGNsYXNzPSZxdW90O2JhZGdlIGJnLXdhcm5pbmcmcXVvdDsgaWQ9JnF1b3Q7cmVwb3J0VmFjYXRpb25zQ291bnQmcXVvdDsmZ3Q7MCZsdDsvc3BhbiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvbGkmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDsvdWwmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CgogICAgICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7c2Nyb2xsYWJsZS10YWJsZSZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3RhYmxlIGNsYXNzPSZxdW90O3RhYmxlIHRhYmxlLWhvdmVyIHJlcG9ydC10YWJsZSZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0aGVhZCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7dHImZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0aCZndDvYp9mE2KfYs9mFJmx0Oy90aCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3RoJmd0O9in2YTZiNit2K/YqSZsdDsvdGgmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0aCZndDvYp9mE2YLYs9mFJmx0Oy90aCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3RoJmd0O9it2KfZhNipINin2YTYrdi22YjYsSZsdDsvdGgmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0aCZndDvYqtin2LHZitiuINii2K7YsSDYqtit2K/ZitirJmx0Oy90aCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0O3RoJmd0O9in2YTYo9mK2KfZhSDYp9mE2YXZhtmC2LbZitipJmx0Oy90aCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L3RyJmd0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0Oy90aGVhZCZndDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdDt0Ym9keSBpZD0mcXVvdDtyZXBvcnRUYWJsZSZxdW90OyZndDsmbHQ7L3Rib2R5Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7L3RhYmxlJmd0OwogICAgICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWZvb3RlciZxdW90OyZndDsKICAgICAgICAgICAgICAgICZsdDtidXR0b24gdHlwZT0mcXVvdDtidXR0b24mcXVvdDsgY2xhc3M9JnF1b3Q7YnRuIGJ0bi1zZWNvbmRhcnkmcXVvdDsgZGF0YS1icy1kaXNtaXNzPSZxdW90O21vZGFsJnF1b3Q7Jmd0O9ix2KzZiNi5Jmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7YnV0dG9uIGNsYXNzPSZxdW90O2J0biBidG4tcHJpbWFyeSZxdW90OyBvbmNsaWNrPSZxdW90O2V4cG9ydFJlcG9ydFRvUERGKCkmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2kgY2xhc3M9JnF1b3Q7ZmFzIGZhLWZpbGUtcGRmIG1lLTImcXVvdDsmZ3Q7Jmx0Oy9pJmd0O1BERgogICAgICAgICAgICAgICAgJmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7YnV0dG9uIGNsYXNzPSZxdW90O2J0biBidG4tc3VjY2VzcyZxdW90OyBvbmNsaWNrPSZxdW90O2V4cG9ydFJlcG9ydFRvRXhjZWwoKSZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7aSBjbGFzcz0mcXVvdDtmYXMgZmEtZmlsZS1leGNlbCBtZS0yJnF1b3Q7Jmd0OyZsdDsvaSZndDtFeGNlbAogICAgICAgICAgICAgICAgJmx0Oy9idXR0b24mZ3Q7CgkJCQkKCQkJCSZsdDtidXR0b24gY2xhc3M9JnF1b3Q7YnRuIGJ0bi1wcmltYXJ5JnF1b3Q7IG9uY2xpY2s9JnF1b3Q7cHJpbnRSZXBvcnQoJ9iq2YLYsdmK2LEnKSZxdW90OyZndDsKCQkJCQkmbHQ7aSBjbGFzcz0mcXVvdDtmYXMgZmEtcHJpbnQgbWUtMiZxdW90OyZndDsmbHQ7L2kmZ3Q72LfYqNin2LnYqQoJCQkJJmx0Oy9idXR0b24mZ3Q7CgkJCQkKCQkJCQogICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAmbHQ7L2RpdiZndDsKICAgICZsdDsvZGl2Jmd0OwombHQ7L2RpdiZndDsKCiZsdDshLS0g2YjYp9is2YfYqSDYp9mE2KXYudiv2KfYr9in2KogLS0mZ3Q7CiZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwgZmFkZSZxdW90OyBpZD0mcXVvdDtzZXR0aW5nc01vZGFsJnF1b3Q7IHRhYmluZGV4PSZxdW90Oy0xJnF1b3Q7Jmd0OwogICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1kaWFsb2cmcXVvdDsmZ3Q7CiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttb2RhbC1jb250ZW50IGdsYXNzbW9ycGhpc20mcXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwtaGVhZGVyIGJnLXNlY29uZGFyeSB0ZXh0LXdoaXRlJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgJmx0O2g1IGNsYXNzPSZxdW90O21vZGFsLXRpdGxlJnF1b3Q7Jmd0OyZsdDtpIGNsYXNzPSZxdW90O2ZhcyBmYS1jb2dzIG1lLTImcXVvdDsmZ3Q7Jmx0Oy9pJmd0O9in2YTYpdi52K/Yp9iv2KfYqiZsdDsvaDUmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O2J0bi1jbG9zZSZxdW90OyBkYXRhLWJzLWRpc21pc3M9JnF1b3Q7bW9kYWwmcXVvdDsmZ3Q7Jmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21vZGFsLWJvZHkmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O21iLTMmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2xhYmVsJmd0O9in2YTZhNmI2YYg2KfZhNix2KbZitiz2YombHQ7L2xhYmVsJmd0OwogICAgICAgICAgICAgICAgICAgICZsdDtpbnB1dCB0eXBlPSZxdW90O2NvbG9yJnF1b3Q7IGNsYXNzPSZxdW90O2Zvcm0tY29udHJvbCZxdW90OyBpZD0mcXVvdDtwcmltYXJ5Q29sb3ImcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bWItMyZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7YnV0dG9uIGNsYXNzPSZxdW90O2J0biBidG4tZGFuZ2VyIHctMTAwJnF1b3Q7IG9uY2xpY2s9JnF1b3Q7Y2xlYXJMb2NhbFN0b3JhZ2UoKSZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O2kgY2xhc3M9JnF1b3Q7ZmFzIGZhLXRyYXNoIG1lLTImcXVvdDsmZ3Q7Jmx0Oy9pJmd0O9mF2LPYrSDYrNmF2YrYuSDYp9mE2KjZitin2YbYp9iqCiAgICAgICAgICAgICAgICAgICAgJmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bWItMyZxdW90OyZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7bGFiZWwmZ3Q72KfYs9iq2YrYsdin2K8g2KjZitin2YbYp9iqJmx0Oy9sYWJlbCZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7aW5wdXQgdHlwZT0mcXVvdDtmaWxlJnF1b3Q7IGNsYXNzPSZxdW90O2Zvcm0tY29udHJvbCZxdW90OyBpZD0mcXVvdDtpbXBvcnRGaWxlJnF1b3Q7IGFjY2VwdD0mcXVvdDsuanNvbiZxdW90OyZndDsKICAgICAgICAgICAgICAgICZsdDsvZGl2Jmd0OwogICAgICAgICAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttYi0zJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICZsdDtidXR0b24gY2xhc3M9JnF1b3Q7YnRuIGJ0bi1zdWNjZXNzIHctMTAwJnF1b3Q7IG9uY2xpY2s9JnF1b3Q7ZXhwb3J0QWxsRGF0YSgpJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aSBjbGFzcz0mcXVvdDtmYXMgZmEtZmlsZS1leHBvcnQgbWUtMiZxdW90OyZndDsmbHQ7L2kmZ3Q72KrYtdiv2YrYsSDYrNmF2YrYuSDYp9mE2KjZitin2YbYp9iqCiAgICAgICAgICAgICAgICAgICAgJmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7L2RpdiZndDsKICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bW9kYWwtZm9vdGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgJmx0O2J1dHRvbiB0eXBlPSZxdW90O2J1dHRvbiZxdW90OyBjbGFzcz0mcXVvdDtidG4gYnRuLXNlY29uZGFyeSZxdW90OyBkYXRhLWJzLWRpc21pc3M9JnF1b3Q7bW9kYWwmcXVvdDsmZ3Q72LHYrNmI2LkmbHQ7L2J1dHRvbiZndDsKICAgICAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7L2RpdiZndDsKJmx0Oy9kaXYmZ3Q7CgoKCgoKCgombHQ7IS0tINis2YXZiti5INin2YTZhtmI2KfZgdiwINin2YTZhdmG2KjYq9mC2KkgLS0mZ3Q7CiZsdDs/cGhwIGVuZGlmOyA/Jmd0OwoKJmx0O3NjcmlwdCBzcmM9JnF1b3Q7aHR0cHM6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi55LmNvbS9qcXVlcnktMy42LjAubWluLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7c2NyaXB0IHNyYz0mcXVvdDtodHRwczovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnIubmV0L25wbS9ib290c3RyYXBANS4xLjMvZGlzdC9qcy9ib290c3RyYXAuYnVuZGxlLm1pbi5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKJmx0O3NjcmlwdCZndDsKLy8g2YXYudin2YTYrNipINiq2LPYrNmK2YQg2KfZhNiv2K7ZiNmECiQoJyNsb2dpbkZvcm0nKS5zdWJtaXQoZnVuY3Rpb24oZSkgewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgJC5wb3N0KHdpbmRvdy5sb2NhdGlvbi5ocmVmLCB7CiAgICAgICAgYWN0aW9uOiAnbG9naW4nLAogICAgICAgIHVzZXJuYW1lOiAkKCdbbmFtZT0mcXVvdDt1c2VybmFtZSZxdW90O10nKS52YWwoKSwKICAgICAgICBwYXNzd29yZDogJCgnW25hbWU9JnF1b3Q7cGFzc3dvcmQmcXVvdDtdJykudmFsKCkKICAgIH0sIGZ1bmN0aW9uKHJlcykgewogICAgICAgIGlmIChyZXMuc3VjY2VzcykgbG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgZWxzZSBhbGVydChyZXMuZXJyb3IpOwogICAgfSk7Cn0pOwoKLy8g2K/Yp9mE2Kkg2KzZhNioINin2YTZhdmI2LjZgdmK2YYKZnVuY3Rpb24gbG9hZEVtcGxveWVlcygpIHsKICAgICQucG9zdCh3aW5kb3cubG9jYXRpb24uaHJlZiwge2FjdGlvbjogJ2dldEVtcGxveWVlcyd9LCBmdW5jdGlvbihyZXMpIHsKICAgICAgICAkKCcjZW1wbG95ZWVzVGFibGUnKS5odG1sKHJlcy5kYXRhLm1hcChlbXAgPSZndDsgYAogICAgICAgICAgICAmbHQ7dHImZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7dGQmZ3Q7JHtlbXAubWlsaXRhcnlOdW1iZXJ9Jmx0Oy90ZCZndDsKICAgICAgICAgICAgICAgICZsdDt0ZCZndDske2VtcC5maXJzdE5hbWV9Jmx0Oy90ZCZndDsKICAgICAgICAgICAgICAgICZsdDt0ZCZndDske2VtcC5sYXN0TmFtZX0mbHQ7L3RkJmd0OwogICAgICAgICAgICAgICAgJmx0O3RkJmd0OyR7ZW1wLnVuaXR9Jmx0Oy90ZCZndDsKICAgICAgICAgICAgICAgICZsdDt0ZCZndDske2VtcC5kZXBhcnRtZW50fSZsdDsvdGQmZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7dGQmZ3Q7JHtlbXAuc2VjdGlvbiB8fCAnLSd9Jmx0Oy90ZCZndDsKICAgICAgICAgICAgICAgICZsdDt0ZCZndDsKICAgICAgICAgICAgICAgICAgICAmbHQ7YnV0dG9uIGNsYXNzPSZxdW90O2J0biBidG4tc20gYnRuLXdhcm5pbmcmcXVvdDsgb25jbGljaz0mcXVvdDtlZGl0RW1wbG95ZWUoJyR7ZW1wLm1pbGl0YXJ5TnVtYmVyfScpJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7aSBjbGFzcz0mcXVvdDtmYXMgZmEtZWRpdCZxdW90OyZndDsmbHQ7L2kmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0O2J1dHRvbiBjbGFzcz0mcXVvdDtidG4gYnRuLXNtIGJ0bi1kYW5nZXImcXVvdDsgb25jbGljaz0mcXVvdDtkZWxldGVFbXBsb3llZSgnJHtlbXAubWlsaXRhcnlOdW1iZXJ9JykmcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICZsdDtpIGNsYXNzPSZxdW90O2ZhcyBmYS10cmFzaCZxdW90OyZndDsmbHQ7L2kmZ3Q7CiAgICAgICAgICAgICAgICAgICAgJmx0Oy9idXR0b24mZ3Q7CiAgICAgICAgICAgICAgICAmbHQ7L3RkJmd0OwogICAgICAgICAgICAmbHQ7L3RyJmd0OwogICAgICAgIGApLmpvaW4oJycpKTsKICAgIH0pOwp9CgovLyDYr9in2YTYqSDYp9mE2K3Zgdi4CmZ1bmN0aW9uIHNhdmVFbXBsb3llZSgpIHsKICAgIGNvbnN0IGZvcm1EYXRhID0gJCgnI2VtcGxveWVlRm9ybScpLnNlcmlhbGl6ZUFycmF5KCk7CiAgICBjb25zdCBkYXRhID0ge2FjdGlvbjogJ3NhdmVFbXBsb3llZSd9OwogICAgZm9ybURhdGEuZm9yRWFjaChpdGVtID0mZ3Q7IGRhdGFbaXRlbS5uYW1lXSA9IGl0ZW0udmFsdWUpOwogICAgCiAgICAkLnBvc3Qod2luZG93LmxvY2F0aW9uLmhyZWYsIGRhdGEsIGZ1bmN0aW9uKCkgewogICAgICAgIGxvYWRFbXBsb3llZXMoKTsKICAgICAgICAkKCcjZW1wbG95ZWVGb3JtTW9kYWwnKS5tb2RhbCgnaGlkZScpOwogICAgfSk7Cn0KCi8vINin2YTYqtmH2YrYptipINin2YTYo9mI2YTZitipCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewogICAgbG9hZEVtcGxveWVlcygpOwogICAgbG9hZERhaWx5U3RhdHVzKCk7Cn0pOwombHQ7L3NjcmlwdCZndDsKJmx0Oy9ib2R5Jmd0OwombHQ7L2h0bWwmZ3Q7
<?php
// الاتصال بقاعدة البيانات
$db = new SQLite3('employees.db');
session_start();
// إنشاء الجداول
$db->exec("
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE,
password TEXT,
role TEXT,
permissions TEXT,
active INTEGER DEFAULT 1
);
CREATE TABLE IF NOT EXISTS employees (
militaryNumber TEXT PRIMARY KEY,
firstName TEXT,
lastName TEXT,
unit TEXT,
department TEXT,
section TEXT,
specialty TEXT,
supervisor TEXT,
qualification TEXT,
phone TEXT,
notes TEXT
);
CREATE TABLE IF NOT EXISTS dailyStatus (
id INTEGER PRIMARY KEY AUTOINCREMENT,
militaryNumber TEXT,
checkIn DATE,
checkOut DATE,
exitReason TEXT,
notes TEXT,
FOREIGN KEY(militaryNumber) REFERENCES employees(militaryNumber)
);
");
// إضافة مستخدم افتراضي
$db->exec("INSERT OR IGNORE INTO users (username, password, role) VALUES ('admin', 'admin123', 'admin')");
// معالجة طلبات AJAX
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
header('Content-Type: application/json');
$response = [];
try {
switch ($_POST['action']) {
case 'login':
$stmt = $db->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindValue(':username', $_POST['username']);
$user = $stmt->execute()->fetchArray(SQLITE3_ASSOC);
if ($user && $_POST['password'] === $user['password']) {
$_SESSION['user'] = $user;
$response['success'] = true;
} else {
$response['error'] = 'بيانات الدخول غير صحيحة';
}
break;
case 'getEmployees':
$result = $db->query("SELECT * FROM employees");
$employees = [];
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
$employees[] = $row;
}
$response['data'] = $employees;
break;
case 'saveEmployee':
$stmt = $db->prepare("
INSERT OR REPLACE INTO employees VALUES (
:militaryNumber, :firstName, :lastName, :unit,
:department, :section, :specialty, :supervisor,
:qualification, :phone, :notes
)
");
foreach ($_POST as $key => $value) {
if ($key !== 'action') {
$stmt->bindValue(":$key", $value);
}
}
$stmt->execute();
$response['success'] = true;
break;
case 'deleteEmployee':
$db->exec("DELETE FROM employees WHERE militaryNumber = '{$_POST['militaryNumber']}'");
$response['success'] = true;
break;
case 'getDailyStatus':
$result = $db->query("
SELECT e.*, d.checkIn, d.checkOut, d.exitReason
FROM employees e
LEFT JOIN dailyStatus d ON e.militaryNumber = d.militaryNumber
");
$data = [];
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
$data[] = $row;
}
$response['data'] = $data;
break;
}
} catch (Exception $e) {
$response['error'] = $e->getMessage();
}
echo json_encode($response);
exit;
}
// إذا لم يكن مسجل دخول
if (!isset($_SESSION['user']) && basename($_SERVER['PHP_SELF']) !== 'login.php') {
header("Location: login.php");
exit;
}
?>
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>نظام شؤون العاملين - القوات الخاصة</title>
<link href="https://c...content-available-to-author-only...r.net/npm/bootstrap@5.1.3/dist/css/bootstrap.rtl.min.css" rel="stylesheet">
<link href="https://c...content-available-to-author-only...e.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
<style>
/* نفس الأنماط الأصلية */
:root {
--primary-color: #2A3950;
--secondary-color: #3A4B63;
--accent-color: #4E6BFF;
--success-color: #00C853;
--warning-color: #FFC107;
--danger-color: #D32F2F;
--gradient-bg: linear-gradient(135deg, #f8f9fa 0%, #eef2f6 100%);
--glass-bg: rgba(255, 255, 255, 0.98);
}
body {
background: var(--gradient-bg);
font-family: 'Tajawal', sans-serif;
min-height: 100vh;
color: var(--primary-color);
}
.header-title {
font-size: 2.8rem;
font-weight: 800;
letter-spacing: -1px;
background: linear-gradient(45deg, var(--primary-color), var(--accent-color));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-shadow: 2px 2px 4px rgba(0,0,0,0.1);
}
.glassmorphism {
background: var(--glass-bg);
backdrop-filter: blur(12px);
border-radius: 20px;
box-shadow: 0 8px 32px rgba(31, 38, 135, 0.1);
border: 1px solid rgba(255, 255, 255, 0.3);
transition: transform 0.3s, box-shadow 0.3s;
}
.stat-card {
border: none;
border-radius: 15px;
background: var(--glass-bg);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
cursor: pointer;
padding: 1.5rem;
}
.stat-card:hover {
transform: translateY(-5px);
box-shadow: 0 12px 24px rgba(0,0,0,0.1);
}
.scrollable-table {
max-height: 60vh;
overflow-y: auto;
border-radius: 12px;
}
.fixed-sidebar {
background: var(--glass-bg);
box-shadow: 4px 0 15px rgba(0,0,0,0.05);
position: fixed;
right: 0;
top: 0;
height: 100vh;
width: 280px;
transition: right 0.3s;
z-index: 1000;
}
.nav-link {
color: var(--primary-color);
font-weight: 500;
border-radius: 10px;
transition: all 0.3s;
padding: 0.75rem 1.5rem;
margin: 0.25rem 0;
}
.nav-link:hover {
background: rgba(78, 107, 255, 0.1);
transform: translateX(-5px);
}
.btn-modern {
border: none;
border-radius: 10px;
padding: 12px 24px;
font-weight: 600;
transition: all 0.3s;
position: relative;
overflow: hidden;
background: var(--accent-color);
color: white;
}
.btn-modern:before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(255,255,255,0.1);
opacity: 0;
transition: 0.3s;
}
.btn-modern:hover:before {
opacity: 1;
}
.table-modern {
--bs-table-bg: transparent;
border-collapse: separate;
border-spacing: 0 8px;
width: 100%;
}
.table-modern thead {
background: var(--primary-color);
color: white;
position: sticky;
top: 0;
}
.table-modern th {
border: none;
padding: 1rem;
font-weight: 600;
font-size: 1.1rem;
}
.table-modern td {
background: var(--glass-bg);
vertical-align: middle;
padding: 1.2rem;
border-bottom: 2px solid #f8f9fa;
}
.table-modern tr {
transition: transform 0.3s;
}
.table-modern tr:hover {
transform: translateX(5px);
}
.badge-modern {
padding: 0.5rem 1rem;
border-radius: 8px;
font-weight: 600;
font-size: 0.9rem;
background: var(--accent-color);
color: white;
}
.chart-container {
background: var(--glass-bg);
border-radius: 20px;
padding: 1.5rem;
box-shadow: 0 8px 16px rgba(0,0,0,0.05);
}
@media (max-width: 768px) {
.header-title {
font-size: 2rem;
}
.stat-card {
margin-bottom: 1.5rem;
}
.fixed-sidebar {
width: 100%;
}
}
/* أنماط لوحة المدير الجديدة */
.admin-panel-section {
display: none;
background: var(--glass-bg);
border-radius: 20px;
padding: 2rem;
margin-top: 2rem;
}
.admin-stats-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 1.5rem;
margin-bottom: 2rem;
}
.admin-card {
background: var(--glass-bg);
padding: 1.5rem;
border-radius: 15px;
box-shadow: 0 4px 12px rgba(0,0,0,0.05);
transition: transform 0.3s;
}
.admin-card:hover {
transform: translateY(-5px);
}
.permission-badge {
padding: 0.5rem 1rem;
border-radius: 8px;
font-size: 0.9rem;
background: rgba(78, 107, 255, 0.1);
color: var(--accent-color);
}
.activity-log {
max-height: 500px;
overflow-y: auto;
padding: 1rem;
background: var(--glass-bg);
border-radius: 15px;
}
/* ... جميع الأنماط الأصلية ... */
</style>
</head>
<body>
<?php if (!isset($_SESSION['user'])): ?>
<!-- نموذج الدخول -->
<div class="modal fade show d-block" tabindex="-1">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<form id="loginForm">
<div class="modal-header bg-primary text-white">
<h5 class="modal-title">تسجيل الدخول</h5>
</div>
<div class="modal-body">
<div class="mb-3">
<label>اسم المستخدم</label>
<input type="text" name="username" class="form-control" required>
</div>
<div class="mb-3">
<label>كلمة المرور</label>
<input type="password" name="password" class="form-control" required>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">دخول</button>
</div>
</form>
</div>
</div>
</div>
<?php else: ?>
<!-- الواجهة الرئيسية -->
<nav id="sidebar" class="d-flex flex-column p-3 glassmorphism fixed-sidebar">
<!-- نفس محتوى القائمة الجانبية -->
style="right: -280px;">
<div class="sidebar-header">
<h4 class="text-primary mb-4">القائمة الرئيسية</h4>
</div>
<ul class="nav flex-column flex-grow-1">
<li class="nav-item">
<button class="nav-link btn btn-link text-start" onclick="showDashboard()">
<i class="fas fa-home me-2"></i>اللوحة الرئيسية
</button>
</li>
<li class="nav-item">
<button class="nav-link btn btn-link text-start" onclick="showEmployeeManagement()">
<i class="fas fa-users-cog me-2"></i>إدارة الأفراد
</button>
</li>
<li class="nav-item">
<button class="nav-link btn btn-link text-start" onclick="showDailyStatus()">
<i class="fas fa-calendar-day me-2"></i>الوضعية اليومية
</button>
</li>
<li class="nav-item">
<button class="nav-link btn btn-link text-start" onclick="showReports()">
<i class="fas fa-chart-pie me-2"></i>التقارير
</button>
</li>
<li class="nav-item">
<button class="nav-link btn btn-link text-start" data-bs-toggle="modal" data-bs-target="#settingsModal">
<i class="fas fa-cogs me-2"></i>الإعدادات
</button>
</li>
</ul>
<!-- العناصر الأصلية -->
<li class="nav-item">
<button class="nav-link btn btn-link text-start" onclick="showAdminPanel()">
<i class="fas fa-user-shield me-2"></i>لوحة المدير
</button>
</li>
</nav>
<!-- زر فتح القائمة -->
<button class="btn btn-modern fixed-top m-3" onclick="toggleSidebar()">
<i class="fas fa-bars me-2"></i> القائمة
</button>
<!-- قسم لوحة المدير -->
<div class="admin-panel-section" id="adminPanel">
<button class="btn btn-modern mb-4" onclick="returnToMain()">
<i class="fas fa-arrow-right me-2"></i>العودة للوحة الرئيسية
</button>
<h2 class="header-title mb-4">لوحة المدير</h2>
<div class="admin-stats-grid">
<div class="admin-card">
<div class="d-flex align-items-center">
<div class="flex-grow-1">
<h5 class="mb-2">المستخدمون النشطون</h5>
<h2 class="mb-0 text-primary" id="activeUsersCount">0</h2>
</div>
<i class="fas fa-user-check fs-1 text-primary"></i>
</div>
</div>
<div class="admin-card">
<div class="d-flex align-items-center">
<div class="flex-grow-1">
<h5 class="mb-2">العمليات اليومية</h5>
<h2 class="mb-0 text-success" id="dailyActivities">0</h2>
</div>
<i class="fas fa-tasks fs-1 text-success"></i>
</div>
</div>
<div class="admin-card">
<div class="d-flex align-items-center">
<div class="flex-grow-1">
<h5 class="mb-2">الإنذارات</h5>
<h2 class="mb-0 text-danger" id="adminAlerts">0</h2>
</div>
<i class="fas fa-bell fs-1 text-danger"></i>
</div>
</div>
</div>
<div class="row g-4">
<div class="col-md-8">
<div class="admin-card">
<h5 class="mb-3">نشاط النظام</h5>
<canvas id="adminActivityChart"></canvas>
</div>
</div>
<div class="col-md-4">
<div class="admin-card">
<h5 class="mb-3">الإحصائيات السريعة</h5>
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">
المستخدمون المصرح لهم
<span class="badge-modern" id="authorizedUsers">0</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
التعديلات الأخيرة
<span class="badge-modern bg-warning" id="recentChanges">0</span>
</li>
</ul>
</div>
</div>
</div>
<!-- قسم إدارة المستخدمين -->
<div class="mt-5" id="adminUsersSection">
<div class="d-flex justify-content-between align-items-center mb-4">
<h4>إدارة المستخدمين</h4>
<button class="btn btn-modern" onclick="showUserForm()">
<i class="fas fa-user-plus me-2"></i>مستخدم جديد
</button>
</div>
<div class="scrollable-table">
<table class="table table-modern">
<thead>
<tr>
<th>اسم المستخدم</th>
<th>الدور</th>
<th>الصلاحيات</th>
<th>الحالة</th>
<th>الإجراءات</th>
</tr>
</thead>
<tbody id="adminUsersTable"></tbody>
</table>
</div>
</div>
</div>
<!-- نافذة إضافة مستخدم جديد -->
<div class="modal fade" id="userFormModal">
<div class="modal-dialog">
<div class="modal-content glassmorphism">
<div class="modal-header bg-success text-white">
<h5 class="modal-title">إضافة مستخدم جديد</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<form id="userForm">
<div class="mb-3">
<label>اسم المستخدم</label>
<input type="text" class="form-control" id="newUsername" required>
</div>
<div class="mb-3">
<label>كلمة المرور</label>
<input type="password" class="form-control" id="newPassword" required>
</div>
<div class="mb-3">
<label>الدور</label>
<select class="form-select" id="userRole" required>
<option value="admin">مدير</option>
<option value="supervisor">مشرف</option>
<option value="user">مستخدم عادي</option>
</select>
</div>
<div class="mb-3">
<label>الصلاحيات</label>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="perm1">
<label class="form-check-label" for="perm1">إدارة المستخدمين</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="perm2">
<label class="form-check-label" for="perm2">تعديل الإعدادات</label>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">رجوع</button>
<button type="button" class="btn btn-primary" onclick="saveUser()">حفظ</button>
</div>
</div>
</div>
</div>
<!-- باقي عناصر الواجهة -->
<div class="main-content p-4">
<h1 class="header-title text-center mb-5">مرحباً بك في نظام شؤون العاملين</h1>
<div class="row g-4">
<div class="col-md-6">
<div class="stat-card" onclick="showVacationAlerts()">
<div class="d-flex justify-content-between align-items-center">
<div>
<h4 class="text-danger"><i class="fas fa-exclamation-triangle me-2"></i>إنذارات الإجازات</h4>
<p class="text-muted mb-0">الأفراد المتجاوزين المدة المسموحة</p>
</div>
<span class="badge-modern" id="vacationAlertsCount">0</span>
</div>
</div>
</div>
<div class="col-md-6">
<div class="stat-card" onclick="show24DaysAlert()">
<div class="d-flex justify-content-between align-items-center">
<div>
<h4 class="text-warning"><i class="fas fa-bell me-2"></i>إكمال المدة</h4>
<p class="text-muted mb-0">الأفراد المكتملين 24 يوم دوام</p>
</div>
<span class="badge-modern bg-warning" id="days24AlertCount">0</span>
</div>
</div>
</div>
</div>
<div class="dashboard-stats mt-4">
<div class="row g-4">
<div class="col-md-4">
<div class="stat-card text-center">
<h3 class="text-primary" id="totalEmployees">0</h3>
<p class="text-muted mb-0">إجمالي الأفراد</p>
</div>
</div>
<div class="col-md-4">
<div class="stat-card text-center">
<h3 class="text-success" id="presentEmployees">0</h3>
<p class="text-muted mb-0">حاضرين الآن</p>
</div>
</div>
<div class="col-md-4">
<div class="stat-card text-center" onclick="showMissions()"> <!-- أضف هنا -->
<h3 class="text-info" id="missionsCount">0</h3>
<p class="text-muted mb-0">في مهمات</p>
</div>
</div>
</div>
</div>
</div>
<!-- واجهة إدارة الأفراد -->
<div class="modal fade" id="employeeManagementModal" tabindex="-1">
<div class="modal-dialog modal-xl">
<div class="modal-content glassmorphism">
<div class="modal-header bg-primary text-white">
<h5 class="modal-title"><i class="fas fa-users-cog me-2"></i>إدارة الأفراد</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<div class="row mb-3">
<div class="col-md-4">
<button class="btn btn-success btn-modern" onclick="openEmployeeForm()">
<i class="fas fa-user-plus me-2"></i>إضافة جديد
</button>
</div>
<div class="col-md-8">
<input type="text" class="form-control" id="employeeSearch"
placeholder="ابحث بالاسم أو الرقم العسكري..." onkeyup="searchEmployees()">
</div>
</div>
<div class="scrollable-table">
<table class="table table-modern">
<thead>
<tr>
<th>الرقم العسكري</th>
<th>الاسم</th>
<th>الكنية</th>
<th>الوحدة</th>
<th>القسم</th>
<th>الشعبة</th>
<th>الإجراءات</th>
</tr>
</thead>
<tbody id="employeesTable"></tbody>
</table>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary btn-modern" data-bs-dismiss="modal">رجوع</button>
</div>
</div>
</div>
</div>
<!-- باقي النوافذ المنبثقة مع تطبيق التنسيقات الحديثة -->
<!-- نموذج إضافة/تعديل الفرد -->
<div class="modal fade" id="employeeFormModal" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content glassmorphism">
<div class="modal-header bg-success text-white">
<h5 class="modal-title" id="formTitle">إضافة فرد جديد</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<form id="employeeForm" onsubmit="return handleEmployeeSubmit(event)">
<input type="hidden" id="editId">
<div class="row g-3">
<div class="col-md-6">
<label class="required">الرقم العسكري</label>
<input type="text" class="form-control" id="militaryNumber" required>
</div>
<div class="col-md-6">
<label class="required">الاسم</label>
<input type="text" class="form-control" id="firstName" required>
</div>
<div class="col-md-6">
<label class="required">الكنية</label>
<input type="text" class="form-control" id="lastName" required>
</div>
<div class="col-md-6">
<label class="required">الوحدة</label>
<select class="form-select" id="unit" required>
<option value="القيادة">القيادة</option>
<option>القيادة</option>
<option>القوى البشرية</option>
<option>العمليات</option>
<option>السيطرة</option>
<option>التدريب</option>
<option>الدعم والإمداد</option>
<option>الدعم القتالي</option>
<option>اللواء الأول</option>
<option>اللواء الثاني</option>
<option>اللواء الثالث</option>
<option>اللواء الرابع</option>
<option>اللواء الخامس</option>
<option> الكتيبة الأولى</option>
<option>الكتيبة الثانية</option>
<option>سرية التدخل</option>
<option>سرية القناصة</option>
<option>التوجيه المعنوي</option>
<option>الشرطة العسكرية</option>
<option>الإستخبارات</option>
</select>
</div>
<div class="col-md-6">
<label class="required">القسم</label>
<select class="form-select" id="department" required>
<option value="القيادة">القيادة</option>
<option>الأركان</option>
<option>البشرية</option>
<option>السيطرة</option>
<option>مشاة</option>
<option> دروع</option>
<option> التوجيه المعنوي</option>
<option> هندسه</option>
<option> شؤون العاملين</option>
<option>شؤون الأفراد</option>
<option>الصيانة</option>
<option>النقل</option>
<option>اللوجستي</option>
<option>الصيانة</option>
</select>
</div>
<div class="col-md-6">
<label>الشعبة</label>
<input type="text" class="form-control" id="section">
</div>
<div class="col-md-6">
<label>التخصص</label>
<input type="text" class="form-control" id="specialty">
</div>
<div class="col-md-6">
<label>المشرف المباشر</label>
<input type="text" class="form-control" id="supervisor">
</div>
<div class="col-md-6">
<label>المؤهل</label>
<input type="text" class="form-control" id="qualification">
</div>
<div class="col-md-6">
<label>رقم الهاتف</label>
<input type="tel" class="form-control" id="phone">
</div>
<div class="col-12">
<label>ملاحظات</label>
<textarea class="form-control" id="notes" rows="3"></textarea>
</div>
</div>
<div class="modal-footer mt-3">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">رجوع</button>
<button type="submit" class="btn btn-primary">حفظ</button>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- واجهة الوضعية اليومية -->
<div class="modal fade" id="dailyStatusModal" tabindex="-1">
<div class="modal-dialog modal-xl">
<div class="modal-content glassmorphism">
<div class="modal-header bg-info text-white">
<h5 class="modal-title"><i class="fas fa-calendar-day me-2"></i>الوضعية اليومية</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<div class="row mb-3">
<div class="col-md-6">
<input type="text" class="form-control" id="dailySearch"
placeholder="ابحث بالاسم أو الرقم العسكري..."
onkeyup="searchDailyStatus()">
</div>
<div class="col-md-6 text-end">
<button class="btn btn-primary me-2" onclick="exportDailyToExcel()">
<i class="fas fa-file-excel me-2"></i>تصدير لإكسل
</button>
<button class="btn btn-danger" onclick="printDailyStatus()">
<i class="fas fa-print me-2"></i>طباعة
</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">رجوع</button>
</div>
</div>
<div class="scrollable-table">
<table class="table table-hover table-striped">
<thead class="bg-light">
<tr>
<th>الرقم العسكري</th>
<th>الاسم</th>
<th>الوحدة</th>
<th>تاريخ الدخول</th>
<th>تاريخ الخروج</th>
<th>أيام الدخول</th>
<th>أيام الخروج</th>
<th>سبب الخروج</th>
<th>الإجراءات</th>
</tr>
</thead>
<tbody id="dailyStatusTable"></tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- نموذج تحديث الوضعية اليومية -->
<div class="modal fade" id="updateStatusModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content glassmorphism">
<div class="modal-header bg-primary text-white">
<h5 class="modal-title">تحديث الوضعية اليومية</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<form id="statusForm">
<input type="hidden" id="statusMilitaryNumber">
<div class="mb-3">
<label>الاسم:</label>
<input type="text" class="form-control" id="employeeName" disabled>
</div>
<div class="mb-3">
<label>الوحدة:</label>
<input type="text" class="form-control" id="employeeUnit" disabled>
</div>
<div class="mb-3">
<label>تاريخ الدخول</label>
<input type="date" class="form-control" id="checkInDate" required>
</div>
<div class="mb-3">
<label>تاريخ الخروج</label>
<input type="date" class="form-control" id="checkOutDate">
</div>
<div class="mb-3">
<label>سبب الخروج</label>
<select class="form-select" id="exitReason">
<option value="">اختر السبب</option>
<option>إجازة</option>
<option>مرضية</option>
<option>دورة</option>
<option>مهمة</option>
<option>أخرى</option>
</select>
</div>
<div class="mb-3">
<label class="form-label">حالة الفرد</label>
<select class="form-select" name="status" required>
<option value="">اختر الحالة</option>
<option>مرابط</option>
<option>مهمة</option>
<option>إجازة</option>
</select>
</div>
<div class="mb-3">
<label>ملاحظات</label>
<textarea class="form-control" id="statusNotes" rows="3"></textarea>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">رجوع</button>
<button type="button" class="btn btn-primary" onclick="saveDailyStatus()">حفظ</button>
</div>
</div>
</div>
</div>
<!-- واجهة التقارير -->
<div class="modal fade" id="reportsModal" tabindex="-1">
<div class="modal-dialog modal-xl">
<div class="modal-content glassmorphism">
<div class="modal-header bg-warning text-white">
<h5 class="modal-title"><i class="fas fa-chart-pie me-2"></i>التقارير</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<div class="filter-group">
<div class="row g-3">
<div class="col-md-3">
<select class="form-select" id="filterType" onchange="toggleFilters()">
<option value="overview">نظرة عامة</option>
<option value="individual">تقرير فردي</option>
<option value="unit">حسب الوحدة</option>
<option value="department">حسب القسم</option>
</select>
</div>
<div class="col-md-3" id="individualFilter" style="display:none;">
<input type="text" class="form-control" id="employeeSearchReport"
placeholder="ابحث بالاسم أو الرقم العسكري">
</div>
<div class="col-md-3" id="unitFilter" style="display:none;">
<select class="form-select" id="unitSelect">
<option value="all">جميع الوحدات</option>
<option value="القيادة">القيادة</option>
<option>القيادة</option>
<option>القوى البشرية</option>
<option>العمليات</option>
<option>السيطرة</option>
<option>التدريب</option>
<option>الدعم والإمداد</option>
<option>الدعم القتالي</option>
<option>اللواء الأول</option>
<option>اللواء الثاني</option>
<option>اللواء الثالث</option>
<option>اللواء الرابع</option>
<option>اللواء الخامس</option>
<option> الكتيبة الأولى</option>
<option>الكتيبة الثانية</option>
<option>سرية التدخل</option>
<option>سرية القناصة</option>
<option>التوجيه المعنوي</option>
<option>الشرطة العسكرية</option>
<option>الإستخبارات</option>
</select>
</div>
<div class="col-md-3" id="departmentFilter" style="display:none;">
<select class="form-select" id="departmentSelect">
<option value="all">جميع الأقسام</option>
<option value="المشاة">المشاة</option>
<option>القيادة</option>
<option>الأركان</option>
<option>البشرية</option>
<option>السيطرة</option>
<option>مشاة</option>
<option> دروع</option>
<option> التوجيه المعنوي</option>
<option> هندسه</option>
<option> شؤون العاملين</option>
<option>شؤون الأفراد</option>
<option>الصيانة</option>
<option>النقل</option>
<option>اللوجستي</option>
<option>الصيانة</option>
</select>
</div>
<div class="col-md-3">
<input type="date" class="form-control" id="startDate">
</div>
<div class="col-md-3">
<input type="date" class="form-control" id="endDate">
</div>
</div>
</div>
<div id="reportContent">
<div class="row mb-4">
<div class="col-md-8">
<div class="chart-container">
<canvas id="statusChart"></canvas>
</div>
</div>
<div class="col-md-4">
<div class="card glassmorphism">
<div class="card-body">
<h5 class="card-title">إحصائيات سريعة</h5>
<ul class="list-group list-group-flush">
<li class="list-group-item d-flex justify-content-between align-items-center">
الحاضرون الآن
<span class="badge bg-success" id="reportPresentCount">0</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
في المهمات
<span class="badge bg-info" id="reportMissionsCount">0</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
في الإجازات
<span class="badge bg-warning" id="reportVacationsCount">0</span>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="scrollable-table">
<table class="table table-hover report-table">
<thead>
<tr>
<th>الاسم</th>
<th>الوحدة</th>
<th>القسم</th>
<th>حالة الحضور</th>
<th>تاريخ آخر تحديث</th>
<th>الأيام المنقضية</th>
</tr>
</thead>
<tbody id="reportTable"></tbody>
</table>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">رجوع</button>
<button class="btn btn-primary" onclick="exportReportToPDF()">
<i class="fas fa-file-pdf me-2"></i>PDF
</button>
<button class="btn btn-success" onclick="exportReportToExcel()">
<i class="fas fa-file-excel me-2"></i>Excel
</button>
<button class="btn btn-primary" onclick="printReport('تقرير')">
<i class="fas fa-print me-2"></i>طباعة
</button>
</div>
</div>
</div>
</div>
<!-- واجهة الإعدادات -->
<div class="modal fade" id="settingsModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content glassmorphism">
<div class="modal-header bg-secondary text-white">
<h5 class="modal-title"><i class="fas fa-cogs me-2"></i>الإعدادات</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<div class="mb-3">
<label>اللون الرئيسي</label>
<input type="color" class="form-control" id="primaryColor">
</div>
<div class="mb-3">
<button class="btn btn-danger w-100" onclick="clearLocalStorage()">
<i class="fas fa-trash me-2"></i>مسح جميع البيانات
</button>
</div>
<div class="mb-3">
<label>استيراد بيانات</label>
<input type="file" class="form-control" id="importFile" accept=".json">
</div>
<div class="mb-3">
<button class="btn btn-success w-100" onclick="exportAllData()">
<i class="fas fa-file-export me-2"></i>تصدير جميع البيانات
</button>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">رجوع</button>
</div>
</div>
</div>
</div>
<!-- جميع النوافذ المنبثقة -->
<?php endif; ?>
<script src="https://c...content-available-to-author-only...y.com/jquery-3.6.0.min.js"></script>
<script src="https://c...content-available-to-author-only...r.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
// معالجة تسجيل الدخول
$('#loginForm').submit(function(e) {
e.preventDefault();
$.post(window.location.href, {
action: 'login',
username: $('[name="username"]').val(),
password: $('[name="password"]').val()
}, function(res) {
if (res.success) location.reload();
else alert(res.error);
});
});
// دالة جلب الموظفين
function loadEmployees() {
$.post(window.location.href, {action: 'getEmployees'}, function(res) {
$('#employeesTable').html(res.data.map(emp => `
<tr>
<td>${emp.militaryNumber}</td>
<td>${emp.firstName}</td>
<td>${emp.lastName}</td>
<td>${emp.unit}</td>
<td>${emp.department}</td>
<td>${emp.section || '-'}</td>
<td>
<button class="btn btn-sm btn-warning" onclick="editEmployee('${emp.militaryNumber}')">
<i class="fas fa-edit"></i>
</button>
<button class="btn btn-sm btn-danger" onclick="deleteEmployee('${emp.militaryNumber}')">
<i class="fas fa-trash"></i>
</button>
</td>
</tr>
`).join(''));
});
}
// دالة الحفظ
function saveEmployee() {
const formData = $('#employeeForm').serializeArray();
const data = {action: 'saveEmployee'};
formData.forEach(item => data[item.name] = item.value);
$.post(window.location.href, data, function() {
loadEmployees();
$('#employeeFormModal').modal('hide');
});
}
// التهيئة الأولية
$(document).ready(function() {
loadEmployees();
loadDailyStatus();
});
</script>
</body>
</html>