{"data":{"format":"sidebud-widget-pack","formatVersion":2,"exportedAt":"2026-09-26T11:44:50.181Z","manifest":{"id":"dev.remotevoiceagent.calendar","mcp":{"env":{"GOOGLE_ACCESS_TOKEN":"{{oauth.accessToken}}"},"args":["server/index.mjs"],"command":"node","transport":"stdio"},"auth":{"type":"oauth2","scopes":["https://www.googleapis.com/auth/calendar.calendarlist.readonly","https://www.googleapis.com/auth/calendar.events.readonly","https://www.googleapis.com/auth/calendar.events.freebusy"],"tokenUrl":"https://oauth2.googleapis.com/token","clientIdSecret":"GOOGLE_OAUTH_CLIENT_ID","authorizationUrl":"https://accounts.google.com/o/oauth2/v2/auth","clientSecretSecret":"GOOGLE_OAUTH_CLIENT_SECRET","authorizationParams":{"prompt":"consent","access_type":"offline"}},"data":[{"id":"upcoming","tool":"list_events","arguments":{"pageSize":20,"calendarId":"{{setting.calendarId}}"},"refreshSeconds":60}],"logo":{"kind":"file","path":"logo.png"},"name":"Calendar","tile":{"size":"medium"},"setup":{"steps":["In a Google Cloud project, enable the Google Calendar API and create a Desktop OAuth client.","Save the OAuth client ID and secret as the pack keys, then connect the Google account on this computer."],"prerequisites":[{"name":"Node.js","command":"node"}]},"skill":{"path":"SKILL.md"},"author":{"name":"Sidebud"},"blocks":[{"item":{"title":"{{item/summary}}","subtitle":"{{item/startsAt}}"},"type":"list","items":"{{upcoming/events}}","limit":10,"emptyText":"No upcoming events."}],"glance":{"stats":[{"tone":"info","label":"Next 7 days","value":"{{upcoming/events|count}}"}]},"license":"MIT","listing":{"account":"Google account","category":"productivity","homepage":"https://developers.google.com/calendar","connectsTo":"The Google Calendar API, through the server in this pack"},"preview":{"at":"2026-09-25T09:00:00.000Z","data":{"upcoming":{"events":[{"summary":"Design review","startsAt":"2026-09-25T10:30:00.000Z"},{"summary":"Lunch with Priya","startsAt":"2026-09-25T13:00:00.000Z"},{"summary":"Dentist","startsAt":"2026-09-26T11:00:00.000Z"},{"summary":"Quarterly planning","startsAt":"2026-09-27T11:00:00.000Z"}]}}},"secrets":[{"name":"GOOGLE_OAUTH_CLIENT_ID","description":"Desktop OAuth client ID with Calendar API enabled"},{"name":"GOOGLE_OAUTH_CLIENT_SECRET","description":"Desktop OAuth client secret"}],"version":"2.0.0","controls":[{"id":"agenda","kind":"prompt","label":"Read my agenda","prompt":"Summarize my upcoming calendar events.","default":true}],"settings":[{"id":"calendarId","type":"text","label":"Calendar ID","default":"primary","description":"Use primary for your main calendar."}],"description":"Upcoming events and calendar availability. Read-only Google API access stays on your computer.","permissions":{"tools":[{"name":"list_calendars","access":"read","description":"List calendars"},{"name":"list_events","access":"read","description":"Read upcoming events"},{"name":"get_event","access":"read","description":"Read one event"},{"name":"get_free_busy","access":"read","description":"Read availability"}],"network":["www.googleapis.com","accounts.google.com","oauth2.googleapis.com"]},"schemaVersion":3,"contentHash":"sha256:8e34f253a4a2bf2512d5c8ba3acd0b91463c7c658f636c7511149b4d5750559b"},"files":{"logo.png":"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","server/index.mjs":"Ly8gR29vZ2xlIENhbGVuZGFyIE1DUCBzZXJ2ZXIgZm9yIHRoaXMgcGFjazogcmVhZC1vbmx5LCBmaXhlZCBDYWxlbmRhciBBUEkKLy8gZW5kcG9pbnRzLiBUaGUgY29tcGFuaW9uIHBhc3NlcyB0aGUgYWNjb3VudCdzIE9BdXRoIGFjY2VzcyB0b2tlbiBpbgovLyBHT09HTEVfQUNDRVNTX1RPS0VOIGFuZCByZXN0YXJ0cyB0aGlzIHNlcnZlciB3aGVuIHRoZSB0b2tlbiByZWZyZXNoZXMuCmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCcKaW1wb3J0IHsgYXJnLCBzZXJ2ZSB9IGZyb20gJy4vbWNwLm1qcycKCmNvbnN0IEJBU0UgPSAnaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vY2FsZW5kYXIvdjMvJwpjb25zdCByZWFkID0geyByZWFkT25seUhpbnQ6IHRydWUsIGRlc3RydWN0aXZlSGludDogZmFsc2UsIGlkZW1wb3RlbnRIaW50OiB0cnVlIH0KY29uc3QgSUQgPSAvXlteLz8jXHNdezEsNTAwfSQvCmNvbnN0IFdFRUtfTVMgPSA3ICogMjQgKiA2MCAqIDYwXzAwMAoKLyoqIE5hbWVzIHRoZSBhY3R1YWwgY2F1c2UgZnJvbSBHb29nbGUncyBlcnJvciByZWFzb247IHRoZSByZXNwb25zZSdzIG1lc3NhZ2UgdGV4dCBpcyBub3QgZWNob2VkLiAqLwpleHBvcnQgZnVuY3Rpb24gZ29vZ2xlRmFpbHVyZShzdGF0dXMsIGJvZHkpIHsKICBjb25zdCBlcnJvciA9IGJvZHkgJiYgdHlwZW9mIGJvZHkgPT09ICdvYmplY3QnICYmIGJvZHkuZXJyb3IgJiYgdHlwZW9mIGJvZHkuZXJyb3IgPT09ICdvYmplY3QnID8gYm9keS5lcnJvciA6IG51bGwKICBjb25zdCByZWFzb25zID0gW2Vycm9yPy5zdGF0dXMsIC4uLihBcnJheS5pc0FycmF5KGVycm9yPy5kZXRhaWxzKSA/IGVycm9yLmRldGFpbHMgOiBbXSkubWFwKChkKSA9PiBkPy5yZWFzb24pLCAuLi4oQXJyYXkuaXNBcnJheShlcnJvcj8uZXJyb3JzKSA/IGVycm9yLmVycm9ycyA6IFtdKS5tYXAoKGUpID0+IGU/LnJlYXNvbildLmZpbHRlcigocikgPT4gdHlwZW9mIHIgPT09ICdzdHJpbmcnICYmIHIpCiAgY29uc3QgaGFzID0gKC4uLm5hbWVzKSA9PiByZWFzb25zLnNvbWUoKHJlYXNvbikgPT4gbmFtZXMuaW5jbHVkZXMocmVhc29uKSkKICBpZiAoc3RhdHVzID09PSA0MjkgfHwgaGFzKCdSQVRFX0xJTUlUX0VYQ0VFREVEJywgJ1JFU09VUkNFX0VYSEFVU1RFRCcsICdyYXRlTGltaXRFeGNlZWRlZCcsICd1c2VyUmF0ZUxpbWl0RXhjZWVkZWQnLCAncXVvdGFFeGNlZWRlZCcpKQogICAgcmV0dXJuICdHb29nbGUgaXMgcmF0ZS1saW1pdGluZyBDYWxlbmRhciByZXF1ZXN0cyBmb3IgdGhpcyBhY2NvdW50LiBUaGUgd2lkZ2V0IGtlZXBzIGl0cyBsYXN0IHJlc3VsdHMgYW5kIHJldHJpZXMgb24gaXRzIG5leHQgcmVmcmVzaC4nCiAgaWYgKGhhcygnU0VSVklDRV9ESVNBQkxFRCcsICdhY2Nlc3NOb3RDb25maWd1cmVkJykpIHJldHVybiAnVGhlIENhbGVuZGFyIEFQSSBpcyBub3QgZW5hYmxlZCBpbiB0aGUgR29vZ2xlIENsb3VkIHByb2plY3QgZm9yIHRoaXMgT0F1dGggY2xpZW50LiBFbmFibGUgaXQsIHRoZW4gYWxsb3cgYSBmZXcgbWludXRlcy4nCiAgaWYgKGhhcygnQUNDRVNTX1RPS0VOX1NDT1BFX0lOU1VGRklDSUVOVCcsICdpbnN1ZmZpY2llbnRQZXJtaXNzaW9ucycpKSByZXR1cm4gJ1RoaXMgR29vZ2xlIGFjY291bnQgZGlkIG5vdCBncmFudCB0aGUgQ2FsZW5kYXIgcGVybWlzc2lvbiB0aGlzIG5lZWRzLiBSZWNvbm5lY3QgaXQgb24gdGhlIGNvbXB1dGVyLicKICBpZiAoc3RhdHVzID09PSA0MDMpIHJldHVybiBgR29vZ2xlIGRlbmllZCB0aGlzIENhbGVuZGFyIHJlcXVlc3QgKCR7cmVhc29uc1swXSA/PyAnZm9yYmlkZGVuJ30pLmAKICByZXR1cm4gYEdvb2dsZSBDYWxlbmRhciByZXF1ZXN0IGZhaWxlZCAoJHtzdGF0dXN9JHtyZWFzb25zWzBdID8gYCwgJHtyZWFzb25zWzBdfWAgOiAnJ30pLmAKfQoKLyoqIFRoZSBzZXJ2ZXIncyB0b29sczsgYHRva2VuKClgIHJlYWRzIHRoZSBjdXJyZW50IGFjY2VzcyB0b2tlbi4gKi8KZXhwb3J0IGZ1bmN0aW9uIGNhbGVuZGFyVG9vbHMoeyB0b2tlbiwgZmV0Y2ggPSBnbG9iYWxUaGlzLmZldGNoLCBub3cgPSAoKSA9PiBuZXcgRGF0ZSgpIH0pIHsKICBhc3luYyBmdW5jdGlvbiByZXF1ZXN0KHBhdGgsIHBhcmFtcyA9IHt9LCBib2R5KSB7CiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHRva2VuKCkKICAgIGlmICghYWNjZXNzVG9rZW4pIHRocm93IG5ldyBFcnJvcignQ29ubmVjdCB0aGlzIEdvb2dsZSBhY2NvdW50IG9uIHRoZSBjb21wdXRlciBmaXJzdC4nKQogICAgY29uc3QgdXJsID0gbmV3IFVSTChCQVNFICsgcGF0aCkKICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKSBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgdXJsLnNlYXJjaFBhcmFtcy5zZXQobmFtZSwgdmFsdWUpCiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgewogICAgICBtZXRob2Q6IGJvZHkgPyAnUE9TVCcgOiAnR0VUJywKICAgICAgcmVkaXJlY3Q6ICdlcnJvcicsCiAgICAgIHNpZ25hbDogQWJvcnRTaWduYWwudGltZW91dCgyMF8wMDApLAogICAgICBoZWFkZXJzOiB7IGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthY2Nlc3NUb2tlbn1gLCAuLi4oYm9keSA/IHsgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9IDoge30pIH0sCiAgICAgIC4uLihib2R5ID8geyBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSB9IDoge30pLAogICAgfSkKICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMSkgdGhyb3cgbmV3IEVycm9yKCdHb29nbGUgYXV0aG9yaXphdGlvbiBleHBpcmVkIG9yIHdhcyByZXZva2VkLiBSZWNvbm5lY3QgdGhpcyBhY2NvdW50LicpCiAgICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoZ29vZ2xlRmFpbHVyZShyZXNwb25zZS5zdGF0dXMsIGF3YWl0IHJlc3BvbnNlLmpzb24oKS5jYXRjaCgoKSA9PiBudWxsKSkpCiAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpCiAgfQogIGNvbnN0IHBhZ2UgPSB7IHBhZ2VTaXplOiB7IHR5cGU6ICdpbnRlZ2VyJywgbWluaW11bTogMSwgbWF4aW11bTogNTAsIGRlZmF1bHQ6IDIwIH0sIHBhZ2VUb2tlbjogeyB0eXBlOiAnc3RyaW5nJywgbWF4TGVuZ3RoOiAyMDAwIH0gfQogIGNvbnN0IGNhbGVuZGFySWQgPSB7IHR5cGU6ICdzdHJpbmcnLCBtYXhMZW5ndGg6IDUwMCwgZGVmYXVsdDogJ3ByaW1hcnknIH0KICBjb25zdCBkYXRlVGltZSA9IHsgdHlwZTogJ3N0cmluZycsIGZvcm1hdDogJ2RhdGUtdGltZScgfQogIHJldHVybiBbCiAgICB7CiAgICAgIG5hbWU6ICdsaXN0X2NhbGVuZGFycycsCiAgICAgIGRlc2NyaXB0aW9uOiAnTGlzdCBjYWxlbmRhcnMgdGhlIGNvbm5lY3RlZCB1c2VyIGNhbiBhY2Nlc3MnLAogICAgICBpbnB1dFNjaGVtYTogeyB0eXBlOiAnb2JqZWN0JywgcHJvcGVydGllczogeyAuLi5wYWdlIH0gfSwKICAgICAgYW5ub3RhdGlvbnM6IHJlYWQsCiAgICAgIHJ1bjogYXN5bmMgKGFyZ3MpID0+IHsKICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3QoJ3VzZXJzL21lL2NhbGVuZGFyTGlzdCcsIHsgbWF4UmVzdWx0czogU3RyaW5nKGFyZy5pbnRlZ2VyKGFyZ3MsICdwYWdlU2l6ZScsIHsgbWluOiAxLCBtYXg6IDUwLCBmYWxsYmFjazogMjAgfSkpLCBwYWdlVG9rZW46IGFyZy5vcHRpb25hbFN0cmluZyhhcmdzLCAncGFnZVRva2VuJykgfSkKICAgICAgICByZXR1cm4geyBjYWxlbmRhcnM6IHJlc3BvbnNlLml0ZW1zID8/IFtdLCBuZXh0UGFnZVRva2VuOiByZXNwb25zZS5uZXh0UGFnZVRva2VuIH0KICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgIG5hbWU6ICdsaXN0X2V2ZW50cycsCiAgICAgIGRlc2NyaXB0aW9uOiAnUmVhZCB1cGNvbWluZyBldmVudHM7IGRlZmF1bHRzIHRvIHRoZSBuZXh0IHNldmVuIGRheXMuIFJlYWQgb25seS4nLAogICAgICBpbnB1dFNjaGVtYTogeyB0eXBlOiAnb2JqZWN0JywgcHJvcGVydGllczogeyBjYWxlbmRhcklkLCAuLi5wYWdlLCB0aW1lTWluOiBkYXRlVGltZSwgdGltZU1heDogZGF0ZVRpbWUgfSB9LAogICAgICBhbm5vdGF0aW9uczogcmVhZCwKICAgICAgcnVuOiBhc3luYyAoYXJncykgPT4gewogICAgICAgIGNvbnN0IGNhbGVuZGFyID0gYXJnLnN0cmluZyhhcmdzLCAnY2FsZW5kYXJJZCcsIHsgcGF0dGVybjogSUQsIGZhbGxiYWNrOiAncHJpbWFyeScgfSkKICAgICAgICBjb25zdCBzdGFydCA9IGFyZy5kYXRlVGltZShhcmdzLCAndGltZU1pbicpID8/IG5vdygpLnRvSVNPU3RyaW5nKCkKICAgICAgICBjb25zdCBlbmQgPSBhcmcuZGF0ZVRpbWUoYXJncywgJ3RpbWVNYXgnKSA/PyBuZXcgRGF0ZShEYXRlLnBhcnNlKHN0YXJ0KSArIFdFRUtfTVMpLnRvSVNPU3RyaW5nKCkKICAgICAgICBpZiAoRGF0ZS5wYXJzZShlbmQpIDw9IERhdGUucGFyc2Uoc3RhcnQpKSB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBlbmQgdGltZSBtdXN0IGJlIGFmdGVyIHRoZSBzdGFydCB0aW1lLicpCiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0KGBjYWxlbmRhcnMvJHtlbmNvZGVVUklDb21wb25lbnQoY2FsZW5kYXIpfS9ldmVudHNgLCB7CiAgICAgICAgICBtYXhSZXN1bHRzOiBTdHJpbmcoYXJnLmludGVnZXIoYXJncywgJ3BhZ2VTaXplJywgeyBtaW46IDEsIG1heDogNTAsIGZhbGxiYWNrOiAyMCB9KSksCiAgICAgICAgICBwYWdlVG9rZW46IGFyZy5vcHRpb25hbFN0cmluZyhhcmdzLCAncGFnZVRva2VuJyksCiAgICAgICAgICB0aW1lTWluOiBzdGFydCwKICAgICAgICAgIHRpbWVNYXg6IGVuZCwKICAgICAgICAgIHNpbmdsZUV2ZW50czogJ3RydWUnLAogICAgICAgICAgb3JkZXJCeTogJ3N0YXJ0VGltZScsCiAgICAgICAgfSkKICAgICAgICBjb25zdCBldmVudHMgPSAoQXJyYXkuaXNBcnJheShyZXNwb25zZS5pdGVtcykgPyByZXNwb25zZS5pdGVtcyA6IFtdKS5tYXAoKGV2ZW50KSA9PiAoeyAuLi5ldmVudCwgc3RhcnRzQXQ6IGV2ZW50LnN0YXJ0Py5kYXRlVGltZSA/PyBldmVudC5zdGFydD8uZGF0ZSA/PyAnJyB9KSkKICAgICAgICByZXR1cm4geyBldmVudHMsIG5leHRQYWdlVG9rZW46IHJlc3BvbnNlLm5leHRQYWdlVG9rZW4sIHRpbWVab25lOiByZXNwb25zZS50aW1lWm9uZSB9CiAgICAgIH0sCiAgICB9LAogICAgewogICAgICBuYW1lOiAnZ2V0X2V2ZW50JywKICAgICAgZGVzY3JpcHRpb246ICdSZWFkIG9uZSBjYWxlbmRhciBldmVudCcsCiAgICAgIGlucHV0U2NoZW1hOiB7IHR5cGU6ICdvYmplY3QnLCBwcm9wZXJ0aWVzOiB7IGNhbGVuZGFySWQsIGV2ZW50SWQ6IHsgdHlwZTogJ3N0cmluZycsIG1heExlbmd0aDogNTAwIH0gfSwgcmVxdWlyZWQ6IFsnZXZlbnRJZCddIH0sCiAgICAgIGFubm90YXRpb25zOiByZWFkLAogICAgICBydW46IChhcmdzKSA9PiByZXF1ZXN0KGBjYWxlbmRhcnMvJHtlbmNvZGVVUklDb21wb25lbnQoYXJnLnN0cmluZyhhcmdzLCAnY2FsZW5kYXJJZCcsIHsgcGF0dGVybjogSUQsIGZhbGxiYWNrOiAncHJpbWFyeScgfSkpfS9ldmVudHMvJHtlbmNvZGVVUklDb21wb25lbnQoYXJnLnN0cmluZyhhcmdzLCAnZXZlbnRJZCcsIHsgcGF0dGVybjogSUQgfSkpfWApLAogICAgfSwKICAgIHsKICAgICAgbmFtZTogJ2dldF9mcmVlX2J1c3knLAogICAgICBkZXNjcmlwdGlvbjogJ1JlYWQgYXZhaWxhYmlsaXR5IGZvciBzZWxlY3RlZCBjYWxlbmRhcnMnLAogICAgICBpbnB1dFNjaGVtYTogeyB0eXBlOiAnb2JqZWN0JywgcHJvcGVydGllczogeyBjYWxlbmRhcklkczogeyB0eXBlOiAnYXJyYXknLCBpdGVtczogeyB0eXBlOiAnc3RyaW5nJywgbWF4TGVuZ3RoOiA1MDAgfSwgbWluSXRlbXM6IDEsIG1heEl0ZW1zOiAyMCB9LCB0aW1lTWluOiBkYXRlVGltZSwgdGltZU1heDogZGF0ZVRpbWUgfSwgcmVxdWlyZWQ6IFsnY2FsZW5kYXJJZHMnLCAndGltZU1pbicsICd0aW1lTWF4J10gfSwKICAgICAgYW5ub3RhdGlvbnM6IHJlYWQsCiAgICAgIHJ1bjogKGFyZ3MpID0+IHsKICAgICAgICBjb25zdCBjYWxlbmRhcklkcyA9IGFyZy5saXN0KGFyZ3MsICdjYWxlbmRhcklkcycsIHsgbWluOiAxLCBtYXg6IDIwLCBpdGVtOiAoaWQpID0+IHR5cGVvZiBpZCA9PT0gJ3N0cmluZycgJiYgSUQudGVzdChpZCkgfSkKICAgICAgICBjb25zdCB0aW1lTWluID0gYXJnLmRhdGVUaW1lKGFyZ3MsICd0aW1lTWluJykKICAgICAgICBjb25zdCB0aW1lTWF4ID0gYXJnLmRhdGVUaW1lKGFyZ3MsICd0aW1lTWF4JykKICAgICAgICBpZiAoIXRpbWVNaW4gfHwgIXRpbWVNYXgpIHRocm93IG5ldyBFcnJvcigndGltZU1pbiBhbmQgdGltZU1heCBhcmUgcmVxdWlyZWQnKQogICAgICAgIGlmIChEYXRlLnBhcnNlKHRpbWVNYXgpIDw9IERhdGUucGFyc2UodGltZU1pbikpIHRocm93IG5ldyBFcnJvcignVGhlIGVuZCB0aW1lIG11c3QgYmUgYWZ0ZXIgdGhlIHN0YXJ0IHRpbWUuJykKICAgICAgICByZXR1cm4gcmVxdWVzdCgnZnJlZUJ1c3knLCB7fSwgeyB0aW1lTWluLCB0aW1lTWF4LCBpdGVtczogY2FsZW5kYXJJZHMubWFwKChpZCkgPT4gKHsgaWQgfSkpIH0pCiAgICAgIH0sCiAgICB9LAogIF0KfQoKaWYgKGltcG9ydC5tZXRhLnVybCA9PT0gcGF0aFRvRmlsZVVSTChwcm9jZXNzLmFyZ3ZbMV0gPz8gJycpLmhyZWYpIHsKICBzZXJ2ZSh7IG5hbWU6ICdzaWRlYnVkLXBhY2stY2FsZW5kYXInLCB2ZXJzaW9uOiAnMi4wLjAnLCB0b29sczogY2FsZW5kYXJUb29scyh7IHRva2VuOiAoKSA9PiBwcm9jZXNzLmVudi5HT09HTEVfQUNDRVNTX1RPS0VOID8/ICcnIH0pIH0pCn0K","server/mcp.mjs":"Ly8gQSBtaW5pbWFsIE1DUCBzZXJ2ZXIgb3ZlciBzdGRpbzogbmV3bGluZS1kZWxpbWl0ZWQgSlNPTi1SUEMgMi4wIHdpdGggdGhlCi8vIGluaXRpYWxpemUsIHBpbmcsIHRvb2xzL2xpc3QsIGFuZCB0b29scy9jYWxsIG1ldGhvZHMuIE5vIGRlcGVuZGVuY2llcywgc28gYQovLyBwYWNrJ3Mgc2VydmVyIHJ1bnMgd2l0aCBwbGFpbiBgbm9kZWAgYW5kIG5vdGhpbmcgdG8gaW5zdGFsbC4gQ29weSB0aGlzIGZpbGUKLy8gaW50byBhbnkgcGFjayB0aGF0IHNoaXBzIGl0cyBvd24gc2VydmVyLgppbXBvcnQgeyBjcmVhdGVJbnRlcmZhY2UgfSBmcm9tICdub2RlOnJlYWRsaW5lJwoKLyoqCiAqIEVhY2ggdG9vbCBpcyBgeyBuYW1lLCBkZXNjcmlwdGlvbiwgaW5wdXRTY2hlbWEsIGFubm90YXRpb25zLCBydW4gfWAsIHdoZXJlCiAqIGBydW4oYXJncylgIHJldHVybnMgSlNPTiBkYXRhIChzZW50IGFzIHN0cnVjdHVyZWQgY29udGVudCBhbmQgYXMgdGV4dCkgb3IKICogdGhyb3dzIGFuIEVycm9yIHdob3NlIG1lc3NhZ2UgdGhlIGNhbGxlciBzZWVzLgogKi8KZXhwb3J0IGZ1bmN0aW9uIHNlcnZlKHsgbmFtZSwgdmVyc2lvbiwgdG9vbHMgfSkgewogIGNvbnN0IHNlbmQgPSAobWVzc2FnZSkgPT4gcHJvY2Vzcy5zdGRvdXQud3JpdGUoYCR7SlNPTi5zdHJpbmdpZnkobWVzc2FnZSl9XG5gKQogIGNvbnN0IGhhbmRsZXJzID0gewogICAgaW5pdGlhbGl6ZTogKHBhcmFtcykgPT4gKHsgcHJvdG9jb2xWZXJzaW9uOiBwYXJhbXM/LnByb3RvY29sVmVyc2lvbiA/PyAnMjAyNS0wNi0xOCcsIGNhcGFiaWxpdGllczogeyB0b29sczoge30gfSwgc2VydmVySW5mbzogeyBuYW1lLCB2ZXJzaW9uIH0gfSksCiAgICBwaW5nOiAoKSA9PiAoe30pLAogICAgJ3Rvb2xzL2xpc3QnOiAoKSA9PiAoeyB0b29sczogdG9vbHMubWFwKCh7IHJ1bjogX3J1biwgLi4udG9vbCB9KSA9PiB0b29sKSB9KSwKICAgICd0b29scy9jYWxsJzogKHBhcmFtcykgPT4gY2FsbFRvb2wodG9vbHMsIHBhcmFtcz8ubmFtZSwgcGFyYW1zPy5hcmd1bWVudHMgPz8ge30pLAogIH0KICBjb25zdCBpbnB1dCA9IGNyZWF0ZUludGVyZmFjZSh7IGlucHV0OiBwcm9jZXNzLnN0ZGluIH0pCiAgaW5wdXQub24oJ2xpbmUnLCBhc3luYyAobGluZSkgPT4gewogICAgbGV0IG1lc3NhZ2UKICAgIHRyeSB7CiAgICAgIG1lc3NhZ2UgPSBKU09OLnBhcnNlKGxpbmUpCiAgICB9IGNhdGNoIHsKICAgICAgcmV0dXJuCiAgICB9CiAgICAvLyBOb3RpZmljYXRpb25zIChubyBpZCkgbmVlZCBubyByZXBseS4KICAgIGlmIChtZXNzYWdlPy5pZCA9PT0gdW5kZWZpbmVkIHx8IG1lc3NhZ2UuaWQgPT09IG51bGwpIHJldHVybgogICAgY29uc3QgaGFuZGxlciA9IGhhbmRsZXJzW21lc3NhZ2UubWV0aG9kXQogICAgaWYgKCFoYW5kbGVyKSByZXR1cm4gc2VuZCh7IGpzb25ycGM6ICcyLjAnLCBpZDogbWVzc2FnZS5pZCwgZXJyb3I6IHsgY29kZTogLTMyNjAxLCBtZXNzYWdlOiBgTWV0aG9kIG5vdCBmb3VuZDogJHttZXNzYWdlLm1ldGhvZH1gIH0gfSkKICAgIHRyeSB7CiAgICAgIHNlbmQoeyBqc29ucnBjOiAnMi4wJywgaWQ6IG1lc3NhZ2UuaWQsIHJlc3VsdDogYXdhaXQgaGFuZGxlcihtZXNzYWdlLnBhcmFtcykgfSkKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIHNlbmQoeyBqc29ucnBjOiAnMi4wJywgaWQ6IG1lc3NhZ2UuaWQsIGVycm9yOiB7IGNvZGU6IC0zMjYwMywgbWVzc2FnZTogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpIH0gfSkKICAgIH0KICB9KQogIGlucHV0Lm9uKCdjbG9zZScsICgpID0+IHByb2Nlc3MuZXhpdCgwKSkKfQoKLyoqIFJ1bnMgb25lIHRvb2w7IGZhaWx1cmVzIGJlY29tZSBhbiBlcnJvciByZXN1bHQgdGhlIGFnZW50IGNhbiByZWFkLCBuZXZlciBhIGNyYXNoLiAqLwpleHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsbFRvb2wodG9vbHMsIG5hbWUsIGFyZ3MpIHsKICBjb25zdCB0b29sID0gdG9vbHMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUubmFtZSA9PT0gbmFtZSkKICBpZiAoIXRvb2wpIHJldHVybiB7IGNvbnRlbnQ6IFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogYFVua25vd24gdG9vbCAke25hbWV9YCB9XSwgaXNFcnJvcjogdHJ1ZSB9CiAgdHJ5IHsKICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0b29sLnJ1bihhcmdzKQogICAgcmV0dXJuIHsgY29udGVudDogW3sgdHlwZTogJ3RleHQnLCB0ZXh0OiBKU09OLnN0cmluZ2lmeShkYXRhKSB9XSwgc3RydWN0dXJlZENvbnRlbnQ6IGRhdGEgfQogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICByZXR1cm4geyBjb250ZW50OiBbeyB0eXBlOiAndGV4dCcsIHRleHQ6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSB9XSwgaXNFcnJvcjogdHJ1ZSB9CiAgfQp9CgovKiogQXJndW1lbnQgY2hlY2tzIHRoYXQgdGhyb3cgYSByZWFkYWJsZSBtZXNzYWdlOyBlYWNoIHJldHVybnMgdGhlIHZhbHVlIG9yIGl0cyBkZWZhdWx0LiAqLwpleHBvcnQgY29uc3QgYXJnID0gewogIHN0cmluZyhhcmdzLCBrZXksIHsgbWF4ID0gNTAwLCBwYXR0ZXJuLCBmYWxsYmFjayB9ID0ge30pIHsKICAgIGNvbnN0IHZhbHVlID0gYXJnc1trZXldID8/IGZhbGxiYWNrCiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCAhdmFsdWUubGVuZ3RoIHx8IHZhbHVlLmxlbmd0aCA+IG1heCB8fCAocGF0dGVybiAmJiAhcGF0dGVybi50ZXN0KHZhbHVlKSkpIHRocm93IG5ldyBFcnJvcihgJHtrZXl9IGlzIG1pc3Npbmcgb3IgaW52YWxpZGApCiAgICByZXR1cm4gdmFsdWUKICB9LAogIG9wdGlvbmFsU3RyaW5nKGFyZ3MsIGtleSwgeyBtYXggPSAyXzAwMCB9ID0ge30pIHsKICAgIGNvbnN0IHZhbHVlID0gYXJnc1trZXldCiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZAogICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgfHwgdmFsdWUubGVuZ3RoID4gbWF4KSB0aHJvdyBuZXcgRXJyb3IoYCR7a2V5fSBpcyBpbnZhbGlkYCkKICAgIHJldHVybiB2YWx1ZQogIH0sCiAgaW50ZWdlcihhcmdzLCBrZXksIHsgbWluLCBtYXgsIGZhbGxiYWNrIH0pIHsKICAgIGNvbnN0IHZhbHVlID0gYXJnc1trZXldID8/IGZhbGxiYWNrCiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIodmFsdWUpIHx8IHZhbHVlIDwgbWluIHx8IHZhbHVlID4gbWF4KSB0aHJvdyBuZXcgRXJyb3IoYCR7a2V5fSBtdXN0IGJlIGEgd2hvbGUgbnVtYmVyIGZyb20gJHttaW59IHRvICR7bWF4fWApCiAgICByZXR1cm4gdmFsdWUKICB9LAogIGJvb2xlYW4oYXJncywga2V5LCBmYWxsYmFjaykgewogICAgY29uc3QgdmFsdWUgPSBhcmdzW2tleV0gPz8gZmFsbGJhY2sKICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJykgdGhyb3cgbmV3IEVycm9yKGAke2tleX0gbXVzdCBiZSB0cnVlIG9yIGZhbHNlYCkKICAgIHJldHVybiB2YWx1ZQogIH0sCiAgb25lT2YoYXJncywga2V5LCBvcHRpb25zLCBmYWxsYmFjaykgewogICAgY29uc3QgdmFsdWUgPSBhcmdzW2tleV0gPz8gZmFsbGJhY2sKICAgIGlmICghb3B0aW9ucy5pbmNsdWRlcyh2YWx1ZSkpIHRocm93IG5ldyBFcnJvcihgJHtrZXl9IG11c3QgYmUgb25lIG9mICR7b3B0aW9ucy5qb2luKCcsICcpfWApCiAgICByZXR1cm4gdmFsdWUKICB9LAogIGxpc3QoYXJncywga2V5LCB7IG1pbiA9IDAsIG1heCA9IDIwLCBpdGVtIH0pIHsKICAgIGNvbnN0IHZhbHVlID0gYXJnc1trZXldCiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IHZhbHVlLmxlbmd0aCA8IG1pbiB8fCB2YWx1ZS5sZW5ndGggPiBtYXggfHwgIXZhbHVlLmV2ZXJ5KGl0ZW0pKSB0aHJvdyBuZXcgRXJyb3IoYCR7a2V5fSBpcyBtaXNzaW5nIG9yIGludmFsaWRgKQogICAgcmV0dXJuIHZhbHVlCiAgfSwKICBkYXRlVGltZShhcmdzLCBrZXksIGZhbGxiYWNrKSB7CiAgICBjb25zdCB2YWx1ZSA9IGFyZ3Nba2V5XSA/PyBmYWxsYmFjawogICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQKICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnIHx8ICEvXlxkezR9LVxkezJ9LVxkezJ9VFxkezJ9OlxkezJ9KDpcZHsyfShcLlxkKyk/KT8oWnxbKy1dXGR7Mn06XGR7Mn0pJC8udGVzdCh2YWx1ZSkpIHRocm93IG5ldyBFcnJvcihgJHtrZXl9IG11c3QgYmUgYW4gSVNPIGRhdGUtdGltZSB3aXRoIGEgdGltZSB6b25lYCkKICAgIHJldHVybiB2YWx1ZQogIH0sCn0K","SKILL.md":"LS0tCm5hbWU6IENhbGVuZGFyCmRlc2NyaXB0aW9uOiBSZWFkIHRoZSB1c2VyJ3MgR29vZ2xlIENhbGVuZGFyIGV2ZW50cyBhbmQgYXZhaWxhYmlsaXR5LiBSZWFkIG9ubHkuCi0tLQoKIyBDYWxlbmRhcgoKVGhpcyBwYWNrJ3Mgb3duIHNlcnZlciAoYHNlcnZlci9pbmRleC5tanNgKSByZWFkcyBHb29nbGUgQ2FsZW5kYXIgd2l0aCB0aGUgYWNjb3VudCBjb25uZWN0ZWQgb24gdGhpcyBjb21wdXRlci4gVG9vbCBuYW1lcyBhcmUgdGhlIHNlcnZlcidzOyB5b3VyIE1DUCBjbGllbnQgbWF5IHNob3cgdGhlbSB3aXRoIHRoaXMgaW50ZWdyYXRpb24ncyBwcmVmaXguCgojIyBSZWFkaW5nIGV2ZW50cwoKLSBgbGlzdF9ldmVudHNgIHJlYWRzIHVwY29taW5nIGV2ZW50cyBvbiBvbmUgY2FsZW5kYXIgKGBjYWxlbmRhcklkYCwgZGVmYXVsdCBgcHJpbWFyeWApOyB3aXRob3V0IHRpbWVzIGl0IGNvdmVycyB0aGUgbmV4dCBzZXZlbiBkYXlzLiBQYXNzIGB0aW1lTWluYCBhbmQgYHRpbWVNYXhgIGFzIElTTyBkYXRlLXRpbWVzIHdpdGggYSB0aW1lIHpvbmUgZm9yICJ0b21vcnJvdyIgb3IgIm5leHQgd2VlayIuCi0gYGdldF9ldmVudGAgcmVhZHMgb25lIGV2ZW50OyBgbGlzdF9jYWxlbmRhcnNgIGxpc3RzIHRoZSBjYWxlbmRhcnMgdGhlIHVzZXIgY2FuIHNlZS4KLSBgZ2V0X2ZyZWVfYnVzeWAgYW5zd2VycyAiYW0gSSBmcmVlIGF0IDM/IiBhY3Jvc3MgY2FsZW5kYXJzLgoKIyMgUmVhZGluZyBmb3Igdm9pY2UKCkdpdmUgdGltZXMgaW4gdGhlIHVzZXIncyB0aW1lIHpvbmUsIHNvb25lc3QgZmlyc3Q6ICJUd28gdGhpbmdzIHRvbW9ycm93OiBkZXNpZ24gcmV2aWV3IGF0IDEwLCBkZW50aXN0IGF0IDM6MzAuIiBTa2lwIGlkcyBhbmQgbGlua3MuCgojIyBMaW1pdHMgYW5kIGVycm9ycwoKLSBSZWFkIG9ubHk6IHRoZXJlIGlzIG5vIGNyZWF0aW5nLCBtb3ZpbmcsIG9yIGRlY2xpbmluZyBldmVudHMuIFNheSBzbyBpZiBhc2tlZC4KLSAiQ29ubmVjdCB0aGlzIEdvb2dsZSBhY2NvdW50IiBvciAiYXV0aG9yaXphdGlvbiBleHBpcmVkIiBtZWFucyB0aGUgYWNjb3VudCBuZWVkcyBjb25uZWN0aW5nIGFnYWluIG9uIHRoZSBjb21wdXRlciAoaW50ZWdyYXRpb25zX19jb25uZWN0X2FjY291bnQpLgo="},"signature":{"publicKey":"4d9b98c280e248815370a0c3fe152828a508cc7955e60e1910c9a90c97e9a674","value":"fbcd4f5b80a1d93dd36a09b3dbf9dc88b2f637eecba6693dab3ff76fd62a5347a24e3df0d01bdbd4a9807d4dd8a9075620a4ba914f18fea60a5b356539eb2807"}},"error":null}