From f4e6171fef96c7fe97256f39022fa01245e9f2a5 Mon Sep 17 00:00:00 2001 From: Robert MacLean Date: Thu, 31 Oct 2024 20:44:30 +0200 Subject: [PATCH] website launch --- _data/config.yml | 42 +- _includes/event.html | 10 +- capetown.html | 2 +- faq.html | 126 +++--- joburg.html | 2 +- package.json | 14 +- public/css/main.css | 2 +- .../DevConf 2025 Sponsorship Proposal.pdf | Bin 6135844 -> 6107010 bytes scripts/devconf.js | 2 +- scripts/devconf.js.map | 2 +- scss/sponsors.scss | 2 +- tsconfig.json | 17 +- yarn.lock | 363 ++++++++++++------ 13 files changed, 371 insertions(+), 213 deletions(-) diff --git a/_data/config.yml b/_data/config.yml index 95783fd1..cc6a7623 100644 --- a/_data/config.yml +++ b/_data/config.yml @@ -1,9 +1,9 @@ banner: show: false - content: "DevConf 2024 is entirely sold out! We can't wait to see you all soon!" + content: "DevConf 2025 is entirely sold out! We can't wait to see you all soon!" sponsors: - show: false - proposal: /public/docs/DevConf 2024 Sponsorship Proposal.pdf + show: true + proposal: /public/docs/DevConf 2025 Sponsorship Proposal.pdf banner: false callForSpeakers: show: true @@ -37,12 +37,12 @@ general: events: - virtual: false show: true - showAgenda: true + showAgenda: false location: "Johannesburg" menuTitle: "Joburg" date: "27 May 2025" info: "/joburg" - infoOn: false + infoOn: true sessionizeId: "b0tah92u" logo: devconfjhb.png minattendees: 700 @@ -54,20 +54,20 @@ events: sponsorOpen: true colour: pink tickets: - totally_sold_out: true - onsale: false + totally_sold_out: false + onsale: true has_shuttle: false has_waiting_list: false waiting_list: - purchaseSite: "https://www.quicket.co.za/events/237752-devconf-2024-johannesburg" + purchaseSite: "https://www.quicket.co.za/events/286990-devconf-2025-johannesburg/#/" merch_link: "" fullprice: - price: 3623 - bulkPrice: 3293.64 - sold_out: true + price: 3985.29 + bulkPrice: 3622.99 + sold_out: false earlybird: - price: 3150.43 - sold_out: true + price: 3465.47 + sold_out: false rooms: room_1: "Centre Court" room_2: "NCC" @@ -160,12 +160,12 @@ events: # room: Julia - virtual: false show: true - showAgenda: true + showAgenda: false location: "Cape Town" menuTitle: "Cape Town" date: "29 May 2025" info: "/capetown" - infoOn: false + infoOn: true sessionizeId: "b0tah92u" logo: devconfcpt.png minattendees: 700 @@ -177,20 +177,20 @@ events: sponsorOpen: true colour: blue tickets: - onsale: false + onsale: true totally_sold_out: false has_shuttle: false has_waiting_list: false waiting_list: "" - purchaseSite: "https://www.quicket.co.za/events/239304-devconf-2024-cape-town" + purchaseSite: "https://www.quicket.co.za/events/285080-devconf-2025-cape-town/#/" merch_link: fullprice: - price: 3623 + price: 3985.29 + bulkPrice: 3622.99 sold_out: false - bulkPrice: 3293.64 earlybird: - price: 3150.43 - sold_out: true + price: 3465.47 + sold_out: false rooms: room_1: "Hall A" room_2: "Hall B" diff --git a/_includes/event.html b/_includes/event.html index 0e8646c4..dc512e56 100644 --- a/_includes/event.html +++ b/_includes/event.html @@ -101,7 +101,7 @@ target="_blank">Buy a ticket now! {% endif %} -
+
{% endif %} {% if event.tickets.totally_sold_out %} {% else %} -
We use Quicket for ticket purchases, and payment can be made by Instant EFT, Credit Card, SnapScan, or Zapper. 🟣 - If you need an PO, or "normal" EFT, please email us so we can help you directly with a manual purchase! 🔵 - You can login to Quicket to manage or transfer your tickets. Quicket support can help with any questions on how to use their platform. 🟢 +
We use Quicket for ticket purchases, and payment can be made by Instant EFT, Credit Card, SnapScan, Zapper or EFT. 🟣 + If you need an PO, you can do that on Quicket too and have 15 days to pay! Need more time? Quicket Support can assist! 🔵 + You can login to Quicket to manage or transfer your tickets. Quicket Support can help with any questions on how to use their platform. 🟢 Ticket Purchase Terms & Conditions
 
{% endif %} diff --git a/capetown.html b/capetown.html index 3b5be24b..94de8287 100644 --- a/capetown.html +++ b/capetown.html @@ -1,4 +1,4 @@ --- layout: default --- -{% include event.html offset=1 baseStyle="sponsor-title-blue" sponsors=site.data.2024.cptsponsors sessions=site.data.2024.cptsessions %} +{% include event.html offset=1 baseStyle="sponsor-title-blue" sponsors=site.data.2025.cptsponsors sessions=site.data.2025.cptsessions %} diff --git a/faq.html b/faq.html index b10e0b7a..5b4205ad 100644 --- a/faq.html +++ b/faq.html @@ -7,91 +7,117 @@

FAQ

  1. Who runs DevConf?

    -

    DevConf is owned by the non-profit organisation The Developer User Group. - DevConf is run by two of the DevUG directors in their free time, Candice Mesk and Robert MacLean. +

    + DevConf is owned by the non-profit organisation + The Developer User Group. DevConf is run by two of the DevUG directors in their free + time, Candice Mesk and Robert MacLean.

  2. What is the goal of DevConf?

    -

    DevConf has a simple goal: give professional software developers an opportunity to network and learn from their peers in a safe environment.

    +

    + DevConf has a simple goal: give professional software developers + an opportunity to network and learn from their peers in a safe + environment. +

  3. Where can I find information about your COVID policy?

    - All details on our COVID policy, and our approach if there are government restrictions can be found on our COVID Info Page. + All details on our COVID policy, and our approach if there are + government restrictions can be found on our + COVID Info Page.

  4. -

    Can I buy tickets without a credit card? Is it possible to generate an invoice for comapnies?

    +

    + Can I buy tickets without a credit card? Is it possible to + generate an invoice for comapnies? +

    Totally! There are two options available to you:

    Buy online

    -

    Our online ticketing solution supports Instant EFT, Credit Card, SnapScan, or Zapper payments. - - +

    + Our online ticketing solution supports Instant EFT, Credit Card, + SnapScan, or Zapper payments and EFT options. If purchasing by + EFT online, the ticketing platform reserves your tickets for 15 + days to allow time for the EFT to reflect. Once the purchase is + confirmed, you can log in to the ticketing website to generate + an invoice for your company.

    -

    EFT and Manual purchase

    +
  5. Can I have a free ticket?

    -

    Unfortunately not. DevConf is designed to be cash neutral so we do not have any excess funds to sponsor - free - tickets. Only speakers and organisers receive complementary access to the event. We do work with - sponsors on - processes for them to donate tickets, so follow us on social media to hear about those opportunities - when they - come up.

    +

    + Unfortunately not. DevConf is designed to be cash neutral so we + do not have any excess funds to sponsor free tickets. Only + speakers and organisers receive complementary access to the + event. We do work with sponsors on processes for them to donate + tickets, so follow us on social media to hear about those + opportunities when they come up. +

  6. I would like to speak at the event!

    -

    That is awesome! We have a call for speakers each year and you can get the details of this when the call - for speakers goes out by - signing up to our mailing list.

    +

    + That is awesome! We have a call for speakers each year and you + can get the details of this when the call for speakers goes out + by signing up to our mailing list. +

  7. Who is Fizz Marketing?

    -

    Fizz is the planning and logistics partner for DevConf that handles the administrative duties for - DevConf.

    +

    + Fizz is the planning and logistics partner for DevConf that + handles the administrative duties for DevConf. +

  8. How did this start?

    -

    The idea of DevConf originated with Robert MacLean in late 2013; the idea was to run an event for - developers who - could not attend the Developer User Group which happened outside of normal working hours. The first - DevConf - took place in 2016. DevConf is proudly run by Candice Mesk and Robert MacLean.

    +

    + The idea of DevConf originated with Robert MacLean in late 2013; + the idea was to run an event for developers who could not attend + the Developer User Group which happened outside of normal + working hours. The first DevConf took place in 2016. DevConf is + proudly run by Candice Mesk and Robert MacLean. +

  9. How much money do you make?

    -

    Nothing. DevConf is designed to be cash neutral so there is no profit nor loss, however, DevConf has made - a small - surplus each year (which is better than a loss) and that surplus has been used to fund the following - year as - well as cover some of the community initiatives run by the Developer User Group. Where possible (budget- - and space-permitting), those DevUG committee members who are not involved with DevConf planning are - allocated one non-transferrable ticket each to attend DevConf.

    -

    In 2016, some of this surplus funded trips for two organisers to attend other conferences with the - intention of - learning from those events, and a UHK keyboard was bought for each of the organisers (3 that year) as a - gift at - a cost of less than R10 000. In 2021, the organisers bought two laptops to replace aging equipment used - to run - the event. The organisers have not recieved any other financial benefits.

    +

    + Nothing. DevConf is designed to be cash neutral so there is no + profit nor loss, however, DevConf has made a small surplus each + year (which is better than a loss) and that surplus has been + used to fund the following year as well as cover some of the + community initiatives run by the Developer User Group. Where + possible (budget- and space-permitting), those DevUG committee + members who are not involved with DevConf planning are allocated + one non-transferrable ticket each to attend DevConf. +

    +

    + In 2016, some of this surplus funded trips for two organisers to + attend other conferences with the intention of learning from + those events, and a UHK keyboard was bought for each of the + organisers (3 that year) as a gift at a cost of less than R10 + 000. In 2021, the organisers bought two laptops to replace aging + equipment used to run the event. The organisers have not + recieved any other financial benefits. +

  10. Is the event auditted?

    -

    Yes, DevConf is audited each year after the events. The Developer User Group is also audited annually and - is - fully compliant with SARS and CIPC.

    +

    + Yes, DevConf is audited each year after the events. The + Developer User Group is also audited annually and is fully + compliant with SARS and CIPC. +

-
\ No newline at end of file + diff --git a/joburg.html b/joburg.html index 83e48a03..50e0736e 100644 --- a/joburg.html +++ b/joburg.html @@ -1,4 +1,4 @@ --- layout: default --- -{% include event.html offset=0 baseStyle="sponsor-title" sponsors=site.data.2024.jhbsponsors sessions=site.data.2024.jhbsessions %} +{% include event.html offset=0 baseStyle="sponsor-title" sponsors=site.data.2025.jhbsponsors sessions=site.data.2025.jhbsessions %} diff --git a/package.json b/package.json index 215e49fd..5ebe6e78 100644 --- a/package.json +++ b/package.json @@ -28,20 +28,20 @@ ], "devDependencies": { "@types/grecaptcha": "^3.0.9", - "@types/node": "^22.7.4", - "@typescript-eslint/eslint-plugin": "^8.8.0", - "@typescript-eslint/parser": "^8.8.0", + "@types/node": "^22.8.5", + "@typescript-eslint/eslint-plugin": "^8.12.2", + "@typescript-eslint/parser": "^8.12.2", "concurrently": "^9.0.1", - "eslint": "^9.12.0", + "eslint": "^9.13.0", "eslint-config-airbnb": "^19.0.4", "eslint-plugin-import": "^2.31.0", "nodemon": "^3.1.7", - "sass": "^1.79.4", + "sass": "^1.80.5", "ts-loader": "^9.5.1", - "typescript": "^5.6.2", + "typescript": "^5.6.3", "webpack": "^5.95.0", "webpack-cli": "^5.1.4", - "uuid": "^10.0.0" + "uuid": "^11.0.2" }, "scripts": { "watch-css": "yarn sass --update --no-source-map -w --style compressed -I scss scss/main.scss public/css/main.css", diff --git a/public/css/main.css b/public/css/main.css index 305e3bfe..f555ed12 100644 --- a/public/css/main.css +++ b/public/css/main.css @@ -1 +1 @@ -.sponsor{overflow-x:clip;display:grid;grid-template-columns:1fr;grid-template-rows:250px repeat(5, auto);margin-bottom:40px}.sponsor a{text-decoration:none;text-align:center}@media(max-width: 850px){.sponsor{margin-bottom:30px}}.sponsor-home{grid-template-rows:auto repeat(5, auto)}.sponsor hr{width:90%;border-style:none;height:2px;background-color:#f4f4f4}.sponsor-fake-button{font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;background-image:linear-gradient(to right, #001e5b, #000d28);text-decoration:none;min-width:200px;display:grid;align-items:center;justify-content:center;border:none;text-align:center;font-size:.9rem;font-weight:800;border-radius:20px;padding:10px 20px;text-transform:uppercase;color:#fff;line-height:1rem;cursor:pointer}.sponsor-fake-button:hover{background-image:linear-gradient(to left, #001e5b, #000d28) !important}.sponsor-button{margin-top:10px;margin-bottom:10px;font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;background-image:linear-gradient(to right, #001e5b, #000d28);text-decoration:none;min-width:200px;display:grid;align-items:center;justify-content:center;border:none;text-align:center;font-size:.9rem;font-weight:800;border-radius:20px;padding:10px 20px;text-transform:uppercase;color:#fff;line-height:1rem;cursor:pointer;cursor:pointer}.sponsor-button:hover{background-image:linear-gradient(to left, #001e5b, #000d28) !important}.sponsor-title{width:100%;background-color:#ff3263;overflow:hidden;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;padding-top:10px;color:#fff}.sponsor-title-ellipse{width:100vw;height:100vw;border-radius:50%;background-color:#000;opacity:.08;margin-top:20px;grid-row:1/1;grid-column:1/1;z-index:10}.sponsor-title-button{margin-top:30px}.sponsor-title-content{grid-row:1/1;grid-column:1/1;z-index:100;justify-self:center;font-size:3rem;text-align:center;margin-top:40px;justify-items:center;display:grid;grid-template-rows:repeat(4, minmax(0, min-content));grid-row-gap:10px;text-transform:uppercase;padding-left:10px;padding-right:10px}@media(max-width: 850px){.sponsor-title-content{font-size:2.1rem;margin-top:0}}.sponsor-title-content-sponsor{display:grid;justify-items:center}.sponsor-title-content-packages-intro{font-size:1rem;width:350px}.sponsor-title-content-package{margin-top:0}.sponsor-title-content-package-image{display:grid;justify-items:center;align-items:start;margin-top:-130px;z-index:150;margin-bottom:-40px}@media(max-width: 850px){.sponsor-title-content-package-image{display:none}}.sponsor-title-content-package-image>img{height:300px;margin-top:50px}.sponsor-title-content-second{width:100%;font-size:1.5rem;display:grid;grid-auto-flow:column;grid-template-columns:repeat(5, auto);align-items:center;justify-items:stretch;text-align:center}@media(max-width: 600px){.sponsor-title-content-second{grid-auto-flow:row;grid-template-columns:unset;font-size:1.3rem}}.sponsor-title-content-third{font-size:1rem}.sponsor-title-blue{width:100%;background-color:#19c3fc;overflow:hidden;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;padding-top:10px;color:#fff}.sponsor-title-blue-ellipse{width:100vw;height:100vw;border-radius:50%;background-color:#000;opacity:.08;margin-top:20px;grid-row:1/1;grid-column:1/1;z-index:10}.sponsor-title-blue-button{margin-top:30px}.sponsor-title-blue-content{grid-row:1/1;grid-column:1/1;z-index:100;justify-self:center;font-size:3rem;text-align:center;margin-top:40px;justify-items:center;display:grid;grid-template-rows:repeat(4, minmax(0, min-content));grid-row-gap:10px;text-transform:uppercase;padding-left:10px;padding-right:10px}@media(max-width: 850px){.sponsor-title-blue-content{font-size:2.1rem;margin-top:0}}.sponsor-title-blue-content-sponsor{display:grid;justify-items:center}.sponsor-title-blue-content-packages-intro{font-size:1rem;width:350px}.sponsor-title-blue-content-package{margin-top:0}.sponsor-title-blue-content-package-image{display:grid;justify-items:center;align-items:start;margin-top:-130px;z-index:150;margin-bottom:-40px}@media(max-width: 850px){.sponsor-title-blue-content-package-image{display:none}}.sponsor-title-blue-content-package-image>img{height:300px;margin-top:50px}.sponsor-title-blue-content-second{width:100%;font-size:1.5rem;display:grid;grid-auto-flow:column;grid-template-columns:repeat(5, auto);align-items:center;justify-items:stretch;text-align:center}@media(max-width: 600px){.sponsor-title-blue-content-second{grid-auto-flow:row;grid-template-columns:unset;font-size:1.3rem}}.sponsor-title-blue-content-third{font-size:1rem}.sponsor-title-third{width:100%;background-color:#9a76cf;overflow:hidden;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;padding-top:10px;color:#fff}.sponsor-title-third-ellipse{width:100vw;height:100vw;border-radius:50%;background-color:#000;opacity:.08;margin-top:20px;grid-row:1/1;grid-column:1/1;z-index:10}.sponsor-title-third-button{margin-top:30px}.sponsor-title-third-content{grid-row:1/1;grid-column:1/1;z-index:100;justify-self:center;font-size:3rem;text-align:center;margin-top:40px;justify-items:center;display:grid;grid-template-rows:repeat(4, minmax(0, min-content));grid-row-gap:10px;text-transform:uppercase;padding-left:10px;padding-right:10px}@media(max-width: 850px){.sponsor-title-third-content{font-size:2.1rem;margin-top:0}}.sponsor-title-third-content-sponsor{display:grid;justify-items:center}.sponsor-title-third-content-packages-intro{font-size:1rem;width:350px}.sponsor-title-third-content-package{margin-top:0}.sponsor-title-third-content-package-image{display:grid;justify-items:center;align-items:start;margin-top:-130px;z-index:150;margin-bottom:-40px}@media(max-width: 850px){.sponsor-title-third-content-package-image{display:none}}.sponsor-title-third-content-package-image>img{height:300px;margin-top:50px}.sponsor-title-third-content-second{width:100%;font-size:1.5rem;display:grid;grid-auto-flow:column;grid-template-columns:repeat(5, auto);align-items:center;justify-items:stretch;text-align:center}@media(max-width: 600px){.sponsor-title-third-content-second{grid-auto-flow:row;grid-template-columns:unset;font-size:1.3rem}}.sponsor-title-third-content-third{font-size:1rem}.sponsor-content-detail,.sponsor-content-detail-packages{display:grid;justify-items:center;padding-bottom:20px;padding-top:20px;padding-left:20px;padding-right:20px;grid-row-gap:20px;max-width:100vw}.sponsor-content-detail-wide-body{overflow-x:hidden;overflow-y:hidden;display:flex;grid-column-gap:20px;width:100%}.sponsor-content-detail-wide-body img{border-style:solid;border-width:1px;border-color:#fc003d;padding:5px;background-color:#fff;height:150px}.sponsor-content-detail-tickets{display:grid;justify-items:center;text-align:center;padding-left:15px;padding-right:15px}.sponsor-content-detail-tickets-cards{width:100%;display:grid;text-align:center;padding:25px 10px;background-color:#fff;grid-row-gap:5px;text-align:center;line-height:1.5rem;grid-template-columns:1fr 1fr 1fr 1fr;grid-template-rows:1fr;column-gap:30px;align-content:center}@media(max-width: 1280px){.sponsor-content-detail-tickets-cards{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}}@media(max-width: 850px){.sponsor-content-detail-tickets-cards{grid-template-columns:1fr;grid-template-rows:min-content min-content min-content min-content}}.sponsor-content-detail-tickets-cards-price{color:#ff3263;font-size:1rem !important;font-weight:800 !important}@media(max-width: 850px){.sponsor-content-detail-tickets-cards{grid-template-columns:auto}}.sponsor-content-detail-tickets-cards>div{display:grid;align-items:center;row-gap:5px;justify-items:center;background-color:#f4f4f4;padding:10px;border-radius:5px;grid-template-rows:min-content 1fr min-content min-content}.sponsor-content-detail-tickets-cards>div>div:nth-child(1){color:#ff3263;font-weight:800}.sponsor-content-detail-tickets-cards>div>div:nth-child(2){font-size:.8rem}.sponsor-content-detail-tickets-cards>div>div:nth-child(3){font-size:.8rem;font-weight:800}.sponsor-content-detail-tickets-cards>div>a{width:max-content}.sponsor-content-detail-location{display:grid;justify-items:center;text-align:center;grid-row-gap:20px}.sponsor-content-detail-packages{grid-column-gap:20px;grid-template-columns:1fr 1fr 1fr;grid-template-rows:auto;justify-items:stretch;padding-left:15%;padding-right:15%}.sponsor-content-detail-packages>div{padding-left:0;padding-right:0}@media(max-width: 850px){.sponsor-content-detail-packages{grid-template-columns:auto;grid-template-rows:auto auto}}.sponsor-content-detail-package-cards{display:grid;grid-column-gap:20px;grid-row-gap:20px;grid-template-columns:100%;grid-template-columns:repeat(auto-fill, minmax(250px, 1fr));justify-items:center;align-items:baseline}@media(min-width: 2350px){.sponsor-content-detail-package-cards{grid-template-columns:1fr 1fr 1fr}}.sponsor-content-detail-package-card{padding:25px 10px;background-color:#f4f4f4;border-radius:5px;color:#ff3263;display:grid;justify-items:center;grid-row-gap:5px;width:200px;text-align:center;line-height:1.5rem}.sponsor-content-detail-package-card>img{width:150px}@media(max-width: 850px){.sponsor-content-detail-package-card>img{display:none}}.sponsor-content-detail-package-card>div>div.sponsor-content-detail-package-card-remaining{font-weight:800;color:#cb0031}.sponsor-content-detail-package-card>div:nth-child(1),.sponsor-content-detail-package-card>div:nth-child(5),.sponsor-content-detail-package-card>div:nth-child(7){font-weight:800}.sponsor-content-detail-package-card-blue{padding:25px 10px;background-color:#f4f4f4;border-radius:5px;color:#19c3fc;display:grid;justify-items:center;grid-row-gap:5px;width:200px;text-align:center;line-height:1.5rem}.sponsor-content-detail-package-card-blue>img{width:150px}@media(max-width: 850px){.sponsor-content-detail-package-card-blue>img{display:none}}.sponsor-content-detail-package-card-blue>div>div.sponsor-content-detail-package-card-remaining{font-weight:800;color:#0282ad}.sponsor-content-detail-package-card-blue>div:nth-child(1),.sponsor-content-detail-package-card-blue>div:nth-child(5),.sponsor-content-detail-package-card-blue>div:nth-child(7){font-weight:800}.sponsor-content-detail-sponsors{display:grid;grid-template-columns:repeat(3, minmax(0, max-content));justify-items:center;grid-row-gap:10px}@media(max-width: 850px){.sponsor-content-detail-sponsors{grid-template-columns:auto}}.sponsor-content-detail-content-sponsor{display:grid;justify-items:center}.sponsor-content-detail-sponsor{border-color:#ff3263;border-width:1px;border-style:solid}.sponsor-content-detail-sponsor-level{display:grid;justify-items:center;margin-bottom:15px}.sponsor-content-detail-sponsor-level img{border-style:solid;border-width:1px;border-color:rgba(240,99,133,.2784313725);padding:5px}.sponsor-content-detail-sponsor-level a{color:rgba(0,0,0,0) !important}.sponsor-content-detail-sponsor-level a:hover{color:rgba(0,0,0,0) !important}.sponsor-content-detail-heading,.sponsor-content-detail-heading-pink,.sponsor-content-detail-heading-third{color:#19c3fc;text-transform:uppercase;padding-top:10px;font-weight:800;font-size:2rem;margin-bottom:15px;text-align:center}.sponsor-content-detail-heading-smaller{font-size:1.6rem}.sponsor-content-detail-heading-third{color:#9a76cf}.sponsor-content-detail-heading-pink{color:#ff3263}@media(min-width: 850px){.sponsor-content-detail-heading-attendees{text-align:left}}.sponsor-content-detail-termsAndConditions{font-size:.6rem}.sponsor-content-detail-mission{display:grid;grid-template-columns:repeat(4, 1fr);grid-template-rows:1fr;grid-column-gap:50px;line-height:1.5rem}.sponsor-content-detail-mission>div{text-align:center;display:grid;justify-items:center;grid-row-gap:20px;grid-template-rows:auto auto 1fr;grid-template-columns:auto}@media(max-width: 850px){.sponsor-content-detail-mission>div>img{display:none;grid-template-rows:0 auto}}@media(max-width: 850px){.sponsor-content-detail-mission{grid-template-rows:repeat(4, 1fr);grid-template-columns:1fr;grid-row-gap:5px}}.sponsor-content-detail-attendees{display:grid;grid-template-rows:auto;grid-template-columns:auto auto;justify-items:center;line-height:1.5rem}@media(max-width: 850px){.sponsor-content-detail-attendees{grid-template-columns:auto}.sponsor-content-detail-attendees>img{display:none}}.sponsor-content-detail-overview{display:grid;grid-template-rows:auto auto;grid-template-columns:minmax(auto, 350px) minmax(auto, 350px);justify-items:center;grid-row-gap:10px;grid-column-gap:50px;grid-auto-flow:column;line-height:1.5rem;margin-bottom:20px}@media(max-width: 850px){.sponsor-content-detail-overview{grid-auto-flow:row;grid-template-rows:repeat(6, auto);grid-template-columns:350px}}.sponsor-content-detail-overview>div:nth-child(1),.sponsor-content-detail-overview>div:nth-child(3),.sponsor-content-detail-overview>div:nth-child(5){color:#19c3fc;font-weight:800;margin-bottom:20px}.sponsor-content-detail-overview>div:nth-child(5){color:#9a76cf}.sponsor-content-detail-overview>div:nth-child(3){color:#ff3263}.sponsor-content-detail-overview>div:nth-child(2),.sponsor-content-detail-overview>div:nth-child(4),.sponsor-content-detail-overview>div:nth-child(6){border-radius:5px;color:#fff;padding:30px 20px;display:grid;grid-template-rows:repeat(4, auto);grid-template-columns:auto;justify-items:center;grid-row-gap:20px}.sponsor-content-detail-overview>div:nth-child(2)>div,.sponsor-content-detail-overview>div:nth-child(4)>div,.sponsor-content-detail-overview>div:nth-child(6)>div{display:grid;justify-items:center;grid-row-gap:5px;text-align:center}.sponsor-content-detail-overview>div:nth-child(2)>div>div:nth-child(odd),.sponsor-content-detail-overview>div:nth-child(4)>div>div:nth-child(odd),.sponsor-content-detail-overview>div:nth-child(6)>div>div:nth-child(odd){text-transform:uppercase;font-weight:800}.sponsor-content-detail-overview>div:nth-child(2){background-color:#19c3fc}.sponsor-content-detail-overview>div:nth-child(6){background-color:#9a76cf}.sponsor-content-detail-overview>div:nth-child(4){background-color:#ff3263}.sponsor-content-detail-reflection{display:grid;grid-template-columns:repeat(2, auto);grid-column-gap:20px;grid-template-rows:repeat(2, auto);grid-row-gap:20px;justify-items:center;margin-bottom:20px;line-height:1.5rem;padding-bottom:20px}@media(max-width: 850px){.sponsor-content-detail-reflection{grid-template-columns:auto;grid-template-rows:repeat(6, auto)}}.sponsor-content-detail-reflection>div{display:grid;grid-template-columns:auto;grid-template-rows:repeat(3, auto);justify-items:center;text-align:center}.sponsor-content-detail-reflection>div>img{width:250px;height:250px;padding:5%}.sponsor-content-detail-reflection>div:nth-child(2){font-size:1.1rem}.sponsor-content-detail-contact{display:grid;grid-template-columns:repeat(3, 1fr);justify-items:center;grid-column-gap:20px;line-height:1.5rem}@media(max-width: 850px){.sponsor-content-detail-contact{grid-template-rows:repeat(3, 1fr);grid-template-columns:auto;grid-row-gap:10px}}.sponsor-content-detail-contact>div{display:grid;grid-template-rows:repeat(3, auto);justify-items:center;grid-row-gap:5px}.sponsor-content-detail-contact>div>div:nth-child(1){font-weight:800}.sponsor-content-detail-introduction{justify-self:left;line-height:1.5rem}.sponsor-content-detail-brand{line-height:1.5rem;display:grid;grid-template-columns:1fr 1fr;grid-column-gap:50px}.sponsor-content-detail-brand>div:before{content:"• "}@media(max-width: 850px){.sponsor-content-detail-brand{grid-template-columns:1fr}}.sponsor-content-detail-expo{line-height:1.5rem;display:grid;grid-template-columns:1fr 1fr;grid-column-gap:50px}.sponsor-content-detail-expo>div:before{content:"• "}@media(max-width: 850px){.sponsor-content-detail-expo{grid-template-columns:1fr}}.sponsor-content-detail-expo-stand{text-align:center;font-size:.7rem}.sponsor-content-detail-expo-stand>a{font-size:1rem;display:grid;justify-items:center;row-gap:20px;text-align:center}.sponsor-content-detail-benefits{line-height:1.5rem;display:grid;grid-template-columns:1fr 1fr;grid-column-gap:50px}.sponsor-content-detail-benefits>div:before{content:"• "}@media(max-width: 850px){.sponsor-content-detail-benefits{grid-template-columns:1fr}}.sponsor-content-detail-exclusive{line-height:1.5rem;display:grid;grid-template-columns:1fr 1fr;grid-column-gap:50px}.sponsor-content-detail-exclusive>div:before{content:"• "}@media(max-width: 850px){.sponsor-content-detail-exclusive{grid-template-columns:1fr}}.sponsor-content-detail-white{background-color:#fff !important}.sponsor-content-detail:nth-child(odd),.sponsor-content-detail-packages:nth-child(odd){background-color:#000d28;color:#fff}.sponsor-content-detail:nth-child(even),.sponsor-content-detail-packages:nth-child(even){background-color:#fff}.sponsor .more-info{margin-top:10px;text-decoration:none}.sponsor-banana{height:100px;font-size:24px !important;background-image:linear-gradient(to left, #fc003d, #19c3fc);display:grid}.sponsor-banana>div{align-self:center}.sponsor-small-banana{height:50px;font-size:24px !important;background-image:linear-gradient(to left, #000d28, #19c3fc);display:grid}.sponsor-small-banana>div{align-self:center}img.sponsorLogo{max-width:unset}@media(max-width: 850px){img.sponsorLogo{max-width:80vw}}.collapseMe{height:0px;margin:0px;padding:0px}#agenda{line-height:1.3em;width:100%;display:grid;grid-auto-flow:row;justify-items:center;row-gap:3px;column-gap:5px;padding-bottom:5px;padding-left:2%;padding-right:2%;grid-template-rows:repeat(33, min-content);grid-template-columns:1fr 300px;grid-template-areas:"registration registration" "expo expo" "welcome welcome" "keynote keynote" "loading1 loading1" "break1 break1" "timeslot1 workshoptime1" "session1 workshop10" "loading2 workshop10" "movement1 workshop10" "timeslot2 workshop10" "session2 workshop10" "loading3 workshop10" "movement2 movement2" "timeslot3 ." "session3 ." "loading4 ." "lunch lunch" "timeslot4 workshoptime2" "session4 workshop20" "loading5 workshop20" "movement3 workshop20" "timeslot5 workshop20" "session5 workshop20" "loading6 workshop20" "break2 break2" "timeslot6 workshoptime3" "session6 workshop30" "loading7 workshop30" "movement4 workshop30" "timeslot7 workshop30" "session7 workshop30" "cocktail cocktail"}@media(max-width: 1220px){#agenda{grid-template-rows:unset;grid-template-columns:1fr;grid-template-areas:"registration" "expo" "welcome" "keynote" "loading1" "break1" "timeslot1" "session1" "loading2" "movement1" "timeslot2" "session2" "loading3" "movement2" "timeslot3" "session3" "lunch" "loading4" "timeslot4" "session4" "loading5" "movement3" "timeslot5" "session5" "loading6" "break2" "timeslot6" "session6" "loading7" "movement4" "timeslot7" "session7" "cocktail" "workshoptitle" "workshoptime1" "workshop10" "workshoptime2" "workshop20" "workshoptime3" "workshop30"}}.agenda>.hidden-row{display:none}.agenda-workshop-sponsor a{color:#000d28}.agenda-workshop-sponsor a:hover{color:#001e5b}.agenda-workshop-title{display:none}@media(max-width: 1220px){.agenda-workshop-title{display:grid}}.agenda-workshop-time{margin-top:10px;font-size:smaller;font-weight:800;color:#001e5b}.agenda-workshop-content{font-size:smaller;margin-top:10px}.agenda-workshop{background-color:#0479a0;padding:10px;border-radius:5px;text-align:center;justify-self:stretch}.agenda-row-style-break{background-color:#ed3259;display:grid;justify-self:stretch;color:#fff;border-radius:5px;padding:5px;grid-auto-flow:column;justify-content:stretch;align-items:center;padding:10px;font-size:.8rem;grid-template-columns:max-content max-content 1fr max-content max-content}.agenda-row-style-key{background-color:#990020;display:grid;justify-self:stretch;color:#fff;border-radius:5px;padding:5px;grid-auto-flow:column;justify-content:stretch;align-items:center;font-size:.8rem;padding:10px;grid-template-columns:max-content max-content 1fr max-content max-content}.agenda-row-style-highlight{background-color:#ff3263;display:grid;justify-self:stretch;color:#fff;border-radius:5px;padding:5px;grid-auto-flow:column;justify-content:stretch;align-items:center;font-size:1rem;padding:10px;grid-template-columns:max-content max-content 1fr max-content max-content}.agenda-row-style-keynote{background-color:#19c3fc;display:grid;justify-self:stretch;color:#fff;border-radius:5px;padding:5px;grid-auto-flow:column;justify-content:stretch;align-items:center;justify-content:unset;grid-auto-flow:row}.agenda-row-timeslot{display:grid;grid-auto-flow:column;grid-template-columns:repeat(5, 1fr);justify-items:center;row-gap:3px;column-gap:5px}@media(max-width: 850px){.agenda-row-timeslot{grid-auto-flow:row;grid-template-columns:auto}}.agenda-virtual-row-timeslot{display:grid;grid-auto-flow:column;grid-template-columns:repeat(6, 1fr);justify-items:center;justify-self:stretch;row-gap:3px;column-gap:5px}@media(max-width: 850px){.agenda-virtual-row-timeslot{grid-auto-flow:row;grid-template-columns:auto}}.agenda-session{background-color:#000d28;border-radius:5px;display:grid;justify-self:stretch;justify-items:center;color:#fff;text-align:center;padding-left:10px;padding-right:10px;padding-top:10px;padding-bottom:10px;grid-template-rows:55px 20px 170px 50px}@media(max-width: 850px){.agenda-session{grid-template-rows:repeat(3, auto);padding-bottom:0px}}.agenda-session-subtitle{margin-bottom:11px;font-size:small}.agenda-row-style-loading{font-size:.8rem}.agenda-session-time,.agenda-session-room{font-size:.8rem;margin:3px;align-self:center}@media(max-width: 850px){.agenda-session-time{display:none}}.agenda-session-name{color:#990020}.agenda-session-image,.agenda-session-name,.agenda-session-title{margin:3px;font-weight:700}.agenda-session-image{padding:10px;max-width:150px}@media(max-width: 850px){.agenda-session-image{display:none}}.agenda-session-remote{font-size:.7rem;color:#19c3fc;display:none}.agenda-keynote-session>.agenda-session-remote{color:#000d28}.speaker-image{width:100%;border-radius:50%}@media(max-width: 850px){.speaker-image{display:none}}.multi-speaker-container{display:grid}.multi-speaker-image{grid-row:1;grid-column:1}.hide{display:none}.clickable-session{cursor:pointer}@media(max-width: 850px){.clickable-session{grid-template-rows:repeat(3, min-content)}}.unclickable-session{align-items:center}.popupBackdrop{width:100%;height:100%;position:fixed;top:0;left:0;background-color:rgba(0,0,0,.6509803922);display:grid;justify-items:center;align-items:center;z-index:600}.popupBackdropHidden{display:none}.popupClose{color:#fff;font-weight:800;font-size:2rem;justify-self:right;cursor:pointer;grid-area:closeButton;margin-right:13px}.popupBio{background-color:#fff;display:grid;grid-template-columns:repeat(2, 1fr);grid-template-rows:auto;grid-column-gap:10px;overflow-y:auto;height:500px;padding:30px;grid-area:content;scrollbar-color:#fc003d #000d28}.popupBio::-webkit-scrollbar{width:12px}.popupBio::-webkit-scrollbar-track{background:#000d28}.popupBio::-webkit-scrollbar-thumb{background:#fc003d;background:linear-gradient(0deg, rgb(252, 0, 61) 25%, rgb(25, 195, 252) 75%);border-radius:20px;border:0}@media(max-width: 850px){.popupBio{grid-template-columns:auto;padding:10px;grid-template-rows:repeat(2, auto)}}.popupBioLeft{display:grid;grid-template-rows:repeat(6, auto);row-gap:5px;align-content:start}.popupBioRight{display:grid;grid-template-rows:repeat(3, auto);row-gap:5px;align-content:start}.popupShare{display:grid;justify-items:end;align-items:end;grid-area:shareButton;margin-bottom:5px;cursor:pointer}.feedbackPopupContent{display:grid;grid-template-rows:auto auto;justify-items:center;max-width:100%;margin-top:49px;padding-left:5%;padding-right:5%;grid-template-areas:". closeButton" "content content"}.popupContent{display:grid;grid-template-rows:auto auto;justify-items:center;max-width:100%;margin-top:49px;padding-left:5%;padding-right:5%;grid-template-rows:auto auto;grid-template-columns:1fr auto auto;grid-template-areas:". shareButton closeButton" "content content content";grid-column-gap:25px;grid-row-gap:5px}.bio-title,.bio-speaker-bio-title,.bio-speaker{color:#ff3263;font-weight:800;padding-bottom:20px;padding-top:20px;font-size:1.5rem}.bio-title{justify-self:left}.bio-subtitle{justify-self:center;font-size:.8rem;line-height:1.3rem}.bio-tagline,.bio-speaker-bio,.bio-talk-description{font-size:.8rem;line-height:1.3rem}.bio-speaker{justify-self:center}@media(max-width: 850px){.bio-speaker{grid-column:unset;grid-row:unset}}.bio-social{justify-self:center;display:grid;grid-auto-flow:column;column-gap:10px}.bio-social img{height:35px}@media(max-width: 850px){.bio-social{grid-column:unset;grid-row:unset}}.bio-tagline{justify-self:center}@media(max-width: 850px){.bio-tagline{grid-column:unset;grid-row:unset}}@media(max-width: 850px){.bio-speaker-bio-title{grid-column:unset;grid-row:unset}}.bio-speaker-bio{margin-top:5px;margin-bottom:20px}@media(max-width: 850px){.bio-speaker-bio{grid-column:unset;grid-row:unset}}.bio-title{justify-self:center}@media(max-width: 850px){.bio-title{margin-top:5px;grid-column:unset;grid-row:unset}}@media(max-width: 850px){.bio-talk-description{grid-column:unset;grid-row:unset;margin-top:10px}}.bio-track{font-size:.8rem;align-self:center;justify-self:end}@media(max-width: 850px){.bio-track{grid-column:unset;grid-row:unset;margin-top:5px;justify-self:start}}.largePopupImage{grid-column:1/1;grid-row:1/1;align-self:center;border-radius:50%;border-radius:50%;width:200px;height:200px;justify-self:center}@media(max-width: 850px){.largePopupImage{grid-column:unset;grid-row:unset}}.agenda-keynote-session{background-color:unset;color:#000;font-size:1.3rem;grid-template-rows:unset}.agenda-keynote-session img.speaker-image{height:160px;width:unset}.agenda-session-header{justify-self:stretch;display:grid;grid-auto-flow:column;grid-template-columns:max-content max-content 1fr max-content max-content;padding:5px;font-size:1rem}.time-from-time{text-align:left}.time-from-arrow{text-align:left;margin-left:5px;margin-right:10px}.time-title{text-align:center}.time-to-arrow{text-align:right;margin-left:10px;margin-right:5px}.time-to-time{text-align:right}.agenda-title-spacer{margin-left:5px;margin-right:5px}@media(max-width: 600px){.agenda-title-spacer{display:none}}.agenda-session-underline{height:1px;background-color:#fc003d;width:80%;margin-top:10px}@media(min-width: 850px){.agenda-session-underline{display:none}}.feedbackBase{margin:20px;display:grid;grid-template-columns:repeat(4, 300px);justify-self:center;grid-column-gap:20px;grid-row-gap:10px}@media(max-width: 1300px){.feedbackBase{grid-template-columns:repeat(3, 300px)}}@media(max-width: 990px){.feedbackBase{grid-template-columns:repeat(2, 300px)}}@media(max-width: 640px){.feedbackBase{grid-template-columns:repeat(1, 300px)}}.feedbackButton{align-content:center;width:300px;height:150px;background:#fff;border-width:2px;border-radius:10px;border-style:solid;border-color:#000d28;color:#000d28;border-width:4px;text-align:center;cursor:pointer;display:grid;justify-content:center;row-gap:10px}.feedbackButton:hover{background:#e6e6e6}.feedbackButtonTitle{font-size:larger;font-weight:bold;color:#fc003d}.feedbackButtonWorkshop{font-size:small;padding-left:5px;padding-right:5px}.popupRatingClose{color:#fc003d;background-color:#fff;border-top-left-radius:10px;border-top-right-radius:10px;padding:5px;grid-area:closeButton;margin-right:15px}.feedbackPopup{width:75vw;max-height:75vh;background-color:#fff;display:grid;grid-template-rows:auto;grid-row-gap:10px;overflow-y:auto;padding:30px;align-content:start;border-top-left-radius:10px;border-bottom-right-radius:10px;border-bottom-left-radius:10px;overflow-x:hidden;grid-area:content;scrollbar-color:#fc003d #000d28}.feedbackPopup::-webkit-scrollbar{width:12px}.feedbackPopup::-webkit-scrollbar-track{background:#000d28}.feedbackPopup::-webkit-scrollbar-thumb{background:#fc003d;background:linear-gradient(0deg, rgb(252, 0, 61) 25%, rgb(25, 195, 252) 75%);border-radius:20px;border:0}.feedbackTitle{font-size:x-large;color:#fc003d}.rating{display:grid;grid-auto-flow:row}.rating datalist{display:flex;flex-direction:column;justify-content:space-between;writing-mode:vertical-lr}.rating option{padding:0}.rating input[type=range]{margin:0}.textFeedback{width:90%;height:100px;font-size:larger}.questionTitle{margin-bottom:5px}.questionBase{margin-bottom:10px}input[type=radio]{width:30px;height:30px;border-radius:30px;accent-color:#fc003d}.radioSet{display:grid;grid-auto-flow:column;align-items:center;grid-template-columns:45px 100px 45px 100px}.doneButton{width:300px;justify-self:center;font-size:large;border-radius:10px;border-color:#ff3263;background:#fc003d;color:#fff;padding:10px;cursor:pointer}.doneButton:hover{background:#ff3062}.doneButton:active{background:#c90031}.doneButton:disabled{background-color:#000d28}.saveButton{display:none;width:300px;justify-self:center;font-size:x-large;border-radius:10px;border-color:#ff3263;background:#fc003d;color:#fff;padding:10px;cursor:pointer}.saveButton:hover{background:#ff3062}.saveButton:active{background:#c90031}.saveButton:disabled{background-color:#000d28}select{font-size:larger;width:90%;border-color:#fc003d;padding:10px;background-color:#fff;border-width:1px}input[type=text]{font-size:larger;width:90%;border-color:#fc003d;padding:10px}input[type=email]{font-size:larger;width:90%;border-color:#fc003d;padding:10px}input[type=number]{font-size:larger;width:90%;border-color:#fc003d;padding:10px}.submitButtons{display:grid;grid-auto-flow:column;margin-bottom:40px}.loading{justify-self:center;grid-area:1/span 4;font-size:xx-large}.feedbackTable{border:1px solid #fff;text-align:center;border-collapse:collapse}.feedbackTable td,.feedbackTable th{border:1px solid #fff;padding:5px}.feedbackTable tr:nth-child(even){background:#d0e4f5;color:#000d28}.feedbackTable thead{background:#fc003d;border-bottom:5px solid #fff}.feedbackTable tfoot{color:#fff;background:#000d28;border-top:3px solid #19c3fc}input[type=range].styled-slider{height:2.2em;-webkit-appearance:none;appearance:none}input[type=range].styled-slider:focus{outline:none}input[type=range].styled-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:2em;height:2em;border-radius:1em;background:#19c3fc;border:none;box-shadow:0 0 2px #000;margin-top:calc(max((1em - 1px - 1px)*.5,0px) - 1em)}input[type=range].styled-slider::-webkit-slider-runnable-track{height:1em;border:1px solid #b2b2b2;border-radius:.5em;background:#000d28;box-shadow:none}input[type=range].styled-slider::-webkit-slider-thumb:hover{background:#19c3fc}input[type=range].styled-slider:hover::-webkit-slider-runnable-track{background:#000d28;border-color:#9a9a9a}input[type=range].styled-slider::-webkit-slider-thumb:active{background:#19c3fc}input[type=range].styled-slider:active::-webkit-slider-runnable-track{background:#000d28;border-color:#c1c1c1}input[type=range].styled-slider::-moz-range-thumb{width:2em;height:2em;border-radius:1em;background:#19c3fc;border:none;box-shadow:0 0 2px #000}input[type=range].styled-slider::-moz-range-track{height:max(1em - 1px - 1px,0px);border:1px solid #b2b2b2;border-radius:.5em;background:#000d28;box-shadow:none}input[type=range].styled-slider::-moz-range-thumb:hover{background:#19c3fc}input[type=range].styled-slider:hover::-moz-range-track{background:#000d28;border-color:#9a9a9a}input[type=range].styled-slider::-moz-range-thumb:active{background:#19c3fc}input[type=range].styled-slider:active::-moz-range-track{background:#000d28;border-color:#c1c1c1}input[type=range].styled-slider::-ms-fill-upper{background:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}input[type=range].styled-slider::-ms-fill-lower{background:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}input[type=range].styled-slider::-ms-thumb{width:2em;height:2em;border-radius:1em;background:#19c3fc;border:none;box-shadow:0 0 2px #000;margin-top:0;box-sizing:border-box}input[type=range].styled-slider::-ms-track{height:1em;border-radius:.5em;background:#000d28;border:1px solid #b2b2b2;box-shadow:none;box-sizing:border-box}input[type=range].styled-slider::-ms-thumb:hover{background:#19c3fc}input[type=range].styled-slider:hover::-ms-track{background:#000d28;border-color:#9a9a9a}input[type=range].styled-slider::-ms-thumb:active{background:#19c3fc}input[type=range].styled-slider:active::-ms-track{background:#000d28;border-color:#c1c1c1}@keyframes TransitioningBackground{0%{background-position:1% 0%}50%{background-position:99% 100%}100%{background-position:1% 0%}}.shimmer{animation:TransitioningBackground 10s ease infinite;transition:.6s}.shimmer:hover{transform:scale(1.2);cursor:pointer}.shimmer:hover::before,.shimmer:hover::after{display:block;transform:translateX(300px) skewX(-15deg);transition:.7s}.history{display:grid;grid-auto-flow:column;grid-column-gap:10px;grid-row-gap:10px}@media(max-width: 850px){.history{grid-auto-flow:row}}.history>div{min-height:170px;background:#d3d3d3;width:250px;border-radius:10px;display:grid;align-items:center;justify-items:center}.history>div>a{display:grid;justify-items:center;align-items:center;grid-auto-flow:row;row-gap:5px}@font-face{font-family:"Armata";src:url("/public/Armata-Regular.ttf")}span.third{color:#9a76cf}span.pink{color:#ff3263}span.blue{color:#19c3fc}span.dark{color:#0a0a0a}a{color:#ff3263}a:hover{color:#ff658a}html{position:relative;min-height:100%;scrollbar-color:#fc003d #000d28}body{background-color:#fff;font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;color:#0a0a0a;margin:0;font-size:1rem;margin-bottom:30px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased !important;-moz-font-smoothing:antialiased !important;text-rendering:optimizelegibility !important;letter-spacing:.03rem;scrollbar-color:#fc003d #000d28}body::-webkit-scrollbar{width:12px}body::-webkit-scrollbar-track{background:#000d28}body::-webkit-scrollbar-thumb{background:#fc003d;background:linear-gradient(0deg, rgb(252, 0, 61) 25%, rgb(25, 195, 252) 75%);border-radius:20px;border:0}.googleMapEmbed{width:560px;height:315px}@media(max-width: 850px){.googleMapEmbed{max-width:80vw;height:168.75px}}.youtubes{width:560px;height:315px}@media(max-width: 850px){.youtubes{max-width:80vw;height:168.75px}}.menu{background-color:#000d28;color:#fff;height:40px;padding:10px;display:grid;align-items:center;grid-template-columns:auto auto;font-weight:bolder;position:sticky;top:0;z-index:10000}.menu a{color:#fff;text-decoration:none}.menu a:hover{color:#ff3263}.menu .left{justify-self:start;align-self:baseline}.menu .right{justify-self:end}.menu .right-mobile-icon{display:none}@media(max-width: 850px){.menu .right-mobile-icon{display:grid;justify-content:end;cursor:pointer}}.menu .right-menu{display:grid;grid-auto-flow:column;grid-gap:10px;text-align:center;align-items:center}@media(max-width: 840px){.menu .right-menu{grid-template-columns:repeat(11, min-content)}}@media(max-width: 850px){.menu .right-menu{display:none;position:relative;z-index:10001}.menu .right-menu-open{display:grid;grid-auto-flow:row;background:#000d28;padding:20px;border-color:#b2002a;border-width:1px;border-style:solid;margin-top:5px;grid-row-gap:20px;grid-template-columns:unset}.menu .right-menu-open>div.spacer{display:none}}.menu .right .spacer{color:#c5c5c5}.date a{color:#000d28}.event-logo{height:200px;padding-bottom:15px;padding-top:15px}.hero{background-image:url("/public/images/Background_Web.jpg");background-color:#000d28;background-position:center;background-repeat:no-repeat;background-size:cover;padding-top:40px;padding-bottom:40px;display:grid;color:#fff;justify-content:center;text-align:center;grid-row-gap:30px;padding-left:10px;padding-right:10px}.hero .brand{display:grid;justify-items:center}.hero .brand img{max-width:80%;max-height:100px;object-fit:contain}.hero .slogan{margin-top:10px;margin-bottom:40px}.hero .intro{font-size:1rem;line-height:1.5rem;width:100%}.content{padding-top:15px;padding-bottom:15px;padding-left:20%;padding-right:20%}@media(max-width: 850px){.content{padding-left:5%;padding-right:5%}}.highlight{font-weight:bold;color:#fc003d}@media(min-width: 850px){.sponsor-content-detail-content-sponsor-card:not(:last-child){margin-right:10px}}.sponsor-content-detail-event-bananas{display:grid;grid-template-columns:auto auto auto;justify-items:center;grid-row-gap:50px}@media(max-width: 850px){.sponsor-content-detail-event-bananas{grid-template-columns:auto}}.sponsor-content-detail-event-bananas .event{display:grid;grid-row-gap:10px;justify-content:center;justify-items:center}@media(min-width: 850px){.sponsor-content-detail-event-bananas .event:not(:last-child){margin-right:50px}}.sponsor-content-detail-event-bananas .event .location-pink{color:#ff3263;text-transform:uppercase;padding-top:10px;font-weight:800;font-size:2rem;text-align:center}.sponsor-content-detail-event-bananas .event .location-blue{color:#19c3fc;text-transform:uppercase;padding-top:10px;font-weight:800;font-size:2rem;text-align:center}.sponsor-content-detail-event-bananas .event .location-third{color:#9a76cf;text-transform:uppercase;padding-top:10px;font-weight:800;font-size:2rem;text-align:center}.sponsor-content-detail-event-bananas .event a{background-color:#000d28;font-size:.8rem}.sponsor-content-detail-collapse{padding-top:0px;padding-bottom:0px;padding-left:0px;padding-right:0px}.sponsor-content-detail-workshop{max-width:75%;display:grid}.sponsor-content-detail-workshop>a.button{justify-self:center;margin-bottom:25px;padding-top:15px;padding-bottom:15px}.sponsor-content-detail-media{display:grid;grid-auto-flow:column;grid-auto-columns:200px;grid-column-gap:20px;grid-row-gap:20px;margin-bottom:20px;grid-template-rows:auto auto;grid-template-columns:auto;justify-items:center;line-height:1.5rem}.sponsor-content-detail-media-points{display:grid;grid-template-columns:auto auto;margin-top:30px}@media(max-width: 850px){.sponsor-content-detail-media-points{grid-template-columns:auto;grid-template-rows:repeat(2, auto)}}.sponsor-content-detail-media-points>div>img{height:250px;padding-bottom:20px}@media(max-width: 850px){.sponsor-content-detail-media-points>div>img{height:200px}}.sponsor-content-detail-media-points>div{display:grid;grid-template-columns:auto;grid-template-rows:repeat(3, auto);justify-items:center;padding:0px 20px}.sponsor-content-detail-media-points>div>div:nth-child(2){font-weight:bold}@media(max-width: 850px){.sponsor-content-detail-media{grid-auto-flow:row;grid-template-rows:auto auto auto;grid-template-columns:auto auto}}@media(max-width: 530px){.sponsor-content-detail-media{grid-template-columns:auto}}.sponsor-content-detail-media-full{display:grid;grid-row-gap:20px;grid-column-gap:20px;grid-auto-flow:row;grid-template-columns:repeat(3, auto)}.sponsor-content-detail-mailing-list{display:grid;text-align:center;justify-items:center;font-size:1rem}.sponsor-content-detail-mailing-list input[type=text]{max-width:500px;width:100%;padding:20px;border:none;margin-bottom:10px;font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif}.sponsor-content-detail-mailing-list input[type=text]::placeholder{color:#19c3fc}.sponsor-content-detail-mailing-list input[type=email]{max-width:500px;width:100%;padding:20px;border:none;margin-bottom:10px;font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif}.sponsor-content-detail-mailing-list input[type=email]::placeholder{color:#19c3fc}.sponsor-content-detail-mailing-list a{color:#19c3fc}.sponsor-content-detail-mailing-list a:hover{color:#03a8df}.sponsor-content-detail-mailing-list div.checkbox{display:grid;grid-template-columns:auto auto;align-items:center}.sponsor-content-detail-mailing-list div.checkbox input[type=checkbox]{width:20px;height:20px}.callforspeakers{height:100px;font-size:24px !important;line-height:3rem !important;background-image:linear-gradient(to left, #fc003d, #19c3fc)}.devugblurb{max-width:500px;width:100%;padding:20px}.card{border:1px solid #286eff;border-radius:5px;height:200px;width:200px;font-size:.7rem;font-variant-caps:all-small-caps;font-weight:bold;display:grid;align-items:end;background-color:#000d28;background-repeat:no-repeat;background-size:contain;background-position:center}.card .title{padding:5px;width:190px;margin-bottom:10px;background-color:rgba(0,0,0,.705);color:#fff}.smallerCard{border:1px solid #286eff;border-radius:5px;height:150px;width:150px;font-size:.7rem;font-variant-caps:all-small-caps;font-weight:bold;display:grid;align-items:end;background-color:#000d28;background-repeat:no-repeat;background-size:contain;background-position:center}.smallerCard .title{padding:5px;width:140px;margin-bottom:10px;background-color:rgba(0,0,0,.705);color:#fff}.contactus{display:grid}.contactus .contactDetails{align-self:stretch;display:grid;align-items:center;grid-template-columns:repeat(auto-fill, 200px)}.contactus .contactDetails a{color:#000d28}.contactus .contactDetails a:hover{color:#001e5b}.footer{background-color:#000d28;color:#fff;width:100%;position:absolute;bottom:0;font-size:.8rem;overflow-x:clip;align-items:center;display:grid;grid-auto-flow:column;justify-items:center}@media(max-width: 605px){.footer{font-size:.5rem}}.footer div>a>img{min-height:30px;min-width:30px;height:100%;width:100%}.footer>div:nth-child(1){margin-left:15px}.footer>div:nth-child(2){display:grid;align-items:center;grid-auto-flow:column;justify-items:end;margin-right:15px}@media(max-width: 768px){.footer>div:nth-child(2)>a:nth-child(1){visibility:hidden}}input[type=submit].button{font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;background-image:linear-gradient(to right, #4bd0fd, #19c3fc);text-decoration:none;min-width:200px;display:grid;align-items:center;justify-content:center;border:none;text-align:center;font-size:.9rem;font-weight:800;border-radius:20px;padding:10px 20px;text-transform:uppercase;color:#fff;line-height:1rem;cursor:pointer}input[type=submit].button:hover{background-image:linear-gradient(to left, #4bd0fd, #19c3fc) !important}a.button-blue{font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;background-image:linear-gradient(to right, #4bd0fd, #19c3fc);text-decoration:none;min-width:200px;display:grid;align-items:center;justify-content:center;border:none;text-align:center;font-size:.9rem;font-weight:800;border-radius:20px;padding:10px 20px;text-transform:uppercase;color:#fff;line-height:1rem;cursor:pointer}a.button-blue:hover{background-image:linear-gradient(to left, #4bd0fd, #19c3fc) !important}a.button{font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;background-image:linear-gradient(to right, #ff3062, #fc003d);text-decoration:none;min-width:200px;display:grid;align-items:center;justify-content:center;border:none;text-align:center;font-size:.9rem;font-weight:800;border-radius:20px;padding:10px 20px;text-transform:uppercase;color:#fff;line-height:1rem;cursor:pointer}a.button:hover{background-image:linear-gradient(to left, #ff3062, #fc003d) !important}div.button{font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;background-image:linear-gradient(to right, #001e5b, #000d28);text-decoration:none;min-width:200px;display:grid;align-items:center;justify-content:center;border:none;text-align:center;font-size:.9rem;font-weight:800;border-radius:20px;padding:10px 20px;text-transform:uppercase;color:#fff;line-height:1rem;cursor:pointer}div.button:hover{background-image:linear-gradient(to left, #001e5b, #000d28) !important}a.smalllink{font-size:.7rem;color:#000d28;text-decoration:underline}.nudgeDown{margin-top:50px}.soldOutFooter{font-size:.7em}.totallySoldOut{column-span:all;grid-column-start:1;grid-column-end:5}.banner{text-align:center;padding:6px;background-color:#e3d9b9;font-weight:bold;position:sticky;top:0}.keyboardUserGroup{color:#000d28} +.sponsor{overflow-x:clip;display:grid;grid-template-columns:1fr;grid-template-rows:250px repeat(5, auto);margin-bottom:40px}.sponsor a{text-decoration:none;text-align:center}@media(max-width: 850px){.sponsor{margin-bottom:30px}}.sponsor-home{grid-template-rows:auto repeat(5, auto)}.sponsor hr{width:90%;border-style:none;height:2px;background-color:#f4f4f4}.sponsor-fake-button{font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;background-image:linear-gradient(to right, rgb(0, 29.575, 91), #000d28);text-decoration:none;min-width:200px;display:grid;align-items:center;justify-content:center;border:none;text-align:center;font-size:.9rem;font-weight:800;border-radius:20px;padding:10px 20px;text-transform:uppercase;color:#fff;line-height:1rem;cursor:pointer}.sponsor-fake-button:hover{background-image:linear-gradient(to left, rgb(0, 29.575, 91), #000d28) !important}.sponsor-button{margin-top:10px;margin-bottom:10px;font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;background-image:linear-gradient(to right, rgb(0, 29.575, 91), #000d28);text-decoration:none;min-width:200px;display:grid;align-items:center;justify-content:center;border:none;text-align:center;font-size:.9rem;font-weight:800;border-radius:20px;padding:10px 20px;text-transform:uppercase;color:#fff;line-height:1rem;cursor:pointer;cursor:pointer}.sponsor-button:hover{background-image:linear-gradient(to left, rgb(0, 29.575, 91), #000d28) !important}.sponsor-title{width:100%;background-color:#ff3263;overflow:hidden;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;padding-top:10px;color:#fff}.sponsor-title-ellipse{width:100vw;height:100vw;border-radius:50%;background-color:#000;opacity:.08;margin-top:20px;grid-row:1/1;grid-column:1/1;z-index:10}.sponsor-title-button{margin-top:30px}.sponsor-title-content{grid-row:1/1;grid-column:1/1;z-index:100;justify-self:center;font-size:3rem;text-align:center;margin-top:40px;justify-items:center;display:grid;grid-template-rows:repeat(4, minmax(0, min-content));grid-row-gap:10px;text-transform:uppercase;padding-left:10px;padding-right:10px}@media(max-width: 850px){.sponsor-title-content{font-size:2.1rem;margin-top:0}}.sponsor-title-content-sponsor{display:grid;justify-items:center}.sponsor-title-content-packages-intro{font-size:1rem;width:350px}.sponsor-title-content-package{margin-top:0}.sponsor-title-content-package-image{display:grid;justify-items:center;align-items:start;margin-top:-130px;z-index:150;margin-bottom:-40px}@media(max-width: 850px){.sponsor-title-content-package-image{display:none}}.sponsor-title-content-package-image>img{height:300px;margin-top:50px}.sponsor-title-content-second{width:100%;font-size:1.5rem;display:grid;grid-auto-flow:column;grid-template-columns:repeat(5, auto);align-items:center;justify-items:stretch;text-align:center}@media(max-width: 600px){.sponsor-title-content-second{grid-auto-flow:row;grid-template-columns:unset;font-size:1.3rem}}.sponsor-title-content-third{font-size:1rem}.sponsor-title-blue{width:100%;background-color:#19c3fc;overflow:hidden;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;padding-top:10px;color:#fff}.sponsor-title-blue-ellipse{width:100vw;height:100vw;border-radius:50%;background-color:#000;opacity:.08;margin-top:20px;grid-row:1/1;grid-column:1/1;z-index:10}.sponsor-title-blue-button{margin-top:30px}.sponsor-title-blue-content{grid-row:1/1;grid-column:1/1;z-index:100;justify-self:center;font-size:3rem;text-align:center;margin-top:40px;justify-items:center;display:grid;grid-template-rows:repeat(4, minmax(0, min-content));grid-row-gap:10px;text-transform:uppercase;padding-left:10px;padding-right:10px}@media(max-width: 850px){.sponsor-title-blue-content{font-size:2.1rem;margin-top:0}}.sponsor-title-blue-content-sponsor{display:grid;justify-items:center}.sponsor-title-blue-content-packages-intro{font-size:1rem;width:350px}.sponsor-title-blue-content-package{margin-top:0}.sponsor-title-blue-content-package-image{display:grid;justify-items:center;align-items:start;margin-top:-130px;z-index:150;margin-bottom:-40px}@media(max-width: 850px){.sponsor-title-blue-content-package-image{display:none}}.sponsor-title-blue-content-package-image>img{height:300px;margin-top:50px}.sponsor-title-blue-content-second{width:100%;font-size:1.5rem;display:grid;grid-auto-flow:column;grid-template-columns:repeat(5, auto);align-items:center;justify-items:stretch;text-align:center}@media(max-width: 600px){.sponsor-title-blue-content-second{grid-auto-flow:row;grid-template-columns:unset;font-size:1.3rem}}.sponsor-title-blue-content-third{font-size:1rem}.sponsor-title-third{width:100%;background-color:#9a76cf;overflow:hidden;display:grid;grid-template-columns:1fr;grid-template-rows:1fr;padding-top:10px;color:#fff}.sponsor-title-third-ellipse{width:100vw;height:100vw;border-radius:50%;background-color:#000;opacity:.08;margin-top:20px;grid-row:1/1;grid-column:1/1;z-index:10}.sponsor-title-third-button{margin-top:30px}.sponsor-title-third-content{grid-row:1/1;grid-column:1/1;z-index:100;justify-self:center;font-size:3rem;text-align:center;margin-top:40px;justify-items:center;display:grid;grid-template-rows:repeat(4, minmax(0, min-content));grid-row-gap:10px;text-transform:uppercase;padding-left:10px;padding-right:10px}@media(max-width: 850px){.sponsor-title-third-content{font-size:2.1rem;margin-top:0}}.sponsor-title-third-content-sponsor{display:grid;justify-items:center}.sponsor-title-third-content-packages-intro{font-size:1rem;width:350px}.sponsor-title-third-content-package{margin-top:0}.sponsor-title-third-content-package-image{display:grid;justify-items:center;align-items:start;margin-top:-130px;z-index:150;margin-bottom:-40px}@media(max-width: 850px){.sponsor-title-third-content-package-image{display:none}}.sponsor-title-third-content-package-image>img{height:300px;margin-top:50px}.sponsor-title-third-content-second{width:100%;font-size:1.5rem;display:grid;grid-auto-flow:column;grid-template-columns:repeat(5, auto);align-items:center;justify-items:stretch;text-align:center}@media(max-width: 600px){.sponsor-title-third-content-second{grid-auto-flow:row;grid-template-columns:unset;font-size:1.3rem}}.sponsor-title-third-content-third{font-size:1rem}.sponsor-content-detail,.sponsor-content-detail-packages{display:grid;justify-items:center;padding-bottom:20px;padding-top:20px;padding-left:20px;padding-right:20px;grid-row-gap:20px;max-width:100vw}.sponsor-content-detail-wide-body{overflow-x:hidden;overflow-y:hidden;display:flex;grid-column-gap:20px;width:100%}.sponsor-content-detail-wide-body img{border-style:solid;border-width:1px;border-color:#fc003d;padding:5px;background-color:#fff;height:150px}.sponsor-content-detail-tickets{display:grid;justify-items:center;text-align:center;padding-left:15px;padding-right:15px}.sponsor-content-detail-tickets-cards{width:100%;display:grid;text-align:center;padding:25px 10px;background-color:#fff;grid-row-gap:5px;text-align:center;line-height:1.5rem;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr;column-gap:30px;align-content:center}@media(max-width: 1280px){.sponsor-content-detail-tickets-cards{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}}@media(max-width: 850px){.sponsor-content-detail-tickets-cards{grid-template-columns:1fr;grid-template-rows:min-content min-content min-content min-content}}.sponsor-content-detail-tickets-cards-price{color:#ff3263;font-size:1rem !important;font-weight:800 !important}@media(max-width: 850px){.sponsor-content-detail-tickets-cards{grid-template-columns:auto}}.sponsor-content-detail-tickets-cards>div{display:grid;align-items:center;row-gap:5px;justify-items:center;background-color:#f4f4f4;padding:10px;border-radius:5px;grid-template-rows:min-content 1fr min-content min-content}.sponsor-content-detail-tickets-cards>div>div:nth-child(1){color:#ff3263;font-weight:800}.sponsor-content-detail-tickets-cards>div>div:nth-child(2){font-size:.8rem}.sponsor-content-detail-tickets-cards>div>div:nth-child(3){font-size:.8rem;font-weight:800}.sponsor-content-detail-tickets-cards>div>a{width:max-content}.sponsor-content-detail-location{display:grid;justify-items:center;text-align:center;grid-row-gap:20px}.sponsor-content-detail-packages{grid-column-gap:20px;grid-template-columns:1fr 1fr 1fr;grid-template-rows:auto;justify-items:stretch;padding-left:15%;padding-right:15%}.sponsor-content-detail-packages>div{padding-left:0;padding-right:0}@media(max-width: 850px){.sponsor-content-detail-packages{grid-template-columns:auto;grid-template-rows:auto auto}}.sponsor-content-detail-package-cards{display:grid;grid-column-gap:20px;grid-row-gap:20px;grid-template-columns:100%;grid-template-columns:repeat(auto-fill, minmax(250px, 1fr));justify-items:center;align-items:baseline}@media(min-width: 2350px){.sponsor-content-detail-package-cards{grid-template-columns:1fr 1fr 1fr}}.sponsor-content-detail-package-card{padding:25px 10px;background-color:#f4f4f4;border-radius:5px;color:#ff3263;display:grid;justify-items:center;grid-row-gap:5px;width:200px;text-align:center;line-height:1.5rem}.sponsor-content-detail-package-card>img{width:150px}@media(max-width: 850px){.sponsor-content-detail-package-card>img{display:none}}.sponsor-content-detail-package-card>div>div.sponsor-content-detail-package-card-remaining{font-weight:800;color:rgb(203,0,48.5219512195)}.sponsor-content-detail-package-card>div:nth-child(1),.sponsor-content-detail-package-card>div:nth-child(5),.sponsor-content-detail-package-card>div:nth-child(7){font-weight:800}.sponsor-content-detail-package-card-blue{padding:25px 10px;background-color:#f4f4f4;border-radius:5px;color:#19c3fc;display:grid;justify-items:center;grid-row-gap:5px;width:200px;text-align:center;line-height:1.5rem}.sponsor-content-detail-package-card-blue>img{width:150px}@media(max-width: 850px){.sponsor-content-detail-package-card-blue>img{display:none}}.sponsor-content-detail-package-card-blue>div>div.sponsor-content-detail-package-card-remaining{font-weight:800;color:rgb(2.2532188841,129.9356223176,172.7467811159)}.sponsor-content-detail-package-card-blue>div:nth-child(1),.sponsor-content-detail-package-card-blue>div:nth-child(5),.sponsor-content-detail-package-card-blue>div:nth-child(7){font-weight:800}.sponsor-content-detail-sponsors{display:grid;grid-template-columns:repeat(3, minmax(0, max-content));justify-items:center;grid-row-gap:10px}@media(max-width: 850px){.sponsor-content-detail-sponsors{grid-template-columns:auto}}.sponsor-content-detail-content-sponsor{display:grid;justify-items:center}.sponsor-content-detail-sponsor{border-color:#ff3263;border-width:1px;border-style:solid}.sponsor-content-detail-sponsor-level{display:grid;justify-items:center;margin-bottom:15px}.sponsor-content-detail-sponsor-level img{border-style:solid;border-width:1px;border-color:rgba(240,99,133,.2784313725);padding:5px}.sponsor-content-detail-sponsor-level a{color:rgba(0,0,0,0) !important}.sponsor-content-detail-sponsor-level a:hover{color:rgba(0,0,0,0) !important}.sponsor-content-detail-heading,.sponsor-content-detail-heading-pink,.sponsor-content-detail-heading-third{color:#19c3fc;text-transform:uppercase;padding-top:10px;font-weight:800;font-size:2rem;margin-bottom:15px;text-align:center}.sponsor-content-detail-heading-smaller{font-size:1.6rem}.sponsor-content-detail-heading-third{color:#9a76cf}.sponsor-content-detail-heading-pink{color:#ff3263}@media(min-width: 850px){.sponsor-content-detail-heading-attendees{text-align:left}}.sponsor-content-detail-termsAndConditions{font-size:.6rem}.sponsor-content-detail-mission{display:grid;grid-template-columns:repeat(4, 1fr);grid-template-rows:1fr;grid-column-gap:50px;line-height:1.5rem}.sponsor-content-detail-mission>div{text-align:center;display:grid;justify-items:center;grid-row-gap:20px;grid-template-rows:auto auto 1fr;grid-template-columns:auto}@media(max-width: 850px){.sponsor-content-detail-mission>div>img{display:none;grid-template-rows:0 auto}}@media(max-width: 850px){.sponsor-content-detail-mission{grid-template-rows:repeat(4, 1fr);grid-template-columns:1fr;grid-row-gap:5px}}.sponsor-content-detail-attendees{display:grid;grid-template-rows:auto;grid-template-columns:auto auto;justify-items:center;line-height:1.5rem}@media(max-width: 850px){.sponsor-content-detail-attendees{grid-template-columns:auto}.sponsor-content-detail-attendees>img{display:none}}.sponsor-content-detail-overview{display:grid;grid-template-rows:auto auto;grid-template-columns:minmax(auto, 350px) minmax(auto, 350px);justify-items:center;grid-row-gap:10px;grid-column-gap:50px;grid-auto-flow:column;line-height:1.5rem;margin-bottom:20px}@media(max-width: 850px){.sponsor-content-detail-overview{grid-auto-flow:row;grid-template-rows:repeat(6, auto);grid-template-columns:350px}}.sponsor-content-detail-overview>div:nth-child(1),.sponsor-content-detail-overview>div:nth-child(3),.sponsor-content-detail-overview>div:nth-child(5){color:#19c3fc;font-weight:800;margin-bottom:20px}.sponsor-content-detail-overview>div:nth-child(5){color:#9a76cf}.sponsor-content-detail-overview>div:nth-child(3){color:#ff3263}.sponsor-content-detail-overview>div:nth-child(2),.sponsor-content-detail-overview>div:nth-child(4),.sponsor-content-detail-overview>div:nth-child(6){border-radius:5px;color:#fff;padding:30px 20px;display:grid;grid-template-rows:repeat(4, auto);grid-template-columns:auto;justify-items:center;grid-row-gap:20px}.sponsor-content-detail-overview>div:nth-child(2)>div,.sponsor-content-detail-overview>div:nth-child(4)>div,.sponsor-content-detail-overview>div:nth-child(6)>div{display:grid;justify-items:center;grid-row-gap:5px;text-align:center}.sponsor-content-detail-overview>div:nth-child(2)>div>div:nth-child(odd),.sponsor-content-detail-overview>div:nth-child(4)>div>div:nth-child(odd),.sponsor-content-detail-overview>div:nth-child(6)>div>div:nth-child(odd){text-transform:uppercase;font-weight:800}.sponsor-content-detail-overview>div:nth-child(2){background-color:#19c3fc}.sponsor-content-detail-overview>div:nth-child(6){background-color:#9a76cf}.sponsor-content-detail-overview>div:nth-child(4){background-color:#ff3263}.sponsor-content-detail-reflection{display:grid;grid-template-columns:repeat(2, auto);grid-column-gap:20px;grid-template-rows:repeat(2, auto);grid-row-gap:20px;justify-items:center;margin-bottom:20px;line-height:1.5rem;padding-bottom:20px}@media(max-width: 850px){.sponsor-content-detail-reflection{grid-template-columns:auto;grid-template-rows:repeat(6, auto)}}.sponsor-content-detail-reflection>div{display:grid;grid-template-columns:auto;grid-template-rows:repeat(3, auto);justify-items:center;text-align:center}.sponsor-content-detail-reflection>div>img{width:250px;height:250px;padding:5%}.sponsor-content-detail-reflection>div:nth-child(2){font-size:1.1rem}.sponsor-content-detail-contact{display:grid;grid-template-columns:repeat(3, 1fr);justify-items:center;grid-column-gap:20px;line-height:1.5rem}@media(max-width: 850px){.sponsor-content-detail-contact{grid-template-rows:repeat(3, 1fr);grid-template-columns:auto;grid-row-gap:10px}}.sponsor-content-detail-contact>div{display:grid;grid-template-rows:repeat(3, auto);justify-items:center;grid-row-gap:5px}.sponsor-content-detail-contact>div>div:nth-child(1){font-weight:800}.sponsor-content-detail-introduction{justify-self:left;line-height:1.5rem}.sponsor-content-detail-brand{line-height:1.5rem;display:grid;grid-template-columns:1fr 1fr;grid-column-gap:50px}.sponsor-content-detail-brand>div:before{content:"• "}@media(max-width: 850px){.sponsor-content-detail-brand{grid-template-columns:1fr}}.sponsor-content-detail-expo{line-height:1.5rem;display:grid;grid-template-columns:1fr 1fr;grid-column-gap:50px}.sponsor-content-detail-expo>div:before{content:"• "}@media(max-width: 850px){.sponsor-content-detail-expo{grid-template-columns:1fr}}.sponsor-content-detail-expo-stand{text-align:center;font-size:.7rem}.sponsor-content-detail-expo-stand>a{font-size:1rem;display:grid;justify-items:center;row-gap:20px;text-align:center}.sponsor-content-detail-benefits{line-height:1.5rem;display:grid;grid-template-columns:1fr 1fr;grid-column-gap:50px}.sponsor-content-detail-benefits>div:before{content:"• "}@media(max-width: 850px){.sponsor-content-detail-benefits{grid-template-columns:1fr}}.sponsor-content-detail-exclusive{line-height:1.5rem;display:grid;grid-template-columns:1fr 1fr;grid-column-gap:50px}.sponsor-content-detail-exclusive>div:before{content:"• "}@media(max-width: 850px){.sponsor-content-detail-exclusive{grid-template-columns:1fr}}.sponsor-content-detail-white{background-color:#fff !important}.sponsor-content-detail:nth-child(odd),.sponsor-content-detail-packages:nth-child(odd){background-color:#000d28;color:#fff}.sponsor-content-detail:nth-child(even),.sponsor-content-detail-packages:nth-child(even){background-color:#fff}.sponsor .more-info{margin-top:10px;text-decoration:none}.sponsor-banana{height:100px;font-size:24px !important;background-image:linear-gradient(to left, #fc003d, #19c3fc);display:grid}.sponsor-banana>div{align-self:center}.sponsor-small-banana{height:50px;font-size:24px !important;background-image:linear-gradient(to left, #000d28, #19c3fc);display:grid}.sponsor-small-banana>div{align-self:center}img.sponsorLogo{max-width:unset}@media(max-width: 850px){img.sponsorLogo{max-width:80vw}}.collapseMe{height:0px;margin:0px;padding:0px}#agenda{line-height:1.3em;width:100%;display:grid;grid-auto-flow:row;justify-items:center;row-gap:3px;column-gap:5px;padding-bottom:5px;padding-left:2%;padding-right:2%;grid-template-rows:repeat(33, min-content);grid-template-columns:1fr 300px;grid-template-areas:"registration registration" "expo expo" "welcome welcome" "keynote keynote" "loading1 loading1" "break1 break1" "timeslot1 workshoptime1" "session1 workshop10" "loading2 workshop10" "movement1 workshop10" "timeslot2 workshop10" "session2 workshop10" "loading3 workshop10" "movement2 movement2" "timeslot3 ." "session3 ." "loading4 ." "lunch lunch" "timeslot4 workshoptime2" "session4 workshop20" "loading5 workshop20" "movement3 workshop20" "timeslot5 workshop20" "session5 workshop20" "loading6 workshop20" "break2 break2" "timeslot6 workshoptime3" "session6 workshop30" "loading7 workshop30" "movement4 workshop30" "timeslot7 workshop30" "session7 workshop30" "cocktail cocktail"}@media(max-width: 1220px){#agenda{grid-template-rows:unset;grid-template-columns:1fr;grid-template-areas:"registration" "expo" "welcome" "keynote" "loading1" "break1" "timeslot1" "session1" "loading2" "movement1" "timeslot2" "session2" "loading3" "movement2" "timeslot3" "session3" "lunch" "loading4" "timeslot4" "session4" "loading5" "movement3" "timeslot5" "session5" "loading6" "break2" "timeslot6" "session6" "loading7" "movement4" "timeslot7" "session7" "cocktail" "workshoptitle" "workshoptime1" "workshop10" "workshoptime2" "workshop20" "workshoptime3" "workshop30"}}.agenda>.hidden-row{display:none}.agenda-workshop-sponsor a{color:#000d28}.agenda-workshop-sponsor a:hover{color:rgb(0,29.575,91)}.agenda-workshop-title{display:none}@media(max-width: 1220px){.agenda-workshop-title{display:grid}}.agenda-workshop-time{margin-top:10px;font-size:smaller;font-weight:800;color:#001e5b}.agenda-workshop-content{font-size:smaller;margin-top:10px}.agenda-workshop{background-color:#0479a0;padding:10px;border-radius:5px;text-align:center;justify-self:stretch}.agenda-row-style-break{background-color:#ed3259;display:grid;justify-self:stretch;color:#fff;border-radius:5px;padding:5px;grid-auto-flow:column;justify-content:stretch;align-items:center;padding:10px;font-size:.8rem;grid-template-columns:max-content max-content 1fr max-content max-content}.agenda-row-style-key{background-color:#990020;display:grid;justify-self:stretch;color:#fff;border-radius:5px;padding:5px;grid-auto-flow:column;justify-content:stretch;align-items:center;font-size:.8rem;padding:10px;grid-template-columns:max-content max-content 1fr max-content max-content}.agenda-row-style-highlight{background-color:#ff3263;display:grid;justify-self:stretch;color:#fff;border-radius:5px;padding:5px;grid-auto-flow:column;justify-content:stretch;align-items:center;font-size:1rem;padding:10px;grid-template-columns:max-content max-content 1fr max-content max-content}.agenda-row-style-keynote{background-color:#19c3fc;display:grid;justify-self:stretch;color:#fff;border-radius:5px;padding:5px;grid-auto-flow:column;justify-content:stretch;align-items:center;justify-content:unset;grid-auto-flow:row}.agenda-row-timeslot{display:grid;grid-auto-flow:column;grid-template-columns:repeat(5, 1fr);justify-items:center;row-gap:3px;column-gap:5px}@media(max-width: 850px){.agenda-row-timeslot{grid-auto-flow:row;grid-template-columns:auto}}.agenda-virtual-row-timeslot{display:grid;grid-auto-flow:column;grid-template-columns:repeat(6, 1fr);justify-items:center;justify-self:stretch;row-gap:3px;column-gap:5px}@media(max-width: 850px){.agenda-virtual-row-timeslot{grid-auto-flow:row;grid-template-columns:auto}}.agenda-session{background-color:#000d28;border-radius:5px;display:grid;justify-self:stretch;justify-items:center;color:#fff;text-align:center;padding-left:10px;padding-right:10px;padding-top:10px;padding-bottom:10px;grid-template-rows:55px 20px 170px 50px}@media(max-width: 850px){.agenda-session{grid-template-rows:repeat(3, auto);padding-bottom:0px}}.agenda-session-subtitle{margin-bottom:11px;font-size:small}.agenda-row-style-loading{font-size:.8rem}.agenda-session-time,.agenda-session-room{font-size:.8rem;margin:3px;align-self:center}@media(max-width: 850px){.agenda-session-time{display:none}}.agenda-session-name{color:#990020}.agenda-session-image,.agenda-session-name,.agenda-session-title{margin:3px;font-weight:700}.agenda-session-image{padding:10px;max-width:150px}@media(max-width: 850px){.agenda-session-image{display:none}}.agenda-session-remote{font-size:.7rem;color:#19c3fc;display:none}.agenda-keynote-session>.agenda-session-remote{color:#000d28}.speaker-image{width:100%;border-radius:50%}@media(max-width: 850px){.speaker-image{display:none}}.multi-speaker-container{display:grid}.multi-speaker-image{grid-row:1;grid-column:1}.hide{display:none}.clickable-session{cursor:pointer}@media(max-width: 850px){.clickable-session{grid-template-rows:repeat(3, min-content)}}.unclickable-session{align-items:center}.popupBackdrop{width:100%;height:100%;position:fixed;top:0;left:0;background-color:rgba(0,0,0,.6509803922);display:grid;justify-items:center;align-items:center;z-index:600}.popupBackdropHidden{display:none}.popupClose{color:#fff;font-weight:800;font-size:2rem;justify-self:right;cursor:pointer;grid-area:closeButton;margin-right:13px}.popupBio{background-color:#fff;display:grid;grid-template-columns:repeat(2, 1fr);grid-template-rows:auto;grid-column-gap:10px;overflow-y:auto;height:500px;padding:30px;grid-area:content;scrollbar-color:#fc003d #000d28}.popupBio::-webkit-scrollbar{width:12px}.popupBio::-webkit-scrollbar-track{background:#000d28}.popupBio::-webkit-scrollbar-thumb{background:#fc003d;background:linear-gradient(0deg, rgb(252, 0, 61) 25%, rgb(25, 195, 252) 75%);border-radius:20px;border:0}@media(max-width: 850px){.popupBio{grid-template-columns:auto;padding:10px;grid-template-rows:repeat(2, auto)}}.popupBioLeft{display:grid;grid-template-rows:repeat(6, auto);row-gap:5px;align-content:start}.popupBioRight{display:grid;grid-template-rows:repeat(3, auto);row-gap:5px;align-content:start}.popupShare{display:grid;justify-items:end;align-items:end;grid-area:shareButton;margin-bottom:5px;cursor:pointer}.feedbackPopupContent{display:grid;grid-template-rows:auto auto;justify-items:center;max-width:100%;margin-top:49px;padding-left:5%;padding-right:5%;grid-template-areas:". closeButton" "content content"}.popupContent{display:grid;grid-template-rows:auto auto;justify-items:center;max-width:100%;margin-top:49px;padding-left:5%;padding-right:5%;grid-template-rows:auto auto;grid-template-columns:1fr auto auto;grid-template-areas:". shareButton closeButton" "content content content";grid-column-gap:25px;grid-row-gap:5px}.bio-title,.bio-speaker-bio-title,.bio-speaker{color:#ff3263;font-weight:800;padding-bottom:20px;padding-top:20px;font-size:1.5rem}.bio-title{justify-self:left}.bio-subtitle{justify-self:center;font-size:.8rem;line-height:1.3rem}.bio-tagline,.bio-speaker-bio,.bio-talk-description{font-size:.8rem;line-height:1.3rem}.bio-speaker{justify-self:center}@media(max-width: 850px){.bio-speaker{grid-column:unset;grid-row:unset}}.bio-social{justify-self:center;display:grid;grid-auto-flow:column;column-gap:10px}.bio-social img{height:35px}@media(max-width: 850px){.bio-social{grid-column:unset;grid-row:unset}}.bio-tagline{justify-self:center}@media(max-width: 850px){.bio-tagline{grid-column:unset;grid-row:unset}}@media(max-width: 850px){.bio-speaker-bio-title{grid-column:unset;grid-row:unset}}.bio-speaker-bio{margin-top:5px;margin-bottom:20px}@media(max-width: 850px){.bio-speaker-bio{grid-column:unset;grid-row:unset}}.bio-title{justify-self:center}@media(max-width: 850px){.bio-title{margin-top:5px;grid-column:unset;grid-row:unset}}@media(max-width: 850px){.bio-talk-description{grid-column:unset;grid-row:unset;margin-top:10px}}.bio-track{font-size:.8rem;align-self:center;justify-self:end}@media(max-width: 850px){.bio-track{grid-column:unset;grid-row:unset;margin-top:5px;justify-self:start}}.largePopupImage{grid-column:1/1;grid-row:1/1;align-self:center;border-radius:50%;border-radius:50%;width:200px;height:200px;justify-self:center}@media(max-width: 850px){.largePopupImage{grid-column:unset;grid-row:unset}}.agenda-keynote-session{background-color:unset;color:#000;font-size:1.3rem;grid-template-rows:unset}.agenda-keynote-session img.speaker-image{height:160px;width:unset}.agenda-session-header{justify-self:stretch;display:grid;grid-auto-flow:column;grid-template-columns:max-content max-content 1fr max-content max-content;padding:5px;font-size:1rem}.time-from-time{text-align:left}.time-from-arrow{text-align:left;margin-left:5px;margin-right:10px}.time-title{text-align:center}.time-to-arrow{text-align:right;margin-left:10px;margin-right:5px}.time-to-time{text-align:right}.agenda-title-spacer{margin-left:5px;margin-right:5px}@media(max-width: 600px){.agenda-title-spacer{display:none}}.agenda-session-underline{height:1px;background-color:#fc003d;width:80%;margin-top:10px}@media(min-width: 850px){.agenda-session-underline{display:none}}.feedbackBase{margin:20px;display:grid;grid-template-columns:repeat(4, 300px);justify-self:center;grid-column-gap:20px;grid-row-gap:10px}@media(max-width: 1300px){.feedbackBase{grid-template-columns:repeat(3, 300px)}}@media(max-width: 990px){.feedbackBase{grid-template-columns:repeat(2, 300px)}}@media(max-width: 640px){.feedbackBase{grid-template-columns:repeat(1, 300px)}}.feedbackButton{align-content:center;width:300px;height:150px;background:#fff;border-width:2px;border-radius:10px;border-style:solid;border-color:#000d28;color:#000d28;border-width:4px;text-align:center;cursor:pointer;display:grid;justify-content:center;row-gap:10px}.feedbackButton:hover{background:hsl(0,0%,90%)}.feedbackButtonTitle{font-size:larger;font-weight:bold;color:#fc003d}.feedbackButtonWorkshop{font-size:small;padding-left:5px;padding-right:5px}.popupRatingClose{color:#fc003d;background-color:#fff;border-top-left-radius:10px;border-top-right-radius:10px;padding:5px;grid-area:closeButton;margin-right:15px}.feedbackPopup{width:75vw;max-height:75vh;background-color:#fff;display:grid;grid-template-rows:auto;grid-row-gap:10px;overflow-y:auto;padding:30px;align-content:start;border-top-left-radius:10px;border-bottom-right-radius:10px;border-bottom-left-radius:10px;overflow-x:hidden;grid-area:content;scrollbar-color:#fc003d #000d28}.feedbackPopup::-webkit-scrollbar{width:12px}.feedbackPopup::-webkit-scrollbar-track{background:#000d28}.feedbackPopup::-webkit-scrollbar-thumb{background:#fc003d;background:linear-gradient(0deg, rgb(252, 0, 61) 25%, rgb(25, 195, 252) 75%);border-radius:20px;border:0}.feedbackTitle{font-size:x-large;color:#fc003d}.rating{display:grid;grid-auto-flow:row}.rating datalist{display:flex;flex-direction:column;justify-content:space-between;writing-mode:vertical-lr}.rating option{padding:0}.rating input[type=range]{margin:0}.textFeedback{width:90%;height:100px;font-size:larger}.questionTitle{margin-bottom:5px}.questionBase{margin-bottom:10px}input[type=radio]{width:30px;height:30px;border-radius:30px;accent-color:#fc003d}.radioSet{display:grid;grid-auto-flow:column;align-items:center;grid-template-columns:45px 100px 45px 100px}.doneButton{width:300px;justify-self:center;font-size:large;border-radius:10px;border-color:#ff3263;background:#fc003d;color:#fff;padding:10px;cursor:pointer}.doneButton:hover{background:rgb(255,48,98.1071428571)}.doneButton:active{background:rgb(201,0,48.6547619048)}.doneButton:disabled{background-color:#000d28}.saveButton{display:none;width:300px;justify-self:center;font-size:x-large;border-radius:10px;border-color:#ff3263;background:#fc003d;color:#fff;padding:10px;cursor:pointer}.saveButton:hover{background:rgb(255,48,98.1071428571)}.saveButton:active{background:rgb(201,0,48.6547619048)}.saveButton:disabled{background-color:#000d28}select{font-size:larger;width:90%;border-color:#fc003d;padding:10px;background-color:#fff;border-width:1px}input[type=text]{font-size:larger;width:90%;border-color:#fc003d;padding:10px}input[type=email]{font-size:larger;width:90%;border-color:#fc003d;padding:10px}input[type=number]{font-size:larger;width:90%;border-color:#fc003d;padding:10px}.submitButtons{display:grid;grid-auto-flow:column;margin-bottom:40px}.loading{justify-self:center;grid-area:1/span 4;font-size:xx-large}.feedbackTable{border:1px solid #fff;text-align:center;border-collapse:collapse}.feedbackTable td,.feedbackTable th{border:1px solid #fff;padding:5px}.feedbackTable tr:nth-child(even){background:#d0e4f5;color:#000d28}.feedbackTable thead{background:#fc003d;border-bottom:5px solid #fff}.feedbackTable tfoot{color:#fff;background:#000d28;border-top:3px solid #19c3fc}input[type=range].styled-slider{height:2.2em;-webkit-appearance:none;appearance:none}input[type=range].styled-slider:focus{outline:none}input[type=range].styled-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:2em;height:2em;border-radius:1em;background:#19c3fc;border:none;box-shadow:0 0 2px #000;margin-top:calc(max((1em - 1px - 1px)*.5,0px) - 1em)}input[type=range].styled-slider::-webkit-slider-runnable-track{height:1em;border:1px solid #b2b2b2;border-radius:.5em;background:#000d28;box-shadow:none}input[type=range].styled-slider::-webkit-slider-thumb:hover{background:#19c3fc}input[type=range].styled-slider:hover::-webkit-slider-runnable-track{background:#000d28;border-color:#9a9a9a}input[type=range].styled-slider::-webkit-slider-thumb:active{background:#19c3fc}input[type=range].styled-slider:active::-webkit-slider-runnable-track{background:#000d28;border-color:#c1c1c1}input[type=range].styled-slider::-moz-range-thumb{width:2em;height:2em;border-radius:1em;background:#19c3fc;border:none;box-shadow:0 0 2px #000}input[type=range].styled-slider::-moz-range-track{height:max(1em - 1px - 1px,0px);border:1px solid #b2b2b2;border-radius:.5em;background:#000d28;box-shadow:none}input[type=range].styled-slider::-moz-range-thumb:hover{background:#19c3fc}input[type=range].styled-slider:hover::-moz-range-track{background:#000d28;border-color:#9a9a9a}input[type=range].styled-slider::-moz-range-thumb:active{background:#19c3fc}input[type=range].styled-slider:active::-moz-range-track{background:#000d28;border-color:#c1c1c1}input[type=range].styled-slider::-ms-fill-upper{background:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}input[type=range].styled-slider::-ms-fill-lower{background:rgba(0,0,0,0);border-color:rgba(0,0,0,0)}input[type=range].styled-slider::-ms-thumb{width:2em;height:2em;border-radius:1em;background:#19c3fc;border:none;box-shadow:0 0 2px #000;margin-top:0;box-sizing:border-box}input[type=range].styled-slider::-ms-track{height:1em;border-radius:.5em;background:#000d28;border:1px solid #b2b2b2;box-shadow:none;box-sizing:border-box}input[type=range].styled-slider::-ms-thumb:hover{background:#19c3fc}input[type=range].styled-slider:hover::-ms-track{background:#000d28;border-color:#9a9a9a}input[type=range].styled-slider::-ms-thumb:active{background:#19c3fc}input[type=range].styled-slider:active::-ms-track{background:#000d28;border-color:#c1c1c1}@keyframes TransitioningBackground{0%{background-position:1% 0%}50%{background-position:99% 100%}100%{background-position:1% 0%}}.shimmer{animation:TransitioningBackground 10s ease infinite;transition:.6s}.shimmer:hover{transform:scale(1.2);cursor:pointer}.shimmer:hover::before,.shimmer:hover::after{display:block;transform:translateX(300px) skewX(-15deg);transition:.7s}.history{display:grid;grid-auto-flow:column;grid-column-gap:10px;grid-row-gap:10px}@media(max-width: 850px){.history{grid-auto-flow:row}}.history>div{min-height:170px;background:#d3d3d3;width:250px;border-radius:10px;display:grid;align-items:center;justify-items:center}.history>div>a{display:grid;justify-items:center;align-items:center;grid-auto-flow:row;row-gap:5px}@font-face{font-family:"Armata";src:url("/public/Armata-Regular.ttf")}span.third{color:#9a76cf}span.pink{color:#ff3263}span.blue{color:#19c3fc}span.dark{color:#0a0a0a}a{color:#ff3263}a:hover{color:rgb(255,101,137.8097560976)}html{position:relative;min-height:100%;scrollbar-color:#fc003d #000d28}body{background-color:#fff;font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;color:#0a0a0a;margin:0;font-size:1rem;margin-bottom:30px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased !important;-moz-font-smoothing:antialiased !important;text-rendering:optimizelegibility !important;letter-spacing:.03rem;scrollbar-color:#fc003d #000d28}body::-webkit-scrollbar{width:12px}body::-webkit-scrollbar-track{background:#000d28}body::-webkit-scrollbar-thumb{background:#fc003d;background:linear-gradient(0deg, rgb(252, 0, 61) 25%, rgb(25, 195, 252) 75%);border-radius:20px;border:0}.googleMapEmbed{width:560px;height:315px}@media(max-width: 850px){.googleMapEmbed{max-width:80vw;height:168.75px}}.youtubes{width:560px;height:315px}@media(max-width: 850px){.youtubes{max-width:80vw;height:168.75px}}.menu{background-color:#000d28;color:#fff;height:40px;padding:10px;display:grid;align-items:center;grid-template-columns:auto auto;font-weight:bolder;position:sticky;top:0;z-index:10000}.menu a{color:#fff;text-decoration:none}.menu a:hover{color:#ff3263}.menu .left{justify-self:start;align-self:baseline}.menu .right{justify-self:end}.menu .right-mobile-icon{display:none}@media(max-width: 850px){.menu .right-mobile-icon{display:grid;justify-content:end;cursor:pointer}}.menu .right-menu{display:grid;grid-auto-flow:column;grid-gap:10px;text-align:center;align-items:center}@media(max-width: 840px){.menu .right-menu{grid-template-columns:repeat(11, min-content)}}@media(max-width: 850px){.menu .right-menu{display:none;position:relative;z-index:10001}.menu .right-menu-open{display:grid;grid-auto-flow:row;background:#000d28;padding:20px;border-color:rgb(177.5,0,42.4268292683);border-width:1px;border-style:solid;margin-top:5px;grid-row-gap:20px;grid-template-columns:unset}.menu .right-menu-open>div.spacer{display:none}}.menu .right .spacer{color:#c5c5c5}.date a{color:#000d28}.event-logo{height:200px;padding-bottom:15px;padding-top:15px}.hero{background-image:url("/public/images/Background_Web.jpg");background-color:#000d28;background-position:center;background-repeat:no-repeat;background-size:cover;padding-top:40px;padding-bottom:40px;display:grid;color:#fff;justify-content:center;text-align:center;grid-row-gap:30px;padding-left:10px;padding-right:10px}.hero .brand{display:grid;justify-items:center}.hero .brand img{max-width:80%;max-height:100px;object-fit:contain}.hero .slogan{margin-top:10px;margin-bottom:40px}.hero .intro{font-size:1rem;line-height:1.5rem;width:100%}.content{padding-top:15px;padding-bottom:15px;padding-left:20%;padding-right:20%}@media(max-width: 850px){.content{padding-left:5%;padding-right:5%}}.highlight{font-weight:bold;color:#fc003d}@media(min-width: 850px){.sponsor-content-detail-content-sponsor-card:not(:last-child){margin-right:10px}}.sponsor-content-detail-event-bananas{display:grid;grid-template-columns:auto auto auto;justify-items:center;grid-row-gap:50px}@media(max-width: 850px){.sponsor-content-detail-event-bananas{grid-template-columns:auto}}.sponsor-content-detail-event-bananas .event{display:grid;grid-row-gap:10px;justify-content:center;justify-items:center}@media(min-width: 850px){.sponsor-content-detail-event-bananas .event:not(:last-child){margin-right:50px}}.sponsor-content-detail-event-bananas .event .location-pink{color:#ff3263;text-transform:uppercase;padding-top:10px;font-weight:800;font-size:2rem;text-align:center}.sponsor-content-detail-event-bananas .event .location-blue{color:#19c3fc;text-transform:uppercase;padding-top:10px;font-weight:800;font-size:2rem;text-align:center}.sponsor-content-detail-event-bananas .event .location-third{color:#9a76cf;text-transform:uppercase;padding-top:10px;font-weight:800;font-size:2rem;text-align:center}.sponsor-content-detail-event-bananas .event a{background-color:#000d28;font-size:.8rem}.sponsor-content-detail-collapse{padding-top:0px;padding-bottom:0px;padding-left:0px;padding-right:0px}.sponsor-content-detail-workshop{max-width:75%;display:grid}.sponsor-content-detail-workshop>a.button{justify-self:center;margin-bottom:25px;padding-top:15px;padding-bottom:15px}.sponsor-content-detail-media{display:grid;grid-auto-flow:column;grid-auto-columns:200px;grid-column-gap:20px;grid-row-gap:20px;margin-bottom:20px;grid-template-rows:auto auto;grid-template-columns:auto;justify-items:center;line-height:1.5rem}.sponsor-content-detail-media-points{display:grid;grid-template-columns:auto auto;margin-top:30px}@media(max-width: 850px){.sponsor-content-detail-media-points{grid-template-columns:auto;grid-template-rows:repeat(2, auto)}}.sponsor-content-detail-media-points>div>img{height:250px;padding-bottom:20px}@media(max-width: 850px){.sponsor-content-detail-media-points>div>img{height:200px}}.sponsor-content-detail-media-points>div{display:grid;grid-template-columns:auto;grid-template-rows:repeat(3, auto);justify-items:center;padding:0px 20px}.sponsor-content-detail-media-points>div>div:nth-child(2){font-weight:bold}@media(max-width: 850px){.sponsor-content-detail-media{grid-auto-flow:row;grid-template-rows:auto auto auto;grid-template-columns:auto auto}}@media(max-width: 530px){.sponsor-content-detail-media{grid-template-columns:auto}}.sponsor-content-detail-media-full{display:grid;grid-row-gap:20px;grid-column-gap:20px;grid-auto-flow:row;grid-template-columns:repeat(3, auto)}.sponsor-content-detail-mailing-list{display:grid;text-align:center;justify-items:center;font-size:1rem}.sponsor-content-detail-mailing-list input[type=text]{max-width:500px;width:100%;padding:20px;border:none;margin-bottom:10px;font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif}.sponsor-content-detail-mailing-list input[type=text]::placeholder{color:#19c3fc}.sponsor-content-detail-mailing-list input[type=email]{max-width:500px;width:100%;padding:20px;border:none;margin-bottom:10px;font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif}.sponsor-content-detail-mailing-list input[type=email]::placeholder{color:#19c3fc}.sponsor-content-detail-mailing-list a{color:#19c3fc}.sponsor-content-detail-mailing-list a:hover{color:rgb(2.9098712446,167.8025751073,223.0901287554)}.sponsor-content-detail-mailing-list div.checkbox{display:grid;grid-template-columns:auto auto;align-items:center}.sponsor-content-detail-mailing-list div.checkbox input[type=checkbox]{width:20px;height:20px}.callforspeakers{height:100px;font-size:24px !important;line-height:3rem !important;background-image:linear-gradient(to left, #fc003d, #19c3fc)}.devugblurb{max-width:500px;width:100%;padding:20px}.card{border:1px solid rgb(40,109.875,255);border-radius:5px;height:200px;width:200px;font-size:.7rem;font-variant-caps:all-small-caps;font-weight:bold;display:grid;align-items:end;background-color:#000d28;background-repeat:no-repeat;background-size:contain;background-position:center}.card .title{padding:5px;width:190px;margin-bottom:10px;background-color:rgba(0,0,0,.705);color:#fff}.smallerCard{border:1px solid rgb(40,109.875,255);border-radius:5px;height:150px;width:150px;font-size:.7rem;font-variant-caps:all-small-caps;font-weight:bold;display:grid;align-items:end;background-color:#000d28;background-repeat:no-repeat;background-size:contain;background-position:center}.smallerCard .title{padding:5px;width:140px;margin-bottom:10px;background-color:rgba(0,0,0,.705);color:#fff}.contactus{display:grid}.contactus .contactDetails{align-self:stretch;display:grid;align-items:center;grid-template-columns:repeat(auto-fill, 200px)}.contactus .contactDetails a{color:#000d28}.contactus .contactDetails a:hover{color:rgb(0,29.575,91)}.footer{background-color:#000d28;color:#fff;width:100%;position:absolute;bottom:0;font-size:.8rem;overflow-x:clip;align-items:center;display:grid;grid-auto-flow:column;justify-items:center}@media(max-width: 605px){.footer{font-size:.5rem}}.footer div>a>img{min-height:30px;min-width:30px;height:100%;width:100%}.footer>div:nth-child(1){margin-left:15px}.footer>div:nth-child(2){display:grid;align-items:center;grid-auto-flow:column;justify-items:end;margin-right:15px}@media(max-width: 768px){.footer>div:nth-child(2)>a:nth-child(1){visibility:hidden}}input[type=submit].button{font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;background-image:linear-gradient(to right, rgb(75.3433476395, 208.1330472103, 252.6566523605), #19c3fc);text-decoration:none;min-width:200px;display:grid;align-items:center;justify-content:center;border:none;text-align:center;font-size:.9rem;font-weight:800;border-radius:20px;padding:10px 20px;text-transform:uppercase;color:#fff;line-height:1rem;cursor:pointer}input[type=submit].button:hover{background-image:linear-gradient(to left, rgb(75.3433476395, 208.1330472103, 252.6566523605), #19c3fc) !important}a.button-blue{font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;background-image:linear-gradient(to right, rgb(75.3433476395, 208.1330472103, 252.6566523605), #19c3fc);text-decoration:none;min-width:200px;display:grid;align-items:center;justify-content:center;border:none;text-align:center;font-size:.9rem;font-weight:800;border-radius:20px;padding:10px 20px;text-transform:uppercase;color:#fff;line-height:1rem;cursor:pointer}a.button-blue:hover{background-image:linear-gradient(to left, rgb(75.3433476395, 208.1330472103, 252.6566523605), #19c3fc) !important}a.button{font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;background-image:linear-gradient(to right, rgb(255, 48, 98.1071428571), #fc003d);text-decoration:none;min-width:200px;display:grid;align-items:center;justify-content:center;border:none;text-align:center;font-size:.9rem;font-weight:800;border-radius:20px;padding:10px 20px;text-transform:uppercase;color:#fff;line-height:1rem;cursor:pointer}a.button:hover{background-image:linear-gradient(to left, rgb(255, 48, 98.1071428571), #fc003d) !important}div.button{font-family:"Armata",Helvetica,"Segoe UI",Verdana,sans-serif;background-image:linear-gradient(to right, rgb(0, 29.575, 91), #000d28);text-decoration:none;min-width:200px;display:grid;align-items:center;justify-content:center;border:none;text-align:center;font-size:.9rem;font-weight:800;border-radius:20px;padding:10px 20px;text-transform:uppercase;color:#fff;line-height:1rem;cursor:pointer}div.button:hover{background-image:linear-gradient(to left, rgb(0, 29.575, 91), #000d28) !important}a.smalllink{font-size:.7rem;color:#000d28;text-decoration:underline}.nudgeDown{margin-top:50px}.soldOutFooter{font-size:.7em}.totallySoldOut{column-span:all;grid-column-start:1;grid-column-end:5}.banner{text-align:center;padding:6px;background-color:#e3d9b9;font-weight:bold;position:sticky;top:0}.keyboardUserGroup{color:#000d28} diff --git a/public/docs/DevConf 2025 Sponsorship Proposal.pdf b/public/docs/DevConf 2025 Sponsorship Proposal.pdf index 5bd7c89069b0ae11d6473a23da33a3dce1fe6a58..67ac6134b642102ebbf5fcf0b9dfde0c1c915d55 100644 GIT binary patch delta 93464 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 S3~w-m8jPY55z#Qvr1?LVMTnjN diff --git a/scripts/devconf.js b/scripts/devconf.js index dec040f5..54220dff 100644 --- a/scripts/devconf.js +++ b/scripts/devconf.js @@ -1,2 +1,2 @@ -(()=>{"use strict";const e="https://ratings-2slkxdorza-nw.a.run.app",t=e=>document.getElementById(e)?.cloneNode(!0)?.content,n=(e,t,n)=>{e.querySelector(t).innerText=n},r=(e,t,n,r,o,a,i)=>{const s=()=>{window.currentSpeaker=void 0,document.querySelector("div.popupBackdrop").classList.add("popupBackdropHidden"),document.removeEventListener("keydown",c);const e=document.querySelector('div[data-popup-content="yes"]');e?.parentNode?.removeChild(e),o?.call(void 0)},c=e=>{"Escape"===e.key&&s()},l=document.querySelector("div.popupShare");l&&(l.onclick=async()=>{if(window.currentSpeaker){const e=`${window.location.origin+window.location.pathname}?currentSpeaker=${window.currentSpeaker.id}`,t={title:`DevConf Speaker: ${window.currentSpeaker.name}`,text:`DevConf Speaker: ${window.currentSpeaker.name}`,url:e};null!=navigator.share&&navigator.canShare(t)?await navigator.share(t):(await navigator.clipboard.writeText(e),alert("URL is copied to clipboard"))}}),document.querySelector("div.popupClose").onclick=()=>{s()};const d=document.querySelector("div.popupBackdropHidden");d.addEventListener("click",s),e.forEach((e=>{const o=t(e);o?(n&&e.classList.add(n),e.onclick=()=>{d.classList.remove("popupBackdropHidden"),document.addEventListener("keydown",c);let t="div.popupContent";i&&(t=`div.${i}`);const n=document.querySelector(t),r=e.attributes["data-slot-id"]?.value;r&&n.setAttribute("speaker-id",r),n.querySelectorAll("div.popupBio").forEach((e=>{n.removeChild(e)})),o.setAttribute("data-popup-content","yes"),n.insertAdjacentElement("beforeend",o),a?.call(void 0,n)}):r&&e.classList.add(r)}))},o=async e=>{let t;const n=(e=>{const t=window.sessionStorage.getItem(`event${e}`);if(t)try{return JSON.parse(t)}catch{return void alert("Oh no! Something has gone horribly wrong. Please close and reopen your browser and try again.")}})(e);if(n)return n;if(navigator.onLine)try{const n=await fetch(`https://sessionize.com/api/v2/${e}/view/all`);n.ok&&(t=await n.json(),window.sessionStorage.setItem(`event${e}`,JSON.stringify(t)))}catch{alert("Oh no! Something has gone horribly wrong. Please reload your browser and try again.")}return t},a={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};var i,s=new Uint8Array(16);function c(){if(!i&&!(i="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return i(s)}for(var l=[],d=0;d<256;++d)l.push((d+256).toString(16).slice(1));const u=function(e,t,n){if(a.randomUUID&&!t&&!e)return a.randomUUID();var r=(e=e||{}).random||(e.rng||c)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(var o=0;o<16;++o)t[n+o]=r[o];return t}return function(e,t=0){return(l[e[t+0]]+l[e[t+1]]+l[e[t+2]]+l[e[t+3]]+"-"+l[e[t+4]]+l[e[t+5]]+"-"+l[e[t+6]]+l[e[t+7]]+"-"+l[e[t+8]]+l[e[t+9]]+"-"+l[e[t+10]]+l[e[t+11]]+l[e[t+12]]+l[e[t+13]]+l[e[t+14]]+l[e[t+15]]).toLowerCase()}(r)},p=/\$\$(?.+)\$\$(?.+)\$\$/;"undefined"==typeof fetch&&alert("Oh no 😢 We don't support your web browser. Please upgrade to a newer version!"),(async()=>{const e=document.getElementById("agenda");if(!e)return;const a=e.getAttribute("data-event-id");if(!a)return;let i;const s=e=>i.speakers.filter((t=>e.indexOf(t.id)>=0)),c=["🔹"],l=e=>{const t=s(e);if(1===t.length){const e=t[0];let n="";n=e.categoryItems.indexOf(204593)>=0?"South Africa":e.questionAnswers.find((e=>59078===e.questionId))?.answerValue;let r="";e.categoryItems.indexOf(204689)>=0&&(r="He/Him"),e.categoryItems.indexOf(204687)>=0&&(r="She/Her"),e.categoryItems.indexOf(204688)>=0&&(r="They/Them");const o=c[Math.floor(Math.random()*c.length)];return r?`${r} ${o} ${n}`:n??""}return""},d=e=>{const t=s(e).map((e=>e.fullName));return 1===t.length?t[0]:`${t.filter(((e,n)=>n{const t=s(e).map((e=>e.profilePicture));return 1===t.length?[]:t.slice(1)},p=e=>s(e)[0],g=e=>p(e).profilePicture,m=e=>i.sessions.filter((t=>t.id===e))[0],f=(e,t=!1)=>{const n=document.createElement("img");return n.src=e,n.classList.add("speaker-image"),t&&n.classList.add("hide"),n},y=(e,t,n=!1)=>{const r=document.createElement("div");r.setAttribute("x-imageset",""),r.classList.add("multi-speaker-container");const o=f(e);return o.classList.add("multi-speaker-image"),n&&o.classList.add("largePopupImage"),r.appendChild(o),t.forEach((e=>{const t=f(e,!0);t.classList.add("multi-speaker-image"),n&&t.classList.add("largePopupImage"),r.appendChild(t)})),r};if(i=await o(a),!i)return;document.querySelectorAll(".agenda-session").forEach((e=>{const n=e,r=n.attributes["data-slot-id"].value;if("999999"===r){const e=t("noSessionCardTemplate").querySelector("div");n.insertAdjacentElement("beforeend",e)}else{const e=m(r);if(e)t("sessionCardTemplate").querySelectorAll("div").forEach((t=>{switch(t.className){case"agenda-session-image":{const n=u(e.speakers);if(n.length>0){const r=y(g(e.speakers),n);t.appendChild(r)}else t.appendChild(f(g(e.speakers)));break}case"agenda-session-subtitle":t.innerText=l(e.speakers);break;case"agenda-session-name":t.innerText=d(e.speakers);break;case"agenda-session-title":t.innerText=e.title}n.insertAdjacentElement("beforeend",t)}));else{const e=t("tbaCardTemplate").querySelector("div");n.insertAdjacentElement("beforeend",e)}}})),r(document.querySelectorAll(".agenda-session"),(e=>{const r=e.attributes["data-slot-id"].value;if(!r&&"0"===r)return null;const o=m(r);if(o){const e=p(o.speakers),r=s(o.speakers).flatMap((e=>(e=>{const t=[];return e.links.forEach((e=>{const n=document.createElement("a");n.target="_blank",n.href=e.url;const r=document.createElement("img");switch(r.alt=e.title,e.title){case"Twitter":r.src="/public/images/icons8-twitter-50.png";break;case"LinkedIn":r.src="/public/images/icons8-linkedin-50.png";break;case"Blog":r.src="/public/images/icons8-website-50.png";break;default:r.src="/public/images/icons8-external-link-50.png"}n.appendChild(r),t.push(n)})),t})(e))),a=t("popupBioContent").firstElementChild,i=u(o.speakers);if(i.length>0){const t=a.querySelector("img.largePopupImage");t.classList.add("hide");const n=y(e.profilePicture,i,!0);t.insertAdjacentElement("afterend",n)}else a.querySelector("img.largePopupImage").src=e.profilePicture;n(a,"div.bio-speaker",d(o.speakers)),n(a,"div.bio-subtitle",l(o.speakers));const c=a.querySelector("div.bio-social");r.forEach((e=>{c.appendChild(e)}));const g=(e=>{const t=s(e).map((e=>e.bio));return 1===t.length?t[0]:t.join("
")})(o.speakers);return 0===i.length&&n(a,"div.bio-tagline",e.tagLine),n(a,"div.bio-title",o.title),n(a,"div.bio-talk-description",o.description),n(a,"div.bio-speaker-bio",g),a}return null}),"clickable-session","unclickable-session",void 0,(e=>{const t=e.attributes["speaker-id"].value;if(t){const e=m(t);if(e){const n=p(e.speakers);window.currentSpeaker={name:n.fullName,id:t}}}})),document.querySelectorAll(".agenda-row-style-loading").forEach((e=>{e.style.display="none"})),document.querySelectorAll(".agenda > .hidden-row").forEach((e=>{e.style.display="grid"})),setInterval((()=>{Array.from(document.querySelectorAll("div[x-imageSet]")).forEach((e=>{const t=e.querySelectorAll("img"),n=Array.from(t).findIndex((e=>!e.classList.contains("hide")));(e=>{let t=1;const n=()=>{t<=.1?e.classList.add("hide"):(e.style.opacity=t.toString(),t-=.025*t,requestAnimationFrame(n))};n()})(t[n]);let r=n+1;r>=t.length&&(r=0),(e=>{let t=.1;e.classList.remove("hide");const n=()=>{t>=1||(e.style.opacity=t.toString(),t+=.025*t,requestAnimationFrame(n))};n()})(t[r])}))}),3500);const h=new URLSearchParams(window.location.search).get("currentSpeaker");h&&document.querySelector(`div[data-slot-id="${h}"]`).click()})(),(async()=>{const a=document.getElementById("feedbackStage");if(!a)return;let i;const s=window.sessionStorage.getItem("questionStructure");if(s)i=JSON.parse(s);else{const e=await fetch("/public/ratingconfig.json");if(!e.ok)return;i=await e.json(),window.sessionStorage.setItem("questionStructure",JSON.stringify(i))}const c=a.getAttribute("data-rating-id");if(!c)return;const l=a.getAttribute("data-event-id");if(!l)return;const d=document.getElementById("sessionData").innerText.trim().split(" "),g=await o(l),m=document.getElementById("timings")?.innerHTML.trim().split(" "),f=document.getElementById("workshopData").innerText.trim().split(";;;").map((e=>e.trim())),y=window.localStorage.getItem(`rating${c}`);let h;h=y?JSON.parse(y):{event:c,submitter:u()};const v=e=>{const t=g.sessions.find((t=>t.id===e));if(!t)return"To Be Announced";const n=t.speakers.map((e=>g.speakers.find((t=>t?.id===e)))).filter((e=>!!e)).map((e=>e?.fullName)).join(" and ");return`${t.title} by ${n}`},b=(e,t,n)=>{h[`s${e}`]||(h[`s${e}`]={}),h[`s${e}`][t]=n,window.localStorage.setItem(`rating${c}`,JSON.stringify(h))},k=["no","none"],S=e=>{const t=h[`s${e}`]||{};return Object.keys(t).filter((n=>{const r=i.structure[e].questions.find((e=>e.id===n));if(!r)return!1;const o=t[n];if("timeslot-selector"===r.type&&"none"===o)return!1;const a=r.needs;if(!a)return!0;const s=t[a];return!s||!k.find((e=>e===s))})).length};a.removeChild(document.getElementById("feedbackLoading")),i.structure.forEach(((e,r)=>{let o,i=!1;if(void 0!==e.workshop){const t=f[e.workshop];"none"!==t&&(i=!0,o=t)}else{if(e.subtitle){const t=p.exec(e.subtitle);if(t){const e=t.groups?.start??"",n=t.groups?.end??"",r=m?.find((t=>t.startsWith(e)))?.substring(e.length),a=m?.find((e=>e.startsWith(n)))?.substring(n?.length);o=`${r} - ${a}`}else o=e.subtitle}i=!0}if(i){const i=t("feedbackButton").querySelector("div");i.setAttribute("data-id",r.toString()),n(i,".feedbackButtonTitle",e.title),n(i,".feedbackButtonProgressBar",`Questions Completed ${S(r)} / ${e.questions.length}`),o&&n(i,".feedbackButtonWorkshop",o),a.insertAdjacentElement("beforeend",i)}})),r(document.querySelectorAll(".feedbackButton"),(e=>{const r=+e.attributes["data-id"].value,o=t("feedbackPopup").firstElementChild,a=i.structure[r];n(o,"div.feedbackTitle",`Feedback for ${a.title}`),a.questions.forEach((e=>{const a=t("questionTemplate").firstElementChild;n(a,"div.questionTitle",e.label);const i=t(`${e.type}QuestionStyleTemplate`).firstElementChild;switch(e.type){case"email":((e,t,n)=>{const r=h[`s${n}`]?.[t.id];r&&(e.value=r),e.onchange=()=>{const{value:r}=e;r&&b(n,t.id,r)}})(i,e,r);break;case"level":case"role":case"influence":((e,t,n)=>{const r=h[`s${n}`]?.[t.id];r&&e.querySelectorAll("option").forEach((e=>{e.value===r&&(e.selected=!0)})),e.onchange=()=>{b(n,t.id,e.value)}})(i,e,r);break;case"text":((e,t,n)=>{const r=h[`s${n}`]?.[t.id];r&&(e.value=r),e.onchange=()=>{const{value:r}=e;r&&b(n,t.id,r)}})(i,e,r);break;case"rate":((e,t,n)=>{const r=e.querySelector('input[type="range"]'),o=h[`s${n}`]?.[t.id];o&&(r.value=o),r.oninput=()=>{const e=r.value;e&&b(n,t.id,e)}})(i,e,r);break;case"yesno":((e,t,n)=>{const r=h[`s${n}`]?.[t.id];r&&(e.querySelector(`input[name="yesno"][value="${r}"]`).checked=!0),e.onchange=()=>{const r=e.querySelector('input[name="yesno"]:checked')?.value;r&&b(n,t.id,r)}})(i,e,r);break;case"years":((e,t,n)=>{const r=h[`s${n}`]?.[t.id];r&&(e.value=r),e.onchange=()=>{const{value:r}=e;if(r){let e;try{e=+r}catch{}e&&e>=0&&e<=60&&b(n,t.id,r)}}})(i,e,r);break;case"timeslot-selector":((e,t,n)=>{const r=5*t.key+1,o=r+5;for(let t=r;t{e.value===a&&(e.selected=!0)})),e.onchange=()=>{b(n,t.id,e.value)}})(i,e,r)}i.attributes["data-rating-field-id"]=e.id,a.insertAdjacentElement("beforeend",i),o.insertAdjacentElement("beforeend",a)}));const s=t("doneButton").firstElementChild;return s.onclick=()=>{document.querySelector("div.popupClose").dispatchEvent(new Event("click"))},o.insertAdjacentElement("beforeend",s),o}),void 0,void 0,(()=>{document.querySelectorAll("div.feedbackButton").forEach((e=>{const t=+e.attributes["data-id"].value;n(e,".feedbackButtonProgressBar",`Questions Completed ${S(t)} / ${i.structure[t].questions.length}`)}))}),(e=>{e.querySelectorAll('input[type="range"]').forEach((e=>{e.dispatchEvent(new Event("input"))}))}),"feedbackPopupContent"),(()=>{const t=document.getElementById("saveDataButton");t.onclick=n=>{t.innerText="Saving...",t.disabled=!0,n.preventDefault(),grecaptcha.ready((async()=>{const n=await grecaptcha.execute("6LfkPcUlAAAAAHwYs14fkTiEZYsu5hAAq_bLKp-j",{action:"submit"});h.captcha=n,(await fetch(e,{method:"POST",body:JSON.stringify(h)})).ok?(t.disabled=!1,t.innerText="Save Complete",setTimeout((()=>{t.innerText="Save"}),2e3)):(t.innerText="Save",t.disabled=!1,alert("Oh no! Something has gone horribly wrong. Please reload your browser and try again."))}))},t.style.display="unset"})()})(),(()=>{const e=document.getElementsByClassName("sponsor-content-detail-wide-body")[0];if(!e)return;let t=0;setInterval((()=>{t+=.25,t>e.scrollWidth&&(t=0),e.scrollTo(t,0)}),10)})(),(()=>{const n=document.getElementById("speakerFeedbackReport");if(!n)return;const r=document.getElementById("speakerKey"),o=(e,t)=>{const n=t||0;if(0===n)return n.toFixed(2);let r="";return e>n&&(r="↑"),e{const a=document.getElementById("getDataButton");a&&(a.onclick=async()=>{const i=r.value;if(i&&32==i.length)try{a.disabled=!0,a.innerText="Loading...";const r=await fetch(`${e}?speaker=${i}`);if(r.ok){const e=await r.json(),a=e.filter((e=>!e.event));((e,r)=>{n.innerHTML="",console.dir(e),0!==e.length?e.forEach((e=>{const a=t("title").firstElementChild;a.innerText=e.event,n.insertAdjacentElement("beforeend",a);const i=t("feedbackTable").firstElementChild,s=e.feedback.reduce(((e,t)=>(e.presSum+=t.ratingPresentation,e.contentSum+=t.ratingContent,e.valueSum+=t.ratingValue,e)),{presSum:0,contentSum:0,valueSum:0}),c=s.presSum/e.feedback.length,l=s.contentSum/e.feedback.length,d=s.valueSum/e.feedback.length;if(i.querySelector("#presAvg").innerText=c.toFixed(2),i.querySelector("#contentAvg").innerText=l.toFixed(2),i.querySelector("#valueAvg").innerText=d.toFixed(2),r.length>0){const t=r[0];i.querySelector("#timeslotPresAvg").innerText=o(c,t[`${e.event}-ratingPresentationtimeslot`]),i.querySelector("#timeslotContentAvg").innerText=o(l,t[`${e.event}-ratingContenttimeslot`]),i.querySelector("#timeslotValueAvg").innerText=o(d,t[`${e.event}-ratingValuetimeslot`]),i.querySelector("#eventPresAvg").innerText=o(c,t[`${e.event}-ratingPresentation`]),i.querySelector("#eventContentAvg").innerText=o(l,t[`${e.event}-ratingContent`]),i.querySelector("#eventValueAvg").innerText=o(d,t[`${e.event}-ratingValue`]),i.querySelector("#globalPresAvg").innerText=o(c,t["global-ratingPresentation"]),i.querySelector("#globalContentAvg").innerText=o(l,t["global-ratingContent"]),i.querySelector("#globalValueAvg").innerText=o(d,t["global-ratingValue"])}else i.querySelectorAll(".additionalAverageInfo").forEach((e=>{e.style.display="none"}));const u=i.querySelector("#feedbackFooter");e.feedback.forEach((e=>{const n=t("feedbackRow").firstElementChild;n.querySelector(".presValue").innerText=e.ratingPresentation.toFixed(0),n.querySelector(".contentValue").innerText=e.ratingContent.toFixed(0),n.querySelector(".valueValue").innerText=e.ratingValue.toFixed(0),n.querySelector(".feedbackValue").innerText=e.feedback||"",u.insertAdjacentElement("beforebegin",n)})),n.insertAdjacentElement("beforeend",i)})):n.innerText="No data yet! Check back later!"})(e.filter((e=>e.event)),a),window.localStorage.setItem("speakerFeedbackKey",i)}else n.innerText=`Invalid speaker key [${r.status}]`}finally{a.disabled=!1,a.innerText="Get Report"}})})(),(()=>{const e=window.localStorage.getItem("speakerFeedbackKey");e&&(r.value=e)})()})()})(); +(()=>{"use strict";const e="https://ratings-2slkxdorza-nw.a.run.app",t=e=>document.getElementById(e)?.cloneNode(!0)?.content,n=(e,t,n)=>{e.querySelector(t).innerText=n},r=(e,t,n,r,o,a,i)=>{const s=()=>{window.currentSpeaker=void 0,document.querySelector("div.popupBackdrop").classList.add("popupBackdropHidden"),document.removeEventListener("keydown",c);const e=document.querySelector('div[data-popup-content="yes"]');e?.parentNode?.removeChild(e),o?.call(void 0)},c=e=>{"Escape"===e.key&&s()},l=document.querySelector("div.popupShare");l&&(l.onclick=async()=>{if(window.currentSpeaker){const e=`${window.location.origin+window.location.pathname}?currentSpeaker=${window.currentSpeaker.id}`,t={title:`DevConf Speaker: ${window.currentSpeaker.name}`,text:`DevConf Speaker: ${window.currentSpeaker.name}`,url:e};null!=navigator.share&&navigator.canShare(t)?await navigator.share(t):(await navigator.clipboard.writeText(e),alert("URL is copied to clipboard"))}}),document.querySelector("div.popupClose").onclick=()=>{s()};const d=document.querySelector("div.popupBackdropHidden");d.addEventListener("click",s),e.forEach((e=>{const o=t(e);o?(n&&e.classList.add(n),e.onclick=()=>{d.classList.remove("popupBackdropHidden"),document.addEventListener("keydown",c);let t="div.popupContent";i&&(t=`div.${i}`);const n=document.querySelector(t),r=e.attributes["data-slot-id"]?.value;r&&n.setAttribute("speaker-id",r),n.querySelectorAll("div.popupBio").forEach((e=>{n.removeChild(e)})),o.setAttribute("data-popup-content","yes"),n.insertAdjacentElement("beforeend",o),a?.call(void 0,n)}):r&&e.classList.add(r)}))},o=async e=>{let t;const n=(e=>{const t=window.sessionStorage.getItem(`event${e}`);if(t)try{return JSON.parse(t)}catch{return void alert("Oh no! Something has gone horribly wrong. Please close and reopen your browser and try again.")}})(e);if(n)return n;if(navigator.onLine)try{const n=await fetch(`https://sessionize.com/api/v2/${e}/view/all`);n.ok&&(t=await n.json(),window.sessionStorage.setItem(`event${e}`,JSON.stringify(t)))}catch{alert("Oh no! Something has gone horribly wrong. Please reload your browser and try again.")}return t},a={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let i;const s=new Uint8Array(16);function c(){if(!i){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");i=crypto.getRandomValues.bind(crypto)}return i(s)}const l=[];for(let e=0;e<256;++e)l.push((e+256).toString(16).slice(1));const d=function(e,t,n){if(a.randomUUID&&!t&&!e)return a.randomUUID();const r=(e=e||{}).random||(e.rng||c)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return(l[e[t+0]]+l[e[t+1]]+l[e[t+2]]+l[e[t+3]]+"-"+l[e[t+4]]+l[e[t+5]]+"-"+l[e[t+6]]+l[e[t+7]]+"-"+l[e[t+8]]+l[e[t+9]]+"-"+l[e[t+10]]+l[e[t+11]]+l[e[t+12]]+l[e[t+13]]+l[e[t+14]]+l[e[t+15]]).toLowerCase()}(r)},u=/\$\$(?.+)\$\$(?.+)\$\$/;"undefined"==typeof fetch&&alert("Oh no 😢 We don't support your web browser. Please upgrade to a newer version!"),(async()=>{const e=document.getElementById("agenda");if(!e)return;const a=e.getAttribute("data-event-id");if(!a)return;let i;const s=e=>i.speakers.filter((t=>e.indexOf(t.id)>=0)),c=["🔹"],l=e=>{const t=s(e);if(1===t.length){const e=t[0];let n="";n=e.categoryItems.indexOf(204593)>=0?"South Africa":e.questionAnswers.find((e=>59078===e.questionId))?.answerValue;let r="";e.categoryItems.indexOf(204689)>=0&&(r="He/Him"),e.categoryItems.indexOf(204687)>=0&&(r="She/Her"),e.categoryItems.indexOf(204688)>=0&&(r="They/Them");const o=c[Math.floor(Math.random()*c.length)];return r?`${r} ${o} ${n}`:n??""}return""},d=e=>{const t=s(e).map((e=>e.fullName));return 1===t.length?t[0]:`${t.filter(((e,n)=>n{const t=s(e).map((e=>e.profilePicture));return 1===t.length?[]:t.slice(1)},p=e=>s(e)[0],g=e=>p(e).profilePicture,m=e=>i.sessions.filter((t=>t.id===e))[0],f=(e,t=!1)=>{const n=document.createElement("img");return n.src=e,n.classList.add("speaker-image"),t&&n.classList.add("hide"),n},y=(e,t,n=!1)=>{const r=document.createElement("div");r.setAttribute("x-imageset",""),r.classList.add("multi-speaker-container");const o=f(e);return o.classList.add("multi-speaker-image"),n&&o.classList.add("largePopupImage"),r.appendChild(o),t.forEach((e=>{const t=f(e,!0);t.classList.add("multi-speaker-image"),n&&t.classList.add("largePopupImage"),r.appendChild(t)})),r};if(i=await o(a),!i)return;document.querySelectorAll(".agenda-session").forEach((e=>{const n=e,r=n.attributes["data-slot-id"].value;if("999999"===r){const e=t("noSessionCardTemplate").querySelector("div");n.insertAdjacentElement("beforeend",e)}else{const e=m(r);if(e)t("sessionCardTemplate").querySelectorAll("div").forEach((t=>{switch(t.className){case"agenda-session-image":{const n=u(e.speakers);if(n.length>0){const r=y(g(e.speakers),n);t.appendChild(r)}else t.appendChild(f(g(e.speakers)));break}case"agenda-session-subtitle":t.innerText=l(e.speakers);break;case"agenda-session-name":t.innerText=d(e.speakers);break;case"agenda-session-title":t.innerText=e.title}n.insertAdjacentElement("beforeend",t)}));else{const e=t("tbaCardTemplate").querySelector("div");n.insertAdjacentElement("beforeend",e)}}})),r(document.querySelectorAll(".agenda-session"),(e=>{const r=e.attributes["data-slot-id"].value;if(!r&&"0"===r)return null;const o=m(r);if(o){const e=p(o.speakers),r=s(o.speakers).flatMap((e=>(e=>{const t=[];return e.links.forEach((e=>{const n=document.createElement("a");n.target="_blank",n.href=e.url;const r=document.createElement("img");switch(r.alt=e.title,e.title){case"Twitter":r.src="/public/images/icons8-twitter-50.png";break;case"LinkedIn":r.src="/public/images/icons8-linkedin-50.png";break;case"Blog":r.src="/public/images/icons8-website-50.png";break;default:r.src="/public/images/icons8-external-link-50.png"}n.appendChild(r),t.push(n)})),t})(e))),a=t("popupBioContent").firstElementChild,i=u(o.speakers);if(i.length>0){const t=a.querySelector("img.largePopupImage");t.classList.add("hide");const n=y(e.profilePicture,i,!0);t.insertAdjacentElement("afterend",n)}else a.querySelector("img.largePopupImage").src=e.profilePicture;n(a,"div.bio-speaker",d(o.speakers)),n(a,"div.bio-subtitle",l(o.speakers));const c=a.querySelector("div.bio-social");r.forEach((e=>{c.appendChild(e)}));const g=(e=>{const t=s(e).map((e=>e.bio));return 1===t.length?t[0]:t.join("
")})(o.speakers);return 0===i.length&&n(a,"div.bio-tagline",e.tagLine),n(a,"div.bio-title",o.title),n(a,"div.bio-talk-description",o.description),n(a,"div.bio-speaker-bio",g),a}return null}),"clickable-session","unclickable-session",void 0,(e=>{const t=e.attributes["speaker-id"].value;if(t){const e=m(t);if(e){const n=p(e.speakers);window.currentSpeaker={name:n.fullName,id:t}}}})),document.querySelectorAll(".agenda-row-style-loading").forEach((e=>{e.style.display="none"})),document.querySelectorAll(".agenda > .hidden-row").forEach((e=>{e.style.display="grid"})),setInterval((()=>{Array.from(document.querySelectorAll("div[x-imageSet]")).forEach((e=>{const t=e.querySelectorAll("img"),n=Array.from(t).findIndex((e=>!e.classList.contains("hide")));(e=>{let t=1;const n=()=>{t<=.1?e.classList.add("hide"):(e.style.opacity=t.toString(),t-=.025*t,requestAnimationFrame(n))};n()})(t[n]);let r=n+1;r>=t.length&&(r=0),(e=>{let t=.1;e.classList.remove("hide");const n=()=>{t>=1||(e.style.opacity=t.toString(),t+=.025*t,requestAnimationFrame(n))};n()})(t[r])}))}),3500);const h=new URLSearchParams(window.location.search).get("currentSpeaker");h&&document.querySelector(`div[data-slot-id="${h}"]`).click()})(),(async()=>{const a=document.getElementById("feedbackStage");if(!a)return;let i;const s=window.sessionStorage.getItem("questionStructure");if(s)i=JSON.parse(s);else{const e=await fetch("/public/ratingconfig.json");if(!e.ok)return;i=await e.json(),window.sessionStorage.setItem("questionStructure",JSON.stringify(i))}const c=a.getAttribute("data-rating-id");if(!c)return;const l=a.getAttribute("data-event-id");if(!l)return;const p=document.getElementById("sessionData").innerText.trim().split(" "),g=await o(l),m=document.getElementById("timings")?.innerHTML.trim().split(" "),f=document.getElementById("workshopData").innerText.trim().split(";;;").map((e=>e.trim())),y=window.localStorage.getItem(`rating${c}`);let h;h=y?JSON.parse(y):{event:c,submitter:d()};const v=e=>{const t=g.sessions.find((t=>t.id===e));if(!t)return"To Be Announced";const n=t.speakers.map((e=>g.speakers.find((t=>t?.id===e)))).filter((e=>!!e)).map((e=>e?.fullName)).join(" and ");return`${t.title} by ${n}`},b=(e,t,n)=>{h[`s${e}`]||(h[`s${e}`]={}),h[`s${e}`][t]=n,window.localStorage.setItem(`rating${c}`,JSON.stringify(h))},k=["no","none"],S=e=>{const t=h[`s${e}`]||{};return Object.keys(t).filter((n=>{const r=i.structure[e].questions.find((e=>e.id===n));if(!r)return!1;const o=t[n];if("timeslot-selector"===r.type&&"none"===o)return!1;const a=r.needs;if(!a)return!0;const s=t[a];return!s||!k.find((e=>e===s))})).length};a.removeChild(document.getElementById("feedbackLoading")),i.structure.forEach(((e,r)=>{let o,i=!1;if(void 0!==e.workshop){const t=f[e.workshop];"none"!==t&&(i=!0,o=t)}else{if(e.subtitle){const t=u.exec(e.subtitle);if(t){const e=t.groups?.start??"",n=t.groups?.end??"",r=m?.find((t=>t.startsWith(e)))?.substring(e.length),a=m?.find((e=>e.startsWith(n)))?.substring(n?.length);o=`${r} - ${a}`}else o=e.subtitle}i=!0}if(i){const i=t("feedbackButton").querySelector("div");i.setAttribute("data-id",r.toString()),n(i,".feedbackButtonTitle",e.title),n(i,".feedbackButtonProgressBar",`Questions Completed ${S(r)} / ${e.questions.length}`),o&&n(i,".feedbackButtonWorkshop",o),a.insertAdjacentElement("beforeend",i)}})),r(document.querySelectorAll(".feedbackButton"),(e=>{const r=+e.attributes["data-id"].value,o=t("feedbackPopup").firstElementChild,a=i.structure[r];n(o,"div.feedbackTitle",`Feedback for ${a.title}`),a.questions.forEach((e=>{const a=t("questionTemplate").firstElementChild;n(a,"div.questionTitle",e.label);const i=t(`${e.type}QuestionStyleTemplate`).firstElementChild;switch(e.type){case"email":((e,t,n)=>{const r=h[`s${n}`]?.[t.id];r&&(e.value=r),e.onchange=()=>{const{value:r}=e;r&&b(n,t.id,r)}})(i,e,r);break;case"level":case"role":case"influence":((e,t,n)=>{const r=h[`s${n}`]?.[t.id];r&&e.querySelectorAll("option").forEach((e=>{e.value===r&&(e.selected=!0)})),e.onchange=()=>{b(n,t.id,e.value)}})(i,e,r);break;case"text":((e,t,n)=>{const r=h[`s${n}`]?.[t.id];r&&(e.value=r),e.onchange=()=>{const{value:r}=e;r&&b(n,t.id,r)}})(i,e,r);break;case"rate":((e,t,n)=>{const r=e.querySelector('input[type="range"]'),o=h[`s${n}`]?.[t.id];o&&(r.value=o),r.oninput=()=>{const e=r.value;e&&b(n,t.id,e)}})(i,e,r);break;case"yesno":((e,t,n)=>{const r=h[`s${n}`]?.[t.id];r&&(e.querySelector(`input[name="yesno"][value="${r}"]`).checked=!0),e.onchange=()=>{const r=e.querySelector('input[name="yesno"]:checked')?.value;r&&b(n,t.id,r)}})(i,e,r);break;case"years":((e,t,n)=>{const r=h[`s${n}`]?.[t.id];r&&(e.value=r),e.onchange=()=>{const{value:r}=e;if(r){let e;try{e=+r}catch{}e&&e>=0&&e<=60&&b(n,t.id,r)}}})(i,e,r);break;case"timeslot-selector":((e,t,n)=>{const r=5*t.key+1,o=r+5;for(let t=r;t{e.value===a&&(e.selected=!0)})),e.onchange=()=>{b(n,t.id,e.value)}})(i,e,r)}i.attributes["data-rating-field-id"]=e.id,a.insertAdjacentElement("beforeend",i),o.insertAdjacentElement("beforeend",a)}));const s=t("doneButton").firstElementChild;return s.onclick=()=>{document.querySelector("div.popupClose").dispatchEvent(new Event("click"))},o.insertAdjacentElement("beforeend",s),o}),void 0,void 0,(()=>{document.querySelectorAll("div.feedbackButton").forEach((e=>{const t=+e.attributes["data-id"].value;n(e,".feedbackButtonProgressBar",`Questions Completed ${S(t)} / ${i.structure[t].questions.length}`)}))}),(e=>{e.querySelectorAll('input[type="range"]').forEach((e=>{e.dispatchEvent(new Event("input"))}))}),"feedbackPopupContent"),(()=>{const t=document.getElementById("saveDataButton");t.onclick=n=>{t.innerText="Saving...",t.disabled=!0,n.preventDefault(),grecaptcha.ready((async()=>{const n=await grecaptcha.execute("6LfkPcUlAAAAAHwYs14fkTiEZYsu5hAAq_bLKp-j",{action:"submit"});h.captcha=n,(await fetch(e,{method:"POST",body:JSON.stringify(h)})).ok?(t.disabled=!1,t.innerText="Save Complete",setTimeout((()=>{t.innerText="Save"}),2e3)):(t.innerText="Save",t.disabled=!1,alert("Oh no! Something has gone horribly wrong. Please reload your browser and try again."))}))},t.style.display="unset"})()})(),(()=>{const e=document.getElementsByClassName("sponsor-content-detail-wide-body")[0];if(!e)return;let t=0;setInterval((()=>{t+=.25,t>e.scrollWidth&&(t=0),e.scrollTo(t,0)}),10)})(),(()=>{const n=document.getElementById("speakerFeedbackReport");if(!n)return;const r=document.getElementById("speakerKey"),o=(e,t)=>{const n=t||0;if(0===n)return n.toFixed(2);let r="";return e>n&&(r="↑"),e{const a=document.getElementById("getDataButton");a&&(a.onclick=async()=>{const i=r.value;if(i&&32==i.length)try{a.disabled=!0,a.innerText="Loading...";const r=await fetch(`${e}?speaker=${i}`);if(r.ok){const e=await r.json(),a=e.filter((e=>!e.event));((e,r)=>{n.innerHTML="",console.dir(e),0!==e.length?e.forEach((e=>{const a=t("title").firstElementChild;a.innerText=e.event,n.insertAdjacentElement("beforeend",a);const i=t("feedbackTable").firstElementChild,s=e.feedback.reduce(((e,t)=>(e.presSum+=t.ratingPresentation,e.contentSum+=t.ratingContent,e.valueSum+=t.ratingValue,e)),{presSum:0,contentSum:0,valueSum:0}),c=s.presSum/e.feedback.length,l=s.contentSum/e.feedback.length,d=s.valueSum/e.feedback.length;if(i.querySelector("#presAvg").innerText=c.toFixed(2),i.querySelector("#contentAvg").innerText=l.toFixed(2),i.querySelector("#valueAvg").innerText=d.toFixed(2),r.length>0){const t=r[0];i.querySelector("#timeslotPresAvg").innerText=o(c,t[`${e.event}-ratingPresentationtimeslot`]),i.querySelector("#timeslotContentAvg").innerText=o(l,t[`${e.event}-ratingContenttimeslot`]),i.querySelector("#timeslotValueAvg").innerText=o(d,t[`${e.event}-ratingValuetimeslot`]),i.querySelector("#eventPresAvg").innerText=o(c,t[`${e.event}-ratingPresentation`]),i.querySelector("#eventContentAvg").innerText=o(l,t[`${e.event}-ratingContent`]),i.querySelector("#eventValueAvg").innerText=o(d,t[`${e.event}-ratingValue`]),i.querySelector("#globalPresAvg").innerText=o(c,t["global-ratingPresentation"]),i.querySelector("#globalContentAvg").innerText=o(l,t["global-ratingContent"]),i.querySelector("#globalValueAvg").innerText=o(d,t["global-ratingValue"])}else i.querySelectorAll(".additionalAverageInfo").forEach((e=>{e.style.display="none"}));const u=i.querySelector("#feedbackFooter");e.feedback.forEach((e=>{const n=t("feedbackRow").firstElementChild;n.querySelector(".presValue").innerText=e.ratingPresentation.toFixed(0),n.querySelector(".contentValue").innerText=e.ratingContent.toFixed(0),n.querySelector(".valueValue").innerText=e.ratingValue.toFixed(0),n.querySelector(".feedbackValue").innerText=e.feedback||"",u.insertAdjacentElement("beforebegin",n)})),n.insertAdjacentElement("beforeend",i)})):n.innerText="No data yet! Check back later!"})(e.filter((e=>e.event)),a),window.localStorage.setItem("speakerFeedbackKey",i)}else n.innerText=`Invalid speaker key [${r.status}]`}finally{a.disabled=!1,a.innerText="Get Report"}})})(),(()=>{const e=window.localStorage.getItem("speakerFeedbackKey");e&&(r.value=e)})()})()})(); //# sourceMappingURL=devconf.js.map \ No newline at end of file diff --git a/scripts/devconf.js.map b/scripts/devconf.js.map index 636eb408..9803bd92 100644 --- a/scripts/devconf.js.map +++ b/scripts/devconf.js.map @@ -1 +1 @@ -{"version":3,"file":"devconf.js","mappings":"mBASO,MAAMA,EAAoB,0CAGpBC,EAAeC,GAAyBC,SAASC,eAAeF,IACvEG,WAAU,IACVC,QAEOC,EAAU,CAACC,EAAiBC,EAAeC,KACnDF,EAAOG,cAAcF,GAA0BG,UAAYF,CAAK,EAGxDG,EAAkB,CAC3BC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,KAEA,MAAMC,EAAa,KACfC,OAAOC,oBAAiBC,EACxBrB,SAASQ,cAAc,qBAAsBc,UAAUC,IAAI,uBAE3DvB,SAASwB,oBAAoB,UAAWC,GACxC,MAAMC,EAAkB1B,SAASQ,cAAc,iCAC/CkB,GAAiBC,YAAYC,YAAYF,GACzCX,GAAgBc,UAAK,EAAK,EAGxBJ,EAAuBK,IACP,WAAdA,EAAMC,KACNb,GACJ,EAGEc,EAAahC,SAASQ,cAAc,kBACtCwB,IACAA,EAAWC,QAAUC,UACjB,GAAIf,OAAOC,eAAgB,CACvB,MAAMe,EAAM,GAAGhB,OAAOiB,SAASC,OAASlB,OAAOiB,SAASE,2BAA2BnB,OAAOC,eAAemB,KAEnGC,EAAY,CACdC,MAAO,oBAAoBtB,OAAOC,eAAesB,OACjDC,KAAM,oBAAoBxB,OAAOC,eAAesB,OAChDP,IAAKA,GAGcd,MAAnBuB,UAAUC,OAAsBD,UAAUE,SAASN,SAC7CI,UAAUC,MAAML,UAEhBI,UAAUG,UAAUC,UAAUb,GACpCc,MAAM,8BAEd,IAIWjD,SAASQ,cAAc,kBAC/ByB,QAAU,KACjBf,GAAY,EAGhB,MAAMgC,EAAWlD,SAASQ,cAAc,2BACxC0C,EAASC,iBAAiB,QAASjC,GAEnCP,EAAqByC,SAASC,IAC1B,MAAMC,EAAe1C,EAAoByC,GACrCC,GACIzC,GACAwC,EAAI/B,UAAUC,IAAIV,GAGtBwC,EAAIpB,QAAU,KACViB,EAAS5B,UAAUiC,OAAO,uBAC1BvD,SAASmD,iBAAiB,UAAW1B,GAErC,IAAI+B,EAAmB,mBACnBvC,IACAuC,EAAmB,OAAOvC,KAE9B,MAAMwC,EAAoBzD,SAASQ,cAAcgD,GAC3CE,EAAaL,EAAIM,WAAW,iBAAiBpD,MAC/CmD,GACAD,EAAkBG,aAAa,aAAcF,GAGjDD,EAAkBI,iBAAiB,gBAAgBT,SAAS7C,IACxDkD,EAAkB7B,YAAYrB,EAAM,IAGxC+C,EAAaM,aAAa,qBAAsB,OAChDH,EAAkBK,sBAAsB,YAAaR,GACrDtC,GAAea,UAAK,EAAM4B,EAAkB,GAG5C3C,GACAuC,EAAI/B,UAAUC,IAAIT,EAE1B,GACF,ECjCOiD,EAAqB7B,MAAO8B,IACrC,IAAIC,EAEJ,MAAMC,EAjBa,CAAC3B,IACpB,MAAM4B,EAAchD,OAAOiD,eAAeC,QAAQ,QAAQ9B,KAC1D,GAAI4B,EACA,IACG,OAAOG,KAAKC,MAAMJ,EACrB,CAAE,MAEE,YADAlB,MAAM,gGAEV,CAGY,EAMKuB,CAAeR,GACpC,GAAIE,EACA,OAAOA,EAGX,GAAItB,UAAU6B,OACV,IACI,MAAMC,QAAiBC,MAAM,iCAAiCX,cAC1DU,EAASE,KACTX,QAAeS,EAASG,OACxB1D,OAAOiD,eAAeU,QAAQ,QAAQd,IAAWM,KAAKS,UAAUd,IAExE,CAAE,MACEhB,MAAM,sFACV,CAGJ,OAAOgB,CAAM,EC/FjB,GACEe,WAFiC,oBAAXC,QAA0BA,OAAOD,YAAcC,OAAOD,WAAWE,KAAKD,SCI9F,IAAIE,EACAC,EAAQ,IAAIC,WAAW,IACZ,SAASC,IAEtB,IAAKH,KAEHA,EAAoC,oBAAXF,QAA0BA,OAAOE,iBAAmBF,OAAOE,gBAAgBD,KAAKD,SAEvG,MAAM,IAAIM,MAAM,4GAGpB,OAAOJ,EAAgBC,EACzB,CCTA,IADA,IAAII,EAAY,GACPC,EAAI,EAAGA,EAAI,MAAOA,EACzBD,EAAUE,MAAMD,EAAI,KAAOE,SAAS,IAAIC,MAAM,ICgBhD,QArBA,SAAYC,EAASC,EAAKC,GACxB,GAAI,EAAOf,aAAec,IAAQD,EAChC,OAAO,EAAOb,aAGhB,IAAIgB,GADJH,EAAUA,GAAW,CAAC,GACHI,SAAWJ,EAAQP,KAAOA,KAO7C,GAJAU,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAGvBF,EAAK,CACPC,EAASA,GAAU,EACnB,IAAK,IAAIN,EAAI,EAAGA,EAAI,KAAMA,EACxBK,EAAIC,EAASN,GAAKO,EAAKP,GAEzB,OAAOK,CACT,CACA,ODZK,SAAyBI,EAAKH,EAAS,GAM5C,OAAQP,EAAUU,EAAIH,EAAS,IAAMP,EAAUU,EAAIH,EAAS,IAAMP,EAAUU,EAAIH,EAAS,IAAMP,EAAUU,EAAIH,EAAS,IAAM,IAAMP,EAAUU,EAAIH,EAAS,IAAMP,EAAUU,EAAIH,EAAS,IAAM,IAAMP,EAAUU,EAAIH,EAAS,IAAMP,EAAUU,EAAIH,EAAS,IAAM,IAAMP,EAAUU,EAAIH,EAAS,IAAMP,EAAUU,EAAIH,EAAS,IAAM,IAAMP,EAAUU,EAAIH,EAAS,KAAOP,EAAUU,EAAIH,EAAS,KAAOP,EAAUU,EAAIH,EAAS,KAAOP,EAAUU,EAAIH,EAAS,KAAOP,EAAUU,EAAIH,EAAS,KAAOP,EAAUU,EAAIH,EAAS,MAAMI,aACvf,CCKSC,CAAgBJ,EACzB,ECnBMK,EAAgB,qCCCD,oBAAV1B,OAEP1B,MAAM,kFCJV,WACI,MAAMqD,EAAoBtG,SAASC,eAAe,UAElD,IAAKqG,EACD,OAGJ,MAAMtC,EAAUsC,EAAkBC,aAAa,iBAE/C,IAAKvC,EACD,OAGJ,IAAIwC,EAEJ,MAYMC,EAAkBC,GACbF,EAAWG,SAASC,QAAQC,GAAyBH,EAAgBI,QAAQD,EAAEtE,KAAO,IAG3FwE,EAAe,CAAC,MAEhBC,EAAmBN,IACrB,MAAMC,EAAWF,EAAeC,GAEhC,GAAwB,IAApBC,EAASM,OAAc,CACvB,MAAMC,EAAUP,EAAS,GACzB,IAAIQ,EAAU,GAEVA,EADAD,EAAQE,cAAcN,QAAQ,SAAW,EAC/B,eAEAI,EAAQG,gBAAgBC,MAAK7B,GAAsB,QAAjBA,EAAE8B,cAAuBC,YAGzE,IAAIC,EAAU,GACVP,EAAQE,cAAcN,QAAQ,SAAW,IACzCW,EAAU,UAGVP,EAAQE,cAAcN,QAAQ,SAAW,IACzCW,EAAU,WAGVP,EAAQE,cAAcN,QAAQ,SAAW,IACzCW,EAAU,aAGd,MAAMC,EAAYX,EAAaY,KAAKC,MAAMD,KAAK1B,SAAWc,EAAaE,SAEvE,OAAIQ,EACO,GAAGA,KAAWC,KAAaP,IAE3BA,GAAW,EAE1B,CAEA,MAAO,EAAE,EAGPU,EAAwBnB,IAC1B,MAAMoB,EAAmBrB,EAAeC,GAAiBqB,KAAKlB,GAAyBA,EAAEmB,WAEzF,OAAgC,IAA5BF,EAAiBb,OACVa,EAAiB,GAGrB,GAAGA,EAAiBlB,QAAO,CAACqB,EAAGC,IAAUA,EAAQJ,EAAiBb,OAAS,IAAGkB,KAAK,WAAWL,EAAiBA,EAAiBb,OAAS,IAAI,EAalJmB,EAAsB1B,IACxB,MAAMoB,EAAmBrB,EAAeC,GAAiBqB,KAAKlB,GAAMA,EAAEwB,iBAEtE,OAAgC,IAA5BP,EAAiBb,OACV,GAGJa,EAAiBlC,MAAM,EAAE,EAG9B0C,EAAiB5B,GAAmCD,EAAeC,GAAiB,GAEpF6B,EAAsB7B,GAA2C4B,EAAc5B,GAAiB2B,eAmChGG,EAAcC,GAAsBjC,EAAWkC,SAAS9B,QAAQ+B,GAAYA,EAAQpG,KAAOkG,IAAW,GAEtGG,EAAsB,CAACC,EAAaC,GAAO,KAC7C,MAAMC,EAAe/I,SAASgJ,cAAc,OAM5C,OALAD,EAAaF,IAAMA,EACnBE,EAAazH,UAAUC,IAAI,iBACvBuH,GACAC,EAAazH,UAAUC,IAAI,QAExBwH,CAAY,EAGjBE,EAA6B,CAACC,EAAsBC,EAAuBC,GAAoB,KACjG,MAAMC,EAAerJ,SAASgJ,cAAc,OAC5CK,EAAazF,aAAa,aAAc,IACxCyF,EAAa/H,UAAUC,IAAI,2BAC3B,MAAM+H,EAAaV,EAAoBM,GAkBvC,OAjBAI,EAAWhI,UAAUC,IAAI,uBACrB6H,GACAE,EAAWhI,UAAUC,IAAI,mBAG7B8H,EAAaE,YAAYD,GAEzBH,EAAY/F,SAASoG,IACjB,MAAMC,EAAYb,EAAoBY,GAAc,GACpDC,EAAUnI,UAAUC,IAAI,uBACpB6H,GACAK,EAAUnI,UAAUC,IAAI,mBAG5B8H,EAAaE,YAAYE,EAAU,IAGhCJ,CAAY,EAqKvB,GADA7C,QAAkBzC,EAAmBC,IAChCwC,EACD,OAtDAxG,SAAS6D,iBAAiB,mBAAmBT,SAASsG,IAClD,MAAMrG,EAAMqG,EACNhG,EAAaL,EAAIM,WAAW,gBAAgBpD,MAClD,GAAmB,WAAfmD,EAAyB,CACzB,MAAMiG,EAAc7J,EAAY,yBAAyBU,cAAc,OACvE6C,EAAIS,sBAAsB,YAAa6F,EAC3C,KAAO,CACH,MAAMC,EAAiBpB,EAAW9E,GAElC,GAAKkG,EAIoB9J,EAAY,uBAAuB+D,iBAAiB,OAC5DT,SAASyG,IAClB,OAAQA,EAAgBC,WACpB,IAAK,uBAAwB,CACzB,MAAMX,EAAcf,EAAmBwB,EAAejD,UACtD,GAAIwC,EAAYlC,OAAS,EAAG,CACxB,MAAMoC,EAAeJ,EAA2BV,EAAmBqB,EAAejD,UAAWwC,GAC7FU,EAAgBN,YAAYF,EAChC,MACIQ,EAAgBN,YAAYX,EAAoBL,EAAmBqB,EAAejD,YAGtF,KACJ,CACA,IAAK,0BACDkD,EAAgBpJ,UAAYuG,EAAgB4C,EAAejD,UAC3D,MAEJ,IAAK,sBACDkD,EAAgBpJ,UAAYoH,EAAqB+B,EAAejD,UAChE,MAEJ,IAAK,uBACDkD,EAAgBpJ,UAAYmJ,EAAenH,MAKnDY,EAAIS,sBAAsB,YAAa+F,EAAgB,QAhC1C,CACjB,MAAMF,EAAc7J,EAAY,mBAAmBU,cAAc,OACjE6C,EAAIS,sBAAsB,YAAa6F,EAC3C,CAgCJ,KAxJJjJ,EAAgBV,SAAS6D,iBAAiB,oBAAqBR,IAC3D,MAAMK,EAAaL,EAAIM,WAAW,gBAAgBpD,MAClD,IAAKmD,GAA6B,MAAfA,EACf,OAAO,KAGX,MAAMkG,EAAiBpB,EAAW9E,GAElC,GAAIkG,EAAgB,CAChB,MAAMG,EAAczB,EAAcsB,EAAejD,UAC3CqD,EAAcvD,EAAemD,EAAejD,UAAUsD,SAASpD,GAjFvD,CAACK,IACvB,MAAMjD,EAAmC,GA6BzC,OA5BAiD,EAAQgD,MAAM9G,SAAS+G,IACnB,MAAMC,EAAOpK,SAASgJ,cAAc,KACpCoB,EAAKC,OAAS,SACdD,EAAKE,KAAOH,EAAKhI,IACjB,MAAMoI,EAAQvK,SAASgJ,cAAc,OAErC,OADAuB,EAAMC,IAAML,EAAK1H,MACT0H,EAAK1H,OACT,IAAK,UACD8H,EAAM1B,IAAM,uCACZ,MAEJ,IAAK,WACD0B,EAAM1B,IAAM,wCACZ,MAEJ,IAAK,OACD0B,EAAM1B,IAAM,uCACZ,MAEJ,QACI0B,EAAM1B,IAAM,6CAIpBuB,EAAKb,YAAYgB,GACjBtG,EAAOyB,KAAK0E,EAAK,IAGdnG,CAAM,EAmDsEwG,CAAkB5D,KAEvF6D,EADc5K,EAAY,mBACD6K,kBACzBxB,EAAcf,EAAmBwB,EAAejD,UACtD,GAAIwC,EAAYlC,OAAS,EAAG,CACxB,MAAM8B,EAAe2B,EAAWlK,cAAc,uBAC9CuI,EAAazH,UAAUC,IAAI,QAC3B,MAAMqJ,EAAoB3B,EAA2Bc,EAAY1B,eAAgBc,GAAa,GAC9FJ,EAAajF,sBAAsB,WAAY8G,EACnD,MAC0BF,EAAWlK,cAAc,uBAClCqI,IAAMkB,EAAY1B,eAGnCjI,EAAQsK,EAAY,kBAAmB7C,EAAqB+B,EAAejD,WAC3EvG,EAAQsK,EAAY,mBAAoB1D,EAAgB4C,EAAejD,WACvE,MAAMkE,EAAyBH,EAAWlK,cAAc,kBACxDwJ,EAAY5G,SAAS+G,IACjBU,EAAsBtB,YAAYY,EAAK,IAG3C,MAAMW,EA9HI,CAACpE,IACnB,MAAMoB,EAAmBrB,EAAeC,GAAiBqB,KAAKlB,GAAMA,EAAEiE,MAEtE,OAAgC,IAA5BhD,EAAiBb,OACVa,EAAiB,GAGrBA,EAAiBK,KAAK,UAAU,EAuHnB4C,CAAcnB,EAAejD,UAQzC,OAP2B,IAAvBwC,EAAYlC,QACZ7G,EAAQsK,EAAY,kBAAmBX,EAAYiB,SAGvD5K,EAAQsK,EAAY,gBAAiBd,EAAenH,OACpDrC,EAAQsK,EAAY,2BAA4Bd,EAAeqB,aAC/D7K,EAAQsK,EAAY,sBAAuBI,GACpCJ,CACX,CACI,OAAO,IACX,GACD,oBAAqB,2BAAuBrJ,GAAYgC,IACvD,MAAM6H,EAAY7H,EAAIM,WAAW,cAAcpD,MAC/C,GAAI2K,EAAW,CACX,MAAMtB,EAAiBpB,EAAW0C,GAClC,GAAItB,EAAgB,CAChB,MAAMG,EAAczB,EAAcsB,EAAejD,UACjDxF,OAAOC,eAAiB,CACpBsB,KAAMqH,EAAY/B,SAClBzF,GAAI2I,EAEZ,CACJ,KArNJlL,SAAS6D,iBAAiB,6BAA6BT,SAASsG,IAChDA,EACRyB,MAAMC,QAAU,MAAM,IAG9BpL,SAAS6D,iBAAiB,yBAAyBT,SAASsG,IAC5CA,EACRyB,MAAMC,QAAU,MAAM,IAmP9BC,aAAY,KACUC,MAAMC,KAAKvL,SAAS6D,iBAAiB,oBAC7CT,SAASoI,IACf,MAAMC,EAAuCD,EAAS3H,iBAAiB,OACjE6H,EAAoBJ,MAAMC,KAAKE,GAAQE,WAAWlG,IAAOA,EAAEnE,UAAUsK,SAAS,UArChF,CAAClC,IACb,IAAImC,EAAU,EACd,MAAMC,EAAW,KACTD,GAAW,GACXnC,EAAQpI,UAAUC,IAAI,SAI1BmI,EAAQyB,MAAMU,QAAUA,EAAQlG,WAChCkG,GAAqB,KAAVA,EACXE,sBAAsBD,GAAS,EAGnCA,GAAU,EAyBFE,CAAQP,EAAOC,IACf,IAAIO,EAAOP,EAAoB,EAC3BO,GAAQR,EAAOxE,SACfgF,EAAO,GAzBR,CAACvC,IACZ,IAAImC,EAAU,GACdnC,EAAQpI,UAAUiC,OAAO,QACzB,MAAM2I,EAAW,KACTL,GAAW,IAIfnC,EAAQyB,MAAMU,QAAUA,EAAQlG,WAChCkG,GAAqB,KAAVA,EACXE,sBAAsBG,GAAS,EAGnCA,GAAU,EAeFC,CAAOV,EAAOQ,GAAM,GACtB,GACH,MA+DP,MAAMG,EAAqB,IAAIC,gBAAgBlL,OAAOiB,SAASkK,QAAQC,IAAI,kBACvEH,GACsBpM,SAASQ,cAAc,qBAAqB4L,OACpDI,OAErB,EDpVD,GDiBA,WACI,MAAMC,EAAQzM,SAASC,eAAe,iBACtC,IAAKwM,EACD,OAGJ,IAAIC,EACJ,MAAMC,EAAkBxL,OAAOiD,eAAeC,QAAQ,qBACtD,GAAIsI,EACAD,EAAYpI,KAAKC,MAAMoI,OACpB,CACH,MAAMC,QAA0BjI,MAAM,6BACtC,IAAKiI,EAAkBhI,GACnB,OAEA8H,QAAkBE,EAAkB/H,OACpC1D,OAAOiD,eAAeU,QAAQ,oBAAqBR,KAAKS,UAAU2H,GAE1E,CAGA,MAAMG,EAAWJ,EAAMlG,aAAa,kBACpC,IAAKsG,EACD,OAGJ,MAAM7I,EAAUyI,EAAMlG,aAAa,iBACnC,IAAKvC,EACD,OAGJ,MAAM8I,EAAmB9M,SAASC,eAAe,eAAgBQ,UAAUsM,OAAOC,MAAM,KAClFxG,QAAkBzC,EAAmBC,GACrCiJ,EAAUjN,SAASC,eAAe,YAAYiN,UAAUH,OAAOC,MAAM,KACrEG,EAAoBnN,SAASC,eAAe,gBAAiBQ,UAAUsM,OAAOC,MAAM,OAAOjF,KAAIlB,GAAKA,EAAEkG,SAEtGK,EAAmBjM,OAAOkM,aAAahJ,QAAQ,SAASwI,KAC9D,IAAIS,EAOAA,EANCF,EAMY9I,KAAKC,MAAM6I,GALX,CACTtL,MAAO+K,EACPU,UAAW,KAMnB,MAAMC,EAAa/E,IACf,MAAME,EAAUnC,EAAWkC,SAASpB,MAAMT,GAAMA,EAAEtE,KAAOkG,IACzD,IAAKE,EACD,MAAO,kBAGX,MAAMhC,EAAWgC,EAAQhC,SACpBoB,KAAKmD,GAAc1E,EAAWG,SAASW,MAAMJ,GAAYA,GAAS3E,KAAO2I,MACzEtE,QAAQM,KAAcA,IACtBa,KAAKb,GAAYA,GAASc,WAC1BG,KAAK,SAEV,MAAO,GAAGQ,EAAQlG,YAAYkE,GAAU,EAGtC8G,EAAW,CAAC/J,EAAoBnB,EAAYhC,KACzC+M,EAAW,IAAI5J,OAChB4J,EAAW,IAAI5J,KAAgB,CAAC,GAGpC4J,EAAW,IAAI5J,KAAcnB,GAAMhC,EAEnCY,OAAOkM,aAAavI,QAAQ,SAAS+H,IAAYvI,KAAKS,UAAUuI,GAAY,EA8I1EI,EAAc,CAAC,KAAM,QAErBC,EAAiBpL,IACnB,MAAMqL,EAAUN,EAAW,IAAI/K,MAAS,CAAC,EACzC,OAAOsL,OAAOC,KAAKF,GAAShH,QAAO7E,IAC/B,MAAMgM,EAAoBrB,EAAUsB,UAAUzL,GAAImK,UAAUpF,MAAK2G,GAAKA,EAAE1L,KAAOR,IAC/E,IAAKgM,EACD,OAAO,EAGX,MAAMG,EAAgBN,EAAQ7L,GAC9B,GAA+B,sBAA3BgM,EAAkBI,MAAkD,SAAlBD,EAClD,OAAO,EAGX,MAAME,EAAQL,EAAkBK,MAChC,IAAKA,EACD,OAAO,EAGX,MAAMC,EAAaT,EAAQQ,GAC3B,OAAKC,IAIGX,EAAYpG,MAAKgH,GAAKA,IAAMD,GAAW,IAChDpH,MAAM,EA8GTwF,EAAM7K,YAAY5B,SAASC,eAAe,oBAC1CyM,EAAUsB,UAAU5K,SAAQ,CAACmL,EAAUrG,KACnC,IACIsG,EADAC,GAAO,EAEX,QAA0BpN,IAAtBkN,EAASG,SAAwB,CACjC,MAAMC,EAAgBxB,EAAkBoB,EAASG,UAC3B,SAAlBC,IACAF,GAAO,EACPD,EAAWG,EAEnB,KAAO,CACH,GAAIJ,EAASK,SAAU,CACnB,MAAMC,EAAiBxI,EAAcyI,KAAKP,EAASK,UACnD,GAAIC,EAAgB,CAChB,MAAME,EAAQF,EAAeG,QAAgB,OAAK,GAC5CC,EAAMJ,EAAeG,QAAc,KAAK,GACxCE,EAAcjC,GAAS3F,MAAK7B,GAAKA,EAAE0J,WAAWJ,MAASK,UAAUL,EAAM9H,QACvEoI,EAAYpC,GAAS3F,MAAK7B,GAAKA,EAAE0J,WAAWF,MAAOG,UAAUH,GAAKhI,QACxEuH,EAAY,GAAGU,OAAiBG,GACpC,MACIb,EAAWD,EAASK,QAE5B,CAEAH,GAAO,CACX,CAEA,GAAIA,EAAM,CACN,MAAMa,EAAiBxP,EAAY,kBAAkBU,cAAc,OACnE8O,EAAe1L,aAAa,UAAWsE,EAAMvC,YAC7CvF,EAAQkP,EAAgB,uBAAwBf,EAAS9L,OACzDrC,EAAQkP,EAAgB,6BAA8B,uBAAuB3B,EAAczF,QAAYqG,EAAS7B,UAAUzF,UACtHuH,GACApO,EAAQkP,EAAgB,0BAA2Bd,GAGvD/B,EAAM3I,sBAAsB,YAAawL,EAC7C,KAxIJ5O,EAAgBV,SAAS6D,iBAAiB,oBAAqBR,IAC3D,MAAMK,GAAcL,EAAIM,WAAW,WAAWpD,MACxC+C,EAAexD,EAAY,iBAAiB6K,kBAC5C4E,EAAU7C,EAAUsB,UAAUtK,GACpCtD,EAAQkD,EAAc,oBAAqB,gBAAgBiM,EAAQ9M,SACnE8M,EAAQ7C,UAAUtJ,SAASmL,IACvB,MAAMiB,EAAsB1P,EAAY,oBAAoB6K,kBAC5DvK,EAAQoP,EAAqB,oBAAqBjB,EAASkB,OAE3D,MAAMC,EAAe5P,EAAY,GAAGyO,EAASJ,6BAA6BxD,kBAE1E,OAAQ4D,EAASJ,MACb,IAAK,QAxGE,EAACuB,EAAgCnB,EAA6B7K,KACjF,MAOMiM,EAAgBrC,EAAW,IAAI5J,OAAgB6K,EAAShM,IAC1DoN,IACAD,EAAanP,MAAQoP,GAGzBD,EAAaE,SAZO,KAChB,MAAM,MAAErP,GAAUmP,EACdnP,GACAkN,EAAS/J,EAAY6K,EAAShM,GAAIhC,EACtC,CAQ+B,EA4FnBsP,CAAeH,EAAkCnB,EAAU7K,GAC3D,MAEJ,IAAK,QACL,IAAK,OACL,IAAK,YAhKK,EAACgM,EAAiCnB,EAA6B7K,KACrF,MAIMiM,EAAgBrC,EAAW,IAAI5J,OAAgB6K,EAAShM,IAC1DoN,GACAD,EAAa7L,iBAAiB,UAAUT,SAAS0M,IACzCA,EAAOvP,QAAUoP,IACjBG,EAAOC,UAAW,EACtB,IAIRL,EAAaE,SAbO,KAChBnC,EAAS/J,EAAY6K,EAAShM,GAAImN,EAAanP,MAAM,CAYtB,EAmJnByP,CAAkBN,EAAmCnB,EAAU7K,GAC/D,MAEJ,IAAK,OAlGC,EAACgM,EAAmCnB,EAA6B7K,KACnF,MAOMiM,EAAgBrC,EAAW,IAAI5J,OAAgB6K,EAAShM,IAC1DoN,IACAD,EAAanP,MAAQoP,GAGzBD,EAAaE,SAZO,KAChB,MAAM,MAAErP,GAAUmP,EACdnP,GACAkN,EAAS/J,EAAY6K,EAAShM,GAAIhC,EACtC,CAQ+B,EAsFnB0P,CAAcP,EAAqCnB,EAAU7K,GAC7D,MAEJ,IAAK,OAvIG,EAACgM,EAA8BnB,EAA6B7K,KAChF,MAAMwM,EAAiBR,EAAalP,cAAc,uBAQ5CmP,EAAgBrC,EAAW,IAAI5J,OAAgB6K,EAAShM,IAC1DoN,IACAO,EAAc3P,MAAQoP,GAG1BO,EAAcC,QAZM,KAChB,MAAM5P,EAAQ2P,EAAc3P,MACxBA,GACAkN,EAAS/J,EAAY6K,EAAShM,GAAIhC,EACtC,CAQ+B,EA0HnB6P,CAAgBV,EAAgCnB,EAAU7K,GAC1D,MAEJ,IAAK,QA3JE,EAACgM,EAA8BnB,EAA6B7K,KAC/E,MAOMiM,EAAgBrC,EAAW,IAAI5J,OAAgB6K,EAAShM,IAC1DoN,IACCD,EAAalP,cAAc,8BAA8BmP,OAAwCU,SAAU,GAGhHX,EAAaE,SAZU,KACnB,MAAMrP,EAASmP,EAAalP,cAAc,gCAAqDD,MAC3FA,GACAkN,EAAS/J,EAAY6K,EAAShM,GAAIhC,EACtC,CAQkC,EA+ItB+P,CAAeZ,EAAgCnB,EAAU7K,GACzD,MAEJ,IAAK,QA9FE,EAACgM,EAAgCnB,EAA6B7K,KACjF,MAcMiM,EAAgBrC,EAAW,IAAI5J,OAAgB6K,EAAShM,IAC1DoN,IACAD,EAAanP,MAAQoP,GAGzBD,EAAaE,SAnBO,KAChB,MAAM,MAAErP,GAAUmP,EAClB,GAAInP,EAAO,CACP,IAAIgQ,EACJ,IACIA,GAAiBhQ,CACrB,CAAE,MAAQ,CAENgQ,GAAiBA,GAAiB,GAAKA,GAAiB,IACxD9C,EAAS/J,EAAY6K,EAAShM,GAAIhC,EAE1C,EAQ+B,EA2EnBiQ,CAAed,EAAkCnB,EAAU7K,GAC3D,MAEJ,IAAK,oBAtNa,EAACgM,EAAiCnB,EAA6B7K,KAC7F,MAAMqL,EA3EC,EA2EOR,EAASxM,IAAgB,EACjCkN,EAAMF,EA5EL,EA8EP,IAAK,IAAI7G,EAAQ6G,EAAO7G,EAAQ+G,EAAK/G,IAAS,CAC1C,MAAMO,EAAYqE,EAAiB5E,GACnC,GAAkB,WAAdO,EACA,SAGJ,MAAMqH,EAAS9P,SAASgJ,cAAc,UAEtC8G,EAAOvP,MAAQkI,EACfqH,EAAOnN,KAAO6K,EAAU/E,GAExBiH,EAAce,OAAOX,EACzB,CAEA,MAIMH,EAAgBrC,EAAW,IAAI5J,OAAgB6K,EAAShM,IAC1DoN,GACAD,EAAa7L,iBAAiB,UAAUT,SAAS0M,IACzCA,EAAOvP,QAAUoP,IACjBG,EAAOC,UAAW,EACtB,IAIRL,EAAaE,SAbU,KACnBnC,EAAS/J,EAAY6K,EAAShM,GAAImN,EAAanP,MAAM,CAYnB,EAwLtBmQ,CAA0BhB,EAAmCnB,EAAU7K,GAK/EgM,EAAa/L,WAAW,wBAA0B4K,EAAShM,GAC3DiN,EAAoB1L,sBAAsB,YAAa4L,GACvDpM,EAAaQ,sBAAsB,YAAa0L,EAAoB,IAGxE,MAAMmB,EAAa7Q,EAAY,cAAc6K,kBAK7C,OAJAgG,EAAW1O,QAAU,KAChBjC,SAASQ,cAAc,kBAAsCoQ,cAAc,IAAIC,MAAM,SAAS,EAEnGvN,EAAaQ,sBAAsB,YAAa6M,GACzCrN,CAAY,QACpBjC,OAAWA,GAAW,KA9DzBrB,SAAS6D,iBAAiB,sBAAsBT,SAAS0N,IACrD,MAAMvO,GAAMuO,EAAOnN,WAAW,WAAWpD,MACzCH,EAAQ0Q,EAAQ,6BAA8B,uBAAuBnD,EAAcpL,QAASmK,EAAUsB,UAAUzL,GAAImK,UAAUzF,SAAS,GA6DtH,IACjB9G,IACAA,EAAQ0D,iBAAiB,uBAAuBT,SAAQqC,IACpDA,EAAEmL,cAAc,IAAIC,MAAM,SAAS,GACrC,GAEN,wBAGc,MACd,MAAME,EAAc/Q,SAASC,eAAe,kBAC5C8Q,EAAW9O,QAAWH,IAClBiP,EAAWtQ,UAAY,YACvBsQ,EAAWC,UAAW,EACtBlP,EAAMmP,iBAENC,WAAWC,OAAMjP,UAEb,MAAMkP,QAAcF,WAAWG,QAAQ,2CAA4C,CAAEC,OAAQ,WAC7FhE,EAAWiE,QAAUH,SACMzM,MAAM9E,EAAmB,CAChD2R,OAAQ,OACRC,KAAMnN,KAAKS,UAAUuI,MAGP1I,IAKdmM,EAAWC,UAAW,EACtBD,EAAWtQ,UAAY,gBACvBiR,YAAW,KACPX,EAAWtQ,UAAY,MAAM,GAC9B,OARHsQ,EAAWtQ,UAAY,OACvBsQ,EAAWC,UAAW,EACtB/N,MAAM,uFAOV,GACF,EAGN8N,EAAW5F,MAAMC,QAAU,OAAO,EA+CtCuG,EACH,ECvZDC,GEXA,MACI,MAAMC,EAAe7R,SAAS8R,uBAAuB,oCAAoC,GACzF,IAAKD,EACD,OAGJ,IAAIE,EAAkB,EAEtB1G,aAAY,KACR0G,GAAmB,IACfA,EAAkBF,EAAaG,cAC/BD,EAAkB,GAGtBF,EAAaI,SAASF,EAAiB,EAAE,GAC1C,GACN,EFJDF,GGGA,MACI,MAAMxH,EAASrK,SAASC,eAAe,yBACvC,IAAKoK,EACD,OAGJ,MAAM6H,EAAqBlS,SAASC,eAAe,cAE7CkS,EAAgB,CAACC,EAAsBC,KACzC,MAAMC,EAAYD,GAAW,EAC7B,GAAiB,IAAbC,EACA,OAAOA,EAASC,QAAQ,GAG5B,IAAIC,EAAS,GASb,OARIJ,EAAeE,IACfE,EAAS,KAGTJ,EAAeE,IACfE,EAAS,KAGN,GAAGF,EAASC,QAAQ,MAAMC,GAAQ,EAmE3B,MACd,MAAM1B,EAAS9Q,SAASC,eAAe,iBAClC6Q,IAILA,EAAO7O,QAAUC,UACb,MAAMH,EAAMmQ,EAAkB3R,MAC9B,GAAKwB,GAAqB,IAAdA,EAAIkF,OAIhB,IACI6J,EAAOE,UAAW,EAClBF,EAAOrQ,UAAY,aACnB,MAAMgS,QAAa9N,MAAM,GAAG9E,aAA6BkC,KACzD,GAAI0Q,EAAK7N,GAAI,CACT,MAAM8N,QAAgBD,EAAK5N,OACrB8N,EAAWD,EAAQ9L,QAAOgM,IAAQA,EAAI9Q,QAlF3C,EAAC2Q,EAAmBE,KACjCtI,EAAO6C,UAAY,GACnB2F,QAAQC,IAAIL,GACQ,IAAhBA,EAAKxL,OAKTwL,EAAKrP,SAAQtB,IACT,MAAMW,EAAQ3C,EAAY,SAAU6K,kBACpClI,EAAMhC,UAAYqB,EAAMA,MACxBuI,EAAOvG,sBAAsB,YAAarB,GAE1C,MAAMsQ,EAAgBjT,EAAY,iBAAkB6K,kBAE9CqI,EAAiBlR,EAAM8P,SAASqB,QAAO,CAACC,EAAKC,KAC/CD,EAAIE,SAAWD,EAAUE,mBACzBH,EAAII,YAAcH,EAAUI,cAC5BL,EAAIM,UAAYL,EAAUM,YACnBP,IACR,CAAEE,QAAS,EAAGE,WAAY,EAAGE,SAAU,IAEpCE,EAAWV,EAAeI,QAAUtR,EAAM8P,SAAS3K,OACnD0M,EAAcX,EAAeM,WAAaxR,EAAM8P,SAAS3K,OACzD2M,EAAYZ,EAAeQ,SAAW1R,EAAM8P,SAAS3K,OAM3D,GAJC8L,EAAcvS,cAAc,YAAqCC,UAAYiT,EAAQnB,QAAQ,GAC7FQ,EAAcvS,cAAc,eAAwCC,UAAYkT,EAAWpB,QAAQ,GACnGQ,EAAcvS,cAAc,aAAsCC,UAAYmT,EAASrB,QAAQ,GAE5FI,EAAS1L,OAAS,EAAG,CACrB,MAAMoL,EAAUM,EAAS,GACxBI,EAAcvS,cAAc,oBAA6CC,UAAY0R,EAAcuB,EAASrB,EAAQ,GAAGvQ,EAAMA,qCAC7HiR,EAAcvS,cAAc,uBAAgDC,UAAY0R,EAAcwB,EAAYtB,EAAQ,GAAGvQ,EAAMA,gCACnIiR,EAAcvS,cAAc,qBAA8CC,UAAY0R,EAAcyB,EAAUvB,EAAQ,GAAGvQ,EAAMA,8BAE/HiR,EAAcvS,cAAc,iBAA0CC,UAAY0R,EAAcuB,EAASrB,EAAQ,GAAGvQ,EAAMA,6BAC1HiR,EAAcvS,cAAc,oBAA6CC,UAAY0R,EAAcwB,EAAYtB,EAAQ,GAAGvQ,EAAMA,wBAChIiR,EAAcvS,cAAc,kBAA2CC,UAAY0R,EAAcyB,EAAUvB,EAAQ,GAAGvQ,EAAMA,sBAE5HiR,EAAcvS,cAAc,kBAA2CC,UAAY0R,EAAcuB,EAASrB,EAAQ,8BAClHU,EAAcvS,cAAc,qBAA8CC,UAAY0R,EAAcwB,EAAYtB,EAAQ,yBACxHU,EAAcvS,cAAc,mBAA4CC,UAAY0R,EAAcyB,EAAUvB,EAAQ,sBACzH,MACIU,EAAclP,iBAAiB,0BAA0BT,SAAQyQ,IAC5DA,EAA6B1I,MAAMC,QAAU,MAAM,IAI5D,MAAM0I,EAAaf,EAAcvS,cAAc,mBAC/CsB,EAAM8P,SAASxO,SAAS2Q,IACpB,MAAMnB,EAAM9S,EAAY,eAAgB6K,kBACvCiI,EAAIpS,cAAc,cAAuCC,UAAYsT,EAAEV,mBAAmBd,QAAQ,GAClGK,EAAIpS,cAAc,iBAA0CC,UAAYsT,EAAER,cAAchB,QAAQ,GAChGK,EAAIpS,cAAc,eAAwCC,UAAYsT,EAAEN,YAAYlB,QAAQ,GAC5FK,EAAIpS,cAAc,kBAA2CC,UAAYsT,EAAEnC,UAAY,GAExFkC,EAAUhQ,sBAAsB,cAAe8O,EAAI,IAGvDvI,EAAOvG,sBAAsB,YAAaiP,EAAc,IAxDxD1I,EAAO5J,UAAY,gCAyDrB,EAsBUuT,CAAStB,EAAQ9L,QAAOgM,GAAOA,EAAI9Q,QAAuB6Q,GAC1DxR,OAAOkM,aAAavI,QAAQ,qBAAsB/C,EACtD,MACIsI,EAAO5J,UAAY,wBAAwBgS,EAAKwB,SAExD,C,QACInD,EAAOE,UAAW,EAClBF,EAAOrQ,UAAY,YACvB,GACH,EAULyT,GAP0B,MACtB,MAAMC,EAAahT,OAAOkM,aAAahJ,QAAQ,sBAC3C8P,IACAjC,EAAkB3R,MAAQ4T,EAC9B,EAIJC,EACH,EHpIDC,E","sources":["webpack://devconf/./src/common.ts","webpack://devconf/./src/sessionize.ts","webpack://devconf/./node_modules/uuid/dist/esm-browser/native.js","webpack://devconf/./node_modules/uuid/dist/esm-browser/rng.js","webpack://devconf/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://devconf/./node_modules/uuid/dist/esm-browser/v4.js","webpack://devconf/./src/feedback.ts","webpack://devconf/./src/devconf.ts","webpack://devconf/./src/event.ts","webpack://devconf/./src/sponsorBlock.ts","webpack://devconf/./src/speakerFeedback.ts"],"sourcesContent":["interface ICurrentSpeaker {\n name: string;\n id: string;\n}\n\ndeclare global {\n var currentSpeaker: ICurrentSpeaker | undefined;\n}\n\nexport const feedbackServerUrl = 'https://ratings-2slkxdorza-nw.a.run.app'\n// export const feedbackServerUrl = 'http://localhost:8080'\n\nexport const getTemplate = (templateId: string) => ((document.getElementById(templateId) as HTMLTemplateElement)\n ?.cloneNode(true) as HTMLTemplateElement)\n ?.content\n\nexport const setText = (parent: Element, query: string, value: string) => {\n (parent.querySelector(query) as HTMLDivElement).innerText = value\n}\n\nexport const addPopupHandler = (\n elementsToAddPopupTo: NodeListOf,\n popupContentBuilder: (div: HTMLDivElement) => Element | null,\n clickableClass?: string,\n unclickableClass?: string,\n onCloseHandler?: () => void,\n onOpenHandler?: (content: Element) => void,\n popupContentKey?: string,\n) => {\n const closePopup = () => {\n window.currentSpeaker = undefined;\n document.querySelector('div.popupBackdrop')!.classList.add('popupBackdropHidden')\n // eslint-disable-next-line no-use-before-define\n document.removeEventListener('keydown', handleCloseKeyPress)\n const contentToRemove = document.querySelector('div[data-popup-content=\"yes\"]')\n contentToRemove?.parentNode?.removeChild(contentToRemove)\n onCloseHandler?.call(this)\n }\n\n const handleCloseKeyPress = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n closePopup()\n }\n }\n\n const popupShare = document.querySelector('div.popupShare') as HTMLDivElement\n if (popupShare) {\n popupShare.onclick = async () => {\n if (window.currentSpeaker) {\n const url = `${window.location.origin + window.location.pathname}?currentSpeaker=${window.currentSpeaker.id}`\n\n const shareData = {\n title: `DevConf Speaker: ${window.currentSpeaker.name}`,\n text: `DevConf Speaker: ${window.currentSpeaker.name}`,\n url: url,\n }\n\n if (navigator.share != undefined && navigator.canShare(shareData)) {\n await navigator.share(shareData)\n } else {\n await navigator.clipboard.writeText(url);\n alert('URL is copied to clipboard')\n }\n }\n }\n }\n\n const popupClose = document.querySelector('div.popupClose')! as HTMLDivElement\n popupClose.onclick = () => {\n closePopup()\n }\n\n const backdrop = document.querySelector('div.popupBackdropHidden')!\n backdrop.addEventListener('click', closePopup)\n\n elementsToAddPopupTo.forEach((div) => {\n const popupContent = popupContentBuilder(div)\n if (popupContent) {\n if (clickableClass) {\n div.classList.add(clickableClass)\n }\n\n div.onclick = () => {\n backdrop.classList.remove('popupBackdropHidden')\n document.addEventListener('keydown', handleCloseKeyPress)\n\n let elementsToSelect = 'div.popupContent'\n if (popupContentKey) {\n elementsToSelect = `div.${popupContentKey}`\n }\n const popupContentStage = document.querySelector(elementsToSelect)!\n const dataSlotId = div.attributes['data-slot-id']?.value\n if (dataSlotId) {\n popupContentStage.setAttribute(\"speaker-id\", dataSlotId)\n }\n\n popupContentStage.querySelectorAll('div.popupBio').forEach((value) => {\n popupContentStage.removeChild(value)\n })\n\n popupContent.setAttribute('data-popup-content', 'yes')\n popupContentStage.insertAdjacentElement('beforeend', popupContent)\n onOpenHandler?.call(this, popupContentStage)\n }\n } else {\n if (unclickableClass) {\n div.classList.add(unclickableClass)\n }\n }\n })\n}","interface SessionizeSession {\n id: string;\n title: string;\n description: string;\n startsAt: Date;\n endsAt: Date;\n isServiceSession: boolean;\n isPlenumSession: boolean;\n speakers: string[];\n categoryItems: number[];\n questionAnswers: any[];\n roomId: number;\n}\n\ninterface SessionizeLink {\n title: string;\n url: string;\n linkType: string;\n}\n\nexport interface SessionizeSpeaker {\n id: string;\n firstName: string;\n lastName: string;\n bio: string;\n tagLine: string;\n profilePicture: string;\n isTopSpeaker: boolean;\n links: SessionizeLink[];\n sessions: number[];\n fullName: string;\n categoryItems: any[];\n questionAnswers: any[];\n}\n\ninterface SessionizeItem {\n id: number;\n name: string;\n sort: number;\n}\n\ninterface SessionizeCategory {\n id: number;\n title: string;\n items: SessionizeItem[];\n sort: number;\n}\n\ninterface SessionizeRoom {\n id: number;\n name: string;\n sort: number;\n}\n\nexport interface SessionizeEvent {\n sessions: SessionizeSession[];\n speakers: SessionizeSpeaker[];\n questions: any[];\n categories: SessionizeCategory[];\n rooms: SessionizeRoom[];\n}\n\nconst loadStoredData = (id: string): SessionizeEvent | undefined => {\n const sessionData = window.sessionStorage.getItem(`event${id}`)\n if (sessionData) {\n try {\n return JSON.parse(sessionData) as SessionizeEvent\n } catch {\n alert('Oh no! Something has gone horribly wrong. Please close and reopen your browser and try again.')\n return undefined\n }\n }\n\n return undefined\n}\n\nexport const loadSessionizeData = async (eventId: string): Promise => {\n let result: SessionizeEvent | undefined\n\n const existingData = loadStoredData(eventId)\n if (existingData) {\n return existingData\n }\n\n if (navigator.onLine) {\n try {\n const response = await fetch(`https://sessionize.com/api/v2/${eventId}/view/all`)\n if (response.ok) {\n result = await response.json() as SessionizeEvent\n window.sessionStorage.setItem(`event${eventId}`, JSON.stringify(result))\n }\n } catch {\n alert('Oh no! Something has gone horribly wrong. Please reload your browser and try again.')\n }\n }\n\n return result\n}\n","var randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n //\n // Note to future-self: No, you can't remove the `toLowerCase()` call.\n // REF: https://github.com/uuidjs/uuid/pull/677#issuecomment-1757351351\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n var uuid = unsafeStringify(arr, offset);\n // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n offset = offset || 0;\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;","import { addPopupHandler, feedbackServerUrl, getTemplate, setText } from './common'\nimport { loadSessionizeData } from './sessionize'\nimport { v4 as uuidv4 } from 'uuid'\n\nconst timeKeyFinder = /\\$\\$(?.+)\\$\\$(?.+)\\$\\$/\n\ninterface QuestionStructure {\n id: string,\n label: string,\n type: 'rate' | 'text' | 'timeslot-selector' | 'yesno' | 'role' | 'level' | 'years' | 'email' | 'influence'\n key: number | undefined,\n needs?: string,\n}\n\ninterface SectionStructure {\n title: string,\n subtitle?: string,\n questions: QuestionStructure[]\n workshop?: number,\n}\n\ninterface QuestionaireStructure {\n structure: SectionStructure[],\n}\n\nconst tracks = 5\n\nexport default async () => {\n const stage = document.getElementById('feedbackStage') as HTMLDivElement\n if (!stage) {\n return\n }\n\n let questions: QuestionaireStructure\n const storedQuestions = window.sessionStorage.getItem('questionStructure')\n if (storedQuestions) {\n questions = JSON.parse(storedQuestions)\n } else {\n const questionsResponse = await fetch('/public/ratingconfig.json')\n if (!questionsResponse.ok) {\n return\n } else {\n questions = await questionsResponse.json()\n window.sessionStorage.setItem('questionStructure', JSON.stringify(questions))\n }\n }\n\n\n const ratingId = stage.getAttribute('data-rating-id');\n if (!ratingId) {\n return\n }\n\n const eventId = stage.getAttribute('data-event-id')\n if (!eventId) {\n return\n }\n\n const sessionStructure = document.getElementById('sessionData')!.innerText.trim().split(' ')\n const eventData = await loadSessionizeData(eventId)\n const timings = document.getElementById(\"timings\")?.innerHTML.trim().split(' ');\n const workshopStructure = document.getElementById('workshopData')!.innerText.trim().split(';;;').map(s => s.trim())\n\n const ratingStoredData = window.localStorage.getItem(`rating${ratingId}`)\n let ratingData: { [x: string]: {}; captcha?: any; event: string; submitter: string }\n if (!ratingStoredData) {\n ratingData = {\n event: ratingId,\n submitter: uuidv4(),\n }\n } else {\n ratingData = JSON.parse(ratingStoredData)\n }\n\n const talkTitle = (sessionId: string): string => {\n const session = eventData!.sessions.find((s) => s.id === sessionId)\n if (!session) {\n return \"To Be Announced\";\n }\n\n const speakers = session.speakers\n .map((speakerId) => eventData!.speakers.find((speaker) => speaker?.id === speakerId))\n .filter((speaker) => !!speaker)\n .map((speaker) => speaker?.fullName)\n .join(' and ');\n\n return `${session.title} by ${speakers}`\n }\n\n const setValue = (dataSlotId: number, id: string, value: string) => {\n if (!ratingData[`s${dataSlotId}`]) {\n ratingData[`s${dataSlotId}`] = {}\n }\n\n ratingData[`s${dataSlotId}`][id] = value\n\n window.localStorage.setItem(`rating${ratingId}`, JSON.stringify(ratingData))\n }\n\n const configureTimeSlotSelector = (inputElement: HTMLSelectElement, question: QuestionStructure, dataSlotId: number) => {\n const start = question.key! * tracks + 1\n const end = start + tracks\n\n for (let index = start; index < end; index++) {\n const sessionId = sessionStructure[index]\n if (sessionId === '999999') {\n continue\n }\n\n const option = document.createElement('option')\n\n option.value = sessionId\n option.text = talkTitle(sessionId)\n\n inputElement!.append(option)\n }\n\n const updateTimeSlot = () => {\n setValue(dataSlotId, question.id, inputElement.value)\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n inputElement.querySelectorAll('option').forEach((option) => {\n if (option.value === existingValue) {\n option.selected = true\n }\n })\n }\n\n inputElement.onchange = updateTimeSlot\n }\n\n const configureSelector = (inputElement: HTMLSelectElement, question: QuestionStructure, dataSlotId: number) => {\n const updateValue = () => {\n setValue(dataSlotId, question.id, inputElement.value)\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n inputElement.querySelectorAll('option').forEach((option) => {\n if (option.value === existingValue) {\n option.selected = true\n }\n })\n }\n\n inputElement.onchange = updateValue\n }\n\n const configureYesNo = (inputElement: HTMLDivElement, question: QuestionStructure, dataSlotId: number) => {\n const updateTimeSlot = () => {\n const value = (inputElement.querySelector('input[name=\"yesno\"]:checked') as HTMLInputElement)?.value\n if (value) {\n setValue(dataSlotId, question.id, value)\n }\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n (inputElement.querySelector(`input[name=\"yesno\"][value=\"${existingValue}\"]`) as HTMLInputElement).checked = true\n }\n\n inputElement.onchange = updateTimeSlot\n }\n\n const configureRating = (inputElement: HTMLDivElement, question: QuestionStructure, dataSlotId: number) => {\n const ratingElement = (inputElement.querySelector('input[type=\"range\"]') as HTMLInputElement)\n const updateValue = () => {\n const value = ratingElement.value\n if (value) {\n setValue(dataSlotId, question.id, value)\n }\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n ratingElement.value = existingValue\n }\n\n ratingElement.oninput = updateValue\n }\n\n const configureInput = (inputElement: HTMLInputElement, question: QuestionStructure, dataSlotId: number) => {\n const updateValue = () => {\n const { value } = inputElement\n if (value) {\n setValue(dataSlotId, question.id, value)\n }\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n inputElement.value = existingValue\n }\n\n inputElement.onchange = updateValue\n }\n\n const configureText = (inputElement: HTMLTextAreaElement, question: QuestionStructure, dataSlotId: number) => {\n const updateValue = () => {\n const { value } = inputElement\n if (value) {\n setValue(dataSlotId, question.id, value)\n }\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n inputElement.value = existingValue\n }\n\n inputElement.onchange = updateValue\n }\n\n const configureYears = (inputElement: HTMLInputElement, question: QuestionStructure, dataSlotId: number) => {\n const updateValue = () => {\n const { value } = inputElement\n if (value) {\n let valueAsNumber: number | undefined = undefined\n try {\n valueAsNumber = +value\n } catch { }\n\n if (valueAsNumber && valueAsNumber >= 0 && valueAsNumber <= 60) {\n setValue(dataSlotId, question.id, value)\n }\n }\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n inputElement.value = existingValue\n }\n\n inputElement.onchange = updateValue\n }\n\n const needsNotMet = ['no', 'none']\n\n const countComplete = (id: number): number => {\n const answers = ratingData[`s${id}`] || {}\n return Object.keys(answers).filter(key => {\n const questionStructure = questions.structure[id].questions.find(q => q.id === key)\n if (!questionStructure) {\n return false\n }\n\n const answeredValue = answers[key]\n if (questionStructure.type === 'timeslot-selector' && answeredValue === 'none') {\n return false\n }\n\n const needs = questionStructure.needs\n if (!needs) {\n return true\n }\n\n const needsValue = answers[needs]\n if (!needsValue) {\n return true\n }\n\n return !needsNotMet.find(n => n === needsValue)\n }).length\n }\n\n const updateCompleted = () => {\n document.querySelectorAll('div.feedbackButton').forEach((button) => {\n const id = +button.attributes['data-id'].value\n setText(button, '.feedbackButtonProgressBar', `Questions Completed ${countComplete(id)} / ${questions.structure[id].questions.length}`)\n })\n }\n\n const addPopups = () => {\n addPopupHandler(document.querySelectorAll('.feedbackButton'), (div) => {\n const dataSlotId = +div.attributes['data-id'].value\n const popupContent = getTemplate('feedbackPopup').firstElementChild!\n const section = questions.structure[dataSlotId]\n setText(popupContent, 'div.feedbackTitle', `Feedback for ${section.title}`)\n section.questions.forEach((question) => {\n const questionBaseElement = getTemplate('questionTemplate').firstElementChild!\n setText(questionBaseElement, 'div.questionTitle', question.label)\n\n const inputElement = getTemplate(`${question.type}QuestionStyleTemplate`).firstElementChild!\n\n switch (question.type) {\n case 'email': {\n configureInput(inputElement as HTMLInputElement, question, dataSlotId)\n break\n }\n case 'level':\n case 'role':\n case 'influence': {\n configureSelector(inputElement as HTMLSelectElement, question, dataSlotId)\n break\n }\n case 'text': {\n configureText(inputElement as HTMLTextAreaElement, question, dataSlotId)\n break\n }\n case 'rate': {\n configureRating(inputElement as HTMLDivElement, question, dataSlotId)\n break\n }\n case 'yesno': {\n configureYesNo(inputElement as HTMLDivElement, question, dataSlotId)\n break\n }\n case 'years': {\n configureYears(inputElement as HTMLInputElement, question, dataSlotId)\n break\n }\n case 'timeslot-selector': {\n configureTimeSlotSelector(inputElement as HTMLSelectElement, question, dataSlotId)\n break\n }\n }\n\n inputElement.attributes['data-rating-field-id'] = question.id\n questionBaseElement.insertAdjacentElement('beforeend', inputElement)\n popupContent.insertAdjacentElement('beforeend', questionBaseElement)\n })\n\n const doneButton = getTemplate('doneButton').firstElementChild! as HTMLButtonElement\n doneButton.onclick = () => {\n (document.querySelector('div.popupClose')! as HTMLDivElement).dispatchEvent(new Event('click'))\n }\n popupContent.insertAdjacentElement('beforeend', doneButton)\n return popupContent\n }, undefined, undefined, () => {\n updateCompleted()\n }, (content) => {\n content.querySelectorAll('input[type=\"range\"]').forEach(i => {\n i.dispatchEvent(new Event('input'))\n })\n },\n 'feedbackPopupContent')\n }\n\n const addSubmit = () => {\n const saveButton = (document.getElementById('saveDataButton') as HTMLButtonElement)\n saveButton.onclick = (event) => {\n saveButton.innerText = 'Saving...';\n saveButton.disabled = true\n event.preventDefault()\n // eslint-disable-next-line no-undef\n grecaptcha.ready(async () => {\n // eslint-disable-next-line no-undef\n const token = await grecaptcha.execute('6LfkPcUlAAAAAHwYs14fkTiEZYsu5hAAq_bLKp-j', { action: 'submit' })\n ratingData.captcha = token\n const uploadResult = await fetch(feedbackServerUrl, {\n method: 'POST',\n body: JSON.stringify(ratingData),\n })\n\n if (!uploadResult.ok) {\n saveButton.innerText = 'Save';\n saveButton.disabled = false\n alert('Oh no! Something has gone horribly wrong. Please reload your browser and try again.')\n } else {\n saveButton.disabled = false\n saveButton.innerText = 'Save Complete';\n setTimeout(() => {\n saveButton.innerText = 'Save';\n }, 2000)\n }\n })\n }\n\n saveButton.style.display = 'unset'\n }\n\n const addButtons = () => {\n stage.removeChild(document.getElementById('feedbackLoading')!)\n questions.structure.forEach((question, index) => {\n let show = false\n let subTitle: string | undefined = undefined\n if (question.workshop !== undefined) {\n const workshopTitle = workshopStructure[question.workshop]\n if (workshopTitle !== 'none') {\n show = true\n subTitle = workshopTitle\n }\n } else {\n if (question.subtitle) {\n const parsedSubtitle = timeKeyFinder.exec(question.subtitle)\n if (parsedSubtitle) {\n const start = parsedSubtitle.groups?.[\"start\"] ?? \"\"\n const end = parsedSubtitle.groups?.[\"end\"] ?? \"\"\n const startTiming = timings?.find(i => i.startsWith(start))?.substring(start.length)\n const endTiming = timings?.find(i => i.startsWith(end))?.substring(end?.length)\n subTitle = `${startTiming} - ${endTiming}`\n } else {\n subTitle = question.subtitle\n }\n }\n\n show = true\n }\n\n if (show) {\n const questionButton = getTemplate('feedbackButton').querySelector('div')!\n questionButton.setAttribute('data-id', index.toString())\n setText(questionButton, '.feedbackButtonTitle', question.title)\n setText(questionButton, '.feedbackButtonProgressBar', `Questions Completed ${countComplete(index)} / ${question.questions.length}`)\n if (subTitle) {\n setText(questionButton, '.feedbackButtonWorkshop', subTitle)\n }\n\n stage.insertAdjacentElement('beforeend', questionButton)\n }\n })\n }\n\n addButtons()\n addPopups()\n addSubmit()\n}\n","import feedback from \"./feedback\"\nimport event from \"./event\"\nimport sponsorBlock from \"./sponsorBlock\"\nimport speakerFeedback from \"./speakerFeedback\"\n\nif (typeof fetch === 'undefined') {\n // eslint-disable-next-line no-alert\n alert(\"Oh no 😢 We don't support your web browser. Please upgrade to a newer version!\")\n}\n\nevent()\nfeedback()\nsponsorBlock()\nspeakerFeedback()","import { addPopupHandler, getTemplate, setText } from './common'\nimport { SessionizeEvent, SessionizeSpeaker, loadSessionizeData } from './sessionize'\n\nexport default async () => {\n const agendaPlaceholder = document.getElementById('agenda')\n\n if (!agendaPlaceholder) {\n return\n }\n\n const eventId = agendaPlaceholder.getAttribute('data-event-id')\n\n if (!eventId) {\n return\n }\n\n let eventData: SessionizeEvent | undefined\n\n const toggleUI = () => {\n document.querySelectorAll('.agenda-row-style-loading').forEach((element) => {\n const div = element as HTMLDivElement\n div.style.display = 'none'\n })\n\n document.querySelectorAll('.agenda > .hidden-row').forEach((element) => {\n const div = element as HTMLDivElement\n div.style.display = 'grid'\n })\n }\n\n const getSpeakerInfo = (sessionSpeakers: Array) => {\n return eventData!.speakers.filter((s: SessionizeSpeaker) => sessionSpeakers.indexOf(s.id) >= 0)\n }\n\n const seperatorSet = [\"🔹\"]\n\n const speakerSubtitle = (sessionSpeakers: Array): string => {\n const speakers = getSpeakerInfo(sessionSpeakers)\n\n if (speakers.length === 1) {\n const speaker = speakers[0]\n let country = ''\n if (speaker.categoryItems.indexOf(204593) >= 0) {\n country = 'South Africa'\n } else {\n country = speaker.questionAnswers.find(i => i.questionId === 59078)?.answerValue\n }\n\n let pronoun = ''\n if (speaker.categoryItems.indexOf(204689) >= 0) {\n pronoun = 'He/Him'\n }\n\n if (speaker.categoryItems.indexOf(204687) >= 0) {\n pronoun = 'She/Her'\n }\n\n if (speaker.categoryItems.indexOf(204688) >= 0) {\n pronoun = 'They/Them'\n }\n\n const seperator = seperatorSet[Math.floor(Math.random() * seperatorSet.length)]\n\n if (pronoun) {\n return `${pronoun} ${seperator} ${country}`\n } else {\n return country ?? \"\"\n }\n }\n\n return \"\"\n }\n\n const multipleSpeakerNames = (sessionSpeakers: Array): string => {\n const remappedSpeakers = getSpeakerInfo(sessionSpeakers).map((s: SessionizeSpeaker) => s.fullName)\n\n if (remappedSpeakers.length === 1) {\n return remappedSpeakers[0]\n }\n\n return `${remappedSpeakers.filter((_, index) => index < remappedSpeakers.length - 1).join(', ')} & ${remappedSpeakers[remappedSpeakers.length - 1]}`\n }\n\n const getSpeakerBio = (sessionSpeakers: Array): string => {\n const remappedSpeakers = getSpeakerInfo(sessionSpeakers).map((s) => s.bio)\n\n if (remappedSpeakers.length === 1) {\n return remappedSpeakers[0]\n }\n\n return remappedSpeakers.join('
')\n }\n\n const otherSpeakerImages = (sessionSpeakers: Array): Array => {\n const remappedSpeakers = getSpeakerInfo(sessionSpeakers).map((s) => s.profilePicture)\n\n if (remappedSpeakers.length === 1) {\n return []\n }\n\n return remappedSpeakers.slice(1)\n }\n\n const singleSpeaker = (sessionSpeakers: Array) => getSpeakerInfo(sessionSpeakers)[0]\n\n const singleSpeakerImage = (sessionSpeakers: Array): string => singleSpeaker(sessionSpeakers).profilePicture\n\n const buildSocialBadges = (speaker: SessionizeSpeaker) => {\n const result: Array = []\n speaker.links.forEach((link) => {\n const aTag = document.createElement('a')\n aTag.target = '_blank'\n aTag.href = link.url\n const image = document.createElement('img')\n image.alt = link.title\n switch (link.title) {\n case 'Twitter': {\n image.src = '/public/images/icons8-twitter-50.png'\n break\n }\n case 'LinkedIn': {\n image.src = '/public/images/icons8-linkedin-50.png'\n break\n }\n case 'Blog': {\n image.src = '/public/images/icons8-website-50.png'\n break\n }\n default: {\n image.src = '/public/images/icons8-external-link-50.png'\n break\n }\n }\n aTag.appendChild(image)\n result.push(aTag)\n })\n\n return result\n }\n\n const getSession = (sessionId: String) => eventData!.sessions.filter((session) => session.id === sessionId)[0]\n\n const speakerImageCreator = (src: string, hide = false): HTMLImageElement => {\n const imageElement = document.createElement('img')\n imageElement.src = src\n imageElement.classList.add('speaker-image')\n if (hide) {\n imageElement.classList.add('hide')\n }\n return imageElement\n }\n\n const buildMuliSpeakerImageBlock = (primaryImage: string, otherImages: string[], isLargePopupImage = false): HTMLDivElement => {\n const imagesHolder = document.createElement('div')\n imagesHolder.setAttribute('x-imageset', '')\n imagesHolder.classList.add('multi-speaker-container')\n const firstImage = speakerImageCreator(primaryImage)\n firstImage.classList.add('multi-speaker-image')\n if (isLargePopupImage) {\n firstImage.classList.add('largePopupImage')\n }\n\n imagesHolder.appendChild(firstImage)\n\n otherImages.forEach((otherSpeaker) => {\n const nextImage = speakerImageCreator(otherSpeaker, true)\n nextImage.classList.add('multi-speaker-image')\n if (isLargePopupImage) {\n nextImage.classList.add('largePopupImage')\n }\n\n imagesHolder.appendChild(nextImage)\n })\n\n return imagesHolder\n }\n\n const addPopups = () => {\n addPopupHandler(document.querySelectorAll('.agenda-session'), (div) => {\n const dataSlotId = div.attributes['data-slot-id'].value\n if (!dataSlotId && dataSlotId === '0') {\n return null\n }\n\n const matchedSession = getSession(dataSlotId)\n\n if (matchedSession) {\n const speakerInfo = singleSpeaker(matchedSession.speakers)\n const socialLinks = getSpeakerInfo(matchedSession.speakers).flatMap((s) => buildSocialBadges(s))\n const contentNode = getTemplate('popupBioContent')\n const bioContent = contentNode.firstElementChild!\n const otherImages = otherSpeakerImages(matchedSession.speakers)\n if (otherImages.length > 0) {\n const imageElement = bioContent.querySelector('img.largePopupImage')!!\n imageElement.classList.add('hide')\n const multiImageElement = buildMuliSpeakerImageBlock(speakerInfo.profilePicture, otherImages, true)\n imageElement.insertAdjacentElement('afterend', multiImageElement)\n } else {\n const imageElement = (bioContent.querySelector('img.largePopupImage')! as HTMLImageElement)\n imageElement.src = speakerInfo.profilePicture\n }\n\n setText(bioContent, 'div.bio-speaker', multipleSpeakerNames(matchedSession.speakers))\n setText(bioContent, 'div.bio-subtitle', speakerSubtitle(matchedSession.speakers))\n const socialLinkPlaceholder = (bioContent.querySelector('div.bio-social')! as HTMLDivElement)\n socialLinks.forEach((link) => {\n socialLinkPlaceholder.appendChild(link)\n })\n\n const bio = getSpeakerBio(matchedSession.speakers)\n if (otherImages.length === 0) {\n setText(bioContent, 'div.bio-tagline', speakerInfo.tagLine)\n }\n\n setText(bioContent, 'div.bio-title', matchedSession.title)\n setText(bioContent, 'div.bio-talk-description', matchedSession.description)\n setText(bioContent, 'div.bio-speaker-bio', bio)\n return bioContent\n } else {\n return null;\n }\n }, 'clickable-session', 'unclickable-session', undefined, (div) => {\n const speakerId = div.attributes[\"speaker-id\"].value\n if (speakerId) {\n const matchedSession = getSession(speakerId)\n if (matchedSession) {\n const speakerInfo = singleSpeaker(matchedSession.speakers)\n window.currentSpeaker = {\n name: speakerInfo.fullName,\n id: speakerId\n }\n }\n }\n })\n }\n\n const fadeOut = (element: HTMLElement) => {\n let opacity = 1 // initial opacity\n const decrease = () => {\n if (opacity <= 0.1) {\n element.classList.add('hide')\n return\n }\n\n element.style.opacity = opacity.toString()\n opacity -= opacity * 0.025\n requestAnimationFrame(decrease)\n }\n\n decrease()\n }\n\n const fadeIn = (element: HTMLElement) => {\n let opacity = 0.1 // initial opacity\n element.classList.remove('hide')\n const increase = () => {\n if (opacity >= 1) {\n return\n }\n\n element.style.opacity = opacity.toString()\n opacity += opacity * 0.025\n requestAnimationFrame(increase)\n }\n\n increase()\n }\n\n const rotateImages = () => {\n setInterval(() => {\n const imageSets = Array.from(document.querySelectorAll('div[x-imageSet]'))\n imageSets.forEach((imageSet) => {\n const images: NodeListOf = imageSet.querySelectorAll('img')\n const currentImageIndex = Array.from(images).findIndex((i) => !i.classList.contains('hide'))\n fadeOut(images[currentImageIndex])\n let next = currentImageIndex + 1\n if (next >= images.length) {\n next = 0\n }\n\n fadeIn(images[next])\n })\n }, 3500)\n }\n\n const parseEventData = () => {\n document.querySelectorAll('.agenda-session').forEach((element) => {\n const div = element as HTMLDivElement\n const dataSlotId = div.attributes['data-slot-id'].value\n if (dataSlotId === '999999') {\n const tbaTemplate = getTemplate('noSessionCardTemplate').querySelector('div')\n div.insertAdjacentElement('beforeend', tbaTemplate!)\n } else {\n const matchedSession = getSession(dataSlotId)\n\n if (!matchedSession) {\n const tbaTemplate = getTemplate('tbaCardTemplate').querySelector('div')\n div.insertAdjacentElement('beforeend', tbaTemplate!)\n } else {\n const templateDivs = getTemplate('sessionCardTemplate').querySelectorAll('div')\n templateDivs.forEach((templateElement) => {\n switch (templateElement.className) {\n case 'agenda-session-image': {\n const otherImages = otherSpeakerImages(matchedSession.speakers)\n if (otherImages.length > 0) {\n const imagesHolder = buildMuliSpeakerImageBlock(singleSpeakerImage(matchedSession.speakers), otherImages)\n templateElement.appendChild(imagesHolder)\n } else {\n templateElement.appendChild(speakerImageCreator(singleSpeakerImage(matchedSession.speakers)))\n }\n\n break\n }\n case 'agenda-session-subtitle': {\n templateElement.innerText = speakerSubtitle(matchedSession.speakers)\n break;\n }\n case 'agenda-session-name': {\n templateElement.innerText = multipleSpeakerNames(matchedSession.speakers)\n break\n }\n case 'agenda-session-title': {\n templateElement.innerText = matchedSession.title\n break\n }\n }\n\n div.insertAdjacentElement('beforeend', templateElement)\n })\n }\n }\n })\n\n addPopups()\n toggleUI()\n rotateImages()\n }\n\n eventData = await loadSessionizeData(eventId)\n if (!eventData) {\n return\n }\n\n parseEventData()\n\n const requestedSpeakerId = new URLSearchParams(window.location.search).get(\"currentSpeaker\")\n if (requestedSpeakerId) {\n const speakerButton = document.querySelector(`div[data-slot-id=\"${requestedSpeakerId}\"]`) as HTMLElement\n speakerButton.click()\n }\n}\n","export default () => {\n const sponsorBlock = document.getElementsByClassName('sponsor-content-detail-wide-body')[0];\n if (!sponsorBlock) {\n return\n }\n\n let sponsorPosition = 0\n\n setInterval(() => {\n sponsorPosition += 0.25\n if (sponsorPosition > sponsorBlock.scrollWidth) {\n sponsorPosition = 0\n }\n \n sponsorBlock.scrollTo(sponsorPosition, 0);\n }, 10)\n}\n","import { feedbackServerUrl, getTemplate } from \"./common\";\n\ninterface EventData {\n event: string;\n feedback: Feedback[];\n}\n\ninterface Feedback {\n feedback?: string;\n ratingPresentation: number;\n ratingContent: number;\n ratingValue: number;\n}\n\n\nexport default () => {\n const target = document.getElementById('speakerFeedbackReport') as HTMLDivElement\n if (!target) {\n return\n }\n\n const speakerKeyElement = (document.getElementById('speakerKey') as HTMLInputElement)!\n\n const comparedValue = (speakerScore: number, average: number | undefined): string => {\n const avgValue = (average || 0)\n if (avgValue === 0) {\n return avgValue.toFixed(2);\n }\n\n let symbol = ''\n if (speakerScore > avgValue) {\n symbol = '↑'\n }\n\n if (speakerScore < avgValue) {\n symbol = '↓'\n }\n\n return `${avgValue.toFixed(2)} ${symbol}`\n }\n\n const showData = (data: EventData[], averages) => {\n target.innerHTML = ''\n console.dir(data)\n if (data.length === 0) {\n target.innerText = 'No data yet! Check back later!'\n return\n }\n\n data.forEach(event => {\n const title = getTemplate('title')!.firstElementChild as HTMLDivElement\n title.innerText = event.event\n target.insertAdjacentElement('beforeend', title)\n\n const feedbackTable = getTemplate('feedbackTable')!.firstElementChild as HTMLTableElement\n\n const feedbackTotals = event.feedback.reduce((acc, nextValue) => {\n acc.presSum += nextValue.ratingPresentation\n acc.contentSum += nextValue.ratingContent\n acc.valueSum += nextValue.ratingValue\n return acc\n }, { presSum: 0, contentSum: 0, valueSum: 0 });\n\n const presAvg = (feedbackTotals.presSum / event.feedback.length);\n const contentAvg = (feedbackTotals.contentSum / event.feedback.length);\n const valueAvg = (feedbackTotals.valueSum / event.feedback.length);\n\n (feedbackTable.querySelector('#presAvg') as HTMLTableCellElement).innerText = presAvg.toFixed(2);\n (feedbackTable.querySelector('#contentAvg') as HTMLTableCellElement).innerText = contentAvg.toFixed(2);\n (feedbackTable.querySelector('#valueAvg') as HTMLTableCellElement).innerText = valueAvg.toFixed(2);\n\n if (averages.length > 0) {\n const average = averages[0];\n (feedbackTable.querySelector('#timeslotPresAvg') as HTMLTableCellElement).innerText = comparedValue(presAvg, average[`${event.event}-ratingPresentationtimeslot`]);\n (feedbackTable.querySelector('#timeslotContentAvg') as HTMLTableCellElement).innerText = comparedValue(contentAvg, average[`${event.event}-ratingContenttimeslot`]);\n (feedbackTable.querySelector('#timeslotValueAvg') as HTMLTableCellElement).innerText = comparedValue(valueAvg, average[`${event.event}-ratingValuetimeslot`]);\n\n (feedbackTable.querySelector('#eventPresAvg') as HTMLTableCellElement).innerText = comparedValue(presAvg, average[`${event.event}-ratingPresentation`]);\n (feedbackTable.querySelector('#eventContentAvg') as HTMLTableCellElement).innerText = comparedValue(contentAvg, average[`${event.event}-ratingContent`]);\n (feedbackTable.querySelector('#eventValueAvg') as HTMLTableCellElement).innerText = comparedValue(valueAvg, average[`${event.event}-ratingValue`]);\n\n (feedbackTable.querySelector('#globalPresAvg') as HTMLTableCellElement).innerText = comparedValue(presAvg, average['global-ratingPresentation']);\n (feedbackTable.querySelector('#globalContentAvg') as HTMLTableCellElement).innerText = comparedValue(contentAvg, average['global-ratingContent']);\n (feedbackTable.querySelector('#globalValueAvg') as HTMLTableCellElement).innerText = comparedValue(valueAvg, average['global-ratingValue']);\n } else {\n feedbackTable.querySelectorAll('.additionalAverageInfo').forEach(item => {\n (item as HTMLTableRowElement).style.display = 'none';\n });\n }\n\n const footerRow = (feedbackTable.querySelector('#feedbackFooter') as HTMLTableRowElement)\n event.feedback.forEach((f) => {\n const row = getTemplate('feedbackRow')!.firstElementChild as HTMLTableRowElement\n (row.querySelector('.presValue') as HTMLTableCellElement).innerText = f.ratingPresentation.toFixed(0);\n (row.querySelector('.contentValue') as HTMLTableCellElement).innerText = f.ratingContent.toFixed(0);\n (row.querySelector('.valueValue') as HTMLTableCellElement).innerText = f.ratingValue.toFixed(0);\n (row.querySelector('.feedbackValue') as HTMLTableCellElement).innerText = f.feedback || ''\n\n footerRow.insertAdjacentElement('beforebegin', row)\n })\n\n target.insertAdjacentElement('beforeend', feedbackTable)\n })\n }\n\n const addButton = () => {\n const button = document.getElementById('getDataButton') as HTMLButtonElement\n if (!button) {\n return\n }\n\n button.onclick = async () => {\n const key = speakerKeyElement.value\n if (!key || key.length != 32) {\n return\n }\n\n try {\n button.disabled = true\n button.innerText = 'Loading...'\n const data = await fetch(`${feedbackServerUrl}?speaker=${key}`)\n if (data.ok) {\n const dataSet = await data.json() as Array;\n const averages = dataSet.filter(row => !row.event)\n showData(dataSet.filter(row => row.event) as EventData[], averages)\n window.localStorage.setItem('speakerFeedbackKey', key)\n } else {\n target.innerText = `Invalid speaker key [${data.status}]`\n }\n } finally {\n button.disabled = false\n button.innerText = 'Get Report'\n }\n }\n }\n\n const preloadSpeakerKey = () => {\n const speakerKey = window.localStorage.getItem('speakerFeedbackKey')\n if (speakerKey) {\n speakerKeyElement.value = speakerKey\n }\n }\n\n addButton()\n preloadSpeakerKey()\n}"],"names":["feedbackServerUrl","getTemplate","templateId","document","getElementById","cloneNode","content","setText","parent","query","value","querySelector","innerText","addPopupHandler","elementsToAddPopupTo","popupContentBuilder","clickableClass","unclickableClass","onCloseHandler","onOpenHandler","popupContentKey","closePopup","window","currentSpeaker","undefined","classList","add","removeEventListener","handleCloseKeyPress","contentToRemove","parentNode","removeChild","call","event","key","popupShare","onclick","async","url","location","origin","pathname","id","shareData","title","name","text","navigator","share","canShare","clipboard","writeText","alert","backdrop","addEventListener","forEach","div","popupContent","remove","elementsToSelect","popupContentStage","dataSlotId","attributes","setAttribute","querySelectorAll","insertAdjacentElement","loadSessionizeData","eventId","result","existingData","sessionData","sessionStorage","getItem","JSON","parse","loadStoredData","onLine","response","fetch","ok","json","setItem","stringify","randomUUID","crypto","bind","getRandomValues","rnds8","Uint8Array","rng","Error","byteToHex","i","push","toString","slice","options","buf","offset","rnds","random","arr","toLowerCase","unsafeStringify","timeKeyFinder","agendaPlaceholder","getAttribute","eventData","getSpeakerInfo","sessionSpeakers","speakers","filter","s","indexOf","seperatorSet","speakerSubtitle","length","speaker","country","categoryItems","questionAnswers","find","questionId","answerValue","pronoun","seperator","Math","floor","multipleSpeakerNames","remappedSpeakers","map","fullName","_","index","join","otherSpeakerImages","profilePicture","singleSpeaker","singleSpeakerImage","getSession","sessionId","sessions","session","speakerImageCreator","src","hide","imageElement","createElement","buildMuliSpeakerImageBlock","primaryImage","otherImages","isLargePopupImage","imagesHolder","firstImage","appendChild","otherSpeaker","nextImage","element","tbaTemplate","matchedSession","templateElement","className","speakerInfo","socialLinks","flatMap","links","link","aTag","target","href","image","alt","buildSocialBadges","bioContent","firstElementChild","multiImageElement","socialLinkPlaceholder","bio","getSpeakerBio","tagLine","description","speakerId","style","display","setInterval","Array","from","imageSet","images","currentImageIndex","findIndex","contains","opacity","decrease","requestAnimationFrame","fadeOut","next","increase","fadeIn","requestedSpeakerId","URLSearchParams","search","get","click","stage","questions","storedQuestions","questionsResponse","ratingId","sessionStructure","trim","split","timings","innerHTML","workshopStructure","ratingStoredData","localStorage","ratingData","submitter","talkTitle","setValue","needsNotMet","countComplete","answers","Object","keys","questionStructure","structure","q","answeredValue","type","needs","needsValue","n","question","subTitle","show","workshop","workshopTitle","subtitle","parsedSubtitle","exec","start","groups","end","startTiming","startsWith","substring","endTiming","questionButton","section","questionBaseElement","label","inputElement","existingValue","onchange","configureInput","option","selected","configureSelector","configureText","ratingElement","oninput","configureRating","checked","configureYesNo","valueAsNumber","configureYears","append","configureTimeSlotSelector","doneButton","dispatchEvent","Event","button","saveButton","disabled","preventDefault","grecaptcha","ready","token","execute","action","captcha","method","body","setTimeout","addSubmit","feedback","sponsorBlock","getElementsByClassName","sponsorPosition","scrollWidth","scrollTo","speakerKeyElement","comparedValue","speakerScore","average","avgValue","toFixed","symbol","data","dataSet","averages","row","console","dir","feedbackTable","feedbackTotals","reduce","acc","nextValue","presSum","ratingPresentation","contentSum","ratingContent","valueSum","ratingValue","presAvg","contentAvg","valueAvg","item","footerRow","f","showData","status","addButton","speakerKey","preloadSpeakerKey","speakerFeedback"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"devconf.js","mappings":"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","sources":["webpack://devconf/./src/common.ts","webpack://devconf/./src/sessionize.ts","webpack://devconf/./node_modules/uuid/dist/esm-browser/native.js","webpack://devconf/./node_modules/uuid/dist/esm-browser/rng.js","webpack://devconf/./node_modules/uuid/dist/esm-browser/stringify.js","webpack://devconf/./node_modules/uuid/dist/esm-browser/v4.js","webpack://devconf/./src/feedback.ts","webpack://devconf/./src/devconf.ts","webpack://devconf/./src/event.ts","webpack://devconf/./src/sponsorBlock.ts","webpack://devconf/./src/speakerFeedback.ts"],"sourcesContent":["interface ICurrentSpeaker {\n name: string;\n id: string;\n}\n\ndeclare global {\n var currentSpeaker: ICurrentSpeaker | undefined;\n}\n\nexport const feedbackServerUrl = 'https://ratings-2slkxdorza-nw.a.run.app'\n// export const feedbackServerUrl = 'http://localhost:8080'\n\nexport const getTemplate = (templateId: string) => ((document.getElementById(templateId) as HTMLTemplateElement)\n ?.cloneNode(true) as HTMLTemplateElement)\n ?.content\n\nexport const setText = (parent: Element, query: string, value: string) => {\n (parent.querySelector(query) as HTMLDivElement).innerText = value\n}\n\nexport const addPopupHandler = (\n elementsToAddPopupTo: NodeListOf,\n popupContentBuilder: (div: HTMLDivElement) => Element | null,\n clickableClass?: string,\n unclickableClass?: string,\n onCloseHandler?: () => void,\n onOpenHandler?: (content: Element) => void,\n popupContentKey?: string,\n) => {\n const closePopup = () => {\n window.currentSpeaker = undefined;\n document.querySelector('div.popupBackdrop')!.classList.add('popupBackdropHidden')\n // eslint-disable-next-line no-use-before-define\n document.removeEventListener('keydown', handleCloseKeyPress)\n const contentToRemove = document.querySelector('div[data-popup-content=\"yes\"]')\n contentToRemove?.parentNode?.removeChild(contentToRemove)\n onCloseHandler?.call(this)\n }\n\n const handleCloseKeyPress = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n closePopup()\n }\n }\n\n const popupShare = document.querySelector('div.popupShare') as HTMLDivElement\n if (popupShare) {\n popupShare.onclick = async () => {\n if (window.currentSpeaker) {\n const url = `${window.location.origin + window.location.pathname}?currentSpeaker=${window.currentSpeaker.id}`\n\n const shareData = {\n title: `DevConf Speaker: ${window.currentSpeaker.name}`,\n text: `DevConf Speaker: ${window.currentSpeaker.name}`,\n url: url,\n }\n\n if (navigator.share != undefined && navigator.canShare(shareData)) {\n await navigator.share(shareData)\n } else {\n await navigator.clipboard.writeText(url);\n alert('URL is copied to clipboard')\n }\n }\n }\n }\n\n const popupClose = document.querySelector('div.popupClose')! as HTMLDivElement\n popupClose.onclick = () => {\n closePopup()\n }\n\n const backdrop = document.querySelector('div.popupBackdropHidden')!\n backdrop.addEventListener('click', closePopup)\n\n elementsToAddPopupTo.forEach((div) => {\n const popupContent = popupContentBuilder(div)\n if (popupContent) {\n if (clickableClass) {\n div.classList.add(clickableClass)\n }\n\n div.onclick = () => {\n backdrop.classList.remove('popupBackdropHidden')\n document.addEventListener('keydown', handleCloseKeyPress)\n\n let elementsToSelect = 'div.popupContent'\n if (popupContentKey) {\n elementsToSelect = `div.${popupContentKey}`\n }\n const popupContentStage = document.querySelector(elementsToSelect)!\n const dataSlotId = div.attributes['data-slot-id']?.value\n if (dataSlotId) {\n popupContentStage.setAttribute(\"speaker-id\", dataSlotId)\n }\n\n popupContentStage.querySelectorAll('div.popupBio').forEach((value) => {\n popupContentStage.removeChild(value)\n })\n\n popupContent.setAttribute('data-popup-content', 'yes')\n popupContentStage.insertAdjacentElement('beforeend', popupContent)\n onOpenHandler?.call(this, popupContentStage)\n }\n } else {\n if (unclickableClass) {\n div.classList.add(unclickableClass)\n }\n }\n })\n}","interface SessionizeSession {\n id: string;\n title: string;\n description: string;\n startsAt: Date;\n endsAt: Date;\n isServiceSession: boolean;\n isPlenumSession: boolean;\n speakers: string[];\n categoryItems: number[];\n questionAnswers: any[];\n roomId: number;\n}\n\ninterface SessionizeLink {\n title: string;\n url: string;\n linkType: string;\n}\n\nexport interface SessionizeSpeaker {\n id: string;\n firstName: string;\n lastName: string;\n bio: string;\n tagLine: string;\n profilePicture: string;\n isTopSpeaker: boolean;\n links: SessionizeLink[];\n sessions: number[];\n fullName: string;\n categoryItems: any[];\n questionAnswers: any[];\n}\n\ninterface SessionizeItem {\n id: number;\n name: string;\n sort: number;\n}\n\ninterface SessionizeCategory {\n id: number;\n title: string;\n items: SessionizeItem[];\n sort: number;\n}\n\ninterface SessionizeRoom {\n id: number;\n name: string;\n sort: number;\n}\n\nexport interface SessionizeEvent {\n sessions: SessionizeSession[];\n speakers: SessionizeSpeaker[];\n questions: any[];\n categories: SessionizeCategory[];\n rooms: SessionizeRoom[];\n}\n\nconst loadStoredData = (id: string): SessionizeEvent | undefined => {\n const sessionData = window.sessionStorage.getItem(`event${id}`)\n if (sessionData) {\n try {\n return JSON.parse(sessionData) as SessionizeEvent\n } catch {\n alert('Oh no! Something has gone horribly wrong. Please close and reopen your browser and try again.')\n return undefined\n }\n }\n\n return undefined\n}\n\nexport const loadSessionizeData = async (eventId: string): Promise => {\n let result: SessionizeEvent | undefined\n\n const existingData = loadStoredData(eventId)\n if (existingData) {\n return existingData\n }\n\n if (navigator.onLine) {\n try {\n const response = await fetch(`https://sessionize.com/api/v2/${eventId}/view/all`)\n if (response.ok) {\n result = await response.json() as SessionizeEvent\n window.sessionStorage.setItem(`event${eventId}`, JSON.stringify(result))\n }\n } catch {\n alert('Oh no! Something has gone horribly wrong. Please reload your browser and try again.')\n }\n }\n\n return result\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmF0aXZlLWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLEdBQ2QsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFdkYsZUFBZSxFQUFFLFVBQVUsRUFBRSxDQUFDIn0=","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm5nLWJyb3dzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcm5nLWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsSUFBSSxlQUEwRCxDQUFDO0FBRS9ELE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxPQUFPLFVBQVUsR0FBRztJQUV6QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDckIsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwwR0FBMEcsQ0FDM0csQ0FBQztRQUNKLENBQUM7UUFFRCxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUMifQ==","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5naWZ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmluZ2lmeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFNckMsTUFBTSxTQUFTLEdBQWEsRUFBRSxDQUFDO0FBRS9CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM3QixTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFlLEVBQUUsTUFBTSxHQUFHLENBQUM7SUFNekQsT0FBTyxDQUNMLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLEdBQUc7UUFDSCxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxQixHQUFHO1FBQ0gsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUIsR0FBRztRQUNILFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFCLEdBQUc7UUFDSCxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzQixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUM1QixDQUFDLFdBQVcsRUFBRSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxHQUFlLEVBQUUsTUFBTSxHQUFHLENBQUM7SUFDNUMsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQU8xQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDcEIsTUFBTSxTQUFTLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsZUFBZSxTQUFTLENBQUMifQ==","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n options = options || {};\n const rnds = options.random || (options.rng || rng)();\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdjQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ2pDLE9BQU8sR0FBRyxNQUFNLFVBQVUsQ0FBQztBQUMzQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJakQsU0FBUyxFQUFFLENBQUMsT0FBeUIsRUFBRSxHQUFnQixFQUFFLE1BQWU7SUFDdEUsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0lBRXhCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFHdEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztJQUNsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBR2xDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDUixNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUVyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDNUIsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCxlQUFlLEVBQUUsQ0FBQyJ9","import { addPopupHandler, feedbackServerUrl, getTemplate, setText } from './common'\nimport { loadSessionizeData } from './sessionize'\nimport { v4 as uuidv4 } from 'uuid'\n\nconst timeKeyFinder = /\\$\\$(?.+)\\$\\$(?.+)\\$\\$/\n\ninterface QuestionStructure {\n id: string,\n label: string,\n type: 'rate' | 'text' | 'timeslot-selector' | 'yesno' | 'role' | 'level' | 'years' | 'email' | 'influence'\n key: number | undefined,\n needs?: string,\n}\n\ninterface SectionStructure {\n title: string,\n subtitle?: string,\n questions: QuestionStructure[]\n workshop?: number,\n}\n\ninterface QuestionaireStructure {\n structure: SectionStructure[],\n}\n\nconst tracks = 5\n\nexport default async () => {\n const stage = document.getElementById('feedbackStage') as HTMLDivElement\n if (!stage) {\n return\n }\n\n let questions: QuestionaireStructure\n const storedQuestions = window.sessionStorage.getItem('questionStructure')\n if (storedQuestions) {\n questions = JSON.parse(storedQuestions)\n } else {\n const questionsResponse = await fetch('/public/ratingconfig.json')\n if (!questionsResponse.ok) {\n return\n } else {\n questions = await questionsResponse.json()\n window.sessionStorage.setItem('questionStructure', JSON.stringify(questions))\n }\n }\n\n\n const ratingId = stage.getAttribute('data-rating-id');\n if (!ratingId) {\n return\n }\n\n const eventId = stage.getAttribute('data-event-id')\n if (!eventId) {\n return\n }\n\n const sessionStructure = document.getElementById('sessionData')!.innerText.trim().split(' ')\n const eventData = await loadSessionizeData(eventId)\n const timings = document.getElementById(\"timings\")?.innerHTML.trim().split(' ');\n const workshopStructure = document.getElementById('workshopData')!.innerText.trim().split(';;;').map(s => s.trim())\n\n const ratingStoredData = window.localStorage.getItem(`rating${ratingId}`)\n let ratingData: { [x: string]: {}; captcha?: any; event: string; submitter: string }\n if (!ratingStoredData) {\n ratingData = {\n event: ratingId,\n submitter: uuidv4(),\n }\n } else {\n ratingData = JSON.parse(ratingStoredData)\n }\n\n const talkTitle = (sessionId: string): string => {\n const session = eventData!.sessions.find((s) => s.id === sessionId)\n if (!session) {\n return \"To Be Announced\";\n }\n\n const speakers = session.speakers\n .map((speakerId) => eventData!.speakers.find((speaker) => speaker?.id === speakerId))\n .filter((speaker) => !!speaker)\n .map((speaker) => speaker?.fullName)\n .join(' and ');\n\n return `${session.title} by ${speakers}`\n }\n\n const setValue = (dataSlotId: number, id: string, value: string) => {\n if (!ratingData[`s${dataSlotId}`]) {\n ratingData[`s${dataSlotId}`] = {}\n }\n\n ratingData[`s${dataSlotId}`][id] = value\n\n window.localStorage.setItem(`rating${ratingId}`, JSON.stringify(ratingData))\n }\n\n const configureTimeSlotSelector = (inputElement: HTMLSelectElement, question: QuestionStructure, dataSlotId: number) => {\n const start = question.key! * tracks + 1\n const end = start + tracks\n\n for (let index = start; index < end; index++) {\n const sessionId = sessionStructure[index]\n if (sessionId === '999999') {\n continue\n }\n\n const option = document.createElement('option')\n\n option.value = sessionId\n option.text = talkTitle(sessionId)\n\n inputElement!.append(option)\n }\n\n const updateTimeSlot = () => {\n setValue(dataSlotId, question.id, inputElement.value)\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n inputElement.querySelectorAll('option').forEach((option) => {\n if (option.value === existingValue) {\n option.selected = true\n }\n })\n }\n\n inputElement.onchange = updateTimeSlot\n }\n\n const configureSelector = (inputElement: HTMLSelectElement, question: QuestionStructure, dataSlotId: number) => {\n const updateValue = () => {\n setValue(dataSlotId, question.id, inputElement.value)\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n inputElement.querySelectorAll('option').forEach((option) => {\n if (option.value === existingValue) {\n option.selected = true\n }\n })\n }\n\n inputElement.onchange = updateValue\n }\n\n const configureYesNo = (inputElement: HTMLDivElement, question: QuestionStructure, dataSlotId: number) => {\n const updateTimeSlot = () => {\n const value = (inputElement.querySelector('input[name=\"yesno\"]:checked') as HTMLInputElement)?.value\n if (value) {\n setValue(dataSlotId, question.id, value)\n }\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n (inputElement.querySelector(`input[name=\"yesno\"][value=\"${existingValue}\"]`) as HTMLInputElement).checked = true\n }\n\n inputElement.onchange = updateTimeSlot\n }\n\n const configureRating = (inputElement: HTMLDivElement, question: QuestionStructure, dataSlotId: number) => {\n const ratingElement = (inputElement.querySelector('input[type=\"range\"]') as HTMLInputElement)\n const updateValue = () => {\n const value = ratingElement.value\n if (value) {\n setValue(dataSlotId, question.id, value)\n }\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n ratingElement.value = existingValue\n }\n\n ratingElement.oninput = updateValue\n }\n\n const configureInput = (inputElement: HTMLInputElement, question: QuestionStructure, dataSlotId: number) => {\n const updateValue = () => {\n const { value } = inputElement\n if (value) {\n setValue(dataSlotId, question.id, value)\n }\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n inputElement.value = existingValue\n }\n\n inputElement.onchange = updateValue\n }\n\n const configureText = (inputElement: HTMLTextAreaElement, question: QuestionStructure, dataSlotId: number) => {\n const updateValue = () => {\n const { value } = inputElement\n if (value) {\n setValue(dataSlotId, question.id, value)\n }\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n inputElement.value = existingValue\n }\n\n inputElement.onchange = updateValue\n }\n\n const configureYears = (inputElement: HTMLInputElement, question: QuestionStructure, dataSlotId: number) => {\n const updateValue = () => {\n const { value } = inputElement\n if (value) {\n let valueAsNumber: number | undefined = undefined\n try {\n valueAsNumber = +value\n } catch { }\n\n if (valueAsNumber && valueAsNumber >= 0 && valueAsNumber <= 60) {\n setValue(dataSlotId, question.id, value)\n }\n }\n }\n\n const existingValue = ratingData[`s${dataSlotId}`]?.[question.id]\n if (existingValue) {\n inputElement.value = existingValue\n }\n\n inputElement.onchange = updateValue\n }\n\n const needsNotMet = ['no', 'none']\n\n const countComplete = (id: number): number => {\n const answers = ratingData[`s${id}`] || {}\n return Object.keys(answers).filter(key => {\n const questionStructure = questions.structure[id].questions.find(q => q.id === key)\n if (!questionStructure) {\n return false\n }\n\n const answeredValue = answers[key]\n if (questionStructure.type === 'timeslot-selector' && answeredValue === 'none') {\n return false\n }\n\n const needs = questionStructure.needs\n if (!needs) {\n return true\n }\n\n const needsValue = answers[needs]\n if (!needsValue) {\n return true\n }\n\n return !needsNotMet.find(n => n === needsValue)\n }).length\n }\n\n const updateCompleted = () => {\n document.querySelectorAll('div.feedbackButton').forEach((button) => {\n const id = +button.attributes['data-id'].value\n setText(button, '.feedbackButtonProgressBar', `Questions Completed ${countComplete(id)} / ${questions.structure[id].questions.length}`)\n })\n }\n\n const addPopups = () => {\n addPopupHandler(document.querySelectorAll('.feedbackButton'), (div) => {\n const dataSlotId = +div.attributes['data-id'].value\n const popupContent = getTemplate('feedbackPopup').firstElementChild!\n const section = questions.structure[dataSlotId]\n setText(popupContent, 'div.feedbackTitle', `Feedback for ${section.title}`)\n section.questions.forEach((question) => {\n const questionBaseElement = getTemplate('questionTemplate').firstElementChild!\n setText(questionBaseElement, 'div.questionTitle', question.label)\n\n const inputElement = getTemplate(`${question.type}QuestionStyleTemplate`).firstElementChild!\n\n switch (question.type) {\n case 'email': {\n configureInput(inputElement as HTMLInputElement, question, dataSlotId)\n break\n }\n case 'level':\n case 'role':\n case 'influence': {\n configureSelector(inputElement as HTMLSelectElement, question, dataSlotId)\n break\n }\n case 'text': {\n configureText(inputElement as HTMLTextAreaElement, question, dataSlotId)\n break\n }\n case 'rate': {\n configureRating(inputElement as HTMLDivElement, question, dataSlotId)\n break\n }\n case 'yesno': {\n configureYesNo(inputElement as HTMLDivElement, question, dataSlotId)\n break\n }\n case 'years': {\n configureYears(inputElement as HTMLInputElement, question, dataSlotId)\n break\n }\n case 'timeslot-selector': {\n configureTimeSlotSelector(inputElement as HTMLSelectElement, question, dataSlotId)\n break\n }\n }\n\n inputElement.attributes['data-rating-field-id'] = question.id\n questionBaseElement.insertAdjacentElement('beforeend', inputElement)\n popupContent.insertAdjacentElement('beforeend', questionBaseElement)\n })\n\n const doneButton = getTemplate('doneButton').firstElementChild! as HTMLButtonElement\n doneButton.onclick = () => {\n (document.querySelector('div.popupClose')! as HTMLDivElement).dispatchEvent(new Event('click'))\n }\n popupContent.insertAdjacentElement('beforeend', doneButton)\n return popupContent\n }, undefined, undefined, () => {\n updateCompleted()\n }, (content) => {\n content.querySelectorAll('input[type=\"range\"]').forEach(i => {\n i.dispatchEvent(new Event('input'))\n })\n },\n 'feedbackPopupContent')\n }\n\n const addSubmit = () => {\n const saveButton = (document.getElementById('saveDataButton') as HTMLButtonElement)\n saveButton.onclick = (event) => {\n saveButton.innerText = 'Saving...';\n saveButton.disabled = true\n event.preventDefault()\n // eslint-disable-next-line no-undef\n grecaptcha.ready(async () => {\n // eslint-disable-next-line no-undef\n const token = await grecaptcha.execute('6LfkPcUlAAAAAHwYs14fkTiEZYsu5hAAq_bLKp-j', { action: 'submit' })\n ratingData.captcha = token\n const uploadResult = await fetch(feedbackServerUrl, {\n method: 'POST',\n body: JSON.stringify(ratingData),\n })\n\n if (!uploadResult.ok) {\n saveButton.innerText = 'Save';\n saveButton.disabled = false\n alert('Oh no! Something has gone horribly wrong. Please reload your browser and try again.')\n } else {\n saveButton.disabled = false\n saveButton.innerText = 'Save Complete';\n setTimeout(() => {\n saveButton.innerText = 'Save';\n }, 2000)\n }\n })\n }\n\n saveButton.style.display = 'unset'\n }\n\n const addButtons = () => {\n stage.removeChild(document.getElementById('feedbackLoading')!)\n questions.structure.forEach((question, index) => {\n let show = false\n let subTitle: string | undefined = undefined\n if (question.workshop !== undefined) {\n const workshopTitle = workshopStructure[question.workshop]\n if (workshopTitle !== 'none') {\n show = true\n subTitle = workshopTitle\n }\n } else {\n if (question.subtitle) {\n const parsedSubtitle = timeKeyFinder.exec(question.subtitle)\n if (parsedSubtitle) {\n const start = parsedSubtitle.groups?.[\"start\"] ?? \"\"\n const end = parsedSubtitle.groups?.[\"end\"] ?? \"\"\n const startTiming = timings?.find(i => i.startsWith(start))?.substring(start.length)\n const endTiming = timings?.find(i => i.startsWith(end))?.substring(end?.length)\n subTitle = `${startTiming} - ${endTiming}`\n } else {\n subTitle = question.subtitle\n }\n }\n\n show = true\n }\n\n if (show) {\n const questionButton = getTemplate('feedbackButton').querySelector('div')!\n questionButton.setAttribute('data-id', index.toString())\n setText(questionButton, '.feedbackButtonTitle', question.title)\n setText(questionButton, '.feedbackButtonProgressBar', `Questions Completed ${countComplete(index)} / ${question.questions.length}`)\n if (subTitle) {\n setText(questionButton, '.feedbackButtonWorkshop', subTitle)\n }\n\n stage.insertAdjacentElement('beforeend', questionButton)\n }\n })\n }\n\n addButtons()\n addPopups()\n addSubmit()\n}\n","import feedback from \"./feedback\"\nimport event from \"./event\"\nimport sponsorBlock from \"./sponsorBlock\"\nimport speakerFeedback from \"./speakerFeedback\"\n\nif (typeof fetch === 'undefined') {\n // eslint-disable-next-line no-alert\n alert(\"Oh no 😢 We don't support your web browser. Please upgrade to a newer version!\")\n}\n\nevent()\nfeedback()\nsponsorBlock()\nspeakerFeedback()","import { addPopupHandler, getTemplate, setText } from './common'\nimport { SessionizeEvent, SessionizeSpeaker, loadSessionizeData } from './sessionize'\n\nexport default async () => {\n const agendaPlaceholder = document.getElementById('agenda')\n\n if (!agendaPlaceholder) {\n return\n }\n\n const eventId = agendaPlaceholder.getAttribute('data-event-id')\n\n if (!eventId) {\n return\n }\n\n let eventData: SessionizeEvent | undefined\n\n const toggleUI = () => {\n document.querySelectorAll('.agenda-row-style-loading').forEach((element) => {\n const div = element as HTMLDivElement\n div.style.display = 'none'\n })\n\n document.querySelectorAll('.agenda > .hidden-row').forEach((element) => {\n const div = element as HTMLDivElement\n div.style.display = 'grid'\n })\n }\n\n const getSpeakerInfo = (sessionSpeakers: Array) => {\n return eventData!.speakers.filter((s: SessionizeSpeaker) => sessionSpeakers.indexOf(s.id) >= 0)\n }\n\n const seperatorSet = [\"🔹\"]\n\n const speakerSubtitle = (sessionSpeakers: Array): string => {\n const speakers = getSpeakerInfo(sessionSpeakers)\n\n if (speakers.length === 1) {\n const speaker = speakers[0]\n let country = ''\n if (speaker.categoryItems.indexOf(204593) >= 0) {\n country = 'South Africa'\n } else {\n country = speaker.questionAnswers.find(i => i.questionId === 59078)?.answerValue\n }\n\n let pronoun = ''\n if (speaker.categoryItems.indexOf(204689) >= 0) {\n pronoun = 'He/Him'\n }\n\n if (speaker.categoryItems.indexOf(204687) >= 0) {\n pronoun = 'She/Her'\n }\n\n if (speaker.categoryItems.indexOf(204688) >= 0) {\n pronoun = 'They/Them'\n }\n\n const seperator = seperatorSet[Math.floor(Math.random() * seperatorSet.length)]\n\n if (pronoun) {\n return `${pronoun} ${seperator} ${country}`\n } else {\n return country ?? \"\"\n }\n }\n\n return \"\"\n }\n\n const multipleSpeakerNames = (sessionSpeakers: Array): string => {\n const remappedSpeakers = getSpeakerInfo(sessionSpeakers).map((s: SessionizeSpeaker) => s.fullName)\n\n if (remappedSpeakers.length === 1) {\n return remappedSpeakers[0]\n }\n\n return `${remappedSpeakers.filter((_, index) => index < remappedSpeakers.length - 1).join(', ')} & ${remappedSpeakers[remappedSpeakers.length - 1]}`\n }\n\n const getSpeakerBio = (sessionSpeakers: Array): string => {\n const remappedSpeakers = getSpeakerInfo(sessionSpeakers).map((s) => s.bio)\n\n if (remappedSpeakers.length === 1) {\n return remappedSpeakers[0]\n }\n\n return remappedSpeakers.join('
')\n }\n\n const otherSpeakerImages = (sessionSpeakers: Array): Array => {\n const remappedSpeakers = getSpeakerInfo(sessionSpeakers).map((s) => s.profilePicture)\n\n if (remappedSpeakers.length === 1) {\n return []\n }\n\n return remappedSpeakers.slice(1)\n }\n\n const singleSpeaker = (sessionSpeakers: Array) => getSpeakerInfo(sessionSpeakers)[0]\n\n const singleSpeakerImage = (sessionSpeakers: Array): string => singleSpeaker(sessionSpeakers).profilePicture\n\n const buildSocialBadges = (speaker: SessionizeSpeaker) => {\n const result: Array = []\n speaker.links.forEach((link) => {\n const aTag = document.createElement('a')\n aTag.target = '_blank'\n aTag.href = link.url\n const image = document.createElement('img')\n image.alt = link.title\n switch (link.title) {\n case 'Twitter': {\n image.src = '/public/images/icons8-twitter-50.png'\n break\n }\n case 'LinkedIn': {\n image.src = '/public/images/icons8-linkedin-50.png'\n break\n }\n case 'Blog': {\n image.src = '/public/images/icons8-website-50.png'\n break\n }\n default: {\n image.src = '/public/images/icons8-external-link-50.png'\n break\n }\n }\n aTag.appendChild(image)\n result.push(aTag)\n })\n\n return result\n }\n\n const getSession = (sessionId: String) => eventData!.sessions.filter((session) => session.id === sessionId)[0]\n\n const speakerImageCreator = (src: string, hide = false): HTMLImageElement => {\n const imageElement = document.createElement('img')\n imageElement.src = src\n imageElement.classList.add('speaker-image')\n if (hide) {\n imageElement.classList.add('hide')\n }\n return imageElement\n }\n\n const buildMuliSpeakerImageBlock = (primaryImage: string, otherImages: string[], isLargePopupImage = false): HTMLDivElement => {\n const imagesHolder = document.createElement('div')\n imagesHolder.setAttribute('x-imageset', '')\n imagesHolder.classList.add('multi-speaker-container')\n const firstImage = speakerImageCreator(primaryImage)\n firstImage.classList.add('multi-speaker-image')\n if (isLargePopupImage) {\n firstImage.classList.add('largePopupImage')\n }\n\n imagesHolder.appendChild(firstImage)\n\n otherImages.forEach((otherSpeaker) => {\n const nextImage = speakerImageCreator(otherSpeaker, true)\n nextImage.classList.add('multi-speaker-image')\n if (isLargePopupImage) {\n nextImage.classList.add('largePopupImage')\n }\n\n imagesHolder.appendChild(nextImage)\n })\n\n return imagesHolder\n }\n\n const addPopups = () => {\n addPopupHandler(document.querySelectorAll('.agenda-session'), (div) => {\n const dataSlotId = div.attributes['data-slot-id'].value\n if (!dataSlotId && dataSlotId === '0') {\n return null\n }\n\n const matchedSession = getSession(dataSlotId)\n\n if (matchedSession) {\n const speakerInfo = singleSpeaker(matchedSession.speakers)\n const socialLinks = getSpeakerInfo(matchedSession.speakers).flatMap((s) => buildSocialBadges(s))\n const contentNode = getTemplate('popupBioContent')\n const bioContent = contentNode.firstElementChild!\n const otherImages = otherSpeakerImages(matchedSession.speakers)\n if (otherImages.length > 0) {\n const imageElement = bioContent.querySelector('img.largePopupImage')!!\n imageElement.classList.add('hide')\n const multiImageElement = buildMuliSpeakerImageBlock(speakerInfo.profilePicture, otherImages, true)\n imageElement.insertAdjacentElement('afterend', multiImageElement)\n } else {\n const imageElement = (bioContent.querySelector('img.largePopupImage')! as HTMLImageElement)\n imageElement.src = speakerInfo.profilePicture\n }\n\n setText(bioContent, 'div.bio-speaker', multipleSpeakerNames(matchedSession.speakers))\n setText(bioContent, 'div.bio-subtitle', speakerSubtitle(matchedSession.speakers))\n const socialLinkPlaceholder = (bioContent.querySelector('div.bio-social')! as HTMLDivElement)\n socialLinks.forEach((link) => {\n socialLinkPlaceholder.appendChild(link)\n })\n\n const bio = getSpeakerBio(matchedSession.speakers)\n if (otherImages.length === 0) {\n setText(bioContent, 'div.bio-tagline', speakerInfo.tagLine)\n }\n\n setText(bioContent, 'div.bio-title', matchedSession.title)\n setText(bioContent, 'div.bio-talk-description', matchedSession.description)\n setText(bioContent, 'div.bio-speaker-bio', bio)\n return bioContent\n } else {\n return null;\n }\n }, 'clickable-session', 'unclickable-session', undefined, (div) => {\n const speakerId = div.attributes[\"speaker-id\"].value\n if (speakerId) {\n const matchedSession = getSession(speakerId)\n if (matchedSession) {\n const speakerInfo = singleSpeaker(matchedSession.speakers)\n window.currentSpeaker = {\n name: speakerInfo.fullName,\n id: speakerId\n }\n }\n }\n })\n }\n\n const fadeOut = (element: HTMLElement) => {\n let opacity = 1 // initial opacity\n const decrease = () => {\n if (opacity <= 0.1) {\n element.classList.add('hide')\n return\n }\n\n element.style.opacity = opacity.toString()\n opacity -= opacity * 0.025\n requestAnimationFrame(decrease)\n }\n\n decrease()\n }\n\n const fadeIn = (element: HTMLElement) => {\n let opacity = 0.1 // initial opacity\n element.classList.remove('hide')\n const increase = () => {\n if (opacity >= 1) {\n return\n }\n\n element.style.opacity = opacity.toString()\n opacity += opacity * 0.025\n requestAnimationFrame(increase)\n }\n\n increase()\n }\n\n const rotateImages = () => {\n setInterval(() => {\n const imageSets = Array.from(document.querySelectorAll('div[x-imageSet]'))\n imageSets.forEach((imageSet) => {\n const images: NodeListOf = imageSet.querySelectorAll('img')\n const currentImageIndex = Array.from(images).findIndex((i) => !i.classList.contains('hide'))\n fadeOut(images[currentImageIndex])\n let next = currentImageIndex + 1\n if (next >= images.length) {\n next = 0\n }\n\n fadeIn(images[next])\n })\n }, 3500)\n }\n\n const parseEventData = () => {\n document.querySelectorAll('.agenda-session').forEach((element) => {\n const div = element as HTMLDivElement\n const dataSlotId = div.attributes['data-slot-id'].value\n if (dataSlotId === '999999') {\n const tbaTemplate = getTemplate('noSessionCardTemplate').querySelector('div')\n div.insertAdjacentElement('beforeend', tbaTemplate!)\n } else {\n const matchedSession = getSession(dataSlotId)\n\n if (!matchedSession) {\n const tbaTemplate = getTemplate('tbaCardTemplate').querySelector('div')\n div.insertAdjacentElement('beforeend', tbaTemplate!)\n } else {\n const templateDivs = getTemplate('sessionCardTemplate').querySelectorAll('div')\n templateDivs.forEach((templateElement) => {\n switch (templateElement.className) {\n case 'agenda-session-image': {\n const otherImages = otherSpeakerImages(matchedSession.speakers)\n if (otherImages.length > 0) {\n const imagesHolder = buildMuliSpeakerImageBlock(singleSpeakerImage(matchedSession.speakers), otherImages)\n templateElement.appendChild(imagesHolder)\n } else {\n templateElement.appendChild(speakerImageCreator(singleSpeakerImage(matchedSession.speakers)))\n }\n\n break\n }\n case 'agenda-session-subtitle': {\n templateElement.innerText = speakerSubtitle(matchedSession.speakers)\n break;\n }\n case 'agenda-session-name': {\n templateElement.innerText = multipleSpeakerNames(matchedSession.speakers)\n break\n }\n case 'agenda-session-title': {\n templateElement.innerText = matchedSession.title\n break\n }\n }\n\n div.insertAdjacentElement('beforeend', templateElement)\n })\n }\n }\n })\n\n addPopups()\n toggleUI()\n rotateImages()\n }\n\n eventData = await loadSessionizeData(eventId)\n if (!eventData) {\n return\n }\n\n parseEventData()\n\n const requestedSpeakerId = new URLSearchParams(window.location.search).get(\"currentSpeaker\")\n if (requestedSpeakerId) {\n const speakerButton = document.querySelector(`div[data-slot-id=\"${requestedSpeakerId}\"]`) as HTMLElement\n speakerButton.click()\n }\n}\n","export default () => {\n const sponsorBlock = document.getElementsByClassName('sponsor-content-detail-wide-body')[0];\n if (!sponsorBlock) {\n return\n }\n\n let sponsorPosition = 0\n\n setInterval(() => {\n sponsorPosition += 0.25\n if (sponsorPosition > sponsorBlock.scrollWidth) {\n sponsorPosition = 0\n }\n \n sponsorBlock.scrollTo(sponsorPosition, 0);\n }, 10)\n}\n","import { feedbackServerUrl, getTemplate } from \"./common\";\n\ninterface EventData {\n event: string;\n feedback: Feedback[];\n}\n\ninterface Feedback {\n feedback?: string;\n ratingPresentation: number;\n ratingContent: number;\n ratingValue: number;\n}\n\n\nexport default () => {\n const target = document.getElementById('speakerFeedbackReport') as HTMLDivElement\n if (!target) {\n return\n }\n\n const speakerKeyElement = (document.getElementById('speakerKey') as HTMLInputElement)!\n\n const comparedValue = (speakerScore: number, average: number | undefined): string => {\n const avgValue = (average || 0)\n if (avgValue === 0) {\n return avgValue.toFixed(2);\n }\n\n let symbol = ''\n if (speakerScore > avgValue) {\n symbol = '↑'\n }\n\n if (speakerScore < avgValue) {\n symbol = '↓'\n }\n\n return `${avgValue.toFixed(2)} ${symbol}`\n }\n\n const showData = (data: EventData[], averages) => {\n target.innerHTML = ''\n console.dir(data)\n if (data.length === 0) {\n target.innerText = 'No data yet! Check back later!'\n return\n }\n\n data.forEach(event => {\n const title = getTemplate('title')!.firstElementChild as HTMLDivElement\n title.innerText = event.event\n target.insertAdjacentElement('beforeend', title)\n\n const feedbackTable = getTemplate('feedbackTable')!.firstElementChild as HTMLTableElement\n\n const feedbackTotals = event.feedback.reduce((acc, nextValue) => {\n acc.presSum += nextValue.ratingPresentation\n acc.contentSum += nextValue.ratingContent\n acc.valueSum += nextValue.ratingValue\n return acc\n }, { presSum: 0, contentSum: 0, valueSum: 0 });\n\n const presAvg = (feedbackTotals.presSum / event.feedback.length);\n const contentAvg = (feedbackTotals.contentSum / event.feedback.length);\n const valueAvg = (feedbackTotals.valueSum / event.feedback.length);\n\n (feedbackTable.querySelector('#presAvg') as HTMLTableCellElement).innerText = presAvg.toFixed(2);\n (feedbackTable.querySelector('#contentAvg') as HTMLTableCellElement).innerText = contentAvg.toFixed(2);\n (feedbackTable.querySelector('#valueAvg') as HTMLTableCellElement).innerText = valueAvg.toFixed(2);\n\n if (averages.length > 0) {\n const average = averages[0];\n (feedbackTable.querySelector('#timeslotPresAvg') as HTMLTableCellElement).innerText = comparedValue(presAvg, average[`${event.event}-ratingPresentationtimeslot`]);\n (feedbackTable.querySelector('#timeslotContentAvg') as HTMLTableCellElement).innerText = comparedValue(contentAvg, average[`${event.event}-ratingContenttimeslot`]);\n (feedbackTable.querySelector('#timeslotValueAvg') as HTMLTableCellElement).innerText = comparedValue(valueAvg, average[`${event.event}-ratingValuetimeslot`]);\n\n (feedbackTable.querySelector('#eventPresAvg') as HTMLTableCellElement).innerText = comparedValue(presAvg, average[`${event.event}-ratingPresentation`]);\n (feedbackTable.querySelector('#eventContentAvg') as HTMLTableCellElement).innerText = comparedValue(contentAvg, average[`${event.event}-ratingContent`]);\n (feedbackTable.querySelector('#eventValueAvg') as HTMLTableCellElement).innerText = comparedValue(valueAvg, average[`${event.event}-ratingValue`]);\n\n (feedbackTable.querySelector('#globalPresAvg') as HTMLTableCellElement).innerText = comparedValue(presAvg, average['global-ratingPresentation']);\n (feedbackTable.querySelector('#globalContentAvg') as HTMLTableCellElement).innerText = comparedValue(contentAvg, average['global-ratingContent']);\n (feedbackTable.querySelector('#globalValueAvg') as HTMLTableCellElement).innerText = comparedValue(valueAvg, average['global-ratingValue']);\n } else {\n feedbackTable.querySelectorAll('.additionalAverageInfo').forEach(item => {\n (item as HTMLTableRowElement).style.display = 'none';\n });\n }\n\n const footerRow = (feedbackTable.querySelector('#feedbackFooter') as HTMLTableRowElement)\n event.feedback.forEach((f) => {\n const row = getTemplate('feedbackRow')!.firstElementChild as HTMLTableRowElement\n (row.querySelector('.presValue') as HTMLTableCellElement).innerText = f.ratingPresentation.toFixed(0);\n (row.querySelector('.contentValue') as HTMLTableCellElement).innerText = f.ratingContent.toFixed(0);\n (row.querySelector('.valueValue') as HTMLTableCellElement).innerText = f.ratingValue.toFixed(0);\n (row.querySelector('.feedbackValue') as HTMLTableCellElement).innerText = f.feedback || ''\n\n footerRow.insertAdjacentElement('beforebegin', row)\n })\n\n target.insertAdjacentElement('beforeend', feedbackTable)\n })\n }\n\n const addButton = () => {\n const button = document.getElementById('getDataButton') as HTMLButtonElement\n if (!button) {\n return\n }\n\n button.onclick = async () => {\n const key = speakerKeyElement.value\n if (!key || key.length != 32) {\n return\n }\n\n try {\n button.disabled = true\n button.innerText = 'Loading...'\n const data = await fetch(`${feedbackServerUrl}?speaker=${key}`)\n if (data.ok) {\n const dataSet = await data.json() as Array;\n const averages = dataSet.filter(row => !row.event)\n showData(dataSet.filter(row => row.event) as EventData[], averages)\n window.localStorage.setItem('speakerFeedbackKey', key)\n } else {\n target.innerText = `Invalid speaker key [${data.status}]`\n }\n } finally {\n button.disabled = false\n button.innerText = 'Get Report'\n }\n }\n }\n\n const preloadSpeakerKey = () => {\n const speakerKey = window.localStorage.getItem('speakerFeedbackKey')\n if (speakerKey) {\n speakerKeyElement.value = speakerKey\n }\n }\n\n addButton()\n preloadSpeakerKey()\n}"],"names":["feedbackServerUrl","getTemplate","templateId","document","getElementById","cloneNode","content","setText","parent","query","value","querySelector","innerText","addPopupHandler","elementsToAddPopupTo","popupContentBuilder","clickableClass","unclickableClass","onCloseHandler","onOpenHandler","popupContentKey","closePopup","window","currentSpeaker","undefined","classList","add","removeEventListener","handleCloseKeyPress","contentToRemove","parentNode","removeChild","call","event","key","popupShare","onclick","async","url","location","origin","pathname","id","shareData","title","name","text","navigator","share","canShare","clipboard","writeText","alert","backdrop","addEventListener","forEach","div","popupContent","remove","elementsToSelect","popupContentStage","dataSlotId","attributes","setAttribute","querySelectorAll","insertAdjacentElement","loadSessionizeData","eventId","result","existingData","sessionData","sessionStorage","getItem","JSON","parse","loadStoredData","onLine","response","fetch","ok","json","setItem","stringify","randomUUID","crypto","bind","getRandomValues","rnds8","Uint8Array","rng","Error","byteToHex","i","push","toString","slice","options","buf","offset","rnds","random","arr","toLowerCase","unsafeStringify","timeKeyFinder","agendaPlaceholder","getAttribute","eventData","getSpeakerInfo","sessionSpeakers","speakers","filter","s","indexOf","seperatorSet","speakerSubtitle","length","speaker","country","categoryItems","questionAnswers","find","questionId","answerValue","pronoun","seperator","Math","floor","multipleSpeakerNames","remappedSpeakers","map","fullName","_","index","join","otherSpeakerImages","profilePicture","singleSpeaker","singleSpeakerImage","getSession","sessionId","sessions","session","speakerImageCreator","src","hide","imageElement","createElement","buildMuliSpeakerImageBlock","primaryImage","otherImages","isLargePopupImage","imagesHolder","firstImage","appendChild","otherSpeaker","nextImage","element","tbaTemplate","matchedSession","templateElement","className","speakerInfo","socialLinks","flatMap","links","link","aTag","target","href","image","alt","buildSocialBadges","bioContent","firstElementChild","multiImageElement","socialLinkPlaceholder","bio","getSpeakerBio","tagLine","description","speakerId","style","display","setInterval","Array","from","imageSet","images","currentImageIndex","findIndex","contains","opacity","decrease","requestAnimationFrame","fadeOut","next","increase","fadeIn","requestedSpeakerId","URLSearchParams","search","get","click","stage","questions","storedQuestions","questionsResponse","ratingId","sessionStructure","trim","split","timings","innerHTML","workshopStructure","ratingStoredData","localStorage","ratingData","submitter","talkTitle","setValue","needsNotMet","countComplete","answers","Object","keys","questionStructure","structure","q","answeredValue","type","needs","needsValue","n","question","subTitle","show","workshop","workshopTitle","subtitle","parsedSubtitle","exec","start","groups","end","startTiming","startsWith","substring","endTiming","questionButton","section","questionBaseElement","label","inputElement","existingValue","onchange","configureInput","option","selected","configureSelector","configureText","ratingElement","oninput","configureRating","checked","configureYesNo","valueAsNumber","configureYears","append","configureTimeSlotSelector","doneButton","dispatchEvent","Event","button","saveButton","disabled","preventDefault","grecaptcha","ready","token","execute","action","captcha","method","body","setTimeout","addSubmit","feedback","sponsorBlock","getElementsByClassName","sponsorPosition","scrollWidth","scrollTo","speakerKeyElement","comparedValue","speakerScore","average","avgValue","toFixed","symbol","data","dataSet","averages","row","console","dir","feedbackTable","feedbackTotals","reduce","acc","nextValue","presSum","ratingPresentation","contentSum","ratingContent","valueSum","ratingValue","presAvg","contentAvg","valueAvg","item","footerRow","f","showData","status","addButton","speakerKey","preloadSpeakerKey","speakerFeedback"],"sourceRoot":""} \ No newline at end of file diff --git a/scss/sponsors.scss b/scss/sponsors.scss index c7f59bf0..a65520a7 100644 --- a/scss/sponsors.scss +++ b/scss/sponsors.scss @@ -204,7 +204,7 @@ grid-row-gap: 5px; text-align: center; line-height: 1.5rem; - grid-template-columns: 1fr 1fr 1fr 1fr; + grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 1fr; column-gap: 30px; align-content: center; diff --git a/tsconfig.json b/tsconfig.json index 404ad352..ae90d323 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,18 +3,17 @@ "_site" ], "compilerOptions": { - "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + "esModuleInterop": true, "lib": [ "dom", - "es2015", - ], /* Specify library files to be included in the compilation. */ - "module": "es6", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ + "ESNext", + ], + "module": "ESNext", "moduleResolution": "node", - "noImplicitAny": false, /* Raise error on expressions and declarations with an implied 'any' type. */ - "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + "noImplicitAny": false, + "rootDir": "./src", "sourceMap": true, - - "strict": true, /* Enable all strict type-checking options. */ - "target": "ES2021", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ + "strict": true, + "target": "ES2022" } } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 20736dd6..c8d723e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -38,10 +38,10 @@ debug "^4.3.1" minimatch "^3.1.2" -"@eslint/core@^0.6.0": - version "0.6.0" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.6.0.tgz#9930b5ba24c406d67a1760e94cdbac616a6eb674" - integrity sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg== +"@eslint/core@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.7.0.tgz#a1bb4b6a4e742a5ff1894b7ee76fbf884ec72bd3" + integrity sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw== "@eslint/eslintrc@^3.1.0": version "3.1.0" @@ -58,10 +58,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.11.1": - version "9.11.1" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.11.1.tgz#8bcb37436f9854b3d9a561440daf916acd940986" - integrity sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA== +"@eslint/js@9.13.0": + version "9.13.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.13.0.tgz#c5f89bcd57eb54d5d4fa8b77693e9c28dc97e547" + integrity sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA== "@eslint/object-schema@^2.1.4": version "2.1.4" @@ -75,6 +75,19 @@ dependencies: levn "^0.4.1" +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.5": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" + "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" @@ -85,6 +98,11 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570" integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew== +"@humanwhocodes/retry@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + "@jridgewell/gen-mapping@^0.3.0": version "0.3.3" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" @@ -146,7 +164,7 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": +"@nodelib/fs.walk@^1.2.3": version "1.2.8" resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== @@ -154,6 +172,89 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@parcel/watcher-android-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz#c2c19a3c442313ff007d2d7a9c2c1dd3e1c9ca84" + integrity sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg== + +"@parcel/watcher-darwin-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz#c817c7a3b4f3a79c1535bfe54a1c2818d9ffdc34" + integrity sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA== + +"@parcel/watcher-darwin-x64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz#1a3f69d9323eae4f1c61a5f480a59c478d2cb020" + integrity sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg== + +"@parcel/watcher-freebsd-x64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz#0d67fef1609f90ba6a8a662bc76a55fc93706fc8" + integrity sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w== + +"@parcel/watcher-linux-arm-glibc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz#ce5b340da5829b8e546bd00f752ae5292e1c702d" + integrity sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA== + +"@parcel/watcher-linux-arm64-glibc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz#6d7c00dde6d40608f9554e73998db11b2b1ff7c7" + integrity sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA== + +"@parcel/watcher-linux-arm64-musl@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz#bd39bc71015f08a4a31a47cd89c236b9d6a7f635" + integrity sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA== + +"@parcel/watcher-linux-x64-glibc@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz#0ce29966b082fb6cdd3de44f2f74057eef2c9e39" + integrity sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg== + +"@parcel/watcher-linux-x64-musl@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz#d2ebbf60e407170bb647cd6e447f4f2bab19ad16" + integrity sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ== + +"@parcel/watcher-win32-arm64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz#eb4deef37e80f0b5e2f215dd6d7a6d40a85f8adc" + integrity sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg== + +"@parcel/watcher-win32-ia32@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz#94fbd4b497be39fd5c8c71ba05436927842c9df7" + integrity sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw== + +"@parcel/watcher-win32-x64@2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz#4bf920912f67cae5f2d264f58df81abfea68dadf" + integrity sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A== + +"@parcel/watcher@^2.4.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.4.1.tgz#a50275151a1bb110879c6123589dba90c19f1bf8" + integrity sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.4.1" + "@parcel/watcher-darwin-arm64" "2.4.1" + "@parcel/watcher-darwin-x64" "2.4.1" + "@parcel/watcher-freebsd-x64" "2.4.1" + "@parcel/watcher-linux-arm-glibc" "2.4.1" + "@parcel/watcher-linux-arm64-glibc" "2.4.1" + "@parcel/watcher-linux-arm64-musl" "2.4.1" + "@parcel/watcher-linux-x64-glibc" "2.4.1" + "@parcel/watcher-linux-x64-musl" "2.4.1" + "@parcel/watcher-win32-arm64" "2.4.1" + "@parcel/watcher-win32-ia32" "2.4.1" + "@parcel/watcher-win32-x64" "2.4.1" + "@rtsao/scc@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" @@ -196,69 +297,69 @@ dependencies: undici-types "~5.26.4" -"@types/node@^22.7.4": - version "22.7.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.4.tgz#e35d6f48dca3255ce44256ddc05dee1c23353fcc" - integrity sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg== +"@types/node@^22.8.5": + version "22.8.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.8.5.tgz#a978fb6755dbb32889b0bc3e37554dbc04f261a6" + integrity sha512-5iYk6AMPtsMbkZqCO1UGF9W5L38twq11S2pYWkybGHH2ogPUvXWNlQqJBzuEZWKj/WRH+QTeiv6ySWqJtvIEgA== dependencies: - undici-types "~6.19.2" + undici-types "~6.19.8" -"@typescript-eslint/eslint-plugin@^8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz#b2b02a5447cdc885950eb256b3b8a97b92031bd3" - integrity sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A== +"@typescript-eslint/eslint-plugin@^8.12.2": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.12.2.tgz#c2ef660bb83fd1432368319312a2581fc92ccac1" + integrity sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.8.0" - "@typescript-eslint/type-utils" "8.8.0" - "@typescript-eslint/utils" "8.8.0" - "@typescript-eslint/visitor-keys" "8.8.0" + "@typescript-eslint/scope-manager" "8.12.2" + "@typescript-eslint/type-utils" "8.12.2" + "@typescript-eslint/utils" "8.12.2" + "@typescript-eslint/visitor-keys" "8.12.2" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.8.0.tgz#ee4397c70230c4eee030456924c0fba480072f5e" - integrity sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg== +"@typescript-eslint/parser@^8.12.2": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.12.2.tgz#2e8173b34e1685e918b2d571c16c906d3747bad2" + integrity sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw== dependencies: - "@typescript-eslint/scope-manager" "8.8.0" - "@typescript-eslint/types" "8.8.0" - "@typescript-eslint/typescript-estree" "8.8.0" - "@typescript-eslint/visitor-keys" "8.8.0" + "@typescript-eslint/scope-manager" "8.12.2" + "@typescript-eslint/types" "8.12.2" + "@typescript-eslint/typescript-estree" "8.12.2" + "@typescript-eslint/visitor-keys" "8.12.2" debug "^4.3.4" -"@typescript-eslint/scope-manager@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz#30b23a6ae5708bd7882e40675ef2f1b2beac741f" - integrity sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg== +"@typescript-eslint/scope-manager@8.12.2": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.12.2.tgz#6db0213745e6392c8e90fe9af5915e6da32eb94a" + integrity sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ== dependencies: - "@typescript-eslint/types" "8.8.0" - "@typescript-eslint/visitor-keys" "8.8.0" + "@typescript-eslint/types" "8.12.2" + "@typescript-eslint/visitor-keys" "8.12.2" -"@typescript-eslint/type-utils@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz#a0ca1c8a90d94b101176a169d7a0958187408d33" - integrity sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q== +"@typescript-eslint/type-utils@8.12.2": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.12.2.tgz#132b0c52d45f6814e6f2e32416c7951ed480b016" + integrity sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ== dependencies: - "@typescript-eslint/typescript-estree" "8.8.0" - "@typescript-eslint/utils" "8.8.0" + "@typescript-eslint/typescript-estree" "8.12.2" + "@typescript-eslint/utils" "8.12.2" debug "^4.3.4" ts-api-utils "^1.3.0" -"@typescript-eslint/types@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.8.0.tgz#08ea5df6c01984d456056434641491fbf7a1bf43" - integrity sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw== +"@typescript-eslint/types@8.12.2": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.12.2.tgz#8d70098c0e90442495b53d0296acdca6d0f3f73c" + integrity sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA== -"@typescript-eslint/typescript-estree@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz#072eaab97fdb63513fabfe1cf271812affe779e3" - integrity sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw== +"@typescript-eslint/typescript-estree@8.12.2": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.12.2.tgz#206df9b1cbff212aaa9401985ef99f04daa84da5" + integrity sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow== dependencies: - "@typescript-eslint/types" "8.8.0" - "@typescript-eslint/visitor-keys" "8.8.0" + "@typescript-eslint/types" "8.12.2" + "@typescript-eslint/visitor-keys" "8.12.2" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -266,22 +367,22 @@ semver "^7.6.0" ts-api-utils "^1.3.0" -"@typescript-eslint/utils@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.8.0.tgz#bd8607e3a68c461b69169c7a5824637dc9e8b3f1" - integrity sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg== +"@typescript-eslint/utils@8.12.2": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.12.2.tgz#726cc9f49f5866605bd15bbc1768ffc15637930e" + integrity sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.8.0" - "@typescript-eslint/types" "8.8.0" - "@typescript-eslint/typescript-estree" "8.8.0" + "@typescript-eslint/scope-manager" "8.12.2" + "@typescript-eslint/types" "8.12.2" + "@typescript-eslint/typescript-estree" "8.12.2" -"@typescript-eslint/visitor-keys@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz#f93965abd38c82a1a1f5574290a50d02daf1cd2e" - integrity sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g== +"@typescript-eslint/visitor-keys@8.12.2": + version "8.12.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.12.2.tgz#94d7410f78eb6d134b9fcabaf1eeedb910ba8c38" + integrity sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA== dependencies: - "@typescript-eslint/types" "8.8.0" + "@typescript-eslint/types" "8.12.2" eslint-visitor-keys "^3.4.3" "@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": @@ -450,10 +551,10 @@ acorn@^8.11.3: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== -acorn@^8.12.0: - version "8.12.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" - integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== +acorn@^8.14.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== acorn@^8.7.1, acorn@^8.8.2: version "8.11.2" @@ -631,6 +732,13 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + browserslist@^4.21.10: version "4.22.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.3.tgz#299d11b7e947a6b843981392721169e27d60c5a6" @@ -861,6 +969,11 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, de has-property-descriptors "^1.0.0" object-keys "^1.1.1" +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" @@ -1092,17 +1205,17 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-module-utils@^2.9.0: +eslint-module-utils@^2.12.0: version "2.12.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== dependencies: debug "^3.2.7" -eslint-plugin-import@^2.30.0: - version "2.30.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz#21ceea0fc462657195989dd780e50c92fe95f449" - integrity sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw== +eslint-plugin-import@^2.31.0: + version "2.31.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== dependencies: "@rtsao/scc" "^1.1.0" array-includes "^3.1.8" @@ -1112,7 +1225,7 @@ eslint-plugin-import@^2.30.0: debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.9.0" + eslint-module-utils "^2.12.0" hasown "^2.0.2" is-core-module "^2.15.1" is-glob "^4.0.3" @@ -1121,6 +1234,7 @@ eslint-plugin-import@^2.30.0: object.groupby "^1.0.3" object.values "^1.2.0" semver "^6.3.1" + string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" eslint-scope@5.1.1: @@ -1131,10 +1245,10 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94" - integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA== +eslint-scope@^8.1.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -1149,21 +1263,26 @@ eslint-visitor-keys@^4.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== -eslint@^9.11.1: - version "9.11.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.11.1.tgz#701e5fc528990153f9cef696d8427003b5206567" - integrity sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg== +eslint-visitor-keys@^4.1.0, eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + +eslint@^9.13.0: + version "9.13.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.13.0.tgz#7659014b7dda1ff876ecbd990f726e11c61596e6" + integrity sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.11.0" "@eslint/config-array" "^0.18.0" - "@eslint/core" "^0.6.0" + "@eslint/core" "^0.7.0" "@eslint/eslintrc" "^3.1.0" - "@eslint/js" "9.11.1" + "@eslint/js" "9.13.0" "@eslint/plugin-kit" "^0.2.0" + "@humanfs/node" "^0.16.5" "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.3.0" - "@nodelib/fs.walk" "^1.2.8" + "@humanwhocodes/retry" "^0.3.1" "@types/estree" "^1.0.6" "@types/json-schema" "^7.0.15" ajv "^6.12.4" @@ -1171,9 +1290,9 @@ eslint@^9.11.1: cross-spawn "^7.0.2" debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^8.0.2" - eslint-visitor-keys "^4.0.0" - espree "^10.1.0" + eslint-scope "^8.1.0" + eslint-visitor-keys "^4.1.0" + espree "^10.2.0" esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -1183,13 +1302,11 @@ eslint@^9.11.1: ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" json-stable-stringify-without-jsonify "^1.0.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - strip-ansi "^6.0.1" text-table "^0.2.0" espree@^10.0.1: @@ -1201,14 +1318,14 @@ espree@^10.0.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^4.0.0" -espree@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56" - integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA== +espree@^10.2.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== dependencies: - acorn "^8.12.0" + acorn "^8.14.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.0.0" + eslint-visitor-keys "^4.2.0" esquery@^1.5.0: version "1.6.0" @@ -1296,6 +1413,13 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + find-up@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -1700,11 +1824,6 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -1901,6 +2020,14 @@ micromatch@^4.0.0, micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" +micromatch@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -1952,6 +2079,11 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +node-addon-api@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== + node-releases@^2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" @@ -2299,11 +2431,12 @@ safe-regex-test@^1.0.3: es-errors "^1.3.0" is-regex "^1.1.4" -sass@^1.79.4: - version "1.79.4" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.79.4.tgz#f9c45af35fbeb53d2c386850ec842098d9935267" - integrity sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg== +sass@^1.80.5: + version "1.80.5" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.80.5.tgz#0ba965223d44df22497f2966b498cf5c453fae8f" + integrity sha512-TQd2aoQl/+zsxRMEDSxVdpPIqeq9UFc6pr7PzkugiTx3VYCFPUaa3P4RrBQsqok4PO200Vkz0vXQBNlg7W907g== dependencies: + "@parcel/watcher" "^2.4.1" chokidar "^4.0.0" immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" @@ -2723,10 +2856,10 @@ typed-array-length@^1.0.6: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" -typescript@^5.6.2: - version "5.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0" - integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== +typescript@^5.6.3: + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== unbox-primitive@^1.0.2: version "1.0.2" @@ -2748,7 +2881,7 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici-types@~6.19.2: +undici-types@~6.19.8: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== @@ -2768,10 +2901,10 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -uuid@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" - integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== +uuid@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.0.2.tgz#a8d68ba7347d051e7ea716cc8dcbbab634d66875" + integrity sha512-14FfcOJmqdjbBPdDjFQyk/SdT4NySW4eM0zcG+HqbHP5jzuH56xO3J1DGhgs/cEMCfwYi3HQI1gnTO62iaG+tQ== watchpack@^2.4.1: version "2.4.1"