{"version":3,"sources":["webpack://Library/webpack/universalModuleDefinition","webpack://Library/./node_modules/a11y-dialog/a11y-dialog.js","webpack://Library/./node_modules/moment/locale/en-au.js","webpack://Library/./node_modules/moment/locale/en-ca.js","webpack://Library/./node_modules/moment/locale/en-gb.js","webpack://Library/./node_modules/moment/locale/en-ie.js","webpack://Library/./node_modules/moment/locale/en-il.js","webpack://Library/./node_modules/moment/locale/en-nz.js","webpack://Library/./node_modules/moment/locale|sync|/en","webpack://Library/./node_modules/moment/moment.js","webpack://Library/./node_modules/react-responsive/dist/react-responsive.js","webpack://Library/./calendar/classes/calendar-actions.ts","webpack://Library/./calendar/classes/calendar-settings.ts","webpack://Library/./calendar/classes/calendar-text.ts","webpack://Library/./calendar/classes/calendar.ts","webpack://Library/./calendar/classes/lazy-load.ts","webpack://Library/./calendar/classes/promo-code.ts","webpack://Library/./calendar/common/calendar-api.ts","webpack://Library/./calendar/common/calendar.ts","webpack://Library/./calendar/components/app.tsx","webpack://Library/./calendar/components/calendar-container.tsx","webpack://Library/./calendar/components/calendar-view-toggle.tsx","webpack://Library/./calendar/components/filters/clear-all.tsx","webpack://Library/./calendar/components/filters/container.tsx","webpack://Library/./calendar/components/filters/filter.tsx","webpack://Library/./calendar/components/grid/container.tsx","webpack://Library/./calendar/components/grid/day.tsx","webpack://Library/./calendar/components/grid/event.tsx","webpack://Library/./calendar/components/grid/month.tsx","webpack://Library/./calendar/components/grid/months.tsx","webpack://Library/./calendar/components/lazy-image.tsx","webpack://Library/./calendar/components/list/container.tsx","webpack://Library/./calendar/components/list/day.tsx","webpack://Library/./calendar/components/list/event.tsx","webpack://Library/./calendar/components/list/month.tsx","webpack://Library/./calendar/components/list/months.tsx","webpack://Library/./calendar/components/loader.tsx","webpack://Library/./calendar/components/month-selection/dropdown.tsx","webpack://Library/./calendar/components/month-selection/load-more.tsx","webpack://Library/./calendar/components/navigation/scroll-to-top.tsx","webpack://Library/./calendar/components/responsive/desktop.tsx","webpack://Library/./calendar/components/responsive/index.tsx","webpack://Library/./calendar/components/responsive/mobile.tsx","webpack://Library/./calendar/custom/classes/calendar-text.ts","webpack://Library/./calendar/helpers/filter-by-query.ts","webpack://Library/./calendar/helpers/focal-point-from-url.ts","webpack://Library/./calendar/helpers/scroll-to-month.ts","webpack://Library/./calendar/index.tsx","webpack://Library/./calendar/redux-state/actions/calendar-api.actions.ts","webpack://Library/./calendar/redux-state/actions/calendar-settings.actions.ts","webpack://Library/./calendar/redux-state/actions/calendar-text.actions.ts","webpack://Library/./calendar/redux-state/actions/calendar.actions.ts","webpack://Library/./calendar/redux-state/actions/lazy-load.actions.ts","webpack://Library/./calendar/redux-state/actions/promo-code.actions.ts","webpack://Library/./calendar/redux-state/index.ts","webpack://Library/./calendar/redux-state/reducers/calendar-settings.reducer.ts","webpack://Library/./calendar/redux-state/reducers/calendar-text.reducer.ts","webpack://Library/./calendar/redux-state/reducers/calendar.reducer.ts","webpack://Library/./calendar/redux-state/reducers/lazy-load.reducer.ts","webpack://Library/./calendar/redux-state/reducers/promo-code.reducer.ts","webpack://Library/./calendar/views/library/app.view.tsx","webpack://Library/./calendar/views/library/calendar-container.view.tsx","webpack://Library/./calendar/views/library/calendar-view-toggle.view.tsx","webpack://Library/./calendar/views/library/filter-clear-all.view.tsx","webpack://Library/./calendar/views/library/filter.view.tsx","webpack://Library/./calendar/views/library/filters-container.view.tsx","webpack://Library/./calendar/views/library/grid-day.view.tsx","webpack://Library/./calendar/views/library/grid-event.view.tsx","webpack://Library/./calendar/views/library/grid-month-container.view.tsx","webpack://Library/./calendar/views/library/grid-month.view.tsx","webpack://Library/./calendar/views/library/grid-months.view.tsx","webpack://Library/./calendar/views/library/list-container.view.tsx","webpack://Library/./calendar/views/library/list-day.view.tsx","webpack://Library/./calendar/views/library/list-event.view.tsx","webpack://Library/./calendar/views/library/list-month.view.tsx","webpack://Library/./calendar/views/library/list-months.view.tsx","webpack://Library/./calendar/views/library/loader.view.tsx","webpack://Library/./calendar/views/library/month-selection-dropdown.view.tsx","webpack://Library/./calendar/views/library/month-selection-load-more.view.tsx","webpack://Library/./calendar/views/library/scroll-to-top.tsx","webpack://Library/webpack/bootstrap","webpack://Library/webpack/runtime/chunk loaded","webpack://Library/webpack/runtime/compat get default export","webpack://Library/webpack/runtime/define property getters","webpack://Library/webpack/runtime/global","webpack://Library/webpack/runtime/harmony module decorator","webpack://Library/webpack/runtime/hasOwnProperty shorthand","webpack://Library/webpack/runtime/make namespace object","webpack://Library/webpack/runtime/node module decorator","webpack://Library/webpack/runtime/jsonp chunk loading","webpack://Library/webpack/startup"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;ACVA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,8BAA8B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,8BAA8B;AAC3C,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,8BAA8B;AAC3C,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA,MAAM,KAA6B;AACnC;AACA,GAAG,UAAU,IAA0C;AACvD,IAAI,iCAAqB,EAAE,mCAAE;AAC7B;AACA,KAAK;AAAA,kGAAC;AACN,GAAG,MAAM,EAEN;AACH,CAAC,SAAS,qBAAM,mBAAmB,qBAAM;;;;;;;;;;;ACjczC;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;;AAG5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;;AAG5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;;AAG5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;;AAG5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;;AAG5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5DD;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;;AAG5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qE;;;;;;;;;;;ACjCA;;AAEA,CAAC;AACD,IAAI,KAA4D;AAChE,IAAI,CACyB;AAC7B,CAAC,qBAAqB;;AAEtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,IAAI;AAC/B;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,iCAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4LAA4L,IAAI;;AAEhM,qEAAqE,IAAI;;AAEzE;;AAEA;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0CAA0C,YAAY;AACtD;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8BAA8B;AAC9B,gCAAgC;AAChC,6BAA6B,EAAE,EAAE;AACjC,6BAA6B,EAAE,EAAE;AACjC,kCAAkC,EAAE,EAAE;AACtC,iCAAiC;AACjC,qCAAqC;AACrC,yCAAyC;AACzC,6BAA6B,IAAI,EAAE;AACnC,6BAA6B,IAAI,EAAE;AACnC,kCAAkC,IAAI,EAAE;;AAExC,+BAA+B;AAC/B,oCAAoC;;AAEpC,8CAA8C;AAC9C,qDAAqD;;AAErD,wCAAwC,IAAI,IAAI;;AAEhD;AACA;AACA,2BAA2B,MAAM,wEAAwE,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;;AAEzK;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,2BAA2B,wBAAwB;AACnD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,QAAa;AAC5C;AACA;AACA;AACA,qCAAqC,SAAO;AAC5C,gBAAgB,sEAAe,IAAW,OAAO,CAAC;AAClD;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;;AAGA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C,EAAE,IAAI,EAAE;AACnD,wCAAwC,EAAE,IAAI,EAAE;;AAEhD;;AAEA;AACA,iCAAiC,EAAE;AACnC,2BAA2B,EAAE;AAC7B,6BAA6B,EAAE;AAC/B,2BAA2B,EAAE;AAC7B,yBAAyB,EAAE,IAAI,EAAE;AACjC,wBAAwB,EAAE;AAC1B,+BAA+B,GAAG;AAClC,yBAAyB,EAAE;AAC3B;AACA,2BAA2B,EAAE,IAAI,EAAE;AACnC,0BAA0B,EAAE,IAAI,EAAE;AAClC,wBAAwB,EAAE;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,8DAA8D,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;;AAEvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC,gBAAgB;AAClD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,6BAA6B;AACtC;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB;;AAEnB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,cAAc;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,6DAA6D;AAC7D,yDAAyD;AACzD,+DAA+D;AAC/D,wDAAwD,OAAO;AAC/D,wDAAwD,OAAO;AAC/D,uDAAuD,OAAO;AAC9D,mEAAmE,OAAO;AAC1E,qEAAqE,OAAO;AAC5E;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,qBAAqB;AACxD,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mCAAmC,qBAAqB;AACxD,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;;AAGL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;;AAGA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACz5ID;AACA,IAAI,KAAuD,4BAA4B,mBAAO,CAAC,4CAAO,KAAK,CAA8L;AACzS,CAAC;AACD;AACA,iBAAiB,8BAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,8BAAmB;AACrG;AACA;AACA;AACA,eAAe,8BAAmB,cAAc,8BAAmB;AACnE,QAAQ,8BAAmB;AAC3B,YAAY,8BAAmB;AAC/B;AACA;AACA;AACA,aAAa;AACb,SAAS,EAAE,8BAAmB;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA,mBAAmB,8BAAmB;AACtC,SAAS,EAAE,8BAAmB;AAC9B;AACA,SAAS,EAAE,8BAAmB,SAAS,8BAAmB,CAAC,8BAAmB;AAC9E,KAAK,6BAA6B,+BAAmB;AACrD;AACA;AACA;AACA,yBAAyB,+BAAmB;AAC5C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,sFAAsF,oGAAoG;AAC1L;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK,4BAA4B,+BAAmB;AACpD;AACA,4BAA4B,+BAAmB;AAC/C,8FAA8F,aAAa;AAC3G;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,sGAAsG,eAAe;AACrH;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,4BAA4B,+BAAmB;AACpD;AACA;AACA;AACA,SAAS;AACT;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA,SAAS,eAAe,+BAAmB;AAC3C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB;AAC5B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK,4BAA4B,+BAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,uCAAuC;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA,SAAS,WAAW,+BAAmB,4DAA4D,+BAAmB,0EAA0E,+BAAmB,0FAA0F,+BAAmB,uFAAuF,+BAAmB,oEAAoE,+BAAmB;AACjgB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,+EAA+E,aAAa;AAC5F;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,KAAK,4BAA4B,gCAAmB;AACpD;AACA,4BAA4B,gCAAmB,iBAAiB,gCAAmB,eAAe,gCAAmB,cAAc,gCAAmB,6BAA6B,gCAAmB,sBAAsB,gCAAmB;AAC/O;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iRAAiR;AACjR;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,2BAA2B;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gCAAgC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gCAAgC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+BAA+B;AAC7D,qBAAqB,YAAY,+BAA+B;AAChE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,QAAQ,QAAQ;AACnD;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB,0DAA0D;AAC3E,aAAa;AACb;AACA;AACA,SAAS;AACT,iEAAiE,sBAAsB;AACvF;AACA;AACA;AACA;AACA,mCAAmC,oBAAoB;AACvD;AACA;AACA;AACA;AACA,KAAK,4BAA4B,gCAAmB;AACpD;AACA;AACA;AACA;AACA;AACA,yGAAyG;AACzG;AACA,iBAAiB;AACjB;AACA;AACA,4GAA4G;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gCAAmB,eAAe,gCAAmB,4BAA4B,gCAAmB;AAC5H;AACA,KAAK,4BAA4B,gCAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,0BAA0B,gCAAmB;AAC7C;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,4BAA4B,gCAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,kCAAkC,gCAAmB,uFAAuF,gCAAmB;AAC/J;AACA;AACA;AACA,KAAK;AACL,CAAC;AACD,4C;;;;;;;;;;;;;;ACruBA;;GAEG;AACH;IAAA;IAuGA,CAAC;IAtGG,sBAAW,uBAAS;aAApB;YACI,OAAO,WAAW,CAAC;QACvB,CAAC;;;OAAA;IACD,sBAAW,2BAAa;aAAxB;YACI,OAAO,eAAe,CAAC;QAC3B,CAAC;;;OAAA;IACD,sBAAW,qBAAO;aAAlB;YACI,OAAO,SAAS,CAAC;QACrB,CAAC;;;OAAA;IACD,sBAAW,sBAAQ;aAAnB;YACI,OAAO,UAAU,CAAC;QACtB,CAAC;;;OAAA;IACD,sBAAW,uB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AAC,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAC,yBAAyB,sBAAmB,KAAK,CAAC,UAAU,oBAAmB,CACnI;AACL,CAAC;AAED,kBAAe,eAAe,CAAC;;;;;;;UCV/B;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA,8BAA8B,wCAAwC;WACtE;WACA;WACA;WACA;WACA,gBAAgB,qBAAqB;WACrC;WACA;WACA;WACA;WACA,iBAAiB,qBAAqB;WACtC,mHAAmH,gDAAgD,EAAE;WACrK;WACA,IAAI;WACJ;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,E;;;;;WC5BA;WACA;WACA;WACA,cAAc,0BAA0B,EAAE;WAC1C,cAAc,eAAe;WAC7B,gCAAgC,YAAY;WAC5C;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA,CAAC,I;;;;;WCPD;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA,E;;;;;WCVA,6CAA6C,wDAAwD,E;;;;;WCArG;WACA;WACA;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;;WCNA;WACA;WACA;WACA;WACA,E;;;;;WCJA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA,6CAA6C,uCAAuC;;WAEpF;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,oBAAoB;WAC1B;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA,4G;;;;;UChDA;UACA;UACA;UACA,mFAAmF,oDAAoD,EAAE;UACzI","file":"ace-calendar.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Library\"] = factory();\n\telse\n\t\troot[\"Library\"] = factory();\n})(self, function() {\nreturn ","/* global NodeList, Element, Event, define */\n\n(function(global) {\n 'use strict';\n\n var FOCUSABLE_ELEMENTS = [\n 'a[href]:not([tabindex^=\"-\"]):not([inert])',\n 'area[href]:not([tabindex^=\"-\"]):not([inert])',\n 'input:not([disabled]):not([inert])',\n 'select:not([disabled]):not([inert])',\n 'textarea:not([disabled]):not([inert])',\n 'button:not([disabled]):not([inert])',\n 'iframe:not([tabindex^=\"-\"]):not([inert])',\n 'audio:not([tabindex^=\"-\"]):not([inert])',\n 'video:not([tabindex^=\"-\"]):not([inert])',\n '[contenteditable]:not([tabindex^=\"-\"]):not([inert])',\n '[tabindex]:not([tabindex^=\"-\"]):not([inert])'\n ];\n var TAB_KEY = 9;\n var ESCAPE_KEY = 27;\n var focusedBeforeDialog;\n\n /**\n * Define the constructor to instantiate a dialog\n *\n * @constructor\n * @param {Element} node\n * @param {(NodeList | Element | string)} targets\n */\n function A11yDialog(node, targets) {\n // Prebind the functions that will be bound in addEventListener and\n // removeEventListener to avoid losing references\n this._show = this.show.bind(this);\n this._hide = this.hide.bind(this);\n this._maintainFocus = this._maintainFocus.bind(this);\n this._bindKeypress = this._bindKeypress.bind(this);\n\n // Keep a reference of the node and the actual dialog on the instance\n this.container = node;\n this.dialog = node.querySelector('dialog, [role=\"dialog\"]');\n this.useDialog = (\n 'show' in document.createElement('dialog') &&\n this.dialog.nodeName === 'DIALOG'\n );\n\n // Keep an object of listener types mapped to callback functions\n this._listeners = {};\n\n // Initialise everything needed for the dialog to work properly\n this.create(targets);\n }\n\n /**\n * Set up everything necessary for the dialog to be functioning\n *\n * @param {(NodeList | Element | string)} targets\n * @return {this}\n */\n A11yDialog.prototype.create = function(targets) {\n // Keep a collection of nodes to disable/enable when toggling the dialog\n this._targets =\n this._targets || collect(targets) || getSiblings(this.container);\n\n // Set the `shown` property to match the status from the DOM\n this.shown = this.dialog.hasAttribute('open');\n\n // Despite using a `` element, `role=\"dialog\"` is not necessarily\n // implied by all screen-readers (yet)\n // See: https://github.com/edenspiekermann/a11y-dialog/commit/6ba711a777aed0dbda0719a18a02f742098c64d9#commitcomment-28694166\n this.dialog.setAttribute('role', 'dialog');\n\n if (!this.useDialog) {\n if (this.shown) {\n this.container.removeAttribute('aria-hidden');\n } else {\n this.container.setAttribute('aria-hidden', true);\n }\n } else {\n this.container.setAttribute('data-a11y-dialog-native', '');\n }\n\n // Keep a collection of dialog openers, each of which will be bound a click\n // event listener to open the dialog\n this._openers = $$('[data-a11y-dialog-show=\"' + this.container.id + '\"]');\n this._openers.forEach(\n function(opener) {\n opener.addEventListener('click', this._show);\n }.bind(this)\n );\n\n // Keep a collection of dialog closers, each of which will be bound a click\n // event listener to close the dialog\n this._closers = $$('[data-a11y-dialog-hide]', this.container).concat(\n $$('[data-a11y-dialog-hide=\"' + this.container.id + '\"]')\n );\n this._closers.forEach(\n function(closer) {\n closer.addEventListener('click', this._hide);\n }.bind(this)\n );\n\n // Execute all callbacks registered for the `create` event\n this._fire('create');\n\n return this;\n };\n\n /**\n * Show the dialog element, disable all the targets (siblings), trap the\n * current focus within it, listen for some specific key presses and fire all\n * registered callbacks for `show` event\n *\n * @param {Event} event\n * @return {this}\n */\n A11yDialog.prototype.show = function(event) {\n // If the dialog is already open, abort\n if (this.shown) {\n return this;\n }\n\n this.shown = true;\n\n // Keep a reference to the currently focused element to be able to restore\n // it later\n focusedBeforeDialog = document.activeElement;\n\n if (this.useDialog) {\n this.dialog.showModal(event instanceof Event ? void 0 : event);\n } else {\n this.dialog.setAttribute('open', '');\n this.container.removeAttribute('aria-hidden');\n\n // Iterate over the targets to disable them by setting their `aria-hidden`\n // attribute to `true`\n this._targets.forEach(function(target) {\n target.setAttribute('aria-hidden', 'true');\n });\n }\n\n // Set the focus to the first focusable child of the dialog element\n setFocusToFirstItem(this.dialog);\n\n // Bind a focus event listener to the body element to make sure the focus\n // stays trapped inside the dialog while open, and start listening for some\n // specific key presses (TAB and ESC)\n document.body.addEventListener('focus', this._maintainFocus, true);\n document.addEventListener('keydown', this._bindKeypress);\n\n // Execute all callbacks registered for the `show` event\n this._fire('show', event);\n\n return this;\n };\n\n /**\n * Hide the dialog element, enable all the targets (siblings), restore the\n * focus to the previously active element, stop listening for some specific\n * key presses and fire all registered callbacks for `hide` event\n *\n * @param {Event} event\n * @return {this}\n */\n A11yDialog.prototype.hide = function(event) {\n // If the dialog is already closed, abort\n if (!this.shown) {\n return this;\n }\n\n this.shown = false;\n\n if (this.useDialog) {\n this.dialog.close(event instanceof Event ? void 0 : event);\n } else {\n this.dialog.removeAttribute('open');\n this.container.setAttribute('aria-hidden', 'true');\n\n // Iterate over the targets to enable them by remove their `aria-hidden`\n // attribute\n this._targets.forEach(function(target) {\n target.removeAttribute('aria-hidden');\n });\n }\n\n // If their was a focused element before the dialog was opened, restore the\n // focus back to it\n if (focusedBeforeDialog) {\n focusedBeforeDialog.focus();\n }\n\n // Remove the focus event listener to the body element and stop listening\n // for specific key presses\n document.body.removeEventListener('focus', this._maintainFocus, true);\n document.removeEventListener('keydown', this._bindKeypress);\n\n // Execute all callbacks registered for the `hide` event\n this._fire('hide', event);\n\n return this;\n };\n\n /**\n * Destroy the current instance (after making sure the dialog has been hidden)\n * and remove all associated listeners from dialog openers and closers\n *\n * @return {this}\n */\n A11yDialog.prototype.destroy = function() {\n // Hide the dialog to avoid destroying an open instance\n this.hide();\n\n // Remove the click event listener from all dialog openers\n this._openers.forEach(\n function(opener) {\n opener.removeEventListener('click', this._show);\n }.bind(this)\n );\n\n // Remove the click event listener from all dialog closers\n this._closers.forEach(\n function(closer) {\n closer.removeEventListener('click', this._hide);\n }.bind(this)\n );\n\n // Execute all callbacks registered for the `destroy` event\n this._fire('destroy');\n\n // Keep an object of listener types mapped to callback functions\n this._listeners = {};\n\n return this;\n };\n\n /**\n * Register a new callback for the given event type\n *\n * @param {string} type\n * @param {Function} handler\n */\n A11yDialog.prototype.on = function(type, handler) {\n if (typeof this._listeners[type] === 'undefined') {\n this._listeners[type] = [];\n }\n\n this._listeners[type].push(handler);\n\n return this;\n };\n\n /**\n * Unregister an existing callback for the given event type\n *\n * @param {string} type\n * @param {Function} handler\n */\n A11yDialog.prototype.off = function(type, handler) {\n var index = this._listeners[type].indexOf(handler);\n\n if (index > -1) {\n this._listeners[type].splice(index, 1);\n }\n\n return this;\n };\n\n /**\n * Iterate over all registered handlers for given type and call them all with\n * the dialog element as first argument, event as second argument (if any).\n *\n * @access private\n * @param {string} type\n * @param {Event} event\n */\n A11yDialog.prototype._fire = function(type, event) {\n var listeners = this._listeners[type] || [];\n\n listeners.forEach(\n function(listener) {\n listener(this.container, event);\n }.bind(this)\n );\n };\n\n /**\n * Private event handler used when listening to some specific key presses\n * (namely ESCAPE and TAB)\n *\n * @access private\n * @param {Event} event\n */\n A11yDialog.prototype._bindKeypress = function(event) {\n // If the dialog is shown and the ESCAPE key is being pressed, prevent any\n // further effects from the ESCAPE key and hide the dialog\n if (this.shown && event.which === ESCAPE_KEY) {\n event.preventDefault();\n this.hide();\n }\n\n // If the dialog is shown and the TAB key is being pressed, make sure the\n // focus stays trapped within the dialog element\n if (this.shown && event.which === TAB_KEY) {\n trapTabKey(this.dialog, event);\n }\n };\n\n /**\n * Private event handler used when making sure the focus stays within the\n * currently open dialog\n *\n * @access private\n * @param {Event} event\n */\n A11yDialog.prototype._maintainFocus = function(event) {\n // If the dialog is shown and the focus is not within the dialog element,\n // move it back to its first focusable child\n if (this.shown && !this.container.contains(event.target)) {\n setFocusToFirstItem(this.dialog);\n }\n };\n\n /**\n * Convert a NodeList into an array\n *\n * @param {NodeList} collection\n * @return {Array}\n */\n function toArray(collection) {\n return Array.prototype.slice.call(collection);\n }\n\n /**\n * Query the DOM for nodes matching the given selector, scoped to context (or\n * the whole document)\n *\n * @param {String} selector\n * @param {Element} [context = document]\n * @return {Array}\n */\n function $$(selector, context) {\n return toArray((context || document).querySelectorAll(selector));\n }\n\n /**\n * Return an array of Element based on given argument (NodeList, Element or\n * string representing a selector)\n *\n * @param {(NodeList | Element | string)} target\n * @return {Array}\n */\n function collect(target) {\n if (NodeList.prototype.isPrototypeOf(target)) {\n return toArray(target);\n }\n\n if (Element.prototype.isPrototypeOf(target)) {\n return [target];\n }\n\n if (typeof target === 'string') {\n return $$(target);\n }\n }\n\n /**\n * Set the focus to the first element with `autofocus` or the first focusable\n * child of the given element\n *\n * @param {Element} node\n */\n function setFocusToFirstItem(node) {\n var focusableChildren = getFocusableChildren(node);\n var focused = node.querySelector('[autofocus]') || focusableChildren[0];\n\n if (focused) {\n focused.focus();\n }\n }\n\n /**\n * Get the focusable children of the given element\n *\n * @param {Element} node\n * @return {Array}\n */\n function getFocusableChildren(node) {\n return $$(FOCUSABLE_ELEMENTS.join(','), node).filter(function(child) {\n return !!(\n child.offsetWidth ||\n child.offsetHeight ||\n child.getClientRects().length\n );\n });\n }\n\n /**\n * Trap the focus inside the given element\n *\n * @param {Element} node\n * @param {Event} event\n */\n function trapTabKey(node, event) {\n var focusableChildren = getFocusableChildren(node);\n var focusedItemIndex = focusableChildren.indexOf(document.activeElement);\n\n // If the SHIFT key is being pressed while tabbing (moving backwards) and\n // the currently focused item is the first one, move the focus to the last\n // focusable item from the dialog element\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableChildren[focusableChildren.length - 1].focus();\n event.preventDefault();\n // If the SHIFT key is not being pressed (moving forwards) and the currently\n // focused item is the last one, move the focus to the first focusable item\n // from the dialog element\n } else if (\n !event.shiftKey &&\n focusedItemIndex === focusableChildren.length - 1\n ) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n }\n\n /**\n * Retrieve siblings from given element\n *\n * @param {Element} node\n * @return {Array}\n */\n function getSiblings(node) {\n var nodes = toArray(node.parentNode.childNodes);\n var siblings = nodes.filter(function(node) {\n return node.nodeType === 1;\n });\n\n siblings.splice(siblings.indexOf(node), 1);\n\n return siblings;\n }\n\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = A11yDialog;\n } else if (typeof define === 'function' && define.amd) {\n define('A11yDialog', [], function() {\n return A11yDialog;\n });\n } else if (typeof global === 'object') {\n global.A11yDialog = A11yDialog;\n }\n})(typeof global !== 'undefined' ? global : window);\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enAu = moment.defineLocale('en-au', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enCa = moment.defineLocale('en-ca', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'YYYY-MM-DD',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enGb = moment.defineLocale('en-gb', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enIe = moment.defineLocale('en-ie', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD-MM-YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enIl = moment.defineLocale('en-il', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'HH:mm',\n LTS : 'HH:mm:ss',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY HH:mm',\n LLLL : 'dddd, D MMMM YYYY HH:mm'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n\n var enNz = moment.defineLocale('en-nz', {\n months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat : {\n LT : 'h:mm A',\n LTS : 'h:mm:ss A',\n L : 'DD/MM/YYYY',\n LL : 'D MMMM YYYY',\n LLL : 'D MMMM YYYY h:mm A',\n LLLL : 'dddd, D MMMM YYYY h:mm A'\n },\n calendar : {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n },\n relativeTime : {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (~~(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n },\n week : {\n dow : 1, // Monday is the first day of the week.\n doy : 4 // The week that contains Jan 4th is the first week of the year.\n }\n });\n\n return enNz;\n\n})));\n","var map = {\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive en\";","//! moment.js\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks () {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback (callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return input != null && Object.prototype.toString.call(input) === '[object Object]';\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return (Object.getOwnPropertyNames(obj).length === 0);\n } else {\n var k;\n for (k in obj) {\n if (obj.hasOwnProperty(k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';\n }\n\n function isDate(input) {\n return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n }\n\n function map(arr, fn) {\n var res = [], i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty : false,\n unusedTokens : [],\n unusedInput : [],\n overflow : -2,\n charsLeftOver : 0,\n nullInput : false,\n invalidMonth : null,\n invalidFormat : false,\n userInvalidated : false,\n iso : false,\n parsedDateParts : [],\n meridiem : null,\n rfc2822 : false,\n weekdayMismatch : false\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this);\n var len = t.length >>> 0;\n\n for (var i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m);\n var parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n var isNowValid = !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid = isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n }\n else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid (flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n }\n else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = hooks.momentProperties = [];\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n var updateInProgress = false;\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment (obj) {\n return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);\n }\n\n function absFloor (number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if ((dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n function warn(msg) {\n if (hooks.suppressDeprecationWarnings === false &&\n (typeof console !== 'undefined') && console.warn) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [];\n var arg;\n for (var i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (var key in arguments[0]) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(msg + '\\nArguments: ' + Array.prototype.slice.call(args).join('') + '\\n' + (new Error()).stack);\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';\n }\n\n function set (config) {\n var prop, i;\n for (i in config) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' + (/\\d{1,2}/).source);\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig), prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i, res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay : '[Today at] LT',\n nextDay : '[Tomorrow at] LT',\n nextWeek : 'dddd [at] LT',\n lastDay : '[Yesterday at] LT',\n lastWeek : '[Last] dddd [at] LT',\n sameElse : 'L'\n };\n\n function calendar (key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n var defaultLongDateFormat = {\n LTS : 'h:mm:ss A',\n LT : 'h:mm A',\n L : 'MM/DD/YYYY',\n LL : 'MMMM D, YYYY',\n LLL : 'MMMM D, YYYY h:mm A',\n LLLL : 'dddd, MMMM D, YYYY h:mm A'\n };\n\n function longDateFormat (key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {\n return val.slice(1);\n });\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate () {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d';\n var defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal (number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future : 'in %s',\n past : '%s ago',\n s : 'a few seconds',\n ss : '%d seconds',\n m : 'a minute',\n mm : '%d minutes',\n h : 'an hour',\n hh : '%d hours',\n d : 'a day',\n dd : '%d days',\n M : 'a month',\n MM : '%d months',\n y : 'a year',\n yy : '%d years'\n };\n\n function relativeTime (number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return (isFunction(output)) ?\n output(number, withoutSuffix, string, isFuture) :\n output.replace(/%d/i, number);\n }\n\n function pastFuture (diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias (unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [];\n for (var u in unitsObj) {\n units.push({unit: u, priority: priorities[u]});\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;\n\n var localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g;\n\n var formatFunctions = {};\n\n var formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken (token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(func.apply(this, arguments), token);\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens), i, length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '', i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var match1 = /\\d/; // 0 - 9\n var match2 = /\\d\\d/; // 00 - 99\n var match3 = /\\d{3}/; // 000 - 999\n var match4 = /\\d{4}/; // 0000 - 9999\n var match6 = /[+-]?\\d{6}/; // -999999 - 999999\n var match1to2 = /\\d\\d?/; // 0 - 99\n var match3to4 = /\\d\\d\\d\\d?/; // 999 - 9999\n var match5to6 = /\\d\\d\\d\\d\\d\\d?/; // 99999 - 999999\n var match1to3 = /\\d{1,3}/; // 0 - 999\n var match1to4 = /\\d{1,4}/; // 0 - 9999\n var match1to6 = /[+-]?\\d{1,6}/; // -999999 - 999999\n\n var matchUnsigned = /\\d+/; // 0 - inf\n var matchSigned = /[+-]?\\d+/; // -inf - inf\n\n var matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi; // +00:00 -00:00 +0000 -0000 or Z\n var matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\n var matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n var matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i;\n\n var regexes = {};\n\n function addRegexToken (token, regex, strictRegex) {\n regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {\n return (isStrict && strictRegex) ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken (token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(s.replace('\\\\', '').replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }));\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken (token, callback) {\n var i, func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken (token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0;\n var MONTH = 1;\n var DATE = 2;\n var HOUR = 3;\n var MINUTE = 4;\n var SECOND = 5;\n var MILLISECOND = 6;\n var WEEK = 7;\n var WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? '' + y : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear () {\n return isLeapYear(this.year());\n }\n\n function makeGetSet (unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get (mom, unit) {\n return mom.isValid() ?\n mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;\n }\n\n function set$1 (mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));\n }\n else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet (units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n\n function stringSet (units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units);\n for (var i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/;\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');\n function localeMonths (m, format) {\n if (!m) {\n return isArray(this._months) ? this._months :\n this._months['standalone'];\n }\n return isArray(this._months) ? this._months[m.month()] :\n this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');\n function localeMonthsShort (m, format) {\n if (!m) {\n return isArray(this._monthsShort) ? this._monthsShort :\n this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort) ? this._monthsShort[m.month()] :\n this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i, ii, mom, llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse (monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');\n this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');\n }\n if (!strict && !this._monthsParse[i]) {\n regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {\n return i;\n } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth (mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth (value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth () {\n return daysInMonth(this.year(), this.month());\n }\n\n var defaultMonthsShortRegex = matchWord;\n function monthsShortRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict ?\n this._monthsShortStrictRegex : this._monthsShortRegex;\n }\n }\n\n var defaultMonthsRegex = matchWord;\n function monthsRegex (isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict ?\n this._monthsStrictRegex : this._monthsRegex;\n }\n }\n\n function computeMonthsParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n }\n\n function createDate (y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date = new Date(y, m, d, h, M, s, ms);\n\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n return date;\n }\n\n function createUTCDate (y) {\n var date = new Date(Date.UTC.apply(null, arguments));\n\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear, resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek, resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek (mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow : 0, // Sunday is the first day of the week.\n doy : 6 // The week that contains Jan 1st is the first week of the year.\n };\n\n function localeFirstDayOfWeek () {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear () {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek (input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek (input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');\n function localeWeekdays (m, format) {\n if (!m) {\n return isArray(this._weekdays) ? this._weekdays :\n this._weekdays['standalone'];\n }\n return isArray(this._weekdays) ? this._weekdays[m.day()] :\n this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()];\n }\n\n var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');\n function localeWeekdaysShort (m) {\n return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;\n }\n\n var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');\n function localeWeekdaysMin (m) {\n return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i, ii, mom, llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse (weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$', 'i');\n this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$', 'i');\n }\n if (!this._weekdaysParse[i]) {\n regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek (input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n var defaultWeekdaysRegex = matchWord;\n function weekdaysRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict ?\n this._weekdaysStrictRegex : this._weekdaysRegex;\n }\n }\n\n var defaultWeekdaysShortRegex = matchWord;\n function weekdaysShortRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict ?\n this._weekdaysShortStrictRegex : this._weekdaysShortRegex;\n }\n }\n\n var defaultWeekdaysMinRegex = matchWord;\n function weekdaysMinRegex (isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict ?\n this._weekdaysMinStrictRegex : this._weekdaysMinRegex;\n }\n }\n\n\n function computeWeekdaysParse () {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],\n i, mom, minp, shortp, longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = this.weekdaysMin(mom, '');\n shortp = this.weekdaysShort(mom, '');\n longp = this.weekdays(mom, '');\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 7; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');\n this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');\n this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2);\n });\n\n function meridiem (token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem (isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4;\n var pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM (input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return ((input + '').toLowerCase().charAt(0) === 'p');\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i;\n function localeMeridiem (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n\n // MOMENTS\n\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n var getSetHour = makeGetSet('Hours', true);\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse\n };\n\n // internal storage for locale config files\n var locales = {};\n var localeFamilies = {};\n var globalLocale;\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0, j, next, locale, split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null;\n // TODO: Find a better way to register and load all the locales in Node\n if (!locales[name] && (typeof module !== 'undefined') &&\n module && module.exports) {\n try {\n oldLocale = globalLocale._abbr;\n var aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {}\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale (key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n }\n else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n }\n else {\n if ((typeof console !== 'undefined') && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn('Locale ' + key + ' not found. Did you forget to load it?');\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale (name, config) {\n if (config !== null) {\n var locale, parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple('defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale, tmpLocale, parentConfig = baseConfig;\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale (key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow (m) {\n var overflow;\n var a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :\n a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :\n a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :\n a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :\n a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :\n a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :\n -1;\n\n if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray (config) {\n var i, date, input = [], currentDate, expectedWeekday, yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);\n expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n var curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from begining of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to begining of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n var basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/;\n\n var tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/;\n\n var isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n // YYYYMM is NOT allowed by the standard\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/]\n ];\n\n // iso time formats and regexes\n var isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/]\n ];\n\n var aspNetJsonRegex = /^\\/?Date\\((\\-?\\d+)/i;\n\n // date from iso format\n function configFromISO(config) {\n var i, l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime, dateFormat, timeFormat, tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;\n\n function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10)\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s.replace(/\\([^)]*\\)|[\\n\\t]/g, ' ').replace(/(\\s\\s+)/g, ' ').replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n var obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60\n };\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10);\n var m = hm % 100, h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i));\n if (match) {\n var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from iso format or fallback\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i, parsedInput, tokens, token, skipped,\n stringLength = string.length,\n totalParsedInputLength = 0;\n\n tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(string.indexOf(parsedInput) + parsedInput.length);\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n }\n else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n }\n else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n\n function meridiemFixWrap (locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n\n scoreToBeat,\n i,\n currentScore;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (!isValid(tempConfig)) {\n continue;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (scoreToBeat == null || currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i);\n config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {\n return obj && parseInt(obj, 10);\n });\n\n configFromArray(config);\n }\n\n function createFromConfig (config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig (config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({nullInput: true});\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC (input, format, locale, strict, isUTC) {\n var c = {};\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if ((isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal (input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n var prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max () {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +(new Date());\n };\n\n var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];\n\n function isDurationValid(m) {\n for (var key in m) {\n if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {\n return false;\n }\n }\n\n var unitHasDecimal = false;\n for (var i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration (duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds = +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days +\n weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months +\n quarters * 3 +\n years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration (obj) {\n return obj instanceof Duration;\n }\n\n function absRound (number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // FORMATTING\n\n function offset (token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset();\n var sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher);\n\n if (matches === null) {\n return null;\n }\n\n var chunk = matches[matches.length - 1] || [];\n var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n var minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ?\n 0 :\n parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset (m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset() / 15) * 15;\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset (input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(this, createDuration(input - offset, 'm'), 1, false);\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone (input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC (keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal (keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset () {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n }\n else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset (input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime () {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted () {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {};\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted = this.isValid() &&\n compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal () {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset () {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc () {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/;\n\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n var isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration (input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms : input._milliseconds,\n d : input._days,\n M : input._months\n };\n } else if (isNumber(input)) {\n duration = {};\n if (key) {\n duration[key] = input;\n } else {\n duration.milliseconds = input;\n }\n } else if (!!(match = aspNetRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : 1;\n duration = {\n y : 0,\n d : toInt(match[DATE]) * sign,\n h : toInt(match[HOUR]) * sign,\n m : toInt(match[MINUTE]) * sign,\n s : toInt(match[SECOND]) * sign,\n ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match\n };\n } else if (!!(match = isoRegex.exec(input))) {\n sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1;\n duration = {\n y : parseIso(match[2], sign),\n M : parseIso(match[3], sign),\n w : parseIso(match[4], sign),\n d : parseIso(match[5], sign),\n h : parseIso(match[6], sign),\n m : parseIso(match[7], sign),\n s : parseIso(match[8], sign)\n };\n } else if (duration == null) {// checks for null or undefined\n duration = {};\n } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {\n diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso (inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {milliseconds: 0, months: 0};\n\n res.months = other.month() - base.month() +\n (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +(base.clone().add(res.months, 'M'));\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return {milliseconds: 0, months: 0};\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');\n tmp = val; val = period; period = tmp;\n }\n\n val = typeof val === 'string' ? +val : val;\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract (mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add');\n var subtract = createAdder(-1, 'subtract');\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6 ? 'sameElse' :\n diff < -1 ? 'lastWeek' :\n diff < 0 ? 'lastDay' :\n diff < 1 ? 'sameDay' :\n diff < 2 ? 'nextDay' :\n diff < 7 ? 'nextWeek' : 'sameElse';\n }\n\n function calendar$1 (time, formats) {\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse';\n\n var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);\n\n return this.format(output || this.localeData().calendar(format, this, createLocal(now)));\n }\n\n function clone () {\n return new Moment(this);\n }\n\n function isAfter (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(!isUndefined(units) ? units : 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween (from, to, units, inclusivity) {\n inclusivity = inclusivity || '()';\n return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) &&\n (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units));\n }\n\n function isSame (input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units || 'millisecond');\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();\n }\n }\n\n function isSameOrAfter (input, units) {\n return this.isSame(input, units) || this.isAfter(input,units);\n }\n\n function isSameOrBefore (input, units) {\n return this.isSame(input, units) || this.isBefore(input,units);\n }\n\n function diff (input, units, asFloat) {\n var that,\n zoneDelta,\n output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year': output = monthDiff(this, that) / 12; break;\n case 'month': output = monthDiff(this, that); break;\n case 'quarter': output = monthDiff(this, that) / 3; break;\n case 'second': output = (this - that) / 1e3; break; // 1000\n case 'minute': output = (this - that) / 6e4; break; // 1000 * 60\n case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60\n case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst\n case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default: output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff (a, b) {\n // difference in months\n var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2, adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString () {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true;\n var m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect () {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment';\n var zone = '';\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n var prefix = '[' + func + '(\"]';\n var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';\n var datetime = '-MM-DD[T]HH:mm:ss.SSS';\n var suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format (inputString) {\n if (!inputString) {\n inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow (withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to (time, withoutSuffix) {\n if (this.isValid() &&\n ((isMoment(time) && time.isValid()) ||\n createLocal(time).isValid())) {\n return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow (withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale (key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData () {\n return this._locale;\n }\n\n function startOf (units) {\n units = normalizeUnits(units);\n // the following switch intentionally omits break keywords\n // to utilize falling through the cases.\n switch (units) {\n case 'year':\n this.month(0);\n /* falls through */\n case 'quarter':\n case 'month':\n this.date(1);\n /* falls through */\n case 'week':\n case 'isoWeek':\n case 'day':\n case 'date':\n this.hours(0);\n /* falls through */\n case 'hour':\n this.minutes(0);\n /* falls through */\n case 'minute':\n this.seconds(0);\n /* falls through */\n case 'second':\n this.milliseconds(0);\n }\n\n // weeks are a special case\n if (units === 'week') {\n this.weekday(0);\n }\n if (units === 'isoWeek') {\n this.isoWeekday(1);\n }\n\n // quarters are also special\n if (units === 'quarter') {\n this.month(Math.floor(this.month() / 3) * 3);\n }\n\n return this;\n }\n\n function endOf (units) {\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond') {\n return this;\n }\n\n // 'date' is an alias for 'day', so it should be considered as such.\n if (units === 'date') {\n units = 'day';\n }\n\n return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');\n }\n\n function valueOf () {\n return this._d.valueOf() - ((this._offset || 0) * 60000);\n }\n\n function unix () {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate () {\n return new Date(this.valueOf());\n }\n\n function toArray () {\n var m = this;\n return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];\n }\n\n function toObject () {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds()\n };\n }\n\n function toJSON () {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2 () {\n return isValid(this);\n }\n\n function parsingFlags () {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt () {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict\n };\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken (token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy);\n }\n\n function getSetISOWeekYear (input) {\n return getSetWeekYearHelper.call(this,\n input, this.isoWeek(), this.isoWeekday(), 1, 4);\n }\n\n function getISOWeeksInYear () {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getWeeksInYear () {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter (input) {\n return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict ?\n (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :\n locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear (input) {\n var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;\n return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n // MOMENTS\n\n var getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr () {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName () {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);\n proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);\n proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);\n proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);\n proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);\n\n function createUnix (input) {\n return createLocal(input * 1000);\n }\n\n function createInZone () {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat (string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1 (format, index, field, setter) {\n var locale = getLocale();\n var utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl (format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl (localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0;\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n var i;\n var out = [];\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths (format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort (format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin (localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal : function (number) {\n var b = number % 10,\n output = (toInt(number % 100 / 10) === 1) ? 'th' :\n (b === 1) ? 'st' :\n (b === 2) ? 'nd' :\n (b === 3) ? 'rd' : 'th';\n return number + output;\n }\n });\n\n // Side effect imports\n\n hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);\n hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);\n\n var mathAbs = Math.abs;\n\n function abs () {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1 (duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1 (input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1 (input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil (number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble () {\n var milliseconds = this._milliseconds;\n var days = this._days;\n var months = this._months;\n var data = this._data;\n var seconds, minutes, hours, years, monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0))) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths (days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return days * 4800 / 146097;\n }\n\n function monthsToDays (months) {\n // the reverse of daysToMonths\n return months * 146097 / 4800;\n }\n\n function as (units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days;\n var months;\n var milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n return units === 'month' ? months : months / 12;\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week' : return days / 7 + milliseconds / 6048e5;\n case 'day' : return days + milliseconds / 864e5;\n case 'hour' : return days * 24 + milliseconds / 36e5;\n case 'minute' : return days * 1440 + milliseconds / 6e4;\n case 'second' : return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond': return Math.floor(days * 864e5) + milliseconds;\n default: throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1 () {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs (alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms');\n var asSeconds = makeAs('s');\n var asMinutes = makeAs('m');\n var asHours = makeAs('h');\n var asDays = makeAs('d');\n var asWeeks = makeAs('w');\n var asMonths = makeAs('M');\n var asYears = makeAs('y');\n\n function clone$1 () {\n return createDuration(this);\n }\n\n function get$2 (units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds');\n var seconds = makeGetter('seconds');\n var minutes = makeGetter('minutes');\n var hours = makeGetter('hours');\n var days = makeGetter('days');\n var months = makeGetter('months');\n var years = makeGetter('years');\n\n function weeks () {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round;\n var thresholds = {\n ss: 44, // a few seconds to seconds\n s : 45, // seconds to minute\n m : 45, // minutes to hour\n h : 22, // hours to day\n d : 26, // days to month\n M : 11 // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1 (posNegDuration, withoutSuffix, locale) {\n var duration = createDuration(posNegDuration).abs();\n var seconds = round(duration.as('s'));\n var minutes = round(duration.as('m'));\n var hours = round(duration.as('h'));\n var days = round(duration.as('d'));\n var months = round(duration.as('M'));\n var years = round(duration.as('y'));\n\n var a = seconds <= thresholds.ss && ['s', seconds] ||\n seconds < thresholds.s && ['ss', seconds] ||\n minutes <= 1 && ['m'] ||\n minutes < thresholds.m && ['mm', minutes] ||\n hours <= 1 && ['h'] ||\n hours < thresholds.h && ['hh', hours] ||\n days <= 1 && ['d'] ||\n days < thresholds.d && ['dd', days] ||\n months <= 1 && ['M'] ||\n months < thresholds.M && ['MM', months] ||\n years <= 1 && ['y'] || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding (roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof(roundingFunction) === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold (threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize (withSuffix) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var locale = this.localeData();\n var output = relativeTime$1(this, !withSuffix, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return ((x > 0) - (x < 0)) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000;\n var days = abs$1(this._days);\n var months = abs$1(this._months);\n var minutes, hours, years;\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n var Y = years;\n var M = months;\n var D = days;\n var h = hours;\n var m = minutes;\n var s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n var total = this.asSeconds();\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n var totalSign = total < 0 ? '-' : '';\n var ymSign = sign(this._months) !== sign(total) ? '-' : '';\n var daysSign = sign(this._days) !== sign(total) ? '-' : '';\n var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return totalSign + 'P' +\n (Y ? ymSign + Y + 'Y' : '') +\n (M ? ymSign + M + 'M' : '') +\n (D ? daysSign + D + 'D' : '') +\n ((h || m || s) ? 'T' : '') +\n (h ? hmsSign + h + 'H' : '') +\n (m ? hmsSign + m + 'M' : '') +\n (s ? hmsSign + s + 'S' : '');\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);\n proto$2.lang = lang;\n\n // Side effect imports\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input, 10) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n // Side effect imports\n\n\n hooks.version = '2.22.2';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'YYYY-[W]WW', // \n MONTH: 'YYYY-MM' // \n };\n\n return hooks;\n\n})));\n","!function(root, factory) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = factory(require(\"react\")) : \"function\" == typeof define && define.amd ? define([ \"react\" ], factory) : \"object\" == typeof exports ? exports.MediaQuery = factory(require(\"react\")) : root.MediaQuery = factory(root.react);\n}(\"undefined\" != typeof self ? self : this, function(__WEBPACK_EXTERNAL_MODULE_8__) {\n return function(modules) {\n function __webpack_require__(moduleId) {\n if (installedModules[moduleId]) return installedModules[moduleId].exports;\n var module = installedModules[moduleId] = {\n i: moduleId,\n l: !1,\n exports: {}\n };\n return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), \n module.l = !0, module.exports;\n }\n var installedModules = {};\n return __webpack_require__.m = modules, __webpack_require__.c = installedModules, \n __webpack_require__.d = function(exports, name, getter) {\n __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {\n configurable: !1,\n enumerable: !0,\n get: getter\n });\n }, __webpack_require__.n = function(module) {\n var getter = module && module.__esModule ? function() {\n return module.default;\n } : function() {\n return module;\n };\n return __webpack_require__.d(getter, \"a\", getter), getter;\n }, __webpack_require__.o = function(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n }, __webpack_require__.p = \"\", __webpack_require__(__webpack_require__.s = 7);\n }([ function(module, exports, __webpack_require__) {\n var REACT_ELEMENT_TYPE = \"function\" == typeof Symbol && Symbol.for && Symbol.for(\"react.element\") || 60103, isValidElement = function(object) {\n return \"object\" == typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;\n };\n module.exports = __webpack_require__(9)(isValidElement, !0);\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function makeEmptyFunction(arg) {\n return function() {\n return arg;\n };\n }\n var emptyFunction = function() {};\n emptyFunction.thatReturns = makeEmptyFunction, emptyFunction.thatReturnsFalse = makeEmptyFunction(!1), \n emptyFunction.thatReturnsTrue = makeEmptyFunction(!0), emptyFunction.thatReturnsNull = makeEmptyFunction(null), \n emptyFunction.thatReturnsThis = function() {\n return this;\n }, emptyFunction.thatReturnsArgument = function(arg) {\n return arg;\n }, module.exports = emptyFunction;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function invariant(condition, format, a, b, c, d, e, f) {\n if (validateFormat(format), !condition) {\n var error;\n if (void 0 === format) error = new Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\"); else {\n var args = [ a, b, c, d, e, f ], argIndex = 0;\n error = new Error(format.replace(/%s/g, function() {\n return args[argIndex++];\n })), error.name = \"Invariant Violation\";\n }\n throw error.framesToPop = 1, error;\n }\n }\n var validateFormat = function(format) {};\n validateFormat = function(format) {\n if (void 0 === format) throw new Error(\"invariant requires an error message argument\");\n }, module.exports = invariant;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n var emptyFunction = __webpack_require__(1), warning = emptyFunction, printWarning = function(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) args[_key - 1] = arguments[_key];\n var argIndex = 0, message = \"Warning: \" + format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n \"undefined\" != typeof console && console.error(message);\n try {\n throw new Error(message);\n } catch (x) {}\n };\n warning = function(condition, format) {\n if (void 0 === format) throw new Error(\"`warning(condition, format, ...args)` requires a warning message argument\");\n if (0 !== format.indexOf(\"Failed Composite propType: \") && !condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) args[_key2 - 2] = arguments[_key2];\n printWarning.apply(void 0, [ format ].concat(args));\n }\n }, module.exports = warning;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n module.exports = \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\";\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function hyphenateStyleName(string) {\n return string in cache ? cache[string] : cache[string] = string.replace(uppercasePattern, \"-$&\").toLowerCase().replace(msPattern, \"-ms-\");\n }\n var uppercasePattern = /[A-Z]/g, msPattern = /^ms-/, cache = {};\n module.exports = hyphenateStyleName;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", {\n value: !0\n });\n var _extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n }, _propTypes = __webpack_require__(0), _propTypes2 = function(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }(_propTypes), stringOrNumber = _propTypes2.default.oneOfType([ _propTypes2.default.string, _propTypes2.default.number ]), matchers = {\n orientation: _propTypes2.default.oneOf([ \"portrait\", \"landscape\" ]),\n scan: _propTypes2.default.oneOf([ \"progressive\", \"interlace\" ]),\n aspectRatio: _propTypes2.default.string,\n deviceAspectRatio: _propTypes2.default.string,\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n color: _propTypes2.default.bool,\n colorIndex: _propTypes2.default.bool,\n monochrome: _propTypes2.default.bool,\n resolution: stringOrNumber\n }, features = _extends({\n minAspectRatio: _propTypes2.default.string,\n maxAspectRatio: _propTypes2.default.string,\n minDeviceAspectRatio: _propTypes2.default.string,\n maxDeviceAspectRatio: _propTypes2.default.string,\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n minColor: _propTypes2.default.number,\n maxColor: _propTypes2.default.number,\n minColorIndex: _propTypes2.default.number,\n maxColorIndex: _propTypes2.default.number,\n minMonochrome: _propTypes2.default.number,\n maxMonochrome: _propTypes2.default.number,\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber\n }, matchers), types = {\n all: _propTypes2.default.bool,\n grid: _propTypes2.default.bool,\n aural: _propTypes2.default.bool,\n braille: _propTypes2.default.bool,\n handheld: _propTypes2.default.bool,\n print: _propTypes2.default.bool,\n projection: _propTypes2.default.bool,\n screen: _propTypes2.default.bool,\n tty: _propTypes2.default.bool,\n tv: _propTypes2.default.bool,\n embossed: _propTypes2.default.bool\n }, all = _extends({}, types, features);\n matchers.type = Object.keys(types), exports.default = {\n all: all,\n types: types,\n matchers: matchers,\n features: features\n }, module.exports = exports.default;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n }\n function _possibleConstructorReturn(self, call) {\n if (!self) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return !call || \"object\" != typeof call && \"function\" != typeof call ? self : call;\n }\n function _inherits(subClass, superClass) {\n if (\"function\" != typeof superClass && null !== superClass) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), superClass && (Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass);\n }\n function omit(object, keys) {\n var newObject = _extends({}, object);\n return keys.forEach(function(key) {\n return delete newObject[key];\n }), newObject;\n }\n Object.defineProperty(exports, \"__esModule\", {\n value: !0\n }), exports.toQuery = exports.default = void 0;\n var _createClass = function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || !1, descriptor.configurable = !0, \n \"value\" in descriptor && (descriptor.writable = !0), Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n return function(Constructor, protoProps, staticProps) {\n return protoProps && defineProperties(Constructor.prototype, protoProps), staticProps && defineProperties(Constructor, staticProps), \n Constructor;\n };\n }(), _extends = Object.assign || function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) Object.prototype.hasOwnProperty.call(source, key) && (target[key] = source[key]);\n }\n return target;\n }, _react = __webpack_require__(8), _react2 = _interopRequireDefault(_react), _propTypes = __webpack_require__(0), _propTypes2 = _interopRequireDefault(_propTypes), _matchmediaquery = __webpack_require__(12), _matchmediaquery2 = _interopRequireDefault(_matchmediaquery), _hyphenateStyleName = __webpack_require__(5), _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName), _mediaQuery = __webpack_require__(6), _mediaQuery2 = _interopRequireDefault(_mediaQuery), _toQuery = __webpack_require__(14), _toQuery2 = _interopRequireDefault(_toQuery), defaultTypes = {\n component: _propTypes2.default.node,\n query: _propTypes2.default.string,\n values: _propTypes2.default.shape(_mediaQuery2.default.matchers),\n children: _propTypes2.default.oneOfType([ _propTypes2.default.node, _propTypes2.default.func ]),\n onChange: _propTypes2.default.func,\n onBeforeChange: _propTypes2.default.func\n }, mediaKeys = Object.keys(_mediaQuery2.default.all), excludedQueryKeys = Object.keys(defaultTypes), excludedPropKeys = excludedQueryKeys.concat(mediaKeys), MediaQuery = function(_React$Component) {\n function MediaQuery() {\n var _ref, _temp, _this, _ret;\n _classCallCheck(this, MediaQuery);\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) args[_key] = arguments[_key];\n return _temp = _this = _possibleConstructorReturn(this, (_ref = MediaQuery.__proto__ || Object.getPrototypeOf(MediaQuery)).call.apply(_ref, [ this ].concat(args))), \n _this.state = {\n matches: !1\n }, _this.updateMatches = function() {\n _this._mql.matches !== _this.state.matches && _this.setState({\n matches: _this._mql.matches\n });\n }, _this.removeMql = function() {\n _this._mql && (_this._mql.removeListener(_this.updateMatches), _this._mql.dispose());\n }, _ret = _temp, _possibleConstructorReturn(_this, _ret);\n }\n return _inherits(MediaQuery, _React$Component), _createClass(MediaQuery, [ {\n key: \"componentWillMount\",\n value: function() {\n this.updateQuery(this.props);\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function(nextProps) {\n this.updateQuery(nextProps);\n }\n }, {\n key: \"updateQuery\",\n value: function(props) {\n var values = void 0;\n if (props.query ? this.query = props.query : this.query = (0, _toQuery2.default)(omit(props, excludedQueryKeys)), \n !this.query) throw new Error(\"Invalid or missing MediaQuery!\");\n props.values && (values = Object.keys(props.values).reduce(function(result, key) {\n return result[(0, _hyphenateStyleName2.default)(key)] = props.values[key], result;\n }, {})), this.removeMql(), this._mql = (0, _matchmediaquery2.default)(this.query, values), \n this._mql.addListener(this.updateMatches), this.updateMatches();\n }\n }, {\n key: \"componentWillUpdate\",\n value: function(_, nextState) {\n this.props.onBeforeChange && this.state.matches !== nextState.matches && this.props.onBeforeChange(this.state.matches);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function(_, prevState) {\n this.props.onChange && prevState.matches !== this.state.matches && this.props.onChange(this.state.matches);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function() {\n this.removeMql();\n }\n }, {\n key: \"render\",\n value: function() {\n if (\"function\" == typeof this.props.children) return this.props.children(this.state.matches);\n if (!1 === this.state.matches) return null;\n var props = omit(this.props, excludedPropKeys), hasMergeProps = Object.keys(props).length > 0, childrenCount = _react2.default.Children.count(this.props.children);\n return this.props.component || null == this.props.children || hasMergeProps && childrenCount > 1 ? _react2.default.createElement(this.props.component || \"div\", props, this.props.children) : hasMergeProps ? _react2.default.cloneElement(this.props.children, props) : childrenCount ? this.props.children : null;\n }\n } ]), MediaQuery;\n }(_react2.default.Component);\n MediaQuery.displayName = \"MediaQuery\", MediaQuery.defaultProps = {\n values: {}\n }, exports.default = MediaQuery, exports.toQuery = _toQuery2.default;\n }, function(module, exports) {\n module.exports = __WEBPACK_EXTERNAL_MODULE_8__;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n var emptyFunction = __webpack_require__(1), invariant = __webpack_require__(2), warning = __webpack_require__(3), assign = __webpack_require__(10), ReactPropTypesSecret = __webpack_require__(4), checkPropTypes = __webpack_require__(11);\n module.exports = function(isValidElement, throwOnDirectAccess) {\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (\"function\" == typeof iteratorFn) return iteratorFn;\n }\n function is(x, y) {\n return x === y ? 0 !== x || 1 / x == 1 / y : x !== x && y !== y;\n }\n function PropTypeError(message) {\n this.message = message, this.stack = \"\";\n }\n function createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n if (componentName = componentName || ANONYMOUS, propFullName = propFullName || propName, \n secret !== ReactPropTypesSecret) if (throwOnDirectAccess) invariant(!1, \"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types\"); else if (\"undefined\" != typeof console) {\n var cacheKey = componentName + \":\" + propName;\n !manualPropTypeCallCache[cacheKey] && manualPropTypeWarningCount < 3 && (warning(!1, \"You are manually calling a React.PropTypes validation function for the `%s` prop on `%s`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.\", propFullName, componentName), \n manualPropTypeCallCache[cacheKey] = !0, manualPropTypeWarningCount++);\n }\n return null == props[propName] ? isRequired ? new PropTypeError(null === props[propName] ? \"The \" + location + \" `\" + propFullName + \"` is marked as required in `\" + componentName + \"`, but its value is `null`.\" : \"The \" + location + \" `\" + propFullName + \"` is marked as required in `\" + componentName + \"`, but its value is `undefined`.\") : null : validate(props, propName, componentName, location, propFullName);\n }\n var manualPropTypeCallCache = {}, manualPropTypeWarningCount = 0, chainedCheckType = checkType.bind(null, !1);\n return chainedCheckType.isRequired = checkType.bind(null, !0), chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n if (getPropType(propValue) !== expectedType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPreciseType(propValue) + \"` supplied to `\" + componentName + \"`, expected `\" + expectedType + \"`.\");\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (\"function\" != typeof typeChecker) return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside arrayOf.\");\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPropType(propValue) + \"` supplied to `\" + componentName + \"`, expected an array.\");\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + \"[\" + i + \"]\", ReactPropTypesSecret);\n if (error instanceof Error) return error;\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getClassName(props[propName]) + \"` supplied to `\" + componentName + \"`, expected instance of `\" + expectedClassName + \"`.\");\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n function validate(props, propName, componentName, location, propFullName) {\n for (var propValue = props[propName], i = 0; i < expectedValues.length; i++) if (is(propValue, expectedValues[i])) return null;\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of value `\" + propValue + \"` supplied to `\" + componentName + \"`, expected one of \" + JSON.stringify(expectedValues) + \".\");\n }\n return Array.isArray(expectedValues) ? createChainableTypeChecker(validate) : (warning(!1, \"Invalid argument supplied to oneOf, expected an instance of array.\"), \n emptyFunction.thatReturnsNull);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (\"function\" != typeof typeChecker) return new PropTypeError(\"Property `\" + propFullName + \"` of component `\" + componentName + \"` has invalid PropType notation inside objectOf.\");\n var propValue = props[propName], propType = getPropType(propValue);\n if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected an object.\");\n for (var key in propValue) if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error instanceof Error) return error;\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n if (null == (0, arrayOfTypeCheckers[i])(props, propName, componentName, location, propFullName, ReactPropTypesSecret)) return null;\n }\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to `\" + componentName + \"`.\");\n }\n if (!Array.isArray(arrayOfTypeCheckers)) return warning(!1, \"Invalid argument supplied to oneOfType, expected an instance of array.\"), \n emptyFunction.thatReturnsNull;\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (\"function\" != typeof checker) return warning(!1, \"Invalid argument supplied to oneOfType. Expected an array of check functions, but received %s at index %s.\", getPostfixForTypeWarning(checker), i), \n emptyFunction.thatReturnsNull;\n }\n return createChainableTypeChecker(validate);\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName], propType = getPropType(propValue);\n if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected `object`.\");\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (checker) {\n var error = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error) return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName], propType = getPropType(propValue);\n if (\"object\" !== propType) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` supplied to `\" + componentName + \"`, expected `object`.\");\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` key `\" + key + \"` supplied to `\" + componentName + \"`.\\nBad object: \" + JSON.stringify(props[propName], null, \" \") + \"\\nValid keys: \" + JSON.stringify(Object.keys(shapeTypes), null, \" \"));\n var error = checker(propValue, key, componentName, location, propFullName + \".\" + key, ReactPropTypesSecret);\n if (error) return error;\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode(propValue) {\n switch (typeof propValue) {\n case \"number\":\n case \"string\":\n case \"undefined\":\n return !0;\n\n case \"boolean\":\n return !propValue;\n\n case \"object\":\n if (Array.isArray(propValue)) return propValue.every(isNode);\n if (null === propValue || isValidElement(propValue)) return !0;\n var iteratorFn = getIteratorFn(propValue);\n if (!iteratorFn) return !1;\n var step, iterator = iteratorFn.call(propValue);\n if (iteratorFn !== propValue.entries) {\n for (;!(step = iterator.next()).done; ) if (!isNode(step.value)) return !1;\n } else for (;!(step = iterator.next()).done; ) {\n var entry = step.value;\n if (entry && !isNode(entry[1])) return !1;\n }\n return !0;\n\n default:\n return !1;\n }\n }\n function isSymbol(propType, propValue) {\n return \"symbol\" === propType || (\"Symbol\" === propValue[\"@@toStringTag\"] || \"function\" == typeof Symbol && propValue instanceof Symbol);\n }\n function getPropType(propValue) {\n var propType = typeof propValue;\n return Array.isArray(propValue) ? \"array\" : propValue instanceof RegExp ? \"object\" : isSymbol(propType, propValue) ? \"symbol\" : propType;\n }\n function getPreciseType(propValue) {\n if (void 0 === propValue || null === propValue) return \"\" + propValue;\n var propType = getPropType(propValue);\n if (\"object\" === propType) {\n if (propValue instanceof Date) return \"date\";\n if (propValue instanceof RegExp) return \"regexp\";\n }\n return propType;\n }\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case \"array\":\n case \"object\":\n return \"an \" + type;\n\n case \"boolean\":\n case \"date\":\n case \"regexp\":\n return \"a \" + type;\n\n default:\n return type;\n }\n }\n function getClassName(propValue) {\n return propValue.constructor && propValue.constructor.name ? propValue.constructor.name : ANONYMOUS;\n }\n var ITERATOR_SYMBOL = \"function\" == typeof Symbol && Symbol.iterator, FAUX_ITERATOR_SYMBOL = \"@@iterator\", ANONYMOUS = \"<>\", ReactPropTypes = {\n array: createPrimitiveTypeChecker(\"array\"),\n bool: createPrimitiveTypeChecker(\"boolean\"),\n func: createPrimitiveTypeChecker(\"function\"),\n number: createPrimitiveTypeChecker(\"number\"),\n object: createPrimitiveTypeChecker(\"object\"),\n string: createPrimitiveTypeChecker(\"string\"),\n symbol: createPrimitiveTypeChecker(\"symbol\"),\n any: function() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }(),\n arrayOf: createArrayOfTypeChecker,\n element: function() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n return new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + getPropType(propValue) + \"` supplied to `\" + componentName + \"`, expected a single ReactElement.\");\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }(),\n instanceOf: createInstanceTypeChecker,\n node: function() {\n function validate(props, propName, componentName, location, propFullName) {\n return isNode(props[propName]) ? null : new PropTypeError(\"Invalid \" + location + \" `\" + propFullName + \"` supplied to `\" + componentName + \"`, expected a ReactNode.\");\n }\n return createChainableTypeChecker(validate);\n }(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n return PropTypeError.prototype = Error.prototype, ReactPropTypes.checkPropTypes = checkPropTypes, \n ReactPropTypes.PropTypes = ReactPropTypes, ReactPropTypes;\n };\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function toObject(val) {\n if (null === val || void 0 === val) throw new TypeError(\"Object.assign cannot be called with null or undefined\");\n return Object(val);\n }\n /*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n var getOwnPropertySymbols = Object.getOwnPropertySymbols, hasOwnProperty = Object.prototype.hasOwnProperty, propIsEnumerable = Object.prototype.propertyIsEnumerable;\n module.exports = function() {\n try {\n if (!Object.assign) return !1;\n var test1 = new String(\"abc\");\n if (test1[5] = \"de\", \"5\" === Object.getOwnPropertyNames(test1)[0]) return !1;\n for (var test2 = {}, i = 0; i < 10; i++) test2[\"_\" + String.fromCharCode(i)] = i;\n if (\"0123456789\" !== Object.getOwnPropertyNames(test2).map(function(n) {\n return test2[n];\n }).join(\"\")) return !1;\n var test3 = {};\n return \"abcdefghijklmnopqrst\".split(\"\").forEach(function(letter) {\n test3[letter] = letter;\n }), \"abcdefghijklmnopqrst\" === Object.keys(Object.assign({}, test3)).join(\"\");\n } catch (err) {\n return !1;\n }\n }() ? Object.assign : function(target, source) {\n for (var from, symbols, to = toObject(target), s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) hasOwnProperty.call(from, key) && (to[key] = from[key]);\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) propIsEnumerable.call(from, symbols[i]) && (to[symbols[i]] = from[symbols[i]]);\n }\n }\n return to;\n };\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n for (var typeSpecName in typeSpecs) if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n try {\n invariant(\"function\" == typeof typeSpecs[typeSpecName], \"%s: %s type `%s` is invalid; it must be a function, usually from the `prop-types` package, but received `%s`.\", componentName || \"React class\", location, typeSpecName, typeof typeSpecs[typeSpecName]), \n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (warning(!error || error instanceof Error, \"%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\", componentName || \"React class\", location, typeSpecName, typeof error), \n error instanceof Error && !(error.message in loggedTypeFailures)) {\n loggedTypeFailures[error.message] = !0;\n var stack = getStack ? getStack() : \"\";\n warning(!1, \"Failed %s type: %s%s\", location, error.message, null != stack ? stack : \"\");\n }\n }\n }\n var invariant = __webpack_require__(2), warning = __webpack_require__(3), ReactPropTypesSecret = __webpack_require__(4), loggedTypeFailures = {};\n module.exports = checkPropTypes;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function Mql(query, values) {\n function addListener(listener) {\n mql && mql.addListener(listener);\n }\n function removeListener(listener) {\n mql && mql.removeListener(listener);\n }\n function update(evt) {\n self.matches = evt.matches, self.media = evt.media;\n }\n function dispose() {\n mql && mql.removeListener(update);\n }\n var self = this;\n if (dynamicMatch) {\n var mql = dynamicMatch.call(window, query);\n this.matches = mql.matches, this.media = mql.media, mql.addListener(update);\n } else this.matches = staticMatch(query, values), this.media = query;\n this.addListener = addListener, this.removeListener = removeListener, this.dispose = dispose;\n }\n function matchMedia(query, values) {\n return new Mql(query, values);\n }\n var staticMatch = __webpack_require__(13).match, dynamicMatch = \"undefined\" != typeof window ? window.matchMedia : null;\n module.exports = matchMedia;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function(query) {\n var inverse = query.inverse, typeMatch = \"all\" === query.type || values.type === query.type;\n if (typeMatch && inverse || !typeMatch && !inverse) return !1;\n var expressionsMatch = query.expressions.every(function(expression) {\n var feature = expression.feature, modifier = expression.modifier, expValue = expression.value, value = values[feature];\n if (!value) return !1;\n switch (feature) {\n case \"orientation\":\n case \"scan\":\n return value.toLowerCase() === expValue.toLowerCase();\n\n case \"width\":\n case \"height\":\n case \"device-width\":\n case \"device-height\":\n expValue = toPx(expValue), value = toPx(value);\n break;\n\n case \"resolution\":\n expValue = toDpi(expValue), value = toDpi(value);\n break;\n\n case \"aspect-ratio\":\n case \"device-aspect-ratio\":\n case \"device-pixel-ratio\":\n expValue = toDecimal(expValue), value = toDecimal(value);\n break;\n\n case \"grid\":\n case \"color\":\n case \"color-index\":\n case \"monochrome\":\n expValue = parseInt(expValue, 10) || 1, value = parseInt(value, 10) || 0;\n }\n switch (modifier) {\n case \"min\":\n return value >= expValue;\n\n case \"max\":\n return value <= expValue;\n\n default:\n return value === expValue;\n }\n });\n return expressionsMatch && !inverse || !expressionsMatch && inverse;\n });\n }\n function parseQuery(mediaQuery) {\n return mediaQuery.split(\",\").map(function(query) {\n query = query.trim();\n var captures = query.match(RE_MEDIA_QUERY), modifier = captures[1], type = captures[2], expressions = captures[3] || \"\", parsed = {};\n return parsed.inverse = !!modifier && \"not\" === modifier.toLowerCase(), parsed.type = type ? type.toLowerCase() : \"all\", \n expressions = expressions.match(/\\([^\\)]+\\)/g) || [], parsed.expressions = expressions.map(function(expression) {\n var captures = expression.match(RE_MQ_EXPRESSION), feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n return {\n modifier: feature[1],\n feature: feature[2],\n value: captures[2]\n };\n }), parsed;\n });\n }\n function toDecimal(ratio) {\n var numbers, decimal = Number(ratio);\n return decimal || (numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/), decimal = numbers[1] / numbers[2]), \n decimal;\n }\n function toDpi(resolution) {\n var value = parseFloat(resolution);\n switch (String(resolution).match(RE_RESOLUTION_UNIT)[1]) {\n case \"dpcm\":\n return value / 2.54;\n\n case \"dppx\":\n return 96 * value;\n\n default:\n return value;\n }\n }\n function toPx(length) {\n var value = parseFloat(length);\n switch (String(length).match(RE_LENGTH_UNIT)[1]) {\n case \"em\":\n case \"rem\":\n return 16 * value;\n\n case \"cm\":\n return 96 * value / 2.54;\n\n case \"mm\":\n return 96 * value / 2.54 / 10;\n\n case \"in\":\n return 96 * value;\n\n case \"pt\":\n return 72 * value;\n\n case \"pc\":\n return 72 * value / 12;\n\n default:\n return value;\n }\n }\n exports.match = matchQuery, exports.parse = parseQuery;\n var RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i, RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/, RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/, RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/, RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n }, function(module, exports, __webpack_require__) {\n \"use strict\";\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n function keyVal(k, v) {\n var realKey = (0, _hyphenateStyleName2.default)(k);\n return \"number\" == typeof v && (v += \"px\"), !0 === v ? k : !1 === v ? negate(k) : \"(\" + realKey + \": \" + v + \")\";\n }\n function join(conds) {\n return conds.join(\" and \");\n }\n Object.defineProperty(exports, \"__esModule\", {\n value: !0\n }), exports.default = function(obj) {\n var rules = [];\n return Object.keys(_mediaQuery2.default.all).forEach(function(k) {\n var v = obj[k];\n null != v && rules.push(keyVal(k, v));\n }), join(rules);\n };\n var _hyphenateStyleName = __webpack_require__(5), _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName), _mediaQuery = __webpack_require__(6), _mediaQuery2 = _interopRequireDefault(_mediaQuery), negate = function(cond) {\n return \"not \" + cond;\n };\n module.exports = exports.default;\n } ]);\n});\n//# sourceMappingURL=react-responsive.js.map","/**\r\n * Describes the shape of a single action.\r\n */\r\nexport interface ICalendarStateAction {\r\n type: ActionType;\r\n value?: any;\r\n}\r\n\r\n/**\r\n * Represents all of the actions that a user can perform on the search page. It's a class so that a dev can extend it.\r\n */\r\nexport class ActionType {\r\n static get NextMonth() {\r\n return \"NextMonth\";\r\n }\r\n static get PreviousMonth() {\r\n return \"PreviousMonth\";\r\n }\r\n static get AddDays() {\r\n return \"AddDays\";\r\n }\r\n static get SetMonth() {\r\n return \"SetMonth\";\r\n }\r\n static get GoToMonth() {\r\n return \"GoToMonth\";\r\n }\r\n static get SetDates() {\r\n return \"SetDates\";\r\n }\r\n static get UpdateEventFilter() {\r\n return \"UpdateEventFilter\";\r\n }\r\n static get EventApiError() {\r\n return \"EventApiError\";\r\n }\r\n static get RemoveEventFilter() {\r\n return \"RemoveEventFilter\";\r\n }\r\n static get RemoveAllEventFilters() {\r\n return \"RemoveAllEventFilters\";\r\n }\r\n static get UpdateEvents() {\r\n return \"UpdateEvents\";\r\n }\r\n static get ChangeProductionSeasonFilter() {\r\n return \"ChangeProductionSeasonFilter\";\r\n }\r\n static get BrowserNavigated() {\r\n return \"BrowserNavigated\";\r\n }\r\n static get EventUpdated() {\r\n return \"EventUpdated\";\r\n }\r\n static get RequestEvents() {\r\n return \"RequestEvents\";\r\n }\r\n static get UpdateSettings() {\r\n return \"UpdateSettings\";\r\n }\r\n static get RequestText() {\r\n return \"RequestText\";\r\n }\r\n static get ReceiveText() {\r\n return \"ReceiveText\";\r\n }\r\n static get ErrorApiText() {\r\n return \"ErrorApiText\";\r\n }\r\n static get RequestPromoCodeApply() {\r\n return \"RequstPromoCodeApply\";\r\n }\r\n static get ReceivePromoCodeApply() {\r\n return \"ReceivePromoCodeApply\";\r\n }\r\n static get ErrorPromoCodeApply() {\r\n return \"ErrorPromoCodeApply\";\r\n }\r\n static get RequestPromoCodeRemove() {\r\n return \"RequestPromoCodeRemove\";\r\n }\r\n static get ReceivePromoCodeRemove() {\r\n return \"ReceivePromoCodeRemove\";\r\n }\r\n static get ReceivePromoCodeGet() {\r\n return \"ReceivePromoCodeGet\";\r\n }\r\n static get ErrorPromoCodeRemove() {\r\n return \"ErrorPromoCodeRemove\";\r\n }\r\n static get SetToMobile() {\r\n return \"SetToMobile\";\r\n }\r\n static get SetToDesktop() {\r\n return \"SetToDesktop\";\r\n }\r\n static get SetToGrid() {\r\n return \"SetToGrid\";\r\n }\r\n static get SetToList() {\r\n return \"SetToList\";\r\n }\r\n static get UpdatePromoCode() {\r\n return \"UpdatePromoCode\";\r\n }\r\n static get ShowPromo() {\r\n return \"ShowPromo\";\r\n }\r\n static get WaitForImage() {\r\n return \"WaitForImage\";\r\n }\r\n static get ImageHasLoaded() {\r\n return \"ImageHasLoaded\";\r\n }\r\n}","import * as moment from 'moment';\r\nimport { IPromoCodeDetail } from './promo-code';\r\n\r\nexport enum CalendarDeviceMode {\r\n DESKTOP,\r\n MOBILE\r\n}\r\n\r\nexport enum CalendarViewMode {\r\n GRID,\r\n LIST\r\n}\r\n\r\nexport interface ICalendarSettings {\r\n loadWrappingMonthDates: boolean;\r\n saveHistory: boolean;\r\n monthsOnCalendar: moment.Moment[];\r\n calendarDeviceMode: CalendarDeviceMode;\r\n calendarViewMode: CalendarViewMode;\r\n desktopToMobileTransitionWidth: string;\r\n scrollToTopAppearanceOffset: number;\r\n filtersAlwaysModal: boolean;\r\n promoCode: IPromoCodeDetail;\r\n}\r\n\r\nconst calendarEntry = document.getElementById(\"calendar-entry-js\");\r\n\r\nexport const defaultCalendarSettings: ICalendarSettings = {\r\n loadWrappingMonthDates: false,\r\n saveHistory: false,\r\n monthsOnCalendar: [],\r\n calendarDeviceMode: CalendarDeviceMode.DESKTOP,\r\n calendarViewMode: calendarEntry && calendarEntry.getAttribute(\"default-view\") ? CalendarViewMode.LIST : CalendarViewMode.GRID,\r\n desktopToMobileTransitionWidth: calendarEntry && calendarEntry.getAttribute(\"data-calendar-breakpoint\") ? calendarEntry.getAttribute(\"data-calendar-breakpoint\") : \"48em\",\r\n scrollToTopAppearanceOffset: parseInt(calendarEntry && calendarEntry.getAttribute(\"data-scroll-to-top-offset\") ? calendarEntry.getAttribute(\"data-scroll-to-top-offset\") : \"500\"),\r\n filtersAlwaysModal: true,\r\n promoCode: null\r\n}","/**\r\n * Want to add more text? Go to custom/classes/calendar-text and add new properties there.\r\n */\r\nexport interface ICalendarAppBaseText {\r\n applyPromoCodeButtonText: string;\r\n buyTicketCtaDefaultText: string;\r\n buyTicketCtaUrlFormat: string;\r\n calendarAppHeading: string;\r\n calendarControlsHeading: string;\r\n calendarDoneLoadingLabel: string;\r\n calendarFiltersHeading: string;\r\n calendarKeyword: string;\r\n calendarLoadingLabel: string;\r\n categoryFilterLabelText: string;\r\n categorySelectAllDropdownOption: string;\r\n clearAllButtonText: string;\r\n emptyDayMessaging: string;\r\n emptyMonthMessaging: string;\r\n fallbackThumbnailImageSrc: string;\r\n filterCloseButtonLabel: string;\r\n filterOpenButtonLabel: string\r\n gridViewHeading: string;\r\n gridViewModeButtonText: string;\r\n lastMonthToDisplay: string;\r\n listViewHeading: string;\r\n listViewModeButtonText: string;\r\n loadMoreEventsButtonText: string;\r\n mainBody: string;\r\n monthDropdownDescriptionText: string;\r\n openFiltersButtonText: string;\r\n pluralEventsText: string;\r\n productionFilterLabelText: string;\r\n productionSelectAllDropdownOption: string;\r\n promoCodeDescriptionText: string;\r\n singleEventText: string;\r\n venueFilterLabelText: string;\r\n venueSelectAllDropdownOption: string;\r\n viewDetailDtaDefaultText: string;\r\n\r\n // Not from api but ~about~ api\r\n requesting: boolean;\r\n apiError: any;\r\n}\r\n\r\nexport const defaultBaseText: ICalendarAppBaseText = {\r\n applyPromoCodeButtonText: 'Apply Code',\r\n buyTicketCtaDefaultText: 'Purchase Tickets',\r\n buyTicketCtaUrlFormat: '',\r\n calendarAppHeading: \"Calendar\",\r\n calendarControlsHeading: \"Calendar Controls\",\r\n calendarDoneLoadingLabel: \"Calendar has loaded\",\r\n calendarFiltersHeading: \"Calendar Filters\",\r\n calendarKeyword: '',\r\n calendarLoadingLabel: \"Calendar is loading\",\r\n categoryFilterLabelText: 'Venue Specific Dropdown',\r\n categorySelectAllDropdownOption: 'Series/Genre',\r\n clearAllButtonText: \"Clear All\",\r\n emptyDayMessaging: 'There are no events',\r\n emptyMonthMessaging: 'There are no events',\r\n fallbackThumbnailImageSrc: \"\",\r\n filterCloseButtonLabel: \"Close Filter Dialog\",\r\n filterOpenButtonLabel: \"Open Filter Dialog\",\r\n gridViewHeading: \"Calendar Grid\",\r\n gridViewModeButtonText: 'Grid View',\r\n lastMonthToDisplay: '',\r\n listViewHeading: \"Calendar List\",\r\n listViewModeButtonText: 'List View',\r\n loadMoreEventsButtonText: 'Load More',\r\n mainBody: '',\r\n monthDropdownDescriptionText: \"Select month\",\r\n openFiltersButtonText: \"Filters\",\r\n pluralEventsText: \"events\",\r\n productionFilterLabelText: 'Performances',\r\n productionSelectAllDropdownOption: 'All Productions',\r\n promoCodeDescriptionText: \"Enter promo code\",\r\n singleEventText: \"event\",\r\n venueFilterLabelText: 'Venue',\r\n venueSelectAllDropdownOption: 'All Venues',\r\n viewDetailDtaDefaultText: '',\r\n\r\n requesting: false,\r\n apiError: null,\r\n}","import * as moment from 'moment';\r\n\r\nexport * from './calendar-text';\r\nexport * from './calendar-settings';\r\n\r\nimport { IEvent } from '../custom/classes/event';\r\n\r\nexport interface IOption {\r\n text: string;\r\n value: string;\r\n /**\r\n * This is a DateTime string in ISO format.\r\n */\r\n firstOccurance: string;\r\n}\r\n\r\n/**\r\n * Enum representing each day in the week.\r\n */\r\nexport enum Weekday {\r\n Sunday = 0,\r\n Monday = 1,\r\n Tuesday = 2,\r\n Wednesday = 3,\r\n Thursday = 4,\r\n Friday = 5,\r\n Saturday = 6,\r\n}\r\n\r\nexport interface ICalendarService {\r\n (options: ICalendarOptions): ICalendar;\r\n}\r\n\r\n\r\nexport interface ICalendarOptions {\r\n month: number;\r\n year: number;\r\n weekStart?: number;\r\n days?: Array>;\r\n events?: Array;\r\n weekdayNames?: Array;\r\n}\r\n\r\n\r\nexport interface ICalendar {\r\n days: Array>;\r\n allDays: Array>;\r\n weeks: Array>;\r\n weekdays: Array;\r\n}\r\n\r\nexport interface IDay {\r\n date: Date;\r\n events?: Array;\r\n}\r\n\r\n\r\nexport interface IWeek {\r\n days: Array>\r\n}\r\n\r\nexport interface IMonth {\r\n monthMoment: moment.Moment;\r\n events: ICalendar;\r\n}\r\n\r\n\r\nexport interface IBaseEvent {\r\n id: string;\r\n /**\r\n * The date of the event. This is not a moment object because it's pulled from the API.\r\n * Potential optimization if necessary is to convert to a moment object when data is pulled.\r\n */\r\n eventDate: Date | string;\r\n eventDateString: string;\r\n eventTimeString: string;\r\n name?: string;\r\n location?: string;\r\n thumbnail?: string;\r\n thumbnailAltText?: string;\r\n synopsis?: string;\r\n buyTicketCtaUrl?: string;\r\n buyTicketCtaText?: string;\r\n viewDetailCtaUrl?: string;\r\n viewDetailCtaText?: string;\r\n categories?: string[];\r\n}\r\n\r\n\r\nexport interface IDateRange {\r\n start: Date;\r\n end: Date;\r\n}\r\n\r\n\r\nexport interface ICalendarState {\r\n updating: boolean;\r\n specificDates: boolean;\r\n extendEvents: boolean;\r\n startDate: moment.Moment;\r\n endDate: moment.Moment;\r\n currentDate: moment.Moment;\r\n eventFilter: IEventFilter[];\r\n filterFunction: (event: IEvent) => boolean;\r\n productionSeasonFilter: number;\r\n events: IMonth[];\r\n apiError: any;\r\n}\r\n\r\nexport const defaultCalendarModel: ICalendarState = {\r\n updating: false,\r\n specificDates: false,\r\n extendEvents: false,\r\n startDate: moment(moment().startOf('month')),\r\n endDate: moment(moment().endOf('month')),\r\n currentDate: moment().clone(),\r\n eventFilter: [],\r\n productionSeasonFilter: 0,\r\n filterFunction: () => { return true; },\r\n events: [{\r\n monthMoment: moment(),\r\n events: {\r\n allDays: [],\r\n days: [],\r\n weekdays: [],\r\n weeks: []\r\n }\r\n }],\r\n apiError: null\r\n};\r\n\r\n//export interface IProductionSeasonFilter {\r\n// productionSeasonId: number;\r\n// productionName: string;\r\n//}\r\n\r\nexport interface IEventFilter {\r\n key: string;\r\n selectedValue: any;\r\n filter: (event: IEvent) => boolean;\r\n}\r\n","export interface ILazyLoadState {\r\n imageHasLoaded: { [key: string]: boolean };\r\n}\r\n\r\nexport const defaultLazyLoadState: ILazyLoadState = {\r\n imageHasLoaded: {}\r\n};","export interface IPromoCodeState {\r\n /**\r\n * Set to true if the app is waiting for a response from the promo-code API.\r\n */\r\n promoCodeRequesting: boolean;\r\n /**\r\n * The promo code that is currently being entered.\r\n */\r\n promoCodeString: string;\r\n /**\r\n * The promo code that has been applied.\r\n */\r\n appliedPromoCode: string;\r\n /**\r\n * The response from the last time the promo code API was called.\r\n */\r\n promoApiResponse: any;\r\n /**\r\n * The current state of the promo code.\r\n */\r\n promoCodeState: PromoCodeState;\r\n /**\r\n * If the API responds with an error.\r\n */\r\n promoCodeError: any;\r\n\r\n showPromo: boolean;\r\n showPromoResult: boolean;\r\n}\r\n\r\n\r\nexport enum PromoCodeState {\r\n APPLIED,\r\n FAILURE,\r\n ATTEMPT\r\n}\r\n\r\nexport interface IPromoCodeDetail {\r\n promoCode: string;\r\n text1: string;\r\n text2: string;\r\n text3: string;\r\n text4: string;\r\n text5: string;\r\n text6: string;\r\n}\r\n\r\nexport const defaultPromoCodeDetail: IPromoCodeDetail ={\r\n promoCode: \"\",\r\n text1: \"\",\r\n text2: \"\",\r\n text3: \"\",\r\n text4: \"\",\r\n text5: \"\",\r\n text6: \"\",\r\n}\r\n\r\nexport const defaultPromoCodeState: IPromoCodeState = {\r\n appliedPromoCode: \"\",\r\n promoCodeRequesting: false,\r\n promoCodeState: PromoCodeState.ATTEMPT,\r\n promoApiResponse: null,\r\n promoCodeError: null,\r\n promoCodeString: \"\",\r\n showPromo: false,\r\n showPromoResult: false\r\n};","import axios from 'axios';\r\nimport * as moment from 'moment';\r\nimport { memoize } from 'lodash';\r\n\r\nimport { ICalendarAppText } from '../custom/classes/calendar-text';\r\nimport { ICalendarState, ICalendarSettings, IOption } from '../classes/calendar';\r\nimport { IEvent } from '../custom/classes/event';\r\nimport { IPromoCodeDetail } from '../classes/promo-code';\r\nimport { ICalendarFilterRequest } from '../classes/calendar-requests';\r\n\r\nexport default class CalendarApi {\r\n private static apiDateFormat = \"YYYY-MM-DD\";\r\n private static toTheSecondApiDateFormat = \"YYYY-MM-DDTHH:mm:ss\";\r\n private static aceCalendarAPIRoute = process.env.CAL_API_ROUTE;\r\n\r\n private static eventsCache = memoize(CalendarApi.getEventsWrapper, (state: ICalendarState, settings: ICalendarSettings) => `${state.startDate.format('YYYY-MM-DD')}~${state.endDate.format('YYYY-MM-DD')}~${state.productionSeasonFilter.toString()}`);\r\n private static textCache = memoize(CalendarApi.getTextFromApi, (pageId: number, culture: string) => `${pageId}${culture}`);\r\n private static filtersCache = memoize(CalendarApi.getFiltersApi, (filter: string, culture: string) => `${filter}${culture}`);\r\n\r\n private static filtersSource = axios.CancelToken.source();\r\n\r\n private static getFiltersApi(filter: string, endDate: string, culture: string): Promise {\r\n const startDate = moment().startOf(\"month\").format(this.apiDateFormat);\r\n\r\n var requestString: string = '/';\r\n\r\n if (culture.length > 0) {\r\n requestString += culture + '/';\r\n }\r\n\r\n requestString = `${requestString}${this.aceCalendarAPIRoute}${process.env.CAL_FILTER_ROUTE}?name=${filter}&start=${startDate}&end=${endDate}`;\r\n\r\n return axios.get(requestString, {\r\n withCredentials: true,\r\n cancelToken: this.filtersSource.token\r\n }).then(response => response.data);\r\n }\r\n\r\n /**\r\n * Call the API to receive a more specific set of filters.\r\n * @param filter\r\n * @param culture\r\n */\r\n public static getFiltersFor(filter: string, endDate: moment.Moment, culture = \"\"): Promise {\r\n const endDateFormatted = endDate.format(this.apiDateFormat);\r\n\r\n return this.getFiltersApi(filter, endDateFormatted, culture);\r\n\r\n // This is the memoized variant. Since the request is cancelable, memoize would need to be tweaked to be properly utilized.\r\n //return this.filtersCache(filter, culture);\r\n }\r\n\r\n private static getFirstOccurenceForFilterApi(currentFilters: Map, endDate: string, culture: string): Promise {\r\n const startDate = moment().startOf(\"month\").format(this.apiDateFormat);\r\n\r\n var requestString: string = '/';\r\n\r\n if (culture.length > 0) {\r\n requestString += culture + '/';\r\n }\r\n\r\n requestString = `${requestString}${this.aceCalendarAPIRoute}${process.env.CAL_FIRST_OCCURRENCE_ROUTE}`;\r\n\r\n //var calendarFilters = [];\r\n //(Array.from(currentFilters)).forEach((val, key) => {\r\n // calendarFilters.push({ filterName: key, filterValue: val });\r\n //});\r\n\r\n const calendarFilters = (Object as any).entries(currentFilters)\r\n .map(arr => { return { filterName: arr[0], filterValue: arr[1] } })\r\n\r\n const filterRequest: ICalendarFilterRequest = {\r\n startDate: startDate,\r\n endDate: endDate,\r\n calendarFilters: calendarFilters\r\n\r\n }\r\n return axios.post(requestString,\r\n filterRequest,\r\n {\r\n method: \"POST\",\r\n withCredentials: true,\r\n cancelToken: this.filtersSource.token\r\n }\r\n ).then(response => response.data);\r\n }\r\n\r\n /**\r\n * Call the API to receive a more specific set of filters.\r\n * @param filter\r\n * @param culture\r\n */\r\n public static getFirstOccurenceForFilters(filters: Map, endDate: moment.Moment, culture = \"\"): Promise {\r\n const endDateFormatted = endDate.format(this.apiDateFormat);\r\n\r\n return this.getFirstOccurenceForFilterApi(filters, endDateFormatted, culture);\r\n\r\n // This is the memoized variant. Since the request is cancelable, memoize would need to be tweaked to be properly utilized.\r\n //return this.filtersCache(filter, culture);\r\n }\r\n\r\n /**\r\n * Invoke this to cancel all outstanding requests to retrieve filters.\r\n * @param reason\r\n */\r\n public static cancelFiltersRequest(reason = \"Filters API request manually canceled.\") {\r\n this.filtersSource.cancel(reason);\r\n }\r\n\r\n /**\r\n * Wrapper function to automatically determine which API call to make.\r\n * @param state The calendar state.\r\n * @param settings The settings of the current calendar.\r\n */\r\n private static getEventsWrapper(state: ICalendarState, settings: ICalendarSettings) {\r\n const startDate = settings.loadWrappingMonthDates ? state.startDate.startOf(\"week\").format(this.apiDateFormat) : state.startDate.format(this.apiDateFormat);\r\n const endDate = settings.loadWrappingMonthDates ? state.endDate.startOf(\"week\").format(this.apiDateFormat) : state.endDate.format(this.toTheSecondApiDateFormat);\r\n\r\n if (state.productionSeasonFilter > 0) {\r\n return this.getProductionEventsForDates(\"\", state.productionSeasonFilter, startDate, endDate);\r\n } else {\r\n return this.getEventsForDates(\"\", startDate, endDate);\r\n }\r\n }\r\n\r\n /**\r\n * When grabbing all events between two dates from the API.\r\n * @param culture\r\n * @param startDate\r\n * @param endDate\r\n */\r\n private static getEventsForDates(culture: string, startDate: string, endDate: string): Promise {\r\n var requestString: string = '/';\r\n\r\n if (culture.length > 0) {\r\n requestString += culture + '/';\r\n }\r\n\r\n console.log(this.aceCalendarAPIRoute);\r\n requestString = requestString + this.aceCalendarAPIRoute + process.env.CAL_ACTION_INDEX + \"?startDate=\" + startDate + \"&endDate=\" + endDate;\r\n\r\n return axios.get(requestString, {\r\n withCredentials: true\r\n }).then(response => response.data);\r\n }\r\n\r\n /**\r\n * When grabbing events for a specific production ID. This doesn't seem to be used as frequently anymore.\r\n * @param culture\r\n * @param productionSeasonId\r\n * @param startDate\r\n * @param endDate\r\n */\r\n private static getProductionEventsForDates(culture: string, productionSeasonId: number, startDate: string, endDate: string): Promise {\r\n var requestString: string = '/';\r\n\r\n if (culture.length > 0)\r\n requestString += culture + '/';\r\n requestString = requestString + this.aceCalendarAPIRoute + \"/\" + productionSeasonId.toString() + \"/\" + \"?startDate=\" + startDate + \"&endDate=\" + endDate;\r\n\r\n return axios.get(requestString, {\r\n withCredentials: true\r\n }).then(response => response.data);\r\n }\r\n\r\n /**\r\n * Call this to clear the memoized events and start fresh.\r\n */\r\n public static clearEventsCache(): void {\r\n return this.eventsCache.cache.clear();\r\n }\r\n\r\n /**\r\n * The public facing API to retrieve events. Set bustCache to true if you wish to override cached values.\r\n * @param state The calendar's current state.\r\n * @param settings The settings utilized by the calendar.\r\n * @param bustCache Defaults to false, Set to true to force an API call.\r\n */\r\n public static getEvents(state: ICalendarState, settings: ICalendarSettings, bustCache = false): Promise {\r\n if (bustCache) {\r\n this.eventsCache.cache.set(`${state.startDate.format('YYYY-MM-DD')}~${state.endDate.format('YYYY-MM-DD')}~${state.productionSeasonFilter.toString()}`, this.getEventsWrapper(state, settings));\r\n }\r\n\r\n return this.eventsCache(state, settings);\r\n }\r\n\r\n /**\r\n * Grab text data from the API.\r\n * @param pageId\r\n * @param culture\r\n */\r\n private static getTextFromApi(pageId: number, culture: string): Promise {\r\n var requestString: string = '/';\r\n\r\n if (culture.length > 0)\r\n requestString += culture + '/';\r\n requestString = `${requestString}${this.aceCalendarAPIRoute}/text?culture=${culture}&pageId=${pageId}`;\r\n\r\n return axios.get(requestString, {\r\n withCredentials: true,\r\n }).then(response => response.data);\r\n }\r\n\r\n /**\r\n * Public facing API to obtain the text for a relevant culture on the current page.\r\n * @param culture\r\n */\r\n public static getText(culture: string, bustCache = false): Promise {\r\n if (!pageId) {\r\n var pageId = 0;\r\n }\r\n\r\n if (bustCache) {\r\n this.clearTextCache();\r\n }\r\n\r\n return this.textCache(pageId, culture);\r\n }\r\n\r\n /**\r\n * Clear the cache containing the text API information.\r\n */\r\n public static clearTextCache() {\r\n this.textCache.cache.clear();\r\n }\r\n\r\n /**\r\n * Makes a POST request to apply a promo code.\r\n * @param promoCode\r\n */\r\n public static applyPromoCode(promoCode: string): Promise {\r\n var requestString = `/${this.aceCalendarAPIRoute}/ApplyPromoCode`\r\n return axios.post(requestString,\r\n {\r\n promoCode\r\n },\r\n {\r\n method: \"POST\"\r\n }\r\n ).then(response => response.data);\r\n }\r\n\r\n public static removePromoCode(): Promise {\r\n var requestString = `/${this.aceCalendarAPIRoute}/RemovePromoCode`\r\n return axios.post(requestString, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=utf-8\"\r\n }\r\n }).then(response => response.data);\r\n }\r\n\r\n public static getPromoCode(): Promise {\r\n var requestString = `/${this.aceCalendarAPIRoute}/GetPromoCode`\r\n return axios.post(requestString, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=utf-8\"\r\n }\r\n }).then(response => response.data as IPromoCodeDetail);\r\n }\r\n}\r\n","import * as moment from 'moment';\r\nimport { groupBy } from 'lodash';\r\nimport { ICalendarOptions, ICalendar, IDay, IWeek, IDateRange, Weekday } from '../classes/calendar';\r\nimport { IEvent } from '../custom/classes/event';\r\n\r\n/**\r\n * Returns an instance of ICalendar\r\n */\r\nexport function create(options: ICalendarOptions): ICalendar {\r\n const days = calendarDays(options);\r\n const allDays = eventDays(options);\r\n return {\r\n days,\r\n allDays,\r\n weeks: weeks(days),\r\n weekdays: weekdays(options)\r\n };\r\n}\r\n\r\n/**\r\n * Fixes behavior where negatiave dividends do not\r\n * \"wrap back around\". For example, we want the following\r\n * behavior: -3 % 7 = 4.\r\n */\r\nexport function mod(dividend: number, divisor: number): number {\r\n return ((dividend % divisor) + divisor) % divisor;\r\n}\r\n\r\n\r\n/**\r\n * Returns an array of Dates for the given calendar month. Accepts\r\n * year, month, and an optional weekStart option.\r\n */\r\nexport function calendarDays(options: ICalendarOptions): Array> {\r\n let range = calendarDateRange(options);\r\n let days = interpolateDays(range).map((d) => { return { date: d } });\r\n\r\n if (options.events) {\r\n return addEvents(days, options.events);\r\n }\r\n\r\n return days;\r\n}\r\n\r\n/**\r\n * Returns an array of Dates for the given calendar month. Accepts\r\n * year, month, and an optional weekStart option.\r\n */\r\nexport function eventDays(options: ICalendarOptions): Array> {\r\n if (options.events.length > 0) {\r\n let range = { start: moment(options.events[0].eventDate).toDate(), end: moment(options.events[options.events.length - 1].eventDate).toDate() };\r\n let days = interpolateDays(range).map((d) => { return { date: d } });\r\n\r\n if (options.events) {\r\n return addEvents(days, options.events);\r\n }\r\n return days;\r\n } else {\r\n return [];\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Converts an Array of days to an Array of weeks.\r\n */\r\nexport function weeks(days: Array>): Array> {\r\n return days.reduce(function (weeks, day, idx) {\r\n let weekIdx = Math.floor(idx / 7);\r\n if (!weeks[weekIdx]) weeks.push([]);\r\n\r\n weeks[weekIdx].push(day);\r\n return weeks;\r\n }, []);\r\n}\r\n\r\n\r\n/**\r\n * Returns start and end dates for the given calendar month. Accepts\r\n * year, month, and an optional weekStart option.\r\n */\r\nexport function calendarDateRange({ year, month, weekStart }: ICalendarOptions): IDateRange {\r\n // Default weekStart to Sunday\r\n if (typeof weekStart !== 'number' || isNaN(weekStart)) {\r\n weekStart = Weekday.Sunday;\r\n }\r\n\r\n if (weekStart > 6 || weekStart < 0) {\r\n throw new Error('weekStart must be an integer in the range [0, 6]');\r\n }\r\n\r\n let monthStart = moment([year, month, 1]);\r\n let start = monthStart.clone();\r\n\r\n // Subtract start offset if necessary; this will occur\r\n // if the first day of the month does not coincide with\r\n // the first day of the week.\r\n let startOffset = mod(start.day() - weekStart, 7);\r\n\r\n if (startOffset != 0) {\r\n start.subtract(startOffset, 'days');\r\n }\r\n\r\n // Add an end offset if necessary; this will occur\r\n // if the last day of the month does not coincide with\r\n // the last day of the week.\r\n let end = monthStart.endOf('month');\r\n let endIndex = mod(end.day() - weekStart, 7);\r\n let endOffset = 6 - endIndex;\r\n\r\n if (endOffset != 0) {\r\n end.add(endOffset, 'days');\r\n }\r\n\r\n return { start: start.toDate(), end: end.toDate() };\r\n}\r\n\r\n\r\n/**\r\n * Returns an array of Dates in the inclusive range [start, end].\r\n */\r\nexport function interpolateDays(range: IDateRange): Array {\r\n let dates = [];\r\n let current = moment(range.start).startOf('day');\r\n let end = moment(range.end).startOf('day');\r\n\r\n if (end < current) {\r\n return [];\r\n }\r\n\r\n while (current <= end) {\r\n dates.push(current.clone().toDate());\r\n current.add(1, 'days');\r\n }\r\n\r\n return dates;\r\n}\r\n\r\n\r\n/**\r\n * Adds events to each day. The events and days options are required.\r\n */\r\nexport function addEvents(days: Array>, events: Array): Array> {\r\n const groupedEvents = groupBy(events, e => moment(e.eventDate).startOf('day').format('YYYYMMDD'));\r\n\r\n return days.map(d => {\r\n const date = moment(d.date).startOf('day').format('YYYYMMDD');\r\n const events = groupedEvents[date];\r\n\r\n d.events = events ? events : [];\r\n return d;\r\n })\r\n}\r\n\r\n\r\n/**\r\n * Returns a function that evaluates if an event's date\r\n * is the same as the supplied day.\r\n */\r\nexport function isSameDay(day: IDay) {\r\n return function (event: T): boolean {\r\n return moment(event.eventDate).isSame(moment(day.date), 'day');\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Returns a list of weekdays with the appropriate weekday start\r\n * day listed first. Used to support week formats that have a\r\n * start day other than Sunday.\r\n */\r\nexport function weekdays({ weekdayNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"], weekStart = Weekday.Sunday }): Array {\r\n if (weekStart > 6 || weekStart < 0) {\r\n throw new Error('weekStart must be an integer in the range [0, 6]');\r\n }\r\n\r\n // Simplified since these won't change.\r\n let weekdayIndices = [0, 1, 2, 3, 4, 5, 6];\r\n\r\n let firstHalf = weekdayIndices.slice(weekStart);\r\n let secondHalf = weekdayIndices.slice(0, weekStart);\r\n\r\n return firstHalf.concat(secondHalf).map(i => weekdayNames[i]);\r\n}\r\n","import * as React from 'react';\r\nimport AppView from '../views/library/app.view';\r\nimport Responsive from './responsive';\r\nimport { CalendarDeviceMode } from '../classes/calendar';\r\nimport { ICalendarAppText } from '../custom/classes/calendar-text';\r\n\r\nimport { ICalendarAppState } from '../redux-state';\r\nimport { connect } from 'react-redux';\r\n\r\ninterface AppExternalProps {\r\n\r\n}\r\n\r\ninterface StateToProps {\r\n calendarDeviceMode: CalendarDeviceMode;\r\n text: ICalendarAppText;\r\n activeFilterCount: number\r\n}\r\n\r\nexport type AppProps = AppExternalProps & StateToProps;\r\n\r\nexport class AppComponent extends React.Component {\r\n constructor(props: AppProps) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: AppExternalProps): StateToProps {\r\n return {\r\n calendarDeviceMode: state.calendarSettings.calendarDeviceMode,\r\n text: state.calendarText,\r\n activeFilterCount: state.calendar.eventFilter.length\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(AppComponent);\r\n","import * as React from 'react';\r\nimport * as moment from 'moment';\r\n\r\nimport { IEvent } from '../custom/classes/event';\r\nimport { ICalendarState, IMonth, CalendarViewMode, CalendarDeviceMode } from '../classes/calendar';\r\nimport { connect } from 'react-redux';\r\n\r\nimport CalendarContainerView from 'calendar-container.view';\r\nimport { ICalendarAppState } from '../redux-state';\r\n\r\ninterface ICalendarContainerExternalProps {\r\n\r\n}\r\n\r\ninterface StateToProps {\r\n calendarViewMode: CalendarViewMode;\r\n calendarDeviceMode: CalendarDeviceMode;\r\n isLoading: boolean;\r\n}\r\n\r\nexport type CalendarContainerProps = ICalendarContainerExternalProps & StateToProps;\r\n\r\nexport class CalendarContainerBase extends React.Component {\r\n\r\n componentDidUpdate(prevProps: CalendarContainerProps) {\r\n const superParent = document.documentElement;\r\n\r\n if (this.props.isLoading) {\r\n // attribute removal happens in the views of the components that trigger loading states.\r\n // removal should happen after all other callback functionality.\r\n superParent.setAttribute(\"data-calendar-loading\", \"true\");\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: ICalendarContainerExternalProps): StateToProps {\r\n return {\r\n calendarViewMode: state.calendarSettings.calendarViewMode,\r\n calendarDeviceMode: state.calendarSettings.calendarDeviceMode,\r\n isLoading: state.calendar.updating\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(CalendarContainerBase);","import * as React from 'react';\r\nimport * as moment from 'moment';\r\n\r\nimport { IEvent } from '../custom/classes/event';\r\nimport { ICalendarState, IMonth, CalendarViewMode, CalendarDeviceMode } from '../classes/calendar';\r\nimport { ICalendarAppText } from '../custom/classes/calendar-text';\r\n\r\nimport { connect } from 'react-redux';\r\n\r\nimport { ICalendarAppState } from '../redux-state';\r\n\r\nimport CalendarViewToggleView from 'calendar-view-toggle.view';\r\nimport { setToGrid, setToList } from '../redux-state/actions/calendar-settings.actions';\r\nimport { scrollToMonth } from '../../calendar/helpers/scroll-to-month';\r\n\r\ninterface ICalendarViewTogglePropsExternalProps {\r\n\r\n}\r\n\r\ninterface StateToProps {\r\n text: ICalendarAppText\r\n calendarMode: CalendarViewMode;\r\n calendarDeviceMode: CalendarDeviceMode;\r\n currentDate: moment.Moment;\r\n startMonth: moment.Moment;\r\n}\r\n\r\ninterface DispatchToProps {\r\n setToGrid: (currentDate?: moment.Moment, startDate?: moment.Moment) => void;\r\n setToList: (currentDate?: moment.Moment, startDate?: moment.Moment) => void;\r\n}\r\n\r\nexport type CalendarViewToggleProps = ICalendarViewTogglePropsExternalProps & StateToProps & DispatchToProps;\r\n\r\nexport class CalendarViewToggleBase extends React.Component {\r\n render() {\r\n return (\r\n <>\r\n {\r\n this.props.calendarDeviceMode === CalendarDeviceMode.DESKTOP ? : null\r\n }\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: ICalendarViewTogglePropsExternalProps): StateToProps {\r\n return {\r\n text: state.calendarText,\r\n calendarMode: state.calendarSettings.calendarViewMode,\r\n calendarDeviceMode: state.calendarSettings.calendarDeviceMode,\r\n currentDate: state.calendar.currentDate,\r\n startMonth: state.calendar.startDate\r\n }\r\n}\r\n\r\nfunction jumpToMonth(currentDate: moment.Moment, startDate: moment.Moment) {\r\n // Don't scroll if loaded month and the start month of Calendar are same\r\n if (currentDate.month() != startDate.month()) {\r\n let updateMonth = window.setInterval(() => {\r\n if (scrollToMonth(currentDate))\r\n window.clearInterval(updateMonth);\r\n }, 500);\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch): DispatchToProps {\r\n return {\r\n setToGrid: (currentDate?: moment.Moment, startDate?: moment.Moment) => {\r\n dispatch(setToGrid())\r\n if (currentDate != undefined)\r\n jumpToMonth(currentDate, startDate)\r\n },\r\n setToList: (currentDate?: moment.Moment, startDate?: moment.Moment) => {\r\n dispatch(setToList())\r\n if (currentDate != undefined)\r\n jumpToMonth(currentDate, startDate)\r\n }\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(CalendarViewToggleBase);","import * as React from 'react';\r\n\r\nimport ClearAllView from 'filter-clear-all.view';\r\nimport { removeAllEventFilters } from '../../redux-state/actions/calendar.actions';\r\nimport { ICalendarAppState } from '../../redux-state';\r\nimport { connect } from 'react-redux';\r\nimport { ICalendarAppText } from '../../custom/classes/calendar-text';\r\n\r\n\r\ninterface IFilterExternalProps {\r\n}\r\n\r\ninterface StateToProps {\r\n text: ICalendarAppText;\r\n}\r\n\r\ninterface DispatchToProps {\r\n removeAllFilters: () => void;\r\n}\r\n\r\nexport type ClearAllProps = IFilterExternalProps & StateToProps & DispatchToProps;\r\n\r\nexport class ClearAllBase extends React.Component {\r\n render() {\r\n return ;\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: IFilterExternalProps): StateToProps {\r\n return {\r\n text: state.calendarText\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch): DispatchToProps {\r\n return {\r\n removeAllFilters: () => dispatch(removeAllEventFilters())\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ClearAllBase);","import * as React from 'react';\r\n\r\nimport FiltersContainerView from 'filters-container.view';\r\nimport { CalendarDeviceMode, ICalendarSettings} from '../../classes/calendar';\r\nimport { ICalendarAppText } from '../../custom/classes/calendar-text';\r\n\r\nimport { ICalendarAppState } from '../../redux-state';\r\nimport { connect } from 'react-redux';\r\nimport { findDOMNode } from 'react-dom';\r\n\r\nimport A11yDialog = require('a11y-dialog');\r\n\r\ninterface StateToProps {\r\n text: ICalendarAppText;\r\n deviceMode: CalendarDeviceMode;\r\n filtersAlwaysModal: boolean;\r\n}\r\n\r\ninterface ModalControlMethods {\r\n showModal: () => void;\r\n hideModal: () => void;\r\n}\r\n\r\nexport type FiltersContainerProps = StateToProps;\r\nexport type FiltersContainerViewProps = FiltersContainerProps & ModalControlMethods;\r\n\r\nexport class FiltersContainerBase extends React.Component implements ModalControlMethods {\r\n private dialog;\r\n\r\n constructor(props: FiltersContainerProps) {\r\n super(props);\r\n }\r\n\r\n initializeModal() {\r\n\r\n if (this.dialog) {\r\n this.dialog.create();\r\n } else {\r\n const element = findDOMNode(this);\r\n this.dialog = new A11yDialog(element);\r\n }\r\n }\r\n\r\n destroyModal() {\r\n if (this.dialog) {\r\n // Hide the dialog, then unbind all listeners and finally set to null.\r\n this.dialog.destroy();\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.deviceMode === CalendarDeviceMode.MOBILE || this.props.filtersAlwaysModal) {\r\n this.initializeModal();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: FiltersContainerProps) {\r\n if (!this.props.filtersAlwaysModal) {\r\n switch (this.props.deviceMode) {\r\n case CalendarDeviceMode.MOBILE: {\r\n this.initializeModal();\r\n break;\r\n }\r\n default: {\r\n this.destroyModal();\r\n }\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.destroyModal();\r\n }\r\n\r\n showModal() {\r\n if (this.dialog) {\r\n this.dialog.show();\r\n }\r\n }\r\n\r\n hideModal() {\r\n if (this.dialog) {\r\n this.dialog.hide();\r\n }\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState): StateToProps {\r\n return {\r\n text: state.calendarText,\r\n deviceMode: state.calendarSettings.calendarDeviceMode,\r\n filtersAlwaysModal: state.calendarSettings.filtersAlwaysModal\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(FiltersContainerBase);","import * as React from 'react';\r\nimport * as moment from 'moment';\r\nimport { uniq } from 'lodash';\r\n\r\nimport FilterView from 'filter.view';\r\nimport { IEventFilter, IDay, IOption, IMonth } from '../../classes/calendar';\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport { upsertEventFilter, removeEventFilter, goToMonth } from '../../redux-state/actions/calendar.actions';\r\nimport { ICalendarAppState } from '../../redux-state';\r\nimport CalendarApi from '../../common/calendar-api';\r\nimport { connect } from 'react-redux';\r\nimport { generateEventFilter, GetFilterFromQuery } from '../../helpers/filter-by-query'\r\nimport { scrollToMonth, removeLoader, getMonthElement } from '../../helpers/scroll-to-month';\r\n\r\ninterface IFilterExternalProps {\r\n /**\r\n * The property to filter the calendar events by.\r\n */\r\n propertyToFilter: keyof IEvent;\r\n /**\r\n * Text to represent the option for no selection. ie All Venues, All Production\r\n */\r\n noSelectionText: string;\r\n /**\r\n * Name of the filter to be labeled on the app\r\n */\r\n filterName: string;\r\n}\r\n\r\ninterface StateToProps {\r\n hasFilters: boolean;\r\n eventMonths: IMonth[];\r\n selectedValue: string;\r\n /**\r\n * The furthermost month that has been loaded onto the calendar.\r\n */\r\n lastLoadedMonth: moment.Moment;\r\n /**\r\n * The last month that can be loaded onto the calendar.\r\n */\r\n lastMonthToLoad: moment.Moment;\r\n currentFilters: Map;\r\n}\r\n\r\ninterface DispatchToProps {\r\n selectFilter: (selectedValue: string, shouldUpdateQuery: boolean) => void;\r\n goToMonth: (date: moment.Moment) => void;\r\n getFirstOccurenceDateForFilters: (filters: any, lastMonthToLoad: moment.Moment, lastLoadedMonth: moment.Moment) => void;\r\n}\r\n\r\nexport type FilterProps = IFilterExternalProps & StateToProps & DispatchToProps;\r\n\r\ninterface FilterState {\r\n fromApi: boolean;\r\n waitingForApi: boolean;\r\n options: IOption[];\r\n}\r\n\r\nexport type CombinedFilterViewProps = FilterProps & FilterState;\r\n\r\nexport class FiltersBase extends React.Component {\r\n constructor(props: FilterProps) {\r\n super(props);\r\n\r\n this.state = {\r\n fromApi: false,\r\n waitingForApi: true,\r\n options: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n CalendarApi.getFiltersFor(this.props.propertyToFilter, this.props.lastMonthToLoad).then(response => {\r\n this.setState({\r\n fromApi: true,\r\n waitingForApi: false,\r\n options: response\r\n });\r\n\r\n if (window.location.search.length > 1) {\r\n GetFilterFromQuery(window.location.search, response, this.props.propertyToFilter,\r\n this.props.lastLoadedMonth, this.props.selectFilter, this.props.goToMonth);\r\n }\r\n }).catch(err => {\r\n console.error(err);\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps: FilterProps, prevState: FilterState) {\r\n if (!this.state.fromApi && !this.state.waitingForApi && !prevProps.lastLoadedMonth.isSame(this.props.lastLoadedMonth)) {\r\n this.setState({\r\n options: this.calculateOptions(this.props)\r\n });\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n CalendarApi.cancelFiltersRequest();\r\n }\r\n\r\n private calculateOptions(props: FilterProps): IOption[] {\r\n // flatten events twice because month -> day -> events\r\n const events = ([] as IEvent[]).concat(...props.eventMonths.map(month => ([] as IEvent[]).concat(...month.events.allDays.map(day => day.events))));\r\n\r\n if (events.length > 0) {\r\n if (Array.isArray(events[0][props.propertyToFilter])) {\r\n // These are all casted as any because it's not specifically known what kind of objects this is expected to support.\r\n const allOptions = uniq(([] as any[]).concat(...events.map(event => (event[props.propertyToFilter] as any[]))));\r\n\r\n return allOptions.map(option => {\r\n return {\r\n text: option.toString(),\r\n value: option.toString(),\r\n firstOccurance: \"\"\r\n }\r\n });\r\n }\r\n else {\r\n const mappedProperty = uniq(events.map(event => event[props.propertyToFilter]));\r\n\r\n return mappedProperty.map(eventProperty => {\r\n return {\r\n text: eventProperty.toString(),\r\n value: eventProperty.toString(),\r\n firstOccurance: \"\"\r\n }\r\n });\r\n }\r\n }\r\n\r\n // If empty\r\n return [];\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: IFilterExternalProps): StateToProps {\r\n // Find the matched filter to extract the selected value.\r\n let matchedFilter: IEventFilter = null;\r\n\r\n for (let i = 0; i < state.calendar.eventFilter.length; ++i) {\r\n if (state.calendar.eventFilter[i].key === ownProps.propertyToFilter) {\r\n matchedFilter = state.calendar.eventFilter[i];\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n hasFilters: state.calendar.eventFilter.length > 0,\r\n eventMonths: state.calendar.events,\r\n selectedValue: matchedFilter ? matchedFilter.selectedValue : \"\",\r\n lastLoadedMonth: state.calendar.endDate,\r\n lastMonthToLoad: state.calendarSettings.monthsOnCalendar[state.calendarSettings.monthsOnCalendar.length - 1],\r\n currentFilters: new Map(state.calendar.eventFilter.map(filter => [filter.key, filter.selectedValue]) as any)\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps: FilterProps): DispatchToProps {\r\n return {\r\n selectFilter: (selectedValue: string, shouldUpdateQuery: boolean) => {\r\n // If the selected value is null or empty string, remove that filter.\r\n if (!selectedValue || selectedValue === \"\") {\r\n dispatch(removeEventFilter(ownProps.propertyToFilter));\r\n } else {\r\n\r\n const filter: IEventFilter = {\r\n key: ownProps.propertyToFilter,\r\n selectedValue: selectedValue,\r\n filter: generateEventFilter(ownProps.propertyToFilter, selectedValue)\r\n }\r\n dispatch(upsertEventFilter(filter, shouldUpdateQuery));\r\n }\r\n },\r\n goToMonth: (date: moment.Moment) => dispatch(goToMonth(date)),\r\n getFirstOccurenceDateForFilters: (filters, lastMonthToLoad, lastLoadedMonth) => {\r\n CalendarApi.getFirstOccurenceForFilters(filters, lastMonthToLoad).then(firstOccuranceDate => {\r\n\r\n // If a month is \r\n if (firstOccuranceDate != null) {\r\n const toMonth = moment(firstOccuranceDate);\r\n\r\n // Only change months if it's in the future.\r\n if (toMonth.isAfter(lastLoadedMonth)) {\r\n dispatch(goToMonth(toMonth))\r\n }\r\n\r\n // If the month has already loaded, apply filter and remove the loader.\r\n // We need a timeout because even though the data is cached, a Promise object is created.\r\n //setTimeout(() => removeLoader(), 500);\r\n var scrollInterval = setInterval(() => {\r\n const monthElement = getMonthElement(toMonth);\r\n\r\n if (monthElement) {\r\n removeLoader();\r\n if (scrollToMonth(toMonth)) {\r\n clearInterval(scrollInterval);\r\n }\r\n }\r\n }, 500);\r\n\r\n } else {\r\n // If the month has already loaded, apply filter and remove the loader.\r\n // We need a timeout because even though the data is cached, a Promise object is created.\r\n setTimeout(() => removeLoader(), 500);\r\n }\r\n }).catch(err => {\r\n console.error(err);\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(FiltersBase);","import * as React from 'react';\r\nimport * as moment from 'moment';\r\n\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport { ICalendarState, IMonth, CalendarViewMode, CalendarDeviceMode } from '../../classes/calendar';\r\nimport { connect } from 'react-redux';\r\n\r\nimport GridMonthContainerView from 'grid-month-container.view';\r\nimport { ICalendarAppState } from '../../redux-state';\r\n\r\ninterface IGridMonthContainerExternalProps {\r\n\r\n}\r\n\r\ninterface StateToProps {\r\n //currentMoment: moment.Moment;\r\n //calendarViewMode: CalendarViewMode;\r\n //calendarDeviceMode: CalendarDeviceMode;\r\n}\r\n\r\nexport type GridMonthContainerProps = IGridMonthContainerExternalProps & StateToProps;\r\n\r\nexport class GridMonthContainerBase extends React.Component {\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\n//function mapStateToProps(state: ICalendarAppState, ownProps: IGridMonthContainerExternalProps): StateToProps {\r\n// return {\r\n// currentMoment: state.calendar.currentDate,\r\n// calendarViewMode: state.calendarSettings.calendarViewMode,\r\n// calendarDeviceMode: state.calendarSettings.calendarDeviceMode\r\n// }\r\n//}\r\n\r\n//export default connect(mapStateToProps)(GridMonthContainerBase);\r\n\r\nexport default GridMonthContainerBase;","import * as React from 'react';\r\nimport * as moment from 'moment';\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport { ICalendarState, IMonth, IDay } from '../../classes/calendar';\r\nimport { ICalendarAppText } from '../../custom/classes/calendar-text';\r\n\r\nimport { connect } from 'react-redux';\r\n\r\nimport GridDayView from 'grid-day.view';\r\nimport { ICalendarAppState } from '../../redux-state';\r\n\r\ninterface IGridDayExternalProps {\r\n day: IDay;\r\n}\r\n\r\ninterface StateToProps {\r\n text: ICalendarAppText;\r\n}\r\n\r\nexport type GridDayProps = IGridDayExternalProps & StateToProps;\r\n\r\nexport const GridDayBase: React.StatelessComponent = props => {\r\n return (\r\n \r\n )\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState): StateToProps {\r\n return {\r\n text: state.calendarText\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(GridDayBase);","import * as React from 'react';\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport { ICalendarState, IMonth, IDay } from '../../classes/calendar';\r\nimport { ICalendarAppText } from '../../custom/classes/calendar-text';\r\n\r\nimport { connect } from 'react-redux';\r\n\r\nimport GridEventView from 'grid-event.view';\r\nimport { ICalendarAppState } from '../../redux-state';\r\n\r\ninterface IGridEventExternalProps {\r\n event: IEvent;\r\n focalPointCoordinates: number[];\r\n}\r\n\r\ninterface StateToProps {\r\n text: ICalendarAppText;\r\n}\r\n\r\nexport type GridEventProps = IGridEventExternalProps & StateToProps;\r\n\r\nexport const GridEventBase: React.StatelessComponent = props => {\r\n return (\r\n \r\n )\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState): StateToProps {\r\n return {\r\n text: state.calendarText\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(GridEventBase);","import * as React from 'react';\r\nimport * as moment from 'moment';\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport { ICalendarState, IMonth, IDay } from '../../classes/calendar';\r\nimport { connect } from 'react-redux';\r\n\r\nimport GridMonthView from 'grid-month.view';\r\nimport { ICalendarAppState } from '../../redux-state';\r\nimport { ICalendarAppText } from '../../custom/classes/calendar-text';\r\n\r\n\r\ninterface IGridMonthExternalProps {\r\n monthData: IMonth;\r\n}\r\n\r\ninterface StateToProps {\r\n text: ICalendarAppText;\r\n}\r\n\r\nexport type GridMonthProps = IGridMonthExternalProps & StateToProps;\r\n\r\nexport class GridMonthBase extends React.Component {\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: IGridMonthExternalProps): StateToProps {\r\n return {\r\n text: state.calendarText\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(GridMonthBase);","import * as React from 'react';\r\nimport * as moment from 'moment';\r\n\r\nimport { ICalendarState, IMonth, IDay } from '../../classes/calendar';\r\nimport { connect } from 'react-redux';\r\n\r\nimport GridMonthsView from 'grid-months.view';\r\nimport { ICalendarAppState } from '../../redux-state';\r\nimport { ICalendarAppText } from '../../custom/classes/calendar-text';\r\nimport { IEvent } from '../../custom/classes/event';\r\n\r\ninterface IGridMonthsExternalProps {\r\n}\r\n\r\ninterface StateToProps {\r\n monthsData: IMonth[];\r\n text: ICalendarAppText;\r\n}\r\n\r\nexport type GridMonthsProps = IGridMonthsExternalProps & StateToProps;\r\n\r\nexport class GridMonthsBase extends React.Component {\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: IGridMonthsExternalProps): StateToProps {\r\n return {\r\n monthsData: state.calendar.events,\r\n text: state.calendarText\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(GridMonthsBase);","import * as React from 'react';\r\nimport * as moment from 'moment';\r\n\r\nimport { connect, Dispatch } from 'react-redux';\r\nimport { ICalendarAppState } from '../redux-state';\r\nimport { applyPromoCode } from '../redux-state/actions/calendar-api.actions';\r\n\r\nimport MonthSelectionDropdownView from 'month-selection-dropdown.view';\r\nimport { ICalendarAppText } from '../custom/classes/calendar-text';\r\n\r\nimport { updatePromoCodeString } from '../redux-state/actions/promo-code.actions';\r\nimport { waitForImage, imageHasLoaded } from '../redux-state/actions/lazy-load.actions';\r\nimport { focalPointCoordinates } from '../helpers/focal-point-from-url';\r\n\r\ninterface IExternalProps {\r\n src: string;\r\n}\r\n\r\ninterface StateToProps {\r\n imageIsLoaded: boolean;\r\n}\r\n\r\ninterface DispatchToProps {\r\n waitForImage: () => void;\r\n signalImageLoad: () => void;\r\n}\r\n\r\nexport type LazyImageProps = IExternalProps & StateToProps & DispatchToProps & React.ImgHTMLAttributes;\r\n\r\nexport class LazyImageBase extends React.Component {\r\n constructor(props: LazyImageProps) {\r\n super(props);\r\n\r\n props.waitForImage();\r\n }\r\n\r\n render() {\r\n const { imageIsLoaded, waitForImage, signalImageLoad, ...rest } = this.props;\r\n\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: IExternalProps): StateToProps {\r\n return {\r\n imageIsLoaded: state.lazyLoad.imageHasLoaded[ownProps.src],\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: Dispatch, ownProps: LazyImageProps): DispatchToProps {\r\n return {\r\n waitForImage: () => dispatch(waitForImage(ownProps.src)),\r\n signalImageLoad: () => dispatch(imageHasLoaded(ownProps.src))\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LazyImageBase);","import * as React from 'react';\r\nimport * as moment from 'moment';\r\n\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport { ICalendarState, IMonth, CalendarViewMode, CalendarDeviceMode } from '../../classes/calendar';\r\nimport { ICalendarAppText } from '../../custom/classes/calendar-text';\r\n\r\nimport { connect } from 'react-redux';\r\n\r\nimport ListContainerView from 'list-container.view';\r\nimport { ICalendarAppState } from '../../redux-state';\r\n\r\ninterface IListContainerExternalProps {\r\n\r\n}\r\n\r\ninterface StateToProps {\r\n currentMoment: moment.Moment;\r\n calendarViewMode: CalendarViewMode;\r\n calendarDeviceMode: CalendarDeviceMode;\r\n eventCount: number;\r\n text: ICalendarAppText;\r\n}\r\n\r\nexport type ListContainerProps = IListContainerExternalProps & StateToProps;\r\n\r\nexport const ListContainerBase: React.StatelessComponent = props => {\r\n return (\r\n \r\n )\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: IListContainerExternalProps): StateToProps {\r\n return {\r\n currentMoment: state.calendar.currentDate,\r\n calendarViewMode: state.calendarSettings.calendarViewMode,\r\n calendarDeviceMode: state.calendarSettings.calendarDeviceMode,\r\n eventCount: ([] as IEvent[]).concat(...state.calendar.events.map(month => ([] as IEvent[]).concat(...month.events.allDays.map(day => day.events)))).length,\r\n text: state.calendarText\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(ListContainerBase);","import * as React from 'react';\r\nimport { ICalendarState, IMonth, IDay } from '../../classes/calendar';\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport { connect } from 'react-redux';\r\n\r\nimport ListDayView from 'list-day.view';\r\n\r\ninterface IListDayExternalProps {\r\n day: IDay;\r\n}\r\n\r\nexport type ListDayProps = IListDayExternalProps;\r\n\r\nexport class ListDayBase extends React.Component {\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default ListDayBase;","import * as React from 'react';\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport { ICalendarState, IMonth, IDay } from '../../classes/calendar';\r\nimport { ICalendarAppText } from '../../custom/classes/calendar-text';\r\n\r\nimport { connect } from 'react-redux';\r\n\r\nimport ListEventView from 'list-event.view';\r\nimport { ICalendarAppState } from '../../redux-state';\r\n\r\ninterface IListEventExternalProps {\r\n event: IEvent;\r\n focalPointCoordinates: number[];\r\n}\r\n\r\ninterface StateToProps {\r\n text: ICalendarAppText;\r\n}\r\n\r\nexport type ListEventProps = IListEventExternalProps & StateToProps;\r\n\r\nexport const ListEventBase: React.StatelessComponent = props => {\r\n return (\r\n \r\n )\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState): StateToProps {\r\n return {\r\n text: state.calendarText\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(ListEventBase);","import * as React from 'react';\r\nimport * as moment from 'moment';\r\n\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport { ICalendarState, IMonth, IDay } from '../../classes/calendar';\r\nimport { connect } from 'react-redux';\r\n\r\nimport ListMonthView from 'list-month.view';\r\nimport { ICalendarAppState } from '../../redux-state';\r\nimport { ICalendarAppText } from '../../custom/classes/calendar-text';\r\n\r\ninterface IListMonthExternalProps {\r\n monthData: IMonth;\r\n}\r\n\r\ninterface StateToProps {\r\n text: ICalendarAppText;\r\n}\r\n\r\nexport type ListMonthProps = IListMonthExternalProps & StateToProps;\r\n\r\nexport class ListMonthBase extends React.Component {\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: IListMonthExternalProps): StateToProps {\r\n return {\r\n text: state.calendarText\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(ListMonthBase);","import * as React from 'react';\r\nimport * as moment from 'moment';\r\n\r\nimport { ICalendarState, IMonth, IDay } from '../../classes/calendar';\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport { connect } from 'react-redux';\r\n\r\nimport ListMonthsView from 'list-months.view';\r\nimport { ICalendarAppState } from '../../redux-state';\r\nimport { ICalendarAppText } from '../../custom/classes/calendar-text';\r\n\r\ninterface IListMonthsExternalProps {\r\n}\r\n\r\ninterface StateToProps {\r\n monthsData: IMonth[];\r\n text: ICalendarAppText;\r\n}\r\n\r\nexport type ListMonthsProps = IListMonthsExternalProps & StateToProps;\r\n\r\nexport class ListMonthsBase extends React.Component {\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: IListMonthsExternalProps): StateToProps {\r\n return {\r\n monthsData: state.calendar.events,\r\n text: state.calendarText\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(ListMonthsBase);","import * as React from 'react';\r\nimport * as moment from 'moment';\r\n\r\nimport { connect, Dispatch } from 'react-redux';\r\nimport { ICalendarAppState } from '../redux-state';\r\nimport { applyPromoCode } from '../redux-state/actions/calendar-api.actions';\r\n\r\nimport MonthSelectionDropdownView from 'month-selection-dropdown.view';\r\nimport { ICalendarAppText } from '../custom/classes/calendar-text';\r\n\r\nimport { updatePromoCodeString } from '../redux-state/actions/promo-code.actions';\r\nimport { waitForImage, imageHasLoaded } from '../redux-state/actions/lazy-load.actions';\r\nimport LoaderView from 'loader.view';\r\n\r\ninterface IExternalProps {\r\n}\r\n\r\ninterface StateToProps {\r\n text: ICalendarAppText;\r\n isLoading: boolean;\r\n}\r\n\r\ninterface DispatchToProps {\r\n}\r\n\r\nexport type LoaderProps = IExternalProps & StateToProps;\r\n\r\nexport const LoaderBase: React.StatelessComponent = props => {\r\n return (\r\n \r\n )\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: IExternalProps): StateToProps {\r\n return {\r\n text: state.calendarText,\r\n isLoading: state.calendar.updating\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(LoaderBase);","import * as React from 'react';\r\nimport * as moment from 'moment';\r\nimport { ICalendarAppText } from '../../custom/classes/calendar-text';\r\nimport { ICalendarState, IMonth, IDay, CalendarViewMode } from '../../classes/calendar';\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport { connect, Dispatch } from 'react-redux';\r\n\r\nimport { ICalendarAppState } from '../../redux-state';\r\nimport { goToMonth } from '../../redux-state/actions/calendar.actions';\r\n\r\nimport MonthSelectionDropdownView from 'month-selection-dropdown.view';\r\n\r\ninterface IMonthSelectionDropdownExternalProps {\r\n}\r\n\r\ninterface StateToProps {\r\n text: ICalendarAppText;\r\n currentMonth: moment.Moment;\r\n validMonths: moment.Moment[];\r\n}\r\n\r\ninterface DispatchToProps {\r\n goToMonth: (date: moment.Moment) => void;\r\n}\r\n\r\nexport type MonthSelectionDropdownProps = IMonthSelectionDropdownExternalProps & StateToProps & DispatchToProps;\r\n\r\nexport class MonthSelectionDropdownBase extends React.Component {\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: IMonthSelectionDropdownExternalProps): StateToProps {\r\n return {\r\n text: state.calendarText,\r\n currentMonth: state.calendar.currentDate,\r\n validMonths: state.calendarSettings.monthsOnCalendar\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: Dispatch): DispatchToProps {\r\n return {\r\n goToMonth: (date: moment.Moment) => dispatch(goToMonth(date))\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(MonthSelectionDropdownBase);","import * as React from 'react';\r\nimport * as moment from 'moment';\r\nimport { ICalendarAppText } from '../../custom/classes/calendar-text';\r\n\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport { ICalendarState, IMonth, IDay } from '../../classes/calendar';\r\nimport { connect, Dispatch } from 'react-redux';\r\n\r\nimport LoadMoreView from 'month-selection-load-more.view';\r\nimport { ICalendarAppState } from '../../redux-state';\r\nimport { nextMonth } from '../../redux-state/actions/calendar.actions';\r\n\r\ninterface ILoadMoreExternalProps {\r\n}\r\n\r\ninterface StateToProps {\r\n text: ICalendarAppText;\r\n currDate: moment.Moment;\r\n lastDate: moment.Moment;\r\n}\r\n\r\ninterface DispatchToProps {\r\n goToNextMonth: () => void;\r\n}\r\n\r\nexport type LoadMoreProps = ILoadMoreExternalProps & StateToProps & DispatchToProps;\r\n\r\nexport class LoadMoreBase extends React.Component {\r\n render() {\r\n return (\r\n <>\r\n {\r\n this.props.currDate.clone().endOf(\"month\").isSameOrBefore(this.props.lastDate) ? : null\r\n }\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState, ownProps: ILoadMoreExternalProps): StateToProps {\r\n return {\r\n text: state.calendarText,\r\n currDate: state.calendar.currentDate,\r\n lastDate: state.calendarSettings.monthsOnCalendar[state.calendarSettings.monthsOnCalendar.length - 1] || moment()\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch: Dispatch): DispatchToProps {\r\n return {\r\n goToNextMonth: () => dispatch(nextMonth())\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(LoadMoreBase);","import * as React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport ScrollToTopView from 'scroll-to-top';\r\nimport { ICalendarAppState } from '../../redux-state';\r\nimport { throttle } from 'lodash';\r\n\r\ninterface IExternalProps {\r\n}\r\n\r\ninterface StateToProps {\r\n appearanceOffset: number;\r\n}\r\n\r\ninterface IScrollToTopBase {\r\n scrollToTop: () => void;\r\n}\r\n\r\ninterface IScrollToTopState {\r\n showButton: boolean;\r\n}\r\n\r\ntype ScrollToTopProps = IExternalProps & StateToProps\r\nexport type CombinedScrollToTopProps = ScrollToTopProps & IScrollToTopBase & IScrollToTopState;\r\n\r\nexport class ScrollToTopBase extends React.Component implements IScrollToTopBase {\r\n public showButton = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showButton: false\r\n }\r\n }\r\n\r\n scrollToTop() {\r\n if (!window.matchMedia('(prefers-reduced-motion: true)').matches) {\r\n document.getElementById(\"main\").scrollIntoView({\r\n behavior: \"smooth\"\r\n });\r\n } else {\r\n document.getElementById(\"main\").scrollIntoView();\r\n }\r\n }\r\n\r\n checkScroll() {\r\n this.setState({\r\n showButton: window.pageYOffset > this.props.appearanceOffset\r\n })\r\n }\r\n\r\n private boundScroll = throttle(this.checkScroll.bind(this), 50);\r\n\r\n componentWillUnmount() {\r\n window.removeEventListener('scroll', this.boundScroll.bind(this));\r\n }\r\n\r\n componentDidMount() {\r\n this.checkScroll();\r\n window.addEventListener('scroll', this.boundScroll);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState): StateToProps {\r\n return {\r\n appearanceOffset: state.calendarSettings.scrollToTopAppearanceOffset\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(ScrollToTopBase);","import * as React from 'react';\r\n\r\nimport MediaQuery from 'react-responsive';\r\nimport { ICalendarAppState } from '../../redux-state';\r\nimport { setToDesktop } from '../../redux-state/actions/calendar-settings.actions';\r\nimport { connect } from 'react-redux';\r\n\r\ninterface DispatchToProps {\r\n setToDesktop: () => void;\r\n}\r\n\r\ntype ResponsiveProps = DispatchToProps;\r\n\r\nexport class DesktopResponsiveBase extends React.Component {\r\n\r\n componentWillMount() {\r\n this.props.setToDesktop();\r\n }\r\n\r\n /**\r\n * No need to render anything, since the lifecycle events handle that stuff.\r\n */\r\n render() {\r\n return null\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch): DispatchToProps {\r\n return {\r\n setToDesktop: () => dispatch(setToDesktop())\r\n }\r\n}\r\n\r\nexport default connect(null, mapDispatchToProps)(DesktopResponsiveBase);","import * as React from 'react';\r\n\r\nimport MediaQuery from 'react-responsive';\r\nimport { ICalendarAppState } from '../../redux-state';\r\n\r\n\r\nimport MobileResponsive from './mobile';\r\nimport DesktopResponsive from './desktop';\r\nimport { connect } from 'react-redux';\r\n\r\ninterface StateToProps {\r\n mediaWidth: string;\r\n}\r\n\r\ninterface DispatchToProps {\r\n\r\n}\r\n\r\ntype ResponsiveProps = StateToProps & DispatchToProps;\r\n\r\nexport class ResponsiveBase extends React.Component {\r\n //private plusOneWidth: number;\r\n //private unit: string;\r\n\r\n //private computeMediaQueries(props: ResponsiveProps) {\r\n // this.plusOneWidth = parseInt(props.mediaWidth.replace(/[^\\d*\\.?\\d*]/g, ''));\r\n // this.unit = props.mediaWidth.replace(/[\\d*\\.?\\d*]/g, '');\r\n\r\n // // Set the 1 offset depending on the unit of measurement.\r\n // if (this.unit === \"rem\") {\r\n // this.plusOneWidth += 0.01;\r\n // } else if (this.unit === \"px\") {\r\n // this.plusOneWidth += 1;\r\n // }\r\n //}\r\n\r\n //constructor(props: ResponsiveProps) {\r\n // super(props);\r\n\r\n // this.computeMediaQueries(props);\r\n //}\r\n\r\n //componentDidUpdate(prevProps: ResponsiveProps) {\r\n // this.computeMediaQueries(this.props);\r\n //}\r\n\r\n render() {\r\n return (\r\n <>\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state: ICalendarAppState): StateToProps {\r\n return {\r\n mediaWidth: state.calendarSettings.desktopToMobileTransitionWidth\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps)(ResponsiveBase);","import * as React from 'react';\r\n\r\nimport MediaQuery from 'react-responsive';\r\nimport { ICalendarAppState } from '../../redux-state';\r\nimport { setToMobile } from '../../redux-state/actions/calendar-settings.actions';\r\nimport { connect } from 'react-redux';\r\n\r\n\r\ninterface DispatchToProps {\r\n setToMobile: () => void;\r\n}\r\n\r\ntype ResponsiveProps = DispatchToProps;\r\n\r\nexport class MobileResponsiveBase extends React.Component {\r\n\r\n componentWillMount() {\r\n this.props.setToMobile();\r\n }\r\n\r\n /**\r\n * No need to render anything, since the lifecycle events handle that stuff.\r\n */\r\n render() {\r\n return null\r\n }\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch): DispatchToProps {\r\n return {\r\n setToMobile: () => dispatch(setToMobile())\r\n }\r\n}\r\n\r\nexport default connect(null, mapDispatchToProps)(MobileResponsiveBase);","import { ICalendarAppBaseText, defaultBaseText } from \"../../classes/calendar-text\";\r\n\r\n/**\r\n * Want to add more text? Go to custom/classes/calendar-text and add new properties there.\r\n */\r\ninterface ICalendarCustomText {\r\n}\r\n\r\n\r\nlet customText: ICalendarCustomText = {\r\n}\r\n\r\nexport type ICalendarAppText = ICalendarCustomText & ICalendarAppBaseText;\r\nexport const defaultText: ICalendarAppText = { ...defaultBaseText, ...customText };","import * as moment from 'moment';\r\nimport { IEventFilter, ICalendarState, IOption } from '../classes/calendar';\r\nimport { IEvent } from '../custom/classes/event';\r\nimport filter from '../components/filters/filter';\r\nimport { upsertEventFilter } from '../redux-state/actions/calendar.actions';\r\nimport { Store, Dispatch } from 'redux';\r\nimport { getMonthElement, scrollToMonth, removeLoader } from './scroll-to-month';\r\n\r\n\r\nexport function AddFilterToQuery(eventFilters: Array): void {\r\n const serialized = serializeProps(eventFilters);\r\n if (serialized.length > 0) {\r\n var newurl = window.location.protocol + \"//\" + window.location.host + window.location.pathname + encodeURI(serialized);\r\n window.history.pushState({ path: newurl }, '', newurl);\r\n }\r\n}\r\n\r\nexport function GetFilterFromQuery(search: string, filterOptions: Array,\r\n filterToGet: string, lastLoadedMonth: moment.Moment, selectFiltersFunction:(filter, shouldUpdateQuery)=> any, goToMonthFunction: (toMonth) => any): void {\r\n // Remove hash added for Month scrolling\r\n if (search.substr(1).length > 0) {\r\n let queries = decodeURI(search.substr(1)).split('&');\r\n\r\n var matchedQuery = queries.filter(q => q.indexOf(filterToGet) == 0)[0];\r\n\r\n if (matchedQuery) {\r\n let value = matchedQuery.split('=')[1];\r\n\r\n selectFiltersFunction(value, false);\r\n\r\n var matchedFilter = filterOptions.filter(o => o.value === value)[0];\r\n\r\n if (matchedFilter) {\r\n const firstOccuranceDate = matchedFilter.firstOccurance;\r\n\r\n // If a month is \r\n if (firstOccuranceDate) {\r\n const toMonth = moment(firstOccuranceDate);\r\n\r\n // Only change months if it's in the future.\r\n if (toMonth.isAfter(lastLoadedMonth)) {\r\n goToMonthFunction(toMonth);\r\n var scrollInterval = setInterval(() => {\r\n const monthElement = getMonthElement(toMonth);\r\n\r\n if (monthElement) {\r\n removeLoader();\r\n if (scrollToMonth(toMonth)) {\r\n clearInterval(scrollInterval);\r\n }\r\n }\r\n }, 500);\r\n } else {\r\n // If the month has already loaded, apply filter and remove the loader.\r\n // We need a timeout because even though the data is cached, a Promise object is created.\r\n //setTimeout(() => removeLoader(), 500);\r\n var scrollInterval = setInterval(() => {\r\n const monthElement = getMonthElement(toMonth);\r\n\r\n if (monthElement) {\r\n removeLoader();\r\n if (scrollToMonth(toMonth)) {\r\n clearInterval(scrollInterval);\r\n }\r\n }\r\n }, 500);\r\n }\r\n\r\n } else {\r\n // If the month has already loaded, apply filter and remove the loader.\r\n // We need a timeout because even though the data is cached, a Promise object is created.\r\n setTimeout(() => removeLoader(), 500);\r\n }\r\n }\r\n }\r\n\r\n }\r\n}\r\n\r\nfunction serializeProps(eventFilter: Array): string {\r\n if (eventFilter.length < 1)\r\n return \"\";\r\n\r\n return \"?\" + eventFilter.map(filter => filter.key + \"=\" + filter.selectedValue).join(\"&\");\r\n}\r\n\r\n\r\nexport function generateEventFilter(propertyToFilter: string, selectedValue: string) {\r\n return (event: IEvent) => {\r\n const propertyValue = event[propertyToFilter];\r\n // If it's an array, check if the value exists inside\r\n if (propertyValue.constructor === Array) {\r\n return (propertyValue as any[]).some(item => item === selectedValue);\r\n } else {\r\n return event[propertyToFilter] === selectedValue\r\n }\r\n }\r\n}\r\n","export function focalPointCoordinates(url: string): number[] {\r\n if (url) {\r\n const params = new URLSearchParams(url.split('?')[1]);\r\n if (params.has('center')) {\r\n return params.get('center').split(',').map(n => parseFloat(n) * 100);\r\n }\r\n }\r\n return null;\r\n}","import * as moment from 'moment';\r\nimport { CalendarViewMode } from '../classes/calendar-settings';\r\n\r\n/**\r\n * Scroll to the month and set focus. This will also remove the loader.\r\n * @param month\r\n * @param viewMode\r\n */\r\nexport function scrollToMonth(month: moment.Moment): boolean {\r\n const mmtId = getMonthElementFromMoment(month);\r\n\r\n const destinationMonth = getMonthElement(month);\r\n let destinationId: string = \"\";\r\n if (destinationMonth) {\r\n if (destinationMonth.id.indexOf(\"Month-List-\") > -1) {\r\n destinationId = `Month-List-${mmtId}`;\r\n } else {\r\n destinationId = `Month-${mmtId}`;\r\n }\r\n document.getElementById(destinationId).scrollIntoView();\r\n removeLoader();\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getMonthElementFromMoment(month: moment.Moment): string {\r\n return month.startOf(\"month\").format(\"X\");\r\n}\r\n\r\nexport function getMonthElement(month: moment.Moment): HTMLElement {\r\n const key = getMonthElementFromMoment(month);\r\n return document.getElementById(`Month-${key}`) || document.getElementById(`Month-List-${key}`);\r\n}\r\n\r\n/**\r\n * Call this function to remove the loader. Note this isn't tied into redux or anything because of the scroll-to-month requiring\r\n * the month to load first and the hash set before disappearing.\r\n */\r\nexport function removeLoader() {\r\n // attribute is added in the calendar-container component when loading state is triggered\r\n document.documentElement.removeAttribute(\"data-calendar-loading\");\r\n}","import * as React from 'react';\r\nimport { render } from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { appStore } from './redux-state';\r\nimport App from './components/app';\r\n\r\n\r\nrender(\r\n \r\n \r\n \r\n , document.getElementById(\"calendar-entry-js\"));","import * as moment from 'moment';\r\n\r\nimport { ICalendarState, IMonth } from \"../../classes/calendar\";\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport CalendarApi from \"../../common/calendar-api\";\r\nimport { ICalendarAppState } from \"..\";\r\nimport { updateEvents, requestEvents, eventError } from './calendar.actions';\r\nimport { create } from '../../common/calendar';\r\nimport { requestText, receiveText, errorApiText } from './calendar-text.actions';\r\nimport { requestPromoCodeApply, errorPromoCodeApply, receivePromoCodeApplyResponse, requestPromoCodeRemove, errorPromoCodeRemove, receivePromoCodeRemoveResponse, receivePromoCodeGetResponse } from './promo-code.actions';\r\n\r\n/**\r\n * Generate a key using the input date object.\r\n * @param date\r\n */\r\nfunction generateKey(date: moment.Moment) {\r\n return `${date.year().toString()},${date.month().toString()}`\r\n}\r\n\r\n/**\r\n * Dispatch this action to get the latest set of events from the API.\r\n */\r\nexport function getEventsFromApi() {\r\n return (dispatch, getState: () => ICalendarAppState) => {\r\n const currState = getState();\r\n\r\n if (!currState.calendar.updating) {\r\n dispatch(requestEvents());\r\n }\r\n\r\n return CalendarApi.getEvents(currState.calendar, currState.calendarSettings).then(events => {\r\n const filteredEvents = events.filter(currState.calendar.filterFunction);\r\n\r\n // Contains all of the events categorized by the month it lives in.\r\n let byMonth: { [month: string]: IEvent[] } = {};\r\n\r\n filteredEvents.forEach(event => {\r\n const momentObj = moment(event.eventDate);\r\n\r\n if (currState.calendarSettings.loadWrappingMonthDates) {\r\n const startOfWeek = momentObj.clone().startOf(\"week\");\r\n\r\n /*\r\n * If the month idx of the first day of the week is larger, it's next month. This is\r\n * also true if the end of the week is in the next year.\r\n */\r\n if ((startOfWeek.month() < momentObj.month() || startOfWeek.year() < momentObj.year())) {\r\n const secondMonth = momentObj.clone().subtract(1, \"month\");\r\n\r\n if (generateKey(secondMonth) in byMonth) {\r\n byMonth[generateKey(secondMonth)].push(event);\r\n } else {\r\n byMonth[generateKey(secondMonth)] = [event];\r\n }\r\n }\r\n }\r\n\r\n if (generateKey(momentObj) in byMonth) {\r\n byMonth[generateKey(momentObj)].push(event);\r\n } else {\r\n byMonth[generateKey(momentObj)] = [event];\r\n }\r\n });\r\n\r\n // Create an array for all months between the start and the end date. This is to fill in \"missing\" months.\r\n let allMonths: Array = [];\r\n for (let i = currState.calendar.startDate.clone(); i.isBefore(currState.calendar.endDate); i.add(1, \"month\")) {\r\n allMonths.push(i.clone());\r\n }\r\n\r\n const monthsToEvents: IMonth[] = allMonths.map(monthMoment => {\r\n let evts = byMonth[generateKey(monthMoment)];\r\n\r\n // Don't let evts be undefined, at worst, it should be an empty array.\r\n if (!evts)\r\n evts = [];\r\n\r\n return {\r\n monthMoment: monthMoment,\r\n events: create({\r\n events: evts,\r\n month: monthMoment.month(),\r\n year: monthMoment.year(),\r\n weekdayNames: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\r\n })\r\n }\r\n });\r\n\r\n dispatch(updateEvents(monthsToEvents ? monthsToEvents : []))\r\n }).catch(err => {\r\n dispatch(eventError(err));\r\n });\r\n }\r\n}\r\n\r\nexport function getText(culture = \"\") {\r\n return (dispatch, getState: () => ICalendarAppState) => {\r\n dispatch(requestText());\r\n\r\n return CalendarApi.getText(culture).then(result => {\r\n dispatch(receiveText(result));\r\n }).catch(err => {\r\n dispatch(errorApiText(err));\r\n });\r\n }\r\n}\r\n\r\nexport function removePromoCode() {\r\n return (dispatch, getState: () => ICalendarAppState) => {\r\n const state = getState();\r\n\r\n dispatch(requestPromoCodeRemove());\r\n\r\n return CalendarApi.removePromoCode().then(apiResult => {\r\n dispatch(receivePromoCodeRemoveResponse(apiResult));\r\n }).catch(error => {\r\n dispatch(errorPromoCodeRemove(error));\r\n });\r\n }\r\n}\r\n\r\nexport function applyPromoCode() {\r\n return (dispatch, getState: () => ICalendarAppState) => {\r\n const state = getState();\r\n\r\n dispatch(requestPromoCodeApply());\r\n\r\n return CalendarApi.applyPromoCode(state.promoCode.promoCodeString).then(apiResult => {\r\n dispatch(receivePromoCodeApplyResponse(state.promoCode.promoCodeString, apiResult));\r\n }).catch(error => {\r\n dispatch(errorPromoCodeApply(error));\r\n });\r\n }\r\n}","import { ActionType } from \"../../classes/calendar-actions\";\r\nimport { ICalendarSettings } from \"../../classes/calendar\";\r\n\r\nexport function updateCalendarSettings(newSettings: ICalendarSettings) {\r\n return {\r\n type: ActionType.UpdateSettings,\r\n value: newSettings\r\n }\r\n}\r\n\r\n/**\r\n * Dispatch this to set the application state to MOBILE mode.\r\n */\r\nexport function setToMobile() {\r\n return {\r\n type: ActionType.SetToMobile\r\n }\r\n}\r\n\r\n/**\r\n * Dispatch this to set the application state to DESKTOP mode.\r\n */\r\nexport function setToDesktop() {\r\n return {\r\n type: ActionType.SetToDesktop\r\n }\r\n}\r\n\r\nexport function setToGrid() {\r\n return {\r\n type: ActionType.SetToGrid\r\n }\r\n}\r\n\r\nexport function setToList() {\r\n return {\r\n type: ActionType.SetToList\r\n }\r\n}","import { ActionType } from \"../../classes/calendar-actions\";\r\nimport { ICalendarAppText } from '../../custom/classes/calendar-text';\r\n\r\n\r\nexport function requestText() {\r\n return {\r\n type: ActionType.RequestText\r\n }\r\n}\r\n\r\nexport function receiveText(text: ICalendarAppText) {\r\n return {\r\n type: ActionType.ReceiveText,\r\n value: text\r\n }\r\n}\r\n\r\nexport function errorApiText(error: any) {\r\n return {\r\n type: ActionType.ErrorApiText,\r\n value: error\r\n }\r\n}","import * as moment from 'moment';\r\n\r\nimport { ActionType } from '../../classes/calendar-actions';\r\nimport { IEventFilter, IMonth } from '../../classes/calendar';\r\nimport { IEvent } from '../../custom/classes/event';\r\nimport { removeLoader } from '../../helpers/scroll-to-month';\r\n\r\n/**\r\n * Go to the next month. If necessary, will load data.\r\n */\r\nexport function nextMonth() {\r\n return {\r\n type: ActionType.NextMonth\r\n }\r\n}\r\n\r\n/**\r\n * Go to the last month. If necessary, will load data.\r\n */\r\nexport function previousMonth() {\r\n return {\r\n type: ActionType.PreviousMonth\r\n }\r\n}\r\n\r\nexport function requestEvents() {\r\n return {\r\n type: ActionType.RequestEvents\r\n }\r\n}\r\n\r\n/**\r\n * Use only after events have been updated.\r\n */\r\nexport function eventsUpdated() {\r\n return {\r\n type: ActionType.EventUpdated\r\n }\r\n}\r\n\r\nexport function eventError(err: any) {\r\n return {\r\n type: ActionType.EventApiError,\r\n value: err\r\n }\r\n}\r\n\r\n/**\r\n * Update the events being stored in the redux state.\r\n * @param events\r\n */\r\nexport function updateEvents(events: IMonth[]) {\r\n return {\r\n type: ActionType.UpdateEvents,\r\n value: events\r\n }\r\n}\r\n\r\n/**\r\n * Add a number of days to the existing calendar. Will not alter currentDate.\r\n * @param numberOfDays \r\n * @param extendDays \r\n */\r\nexport function addDays(numberOfDays: number, extendDays: boolean = false) {\r\n return {\r\n type: ActionType.AddDays,\r\n value: { numberOfDays, extendDays }\r\n }\r\n}\r\n\r\n/**\r\n * Set the startDate and endDate to be the start and end of the input month.\r\n * @param month \r\n */\r\nexport function setMonth(month: moment.Moment) {\r\n return {\r\n type: ActionType.SetMonth,\r\n value: month\r\n }\r\n}\r\n\r\n/**\r\n * Go to the specified month. Will adjust startDate / endDate so that the input month is in the range.\r\n * @param month \r\n */\r\nexport function goToMonth(month: moment.Moment) {\r\n return {\r\n type: ActionType.GoToMonth,\r\n value: month\r\n }\r\n}\r\n\r\nexport function setDates(startDate: moment.Moment, endDate: moment.Moment) {\r\n return {\r\n type: ActionType.SetDates,\r\n value: { startDate, endDate }\r\n }\r\n}\r\n\r\nexport function upsertEventFilter(filterFunction: IEventFilter, shouldUpdateQuery: boolean) {\r\n return {\r\n type: ActionType.UpdateEventFilter,\r\n value: {\r\n function:\r\n filterFunction,\r\n shouldUpdateQuery: shouldUpdateQuery\r\n }\r\n }\r\n}\r\n\r\nexport function removeEventFilter(filterKey: string) {\r\n return {\r\n type: ActionType.RemoveEventFilter,\r\n value: filterKey\r\n }\r\n}\r\n\r\nexport function removeAllEventFilters() {\r\n return {\r\n type: ActionType.RemoveAllEventFilters\r\n }\r\n}\r\n\r\nexport function changeProductionSeasonFilter(filter: number) {\r\n return {\r\n type: ActionType.ChangeProductionSeasonFilter,\r\n value: filter\r\n }\r\n}","import { ActionType } from \"../../classes/calendar-actions\";\r\n\r\n/**\r\n * Dispatch this when you wish to listen to an image being loaded.\r\n * @param src\r\n */\r\nexport function waitForImage(src: string) {\r\n return {\r\n type: ActionType.WaitForImage,\r\n value: src\r\n } \r\n}\r\n\r\n/**\r\n * Once the onLoad function is triggered on an img, dispatch this.\r\n * @param src\r\n */\r\nexport function imageHasLoaded(src: string) {\r\n return {\r\n type: ActionType.ImageHasLoaded,\r\n value: src\r\n }\r\n}","import { ActionType } from '../../classes/calendar-actions';\r\nimport { IPromoCodeDetail } from '../../classes/promo-code';\r\n\r\n\r\nexport function requestPromoCodeApply() {\r\n return {\r\n type: ActionType.RequestPromoCodeApply\r\n }\r\n}\r\n\r\nexport function requestPromoCodeRemove() {\r\n return {\r\n type: ActionType.RequestPromoCodeRemove\r\n }\r\n}\r\n\r\nexport function updatePromoCodeString(promoCode: string) {\r\n return {\r\n type: ActionType.UpdatePromoCode,\r\n value: promoCode\r\n }\r\n}\r\n\r\nexport function ShowPromoComponent(show: boolean) {\r\n return {\r\n type: ActionType.ShowPromo,\r\n value: show\r\n }\r\n}\r\n\r\nexport function receivePromoCodeApplyResponse(promoCode: string, apiData: any) {\r\n return {\r\n type: ActionType.ReceivePromoCodeApply,\r\n value: {\r\n promoCode: promoCode,\r\n apiResponse: apiData\r\n }\r\n }\r\n}\r\n\r\nexport function receivePromoCodeRemoveResponse(apiData: any) {\r\n return {\r\n type: ActionType.ReceivePromoCodeRemove,\r\n value: { \r\n apiResponse: apiData\r\n }\r\n }\r\n}\r\n\r\nexport function receivePromoCodeGetResponse(promoCodeDetail: IPromoCodeDetail) {\r\n return {\r\n type: ActionType.ReceivePromoCodeGet,\r\n value: {\r\n apiResponse: promoCodeDetail\r\n }\r\n }\r\n}\r\n\r\n\r\nexport function errorPromoCodeApply(error: any) {\r\n return {\r\n type: ActionType.ErrorPromoCodeApply,\r\n value: {\r\n apiResponse: error\r\n }\r\n }\r\n}\r\n\r\nexport function errorPromoCodeRemove(apiData: any) {\r\n return {\r\n type: ActionType.ErrorPromoCodeRemove,\r\n value: {\r\n apiResponse: apiData\r\n }\r\n }\r\n}","import { combineReducers, createStore, applyMiddleware } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport * as moment from 'moment';\r\n\r\nimport calendarReducer from './reducers/calendar.reducer';\r\nimport { ICalendarState, ICalendarSettings, defaultCalendarSettings } from '../classes/calendar';\r\nimport { ICalendarAppText } from '../custom/classes/calendar-text';\r\nimport { IEvent } from '../custom/classes/event';\r\nimport { eventsUpdated } from './actions/calendar.actions';\r\n\r\nimport calendarSettingsReducer from './reducers/calendar-settings.reducer';\r\nimport { getEventsFromApi, getText } from './actions/calendar-api.actions';\r\nimport calendarTextReducer from './reducers/calendar-text.reducer';\r\nimport { IPromoCodeState } from '../classes/promo-code';\r\nimport promoCodeReducer from './reducers/promo-code.reducer';\r\nimport { receiveText } from './actions/calendar-text.actions';\r\nimport { ILazyLoadState } from '../classes/lazy-load';\r\nimport lazyLoadReducer from './reducers/lazy-load.reducer';\r\nimport { GetFilterFromQuery, AddFilterToQuery } from '../helpers/filter-by-query';\r\nimport { updateCalendarSettings } from './actions/calendar-settings.actions';\r\ndeclare const lastDate: string;\r\ndeclare const pageData: string;\r\ndeclare const promoCode: string;\r\nconst lastDateMoment = moment(lastDate);\r\n\r\nexport interface ICalendarAppState {\r\n calendar: ICalendarState;\r\n calendarSettings: ICalendarSettings;\r\n calendarText: ICalendarAppText;\r\n promoCode: IPromoCodeState;\r\n lazyLoad: ILazyLoadState;\r\n}\r\n\r\nconst appReducer = combineReducers({\r\n calendar: calendarReducer,\r\n calendarSettings: calendarSettingsReducer,\r\n calendarText: calendarTextReducer,\r\n promoCode: promoCodeReducer,\r\n lazyLoad: lazyLoadReducer\r\n});\r\n\r\n// Calculate the months that are valid on the calendar.\r\nlet monthsOnCalendar: moment.Moment[] = [];\r\n\r\nfor (let i = moment().clone().startOf(\"month\"); i.isSameOrBefore(lastDateMoment.endOf(\"month\")); i.add(1, \"month\")) {\r\n monthsOnCalendar.push(i.clone());\r\n}\r\n\r\nlet calendarSettings = {\r\n ...defaultCalendarSettings,\r\n monthsOnCalendar: monthsOnCalendar\r\n};\r\n\r\nconst appStore = createStore(appReducer, {\r\n calendarSettings: calendarSettings\r\n}, applyMiddleware(thunk));\r\n\r\n\r\n//if (window.location.search.length > 1) {\r\n// GetFilterFromQuery(window.location.search, appStore);\r\n//}\r\n\r\n// redux-thunk messes with redux typings.\r\nappStore.dispatch(getEventsFromApi() as any);\r\n\r\nappStore.dispatch(receiveText(pageData as any));\r\n\r\nappStore.dispatch(updateCalendarSettings(JSON.parse(promoCode)) as any);\r\n\r\nlet prevState = appStore.getState();\r\n\r\nappStore.subscribe(() => {\r\n const currState = appStore.getState();\r\n\r\n const apiUpdate = !prevState.calendar.startDate.isSame(currState.calendar.startDate) || !prevState.calendar.endDate.isSame(currState.calendar.endDate);\r\n\r\n // If the event references are completely different, re-calculate them.\r\n if (apiUpdate || (currState.calendar.updating && prevState.calendar.events !== currState.calendar.events)) {\r\n prevState = appStore.getState();\r\n\r\n appStore.dispatch(getEventsFromApi() as any);\r\n }\r\n});\r\n\r\nexport { appStore };","import { ICalendarSettings, defaultCalendarSettings, CalendarDeviceMode, CalendarViewMode } from '../../classes/calendar';\r\nimport { ActionType, ICalendarStateAction } from '../../classes/calendar-actions';\r\n\r\nimport * as moment from 'moment';\r\n\r\n/**\r\n * Returns the new search state given a particular action. This where all of the application\r\n * logic resides.\r\n */\r\nexport default function calendarSettingsReducer(state: ICalendarSettings = defaultCalendarSettings, action: ICalendarStateAction) {\r\n switch (action.type) {\r\n case ActionType.UpdateSettings: {\r\n return { ...state, ...action.value } as ICalendarSettings;\r\n }\r\n case ActionType.SetToDesktop: {\r\n return { ...state, calendarDeviceMode: CalendarDeviceMode.DESKTOP } as ICalendarSettings;\r\n }\r\n case ActionType.SetToMobile: {\r\n return { ...state, calendarDeviceMode: CalendarDeviceMode.MOBILE, calendarViewMode: CalendarViewMode.LIST } as ICalendarSettings;\r\n }\r\n case ActionType.SetToGrid: {\r\n return { ...state, calendarViewMode: CalendarViewMode.GRID } as ICalendarSettings;\r\n }\r\n case ActionType.SetToList: {\r\n return { ...state, calendarViewMode: CalendarViewMode.LIST } as ICalendarSettings;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { ICalendarSettings, defaultCalendarSettings } from '../../classes/calendar';\r\nimport { ICalendarAppText, defaultText } from '../../custom/classes/calendar-text';\r\nimport { ActionType, ICalendarStateAction } from '../../classes/calendar-actions';\r\n\r\n/**\r\n * Returns the new search state given a particular action. This where all of the application\r\n * logic resides.\r\n */\r\nexport default function calendarTextReducer(state: ICalendarAppText = defaultText, action: ICalendarStateAction) {\r\n switch (action.type) {\r\n case ActionType.RequestText: {\r\n return { ...state, requesting: true } as ICalendarAppText;\r\n }\r\n case ActionType.ReceiveText: {\r\n return { ...state, ...action.value, requesting: false, apiError: null } as ICalendarAppText;\r\n }\r\n case ActionType.ErrorApiText: {\r\n console.log(action.value);\r\n\r\n return { ...state, ...action.value, requesting: false, apiError: action.value } as ICalendarAppText;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { IMonth, ICalendarState, IEventFilter, defaultCalendarModel } from '../../classes/calendar';\r\nimport { IEvent } from '../../custom/classes/event';\r\n\r\nimport { ActionType, ICalendarStateAction } from '../../classes/calendar-actions';\r\n\r\nimport * as moment from 'moment';\r\nimport { AddFilterToQuery } from '../../helpers/filter-by-query';\r\n\r\n/**\r\n * Returns the new search state given a particular action. This where all of the application\r\n * logic resides.\r\n */\r\nexport default function calendarReducer(state: ICalendarState = defaultCalendarModel, action: ICalendarStateAction) {\r\n switch (action.type) {\r\n case ActionType.RequestEvents: {\r\n return { ...state, updating: true } as ICalendarState;\r\n }\r\n case ActionType.UpdateEventFilter: {\r\n const updating = true;\r\n const addedFilterFunction = action.value.function;\r\n\r\n var eventFilter: IEventFilter[] = null;\r\n if (state.eventFilter.some(filter => { return filter.key === addedFilterFunction.key })) {\r\n eventFilter = state.eventFilter.filter(filter => !(filter.key === addedFilterFunction.key)).concat([addedFilterFunction]);\r\n } else {\r\n eventFilter = state.eventFilter.concat([addedFilterFunction])\r\n }\r\n const filterFunction = (event) => eventFilter.map(fil => { return fil.filter; }).every(f => f(event));\r\n\r\n if (action.value.shouldUpdateQuery) {\r\n AddFilterToQuery(eventFilter);\r\n }\r\n\r\n return { ...state, eventFilter, filterFunction, updating } as ICalendarState;\r\n }\r\n\r\n case ActionType.RemoveEventFilter: {\r\n const eventFilter = state.eventFilter.filter(filter => filter.key !== action.value);\r\n const filterFunction = (event: IEvent) => eventFilter.map(filter => filter.filter).every(func => func(event));\r\n\r\n return { ...state, eventFilter, filterFunction, updating: true } as ICalendarState;\r\n }\r\n\r\n case ActionType.RemoveAllEventFilters: {\r\n return { ...state, eventFilter: [], filterFunction: (event: IEvent) => true, updating: true } as ICalendarState;\r\n }\r\n\r\n case ActionType.EventApiError: {\r\n return { ...state, updating: false, apiError: action.value } as ICalendarState;\r\n }\r\n\r\n case ActionType.ChangeProductionSeasonFilter: {\r\n const productionSeasonFilter = action.value as number;\r\n const updating = true;\r\n return { ...state, productionSeasonFilter, updating } as ICalendarState;\r\n }\r\n case ActionType.NextMonth: {\r\n // state.startDate.add(1, 'month').startOf('month');\r\n let newEndDate = state.endDate.clone().add(1, 'month').endOf('month');\r\n let newCurrMoment = state.currentDate.clone().add(1, \"month\");\r\n\r\n if (newCurrMoment.isAfter(state.endDate)) {\r\n return { ...state, updating: true, specificDates: false, currentDate: newCurrMoment, endDate: newEndDate } as ICalendarState;\r\n }\r\n\r\n return { ...state, currentDate: newCurrMoment } as ICalendarState;\r\n }\r\n case ActionType.UpdateEvents: {\r\n const events = action.value as Array>;\r\n\r\n return { ...state, updating: false, events: events } as ICalendarState;\r\n }\r\n case ActionType.PreviousMonth: {\r\n // state.endDate.add(-1, 'month').endOf('month');\r\n\r\n let newStartDate = state.startDate.clone().add(-1, 'month').startOf('month');\r\n let newCurrMoment = state.currentDate.clone().add(-1, \"month\");\r\n\r\n if (newCurrMoment.isBefore(state.startDate)) {\r\n return { ...state, updating: true, specificDates: false, currentDate: newCurrMoment, startDate: newStartDate } as ICalendarState;\r\n }\r\n return { ...state, currentDate: newCurrMoment } as ICalendarState;\r\n }\r\n case ActionType.AddDays: {\r\n const extendEvents = action.value.extendDays;\r\n\r\n if (extendEvents) {\r\n if (action.value.numberOfDays > 0) {\r\n state.endDate = moment(state.endDate.add(action.value.numberOfDays, 'day'));\r\n } else {\r\n state.startDate = moment(state.startDate.add(action.value.numberOfDays, 'day'));\r\n }\r\n } else {\r\n state.startDate = moment(state.startDate.add(action.value.numberOfDays, 'day'));\r\n state.endDate = moment(state.endDate.add(action.value.numberOfDays, 'day'));\r\n }\r\n\r\n const updating = true;\r\n return { ...state, updating, extendEvents, specificDates: true } as ICalendarState;\r\n }\r\n case ActionType.GoToMonth: {\r\n const setDate = action.value.clone() as moment.Moment;\r\n\r\n let newStart: moment.Moment;\r\n let newEnd: moment.Moment;\r\n\r\n let mustUpdate = false;\r\n\r\n if (setDate.isBefore(state.startDate)) {\r\n newStart = setDate.clone().startOf(\"month\");\r\n mustUpdate = true;\r\n } else {\r\n newStart = state.startDate.clone();\r\n }\r\n\r\n if (setDate.isAfter(state.endDate)) {\r\n newEnd = setDate.clone().endOf(\"month\");\r\n mustUpdate = true;\r\n } else {\r\n newEnd = state.endDate.clone();\r\n }\r\n\r\n return {\r\n ...state,\r\n updating: mustUpdate,\r\n specificDates: false,\r\n currentDate: action.value.clone(),\r\n startDate: newStart,\r\n endDate: newEnd\r\n } as ICalendarState;\r\n }\r\n case ActionType.SetMonth: {\r\n state.startDate = moment(action.value.startOf('month'));\r\n state.endDate = moment(action.value.endOf('month'));\r\n const updating = true;\r\n return { ...state, updating, specificDates: true } as ICalendarState;\r\n }\r\n case ActionType.SetDates: {\r\n state.startDate = action.value.startDate;\r\n state.endDate = action.value.endDate;\r\n const updating = true;\r\n return { ...state, updating, specificDates: true } as ICalendarState;\r\n }\r\n case ActionType.EventUpdated: {\r\n return { ...state, updating: false } as ICalendarState;\r\n }\r\n case ActionType.BrowserNavigated: {\r\n state = action.value.state;\r\n state.updating = action.value.shouldUpdate;\r\n return state as ICalendarState;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { defaultLazyLoadState, ILazyLoadState } from '../../classes/lazy-load';\r\nimport { ActionType, ICalendarStateAction } from '../../classes/calendar-actions';\r\n\r\n/**\r\n * Returns the new search state given a particular action. This where all of the application\r\n * logic resides.\r\n */\r\nexport default function lazyLoadReducer(state: ILazyLoadState = defaultLazyLoadState, action: ICalendarStateAction) {\r\n switch (action.type) {\r\n case ActionType.WaitForImage: {\r\n if (action.value in state.imageHasLoaded) {\r\n return state;\r\n } else {\r\n let imagesDictionary = { ...state.imageHasLoaded };\r\n imagesDictionary[action.value] = false;\r\n\r\n return { ...state, imageHasLoaded: imagesDictionary } as ILazyLoadState;\r\n }\r\n }\r\n case ActionType.ImageHasLoaded: {\r\n let imagesDictionary = { ...state.imageHasLoaded };\r\n imagesDictionary[action.value] = true;\r\n\r\n return { ...state, imageHasLoaded: imagesDictionary } as ILazyLoadState;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { ActionType, ICalendarStateAction } from '../../classes/calendar-actions';\r\n\r\nimport * as moment from 'moment';\r\nimport { IPromoCodeState, defaultPromoCodeState, PromoCodeState, IPromoCodeDetail } from '../../classes/promo-code';\r\nimport { ICalendarSettings } from '../../classes/calendar';\r\n\r\n/**\r\n * Returns the new search state given a particular action. This where all of the application\r\n * logic resides.\r\n */\r\nexport default function promoCodeReducer(state: IPromoCodeState = defaultPromoCodeState, action: ICalendarStateAction) {\r\n switch (action.type) {\r\n case ActionType.UpdateSettings: {\r\n if (action.value.promoCode != null) {\r\n return {\r\n ...state, promoCodeState: PromoCodeState.APPLIED,\r\n appliedPromoCode: (action.value.promoCode as IPromoCodeDetail).promoCode\r\n };\r\n }\r\n return { ...state };\r\n }\r\n case ActionType.RequestPromoCodeApply: {\r\n return { ...state, promoCodeRequesting: true } as IPromoCodeState;\r\n }\r\n case ActionType.ReceivePromoCodeApply: {\r\n return { ...state, promoCodeRequesting: false, promoCodeState: PromoCodeState.APPLIED, promoApiResponse: action.value.apiResponse, appliedPromoCode: action.value.promoCode, promoCodeError: null } as IPromoCodeState;\r\n }\r\n case ActionType.ErrorPromoCodeApply: {\r\n return { ...state, promoCodeRequesting: false, promoCodeState: PromoCodeState.FAILURE, promoApiResponse: action.value.apiResponse.response.data, appliedPromoCode: null, promoCodeError: action.value.apiResponse.response.data.exceptionMessage } as IPromoCodeState;\r\n }\r\n case ActionType.RequestPromoCodeRemove: {\r\n return { ...state, promoCodeRequesting: true } as IPromoCodeState;\r\n }\r\n case ActionType.ReceivePromoCodeRemove: {\r\n return { ...state, promoCodeRequesting: false, promoCodeState: PromoCodeState.ATTEMPT, promoApiResponse: action.value.apiResponse, appliedPromoCode: null, promoCodeError: null } as IPromoCodeState;\r\n }\r\n case ActionType.ErrorPromoCodeRemove: {\r\n return { ...state, promoCodeRequesting: false, promoCodeState: PromoCodeState.APPLIED, promoApiResponse: action.value.apiResponse, promoCodeError: action.value.apiResponse.response.data } as IPromoCodeState;\r\n }\r\n case ActionType.UpdatePromoCode: {\r\n return { ...state, promoCodeString: action.value } as IPromoCodeState;\r\n }\r\n case ActionType.ShowPromo: {\r\n return { ...state, showPromo: action.value } as IPromoCodeState;\r\n }\r\n case ActionType.ReceivePromoCodeGet: {\r\n return { ...state, showPromo: true, promoCodeState: PromoCodeState.APPLIED, appliedPromoCode: (action.value.apiResponse as IPromoCodeDetail).promoCode } as IPromoCodeState;\r\n }\r\n default:\r\n return state;\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport PromoCode from '../../components/promo-code';\r\nimport { AppProps } from '../../components/app';\r\nimport CalendarContainer from '../../components/calendar-container';\r\nimport FiltersContainer from '../../components/filters/container';\r\nimport MonthSelectionDropdown from '../../components/month-selection/dropdown';\r\nimport CalendarViewToggle from '../../components/calendar-view-toggle';\r\nimport ScrollToTop from '../../components/navigation/scroll-to-top';\r\nimport { CalendarDeviceMode } from '../../classes/calendar';\r\n\r\nconst AppView: React.StatelessComponent = props => {\r\n return (\r\n
\r\n

{props.text.calendarAppHeading}

\r\n \r\n
\r\n

{props.text.calendarControlsHeading}

\r\n
\r\n \r\n {\r\n props.calendarDeviceMode == CalendarDeviceMode.DESKTOP &&\r\n \r\n }\r\n
\r\n \r\n
\r\n {\r\n props.calendarDeviceMode == CalendarDeviceMode.MOBILE &&\r\n \r\n }\r\n
\r\n {/**/}\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default AppView;","import * as React from 'react';\r\n\r\nimport GridMonthContainer from '../../components/grid/container';\r\nimport ListMonthContainer from '../../components/list/container';\r\n\r\nimport { CalendarContainerProps } from '../../components/calendar-container';\r\nimport CalendarViewToggle from '../../components/calendar-view-toggle';\r\nimport { CalendarViewMode } from '../../classes/calendar';\r\n\r\nimport LoaderView from '../../components/loader';\r\n\r\n\r\nconst CalendarContainerView: React.StatelessComponent = props => {\r\n let component: JSX.Element = null;\r\n\r\n if (props.calendarViewMode === CalendarViewMode.GRID) {\r\n component = \r\n } else {\r\n component = ;\r\n }\r\n \r\n return (\r\n <>\r\n \r\n {component}\r\n \r\n )\r\n}\r\n\r\nexport default CalendarContainerView;","import * as React from 'react';\r\nimport { CalendarViewToggleProps } from '../../components/calendar-view-toggle';\r\nimport { CalendarViewMode } from '../../classes/calendar';\r\n\r\n\r\nconst CalendarModeToggleView: React.StatelessComponent = props => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default CalendarModeToggleView;","import * as React from 'react';\r\nimport { ClearAllProps } from '../../components/filters/clear-all';\r\nimport { removeLoader } from '../../helpers/scroll-to-month';\r\n\r\nconst ClearAllView: React.StatelessComponent = props => {\r\n function onClick(evt: React.MouseEvent) {\r\n props.removeAllFilters();\r\n window.history.replaceState(null, null, window.location.pathname);\r\n setTimeout(() => removeLoader(), 500)\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default ClearAllView;","import * as React from 'react';\r\nimport * as moment from 'moment';\r\nimport { CombinedFilterViewProps } from '../../components/filters/filter';\r\nimport { scrollToMonth, removeLoader, getMonthElement } from '../../helpers/scroll-to-month';\r\n\r\nconst FilterView: React.StatelessComponent = props => {\r\n function onChange(evt: React.ChangeEvent) {\r\n // Grab the selected option's data-first-occurance attribute.\r\n const selectedValue = evt.currentTarget.value;\r\n const selectEl = evt.currentTarget;\r\n const selectedOption = selectEl.options[selectEl.selectedIndex];\r\n\r\n var updatedFilters = props.currentFilters.set(props.propertyToFilter, selectedOption.value);\r\n\r\n var name = \"\";\r\n if (updatedFilters.get('name')) {\r\n name = updatedFilters.get('name');\r\n }\r\n\r\n var location = \"\";\r\n if (updatedFilters.get('location')) {\r\n location = updatedFilters.get('location');\r\n }\r\n\r\n var category = \"\";\r\n if (updatedFilters.get('categories')) {\r\n category = updatedFilters.get('categories');\r\n }\r\n\r\n let filters = {};\r\n\r\n updatedFilters.forEach(function (value, key) {\r\n filters[key] = value\r\n });\r\n\r\n props.getFirstOccurenceDateForFilters(filters, props.lastMonthToLoad, props.lastLoadedMonth);\r\n props.selectFilter(selectedValue, true);\r\n\r\n }\r\n\r\n const condensedFilterName = props.filterName.replace(/[^\\w]|_/g, \"\");\r\n\r\n return (\r\n
  • \r\n \r\n \r\n
  • \r\n );\r\n}\r\n\r\nexport default FilterView;","import * as React from 'react';\r\n\r\nimport Filter from '../../components/filters/filter';\r\nimport ClearAll from '../../components/filters/clear-all';\r\n\r\n\r\nimport { FiltersContainerViewProps } from '../../components/filters/container';\r\nimport { CalendarDeviceMode } from '../../classes/calendar';\r\n\r\nconst FiltersListView: React.StatelessComponent = props => {\r\n return (\r\n
      \r\n \r\n \r\n
    • \r\n \r\n
    • \r\n
    • \r\n \r\n
    • \r\n
    \r\n )\r\n}\r\n\r\nconst FiltersContainerView: React.StatelessComponent = props => {\r\n return (\r\n (props.deviceMode === CalendarDeviceMode.MOBILE || props.filtersAlwaysModal) ?\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {props.text.openFiltersButtonText}

    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    :\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default FiltersContainerView;","import * as React from 'react';\r\nimport { GridDayProps } from '../../components/grid/day';\r\n\r\nimport * as moment from 'moment';\r\nimport GridEventView from '../../components/grid/event';\r\nimport { focalPointCoordinates } from '../../helpers/focal-point-from-url';\r\n\r\ninterface IGridDayViewProps {\r\n todaysDate: moment.Moment;\r\n}\r\n\r\nconst GridDayView: React.StatelessComponent = props => {\r\n const dateMoment = moment(props.day.date);\r\n\r\n return (\r\n
  • 0 ? \"ace-cal-grid-day-has-events\" : \"\"} ${dateMoment.startOf('day').isSame(props.todaysDate) ? 'ace-cal-grid-day-today' : ''}`} aria-labelledby={`Day-${dateMoment.format(\"X\")}`}>\r\n {\r\n props.day.events.length > 0 ?\r\n
    \r\n {dateMoment.format(\"DD\")}\r\n

    \r\n {\r\n \r\n {`${dateMoment.format(\"dddd, MMMM\")} ${dateMoment.format(\"DD\")}`}\r\n {`: ${props.day.events.length} ${props.day.events.length > 2 ? props.text.pluralEventsText : props.text.singleEventText}`}\r\n \r\n }\r\n

    \r\n
      \r\n {\r\n props.day.events.map(event => )\r\n }\r\n
    \r\n
    \r\n :\r\n
    \r\n {`${dateMoment.format(\"dddd, MMMM\")} `}{dateMoment.format(\"DD\")}\r\n
    \r\n }\r\n
  • \r\n );\r\n}\r\n\r\nexport default GridDayView;","import * as React from 'react';\r\nimport * as moment from 'moment';\r\n\r\nimport { GridEventProps } from '../../components/grid/event';\r\n\r\nconst GridEventView: React.StatelessComponent = props => {\r\n const backgroundStyle = {\r\n backgroundImage: `url(${props.event.thumbnail})`,\r\n backgroundPosition: props.focalPointCoordinates ? `${props.focalPointCoordinates[1]}% ${props.focalPointCoordinates[0]}%` : null\r\n };\r\n\r\n return (\r\n
  • \r\n {!!props.event.thumbnail &&\r\n \r\n }\r\n
    \r\n
    \r\n {\r\n props.event.viewDetailCtaUrl ? {props.event.name}\r\n : props.event.name\r\n }\r\n
    \r\n

    {props.event.eventTimeString}

    \r\n
    \r\n
  • \r\n );\r\n}\r\n\r\nexport default GridEventView;","import * as React from 'react';\r\nimport * as moment from 'moment';\r\n\r\nimport GridMonths from '../../components/grid/months';\r\nimport { GridMonthContainerProps } from '../../components/grid/container';\r\n\r\n\r\nconst GridMonthContainerView: React.StatelessComponent = props => {\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default GridMonthContainerView;","import * as React from 'react';\r\n\r\nimport { GridMonthProps } from '../../components/grid/month';\r\nimport GridDay from '../../components/grid/day';\r\nimport * as moment from 'moment';\r\n\r\nconst GridMonthView: React.StatelessComponent = props => {\r\n const hasEvents = props.monthData.events.allDays.length > 0;\r\n const daysOfTheWeek = moment.weekdays(true);\r\n\r\n if (hasEvents) {\r\n return (\r\n
  • \r\n
    \r\n

    {props.monthData.monthMoment.format(\"MMMM YYYY\")}

    \r\n
      \r\n {\r\n daysOfTheWeek.map(day =>
    • {day}
    • )\r\n }\r\n
    \r\n
      \r\n {\r\n props.monthData.events.days.map(day => props.monthData.monthMoment.month() === day.date.getMonth() ? :
    • {moment(day.date).format(\"DD\")}
    • )\r\n }\r\n
    \r\n
    \r\n
  • \r\n );\r\n } else {\r\n return (\r\n
  • \r\n
    \r\n

    {props.monthData.monthMoment.format(\"MMMM YYYY\")}

    \r\n
    \r\n
    \r\n
  • \r\n )\r\n }\r\n}\r\n\r\nexport default GridMonthView;","import * as React from 'react';\r\n\r\nimport { GridMonthsProps } from '../../components/grid/months';\r\nimport GridMonth from '../../components/grid/month';\r\nimport LoadMore from '../../components/month-selection/load-more';\r\n\r\nconst GridMonthsView: React.StatelessComponent = props => {\r\n return (\r\n
    \r\n

    {props.text.gridViewHeading}

    \r\n
      \r\n {\r\n props.monthsData.map(monthData => )\r\n }\r\n
    \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default GridMonthsView;","import * as React from 'react';\r\n\r\nimport ListMonths from '../../components/list/months';\r\nimport { ListContainerProps } from '../../components/list/container';\r\nimport MonthSelectionDropdown from '../../components/month-selection/dropdown';\r\nimport CalendarViewToggle from '../../components/calendar-view-toggle';\r\n\r\nconst ListMonthsContainerView: React.StatelessComponent = props => {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default ListMonthsContainerView;","import * as React from 'react';\r\nimport * as moment from 'moment';\r\nimport { ListDayProps } from '../../components/list/day';\r\nimport ListEvent from '../../components/list/event';\r\nimport { focalPointCoordinates } from '../../helpers/focal-point-from-url';\r\n\r\n\r\nconst GridDayView: React.StatelessComponent = props => {\r\n\r\n return (\r\n <>\r\n {\r\n props.day.events.map(event => )\r\n }\r\n \r\n );\r\n}\r\n\r\nexport default GridDayView;","import * as React from 'react';\r\nimport * as moment from 'moment';\r\n\r\nimport LazyImage from '../../components/lazy-image';\r\n\r\nimport { ListEventProps } from '../../components/list/event';\r\nimport { focalPointCoordinates } from '../../helpers/focal-point-from-url';\r\n\r\nconst ListEventView: React.StatelessComponent = props => {\r\n const eventMoment = moment(props.event.eventDate);\r\n\r\n return (\r\n
  • \r\n

    \r\n {eventMoment.format(\"dddd\")}
    \r\n {eventMoment.format(\"DD\")}\r\n

    \r\n \r\n
  • \r\n );\r\n}\r\n\r\nexport default ListEventView;","import * as React from 'react';\r\n\r\nimport { ListMonthProps } from '../../components/list/month';\r\nimport ListDay from '../../components/list/day';\r\n\r\nconst ListMonthView: React.StatelessComponent = props => {\r\n const hasEvents = props.monthData.events.allDays.length > 0;\r\n\r\n if (hasEvents) {\r\n return (\r\n
  • \r\n
    \r\n

    {props.monthData.monthMoment.format(\"MMMM YYYY\")}

    \r\n
      \r\n {\r\n props.monthData.events.allDays.map(day => )\r\n }\r\n
    \r\n
    \r\n
  • \r\n );\r\n } else {\r\n return (\r\n
  • \r\n
    \r\n

    {props.monthData.monthMoment.format(\"MMMM YYYY\")}

    \r\n
    \r\n
    \r\n
  • \r\n )\r\n }\r\n}\r\n\r\nexport default ListMonthView;","import * as React from 'react';\r\n\r\nimport { ListMonthsProps } from '../../components/list/months';\r\nimport ListMonth from '../../components/list/month';\r\n\r\nimport LoadMore from '../../components/month-selection/load-more';\r\n\r\nconst ListMonthsView: React.StatelessComponent = props => {\r\n return (\r\n
    \r\n

    {props.text.listViewHeading}

    \r\n
      \r\n {\r\n props.monthsData.map(monthData => )\r\n }\r\n
    \r\n \r\n
    \r\n )\r\n}\r\n\r\nexport default ListMonthsView;","import * as React from 'react';\r\nimport { LoaderProps } from '../../components/loader';\r\n\r\nconst LoaderView: React.StatelessComponent = props => {\r\n return (\r\n
    \r\n

    \r\n {props.isLoading ? props.text.calendarLoadingLabel : props.text.calendarDoneLoadingLabel}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n}\r\n\r\nexport default LoaderView;","import * as React from 'react';\r\nimport * as moment from 'moment';\r\n\r\nimport { GridDayProps } from '../../components/grid/day';\r\n\r\nimport GridEventView from 'grid-event.view';\r\nimport { MonthSelectionDropdownProps } from '../../components/month-selection/dropdown';\r\nimport { CalendarViewMode } from '../../classes/calendar';\r\nimport { scrollToMonth } from '../../helpers/scroll-to-month';\r\n\r\nconst momentFormat = 'YYYY-MM';\r\n\r\nconst MonthSelectionDropdownView: React.StatelessComponent = props => {\r\n function goToMonthChange(evt: React.ChangeEvent) {\r\n const mmt = moment(evt.currentTarget.value, momentFormat);\r\n\r\n props.goToMonth(mmt);\r\n\r\n var focusDestinationMonth = setInterval(() => {\r\n if (scrollToMonth(mmt)) {\r\n clearInterval(focusDestinationMonth);\r\n }\r\n }, 500);\r\n }\r\n\r\n return (\r\n \r\n
    \r\n \r\n \r\n
    \r\n );\r\n}\r\n\r\nexport default MonthSelectionDropdownView;","import * as React from 'react';\r\nimport { GridDayProps } from '../../components/grid/day';\r\n\r\nimport * as moment from 'moment';\r\nimport GridEventView from 'grid-event.view';\r\nimport { LoadMoreProps } from '../../components/month-selection/load-more';\r\nimport { scrollToMonth } from '../../helpers/scroll-to-month';\r\n\r\nconst NextMonthView: React.StatelessComponent = props => {\r\n function onClick(evt: React.MouseEvent) {\r\n evt.preventDefault();\r\n\r\n props.goToNextMonth();\r\n const nextMonth = props.currDate.clone().add(1, \"month\").startOf(\"month\");\r\n\r\n var focusDestinationMonth = setInterval(() => {\r\n if (scrollToMonth(nextMonth)) {\r\n clearInterval(focusDestinationMonth);\r\n }\r\n }, 500);\r\n\r\n }\r\n\r\n return (\r\n

    \r\n \r\n

    \r\n );\r\n}\r\n\r\nexport default NextMonthView;","import * as React from 'react';\r\n\r\nimport { CombinedScrollToTopProps } from '../../components/navigation/scroll-to-top';\r\n\r\nconst ScrollToTopView: React.StatelessComponent = props => {\r\n return (\r\n Scroll to Top\r\n )\r\n}\r\n\r\nexport default ScrollToTopView;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tresult = fn();\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"calendar\": 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkLibrary\"] = self[\"webpackChunkLibrary\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [\"common\"], function() { return __webpack_require__(\"./calendar/index.tsx\"); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"sourceRoot":""}