diff --git a/client/src/components/Footer.jsx b/client/src/components/Footer.jsx new file mode 100644 index 0000000..f418e2e --- /dev/null +++ b/client/src/components/Footer.jsx @@ -0,0 +1 @@ +aW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7CgovLyBBbGwgY29tbWl0IHRpbWVzdGFtcHMgZnJvbSByZXBvIGhpc3RvcnkgKGVwb2NoIG1zKQovLyBTZXNzaW9ucyBhcmUgZ3JvdXBlZCBieSBjb21taXRzIHdpdGhpbiAyIGhvdXJzIG9mIGVhY2ggb3RoZXIuCi8vIFRpbWUgY2hhcmdlZCBwZXIgc2Vzc2lvbiA9IHNwYW4gb2YgY29tbWl0cyArIDMwIG1pbiBsZWFkIHRpbWUuCmNvbnN0IENPTU1JVF9USU1FU1RBTVBTID0gWwogIC8vIE1hcmNoIDYgLS0gZGF5IDEKICAxNzQxMjgwNzE3MDAwLCAvLyAyMDI2LTAzLTA2VDEyOjA1OjE3LTA2OjAwCiAgMTc0MTI4MTU5NTAwMCwgLy8gMTI6MTk6NTUKICAxNzQxMjgxNzMxMDAwLCAvLyAxMjoyMDo1MQogIDE3NDEyODIwNjcwMDAsIC8vIDEyOjI0OjI3CiAgMTc0MTI4MjE2MDAwMCwgLy8gMTI6MjY6MDAKICAXNDE0MTI4MjQxMTAwMCwgLy8gMTI6Mjg6MTEKICAxNzQxMjg0NjQwMDAwLCAvLyAxMjo1NDo1MgogIDE3NDEyODU4MDUwMDAsIC8vIDEzOjQ2OjQ1CiAgMTc0MTI4NjIyMDAwMCwgLy8gMTM6NTA6MjUKICAxNzQxMjg2NjI1MDAwLCAvLyAxMzo1MDo0MgogIDE3NDEyODY3OTkwMDAsIC8vIDEzOjU2OjM2CiAgMTc0MTI4NzIzNTAwMCwgLy8gMTQ6MTE6MTkKICAxNzQxMjg3MjU2MDAwLCAvLyAxNDoxMTozNgogIDE3NDEyODcyNjYwMDAsIC8vIDE0OjExOjQ2CiAgMTc0MTI4NzI3MjAwMCwgLy8gMTQ6MTI6MDAKICAXNDE0MTI4NzMwNTAwMCwgLy8gMTQ6MTM6MTUKICAxNzQxMjg3OTExMDAwLCAvLyAxNDoxNTowNQogIDE3NDEyODg2NTcwMDAsIC8vIDE0OjIzOjE5CiAgMTc0MTI4OTA3OTAwMCwgLy8gMTQ6MjM6NDQKICAXNDE0MTI4OTE3NzAwMCwgLy8gMTQ6MzguMjkKICAxNzQxMjkwMDI0MDAwLCAvLyAxNDo1OTo1NQogIDE3NDEyOTAxNjkwMDAsIC8vIDE1OjAwOjI3CiAgMTc0MTI5MDcwNjAwMCwgLy8gMTU6MDE6MDQKICAXNDE0MTI5MTU0ODAwMCwgLy8gMTU6MjU6NDgKICAxNzQxMjkxNTg4MDAwLCAvLyAxNToyNjo2CiAgMTc0MTI5MjgzODAwMCwgLy8gMTU6Mzg6MjAKICAxNzQxMjkzMzU3MDAwLCAvLyAxNTo0NDozNAogIDE3NDEyOTQ4NjkwMDAsIC8vIDE3OjE5OjU3CiAgMTc0MTI5NTAzNDAwMCwgLy8gMTc6MjA6NDIKICAXNDE0MTI5NTcxNDAwMCwgLy8gMTc6Mzg6NDUKICAXNDE0MTI5NTgxNDAwMCwgLy8gMTc6Mzk6NDgKICAxNzQxMjk1ODgwMDAwLCAvLyAxNzo0MzowMAogIDE3NDEyOTY4MDEwMDAsIC8vIDE4OjAwOjAxCiAgMTc0MTMzMzc5OTAwMCwgLy8gMjM6Mjg6MjgKICAxNzQxMzM0MDg0MDAwLCAvLyAyMzoyMToyNAogIC8vIE1hcmNoIDcgLS0gZGF5IDIKICAxNzQxNDA1MDMxMDAwLCAvLyAxOTowMjoxMQogIDE3NDEzOTkyNzcwMDAsIC8vIDE5OjAwOjAyCiAgMTc0MTM5OTI4NzAwMCwgLy8gMTk6MDA6MDIKICAxNzQxNDAwNTA4MDAwLCAvLyAxOTowMjo1NAogIDE3NDE0MDUxNjcwMDAsIC8vIDE5OjAyOjExCiAgMTc0MTQxNzk2NTAwMCwgLy8gMjE6Mjg6NDUKICAXNDE0MTQxNzk4NTAwMCwgLy8gMjE6Mjk6MDUKICAXNDE0MTQxODA2NzAwMCwgLy8gMjE6MzA6MjkKICAxNzQxNDE4MTE1MDAwLCAvLyAyMTozMDo0NwogIDE3NDE0MTgxOTIwMDAsIC8vIDIxOjMxOjA1CiAgMTc0MTQxODQ3NTAwMCwgLy8gMjE6MzI6MTUKICAXNDE0MTQxOTA2NTAwMCwgLy8gMjE6MzI6MDUKICAXNDE0MTQxOTU5OTAwMCwgLy8gMjE6Mzk6MDEKICAXNDE0MTQyMDA0MjAwMCwgLy8gMjE6NDA6MzYKICAxNzQxNDIwNTkxMDAwLCAvLyAyMTo0NjozMAogIDE3NDE0MjEyOTAwMDAsIC8vIDIxOjQ3OjI0CiAgMTc0MTQyMTM5NTAwMCwgLy8gMjE6NDY6MzAKICAxNzQxNDIxNDY3MDAwLCAvLyAyMTo0NzoyNAogIDE3NDE0MjIwMzQwMDAsIC8vIDIyOjAyOjM0CiAgMTc0MTQyMjA5NTAwMCwgLy8gMjI6MDE6MzUKICAxNzQxNDIyNTA4MDAwLCAvLyAyMjowMjo1NAogIDE3NDE0MjI1NTgwMDAsIC8vIDIyOjAzOjAwCiAgMTc0MTQyOTc2NzAwMCwgLy8gMjM6MTM6MjYKICAxNzQxNDI5OTA3MDAwLCAvLyAyMzoxNDo0MAogIDE3NDE0MzAyMTUwMDAsIC8vIDIzOjE1OjE1CiAgMTc0MTQzMDM2NzAwMCwgLy8gMjM6MTY6MDcKXTsKCi8vIENhbGN1bGF0ZSBjdW11bGF0aXZlIGRldiBob3VycyB1c2luZyBzZXNzaW9uLWJhc2VkIGdyb3VwaW5nLgovLyBTZXNzaW9uIGdhcCB0aHJlc2hvbGQ6IDIgaG91cnMuIEVhY2ggc2Vzc2lvbiBhbHNvIGdldHMgYSAzMC1taW4KLy8gbGVhZCB0aW1lIGJ1ZmZlciAoY29kaW5nIGhhcHBlbnMgYmVmb3JlIHRoZSBmaXJzdCBjb21taXQpLgpmdW5jdGlvbiBjYWxjRGV2TWluKCkgewogIGNvbnN0IHRpbWVzID0gWy4uLkNPTU1JVF9USU1FU1RBTVBTXS5zb3J0KChhLCBiKSA9PiBhIC0gYik7CiAgY29uc3QgR0FQX01TID0gMiAqIDYwICogNjAgKiAxMDAwOyAvLyAyIGhvdXJzCiAgY29uc3QgTEVBRF9NUyA9IDMwICogNjAgKiAxMDAwOyAgICAvLyAzMCBtaW4gbGVhZCBidWZmZXIKICBsZXQgdG90YWxNcyA9IDA7CiAgbGV0IHNlc3Npb25TdGFydCA9IHRpbWVzWzBdOwogIGxldCBzZXNzaW9uRW5kID0gdGltZXNbMF07CiAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aW1lcy5sZW5ndGg7IGkrKykgewogICAgaWYgKHRpbWVzW2ldIC0gc2Vzc2lvbkVuZCA+IEdBUF9NUykgewogICAgICB0b3RhbE1zICs9IChzZXNzaW9uRW5kIC0gc2Vzc2lvblN0YXJ0KSArIExFQURfTVM7CiAgICAgIHNlc3Npb25TdGFydCA9IHRpbWVzW2ldOwogICAgfQogICAgc2Vzc2lvbkVuZCA9IHRpbWVzW2ldOwogIH0KICB0b3RhbE1zICs9IChzZXNzaW9uRW5kIC0gc2Vzc2lvblN0YXJ0KSArIExFQURfTVM7CiAgcmV0dXJuIE1hdGgucm91bmQodG90YWxNcyAvIDYwMDAwKTsgLy8gcmV0dXJuIG1pbnV0ZXMKfQoKLy8gQmFzZSBkZXYgbWludXRlcyBjYWxjdWxhdGVkIGZyb20gY29tbWl0IGhpc3RvcnkKY29uc3QgQkFTRV9ERVZfTUlOID0gY2FsY0Rldk1pbigpOwovLyBUaW1lc3RhbXAgb2YgdGhlIGxhc3Qga25vd24gY29tbWl0ICh0aWNrZXIgY291bnRzIHVwIGZyb20gaGVyZSkKY29uc3QgTEFTVF9DT01NSVRfVFMgPSAxNzQxNDMwMzY3MDAwOyAvLyAyMDI2LTAzLTA3VDIzOjE2OjA3LTA2OjAwCgpmdW5jdGlvbiBmb3JtYXRUaW1lKG1pbnV0ZXMpIHsKICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihtaW51dGVzIC8gMTQ0MCk7CiAgY29uc3QgaHJzICA9IE1hdGguZmxvb3IoKG1pbnV0ZXMgJSAxNDQwKSAvIDYwKTsKICBjb25zdCBtaW5zID0gbWludXRlcyAlIDYwOwogIGlmIChkYXlzID4gMCkgcmV0dXJuIGAke2RheXN9ZCAke1N0cmluZyhocnMpLnBhZFN0YXJ0KDIsICcwJyl9aCR7U3RyaW5nKG1pbnMpLnBhZFN0YXJ0KDIsICcwJyl9bWA7CiAgcmV0dXJuIGAke1N0cmluZyhocnMpLnBhZFN0YXJ0KDIsICcwJyl9aCR7U3RyaW5nKG1pbnMpLnBhZFN0YXJ0KDIsICcwJyl9bWA7Cn0KCmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEZvb3RlcigpIHsKICBjb25zdCBbdGlja01pbiwgc2V0VGlja01pbl0gPSB1c2VTdGF0ZSgoKSA9PiB7CiAgICBjb25zdCBlbGFwc2VkTWluID0gTWF0aC5mbG9vcigoRGF0ZS5ub3coKSAtIExBU1RfQ09NTUlUX1RTKSA9PSAwID8gMCA6IChEYXRlLm5vdygpIC0gTEFTVF9DT01NSVRfVFMpIC8gNjAwMDApOwogICAgcmV0dXJuIEJBU0VfREVWX01JTiArIE1hdGgubWF4KDAsIGVsYXBzZWRNaW4pOwogIH0pOwoKICB1c2VFZmZlY3QoKCkgPT4gewogICAgY29uc3QgaWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7CiAgICAgIGNvbnN0IGVsYXBzZWRNaW4gPSBNYXRoLmZsb29yKChEYXRlLm5vdygpIC0gTEFTVF9DT01NSVRfVFMpIC8gNjAwMDApOwogICAgICBzZXRUaWNrTWluKEJBU0VfREVWX01JTiArIE1hdGgubWF4KDAsIGVsYXBzZWRNaW4pKTsKICAgIH0sIDYwMDAwKTsgLy8gdXBkYXRlIGV2ZXJ5IG1pbnV0ZQogICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaWQpOwogIH0sIFtdKTsKCiAgcmV0dXJuICgKICAgIDxmb290ZXIgc3R5bGU9e3N0eWxlcy5mb290ZXJ9PgogICAgICA8ZGl2IHN0eWxlPXtzdHlsZXMubGVmdH0+CiAgICAgICAgPHNwYW4gc3R5bGU9e3N0eWxlcy5jb3B5cmlnaHR9PgogICAgICAgICAgJmNvcHk7IHtuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCl9IEphc29uIFN0ZWR3ZWxsCiAgICAgICAgPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLmNlbnRlcn0+CiAgICAgICAgPHNwYW4gc3R5bGU9e3N0eWxlcy5wcm9kdWN0fT5DUEFTIFR5YWNrZXI8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IHN0eWxlPXtzdHlsZXMucmlnaHR9PgogICAgICAgIDxzcGFuIHN0eWxlPXtzdHlsZXMuZGV2TGFiZWx9PuKqkiBEZXYgdGltZTwvc3Bhbj4KICAgICAgICA8c3BhbiBzdHlsZT17c3R5bGVzLnRpY2tlcn0+e2Zvcm1hdFRpbWUodGlja01pbil9PC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZm9vdGVyPgogICk7Cn0KCmNvbnN0IHN0eWxlcyA9IHsKICBmb290ZXI6IHsKICAgIGRpc3BsYXk6ICdmbGV4JywKICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLAogICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJywKICAgIHBhZGRpbmc6ICcxNHB4IDQwcHgnLAogICAgYm9yZGVyVG9wOiAnMXB4IHNvbGlkICMxZTFmMjgnLAogICAgYmFja2dyb3VuZDogJyMwMDAwMDAnLAogICAgbWFyZ2luVG9wOiAnNDBweCcsCiAgfSwKICBsZWZ0OiB7CiAgICBmbGV4OiAxLAogIH0sCiAgY2VudGVyOiB7CiAgICBmbGV4OiAxLAogICAgdGV4dEFsaWduOiAnY2VudGVyJywKICB9LAogIHJpZ2h0OiB7CiAgICBmbGV4OiAxLAogICAgZGlzcGxheTogJ2ZsZXgnLAogICAgYWxpZ25JdGVtczogJ2NlbnRlcicsCiAgICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtZW5kJywKICAgIGdhcDogJzhweCcsCiAgfSwKICBjb3B5cmlnaHQ6IHsKICAgIGZvbnRTaXplOiAnMTFweCcsCiAgICBjb2xvcjogJyM0ZTUwNjYnLAogICAgbGV0dGVyU3BhY2luZzogJzAuM3B4JywKICB9LAogIHByb2R1Y3Q6IHsKICAgIGZvbnRTaXplOiAnMTFweCcsCiAgICBjb2xvcjogJyMzMTMyM2UnLAogICAgZm9udFdlaWdodDogNjAwLAogICAgbGV0dGVyU3BhY2luZzogJzAuNXB4JywKICAgIHRleHRUcmFuc2Zvcm06ICd1cHBlcmNhc2UnLAogIH0sCiAgZGV2TGFiZWw6IHsKICAgIGZvbnRTaXplOiAnMTBweCcsCiAgICBjb2xvcjogJyMzNTM2NDYnLAogICAgdGV4dFRyYW5zZm9ybTogJ3VwcGVyY2FzZScsCiAgICBsZXR0ZXJTcGFjaW5nOiAnMC40cHgnLAogIH0sCiAgdGlja2VyOiB7CiAgICBmb250U2l6ZTogJzEycHgnLAogICAgZm9udFdlaWdodDogNzAwLAogICAgY29sb3I6ICcjZDRhZjM3JywKICAgIGZvbnRGYW1pbHk6ICdtb25vc3BhY2UnLAogICAgbGV0dGVyU3BhY2luZzogJzAuNXB4JywKICB9LAp9Owo= \ No newline at end of file